1. Field of the Invention
The present invention relates to decoding of data stored on a recording medium that is encoded with concatenated codes.
2. Description of the Related Art
Magnetic recording systems first encode user data into binary coded data bits that are subsequently recorded on a magnetic medium. Writing data to, and reading data from, the magnetic medium may be modeled as a transmission channel having an associated frequency response. A signal may then be read from the magnetic medium and sampled to provide a sequence of output samples containing the stored data. Magnetic recording systems for disk drives read and detect data from sectors of tracks on the magnetic medium (disk). Each track comprises user (xe2x80x9creadxe2x80x9d) data sectors as well as system dedicated control (e.g., xe2x80x9cservoxe2x80x9d) data sectors embedded between read sectors. Read data sectors store encoded user data that is read during read mode. Servo data sectors store servo data that is read during servo mode. Servo data is control data that the recording system uses during servo mode to 1) search for tracks (during sub- mode) and 2) position a read head over the track on the magnetic medium.
FIG. 1 shows a block diagram of a magnetic recording system 100. A portion of the data stream is encoded with a predetermined code by data encoder 101. The remaining, non-encoded portion of the data and the encoded portion of the data are further processed by the magnetic write head 102 and then recorded on the magnetic medium 110 by the magnetic write head 102. Magnetic recording systems such as system 100 may employ one or more types of codes for data encoder 101 to map data bits to binary coded data bits. Such codes may be run-length limited (RLL) block codes, general convolutional codes, or 2T/bi-phase codes.
A magnetic read head 103 reads the information from the magnetic recording medium 110 as an analog signal. Magnetic write head 102 and magnetic read head 103 may be implemented as a single head read/write device. Magnetic read head 103 may provide a sampled analog signal representing the recorded user data and servo data as output channel samples. The term xe2x80x9coutput channel samplexe2x80x9d refers to data that has passed through a transmission channel (e.g., magnetic medium 110 and magnetic read head 103) that has a form of frequency response (possibly having memory). This type of transmission channel (possibly including the frequency response of a subsequent equalizer) may be termed a partial response channel. The signal containing the encoded data has an added noise component and added signal distortion caused by passing the signal through the channel""s frequency response. To partially correct for variations in the channel""s frequency response or for frequency response characteristics of the circuitry of magnetic read head 103, the output channel samples may be applied to equalizer 104. The equalized output channel samples are then applied to a soft output detector 105, such as a partial-response, maximum-likelihood (PRML) detector. As shown in FIG. 1, soft output detector 105 is a PRML detector.
The exemplary PRML detector 105 employs an algorithm, such as the Viterbi algorithm (VA), to detect the sequence of symbol bits representing the encoded data from the equalized channel samples. An additional algorithm may be employed by a processor after the equalizer 104 to convert the equalized channel samples to a sequence soft output samples. Data decoder 106 receives the sequence of soft output samples from the soft output detector 105 and decodes the sequence to reconstruct the data.
For an exemplary magnetic recording system 100, one sector of data recorded on the medium comprises 512 bytes (4096 bits). After data in one section is processed, the operation of the servo mode changes the position of the magnetic read head 103. During the servo mode operation, the read mode operation is suspended until the servo mode operation is complete. Each of the servo and read mode operations requires a corresponding decoding operation.
Concatenated code systems for encoding and decoding data use two or more component codes that are concatenated during the process of encoding data. Although the codes may be of any type, component codes are typically relatively simple codes, such as the rate 8/9 convolutional code. The two or more component codes are concatenated in either a serial concatenation or a parallel concatenation. In both methods of concatenation, an interleaver may be inserted between the encoders for the component codes. For example, in the serial concatenation of two component codes, data is encoded by a first encoding module with a first component code. This encoded data is, in turn, passed through an interleaver and then applied to a second encoding module for encoding with a second component code. This process operates on only a single, serial data stream, and the first and second component codes may be the same code. In the parallel concatenation, data is encoded with the first component code and also the interleaved data is encoded with a second component code. The two encoded streams are combined in parallel to provide a single encoded data stream, for example, by multiplexing.
Concatenated code systems may employ iterative decoding of encoded data using either serial or parallel iterative decoding methods. Each of the serial or parallel iterative decoding methods may be employed for serial concatenated codes. Each of the serial or parallel iterative decoding methods may be employed for parallel concatenated codes. When employing iterative decoding of data encoded with a concatenated code, a block of data is input to the iterative decoder. The block boundaries desirably conform to symbol boundaries of the concatenated code. The iterative decoder comprises at least one decoding module having N component code decoders for decoding N component codes. Each decoding module and/or component code decoder may typically include a maximum a posteriori, (MAP) decoder. The particular implementation of the decoding module is dependent on which method of serial or parallel concatenation is used by the concatenated code.
In an iterative decoding method, a block of the soft output samples representing encoded data is repetitively processed for decoding by the two or more decoding modules until a predetermined number (I) of decoding iterations are complete. An exemplary iterative decoder 200 employing serial iterative decoding is shown in FIG. 2. Each decoding module 201-203 performs a complete, xe2x80x9csoftxe2x80x9d decoding of the data encoded with a concatenated code. Each decoding module applies an iteration of the decoding process, and each iteration allows for higher confidence in the decisions for bits in the output decoded data that are made based on the output samples of a detector, such as the PRML detector 105. Each decoding module includes N component code decoders 210-212 (i.e., Decoder 1 through Decoder N). Each component code decoder corresponds to one of the N component codes employed by the concatenated code. Each of the component code decoders 210-212 may include, for example, a MAP decoder and a deinterleaver.
For the implementation of serial iterative decoding shown in FIG. 2, I iterations of the decoding operations are performed on each packet. A new block is applied to the first decoding module 201 as the previous packet is applied to the second decoding operation of decoding module 202. The second decoding operation of decoding module 202 corresponds to the second decoding iteration. A fully decoded block is provided as data from the Ith decoding module 203, corresponding to the Ith decoding iteration. Once all decoding modules 201-203 of iterative decoder 200 are loaded with data, the decoding process may occur in a pipeline fashion and/or continuously as each new block is applied.
To avoid a repeated implementation of the two or more decoding modules in the serial iterative decoding such as shown in FIG. 2, an implementation using a parallel iterative decoding operation, such as shown in FIG. 3, may be alternatively employed. The parallel iterative decoder 300 shown in FIG. 3 may employ a decoding module similar to that of a single decoding module of the serial implementation (e.g., decoding module 201 of FIG. 2). However, the parallel iterative decoder 300 employs feedback of data from the last component code decoder (Decoder N) to the first component code decoder (Decoder 1). After loading N blocks into the N component code decoders 301-303 (Decoder 1 through Decoder N), the output decoded block of the last component code decoder 303 is then provided as the input block to the first component code decoder 301. With feedback, the block may be decoded by cyclic shifting through the component code decoders of the decoding module for I iterations. Once again, each iteration of decoding may provide a xe2x80x9cguessxe2x80x9d to the decoded block of bits. For the parallel iterative decoding module, the delay in processing a series of blocks increases since the next block for decoding must be buffered as the present block is decoded. For both serial and parallel implementations of the iterative decoder of FIGS. 2 and 3, N component codes may be decoded with the N component code decoders.
Use of concatenated codes for magnetic recording systems introduces a latency period from added processing time incurred by the additional decoding operations. In magnetic recording systems, a parallel iterative decoding module of FIG. 3 may not be desirable for use with, for example, the data decoder 106 of FIG. 1, if the long latency period between each read operation by the magnetic read head reduces magnetic recording system performance to unacceptable levels. For example, one input block of length L experiences a delay of LNI clock cycles of an iterative decoder. Consequently, until the iterative decoder completes a decoding process for one block, the next block must be buffered. Therefore, iterative decoding is performed serially in a pipelined fashion.
The implementation complexity (i.e., circuit size and number of components) of the serial iterative decoding module, because of repeated operations of each iteration, increases the requirement for power and integrated circuit area. For example, the complexity of the circuit implementing the serial iterative decoder of FIG. 2 is I times higher than the complexity of the circuit implementing the parallel iterative decoder of FIG. 3.
The present invention relates iterative decoding of data stored in a medium of a recording system in which the data is user data that is encoded with concatenated codes. In accordance with an exemplary embodiment, a section of the data is read from the medium as a number of packets during a read mode of the recording system. The data is encoded in accordance with a concatenated code having N component codes, N an integer greater than 1, and the number of packets is related to N. The packets of the section of data are loaded into a circular processor during read mode, the circular processor decoding in accordance with the N component codes. A circular processor iteratively cycles and processes the packets during a servo mode of the recording system. The decoded section of the data from the circular processor is then provided and, if present, the next section of the data is loaded into the circular processor in read mode and the iterative decoding process is repeated. In accordance with a further embodiment of the present invention, the circular processor is a parallel iterative decoder.