A transmitter is provided for transmitting data to a communication channel and a receiver receives the data from the communication channel. The transmitter comprises an encoder to encode data and a linear block encoder to encode data encoded by the encoder. The receiver comprises a soft channel decoder to decode the data, and a soft linear block code decoder to decode data decoded by the soft channel decoder. In the first iteration, the soft channel decoder decodes data received by the receiver. In succeeding iterations, the soft channel decoder decodes the data received by the receiver and utilizes information from the soft linear block decoder from an immediate preceding iteration. A decision circuit selects an output of the soft linear block decoder if an evaluated criterion is less than a threshold, or an output of the soft channel decoder if the evaluated criterion is greater than the threshold. A decoder decodes an output of the threshold check circuit.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates generally to an iterative decoder. More particularly, the present invention relates to an iterative decoder for application in either digital data transmission or digital data storage and a method embodied therein.

2. Description of the Related Art

FIG. 1illustrates a conventional digital data transmission system. As shown therein a digital data transmission system comprises a transmitting section300for transmitting data to receiver500via communication channel401. During the transmission operation shown inFIG. 2, the data is first encoded in a conventional manner by run length limited (RLL) encoder302or RLL encoder means, and parity bits are encoded by linear block code encoder304or linear block encoder means. The combined RLL encoded data and parity bits are then input to transmitter306or transmitting means for transmission as an analog, electrical signal over communication channel401. Communication channel401may include any wireless, wire, optical and the like communication medium. Receiver500comprises an analog to digital converter502or analog to digital converting means to converts the data transmitted on communication channel401to a digital signal. The digital signal is input to soft channel decoder504, which provides probability information of the detected data. Soft linear block code decoder506utilizes this information and the parity bits. Soft channel decoder504and soft linear block code decoder506operate in an iterative manner to decode the detected data.

Linear block codes are well known to those of ordinary skill in the art. One example of a linear block code is a low density parity check code (LDPC) which is discussed by Robert G. Gallager inLow-Density Parity-Check Codes, 1963, M.I.T. Press and by Zining Wu inCoding and Iterative Detection For Magnetic Recording Channels, 2000, Kluwer Academic Publishers, the contents of each of which are incorporated in their entirety by reference.

FIGS. 2a-2cshown a digital data storage system. As illustrated inFIG. 2a, hard disk drive100comprises a magnetic disk and head assembly104including a stack of several rigid magnetic disks102and several magnetic transducers positioned on a movable arm105for operable interaction with the magnetic recording surfaces on each disk. These magnetic heads slide or ‘fly’ in close proximity over the surfaces of the magnetic disks102to react to the changes in orientations of magnetic fields of tiny magnetic domains on the disks that represent the stored data. These interactions with magnetic fields produce electrical signals of constantly varying amplitudes that are pre-amplified to produce resulting analog waveforms106, as shown inFIG. 2b, that are applied to a read-channel integrated circuit109, as shown inFIG. 2c. The read channel integrated circuit108processes the waveform and produces data-representing signals having digital waveforms110, as shown inFIG. 2d. The same integrated circuit108is also used during data-writing processes to transform user data in digital form to analog waveforms that are then recorded on a disk102via the associated magnetic transducer.

FIG. 3illustrates typical flow of data signals during write operations by encoder600onto disk drive400and read operations by read channel700from disk drive400. During the write operation shown inFIG. 3, the data is first encoded, similarly to the digital data transmission system described above, by run length limited (RLL) encoder302, and parity bits are encoded by linear block code encoder304. The combined RLL encoded data and parity bits are then input to current generator402or writing means for generating a current to drive write head404. Write head404magnetizes disk406for storing the data signal thereon.

In the reading process, read head408detects and converts the data stored on disk406to an analog, electrical signal. The electrical signal is converted to a digital signal in read channel700by analog to digital converter502. The digital signal is input to soft channel decoder504. Soft linear block code decoder506utilizes this information and the parity bits. Soft channel decoder504and soft linear block code decoder506operate in an iterative manner to decode the detected data.

One disadvantage of the conventional iterative decoding approach is that, even though this approach produces robust gains in terms of bit error rate (BER), it is susceptible to large error bursts caused by an inability of the iterative algorithm to converge within the allowed number of iterations. To exacerbate this situation, erroneous bits at the output to iterative detector do not necessarily cluster together. As such, it is more difficult for the error correcting code (ECC) to properly perform its function. Additionally, when utilizing LDPC errors can propagate. In other words, wrong information may be passed along the decoding process.

OBJECTS OF THE INVENTION

Therefore, it is an object of the present invention to overcome the aforementioned problems.

It is another object of the present invention to improve the accuracy in decoding data from a communication channel.

It is a further object of the present invention to minimize the propagation of errors along the decoding process.

It is still yet an object of the present invention to provide a high performance iterative detector.

It is still yet another object of the present invention to improve the accuracy in decoding data read from a magnetic recording medium.

SUMMARY OF THE INVENTION

According to this invention, a storage system is provided for storing data on a storage medium and comprises an encoder to encode data. A linear block encoder encodes data encoded by the encoder. A write circuit writes the encoded data to the storage medium, and a read circuit reads data from the storage medium. A soft channel decoder decodes data, and a soft linear block code decoder then decodes data decoded by the soft channel decoder. In the first iteration, the soft channel decoder decodes data read by the read head. In succeeding iterations, the soft channel decoder decodes the data read by the read head and utilizes information from the soft linear block decoder from an immediate preceding iteration. A threshold check circuit selects an output of the soft linear block decoder if a number of parity-check violations are less than a threshold, or an output of the soft channel decoder if a number of violations is greater than the threshold. A decoder decodes an output of the threshold check circuit.

In accordance with a second aspect of the present invention, the encoder comprises a run length limited encoder and the decoder comprises a run length limited decoder.

In accordance with a third aspect of the present invention, the linear block code encoder comprises a low-density parity-check encoder and the soft linear block code decoder comprises a low-density parity-check decoder.

In accordance with a fourth aspect of the present invention, the soft channel decoder comprises a bi-directional Viterbi algorithm decoder.

In accordance with a fifth aspect of the present invention, if there is a parity-check violation at an output of the soft linear block code decoder, the soft channel decoder decodes the output of the soft linear block code decoder.

In accordance with a sixth aspect of the present invention, if there are no parity-check violations or a number of iterations exceed a predetermined number then the threshold check circuit determines if the number of parity-check violations is less than the threshold.

In accordance with a seventh aspect of the present invention, the predetermined number is five.

In accordance with a eighth aspect of the present invention, the threshold is 12.

In accordance with a ninth aspect of the present invention, the threshold is 8.

In accordance with a tenth aspect of the present invention, the soft linear block code decoder utilizes parity-check equations to determine if there is a parity-check violation.

In accordance with an eleventh aspect of the present invention, a data transmission system for transmitting data to and receiving data from a communication channel, is provided with an encoder to encode data, and a linear block encoder to encode data encoded by the encoder. A transmitter transmits an output of the linear block encoder to the communication channel, and a soft channel decoder decodes the data. A soft linear block code decoder to decode data decoded by the soft channel decoder. In a first iteration, the soft channel decoder decodes the data from the communication channel, and in a succeeding iteration, the soft channel decoder decodes the data read by the read circuit and utilizes information decoded by the soft linear block decoder from an immediately preceding iteration. A decision circuit selects an output of the soft linear block code decoder if an evaluated criterion is less than a threshold, or an output of the soft channel decoder if the evaluated criterion is greater than the threshold. A decoder to decode an output of the threshold check circuit.

In accordance with a twelfth aspect of the present invention, the encoder comprises a run length limited encoder and the decoder comprises a run length limited decoder.

In accordance with a thirteenth aspect of the present invention, the linear block code encoder comprises a low-density parity-check encoder and wherein the soft linear block code decoder comprises a low-density parity-check decoder.

In accordance with a fourteenth aspect of the present invention, the soft channel decoder comprises a bidirectional Viterbi algorithm decoder.

In accordance with a fifteenth aspect of the present invention, if the evaluated criterion is greater than a predetermined threshold, the soft channel decoder utilizes the information of the soft linear block code decoder.

In accordance with a sixteenth aspect of the present invention, if the evaluated criterion is satisfied or a number of iterations exceeds a predetermined number then the decision circuit determines if the evaluated criterion is greater than a predetermined threshold.

In accordance with a seventeenth aspect of the present invention, the predetermined number is five.

In accordance with a eighteenth aspect of the present invention, the evaluated criterion is selected from the group consisting of signal to noise ratio, such as can be estimated through metrics in a Viterbi detector, and parity check equations.

In accordance with a nineteenth aspect of the present invention, the evaluated criterion comprises parity check equations, and wherein the soft linear block code decoder utilizes a parity-check matrix to determine if there is a parity-check violation.

In accordance with a twentieth aspect of the present invention, a multiplexer is provided in communication with the encoder and the linear block encoder and provides an output to the transmitter.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

Reference is now made to FIG.4.FIG. 4illustrates typical flow of data signals during transmitting operations by transmitting section300via communication channel401to receiver500′ in accordance with an embodiment of the present invention. Communication channel may be implemented by any wired medium, wireless medium, optical medium and the like. Transmitting section300and communication channel401are similar to that shown in FIG.1and discussed above, thus no further explanation will be provided herein.

As shown inFIG. 4, receiver500′ comprises an analog to digital converter502to convert the analog signal from communication channel401into a digital signal. The digital signal is input to soft channel decoder504or soft channel decoding means, which provides probability information of the detected data. Soft linear block code decoder506or soft linear block code decoding means utilizes this estimate and the parity bits encoded in the signal to decode the detected data. Soft channel decoder504and soft linear block code decoder506operate in an iterative manner to decode the detected data.

In the first iteration (N=1), soft channel decoder504decodes data received from communication channel401which is converted to a digital signal by A/D converter502. In succeeding iterations (N>1), soft channel decoder504decodes the data from communication channel401and utilizes information from soft linear block decoder506from an immediate preceding iteration (N−1).

The output of soft linear block code decoder506and the output of soft channel decoder504are evaluated in decision circuit510or decision means to determine select an output whether soft linear block code decoder506if an evaluated criterion have been met. Such criterion can include a comparison of the signal to noise ratio to a threshold value, such as can be estimated through metrics in a Viterbi detector, a comparison of the parity check equations and the like. The Viterbi detector is well know to those of ordinary skill in the art and no further discussion will be presented herein. As will be appreciated by one or ordinary skill in the art, any combination of the above-mentioned criteria my be utilized by decision circuit510. Additionally, the decision circuit may be implemented employing weighting factors for each of such criteria.

The output of soft channel decoder504(corresponding to the first iteration) is selected if the evaluated criterion at the end of the last iteration is greater than the threshold. On the other hand, if the evaluated criterion is less than the threshold then the output of soft linear block code decoder506is selected. The output of decision circuit510is RLL decoded by RLL decoder508or RLL decoding means.

FIG. 5is a flowchart illustrating the operation of the receiver in FIG.4. As noted above, the output of communication channel401, which is an analog signal, is converted to a digital signal in step S815by analog to digital decoder502. The counter N is set to 1 in step S820. The digital signal is then soft channel decoded by soft channel decoder504in step S825. After the first soft channel decoding process the results are saved in a buffer memory, otherwise the results thereof are not saved (steps S830and S840).

The results of the soft channel decoder504are then soft linear decoded by soft linear block code decoder506, step S840. In step S850, decision circuit510determines if the evaluated criterion is satisfied. If the evaluated criterion is satisfied or if the number of iterations N is equal to n, then processing continues to step S855; otherwise N is incremented by 1 and the next iteration of processing is performed.

In step S855decision circuit510determines if the evaluated criterion is greater than a predetermined threshold x. If the evaluated criterion is greater than x, then the output is set to the output of the soft channel decoder at N=1, which was previously saved in step S835. Alternatively, if the evaluated criterion is not greater than x, the output is set to the output of the soft linear block code decoding, step S865. The output is then RLL decoded in step S870.

FIG. 6illustrates the embodiment of the present invention when employed with a mass storage system. As will be appreciated by one of ordinary skill in the art, a mass storage system is just one specific example of a data transmission system.FIG. 6illustrates typical flow of data signals during write operations by encoder600onto disk drive400and read operations by read channel700′ from disk drive400. Encoder600and disk drive400are similar to that shown in FIG.3and discussed above, thus no further explanation will be provided herein.

As shown inFIG. 6, read channel700′ comprises an analog to digital converter502to convert the analog signal from read head408into a digital signal. The digital signal is input to soft channel decoder504or soft channel decoding means, which provides probability information of the detected data. Soft linear block code decoder506or soft linear block code decoding means utilizes this estimate and the parity bits encoded in the signal to decode the detected data. Soft channel decoder504and soft linear block code decoder506operate in an iterative manner to decode the detected data.

In the first iteration (N=1), soft channel decoder504decodes data read by read head408which is converted to a digital signal by A/D converter502. In succeeding iterations (N>1), soft channel decoder decodes504the data read by the read head and utilizes information from soft linear block decoder506from an immediate preceding iteration (N−1).

The output of soft linear block code decoder506and the output of soft channel decoder504are evaluated in threshold check710or threshold determining means to determine whether soft linear block code decoder506has a number of parity check equation violations which exceed a threshold. The output of soft channel decoder504(corresponding to the first iteration) is selected if the number of parity check equations violated at the end of the last iteration is greater than the threshold. On the other hand, if the number of violations is less than the threshold then the output of soft linear block code decoder506is selected. The output of threshold check710is RLL decoded by RLL decoder508or RLL decoding means.

FIG. 8is a flowchart illustrating the operation of the read channel in FIG.6. As noted above, the output of read head408, which is an analog signal, is converted to a digital signal in step S515by analog to digital decoder502. The counter N is set to 1 in step S520. The digital signal is then soft channel decoded by soft channel decoder504in step S525. Examples of soft channel decoding include the bi-directional Viterbi algorithm (BIVA) and the Bahl-Cooke-Jelinek-Raviv (BCJR) algorithm. These algorithms are discussed by Zining Wu inCoding and Iterative Detection For Magnetic Recording Channels, 2000, Kluwer Academic Publishers. The bi-directional Viterbi algorithm is discussed by Shoemake and Heegard inComputationally Efficient Turbo Decoding with Bi-directional Viterbi Algorithm(BIVA), IEEE, ISIT 1997, the contents of which are incorporated herein by reference. After the first soft channel decoding process the results are saved in a buffer memory, otherwise the results thereof are not saved (steps S530and S540).

The results of the soft channel decoder504are then soft linear decoded by soft linear block code decoder506, step S540. An example of linear block decoding is low-density parity check code (LDPC) decoding. As noted above LDPC is discussed by Robert G. Gallager inLow-Density Parity-Check Codes, 1963, M.I.T. Press and by Zining Wu inCoding and Iterative Detection For Magnetic Recording Channels, 2000, Kiuwer Academic Publishers.

In step S550, the parity check equations are calculated to determine if there are any violations. If there are no violations or if the number of iterations N is equal to n, then processing continues to step S555; otherwise N is incremented by 1 and the next iteration of processing is performed.

In step S555threshold detector510determines if the number of violations is greater than x. If the number of violations is greater than x, then the output is set to the output of the soft channel decoder at N=1, which was previously saved in step S535. Alternatively, if the number of violations is not greater than x, the output is set to the output of the soft linear block code decoding, step S565. The output is then RLL decoded in step S570.

An example of the parity check matrix having three parity equations (represented by the parity check matrix) and 7 bits (represented by the 7 element vector) is set forth in equation (1) below. In practice the number of parity equations is between 60 and 120 and the number of bits is between 1100 and 1300.[100101101001110011101]×[x1x2x3x4x5x6x7]=[000]⁢⁢modulo⁢⁢2(1)

Alternatively, the parity equations may be express as equations (2).x1+x4+x6+x7=0modulo⁢⁢2x2+x5+x6+x7=0modulo⁢⁢2x3+x4+x5+x7=0modulo⁢⁢2(2)

When equation (1) is (or equations (2) are) satisfied, there are no parity violations and the data is valid. When equation (1) is (or any of equations (2) are) not satisfied the data is not valid.

An example of a parity check matrix equation with one violation is shown in equations (3)x1+x4+x6+x7=0modulo⁢⁢2x2+x5+x6+x7=1modulo⁢⁢2x3+x4+x5+x7=0modulo⁢⁢2(3)

In step S550if the number of violations is 0 or the number of iterations N =n, then processing proceeds to step to step S555. In step S555, the number of equations, which are violated, is determined. Processing then proceeds to step S570as explained above.

Best Mode

FIG.7andFIG. 9show the best mode of the preferred embodiment. Read channel700′ is preferably fabricated as an integrated circuit. As shown therein, linear block code encoder is implemented as a LDPC encoder304′, soft channel decoder is implemented as a bi-direction Viterbi algorithm (BIVA) decoder504′ or BIVA decoding means, and soft linear block code decoder is implemented as an LDPC decoder506′ or LDPC decoding means. LDPC decoder506′ employs the “sum product” method. In the best mode of the preferred embodiment, the number of iterations in step S650n is 5. Preferably, the number of bits is either 1210 or 1173 and the number of parity check equations is 105 or 68, respectively. If the number of parity equations is105, the threshold in step S655, x is 12, or if the number of parity equations is 68 then x is 8.

FIG. 9is a flowchart illustrating the operation of the read channel in FIG.7. As noted above, the output of read head408, which is an analog signal, is converted to a digital signal in step S615by analog to digital decoder502. The counter N is set to 1 in step S620. The digital signal is then decoded using the bi-directional Viterbi algorithm (BIVA) by BIVA decoder504′ in step S625. After the first BIVA decoding process the results are saved in a buffer memory, otherwise the results thereof are not saved (steps S630and S640).

The results of the BIVA decoder504′ are then LDPC decoded by LDPC decoder506′ or LDPC decoding means, step S640. In step S650, the parity check equations are calculated to determine if there are any violations. If there are no violations or if the number of iterations N is equal to 5, then processing continues to step S655; otherwise N is incremented by 1 and the next iteration of processing is performed.

In step S655threshold detector510determines if the number of violations is greater than x. For the case where there are 1210 bits of data are processed in a time period, there are 105 parity check equations. As will be understood by one of ordinary skill in the art, the matrix is sized 1210×105. For this case, if the number of violations is greater than 12, then the output is set to the output of the BIVA decoder504′ at N=1, which was previously saved in step S635. Alternatively, if the number of violations is not greater than 12, the output is set to the output of the LDPC decoding, step S665. Similarly for the case where 1173 bits are processed in a time period, there are 68 parity check equations which corresponds to an 1173×68 matrix. With this size matrix, if the number of violations is greater than 8 then the output is set to the output of the BIVA decoder504′ at N=1, which was previously saved in step S635. In either case, the output is then RLL decoded in step S670.

FIG. 6Ashows an alternate encoder600′ in accordance with a preferred embodiment of the present invention. As shown therein, the input signal is RLL encoded by RLL encoder302which is then linear block code encoded by linear block code encoder304to generate parity data. The outputs of both the RLL encoder302and linear block code encoder304are then combined by multiplexer306or multiplexing means.

While the invention has been described in conjunction with several specific embodiments, it is evident to those skilled in the art that many further alternatives, modifications and variations will be apparent in light of the foregoing description. More specifically, while the read channel of the present invention is implemented as an integrated circuit, it is contemplated that the present invention may also be implemented as discrete components or a general-purpose processor operated in accordance with program code instructions or computer program or combination thereof. These program code instructions can be obtain from a medium, such as network, local area network, the Internet, or storage devices. Such storage devices include, by way of example, magnetic storage devices, optical storage devices, electronic storage devices, magneto-optical device and the like. Moreover, as will be appreciated by one of ordinary skill in the art, while a number of examples have shown being utilized with mass storage systems, the same encoder and decoder circuits and methods may also be utilized with data transmission systems. As such, apparatuses and techniques discussed with the preferred embodiments are just as applicable with data transmissions systems. Thus, the invention described herein is intended to embrace all such alternatives, modifications, applications and variations as may fall within the spirit and scope of the appended claims.