This invention relates generally to encoding using codes that satisfy running-digital-sum constraints.
Before recording or transmission, data are typically encoded for error protection and also for modulation, to preserve signal content against corruption by noise, fading and other interference associated with a communications channel in the recording or transmission system. The modulation encoding is also performed to preserve signal content that might otherwise be filtered out by circuitry in the communications channel. For example, a preamplifier in the circuitry acts essentially as a high pass filter, and filters out much of the low frequency content of the information signal. In certain recording systems, such as, for example, perpendicular recording systems, there is significant energy in the low frequency portion of the information signal. Accordingly, the filtering out of the low frequency content would result in performance degradation. The data are thus encoded to preserve the information in the low frequency content. One example of encoding to preserve the information in the low frequency content is running-digital-sum (“RDS”) encoding, which constrains the direct-current (“DC”) content of the signal to be transmitted (or recorded). Constraining the DC content of the transmission signal essentially means shifting the low frequency content of the information signal to a higher frequency spectrum so that the information in the low frequency content of the original data signal does not get filtered out at the receiving end.
Typically, the user data are encoded to produce RDS encoded data and the RDS encoded data are further encoded using an error correction code (ECC) to produce error correction code words. The ECC can be a traditional Reed-Solomon (RS) code, an iterative code like a low-density parity-check (LDPC) code, a combination or concatenation of the RS and LDPC codes or, in general, any block or convolutional code or combinations or concatenations thereof.
Before entering the communications channel, the RDS and ECC encoded data and the parity bits are provided to a precoder, which translates them into bit sequences that are optimized for transmission and detection. The preceding, however, essentially disrupts the RDS constraints, and there is thus a trade-off between the optimization for transmission/detection and the encoding to preserve signal content through the channel circuitry.
A system includes an encoder that encodes data in accordance with an error correction code (“ECC”) and produces parity bits, and a parity bit processor that disperses the parity bits across the data, placing a parity sub-block of “i” parity bits between selected multiple-bit data sub-blocks. The system also includes a bit modifier that modifies one or more bits in predetermined positions of the data sub-blocks, to ensure modulation constraints are maintained after precoding for transmission over a channel. The system modifies one or more bits of the respective data sub-blocks based on the bits of the preceding parity sub-blocks, such that the precoding does not sign invert the data sub-blocks.
The invention description below refers to the accompanying drawings, of which:
The postcoded data are provided to an error correction code (ECC) encoder 16, in the example an LDPC encoder, which is hereinafter referred to as “the LDPC encoder.” The LDPC encoder 16 operates in a known manner to produce parity bits. The parity bits are supplied to a parity bit processor 18, which disperses the parity bits as i-bit parity sub-blocks across the encoded data block. The parity bit processor places a parity sub-block between respective w-bit data sub-blocks, as depicted in
The system also manipulates the data sub-blocks, to ensure that RDS constraints are maintained through precoding. The system thus includes a bit modifier 19, which modifies one or more bits of the respective w-bit data sub-blocks, to ensure RDS constraints are maintained after preceding by the precoder 20. The operations of the bit modifier are discussed in more detail below with further reference to
The data sub-blocks, manipulated as appropriate, and inserted parity sub-blocks are supplied as a data code word to the precoder 20 which, in a known manner, manipulates the code word bits to produce a precoded bit sequence. The precoder then supplies the bit sequence to a channel for transmission.
Our system thus produces a data code word that after the manipulation by the precoder results in a corresponding precoder bit stream that meets the RDS constraints. The parity bit processor 18 receives the data, which has been RDS encoded and postcoded, and the parity bits produced by the LDPC encoder 16. The parity bit processor disperses the parity bits across the encoded data block as i-bit parity sub-blocks. The processor inserts an i-bit parity sub-block between the w-bit data sub-blocks, as illustrated in
The parity bit processor 18 further manipulates the parity sub-blocks and modifies one or more of the data bits in the respective w-bit data sub-blocks, to produce data sub-blocks that do not sign invert during preceding. As an example, we discuss a system that utilizes a
precoder, where D represents a delay and {circle around (+)} represents an XOR operation. The XOR operation produces a −1 when the input bits are the same and +1 when the input bits differ. In the example, the precoder produces a bit value, yk, for an input bit xk as
yk=xk{circle around (+)}yk−1
where k is a time index.
The bit modifier 19 determines, for a given parity sub-block, what effect the sub-block will have on the succeeding data sub-block during preceding. In the example with
precoding, the bit modifier determines if the parity sub-block has an even or an odd number of ones, since an odd number of ones will result in a sign inversion of the succeeding data sub-block during precoding and an even number of ones will not result in the sign inversion of the data block. If the parity bits have odd number of ones, the bit modifier changes the values of one or more of the bits of the succeeding data sub-block, such that preceding does not sign invert the data sub-block. Otherwise, the bit modifier maintains the values of the one or more data bits.
As an example, consider parity sub-blocks that contain three parity bits. The first data bit of the data sub-block following the parity bit sub-block, e.g. bit aw of
P0{circle around (+)}P1{circle around (+)}P2{circle around (+)}aw=Aw
where Aw is the bit value included in the data code word (
The bit modification thus may result in a “manual” sign inversion of the first data bit of a data sub-block in the data code word, to essentially counteract the sign inversion to during preceding. The result of precoding the data code word is a bit stream that, except for the parity sub-blocks and the first data bits of respective data sub-blocks, maintains the RDS constraint over the entire block. As will be understood by those skilled in the art, the number and relative positions of the data bits that are modified depends on the precoder utilized by the system.
When the user data are to be recovered from the precoded bit stream, bit manipulation is also performed to recover the appropriate sign and reliability information for the data bits that have been modified during encoding.
Referring now to
The decoding bit modifier 44 thus uses the detected values of the bits of the respective parity sub-blocks and the corresponding modified data bits from the succeeding data sub-blocks to produce the data values for LDPC decoding by calculating:
P0{circle around (+)}P1{circle around (+)}P2{circle around (+)}Aw=aw
where aw is the bit value used for LDPC decoding. The bit manipulator also determines corresponding soft information as:
LLR(aw)=sign(aw)min{|LLR(p0)|,|LLR(p1)|,|LLR(p2)|,|LLR(Aw)|}
where “sign” denotes the signum function, “min” denotes the minimum operator, and |x| denotes the absolute value of the real number x.
The decoding bit modifier 44 may instead zero out the reliability values associated with the modified data bits aj. Alternatively, or in addition, the decoding bit modifier may apply the belief propagation, sum-product, or min-sum algorithm to the parity bits and corresponding modified data bits.
The bit modifier 44 passes the soft information for the entire data code word to the LDPC decoder 46. The LDPC decoder iteratively decodes the data bits and utilizes the parity bits for error detection in a known manner, after taking into account the positions of the parity bits in the code word. Before the data code word returns to the SOVA detector 42 in a global iteration, the code word passes through the decoding bit modifier 44, which reproduces the modified data bits Aj and corresponding soft information based on the decoded values of the bits of the parity sub-blocks and the corresponding data bits.
The decoding bit modifier 44 reproduces the modified data bits:
Aw=P0{circle around (+)}P1{circle around (+)}P2{circle around (+)}aw
where Aw is the modified data bit for inclusion in the information supplied to the SOVA detector. The bit modifier also determines corresponding soft information as:
LLR(Aw)=sign(Aw)min{|LLR(p0)|,|LLR(p1)|,|LLR(p2)|,|LLR(aw)|}
The soft information for all of the data and parity bits is passed to the SOVA detector 42, which operates in a known manner to produce updated soft information. Alternatively, the SOVA detector 42 and LDPC decoder 46 may be cascaded, with the first LDPC decoder passing the updated soft information for decoded data and parity bits to a next SOVA detector, and so forth.
The decoding bit modifier 44 may instead zero out the reliability values associated with the modified data bits aj. Alternatively, or in addition, the decoding bit modifier may consider applying the belief propagation, sum-product, or min-sum algorithm to the parity bits and corresponding modified data bits. The foregoing description has been directed to specific embodiments. It will be apparent, however, that other variations and modifications may be made to the described embodiments, with the attainment of some or all of their advantages. For example, the ECC encoder that produces the parity bits may utilize iterative or non-iterative codes, such as, for example, block codes, convolutional codes, turbo codes instead of or in addition to the LDPC code, the processors depicted separately may be combined or a processor depicted individually may consist of several processors, the encoding system may be used with all types of recording systems, communications systems, and so forth. Similarly, the channel detector can be implemented as a SOVA detector, a BCJR detector, or a detector that utilizes other known iterative or non-iterative detection techniques. Further, the respective data sub-blocks need not all have the same numbers of bits across the data block. Accordingly this description is to be taken only by way of example and not to otherwise limit the scope of the invention. Therefore, it is the object of the appended claims to cover all such variations and modifications as come within the true spirit and scope of the invention.
Number | Name | Date | Kind |
---|---|---|---|
6333704 | Jung et al. | Dec 2001 | B1 |
6989776 | Tsang | Jan 2006 | B2 |
7184486 | Wu et al. | Feb 2007 | B1 |
7191386 | Kuznetsov | Mar 2007 | B2 |
7237171 | Richardson | Jun 2007 | B2 |
8024637 | Bliss et al. | Sep 2011 | B2 |
8037398 | Argon et al. | Oct 2011 | B2 |
20040093554 | Hung | May 2004 | A1 |
20060095828 | Souvignier et al. | May 2006 | A1 |
20060123328 | Tonami et al. | Jun 2006 | A1 |
20060156167 | Dielissen et al. | Jul 2006 | A1 |
20060156171 | Kuznetsov et al. | Jul 2006 | A1 |
20060220928 | Ito et al. | Oct 2006 | A1 |
20070110188 | Esumi et al. | May 2007 | A1 |
20070127728 | Hong et al. | Jun 2007 | A1 |
20080001792 | Kondo et al. | Jan 2008 | A1 |
20080031364 | Seo | Feb 2008 | A1 |
20080086676 | Mead | Apr 2008 | A1 |
20080115036 | Kuznetsov et al. | May 2008 | A1 |
20080294840 | Bliss et al. | Nov 2008 | A1 |
Number | Date | Country | |
---|---|---|---|
20100037125 A1 | Feb 2010 | US |