U.S. patent application number 09/803401 was filed with the patent office on 2002-04-25 for high rate runlength limited codes for 10-bit ecc symbols.
Invention is credited to Fitzpatrick, Kelly K., McEwen, Peter, Zafer, Bahjat M..
Application Number | 20020047788 09/803401 |
Document ID | / |
Family ID | 46277396 |
Filed Date | 2002-04-25 |
United States Patent
Application |
20020047788 |
Kind Code |
A1 |
McEwen, Peter ; et
al. |
April 25, 2002 |
High rate runlength limited codes for 10-bit ECC symbols
Abstract
A methodology for designing an implementing high rate RLL codes
is optimized for application to 10-bit ECC symbols, and provides
rate 20/21, rate 50/51, rate 90/91 and other modulation code rates
for use in magnetic recording channels. A relatively small subcode
encoding--one easy to implement--is applied to a portion of the
input stream, and the resulting base codeword is partitioned into
nibbles that, in turn, are interleaved among the unencoded ECC
symbols. Code constraints on the subcode word nibbles depend upon
the values of adjacent unencoded symbols. The resulting codes
provide excellent density and error propagation performance.
Inventors: |
McEwen, Peter; (Santa Clara,
CA) ; Fitzpatrick, Kelly K.; (Sudbury, MA) ;
Zafer, Bahjat M.; (Sunnyvale, CA) |
Correspondence
Address: |
Michael Zarrabian, Esq.
Suite 500
1925 Century Park East
Los Angeles
CA
90067
US
|
Family ID: |
46277396 |
Appl. No.: |
09/803401 |
Filed: |
March 9, 2001 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
09803401 |
Mar 9, 2001 |
|
|
|
09350685 |
Jul 9, 1999 |
|
|
|
6259384 |
|
|
|
|
Current U.S.
Class: |
341/58 ;
G9B/5.033 |
Current CPC
Class: |
H03M 7/46 20130101; G11B
5/09 20130101 |
Class at
Publication: |
341/58 |
International
Class: |
H03M 005/00 |
Claims
What is claimed is:
1. A method of encoding an input block of digital data consisting
of a series of input symbols of predetermined size, the method
comprising the steps of: selecting a base code having a rate
n/(n+1) where n is a multiple of the input symbol size; encoding at
least one of the input symbols in accordance with the selected base
code so as to produce a base codeword, the number of input symbols
thus encoded being equal to a number of input symbols necessary to
aggregate n input bits corresponding to the selected base code;
partitioning the base codeword produced by the base code into a
plurality of nibbles; interleaving the base code nibbles among the
unencoded input symbols so as to form a rate p/(p+1) codeword,
where p is the length of the input block; and for each base code
nibble in the p/(p+1) codeword, if the last bit of the preceding
unencoded symbols is a one and the base code nibble is all ones,
modifying the base code nibble, thereby limiting a run length of
consecutive ones in the resulting codeword.
2. The method of claim 1, further comprising the steps of
partitioning at least one of unencoded input symbols into multiple
portions, wherein the step of the interleaving comprises the steps
of interleaving one or more of the nibbles between said portions of
the partitioned unencoded input symbol.
3. The method of claim 1, wherein the step of interleaving
comprises the steps of interleaving the nibbles among the unencoded
input symbols such that two or more of the unencoded input symbols
are inserted between at least a pair of said nibbles.
4. A method according to claim 1 wherein said encoding and
partitioning steps further include disallowing any nibble
consisting of all zeros.
5. A method according to claim 1 wherein said modifying the base
code nibble comprises complementing each bit of the base code
nibble, thereby limiting the run length of consecutive ones.
6. A method according to claim 1 wherein selecting the base code
comprises selecting a base code having a rate 10/11.
7. A method of encoding an input block of digital data consisting
of a series 10-bit ECC symbols. The method comprising the steps of:
selecting a base code having a rate n/(n+1) where n is a multiple
of the 10-bit input symbols size; encoding at least one of the
input symbols in accordance with the selected base code so as to
produce a base codeword, the number of input symbols thus encoded
being equal to a number of input symbols necessary to aggregate n
input bits corresponding to the selected base code; partitioning
the base codeword produced by the base code into a plurality of
nibbles, disallowing the all-zeros nibbles; and interleaving the
base code nibbles among the unencoded input symbols so as to form a
rate p/(p+1) codeword, where p is the length of the input
block.
8. A method according to claim 7 wherein the input block size is 50
bits, consisting of five 10-bit input symbols.
9. A method according to claim 7 wherein the selected base code has
a rate 20/21.
10. A method according to claim 7 wherein the selected base code
has a rate 30/31.
11. A method according to claim 7 wherein the base code has rate
10/11 and further comprising, for each base code nibble in the
p/p+1 codeword, if the last bit of the preceding unencoded symbols
is a one and the base code nibble is all ones, complementing the
base code nibble, thereby limiting a run length of consecutive ones
in the resulting codeword.
12. A method according to claim 7, further comprising the steps of
partitioning at least one of the unencoded input symbol into
multiple portions, wherein the step of interleaving comprises the
steps of interleaving one or more of the nibbles between said
portions the partitioned unencoded input symbol.
13. A method according to claim 7, wherein the step of interleaving
comprises the steps of interleaving the nibbles among the unencoded
input symbols such that two or more of the unencoded input symbols
are inserted between at least a pair of said nibbles.
14. A method of rate 90/91 encoding a 90-bit input sequence
comprising the steps of: receiving a series of nine 10-bit input
symbols, selecting one of the series of input symbols for rate
10/11 encoding, leaving the eight non-selected 9-bit input symbols
unencoded, rate 10/11 encoding the selected one of the input
symbols so as to form an 11-bit base code word consisting of a
series of four nibbles, each nibble containing at least one
transition, and interleaving the four nibbles between the four
eight unencoded 10-bit input symbols, thereby forming a 91-bit
codeword.
15. A method according to claim 14 wherein said interleaving step
includes: inserting a first one of the series of nibbles following
the first unencoded 10-bit input symbol, inserting a second one of
the series of nibbles following the third unencoded 10-bit input
symbol, inserting a third one of the series of nibbles following
the fifth unencoded 10-bit input symbol, and inserting the fourth
one of the series of nibbles following the seventh unencoded 10-bit
input symbol, wherein the first, second, third and fourth nibbles
are arbitrarily selected among the four nibbles of the 11-bit
subcode word.
16. A method according to claim 14 wherein said interleaving step
includes: inserting a first one of the series of nibbles before the
first unencoded 10-bit input symbol, inserting a second one of the
series of nibbles before the third unencoded 10-bit input symbol,
inserting a third one of the series of nibbles before the fifth
unencoded 10-bit input symbol, and inserting the fourth one of the
series of nibbles before the seventh unencoded 10-bit input symbol,
wherein the first, second, third and fourth nibbles are arbitrarily
selected among the four nibbles of the 11-bit subcode word.
17. A method according to claim 14 wherein three of the four
nibbles formed by the rate 10/11 encoding step have three bits
each, and the fourth one of the four nibbles has two bits.
18. A method according to claim 14 wherein said rate 10/11 encoding
step includes: first separating the selected 10-bit symbol so as to
form a series of four input nibbles defined as D.sub.0=D[0:2],
D.sub.1=D[3:5], D.sub.2=D[6:8], D.sub.3=D[9], where D is the input
symbol selected for rate 10/11 encoding, calculating a series of
four encoded nibbles, x.sub.0, x.sub.1, x.sub.2 and x.sub.3
responsive to the four input nibbles, said calculating step
including the following: for each encoded nibble x.sub.1 determined
to consist of all ones, if the bit immediately preceding the nibble
is a logic one, complementing said nibble x.sub.i to form a
corresponding encoded nibble y.sub.i, and for each encoded nibble
determined not to consist of all ones, forming a corresponding
encoded nibble y.sub.i=x.sub.i, thereby forming an 11-bit subcode
word consisting of encoded nibbles y.sub.0 to y.sub.3.
19. A method according to claim 18 wherein said calculating step
includes encoding the selected 10-bit symbol D according to the
following rate 10/11 base code table in which
f.sub.i=!(D.sub.i[1]+D.sub.i[2]), for i=0, 1, 2, wherein "!"is the
logical NOT operator, "+" is the logical OR operator and "d/c"
denotes "don't care":
4 10/11 Base Code Table f.sub.0 f.sub.1 f.sub.2 D.sub.3 x.sub.0
x.sub.1 x.sub.2 x.sub.3 0 0 0 d/c D.sub.0 D.sub.1 D.sub.2 D.sub.3 1
0 0 1 1 100 D.sub.0 D.sub.1 10 0 0 1 0 101 D.sub.0 D.sub.1 10 0 1 0
1 010 D.sub.0 D.sub.2 10 0 1 0 0 011 D.sub.0 D.sub.2 10 1 0 0 1 111
D.sub.1 D.sub.2 10 1 0 0 0 001 D.sub.1 D.sub.2 10 0 1 1 1 110
D.sub.0 011 10 0 1 1 0 110 D.sub.0 010 10 1 0 1 1 110 D.sub.1 001
10 1 0 1 0 110 D.sub.1 111 10 1 1 0 1 110 D.sub.2 100 10 1 1 0 0
110 D.sub.2 101 10 1 1 1 1 110 001 110 10 1 1 1 0 110 100 110
10
20. A method of rate 20/21 encoding a 20-bit input sequence
comprising the steps of: receiving a series of two 10-bit input
symbols, selecting one of the series of input symbols for rate
10/11 encoding, leaving the one non-selected 10-bit input symbol
unencoded, rate 10/11 encoding the selected one of the input
symbols so as to form an 11-bit base code word consisting of a
series of four nibbles, each nibble containing at least one
transition, partitioning the 10-bit unencoded symbol into four
portions, and interleaving the four nibbles between the four
portions of the unencoded 10-bit input symbol, thereby forming a
21-bit codeword.
21. A method according to claim 20, wherein the step of
partitioning the 10-bit unencoded symbol includes the steps of
partitioning the 10-bit unencoded symbol into four 3-bit, 2-bit,
2-bit and 3-bit portions.
22. A method according to claim 20 wherein said interleaving step
includes: inserting a first one of the series of nibbles following
the first portion of the unencoded 10-bit input symbol, inserting a
second one of the series of nibbles following the second portion of
the unencoded 10-bit input symbol, inserting a third one of the
series of nibbles following the third portion of the unencoded
10-bit input symbol, and inserting the fourth one of the series of
nibbles following the fourth portion of the unencoded 10-bit input
symbol, wherein the first, second, third and fourth nibbles are
arbitrarily selected among the four nibbles of the 11-bit subcode
word.
23. A method according to claim 20 wherein said interleaving step
includes: inserting a first one of the series of nibbles before the
first portion of the unencoded 10-bit input symbol, inserting a
second one of the series of nibbles before the second portion of
the unencoded 10-bit input symbol, inserting a third one of the
series of nibbles before the third portion of the unencoded 10-bit
input symbol, and inserting the fourth one of the series of nibbles
before the fourth portion of the unencoded 10-bit input symbol,
wherein the first, second, third and fourth nibbles are arbitrarily
selected among the four nibbles of the 11-bit subcode word.
24. A method according to claim 20 wherein three of the four
nibbles formed by the rate 10/11 encoding step have three bits
each, and the fourth one of the four nibbles has two bits.
25. A method according to claim 20 wherein said rate 10/11 encoding
step includes: first separating the selected 10-bit symbol so as to
form a series of four input nibbles defined as D.sub.0=D[0:2],
D.sub.1=D[3:5], D.sub.2=D[6:8], D.sub.3=D[9], where D is the input
symbol selected for rate 10/1 1 encoding, calculating a series of
four encoded nibbles, x.sub.0, x.sub.1, x.sub.2 and x.sub.3
responsive to the four input nibbles, said calculating step
including the following: for each encoded nibble x.sub.i determined
to consist of all ones, if the bit immediately preceding the nibble
if a logic one, complementing said nibble x.sub.i to form a
corresponding encoded nibble y.sub.i, and for each encoded nibble
determined not to consist of all ones, forming a corresponding
encoded nibble y.sub.i=x.sub.i, thereby forming an 11-bit subcode
word consisting of encoded nibbles y.sub.0 to y.sub.3.
26. A method according to claim 25 wherein said calculating step
includes encoding the selected 10-bit symbol D according to the
following rate 10/11 base code table in which
f.sub.i=!(D.sub.i[1]+D.sub.i[2]), for i=0, 1, 2, wherein "!"is the
logical NOT operator, "+"is the logical OR operator and "d/c"
denotes "don't care":
5 10/11 Base Code Table f.sub.0 f.sub.1 f.sub.2 D.sub.3 x.sub.0
x.sub.1 x.sub.2 x.sub.3 0 0 0 d/c D.sub.0 D.sub.1 D.sub.2 D.sub.3 1
0 0 1 1 100 D.sub.0 D.sub.1 10 0 0 1 0 101 D.sub.0 D.sub.1 10 0 1 0
1 010 D.sub.0 D.sub.2 10 0 1 0 0 011 D.sub.0 D.sub.2 10 1 0 0 1 111
D.sub.1 D.sub.2 10 1 0 0 0 001 D.sub.1 D.sub.2 10 0 1 1 1 110
D.sub.0 011 10 0 1 1 0 110 D.sub.0 010 10 1 0 1 1 110 D.sub.1 001
10 1 0 1 0 110 D.sub.1 111 10 1 1 0 1 110 D.sub.2 100 10 1 1 0 0
110 D.sub.2 101 10 1 1 1 1 110 001 110 10 1 1 1 0 110 100 110 10
Description
RELATED APPLICATION
[0001] This is a continuation of U.S. patent application Ser. No.
09/350,685 filed on Jul. 9, 1999, for "Method and Apparatus for
"High Rate Runlength Limited Codes for 10-Bit ECC Symbols", McEwen
et al, now pending.
TECHNICAL FIELD
[0002] The present invention relates to channel modulation codes
and methods for implementation in magnetic recording systems such
as disk drives. More specifically, the present invention relates to
high rate run-length limited (RLL) modulation codes for use in a
PRML channel.
BACKGROUND OF THE INVENTION
[0003] Modulation codes are used in magnetic recording channels in
order to limit recorded bit sequences to those that are most
reliably detectable. In particular, run length limited (RLL)
modulation codes have been used within partial response signaling,
maximum likelihood (PRML) data recording and playback channels,
decision feedback equalization (DFE) channels, and the like.
Partial response systems of interest for magnetic data storage
devices such as disk drives and magnetic tape include a PR4
(1-D.sup.2) channel and EPR4 (1+D-D.sup.2-D.sup.3) channel as well
as other nonclassical polynomials. The present invention can be
used in any PR channel.
[0004] In general, magnetic recording systems employ Viterbi
detectors to achieve maximum likelihood detection of user data as
it is played back from the recording medium. A modulation code for
a PRML data recording and playback channel is selected to balance
code efficiency against timing/gain loop reliability and the
Viterbi detector path memory, as well as error propagation during
decoding.
[0005] Run length limited modulation codes are often described
using the format "(rate) RLL (d,G/I)", where the "rate" is
expressed as a ratio of the number of input bits to be encoded to
the number of output bits in the resulting codeword. For example, a
rate 8/9 modulation code converts an 8-bit input byte into a 9-but
codeword. Rate 8/9 encoding is well known in the art, as described,
for example, in U.S. Pat. No. 4,797,681 and U.S. Pat. No.
5,260,703. Rate 8/9 encoding for PRML data channel also is
described in U.S. Pat. No. 5,196,849. As the code rate approaches
unity, the code is deemed to be more efficient, in that relatively
fewer code characters are required to encode user data values.
Thus, rate 8/9 code is more efficient than a rate 2/3 code.
[0006] Similarly, rate 16/17 code is more efficient than a rate 8/9
code. A rate 16/17 code (=0.941) achieves an approximately 6%
increase in recording density over a standard rate 8/9 modulation
code. One example of a rate 16/17 modulation code is described in
commonly assigned U.S. Pat. No. 5,635,933 incorporated herein by
this reference. Another rate 16/17 code is described in U.S. Pat.
No. 5,784,010 assigned to IBM.
[0007] Early PRML read channel used the well-known rate 8/9
RLL(0,4/4) channel code. In accordance with prior art, this channel
code is combined with a 1/(1.sym.D.sup.2) modulo 2 precoder to
obtain the {+1,-1} valued magnetic write-current pattern. On the
decoder side, the signal is first equalized to the partial response
target and then the +1/-1 write-current waveform is
maximum-likelihood detected. The write current is then "unprecoded"
(or postcoded) with a 1.sym.D.sup.2 modulo 2 function. This
"undoes" the precoding to generate a {0,1 } valued sequence. The
data is then RLL decoded for the user. Examples of RLL encoders and
decoders are disclosed in the patent identified above.
[0008] The rate 8/9 code can be extended to a rate 16/17 code by
either bit-wise or byte-wise interleaving unencoded bytes with the
encoded sequence. While the G and I constraints will become
considerably larger (G=12, I=8 for byte-wise interleaved case), the
roughly 6% in increases code rate is often considered worthwhile.
Still, the need remains for improvements in recording channel
encoding efficiency in order to improve storage capacities in
recording systems and lower costs. The codes in this patent
application are (0,k) codes. The k constraint is equivalent to the
G constraint. The 0 means that consecutive ones are allowed, i.e.
there is no restriction on the minimum run length of zeros.
[0009] Another limitation of prior art is that virtually all known
channel coding schemes are based on 8-bit ECC symbols, as they are
historically the de facto standard. We anticipate use of a 10-bit
ECC symbol and thus new methods are required to achieve improved
density and error propagation performance in the context of 10-bit
ECC symbols.
SUMMARY OF THE INVENTION
[0010] In view of the foregoing background, a general object of the
present invention is to improve the effective a real density of
data recorded on magnetic media.
[0011] Another object is to improve recording efficiency by
reducing the relative number of non-data bits or "overhead" in the
data encoding process.
[0012] An object of the invention is to provide very high rate
modulation codes having reasonable zero run length limitations for
use in magnetic recording and playback systems.
[0013] A further object of the invention is to minimize
implementation complexity in the context of high rate RLL codes, by
providing a relatively small subcode.
[0014] A further object of the invention is to enable effective RLL
encoding of 10-bit symbols for magnetic recording.
[0015] A more specific object of the invention is to provide a
50/51 modulation code which limits error propagation in the context
of 10-bit ECC symbols.
[0016] A further object of the present invention is to provide
encoding schemes having improved ratios of data bits to code word
length without degrading run length limiting in encoded data.
[0017] Another object of the invention is to record data on a
magnetic media so as to prevent long strings of no transition on
the magnetic media thereby allowing for reliable timing and gain
recovery.
[0018] According to one aspect of the invention, methodologies and
constraints are disclosed to enable the creation of a variety of
high rate channel codes primarily for use in a PRML channel of a
magnetic recording and playback system. The new method of designing
and implementing a desired code generally includes the following
steps:
[0019] First, for a desired rate code, selecting a suitable base
code (or "subcode"), having a rate n/(n+1) where n is a multiple of
the ECC symbols size. Examples are rate 10/11, 20/21, 30/31 etc.
for a 10-bit ECC symbols size.
[0020] Second, encoding one or more of the ECC symbols using the
selected base code. Specifically, the number of ECC symbols to be
encoded is the number of symbols necessary to provide the number of
input bits appropriate to the selected base code. For example, a
rate 10/11 base code will require encoding one 10-bit ECC symbol,
while a rate 30/31 base code will require encoding three ECC
symbols (to enable 30 input bits).
[0021] Third, partitioning the codeword produced by the base code
into a plurality of m nibbles. In one version m is the number of
unencoded ECC symbols. For example, if a rate 50/51 RLL code is
desired, the base code rate 10/11 is selected, and one ECC symbol
is encoded to form the 11-bit subcode word. That subcode word is
partitioned into m=4 nibbles. Four ECC symbols remain unencoded. In
one embodiment, three nibbles have three bits each, while a fourth
nibble has two bits. However, other partitions are possible as
described later.
[0022] The fourth step, which is optional but preferred, entails
modifying the subcode nibbles in response to the values of
corresponding unencoded symbols that will be positioned adjacent to
the x.sub.i nibbles in the target codeword. Specifically, the
invention forbids all zeros in a subcode nibble if the immediately
preceding bit (i.e. the last bit of the preceding unencoded symbol)
is zero. Conversely, we forbid all ones in a subcode nibble if the
immediately preceding bit (i.e. the last bit of the preceding
unencoded symbol) is a one. These constraints ensure that at least
one magnetic flux transition per nibble.
[0023] Finally, the resulting modified nibbles are interleaved
among the unencoded ECC symbols. The order of the unencoded symbols
and the order of the subcode nibbles interleaved among them is not
limited to any specific predetermined sequence. The resulting
codeword can begin with either an unencoded ECC symbol or a subcode
nibble.
[0024] In one embodiment of the present invention, before
interleaving the nibbles, at least one unencoded symbol is
partitioned into smaller portions, such that the nibbles are then
interleaved among said smaller portions of the unencoded symbol. In
another embodiment, the nibbles are interleaved such that there are
two or more unencoded symbols between at least one pair of
nibbles.
[0025] The foregoing techniques can be applied to design rate
20/21, 30/31, 40/41, 50/51, 80/81, 90/91,110/111 and other similar
rate codes for encoding 10-bit symbols. For each code, many
different arrangements of the unencoded symbols and encoded nibbles
can be used. FIG. 3 shows just one example for each code. The size
and arrangements of the nibbles, however, has implications for the
maximum length of uninterrupted strings of ones and zeros in the
resulting codeword, as further explained later. In general, the
nibbles will be similar to one another in length, if not uniform.
This arises from, first, designing the base code so as to provide
an adequate number of codewords. Second, the base code table is
designed so as to be easy to implement. These design criteria will
tend to result in codes that have good run length properties and
result in nibbles that have about the same size. FIG. 3 shows some
examples.
[0026] Thus in one preferred embodiment, in a rate 50/51 code, the
base code has rate 10/11, the number of the unencoded ECC symbols
is m=4, and the length 11 word produced by the base code encoder is
divided into 4 nibbles of lengths 3, 3, 3, and 2. The resulting
codeword consists of four unencoded ECC symbols interleaved with
the nibbles mentioned above. The codeword arrangement is shown in
FIG. 3C. This just a simple example; there are various ways of
mapping the input bits to the codewords within the scope of the
present invention. Further illustrations are given later.
[0027] The described techniques provide simplicity of
implementation along with enviable recording density and error
propagation performance. The codes described also allow use of a
simple precoder 1/1.sym.D to limit the length of the Nyquist
sequence ( . . . 1010101 . . .) where .sym. denotes modulo-2
addition.
[0028] The run length constraint k can be reduced by imposing
additional constraints on the base codeword nibbles. For example,
additional patterns (besides the all ones and zeros patterns) can
be excluded. And, as noted above, the nibble lengths can be
"smoothed" (i.e. variation minimized) to reduce k as well.
[0029] The present invention is quite different from other
modulation coding schemes. For example, in the rate 24/25 code
described in U.S. Pat. No. 5,757,294, one input symbol or byte is
encoded, and the resulting codeword is partitioned and interleaved
among the unencoded bytes. There, the encoded byte (rate 8/9 base
code) was produced by a fixed encoding, i.e. without regard to the
unencoded bytes. By contrast, according to the present invention,
the nibbles first produced by the base code encoding are then
subjected to modifications (x.fwdarw.y.sub.i), the fourth step
above, depending upon the adjacent unencoded byte (the adjacent
bit). Another example of the prior art is the '933 patent, directed
to a rate 16/17 encoding scheme that again depends solely on the
16-bit (2 byte) input word, without regard to neighboring
(unencoded) data. By considering the states of adjacent unencoded
bits, the present invention achieves high code rates and improved
performance.
[0030] Another aspect of the invention is high rate run length
limited code designed in accordance with the foregoing
principles.
[0031] The foregoing and other objects, features and advantages of
the invention will become more readily apparent from the following
detailed description of a preferred embodiment of the invention
which proceeds with reference to the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0032] FIG. 1 is a simplified block diagram illustrating data flow
in a magnetic data storage device, such as a hard disk drive,
employing partial response signaling and maximum likelihood
detection.
[0033] FIG. 2 illustrates a preferred bit sequence for a rate 50/51
codeword according to the present invention.
[0034] FIGS. 3A-G are examples of codeword arrangements for various
high rate RLL codes.
[0035] FIG. 4 is a conceptual diagram illustrating a high rate RLL
encoding path according to the present invention.
[0036] FIG. 5A lists logic equations for implementing the final
encoding step for the 50/51 RLL code.
[0037] FIG. 5B lists logic equations for implementing the first
decoding steps for the rate 50/51 code.
[0038] FIG. 6 sets forth 10/11 subcode final encoding logic
equations.
DETAILED DESCRIPTION OF THE INVENTION
[0039] FIG. 1 sets for a simplified block diagram of a magnetic
recording and playback system such as a hard disk drive. While a
hard disk drive is one application for the present invention, those
skilled in the art will appreciate that the principles of this
invention may be usefully applied to other devices, such as
magnetic tape recording, for example. User data blocks 12 are
received from a source, such as a host computer (not shown). The
blocks are passed through an error correction encoder 14 which
generates and appends ECC remainder bytes to the blocks in
accordance with a preestablished ECC polynomial and scheme. The
error correction encoder 14 may be conventional, and it is not
further described herein. Each data block (now having a
predetermined ECC bytes appended) then passes through a modulation
encoder 16. The modulation encoder 16 is in accordance with
principles of the present invention, and it encodes data to form
codewords as described in greater detail hereinafter. Each codeword
is then passed serially through, for example, a PR4 precoder 18
having a function 1/(1.sym.D.sup.2). The precoded codewords are
then recorded as sequences of magnetic flux transitions within a
data track defined on a storage surface of a magnetic recording
disk 20.
[0040] During playback, flux transitions induced in a read head
element are subjected to analog/digital filter-equalization
processes, quantized as digital samples, and applied to a detector
22 implementing a Viterbi algorithm. The playback codeword is then
demodulated in a modulation decoder 24 also in accordance with
principles of the present invention explained later. Following
decoding by the modulation decoder 24, each playback data block is
passed through an error correction decoder 26 which checks the
playback ECC bytes to locate and correct any correctable error
bursts. Error corrected user data 12 is then returned to a
requester, such as the host computer (not shown). If the error
correction decoder determines that a data block includes
uncorrectable errors, an error flag is returned to the requester,
and a second attempt is made to read the data block from the disk
20.
[0041] A primary goal of the present invention is to devise an
encoding or modulation scheme that has the advantages of
constrained error propagation while increasing recording density.
Importantly, many prior art systems use 8-bit ECC symbols in the
recording channel, and the various RLL encoding schemes summarized
above assume that symbol size. To improve performance in the
future, however, the trend is toward employing 10-bit ECC symbols,
and this presents an opportunity to explore new encoding schemes.
The present invention is directed to leveraging 10-bit ECC symbols
in a magnetic recording channel. Specific examples of embodiments
of the invention include codes with rates 20/21, 30/31, 40/41,
50/51, 80/81, 90/91, 110/11 summarized in Table 1 below.
[0042] The codes of the present invention are characterized by m
unencoded ECC symbols together with a base code with rate n/n+1,
where n is a multiple of the ECC symbols size (e.g. 10 bits). The
length n+1 codeword produced by the base code encoder is divided
into m nibbles, each of which contains at least one transition.
[0043] For example, in a rate 50/51 code, the base code has rate
10/11, the number of unencoded ECC symbols is m=4 (total 40 bits),
and the length 11 word produced by the base code encoder is divided
into 4 nibbles of length 3, 3, 3 and 2. Thus the new codeword
consists of the unencoded ECC symbols interleaved with the base
code nibbles, for a total of 51 bits. One example of the codeword
sequence is shown in FIG. 2. However, the base code nibbles can be
interleaved arbitrarily among the unencoded ECC symbols in any
order, and the codeword can start with either a base code nibble or
an ECC symbol. This feature is further explained later.
[0044] In one embodiment of the present invention, before
interleaving the nibbles, at least one unencoded symbol is
partitioned into smaller portions, such that the nibbles are then
interleaved among said smaller portions of the unencoded symbol.
For example, a method of rate 20/21 encoding a 20-bit input
sequence includes the steps of: receiving a series of two 10-bit
input symbols, selecting one of the series of input symbols for
rate 10/11 encoding, leaving the one non-selected 10-bit input
symbols unencoded, rate 10/11 encoding the selected one of the
input symbols so as to form an 11-bit base code word consisting of
a series of four nibbles, each nibble containing at least one
transition, partitioning the 10-bit unencoded symbol into four
portions, and interleaving the four nibbles between the four
portions of the unencoded 10-bit input symbol, thereby forming a
21-bit codeword. The interleaving step includes: inserting a first
one of the series of nibbles following the first portion of the
unencoded 10-bit input symbol, inserting a second one of the series
of nibbles following the second portion of the unencoded 10-bit
input symbol, inserting a third one of the series of nibbles
following the third portion of the unencoded 10-bit input symbol,
and inserting the fourth one of the series of nibbles following the
fourth portion of the unencoded 10-bit input symbol, wherein the
first, second, third and fourth nibbles are arbitrarily selected
among the four nibbles of the 11-bit subcode word. In one example,
the 10-bit unencoded symbol can be partitioned into four 3-bit,
2-bit, 2-bit and 3-bit portions.
[0045] In another embodiment, the nibbles are interleaved such that
there are two or more unencoded symbols between at least one pair
of nibbles. For example, in a rate 90/91 code, the base code has
rate 10/11, the number of unencoded ECC symbols is m=8 (total 80
bits), and a length 11 word produced by the base code encoder is
divided into 4 nibbles of length 3, 3, 3 and 2. Thus the new
codeword consists of the unencoded ECC symbols interleaved with the
base code nibbles, such that there are 2 unencoded ECC symbols
between encoded nibbles. The total codeword length is 91 bits. One
example of the codeword sequence is shown in FIG. 3G. However, the
base code nibbles can be interleaved arbitrarily among the
unencoded ECC symbols in any order, and the codeword can start with
either a base code nibble or an ECC symbol. This feature is further
explained later.
[0046] Base Code Constraints
[0047] The coding forbids either the all-ones nibbles, or the
all-zeros nibble, depending on the value of the bit immediately
preceding the nibble in question (i.e. the last bit of the
unencoded symbol preceding the nibble). The bit immediately
preceding is zero, the all-zeros nibble is forbidden; and if the
preceding bit is a one, the all-ones nibble is forbidden. This
ensures at least one transition per base code nibble.
Implementation of this constraint is further described below.
[0048] For a rate n/(n+1) code, there must be at least 2.sup.n
codewords available. With the constraint described above, there are
2.sup.L-1 possibilities for each length L nibble, and the number of
possible base code codewords is equal to the product of the number
of possibilities for each nibble. Thus, with the rate 10/11 base
code, the number of possible codewords is
(2.sup.2-1)*(2.sup.3-1).sup.3=3*7.sup.3=1029 which is greater than
2.sup.10=1024. Thus the proposed 10/11 coding, as constrained,
still provides an adequate number of possible codewords.
[0049] Now to generalize, let k.sub.1 be the maximum allowed number
of consecutive zeros or ones; if all nibbles have the same length
L, then k.sub.1=E*n+2L-1, where E is the length of the ECC symbol
(E being 10 for purposes of illustration) and n is the number of
uninterrupted, i.e., contiguous, unencoded symbols. For example, if
all nibbles have length L=3 and if n=2, then k.sub.1=2E+2L-1=25.
The nibbles need not all be of the same length, however. If the
nibble lengths vary, then k.sub.1 is determined by the two
consecutive nibbles whose lengths have the largest sum. Thus,
although the nibbles can be arbitrarily interleaved among unencoded
ECC symbols, as noted above, the selected order of unequal length
nibbles can affect the resulting zero/one run length. Concatenation
of codewords (not subcode) must also be taken into consideration in
determining the maximum number of zeros or ones; i.e. the last
nibble and the first nibble should be considered in determining the
two consecutive nibbles whose lengths have the largest sum. For the
90/91 code, k.sub.1=2*10+(2*3)-1=25. Note that these codes are RLL
(0,k) codes with k=k.sub.1-1.
[0050] Nyquist Sequence Consideration
[0051] The code constraint described above does not per se limit
the length of the Nyquist sequence . . . 010101 . . . . When a
1/(1.sym.D) precoder is used, the maximum length of the Nyquist
sequence is limited. Operation of the precoder is defined as
follows: if the input at time j is a.sub.j, then the output at time
j is b.sub.j=b.sub.j-1.sym.a.sub.j where .sym. denotes modulo-2
addition. With this precoder, k.sub.1 (and thus k) increases by 1
and the maximum length of a Nyquist sequence is k.sub.1. Table 1
shows a summary of some of the code constraints that can be
obtained using the approach described above. Note that these are
merely examples and other can be created from this description.
1TABLE 1 Examples of High Rate RLL Codes Code k (no Base BaseCode
Capacity = Rate precoder) Code log.sub.2(#codewords) 20/21 7 10/11
10.007 30/31 19 10/11 10.931 40/41 16 10/11 10.621 50/51 14 10/11
10.007 80/81 16 20/21 20.020 90/91 24 10/11 10.007 110/111 16 30/31
30.156
[0052] For each of the code constraints listed in Table 1, one
possible codeword arrangement is shown in FIG. 3, wherein FIG. 3A
illustrates a rate 30/31 codeword arrangement; FIG. 3B illustrates
a 40/41 codeword arrangement; FIG. 3C illustrates a rate 50/51
codeword arrangement; FIG. 3D illustrates a rate 80/81 codeword
arrangement; FIG. 3E illustrates a rate 110/111 codeword
arrangement; FIG. 3F illustrates an example rate 20/21 codeword
arrangement (coded nibbles are shaded, uncoded portions are
unshaded); and FIG. 3G illustrates a rate 90/91 codeword
arrangement (coded nibbles are shaded, uncoded portions are
unshaded). As noted, the unencoded ECC symbols can be arranged in
any arbitrary order, as can the subcode nibbles, subject to the
discussion above. In other words, there any many ways of mapping
the input buts to the codewords.
[0053] If capacity is sufficient, the k constraint might be reduced
by imposing additional constraints on the nibbles. This can be done
by forbidding additional patterns (other than the all-zero and
all-one patterns) for one or more of the nibbles. This can also be
done by imposing a dependence on the encoding of consecutive
nibbles. Since there is excess capacity for the constraints given
above, there are many ways of choosing codewords that will be used
in the code. In other words, there are many ways of mapping the
input bits to the codewords.
[0054] Rate 50/51 Code
[0055] To more fully illustrate the principles of the invention,
and how to implement it, we now describe one particular
embodiment--the 50/51 code--in detail. Two illustrative codeword
arrangements for the 50/51 code are shown below in Table 2.
2TABLE 2 Arrangements of 50/51 Codeword 10 3 10 3 10 3 10 2 A
y.sub.0 B y.sub.1 C y.sub.2 E y.sub.3 B z.sub.1 C z.sub.0 A z.sub.3
D z.sub.2
[0056] In Table 2, the first row shows the number of bits (total
51) and the second row illustrates one example of mapping the input
ECC symbols, consisting of five 10-bit ECC symbols A B C D E, to
the codeword. The third row illustrates an alternative mapping ECC
symbol to the codeword. Many other mappings can be used as will be
explained later. The 51-bit codeword is formed as follows.
[0057] One of the ECC symbols, say D for illustration, is encoded
using a rate 10/11 base code to form four nibbles y.sub.0 y.sub.1
y.sub.3 y.sub.4. The unencoded symbols (ABCE) and the base code
nibbles are interleaved, with one of the nibbles between each two
unencoded symbols in a preferred embodiment. The particular mapping
or sequence of this interleaving can vary, as explained later, but
one example is shown in the middle row of Table 2 above. The 10-bit
symbol D thus is absent from the middle row as that data is
reflected in the base code nibbles. Another example of interleaving
base code nibbles and unencoded ECC symbols, still within the scope
of the invention, is shown for illustration in the bottom row of
the table. In this example, ECC symbol E is encoded to form nibbles
z.sub.0 to z.sub.3, z.sub.2 being the two-bit nibble in this case.
Other variations in mapping can be used subject to the constraints
described below.
[0058] In general, it is preferable to divide the base code word
into nibbles of roughly equal length. For example, in the preferred
embodiment, the nibbles are 3,3,3,2 bits long. One alternative
arrangement might be 2,2,2,5 bit nibbles. As noted earlier, it
nibble lengths vary, k.sub.1 is determined by the two consecutive
nibbles whose lengths have the largest sum, including taking into
account the concatenation of codewords. Thus for 2,2,2,5 bit
nibbles, k.sub.1=10+7-1=16. In the 2,2,2,5 bit nibble example, the
number of available codewords =3.sup.3 * (2.sup.5-1)=27*31=837
which is less than the required 2.sup.10 or 1024. In the preferred
embodiment, for nibbles 3,3,3,2 bits long, the maximum run length
is 10+6-1=15.
[0059] Encoder For the Rate 50/51 Code
[0060] The rate 50/51 encoding is done in several steps: First,
receiving a block of input data consisting of a series of five
10-bit ECC symbols; and second, selecting one of the series of
input symbols for rate 10/11 encoding, while leaving the four
non-selected 10-bit input symbols unencoded. Referring now to FIG.
4, the first step involves separating the 10-bit symbol D[0:9] into
four nibbles, D.sub.0=D[0:2], D.sub.1=D[3:5], D.sub.2=D[6:8],
D.sub.3=D[9]. Next, the encoder determines if any of the 3-bit
nibbles are all zero, f.sub.i=!(D.sub.i[0]+D.sub.i[1]+D.sub.i[2]),
for i=0, 1, 2, where "!"is the logical NOT operator and "+"denotes
OR operation. Based on this information and the value D.sub.3
(=D[9]) the encoder calculates the encoded nibbles x.sub.0,
x.sub.1, x.sub.2 (3 bits each) and x.sub.3 (2 bits) using a
selected rate 10/11 base code such as that illustrated in Table 3
below.
[0061] The final encoding step flips (complements) an all-ones
nibble if the preceding bit is a one. Let A[0:9], B[0:9], C[0:9]
and E[0:9] be the encoded symbols. The corresponding final encoding
step is illustrated in FIG. 5A, whereby:
[0062] If x.sub.0=111 and A[9]=1, then y.sub.0=000, else
y.sub.0=x.sub.0
[0063] If x.sub.1=111 and B[9]=1, then y.sub.1=000, else
y.sub.1=x.sub.1
[0064] If x.sub.2=111 and C[9]=1, then y.sub.2=000, else
y.sub.2=x.sub.2
[0065] If x.sub.3=11 and E[9]=1, then y.sub.3=000, else
y.sub.3=x.sub.3
[0066] This process is illustrated in FIG. 4.
3TABLE 3 10/11 Base Code Table f.sub.0 f.sub.1 f.sub.2 D.sub.3
x.sub.0 x.sub.1 x.sub.2 x.sub.3 0 0 0 d/c D.sub.0 D.sub.1 D.sub.2
D.sub.3 1 0 0 1 1 100 D.sub.0 D.sub.1 10 0 0 1 0 101 D.sub.0
D.sub.1 10 0 1 0 1 010 D.sub.0 D.sub.2 10 0 1 0 0 011 D.sub.0
D.sub.2 10 1 0 0 1 111 D.sub.1 D.sub.2 10 1 0 0 0 001 D.sub.1
D.sub.2 10 0 1 1 1 110 D.sub.0 011 10 0 1 1 0 110 D.sub.0 010 10 1
0 1 1 110 D.sub.1 001 10 1 0 1 0 110 D.sub.1 111 10 1 1 0 1 110
D.sub.2 100 10 1 1 0 0 110 D.sub.2 101 10 1 1 1 1 110 001 110 10 1
1 1 0 110 100 110 10
[0067] In the above table "d/c" denotes "don't care".
[0068] Other equivalent rate 10/11 codes can be used. The
corresponding first decoding step is illustrated in FIG. 5B
thus:
[0069] First decoding step:
[0070] If y.sub.0=000, then x.sub.0=111, else x.sub.0=y.sub.0
[0071] If y.sub.1=000, then x.sub.1=111, else x.sub.1=y.sub.1
[0072] If Y.sub.2=000, then x.sub.2=111, else x.sub.2=y.sub.2
[0073] If y.sub.3=00, then x.sub.3=11, else x.sub.3=y.sub.3
[0074] Rate 10/11 Subcode
[0075] Finally, it should be noted that the rate 10/11 base code
described herein can itself be used as an RLL code by not
interleaving any unencoded symbols. To illustrate, one symbol D can
be encoded as shown in Table 3, and then the final encoding step is
changed in accordance with the following logic, as shown in FIG.
6:
[0076] If x.sub.0=111, and y.sub.3[1]=1, then y.sub.0=000, else
y.sub.0=x.sub.0
[0077] If x.sub.1=111, and y.sub.0[2]=1, then y.sub.1=000, else
y.sub.1=x.sub.1
[0078] If x.sub.2=111, and y.sub.1[2]=1, then y.sub.2=000, else
y.sub.2=x.sub.2
[0079] If x.sub.3=11, and y.sub.2[2]=1, then y.sub.3=00, else
y.sub.3=x.sub.3
[0080] where y.sub.3[1] is the last bit of the previous
codeword.
[0081] If no precoder is used, the maximum number of consecutive
zeros is 5. This aspect of the invention provides an RLL (0,k) code
with k=4. When a 1/1.sym.D precoder is used, the maximum number of
consecutive zeros or ones is 6, thus k=5. With this precoder, the
largest Nyquist sequence has a length of 6.
[0082] It will be obvious to those having skill in the art that
many changes may be made to the details of the above-described
embodiment of this invention without departing from the underlying
principles thereof. The scope of the present invention should,
therefore, be determined only by the following claims.
* * * * *