DATA DEPENDENT SCRAMBLER WITH
CROSS-REFERENCE TO RELATED
This application is a continuation of U.S. patent application Ser. No. 10/715,551, filed Nov. 17, 2003, which claims the benefit of U.S. Provisional Application No. 60/451,875 filed Mar. 4, 2003, which are hereby incorporated by reference in their entirety.
FIELD OF THE INVENTION
The present invention relates to data coding in a communications channel, and more particularly to data coding that reduces unwanted bit patterns in a communications channel with reduced overhead.
BACKGROUND OF THE INVENTION
Magnetic storage systems such as disk drives include a magnetic medium or platter with a magnetic coating that is divided into data tracks. The data tracks are divided into data sectors that store fixed-sized data blocks. A read/write head typically includes a write circuit and write element such as an inductor that selectively generates positive and negative magnetic fields that are stored by the magnetic medium. The stored positive and negative fields represent binary ones and zeros. The read/write head includes an element such as a magneto-resistive element that senses the stored magnetic field to read data from the magnetic medium. A spindle motor rotates the platter and an actuator arm positions the read/write head relative to the magnetic medium.
Magnetic storage systems typically code the user data sequence or user data using Run Length Limited (RLL) code. RLL coding reduces sequences in the user data that may cause problems with timing circuits of the magnetic storage system. For example, a RLL code enforces constraints on the number of consecutive ones and/or zeros that are allowed to occur in the data. The efficiency of the RLL code is typically measured in terms of a code rate. For every m-bits or m-bytes of user data, an n-bit or n-byte encoded word is written to the storage media. RLL codes are used to eliminate unwanted bit patterns in the data and typically do not have error correction capability. RLL coding, however, reduces data storage capacity by increasing channel bit density (CBD), which reduces a signal to noise ratio (SNR) and may lead to lower reliability.
Referring now to FIG. 1, a write-path of a data storage system with RLL coding is shown. A host bus interface (HBI) 14 receives user data from a host computer 16. A buffer manager (BM) 18 initially stores the user data in a buffer 20 and then sends the user data from the buffer 20 to a disk formatter (DF) 22 with proper timing. An ECC/CRC encoder 24 appends CRC bits to the user data. The CRC bits are calculated based on the user data. ECC bits are computed based on the user data and the CRC bits and appended thereto. A scrambler 26 generates a pseudo-random scrambling sequence that is based on a polynomial and seed. The user data and the scrambling sequence are input to an XOR gate 27, which outputs scrambled user data. A RLL encoder 28 is used to constrain the unwanted bit patterns in the scrambled user data sequence.
To increase SNR and data storage capacity, data storage systems were developed without RLL coding using datadependent scramblers (DDS). Data is processed by the DDS to eliminate unwanted bit patterns. The DDS is disclosed in
"Improved Data Coding For Enforcing Constraints On Ones and Zeros In a Communications Channel", U.S. patent application Ser. No. 10/423,552, filed Apr. 25, 2003, which is commonly assigned and is hereby incorporated by reference
5 in its entirety. The scrambled user data from the DDS is forwarded to an ECC/CRC encoder, which generates and appends CRC and ECC bits to the DDS coded user data.
Because the CRC and ECC bits may also contain unwanted bit patterns, traditional RLL coding may be used to encode
1° the ECC/CRC portion. The data storage system is still referred to as being without RLL coding because the CRC and/or ECC bits are relatively small in number as compared to the number of bits in the user data. In data storage systems without RLL coding, the CRC bits are generated and
15 appended by the ECC/CRC encoder. Because the ECC/CRC encoder is located downstream from other devices, such as the disk formatter (DF), the buffer manager (BM), the buffer, etc., the CRC bits that are generated do not detect errors that are generated in these devices.
20 Referring now to FIG. 2, a write-path of a data storage system that includes the DDS is shown. The host computer 16 generates user data that is transferred to the host bus interface (HBI) 14. The buffer manager (BM) 18 receives the user data from the HBI 14 and controls the data flow through the write
25 path. The user data is periodically stored in the buffer 20. The BM 18 passes the user data on based on sequence timing of data flow through the write path. The disk formatter (DF) 22 receives the user data from the BM 18 and formats the user data.
30 A data dependent scrambler (DDS) 40 receives the user data from the DF 22 and scrambles the user data using a data dependent scrambling seed (S) to eliminate the unwanted bit patterns. Other encoding and/or scrambling may optionally
35 be performed to improve the Hamming weight of adjacent symbols using an H-code token (H) and/or to limit the number of zeros in interleaved subsequences. The scrambling seed (S) and the H-code token (H) are appended to the user data sequence, which increases overhead. An ECC/CRC encoder 42 appends CRC bits that are calculated based on the scrambled user data. ECC bits are also computed based on the scrambled user data and the CRC bits and appended to the scrambled user data.
If the DDS performs H-code coding and data dependent
45 scrambling, the DDS needs to append the scrambling seed (S) and the H-code token (H) to the user data sequence. For example, when the user data corresponds to a sector including 4096 bits arranged as 410 10 bit symbols, the DDS coding rate is equivalent to a 410/412 RLL code. As can be appreci
50 ated further reductions to the overhead would be desirable.
SUMMARY OF THE INVENTION
Accordingly, the present invention provides a data depen55 dent scrambler for a communications channel that receives a user data sequence including X bits that are organized as N M-bit symbols. The data dependent scrambler includes a seed finder that generates a scrambling seed that is dependent upon the symbols in the user data sequence. A first scrambler 60 receives the user data sequence from the data buffer and the scrambling seed from the seed finder and generates the scrambled user data sequence. An H-code finder generates at least one of an H-code token that is dependent upon the symbols in the user data sequence and an offset of the H-code 65 token from the scrambling seed. An H-code encoder receives the scrambled user data sequence and at least one of the H-code token and the offset. The H-code encoder increases a