6572 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 58, NO. 10, OCTOBER 2012
High-Rate Maximum Runlength Constrained Coding
Schemes Using Nibble Replacement
Kees A. Schouhamer Immink, Fellow, IEEE
Abstract—In this paper, we will present coding techniques for
the character-constrained channel, where information is con-
veyed using -bit characters (nibbles), and where prescribed
characters are disallowed. Using codes for the character-con-
strained channel, we present simple and systematic constructions
of high-rate binary maximum runlength constrained codes. The
new constructions have the virtue that large lookup tables for en-
coding and decoding are not required. We will compare the error
propagation performance of codes based on the new construction
with that of prior art codes.
Index Terms—Constrained code, recording, runlength limited
WE will present coding techniques for the character-con-
strained channel, where ,, speciﬁc-bit
characters are removed from the repertoire of possible char-
acters. Such channels have been proposed to be able to use
the inadmissible nibble(s) as synchronization markers. Various
code constructions have been proposed to implement the char-
Denissen and Tolhuizen presented a coding method, where
the disallowed nibbles are removed from a codeword com-
prising -bit nibbles using Galois ﬁeld arithmetic .
The code requires one additional (redundant) -bit nibble. The
maximum number of user nibbles that can be accommodated
in this code is . An alternative method was
presented by Silvus and Anderson , where a binary input
word is converted into an -digit integer in a base .
The base- integers, in turn, are uniquely translated into the
set of allowed -bit nibbles using a lookup table.
In this paper, we will show that a character-constrained code
can be used to generate a runlength-limited (RLL) sequence or
systems that impose a constraint on the maximum run of tran-
sitions in the encoded sequence, i.e., MTR-constrained codes
. For example, in case we forbid the “all-zero” nibble, each
-bit nibble generated has at least one “1,” so that the max-
imum (zero) runlength of the cascaded sequence of -bit nib-
bles equals . MTR-constrained codes have at
Manuscript received June 23, 2011; revised October 11, 2011; accepted June
01, 2012. Date of publication June 08, 2012; date of current version September
11, 2012. This work was supported by the grant Theory and Practice of Coding
and Cryptography under Award NRF-CRP2-2007-03.
The author is with Turing Machines Inc., 3016 DK Rotterdam, The Nether-
lands, and also with the Nanyang Technological University, Nanyang Avenue,
Singapore 639798 (e-mail: firstname.lastname@example.org).
Communicated by A. Ashikhmin, Associate Editor for Coding Techniques.
Color versions of one or more of the ﬁgures in this paper are available online
Digital Object Identiﬁer 10.1109/TIT.2012.2204034
most consecutive 1s, and are, therefore, related to conven-
tional -constrained codes that have a maximum run of con-
secutive 0s. MTR and -constrained codes are usually used in
conjunction with and precoding ,re-
Low-rate -constrained or MTR codes of rate less than 16/17
are straightforwardly constructed in practice using a lookup
table. The ﬁrst difﬁculty arising from the construction of a
modulation code with a much higher rate is the considerable
complexity usually required to realize the implementations of
the encoding and decoding processes. The second difﬁculty is
ror in the received word
may result in massive amounts of decoded errors. Various
methods for systematically designing high-rate -constrained
codes have been published in the art; see [3, Chapter 5], for a
survey. Kautz  was probably theﬁrsttopresentasimpleal-
gorithmic method, called enumerative encoding, for translating
user words into -constrained codewords and vice versa. Wijn-
gaarden and Immink presented various codes of rate ,
where subsequences that violate the maximum runlength are
iteratively removed to obtain a -constrained sequence .
A straightforward way of constructing high-rate codes is by
interleaving coded and uncoded symbols, where the coded sym-
bols are obtained from alow-rate -constrained base code. An
advantage of the interleaving scheme is that error propagation
ed” part of the codewords. For example,
constrained words generated by a rate 8/9, , code can be
interleaved with uncoded (user) symbols. A rate 24/25, ,
based on interleaving of the aforementioned rate 8/9, code, has
been presented by FisherandFitspatrickandSonntag.
McEwen et al. ,  and McClellan  presented interleaved
codes of rates including 32/33, 48/49, 56/57, 72/73, 50/51. For
example, in the rate 50/51 code, the base code has rate 10/11,
and the 11-bit word produced by the base code encoder is di-
vided into four nibbles of lengths 3, 3, 3, and 2. The four nib-
bles are interleaved with four 10-bit user data. Then, the new
codeword consists of the four 10-bit symbols interleaved with
the 11-bit base code nibbles, for a total of 51 bits.
The best of the high-rate codes using interleaving have a re-
dundancy of around 1%. In this paper, we will study an alter-
native to the aforementioned coding methods, where the redun-
dancy is around a tenth of a percent. The usage of large lookup
tables is avoided, and average error propagation is less than that
in prior art high-rate enumerative schemes. Basically, a given
-bit codeword is partitioned into -bit nibbles, , ,
that is. The “nibble replacement” algorithm on which
we base the new coding method guarantees that predeﬁned
inadmissible nibbles are excluded from the repertoire of all, ,
possible nibbles. We will apply the new character-constrained
0018-9448/$31.00 © 2012 IEEE
IMMINK: HIGH-RATE MAXIMUM RUNLENGTH CONSTRAINED CODING SCHEMES USING NIBBLE REPLACEMENT 6573
code to the construction of -constrained and MTR-constrained
The structure of this paper is as follows. We start, in
Section II, with a description of a simple base-conversion
method for generating character-constrained sequences. In
Section III, we will describe the “nibble replacement” algo-
rithm, where a single redundant bit is added to a block of
user (source) bits; disallowed nibbles are removed by
the algorithm. In Section IV, we will work out constructions
of -constrained codes so that the performance of the new
code may be compared with that of prior art constructions.
In Section V, we will present results of error propagation
simulations showing the performance difference between the
new codes and prior art codes. Section VI concludes this paper.
II. BASE-CONVERSION METHOD
A simple scheme for generating a series of -bit nibbles,
where the occurrence of -bit nibbles is forbidden, is the
base-conversion method . In the base-conversion method, a
binary -bit input word , , ,
is translated into an -tuple of -ary integers ,
where . The base convertor computes the in-
In the second step, the -ary integers ,,are
translated into the allowed -bit nibbles using a lookup table.
The rate of the aforementioned code is .Let
; then for a rate , block code, the
parameters must satisfy the inequality
The implementation of the encoding and decoding algorithms
using a base-conversion algorithm is quite straightforward, and
will not be discussed. In Section V, we will present results of
computer simulations for assessing the error propagation of the
base-conversion method. In the next section, we will present
an alternative coding method, where disallowed nibbles are re-
cursively removed from the input sequence and replaced by al-
lowed nibbles in such a way that the source word
can be uniquely reconstructed.
III. NIBBLE REPLACEMENT TECHNIQUE
It is assumed that binary user symbols
are translated into a codeword of length bits. The integer
is a multiple of the integer ,thatis, ,where is the
nibble size and the number of -bit nibbles in a codeword.
The aim of the encoding procedure is to guarantee that each -bit
nibble generated is a member of a predeﬁned set of nibbles. The
user bits are partitioned into blocks of bits and
one block of bits. Let denote the binary
user data word, which is partitioned, as said, into nibbles, ,
.Theﬁrst nibble, , called
pivot nibble,contains user bits plus a bit called pivot bit .
The value of the pivot bit will be determined by the encoder as
we will explain in the next section. The remaining -bit
nibbles are deﬁned by , .
A. Encoding Algorithm
Without loss of generality, we assume that the disallowed
nibbles have a decimal representation in the range
. The encoder will remove all nibbles whose decimal rep-
resentation is less than , and will replace them with nibbles
whose decimal representation is larger than or equal to .
The encoder proceeds as follows. Set the pivot bit equal
to “1.” The encoder successively scans the sequence of
nibbles ,. If all nibbles in the address range
are admissible, that is , where the in-
teger function equals the decimal representation of the
binary integer , then we transmit the codeword .
In other words, no changes are effected to the input word ex-
cept prepending the extra “1.” However, in case there is an
inadmissible nibble in the codeword at position ,thatis
, the pivot nibble and the disallowed nibble are
modiﬁed as follows.
1) The encoder replaces the ﬁrst found inadmissible nibble at
address by the pivot nibble .
2) The pivot bit is set to “0” (to signal the receiver that the
word has been modiﬁed).
3) The remaining bits of the pivot nibble will be replaced
by data indicative of the address and the value of the
After the aforementioned changes in the pivot nibble and the
ﬁrst found disallowed nibble have been effected, the encoder
then iterates till the end of the codeword, treating a replaced
nibble as a pivot nibble in the ﬁrst replacement in a similar
manner as done in the ﬁrst pass, and a found disallowed nibble
is replaced by the current pivot nibble and so on, until all disal-
lowed nibbles will be replaced.
Clearly, the information on both the position and the value
of a replaced nibble must be uniquely restored by the decoder.
Said information, that is the position and the value of a nibble
replaced, will be packed into bits of the pivot nibble. There
are admissible pivot nibbles that start with a “0,” while
the number of “position and value” combinations needed equals
. Thus, we conclude that a nibble replacement code can
be constructed if
6574 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 58, NO. 10, OCTOBER 2012
so that the maximum number of nibbles that can be accom-
Two remarks regarding the code redundancy are in order at this
point. First, the new construction is possible if . Then,
the rate of a base (block) code using the allowed nibbles
is . As the rate of the nibble replacement technique is
, we conclude that the new technique reduces the
redundancy by a factor of . Second, see (1), the re-
dundancy of the nibble replacement technique is about a factor
of 2ln (2) higher than that of the base-conversion coding
The next algorithm provides a formal description of the
nibble replacement routine.
Replacement algorithm/encoding routine
Input: The integers , , ,andthebinary -bit
data word .
Deﬁne the -bit nibbles and
Output: List of encoded nibbles ,where ,
Initialize the pivot bit and the integer .
begin , , end,
where , denotes the -bit binary representation of
the nonnegative integer .
At the conclusion of the aforementioned recursive replace-
ment routine, all inadmissible nibbles will be removed, and re-
placed by admissible nibbles. Note that the pivot bit equals “1”
in case the user data are sent unmodiﬁed or it equals “0” in case
one or more nibble replacements have been made. As a result,
the receiver can easily detect that a nibble replacement has been
effected. The modiﬁed nibbles contain either position pointer
information or the data of the pivot nibble. The modiﬁed nibble
with the highest index contains the data of the pivot nibble .
Decoding of the received codeword can be accomplished in a
straightforward way by recursively undoing the replacements.
Two worked coding examples will be helpful.
Example 1: Let ,,and ;lettheuser
data be “11 000 110 111” (the spaces between the groups of
bits are written for clerical convenience). We append “1,” and
obtain “111 000 110 111.” The ﬁrst (and only) occurrence of an
“all-zero” nibble is at position . We replace that nibble
with the content of the ﬁrst nibble, “111,” that is =“111,”
and the ﬁrst nibble is set to = “001.” Then we
obtain, as there are no other “all-zero” nibbles to be replaced,
the codeword “001 111 110 111.”
Example 2: Let ,,and ; let the user data
be “000 0001 0000 1111.” We append “1,” and obtain “1000
0001 0000 1111.” Set .Weﬁnd the ﬁrst inadmissible
nibble at position .Then,weset , =
= “0011,” where the integer function equals the -bit
binary representation of the integer , so that we obtain after
the ﬁrst replacement the intermediate result “0011 1000 0000
1111.” The second inadmissible nibble is found at position
.Wehave = “1000,” ,
= “0100,” so that we obtain as ﬁnal result
“0011 0100 1000 1111.”
Remark: The aforementioned algorithm is written to remove
the lowest ranking inadmissible nibbles. The coding algo-
rithm is, however, more general, and can be employed to remove
any set of inadmissible nibbles. We can do so by a straightfor-
ward translation of the set of allowed nibbles in the afore-
mentioned algorithm into a second predeﬁned set of
nibbles allowed in a different scheme. Alternatively, we may
rewrite the aforementioned algorithm by implementing an ad-
justment of the presetting of the pivot bit and the other pointer
The following decoding routine will retrieve the original data
Input: The integers , , ,andthe encoded -bit
Output: decoded -bit nibbles .
Initialize the integer andcopythe -bit nibbles
repeat ; ; div ;
The aforementioned routine recursively replaces the nibbles
that were replaced by the encoder. The routine halts when the
most signiﬁcant bit (msb) of a replaced nibble equals “1.” By
invoking a straightforward reshufﬂing routine, the original data
word can be retrieved from the decoded -bit
nibbles . The sequence of integers , that is, the sequence of
positions where nibbles are replaced during the various replace-
ment (decoding) steps, is increasing in magnitude as they refer
to higher indices. This is a useful property that can be optionally
exploited to signal the decoding circuitry and/or halt the afore-
mentioned decoding routine in case bit errors have been intro-
duced during transmission or storage of the nibbles .Then
the halting condition becomes until (or ).
Alternatively, a decoder may detect these malformations and re-
port an undecodable codeword or/and may halt the recursion
B. Simpliﬁed Alternative Construction
The simpliﬁed encoder procedure to be presented here is
slightly less complex than the general procedure discussed in
the previous section, though at a cost of a slightly reduced code
rate. We choose (all-zero word is removed) and ,
so that ,andthecoderateis . In similar
vein as in the general procedure, let denote
IMMINK: HIGH-RATE MAXIMUM RUNLENGTH CONSTRAINED CODING SCHEMES USING NIBBLE REPLACEMENT 6575
TAB L E I
ENCODING TABLE FOR A RAT E 8/9 CODE,AND
the binary user data, which are partitioned into nibbles, ,
Input: The integer , and the binary -bit data
word .Deﬁne the -bit nibbles
Output:Listof encoded nibbles ,where ,
Deﬁne the -bit nibble ,where if
or if ,,and
If then transmit the codeword .
If and then transmit the codeword
,where is substituted
for the “all-zero” nibble .
If then the encoder substitutes for the “all-zero”
nibble with the least index. The remaining “all-zero”
nibbles are set to “all-one” (or any other allowed value).
Substituting the “all-zero” words with the “all-one”
word is an arbitrary choice, and depends on the speciﬁc
Example 3: Let , and let the user data be “000 0001
0000 0000.” Append “1,” so that we obtain the intermediate
word “1000 0001 0000 0000.” The nibbles at positions 3 and 4
are inadmissible, so that we obtain .Let
= “0011,” = “1000,” and = “1111.” Transmit “0011
0001 1000 1111.”
Example 4: We have worked out the encoding table; see
Table I, for a rate 8/9, code with and .Forex-
ample, let the user data be “11 000 110.” We ﬁnd ,
and transmit “010 111 110.” The aforementioned code can be
turned into a rate 16/17 code by interleaving with eight uncoded
data bits as presented by Immink and Wijngaarden .
IV. RESULTS AND COMPARISONS WITH PRIOR ART CODES
In this section, we will discuss some practicalities, and we
will show how we can construct -constrained codes using
the nibble replacement technique. We will compare the perfor-
mance of the newly constructed -constrained codes with that
of prior art codes.
A. Codes Using Constrained Sequences
Prior art -constrained codes are usually constructed using
asetof constrained sequences, where a constrained se-
quence is a -constrained sequence that starts with at most and
ends with at most 0s. Clearly, if such sequences can
be cascaded without violating the imposed constraint. Sim-
ilarly, such a set of -constrained sequences can be used in
conjunction with the nibble replacement technique. Let
denote the number of -constrained sequence of length .The
quantity can be straightforwardly computed using gen-
erating functions [3, p. 108], from which we may derive that
is maximized by symmetry in and ,thatisbyset-
ting and .Let denote the number
of -constrained sequences of length ,where
and .Wesimplyﬁnd that the minimum redundancy
of -constrained codes using nibble replacement equals ,
For given , the code designer has the freedom to vary
between 1 and by choosing between and ,
where denotes the minimal for which the condition
We will use generating functions for enumerating the number
of -constrained sequences and we will derive a simple esti-
mate of versus and . To that end, let the generating
function be deﬁned by the formal power series
where is a dummy variable and integer-type coefﬁcients.
The operator denotes the extraction of the coefﬁcient
of in power series , that is, deﬁne
The number of sequences of length ,, can be found
as the coefﬁcient of the series expansion of
(see [3, page 108])
Using (3) and (4), we can straightforwardly compute the redun-
dancy of -constrained codes for a given choice of and .Ex-
amples of such codes will we be presented in the next section.
We will ﬁrst proceed with a computation of an estimate of the
redundancy. For , we may drop the term ,and
We can easily derive that for
6576 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 58, NO. 10, OCTOBER 2012
Over a wide range of parameters and ,even, we can ap-
which is, as we may notice, independent of . The code redun-
dancy can be approximated by
The aforementioned relationship offers a good insight into the
trading of the various design parameters. The code designer may
chooseanibblelength, .Thelargerthe , the smaller the re-
dundancy, but an increase of the nibble size comes at the price
of (exponentially) increasing size of the lookup tables. Equation
(7) shows the trading between maximum runlength and code
redundancy. For example, let us choose some practical values,
say, and ; then we conclude that we can design
a code with a redundancy of around 0.1%. The above shows
that the new coding method offers a ﬂexible way of trading the
nibble length , the maximum runlength , and the overall re-
dundancy. Examples of worked codes will be shown in the next
In the next section, we will demonstrate the design of -con-
B. Application to Code Design
The majority of maximum runlength block codes presented
in the (patent) literature is characterized by a rate ,
where is the codeword length. Virtually all known channel
coding schemes for data storage or telecommunications are
based on 8-bit (byte) ECC symbols, as they are historically
the de facto standard. It has been anticipated that the use of
10-bit ECC symbols and thus new methods are required to
achieve improved density and error propagation performance
in the context of 10-bit ECC symbols. It would be useful if the
new coding system could support a base of 8-bit and/or 10-bit
systems. In this context, for a nibble replacement technique, the
choice is not attractive as then the codeword can support
user bits, which is neither a multiple of 8 nor 10. Also,
a combination of eight codewords that each support
bits does not lead to an attractive system. We, therefore, take a
closer look at systems where .
Let . Then, a very attractive parameter choice is
,since , which leads to a byte-oriented system of
64-byte input data. We simply ﬁnd for , , ,that
,sothat .Wealsoﬁnd , , ,
and , so that we conclude that is the smallest for
which we can construct an -bit nibble replacement
system. Table II shows the selected values of and ,andthe
minimum value of possible with this parameter choice for user
systems with a base-8 and -10.
As a further illustration of the performance of the new tech-
nique, we have worked out a comparison with the interleaving
method. As discussed in Section I, a straightforward way of con-
structing high-rate codes is by interleaving coded and uncoded
TAB L E I I
SELECTED VALUES OF AND ,AND MINIMUM VALUE OF FOR BASE-8
AND -10 USER SYSTEMS
symbols, where the coded symbols are obtained from a low-rate
-constrained base code. Advantages of the interleaving scheme
are 1) reduced complexity and 2) reduced error propagation. Un-
fortunately, these beneﬁts come at a price of higher redundancy
Assume a rate ,base code whose output is inter-
leaved with unconstrained (uncoded) user symbols. We chop
the coded output sequence into subsequences of length ;
then each subsequence will have at least one “1.” We interleave
the -bit subsequences with unconstrained sequences of
length .Thecoderate of the interleaved scheme is
where the interleaved sequence is -constrained. An ad-
vantage of the interleaving scheme is that error propagation is
conﬁned to the “coded” part of the codewords. Fig. 1 shows re-
sults of computations. The diagram shows the redundancy of
interleaved schemes using a base rate 8/9, code. Second,
the diagram shows the redundancy of the nibble replacement
technique, ,usingasetof -constrained sequences. As
a comparison, we have plotted the capacity of the -constrained
D. Worked Example of a Long Code
In this section, we will present some worked examples that
will show the efﬁcacy of the new coding method. First, we will
show the concatenation of a code designed in accordance with
the teachings of the aforementioned rules, and a structured error
correcting low-density parity-check (LDPC) code. In order to
compare our results with prior art methods, we will assume the
basic components of our design including the reverse code con-
catenation to be equal to the ones presented by Han and Ryan
1) Prior Art: In the prior art design, a 4096-bit user word is
translated into a -constrained LDPC codeword. It is assumed
that the rate-50/51 constrained code taken from  is used to
translate the 4096 user bits plus 4 dummy bits (so that the input
word length is a multiple of 50) into a ( ) sequence of
length . The constrained sequence of
length 4182 bits is forwarded to a rate-0.911 LDPC code, which
in turn produces a LDPC codeword.
The 410 parity bits generated by the LDPC code are inserted
(stuffed) uniformly among the 4182 bits of the constrained se-
quence, which relaxes the constraint to .Insum-
mary, in the prior art scheme, are
IMMINK: HIGH-RATE MAXIMUM RUNLENGTH CONSTRAINED CODING SCHEMES USING NIBBLE REPLACEMENT 6577
Fig. 1. Plots of (a) redundancy of nibble replacement method, , (b) interleaving of a ,base code, and (c) channel capacity versus .
needed to convert the input data into a -constrained
2) New Design: From the aforementioned teachings, we take
and ,sothatweﬁnd , ,
and . Four full 1019-bit plus a 19-bit
input blocks are required to accommodate 4095 bits of the input
word. The remaining input bit is added to a 10-bit nibble, re-
laxing the constraint to .Thus,ﬁve extra bits are
needed to convert a 4096-bit input sequence into a -con-
strained sequence. In a similar way as in the prior art , the
5001-bit constrained sequence is forwarded to the LDPC en-
coder of rate-0.911, which produces 401 parity bits. The 401
parity bits are padded between the nibbles (note that
there are 410 10-bit nibbles, which is sufﬁcient to accommodate
the parities). In total, extra bits are required to
convert a 4096-bit input word into a -constrained LDPC
codeword, resulting in a saving of 90 channel bits with respect
to the prior art. Alternatively, for the same overhead we may
construct a -code with , which is padded with
two parity bits per 17-bit nibble, relaxing the constraint to 14.
V. E FFECTS OF ERROR PROPAGATION
In this section, we will report on simulations of experiments
with error propagation. It is assumed that a binary source word
is translated into a binary codeword using a speciﬁed coding
algorithm. Assume that during transmission of asingleerror
is made, i.e., we receive ,,where
denotes Hamming distance between and . Decoding of
will result in the word . In particular, we will investigate the
error propagation,i.e., .
The computation of a major part of the error propagation of
the nibble replacement technique is amenable to analysis. The
probability that of the nibbles are replaced during
encoding equals (binomial distribution)
where and . Note that
, which can be approximated by as
and . So we conclude that 61% of the transmitted
codewords will not be modiﬁed. Assume that nibbles are re-
placed during encoding; then a single decoding error will result,
unless the pivot bit or the modiﬁed nibbles are received in error.
Thus, in case nibbles are replaced, the probability of a single
Averaging, using (9), yields the probability, ,thatthereis
a single decoding error, i.e.,
We conclude from the above that in the nibble replacement tech-
nique the probability of single errors in the decoded codeword
grows to unity with growing codeword length, and that, as a re-
sult, error propagation is diminishing with increasing codeword
length, and we conclude that massive error propagation is essen-
tially absent in the nibble replacement technique. Fig. 2 shows
simulation results of the error propagation in case the pivot bit
is inverted. We observe that the propagation histograms are bell
shaped showing a peak at approximately errors.
For -constrained codes, it is possible to reduce the error
propagation even furthermore by observing that the encoder is
“overactive.” The encoder as described previously always re-
places the disallowed nibbles, while, clearly it only needs to
replace a nibble if that nibble, in conjunction with the previous
and/or next nibble, violates the constraint. That is, if the sum
of the “zero”-runlengths of the tail and nose of two consecutive
is greater than . Computer simulations have shown that, on the
average, in case the encoder replaces nibbles only if a conjunc-
tion of two consecutive nibbles violates the -constraint, single
errors are in the majority, and that for multiple errors are
only made if the pivot bit is received in error.
6578 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 58, NO. 10, OCTOBER 2012
Fig. 2. Histogram of error propagation of the nibble replacement technique for , , , ,and versus the number of decoded bit
errors in case the pivot bit is inverted.
Fig. 3. Histograms (log scales) of error propagation of Kautz-type enumerative coding for the parameters ,,and
A. Error Propagation of Prior Art Schemes
In this section, we will compare the average error propaga-
tion of the nibble replacement method with that of two prior art
schemes, namely Kautz-type enumeration  and base-conver-
The Kautz-type enumeration scheme translates an -bit
source word into a -constrained -bit codeword, .
The Kautz-type enumeration scheme is a base conversion
method where the binary codeword is represented in a posi-
tional numeral system where the weight coefﬁcients do not
equal the usual powers of 2. Let the weight coefﬁcients be
denoted by ,. The encoder translates the binary
-bit input word into an -bit codeword
IMMINK: HIGH-RATE MAXIMUM RUNLENGTH CONSTRAINED CODING SCHEMES USING NIBBLE REPLACEMENT 6579
Fig. 4. Histogram (log scales) of error propagation of base-conversion coding for , and 10, , , .
The weight coefﬁcients are equal to the number of -con-
strained sequences of length , and each coefﬁcient requires
approximately bits for its representation .
The decoder forms the binary representation of the inner
product ,where ,, denote the received
channel bits. In case the th bit is received in error, that is,
it will result in an error burst ranging from position
to . Fig. 3 (log–log scales) displays histograms of the number
of decoded bit errors of a -constrained code using Kautz-type
enumeration ,  with parameters ,
,and in case a
randomly chosen channel bit is inverted. The histograms show
a typical behavior of enumerative-type systems: up to around
the histogram is constant, and rapidly decays for larger
values. The average number of decoded errors increases with
growing codeword length, and equals around .
A similar propagation behavior can be observed in the next
diagram, Fig. 4 (log–log scales), which shows results of com-
puter simulations of error propagation in the base-conversion
coding scheme as described in Section II. Up to around
decoded errors the histogram is constant, and rapidly decays
for larger values. The average error propagation increases with
growing codeword length, and equals around .Bothdia-
grams show very “typical” results, that is, for large , the enu-
merative coding schemes show massive error propagation. The
speciﬁc values of the maximum runlength , etc., do not play a
signiﬁcant role in the error propagation.
We have presented a new scheme, called the nibble replace-
ment technique, for generating sequences of -bit nibbles,
where ,predeﬁned disallowed -bit nibbles are avoided. The
nibble replacement technique at the encoder’s site removes
all disallowed nibbles and replaces them by allowed nibbles.
The position and original value of the replaced nibbles can be
uniquely decoded by the receiver, and the replacements made
can be undone. We have shown that the nibble replacement
technique can be used for generating maximum runlength
-constrained sequences. The new coding method offers a
ﬂexible way of trading the nibble length , the maximum run-
length , and the overall redundancy. We have given examples
of code constructions, where is around 12 to 14, and the
code redundancy is less than half a percent. We have presented
results of error propagation based on computer simulations.
 A.J.M.DenissenandL.M.G.M.Tolhuizen, “Conversion arrange-
ment for a magnetic recording/reproducing apparatus of the D-type,”
U.S. Patent 5 644 582, Jul. 1997.
 G. L. Silvus and K. D. Anderson, “Error c orrection coding utilizing nu-
merical base conversion for modulation coding,” US Patent 6 959 412,
 K.A.S.Immink, Codes for Mass Data Storage Systems, Second ed.
Eindhoven, The Netherlands: Shannon Foundation Publishers, 2004.
 W. H. Kautz, “Fibonacci codes for synchronization control,” IEEE
Trans. Inform. Theory, vol. IT-11, no. 2, pp. 284–292, Apr. 1965.
of constrained codes using sequence replacement techniques,” IEEE J.
Sel. Areas Commun., 2010.
 K. D. Fisher and J. Fitzpatrick, “Rate 24/25 modulation code for PRML
recording Channels,” U.S. Patent 5757 294, May 1998.
 J. L. Sonntag, “Apparatus and method for increasing density of run-
length limited codes without increasing error propagation,” U.S. Patent
5 604 497, Feb. 1997.
 P. McEwen, B. Zafar, and K. Fitzpatrick, “High rate runlength limited
codes for 8-bit ECC symbols,” U.S. Patent 6 201 485, M ar. 2001.
 P. McEwen, K. Fitzpatrick, and B. Zafar, “High rate runlength limited
codes for 10-bit ECC symbols,” U .S. Patent 6 259 384, Jul. 2001.
6580 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 58, NO. 10, OCTOBER 2012
 M. A. McClellan, “Runlength-limited code and method,” U.S. Patent
6 285 302, Sep. 2001.
 K. A. S. Immink and A. J. de Lind van Wijngaarden, “Simple high-rate
constrained codes,” Electron. Lett., vol. 32,no. 20, pp. 1877–1877, Sep.
 T. Lei Poo, P. Chaichanavong, and B. H. Marcus, “Tradeoff functions
for constrained systems with unconstrained positions,” IEEE Trans.
Inform. Theory, vol. 52, no. 4, pp. 1425–1449, Apr. 2006.
 Y. Han and W. E. Ryan, “Concatenating a structured LDPC code and a
constrained code to preserve soft-decoding, structure, and burst correc-
tion,” IEEE Trans. Magn., vol. 42, no. 10, pp. 2558–2560, Oct. 2006.
 K. A. S. Immink and A. J. E. M. Janssen, “Error propagation assess-
ment of enumerative coding schemes,” IEEE Trans. Inform. Theory,
vol. 45, no. 7, pp. 2591–2594, Nov. 1999.
 K. A. S. Immink, “A practical method for approaching the channel
capacity of constrained channels,” IEEE Trans. Inform. Theory, vol.
43, no. 5, pp. 1389–1399, Sep. 1997.
Kees A. Schouhamer Immink (M’81–SM’86–F’90) received the Ph.D. de-
gree from the Eindhoven University of Technology. He was with Philips Re-
search Labs in Eindhoven from 1968 till 1998. After leaving Philips, in 1998,
he founded Turing Machines Inc., which has been successful in applying the
tenets of information theory to digital data storage and transmission. He is, since
1994, an adjunct professor at the Institute for Experimental Mathematics, Essen
Immink designed coding techniques of virtually all consumer-type dig-
ital audio and video recording products, such as Compact Disc, CD-ROM,
CD-Video, Digital Audio Tape recorder, Digital Compact Cassette system,
DCC, Digital Versatile Disc, DVD, Video Disc Recorder, and Blu-ray Disc. He
received widespread recognition for his many contributions to the technologies
of video, audio, and data recording. He received a Knighthood in 2000, a
personal “Emmy” award in 2004, the 1998 IEEE Edison Medal, the 1996 IEEE
Masaru Ibuka Consumer Electronics Award, the 1999 AES Gold Medal, and
the 2004 SMPTE Progress Medal. He received the Golden Jubilee Award for
Technological Innovation by the IEEE Information Theory Society in 1998.
He was named a fellow of the AES, IEE, and SMPTE, and was inducted into
the Consumer Electronics Hall of Fame, elected into the Royal Netherlands
Academy of Sciences and the US National Academy of Engineering. He served
the profession as a President of the Audio Engineering Society Inc., New York,