The present invention relates to encoding systems. In particular, the present invention relates to encoding systems in disc drives.
In the field of digital communications, digital information is conveyed from a transmitter to a receiver through a channel. xe2x80x9cChannelxe2x80x9d is a generalized term that can include many things. For instance, in satellite communication systems, the channel consists of the atmosphere between an earth-bound transmitter and a satellite. In data storage devices, such as magnetic disc drives, the channel includes a storage medium where the signal is stored for some period of time before being delivered to the receiver.
All channels introduce noise into the signals they convey. To detect and sometimes to correct errors caused by this channel noise, the art has developed a large number of coding techniques. These coding techniques convert data words formed of xe2x80x9cmxe2x80x9d data bits into larger codewords formed of xe2x80x9cnxe2x80x9d code bits. The additional bits in the codewords permit the detection and sometimes the correction of errors in the signals received from the channel.
The ratio of the number of data bits to the number of code bits, m/n, is known as the code rate of the code. In general, the ability to detect and correct errors in a received signal increases as the code rate decreases because a lower code rate means a greater number of additional bits in the codeword. However, each additional bit added by the encoder increases the time and energy needed to transmit the signal through the channel. Thus, to minimize the time and energy needed to send the code, the code rate should be maximized.
In one type of coding, known as Non-Return-to-Zero Inverse (NRZI), every digital one in a codeword is represented by a transition in the transmitted signal, and every digital zero is represented by a lack of transitions in the transmitted signal. To allow the receiver to generate a clock signal from the received signal, the encoded signal is generally limited so that the number of consecutive zeros is no greater than a maximum number xe2x80x9ckxe2x80x9d. This kind of code is known as a run-length-limited (RLL) code with a xe2x80x9ckxe2x80x9d constraint.
It is also known to limit the number of consecutive ones codewords to limit the effects of inter-symbol interference, which occurs when consecutive transitions in the transmitted signal interfere with each other. This is sometimes done by requiring some number, d, of zeros between ones. An RLL code with a d and k constraint are usually referred to as a (d,k) RLL code.
To achieve higher code rates, the number of bits being encoded can be increased. For example, a 64/65 code has a higher code rate than a 17/18 code. However, with each additional bit in the input data word, the number of possible input data words increases by a multiple of 2. Thus, there are twice as many possible 64-bit data words(264) as there are 63-bit data words(263).
For even modest data word sizes, the number of available data words makes encoding through a simple table look-up inefficient. For example, for a word length of 20 bits, a table look-up encoding scheme would need to search a database of 220 (1,048,576) entries. Thus, a system is needed for encoding and decoding large words without using a large look-up table.
The present invention addresses this and other problems, and offers other advantages over the prior art.
Methods of encoding and decoding as well as an encoder and decoder are provided for encoding data words into codewords and decoding codewords into data words. The data words are encoded by mapping each data word into a number of data segments. Each data segment is then encoded to form a codeword segment that has the same number of bits as the data word segment. The codeword segments are concatenated to form the codeword. The codewords are decoded by decoding individual codeword segments into data word segments that are the same size as the codeword segments. The data word segments are then mapped into the data word, which has fewer bits than the total number of bits across all data word segments.