# A Simple Scheme for Belief Propagation Decoding of  BCH and RS Codes in Multimedia Transmissions

Authors: Marco Baldi; Franco Chiaraluce
Journal: International Journal of Digital Multimedia Broadcasting
 (2008)

---

## Abstract

Classic linear block codes, like Bose-Chaudhuri-Hocquenghem (BCH) and Reed-Solomon (RS) codes, are widely used in multimedia transmissions, but their soft-decision decoding still represents an open issue. Among the several approaches proposed for this purpose, an important role is played by the iterative belief propagation principle, whose application to low-density parity-check (LDPC) codes permits to approach the channel capacity. In this paper, we elaborate a new technique for decoding classic binary and nonbinary codes through the belief propagation algorithm. We focus on RS codes included in the recent CDMA2000 standard, and compare the proposed technique with the adaptive belief propagation approach, that is able to ensure very good performance but with higher complexity. Moreover, we consider the case of long BCH codes included in the DVB-S2 standard, for which we show that the usage of “pure” LDPC codes would provide better performance.


---

## Body

## 1. Introduction

In spite of their age, classic families of linear block
codes, like Bose-Chaudhuri-Hocquenghem (BCH)
and Reed-Solomon (RS) codes, continue to be adopted in many telecommunication
standards. For example, the most recent European standard for satellite digital
video broadcasting (DVB-S2) includes an error correction scheme based on the
concatenation of an outer BCH code followed by an inner low-density parity-check
(LDPC) code [1]. Classic coding schemes are adopted also for broadcast
services implemented over different networks, like packet-switched mobile
networks: the American CDMA2000 standard includes RS codes for the deployment of
high-rate broadcast data services [2].Encoding and decoding of BCH and RS codes can be
accomplished through very simple circuits that implement operations over finite
fields. However, classic decoding techniques rely on hard-decision decoders that
allow the correction of up to⌊
(
d
−
1
)
/
2
⌋ errors, where d is the code minimum distance and ⌊
x
⌋ the greatest integer smaller than or equal to x. On the contrary, the use of channel
measurements in soft-decision decoders can improve significantly the error
correction capability, thus approaching, for high signal-to-noise ratios, the
theoretical limit of correcting d
−
1 errors [3].A good review of soft-decision decoding algorithms
applied to linear block codes, and RS codes in particular, can be found in [4], where a new approach is also proposed, based on the iterative
belief propagation (BP) algorithm. Thanks to the adoption of BP, LDPC codes can
approach the maximum likelihood (ML) performance, while maintaining low
decoding complexity [5].The BP algorithm works on Tanner graphs that are
bipartite graphs with variable nodes and check nodes corresponding to code bits
and parity equations, respectively. An edge connecting the variable nodevi with the check node zj exists if and only if the
parity-check matrix associated with the Tanner graph has a 1 at position (j
,
i).In order to achieve a good performance, BP decoding needs
a parity-check matrix with the following characteristics: (i) sparsity (that is,
in fact, inherent in LDPC codes), (ii) absence of short cycles in the associated
Tanner graph, and (iii) regular or optimized irregular row and column weight
distributions. Such properties are rarely ensured by parity-check matrices of
binary cyclic codes. For example, it can be shown that(
n
,
k
,
d
)-BCH codes, where n
=
2
m
−
1 is the codeword length and k the number of information bits, with
rate greater than or equal to 1/2 and 3
≤
m
≤
8, cannot have Tanner graphs free of length-4 cycles [6].For these reasons, many alternative solutions have been
proposed in the literature for effectively applying BP decoders to generic
linear block codes, binary cyclic codes, or specific classes of cyclic codes [7–15]. All these techniques aim at finding, through
different approaches, a graph representation for the code that is well suited
for BP decoding.In [7, 8], for example, the generalized parity-check matrix (GPCM)
is adopted to reduce the number of short cycles. Such approach has been further
investigated in [9], where an algorithm is presented that achieves a
representation free of length-4 cycles. All techniques based on GPCMs, however,
require the introduction of auxiliary bits that do not correspond to
transmitted bits and, therefore, do not yield information on the channel
status; this fact, in turn, may cause performance degradation. In [10], it is demonstrated that Vardy’s technique can be
used to find sparse parity-check matrices for Reed-Solomon codes.Maybe the best technique for soft-decoding of linear
block codes characterized by dense parity-check matrices is the “adaptive
belief propagation” algorithm [4, 11]. The rationale of this method lies in varying the
parity-check matrix at each iteration, according to the bit reliabilities, such
that the unreliable bits correspond to a sparse submatrix, suitable for the BP
algorithm. Actually, significant performance improvements with respect to hard-decision
decoding and standard BP decoding can be achieved through this method. As a
counterpart, its complexity is rather high, and often unsuitable for
implementation in real-time (or almost-real-time) applications, as those
required in many multimedia transmissions. As described in [4], this method
requires to implement a Gaussian elimination, at each iteration of the decoding
algorithm, that generally yields a great amount of operations. Complexity can be
somehow reduced by combining this approach with the Koetter-Vardy algebraic
soft-decision decoding algorithm [12], but it remains, in any case, rather high.In [13], instead, a different approach is tempted: the author
proposes to use the so-called extended parity-check matrix (EPCM) in order to
obtain a regular Tanner graph associated with the code. The notion of EPCM will
be reminded in Section 2.2; the method is very simple and allows to obtain
matrices more suitable, in principle, for applying BP decoding. Unfortunately,
however, for most codes, the performance achievable through this method is very
poor. Examples will be given in Section 4.Keeping in mind, on one hand, the simplicity of the
EPCM-based techniques and, on the other hand, the astonishing results of
adaptive BP, in this paper, we extend an alternative approach we have recently
presented [14, 15], based on “spread” parity-check matrices. We improve
such approach through the adoption of an adaptive version of the algorithm,
where adaptation, however, is much simpler than in [4].At first, we apply the new method to the case of short
BCH codes where, we show, it is able to achieve very good performance if
compared with EPCM-based techniques. Short codes are often used in multimedia
communications with very rigorous requests on delay and complexity [16]. On the other hand, as mentioned, some important
telecommunication standards adopt nonbinary cyclic codes or very long codes for
matching the length of LDPC codes in concatenated schemes. For this reason, we also
study the applicability of the proposed procedure to RS codes, like those
included in the CDMA2000 standard, and to long BCH codes, like the outer codes in
the DVB-S2 standard.The paper is organized as follows. In Section2 we analyze
the parity-check matrix of the considered codes and present some options for its
modification. In Section 3 we describe the standard decoding algorithm and the
new version working on the spread code. In Section 4 the proposed technique is
assessed through numerical simulations. Finally, Section 5 concludes the paper.


## 2. Parity-Check Matrices of Linear Block Codes

In order to optimize the parity-check matrix for
application of belief propagation decoding algorithms, we consider first binary
cyclic codes that represent particular cases of linear block codes. We obtain
an alternative representation of their parity-check matrix by considering its
cyclic nature. The proposed technique can be applied to BCH codes and can be
extended to other families of codes, as will be shown in the following sections.Given a binary cyclic codeC
(
n
,
k
) with length n,
dimension k, and redundancy r
=
n
−
k, each
codeword c can be associated to a
polynomial c
(
x
) over G
F
2
[
x
]
mod
⁡
(
x
n
+
1
). Moreover, all the shifted versions of c
(
x
),
that is, xic(x), are valid codewords, due to the
cyclic property of the code. Within the set of code polynomials in C,
there is a unique monic polynomial g(x), with minimal degree r
<
n, called the generator polynomial of C. Every codeword polynomial  c
(
x
)
∈
C can be expressed uniquely as c
(
x
)
=
m
(
x
)
g
(
x
)
mod
⁡
(
x
n
+
1
), where m
(
x
)
∈
G
F
2
[
x
]   is a polynomial of degree <k. The generator polynomial g(x)
of C is a factor of (x
n
+
1), and there exists a
parity polynomial with degree k, h(x),
such that g
(
x
)
h
(
x
)
=
x
n
+
1.
Moreover, since g(x) divides c(x), the following
relationship is satisfied: (1)
c
(
x
)
h
(
x
)
≡
0
mod
⁡
(
x
n
+
1
)
∀
c
(
x
)
∈
C
.


### 2.1. Standard Parity-Check Matrix

The standard form of the parity-check matrix (PCM) of a
binary cyclic code is as follows [17]: (2)
H
=
[
h
k
⋯
h
1
h
0
0
⋯
0
0
h
k
⋯
h
1
h
0
0
⋯
⋱
⋱
⋱
⋱
⋱
⋱
⋱
0
⋯
0
h
k
⋯
h
1
h
0
]
, where h
i
,
i
=
0
,
…
,
k, are the binary coefficients of h(x).The form (2) of the parity-check matrix is not suitable
for BP decoding: it contains many length-4 cycles and it has irregular and
nonoptimized column weights.


### 2.2. Extended Parity-Check Matrix

The parity-check matrix (2) is a (nonsingular) submatrix
of the extended parity-check matrix (EPCM) of a cyclic code that has the
following form [13]: (3)
H
E
=
[
h
k
⋯
h
1
h
0
0
⋯
0
0
h
k
⋯
h
1
h
0
0
⋯
⋱
⋱
⋱
⋱
⋱
⋱
⋱
0
⋯
0
h
k
⋯
h
1
h
0
h
0
0
⋯
0
h
k
⋯
h
1
⋱
⋱
⋱
⋱
⋱
⋱
⋱
⋯
h
1
h
0
0
⋯
0
h
k
]
.
H
E is a binary circulant
matrix, where each row is obtained through a cyclic shift of the previous row. The
form (3) of the parity-check matrix corresponds to a regular Tanner graph, so,
at least in principle, it is more suitable for BP decoding.However, such form of the parity-check matrix contains a
number of short cycles even higher than matrix (2). If the number of nonnull
coefficients of h(x) increases (e.g., when long or high-rate
codes are considered, like in the DVB-S2 standard [1]), H
E has an extremely high
number of short cycles that deteriorate performance.We also observe thatH
E has the same density of H, but its Tanner graph contains a
larger number of edges; therefore, the decoding complexity is increased by a
factor of n/r.


### 2.3. Reduced Parity-Check Matrix

In order to find a sparser representation for the code
parity-check matrix, it is possible to adopt a very simple iterative algorithm
that aims at deriving, from the EPCM, a “reduced parity-check matrix” (RPCM),H
R,
whose density is lower than that of H
E. This can be done by
combining linearly (that is, summing up) couples of rows in H
E.
The algorithm relies on the observation that, for a circulant matrix, the
number of overlapping 1’s between its first row and each other row can be
easily computed in terms of the periodic autocorrelation function of the first
row.As an example, Figure1 shows the periodic
autocorrelation function of the first row of H
E (denoted as h
1
in the following) for
the (127, 71)-BCH code. We observe that, for a null shift, the periodic
autocorrelation function takes the (maximum) value of 48 that coincides with
the Hamming weight of h
1,
denoted as w1
in the
following. We also notice that, for a shift value equal to 4, the periodic
autocorrelation function assumes its maximum out-of-phase (that is for a nonnull
shift) value, which is equal to 32. It follows that, by summing up the fifth
row of H
E to its first row, we obtain a new vector, h
2, with Hamming weight w
2
=
2
(
48
−
32
)
=
32.Figure 1
Periodic autocorrelation function of the first row ofH
E for the (127, 71)-BCH code.The new vectorh
2 provides a valid parity-check equation for the original code, since it is
obtained as a linear combination of parity-check vectors. Due to the cyclic
nature of the code, any cyclically shifted version of h
2 is a parity-check vector as well. Therefore, h
2 can be used to obtain a
new parity-check matrix in circulant form, with reduced density with respect to H
E.
In general, given the vector h
i, it is possible to reduce
its density through this procedure if its periodic autocorrelation function has
a maximum value (out of the null shift) greater than half of its Hamming
weight, wi/2. So, we can
apply an iterative density reduction algorithm as follows.(1)
Seti
=
1; initialize h
1 as the first row of H
E and w1 as its Hamming weight.
(2)
Calculate the periodic
autocorrelation function ofh
i and its maximum value a for a shift v
>
0. If a
>
w
i
/
2, go to step (3), otherwise,
stop and output h
i.
(3)
Calculateh
i
+
1
=
h
i
+
h
i
v (where h
i
v represents the cyclically shifted version of h
i by v positions), and its Hamming weight w
i
+
1
=
2
(
w
i
−
a
).
Increment i and go back to step (2).
When the algorithm stops, it outputs a binary vector h
i with density less than or equal to that of h
1. h
i is used to obtain the reduced parity-check matrix in the form of a circulant
matrix having h
i as its first row.We say that the algorithm is successful when the RPCM has
a reduced density with respect to the EPCM, that is, the algorithm has executed
step (3) at least once.


### 2.4. Spread Parity-Check Matrix

After having derived the reduced parity-check matrixH
R,
the effectiveness of BP decoding can be further improved by “spreading” the
code at the decoder by means of a simple s-times
repetition of each codeword (affected by channel noise) of the original code.
Obviously, the “spread code” must have a valid parity-check matrix. For this
purpose, we identify a set of s binary circulant matrices, H
i
S
,
i
=
1
,
…
,
s, that sum into H
R. In formula (4)
H
R
=
∑
i
=
1
s
H
i
S
. If c is an n-bit codeword of the original code, it must be (5)
H
R
⁢
⋅
c
T
=
(
∑
i
=
1
s
H
i
S
)
⋅
c
T
=
0
, where superscript T denotes
vector transposition, and 0 represents the n
×
1
null vector. Let us consider the following “spread parity-check matrix” (SPCM): (6)
H
S
=
[
H
1
S
|
H
2
S
|
⋯
|
H
s
S
]
, and the following spread codeword, obtained by repeating s times the generic codeword c: (7)
c
S
=
[
c
|
c
|
⋯
|
c
]
. It follows from these definitions that (8)
H
S
⋅
(
c
S
)
T
=
[
H
1
S
|
H
2
S
|
⋯
|
H
s
S
]
⋅
[
c
|
c
|
⋯
|
c
]
T
=
[
H
1
S
⋅
c
T
+
H
2
S
⋅
c
T
+
⋯
+
H
s
S
⋅
c
T
]
=
H
R
⋅
c
T
=
0
. Therefore, H
S is a valid parity-check
matrix for the spread code, and it is used by the modified decoding algorithm
to work on a more efficient graph.In order to minimize the density of 1 symbols inH
S,
we choose particular sets {
H
1
S
,
H
2
S
,
…
,
H
s
S
} where, according to (4), the blocks H
i
S have Hamming weights that sum into the Hamming weight of H
R. This way,
the density of 1 symbols in H
S is reduced by a factor s with respect to that of H
R.
We observe that, in this case, the number of edges in the Tanner graph relative
to H
S is the same in the Tanner graph relative to H
R;
therefore, the decoding complexity is practically unchanged.The spreading criterion we adopt corresponds to spreading
theith column of H
R into s columns of H
S (those at positions i
,
i
+
n
,
i
+
2
n
,
…
,
i
+
(
s
−
1
)
n)
whose supports are contained in the support of the original column.In other terms, we spread the 1 symbols in theith column of H
R among its
corresponding s columns in H
S.
If we denote as di the
Hamming weight of the ith column of H
R,
the Hamming weights of the corresponding set of columns in the spread matrix,
at positions i
,
i
+
n
,
i
+
2
n
,
…
,
i
+
(
s
−
1
)
n,
must take values such that ∑
j
=
0
s
−
1
d
i
+
j
n
S
=
d
i,
where d
l
S denotes the Hamming weight of the lth column of H
S. As for the values d
l
S,
they are chosen in a nearly uniform way, that is, d
i
+
j
n
S
≃
d
i
/
s
,
j
=
0
,
…
,
s
−
1. More precisely, we fix d
i
+
j
n
S
=
d
i
/
s when s divides di; otherwise, the d
i
+
j
n
S values may be slightly different in order to
ensure that they sum up to di.It is important to observe that the original code and its
transmission rate are not altered by the spreading: the spread code is used
only inside the decoder, with the aim of decoding better the original code.It should be also noted that the proposed procedure for
spreading the parity-check matrix represents a special case of column splitting,
presented in [18]; the target of column splitting, however, is to
design new finite-geometry LDPC codes, while our aim is to use the spread code
to improve decoding of the original code.


### 2.5. Adaptive Spread Parity-Check Matrix

Inspired by the adaptive belief propagation approach [4], we have also implemented an adaptive version of our
spread parity-check matrix that evolves during decoding iterations on the basis
of the values of the bit reliabilities.Adaptation of the SPCM consists in dynamically changing
the “spreading profile” that is the set of valuesd
i
+
j
n
S
,
j
=
0
,
…
,
(
s
−
1
) in such a way to produce unitary weight
columns in the spread Tanner graph that correspond to the least reliable bits.This only implies rearranging of some edges in the Tanner
graph (i.e., changing the variable nodes these edges are connected to);
thus, it does not require sums of rows and does not alter the total number of 1
symbols in the parity-check matrix that remains sparse. For these reasons, the
adaptation technique we propose has very low complexity, contrary to that used
in adaptive belief propagation that is based on Gaussian elimination.For adapting the SPCM at each iteration, we propose the
following criterion: the 1 symbols in each column of the RPCM corresponding to
ther least reliable bits are spread
in a 1-weight column in each block of the SPCM, except the last block, in which
a column with weight greater than one can appear (due to the fact that it must
contain all the remaining 1 symbols that are present in the RPCM column). In
formulae: (9)
d
i
+
j
n
S
=
min
⁡
(
1
,
d
i
−
∑
m
=
0
j
−
1
d
i
+
m
n
S
)
,
j
=
0
,
…
,
(
s
−
2
)
,
d
i
+
j
n
S
=
d
i
−
∑
m
=
0
s
−
2
d
i
+
m
n
S
,
j
=
s
−
1. For the k
=
n
−
r remaining bits, instead, we adopt again a uniform spreading profile, that is, d
i
+
j
n
S
≃
d
i
/
s
,
j
=
0
,
…
,
(
s
−
1
). The spreading profile is updated at the
end of each decoding iteration and the new SPCM, for the subsequent step, is
obtained from the RPCM.In the following, we will denote as ASPCM the adaptive
version of the SPCM.


### 2.6. Application to Reed-Solomon Codes

Reed-Solomon codes are nonbinary BCH codes, included in
many telecommunication standards and in a huge variety of applications. Each RS
code is defined over the finite fieldG
F
2
q,
with q a positive integer, and has
length N
=
2
q
−
1, dimension K, and redundancy R
=
N
−
K. Its
correction capability is t
=
⌊
(
R
+
1
)
/
2
⌋ [19]. Shortened RS codes are often used to adapt the code
length to the values required in practical applications.Given a primitive polynomial,p(x), with degree q, and one of its roots, α, the latter is
a primitive element of G
F
2
q and, hence, any other element can be expressed
as a power of α: {
0
,
α
0
=
1
,
α
1
=
α
,
α
2
,
…
,
α
2
q
−
2
}. The parity-check matrix of an RS code is an R
×
N matrix defined over G
F
2
q:  (10)
H
˜
=
[
h
˜
0
,
0
h
˜
0
,
1
…
h
˜
0
,
N
−
1
h
˜
1
,
0
h
˜
1
,
1
…
h
˜
1
,
N
−
1
⋮
⋮
⋱
⋮
h
˜
R
−
1
,
0
h
˜
R
−
1
,
1
…
h
˜
R
−
1
,
N
−
1
]
, where each h
˜
i
,
j represents the power α must be raised to for
obtaining its corresponding element.Although defined overG
F
2
q,
RS codes can be seen as binary codes by using their binary expansions that can
be obtained on the basis of the primitive polynomial adopted. In order to
derive a valid parity-check matrix for the binary expansion of an RS code, we can
use the companion matrix, C, of the
primitive polynomial. For a q-degree
polynomial, the companion matrix is a q
×
q matrix whose eigenvalues coincide with the
roots of the polynomial. So, in the case of a monic binary polynomial p
(
x
)
=
p
0
+
p
1
x
+
⋯
+
p
q
−
1
x
q
−
1
+
x
q, the companion matrix
assumes the form (11)
C
=
[
0
0
0
…
p
0
1
0
0
…
p
1
0
1
0
…
p
2
⋮
⋱
⋱
⋱
⋮
0
0
…
1
p
q
−
1
]
. When p(x) is a primitive polynomial, we have p
0
=
1  and C is a full-rank matrix.A valid parity-check matrix for the binary expansion of
an RS code can be obtained as follows:(12)
H
=
[
C
h
˜
0
,
0
C
h
˜
0
,
1
…
C
h
˜
0
,
N
−
1
C
h
˜
1
,
0
C
h
˜
1
,
1
…
C
h
˜
1
,
N
−
1
⋮
⋮
⋱
⋮
C
h
˜
R
−
1
,
0
C
h
˜
R
−
1
,
1
…
C
h
˜
R
−
1
,
N
−
1
]
. Matrix H expressed by (12) is an r
×
n binary matrix (with r
=
q
R and n
=
q
N)
that can be used for decoding the binary expansion of the RS code. We will
denote it as the “binary expansion parity-check matrix” (BXPCM) in the
following.In order to apply the proposed soft-decision decoding
technique also to RS codes, we adopt the BXPCM in place of the EPCM used for
binary cyclic codes. However, due to the lack of cyclic structure in the BXPCM,
the density reduction algorithm must be slightly changed. The BXPCM, in fact, is
not a circulant matrix; so, the number of overlaps between couples of rows
cannot be obtained by means of the periodic autocorrelation function, but must
be calculated by directly resorting to the dot product among couples of rows. A
single row is replaced every time a sparser version of the same row is found,
since it is not possible to rebuild the whole parity-check matrix through
cyclically shifted versions of a row.Finally, the SPCM is derived from the RPCM by “spreading”
its 1 symbols ins blocks, each with
size r
×
n,
in such a way to minimize the number of short cycles in the associated Tanner
graph.


## 2.1. Standard Parity-Check Matrix

The standard form of the parity-check matrix (PCM) of a
binary cyclic code is as follows [17]: (2)
H
=
[
h
k
⋯
h
1
h
0
0
⋯
0
0
h
k
⋯
h
1
h
0
0
⋯
⋱
⋱
⋱
⋱
⋱
⋱
⋱
0
⋯
0
h
k
⋯
h
1
h
0
]
, where h
i
,
i
=
0
,
…
,
k, are the binary coefficients of h(x).The form (2) of the parity-check matrix is not suitable
for BP decoding: it contains many length-4 cycles and it has irregular and
nonoptimized column weights.


## 2.2. Extended Parity-Check Matrix

The parity-check matrix (2) is a (nonsingular) submatrix
of the extended parity-check matrix (EPCM) of a cyclic code that has the
following form [13]: (3)
H
E
=
[
h
k
⋯
h
1
h
0
0
⋯
0
0
h
k
⋯
h
1
h
0
0
⋯
⋱
⋱
⋱
⋱
⋱
⋱
⋱
0
⋯
0
h
k
⋯
h
1
h
0
h
0
0
⋯
0
h
k
⋯
h
1
⋱
⋱
⋱
⋱
⋱
⋱
⋱
⋯
h
1
h
0
0
⋯
0
h
k
]
.
H
E is a binary circulant
matrix, where each row is obtained through a cyclic shift of the previous row. The
form (3) of the parity-check matrix corresponds to a regular Tanner graph, so,
at least in principle, it is more suitable for BP decoding.However, such form of the parity-check matrix contains a
number of short cycles even higher than matrix (2). If the number of nonnull
coefficients of h(x) increases (e.g., when long or high-rate
codes are considered, like in the DVB-S2 standard [1]), H
E has an extremely high
number of short cycles that deteriorate performance.We also observe thatH
E has the same density of H, but its Tanner graph contains a
larger number of edges; therefore, the decoding complexity is increased by a
factor of n/r.


## 2.3. Reduced Parity-Check Matrix

In order to find a sparser representation for the code
parity-check matrix, it is possible to adopt a very simple iterative algorithm
that aims at deriving, from the EPCM, a “reduced parity-check matrix” (RPCM),H
R,
whose density is lower than that of H
E. This can be done by
combining linearly (that is, summing up) couples of rows in H
E.
The algorithm relies on the observation that, for a circulant matrix, the
number of overlapping 1’s between its first row and each other row can be
easily computed in terms of the periodic autocorrelation function of the first
row.As an example, Figure1 shows the periodic
autocorrelation function of the first row of H
E (denoted as h
1
in the following) for
the (127, 71)-BCH code. We observe that, for a null shift, the periodic
autocorrelation function takes the (maximum) value of 48 that coincides with
the Hamming weight of h
1,
denoted as w1
in the
following. We also notice that, for a shift value equal to 4, the periodic
autocorrelation function assumes its maximum out-of-phase (that is for a nonnull
shift) value, which is equal to 32. It follows that, by summing up the fifth
row of H
E to its first row, we obtain a new vector, h
2, with Hamming weight w
2
=
2
(
48
−
32
)
=
32.Figure 1
Periodic autocorrelation function of the first row ofH
E for the (127, 71)-BCH code.The new vectorh
2 provides a valid parity-check equation for the original code, since it is
obtained as a linear combination of parity-check vectors. Due to the cyclic
nature of the code, any cyclically shifted version of h
2 is a parity-check vector as well. Therefore, h
2 can be used to obtain a
new parity-check matrix in circulant form, with reduced density with respect to H
E.
In general, given the vector h
i, it is possible to reduce
its density through this procedure if its periodic autocorrelation function has
a maximum value (out of the null shift) greater than half of its Hamming
weight, wi/2. So, we can
apply an iterative density reduction algorithm as follows.(1)
Seti
=
1; initialize h
1 as the first row of H
E and w1 as its Hamming weight.
(2)
Calculate the periodic
autocorrelation function ofh
i and its maximum value a for a shift v
>
0. If a
>
w
i
/
2, go to step (3), otherwise,
stop and output h
i.
(3)
Calculateh
i
+
1
=
h
i
+
h
i
v (where h
i
v represents the cyclically shifted version of h
i by v positions), and its Hamming weight w
i
+
1
=
2
(
w
i
−
a
).
Increment i and go back to step (2).
When the algorithm stops, it outputs a binary vector h
i with density less than or equal to that of h
1. h
i is used to obtain the reduced parity-check matrix in the form of a circulant
matrix having h
i as its first row.We say that the algorithm is successful when the RPCM has
a reduced density with respect to the EPCM, that is, the algorithm has executed
step (3) at least once.


## 2.4. Spread Parity-Check Matrix

After having derived the reduced parity-check matrixH
R,
the effectiveness of BP decoding can be further improved by “spreading” the
code at the decoder by means of a simple s-times
repetition of each codeword (affected by channel noise) of the original code.
Obviously, the “spread code” must have a valid parity-check matrix. For this
purpose, we identify a set of s binary circulant matrices, H
i
S
,
i
=
1
,
…
,
s, that sum into H
R. In formula (4)
H
R
=
∑
i
=
1
s
H
i
S
. If c is an n-bit codeword of the original code, it must be (5)
H
R
⁢
⋅
c
T
=
(
∑
i
=
1
s
H
i
S
)
⋅
c
T
=
0
, where superscript T denotes
vector transposition, and 0 represents the n
×
1
null vector. Let us consider the following “spread parity-check matrix” (SPCM): (6)
H
S
=
[
H
1
S
|
H
2
S
|
⋯
|
H
s
S
]
, and the following spread codeword, obtained by repeating s times the generic codeword c: (7)
c
S
=
[
c
|
c
|
⋯
|
c
]
. It follows from these definitions that (8)
H
S
⋅
(
c
S
)
T
=
[
H
1
S
|
H
2
S
|
⋯
|
H
s
S
]
⋅
[
c
|
c
|
⋯
|
c
]
T
=
[
H
1
S
⋅
c
T
+
H
2
S
⋅
c
T
+
⋯
+
H
s
S
⋅
c
T
]
=
H
R
⋅
c
T
=
0
. Therefore, H
S is a valid parity-check
matrix for the spread code, and it is used by the modified decoding algorithm
to work on a more efficient graph.In order to minimize the density of 1 symbols inH
S,
we choose particular sets {
H
1
S
,
H
2
S
,
…
,
H
s
S
} where, according to (4), the blocks H
i
S have Hamming weights that sum into the Hamming weight of H
R. This way,
the density of 1 symbols in H
S is reduced by a factor s with respect to that of H
R.
We observe that, in this case, the number of edges in the Tanner graph relative
to H
S is the same in the Tanner graph relative to H
R;
therefore, the decoding complexity is practically unchanged.The spreading criterion we adopt corresponds to spreading
theith column of H
R into s columns of H
S (those at positions i
,
i
+
n
,
i
+
2
n
,
…
,
i
+
(
s
−
1
)
n)
whose supports are contained in the support of the original column.In other terms, we spread the 1 symbols in theith column of H
R among its
corresponding s columns in H
S.
If we denote as di the
Hamming weight of the ith column of H
R,
the Hamming weights of the corresponding set of columns in the spread matrix,
at positions i
,
i
+
n
,
i
+
2
n
,
…
,
i
+
(
s
−
1
)
n,
must take values such that ∑
j
=
0
s
−
1
d
i
+
j
n
S
=
d
i,
where d
l
S denotes the Hamming weight of the lth column of H
S. As for the values d
l
S,
they are chosen in a nearly uniform way, that is, d
i
+
j
n
S
≃
d
i
/
s
,
j
=
0
,
…
,
s
−
1. More precisely, we fix d
i
+
j
n
S
=
d
i
/
s when s divides di; otherwise, the d
i
+
j
n
S values may be slightly different in order to
ensure that they sum up to di.It is important to observe that the original code and its
transmission rate are not altered by the spreading: the spread code is used
only inside the decoder, with the aim of decoding better the original code.It should be also noted that the proposed procedure for
spreading the parity-check matrix represents a special case of column splitting,
presented in [18]; the target of column splitting, however, is to
design new finite-geometry LDPC codes, while our aim is to use the spread code
to improve decoding of the original code.


## 2.5. Adaptive Spread Parity-Check Matrix

Inspired by the adaptive belief propagation approach [4], we have also implemented an adaptive version of our
spread parity-check matrix that evolves during decoding iterations on the basis
of the values of the bit reliabilities.Adaptation of the SPCM consists in dynamically changing
the “spreading profile” that is the set of valuesd
i
+
j
n
S
,
j
=
0
,
…
,
(
s
−
1
) in such a way to produce unitary weight
columns in the spread Tanner graph that correspond to the least reliable bits.This only implies rearranging of some edges in the Tanner
graph (i.e., changing the variable nodes these edges are connected to);
thus, it does not require sums of rows and does not alter the total number of 1
symbols in the parity-check matrix that remains sparse. For these reasons, the
adaptation technique we propose has very low complexity, contrary to that used
in adaptive belief propagation that is based on Gaussian elimination.For adapting the SPCM at each iteration, we propose the
following criterion: the 1 symbols in each column of the RPCM corresponding to
ther least reliable bits are spread
in a 1-weight column in each block of the SPCM, except the last block, in which
a column with weight greater than one can appear (due to the fact that it must
contain all the remaining 1 symbols that are present in the RPCM column). In
formulae: (9)
d
i
+
j
n
S
=
min
⁡
(
1
,
d
i
−
∑
m
=
0
j
−
1
d
i
+
m
n
S
)
,
j
=
0
,
…
,
(
s
−
2
)
,
d
i
+
j
n
S
=
d
i
−
∑
m
=
0
s
−
2
d
i
+
m
n
S
,
j
=
s
−
1. For the k
=
n
−
r remaining bits, instead, we adopt again a uniform spreading profile, that is, d
i
+
j
n
S
≃
d
i
/
s
,
j
=
0
,
…
,
(
s
−
1
). The spreading profile is updated at the
end of each decoding iteration and the new SPCM, for the subsequent step, is
obtained from the RPCM.In the following, we will denote as ASPCM the adaptive
version of the SPCM.


## 2.6. Application to Reed-Solomon Codes

Reed-Solomon codes are nonbinary BCH codes, included in
many telecommunication standards and in a huge variety of applications. Each RS
code is defined over the finite fieldG
F
2
q,
with q a positive integer, and has
length N
=
2
q
−
1, dimension K, and redundancy R
=
N
−
K. Its
correction capability is t
=
⌊
(
R
+
1
)
/
2
⌋ [19]. Shortened RS codes are often used to adapt the code
length to the values required in practical applications.Given a primitive polynomial,p(x), with degree q, and one of its roots, α, the latter is
a primitive element of G
F
2
q and, hence, any other element can be expressed
as a power of α: {
0
,
α
0
=
1
,
α
1
=
α
,
α
2
,
…
,
α
2
q
−
2
}. The parity-check matrix of an RS code is an R
×
N matrix defined over G
F
2
q:  (10)
H
˜
=
[
h
˜
0
,
0
h
˜
0
,
1
…
h
˜
0
,
N
−
1
h
˜
1
,
0
h
˜
1
,
1
…
h
˜
1
,
N
−
1
⋮
⋮
⋱
⋮
h
˜
R
−
1
,
0
h
˜
R
−
1
,
1
…
h
˜
R
−
1
,
N
−
1
]
, where each h
˜
i
,
j represents the power α must be raised to for
obtaining its corresponding element.Although defined overG
F
2
q,
RS codes can be seen as binary codes by using their binary expansions that can
be obtained on the basis of the primitive polynomial adopted. In order to
derive a valid parity-check matrix for the binary expansion of an RS code, we can
use the companion matrix, C, of the
primitive polynomial. For a q-degree
polynomial, the companion matrix is a q
×
q matrix whose eigenvalues coincide with the
roots of the polynomial. So, in the case of a monic binary polynomial p
(
x
)
=
p
0
+
p
1
x
+
⋯
+
p
q
−
1
x
q
−
1
+
x
q, the companion matrix
assumes the form (11)
C
=
[
0
0
0
…
p
0
1
0
0
…
p
1
0
1
0
…
p
2
⋮
⋱
⋱
⋱
⋮
0
0
…
1
p
q
−
1
]
. When p(x) is a primitive polynomial, we have p
0
=
1  and C is a full-rank matrix.A valid parity-check matrix for the binary expansion of
an RS code can be obtained as follows:(12)
H
=
[
C
h
˜
0
,
0
C
h
˜
0
,
1
…
C
h
˜
0
,
N
−
1
C
h
˜
1
,
0
C
h
˜
1
,
1
…
C
h
˜
1
,
N
−
1
⋮
⋮
⋱
⋮
C
h
˜
R
−
1
,
0
C
h
˜
R
−
1
,
1
…
C
h
˜
R
−
1
,
N
−
1
]
. Matrix H expressed by (12) is an r
×
n binary matrix (with r
=
q
R and n
=
q
N)
that can be used for decoding the binary expansion of the RS code. We will
denote it as the “binary expansion parity-check matrix” (BXPCM) in the
following.In order to apply the proposed soft-decision decoding
technique also to RS codes, we adopt the BXPCM in place of the EPCM used for
binary cyclic codes. However, due to the lack of cyclic structure in the BXPCM,
the density reduction algorithm must be slightly changed. The BXPCM, in fact, is
not a circulant matrix; so, the number of overlaps between couples of rows
cannot be obtained by means of the periodic autocorrelation function, but must
be calculated by directly resorting to the dot product among couples of rows. A
single row is replaced every time a sparser version of the same row is found,
since it is not possible to rebuild the whole parity-check matrix through
cyclically shifted versions of a row.Finally, the SPCM is derived from the RPCM by “spreading”
its 1 symbols ins blocks, each with
size r
×
n,
in such a way to minimize the number of short cycles in the associated Tanner
graph.


## 3. The Decoding Algorithm

We consider the sum-product algorithm with log-likelihood
ratios (LLRs-SPA) [20] that is very common for decoding LDPC codes. This
algorithm is well known, and its main steps are reminded next only for the sake
of convenience.Decoding is based on the exchange of messages between
variable and check nodes: information on the reliability of theith received bit ci is sent as a message Γ
i
→
j
(
c
i
) from the variable node vi to the check node zj, then elaborated, and sent
back as a message Λ
j
→
i
(
c
i
) from the check node zj to the variable node vi.The algorithm starts by initializing both sets of
messages, that is,∀
i
,
j for which an edge exists between nodes vi and zj, we set (13)
Γ
i
→
j
(
c
i
)
=
L
(
c
i
)
=
ln
⁡
[
P
(
c
i
=
0
∣
y
i
)
P
(
c
i
=
1
∣
y
i
)
]
,
i
=
1
,
…
,
n
,
Λ
j
→
i
(
c
i
)
=
0
, where L
(
c
i
) is the initial
reliability value based on the channel measurement information, and P
(
c
i
=
x
∣
y
i
)
,
x
∈
{
0
,
1
}, is the probability that the codeword
bit ci at position i is equal to x, given a received signal yi at the channel output.After initialization, the LLR-SPA algorithm starts
iterating. During each iteration, messages sent from the check nodes to the
variable nodes are calculated by means of the following formula:(14)
Λ
j
→
i
(
c
i
)
=
2
tanh
⁡
−
1
{
∏
l
∈
A
(
j
)
∖
i
tanh
⁡
[
1
2
Γ
l
→
j
(
c
l
)
]
}
, where A
(
j
)
∖
i represents the set of variable nodes connected to the check node zj, with the exclusion of
node vi.Messages sent from the variable nodes to the check nodes
are then calculated as follows:(15)
Γ
i
→
j
(
c
i
)
=
L
(
c
i
)
+
∑
l
∈
B
(
i
)
∖
j
Λ
l
→
i
(
c
i
)
, where B
(
i
)
∖
j represents the set of check nodes connected to the variable node vi, with the exclusion of
node zj. In addition, the
following quantity is evaluated: (16)
Γ
i
(
c
i
)
=
L
(
c
i
)
+
∑
l
∈
B
(
i
)
Λ
l
→
i
(
c
i
)
, where B(i) is the whole set of check nodes
connected to vi. Equation
(16) is used to obtain an estimate (c
^) of the received codeword (c) as follows: (17)
c
^
i
=
{
0
if
Γ
i
(
c
i
)
≥
0
,
1
if
Γ
i
(
c
i
)
<
0. The estimated codeword c
^ is then multiplied by the parity-check matrix
associated with the Tanner graph. If the parity-check is successful, the
decoding process stops and gives the estimated codeword as its result.
Otherwise, the algorithm reiterates using updated messages. In this case, a
further verification is made on the number of decoding iterations: when a
maximum number of iterations is reached, the decoder stops the estimation
efforts and outputs the estimated codeword as its result. In this case,
however, decoding is unsuccessful and the error is detected.


### 3.1. Adaptation to the Spread Code

In order to take advantage of spread parity-check
matrices, we adopt a modified version of the standard BP decoding algorithm.The demodulator and demapper block produces, for each
received bit, theL(ci) used to initialize the
decoding algorithm (see (13)). Then, the vector containing the L(ci) values
is repeated s times to form the new
vector of L
(
c
i
S
) values, valid for the spread code. This
is used to initialize the LLR-SPA algorithm that works on the spread
parity-check matrix; the algorithm starts iterating and, at each iteration,
produces updated versions of the extrinsic [
Γ
i
→
j
(
c
i
S
)
] and a posteriori [
Γ
i
(
c
i
S
)
]
messages. While the former are used as inputs for the subsequent iteration (if
needed), the latter represent the decoder output, and serve to obtain an
estimated codeword that is subject to the parity-check test. In addition, this version
of the algorithm produces a posteriori messages also for the original codeword
as follows: (18)
Γ
i
(
c
i
)
=
∑
l
=
0
s
−
1
Γ
i
+
l
n
(
c
i
+
l
n
S
)
,
i
=
1
,
…
,
n
.Two estimated codewords,c
^
S and c
^,
are derived on the basis of the sign of Γ
i
(
c
i
S
) and Γ
i
(
c
i
), respectively, and their corresponding parity-check
tests are executed (based on H
S and H
R). The test
on Γ
i
(
c
i
S
) is passed if and only if the test is
passed by all submatrices, while the test on Γ
i
(
c
i
)
is passed if the test is passed by the sum of the a posteriori messages for all
the replicas of each bit. When both tests are successful, the decoder stops
iterating and outputs c
^ as the estimated codeword; otherwise, decoding
continues until a maximum number of iterations is reached. This double
parity-check test permits to reduce significantly the number of undetected
errors (decoder failures), as we have verified through numerical simulations.


## 3.1. Adaptation to the Spread Code

In order to take advantage of spread parity-check
matrices, we adopt a modified version of the standard BP decoding algorithm.The demodulator and demapper block produces, for each
received bit, theL(ci) used to initialize the
decoding algorithm (see (13)). Then, the vector containing the L(ci) values
is repeated s times to form the new
vector of L
(
c
i
S
) values, valid for the spread code. This
is used to initialize the LLR-SPA algorithm that works on the spread
parity-check matrix; the algorithm starts iterating and, at each iteration,
produces updated versions of the extrinsic [
Γ
i
→
j
(
c
i
S
)
] and a posteriori [
Γ
i
(
c
i
S
)
]
messages. While the former are used as inputs for the subsequent iteration (if
needed), the latter represent the decoder output, and serve to obtain an
estimated codeword that is subject to the parity-check test. In addition, this version
of the algorithm produces a posteriori messages also for the original codeword
as follows: (18)
Γ
i
(
c
i
)
=
∑
l
=
0
s
−
1
Γ
i
+
l
n
(
c
i
+
l
n
S
)
,
i
=
1
,
…
,
n
.Two estimated codewords,c
^
S and c
^,
are derived on the basis of the sign of Γ
i
(
c
i
S
) and Γ
i
(
c
i
), respectively, and their corresponding parity-check
tests are executed (based on H
S and H
R). The test
on Γ
i
(
c
i
S
) is passed if and only if the test is
passed by all submatrices, while the test on Γ
i
(
c
i
)
is passed if the test is passed by the sum of the a posteriori messages for all
the replicas of each bit. When both tests are successful, the decoder stops
iterating and outputs c
^ as the estimated codeword; otherwise, decoding
continues until a maximum number of iterations is reached. This double
parity-check test permits to reduce significantly the number of undetected
errors (decoder failures), as we have verified through numerical simulations.


## 4. Numerical Simulations

In order to assess the benefits of the proposed approach,
we have simulated transmission over the additive white Gaussian noise (AWGN)
channel, in conjunction with binary phase shift keying (BPSK) modulation for
different BCH and RS codes. In all simulations, we have used a maximum number
of iterations equal to 100.


### 4.1. Short BCH Codes

We consider two examples of short BCH codes with
different length and dimension, namely, (n, k)  =  (63, 57) and (n, k)  =  (127, 71).For the first code, the density reduction algorithm is unsuccessful.
So we apply the spreading technique directly to the extended parity-check
matrix. For the (127, 71)-BCH code, instead, the density reduction algorithm is
successful and, starting fromh
1 with Hamming weight 48, a vector h
2 is obtained
with Hamming weight 32, thus reducing by 1/3 the parity-check matrix density.
Hence, spreading has been applied to the reduced parity-check matrix. The main
features of the considered BCH codes are summarized in Table 1. The number of
length-4 cycles has been calculated exhaustively by considering the overlapping
ones between each couple of rows (or columns).Table 1
Characteristics of the (63, 57) and (127, 71) BCH codes.
BCH code
Rate
PCM
EPCM
RPCM
SPCM
# 4-cycles
1 Symbols
# 4-cycles
1 Symbols
# 4-cycles
1 Symbols
# 4-cycles
1 Symbols
(63, 57)
0.9
1800
192
234360
2016
234360
2016
7749
2016
(127, 71)
0.56
378314
2688
1356614
6096
240284
4064
4699
4064We notice that, for the (63, 57)-BCH code, the spread
parity-check matrix has a number of length-4 cycles higher than that of the
classic parity-check matrix. This is because such code is characterized by a
very smallr, and this reflects in a
matrix (2) with the smallest number of length-4 cycles. Figures 2 and 3 show the
bit error rate (BER) and frame error rate (FER) as a function of the
signal-to-noise ratio Eb/N0. The curves have been obtained,
through numerical simulations, for the considered codes when decoding with the
classic parity-check matrix (PCM), the reduced parity-check matrix (RPCM, in
Figure 3 only, for the reasons explained above), the extended parity-check
matrix (EPCM), and the spread parity-check matrix (SPCM). The figures report
also curves for the union bound (UB) [21] that can be used as a reference for the error rate under
ideal (maximum likelihood) decoding.Simulated BER (a) and FER (b) for the (63, 57)-BCH code.
(a)
(b)Simulated BER (a) and FER (b) for the (127, 71)-BCH code.
(a)
(b)We observe from Figure2 that, for the (63, 57)-BCH code,
the new technique outperforms those based on the classic PCM and EPCM, with a
gain of more than 1 dB over the PCM and more than 1.5 dB over the EPCM.
Furthermore, the curves obtained through the SPCM approach are practically
overlaid to the union bound, and the SPCM decoder achieves almost ideal
performance.In the case of the (127, 71)-BCH code, we have reported
also the performance achieved by the ASPCM that offers the best result, at
least in the region of explored BER and FER values, with a gain of more than 2
dB over the PCM-based algorithm and more than 3 dB over the EPCM approach.However, for the (127, 71)-BCH code, the curves are
rather distant from the union bound, showing that further coding gain could be
achieved, in principle. Actually, techniques based on the adaptive belief
propagation can show better performance for the same code parameters. Figure3
reports also the BER and FER curves obtained by using the software made
publicly available in [22], showing that the adaptive belief propagation can
achieve about 2 dB of further gain, though still not reaching the union bound.
Moreover, as a drawback, such approach exhibits a much higher complexity than
the one proposed here.


### 4.2. CDMA2000 Reed-Solomon Codes

As an example of application of the proposed technique to
RS codes, we have considered the codes included by the “third-generation
partnership project 2” (3GPP2) in the CDMA2000 specification for broadcast services in high-rate
packet data systems [2].The CDMA2000 standard adopts systematic RS codes defined
over GF256
with the
following choice of the parameters (
N
,
K
): (16, 12), (16, 13), (16, 14),
(32, 24), (32, 26), and (32, 28).We have focused on the (16, 12) and (32, 28) RS codes
that are characterized by the following parity-check matrices over GF256 [2]: (19)
H
˜
(
16
,
12
)
=
[
40
8
158
209
76
160
125
70
137
254
160
201
0
−
∞
−
∞
−
∞
138
196
4
123
226
142
19
87
169
192
57
246
−
∞
0
−
∞
−
∞
141
97
250
27
198
95
59
39
244
27
53
201
−
∞
−
∞
0
−
∞
8
158
209
76
160
125
70
137
254
160
201
0
−
∞
−
∞
−
∞
0
]
H
˜
(
32
,
28
)
=
[
H
˜
(
32
,
28
)
a
H
˜
(
32
,
28
)
b
] with (20)
H
˜
(
32
,
28
)
a
=
[
207
229
141
32
224
248
120
228
113
88
74
178
78
5
182
212
34
210
50
160
37
5
229
73
215
208
37
76
225
218
188
157
22
95
89
127
223
131
44
240
118
113
215
97
181
168
204
221
229
141
32
224
248
120
228
113
88
74
178
78
5
182
212
40
]
,
H
˜
(
32
,
28
)
b
=
[
40
8
158
209
76
160
125
70
137
254
160
201
0
−
∞
−
∞
−
∞
138
196
4
123
226
142
19
87
169
192
57
246
−
∞
0
−
∞
−
∞
141
97
250
27
198
95
59
39
244
27
53
201
−
∞
−
∞
0
−
∞
8
158
209
76
160
125
70
137
254
160
201
0
−
∞
−
∞
−
∞
0
]
,
where “−
∞”
represents the null element (α
−
∞
=
0).From (19), the BXPCMs for the (16, 12) and (32, 28) RS
codes can be easily obtained, as explained in Section 2.6, in the form of a 32
×
128 and a 32
×
256 binary matrix, respectively. The density
reduction algorithm has been applied to the BXPCMs, thus obtaining two RPCMs
with a reduced number of symbols 1. Finally, the RPCMs have been used as the
starting point for the adaptive spreading algorithm that has been applied with s
=
2. The features of the parity-check
matrices for the considered RS codes are summarized in Table 2.Table 2
Characteristics of the parity-check matrices for the (16,
12) and (32, 28) RS Codes over GF256.
RS code
Matrix
Rows
Columns
1 Symbols
# 4-cycles
(16, 12)
BXPCM
32
128
1621
126756
RPCM
32
128
1519
82360
(32, 28)
BXPCM
32
256
3700
854034
RPCM
32
256
3302
502161We observe that the density reduction algorithm is able
to produce, in the RPCMs, a density reduction of about 6% for the (16, 12)-RS
code and 11% for the (32, 28)-RS code, with respect to the corresponding BXPCMs.
This reflects on a lower number of short cycles in the associated Tanner graphs
and in a more favorable performance, as shown in Figures4 and 5. The ASPCM has
a further reduced density of 1 symbols and, jointly with the spread version of
the decoding algorithm, it is able to ensure the best performance. In
particular, the BER curve in Figure 4(a), referred to the (16, 12)-RS code,
exhibits a coding gain of more than 1 dB due to the adoption of the proposed
approach, based on spread matrices, in comparison with the more conventional BXPCM
approach. Instead, the coding gain for the (32, 28)-RS code is less than 1 dB
(see Figure 5(a)).Simulated BER (a) and FER (b) for the (16, 12)-RS code over GF256.
(a)
(b)Simulated BER (a) and FER (b) for the (32, 28)-RS code over GF256.
(a)
(b)In comparison with the algorithm based on adaptive belief
propagation, the approach based on the ASPCM exhibits, for the considered
codes, a loss of more than 2 dB. This is not surprising, as the method proposed
in [4] is significantly more involved than the approaches we
have proposed.


### 4.3. DVB-S2 BCH Codes

The second revision of the European standard for
satellite digital video broadcasting (DVB-S2) adopts a forward error-correction
(FEC) scheme based on the concatenation of BCH and LDPC codes [1]. The data stream is divided into kbch-bit frames that are used as inputs for a systematic
BCH encoder. This produces nbch-bit
frames by appending r
b
c
h
=
n
b
c
h
−
k
b
c
h
redundancy bits to the input frame. According to the standard, rbch
can assume the following
values: 128, 160, and 192 for normal frames, 168 for short frames. The output
of the outer BCH encoder is given as input to an inner systematic LDPC encoder
that produces nldpc-bit
frames by appending further r
l
d
p
c
=
n
l
d
p
c
−
k
l
d
p
c
=
n
l
d
p
c
−
n
b
c
h redundancy bits to each BCH-encoded frame.The interest for applying an iterative soft-decision
decoding to the BCH code, too, is in the possibility of uniforming the decoding
procedure to that of the inner LDPC code, with expected hardware and software
advantages. The result should be a significant reduction of the complexity that,
even adopting hard decoding, is a critical issue for BCH codes of so large
sizes. In addition, a performance improvement should also be expected, although
we show that it is not simple to achieve it with the method proposed in the
previous sections.We consider, in our simulations, the short frame format
that is characterized byn
l
d
p
c
=
16200, but the proposed techniques can also be applied to normal frames, with n
l
d
p
c
=
64800. The
standard FEC parameters for short frames, together with encoding details, are
reported in [1] and are omitted here for the sake of brevity.BCH codes used for short DVB-S2 frames are able to
correctt
=
12 errors and have code
length ranging between 3240 and 14400 bits. Actually, the standard adopts
shortened BCH codes, all defined by the same generator polynomial that can be
obtained as g
(
x
)
=
∏
i
=
1
12
g
i
(
x
);
the structure of g
i
(
x
) is also given in [1]. Each factor g
i
(
x
)
,
i
=
1
,
…
,
12 has degree r
=
14 and can be
seen as the generator polynomial of a Hamming code with length n
=
2
14
−
1
=
16383 and redundancy r
=
14. The corresponding parity-check polynomial can therefore be obtained
as h
i
(
x
)
=
(
1
+
x
n
)
/
g
i
(
x
)
,
i
=
1
,
…
,
12.Each BCH code can be seen as a shortened version of a
“mother” BCH code with lengthn
*
=
16
n
=
262128, redundancy r
*
=
12
r
=
168, and dimension k
*
=
261960. In fact, it can be easily shown that g(x) divides 1
+
x
n
* and h(x) can be derived as follows: (21)
h
(
x
)
=
1
+
x
n
*
g
(
x
)
=
1
+
x
16
n
g
(
x
)
=
(
1
+
x
n
)
16
g
(
x
)
=
(
1
+
x
n
)
16
∏
i
=
1
12
g
i
(
x
)
=
∏
i
=
1
12
h
i
(
x
)
⋅
(
1
+
x
n
)
4
. Once having obtained h(x), the first row of H
E
,
h
1, becomes available; it
has Hamming weight w
1
=
128640.
Starting from this dense vector, it is possible to execute 7 iterations of the
reduction algorithm described in Section 2.3, thus obtaining a new vector, h
8, with Hamming weight w
8
=
125568. It must be said,
however, that in the present case that considers a long code with very high
rate, the density reduction algorithm is not able to produce immediately an
excellent result: the reduced parity-check matrix has a density that is only
2.4% smaller than that of the extended parity-check matrix.For each iteration of the algorithm, the shiftv has taken the following values: 213318,
215694, 106013, 171879, 40909, 85749, 761. When multiple choices for v were possible (due to the fact that the
autocorrelation function can assume its maximum out-of-phase value for more
than one shift v), a random selection
criterion has been adopted, and the experiment has been repeated several times
in order to find the best sequence among the selected ones.Vectorh
8 has been used as the first row of the RPCM for the cyclic mother code. A valid
parity-check matrix for each shortened code derived from the mother code can be
obtained by selecting the first r
b
c
h
=
168 rows and the first n
b
c
h columns of the RPCM so found. The shortened RPCM is then used as the starting
point for the spreading algorithm that produces the SPCM.We have considered the case ofn
b
c
h
=
3240 and applied the spreading algorithm with s
=
20. The results of numerical
simulations based on the spreading technique are shown in Figure 6. Actually,
performance is not particularly good: even by adopting the ASPCM, that outperforms
the SPCM, the simulated curves are worse than those referred to a hard-decision
decoder able to correct t
=
12
errors. However, we guess that the unsatisfactory result is due to the
difficulty in reducing the weight of the parity-check matrix when starting from
a so dense parity-check matrix. Also in this case, the adoption of adaptive
belief propagation permits to achieve better performance (with more than 2 dB
of further gain) at the cost of increased complexity.Simulated BER (a) and FER (b) for the DVB-S2 BCH code withn
b
c
h
=
3240. The performance of an LDPC code with the same length and rate is also shown for comparison.
(a)
(b)In Figure6, we also show the performance of an LDPC code
having the same parameters of the BCH code. It has been designed through the
so-called LCO technique [23], that permits to avoid the presence of length-4 cycles
but, except for this, the parity-check matrix has not been further optimized.
So, we see that wide margins for improving performance should exist, on
condition to find more effective representations of the parity-check matrix
than those considered so far. Work is in progress in such a direction.


## 4.1. Short BCH Codes

We consider two examples of short BCH codes with
different length and dimension, namely, (n, k)  =  (63, 57) and (n, k)  =  (127, 71).For the first code, the density reduction algorithm is unsuccessful.
So we apply the spreading technique directly to the extended parity-check
matrix. For the (127, 71)-BCH code, instead, the density reduction algorithm is
successful and, starting fromh
1 with Hamming weight 48, a vector h
2 is obtained
with Hamming weight 32, thus reducing by 1/3 the parity-check matrix density.
Hence, spreading has been applied to the reduced parity-check matrix. The main
features of the considered BCH codes are summarized in Table 1. The number of
length-4 cycles has been calculated exhaustively by considering the overlapping
ones between each couple of rows (or columns).Table 1
Characteristics of the (63, 57) and (127, 71) BCH codes.
BCH code
Rate
PCM
EPCM
RPCM
SPCM
# 4-cycles
1 Symbols
# 4-cycles
1 Symbols
# 4-cycles
1 Symbols
# 4-cycles
1 Symbols
(63, 57)
0.9
1800
192
234360
2016
234360
2016
7749
2016
(127, 71)
0.56
378314
2688
1356614
6096
240284
4064
4699
4064We notice that, for the (63, 57)-BCH code, the spread
parity-check matrix has a number of length-4 cycles higher than that of the
classic parity-check matrix. This is because such code is characterized by a
very smallr, and this reflects in a
matrix (2) with the smallest number of length-4 cycles. Figures 2 and 3 show the
bit error rate (BER) and frame error rate (FER) as a function of the
signal-to-noise ratio Eb/N0. The curves have been obtained,
through numerical simulations, for the considered codes when decoding with the
classic parity-check matrix (PCM), the reduced parity-check matrix (RPCM, in
Figure 3 only, for the reasons explained above), the extended parity-check
matrix (EPCM), and the spread parity-check matrix (SPCM). The figures report
also curves for the union bound (UB) [21] that can be used as a reference for the error rate under
ideal (maximum likelihood) decoding.Simulated BER (a) and FER (b) for the (63, 57)-BCH code.
(a)
(b)Simulated BER (a) and FER (b) for the (127, 71)-BCH code.
(a)
(b)We observe from Figure2 that, for the (63, 57)-BCH code,
the new technique outperforms those based on the classic PCM and EPCM, with a
gain of more than 1 dB over the PCM and more than 1.5 dB over the EPCM.
Furthermore, the curves obtained through the SPCM approach are practically
overlaid to the union bound, and the SPCM decoder achieves almost ideal
performance.In the case of the (127, 71)-BCH code, we have reported
also the performance achieved by the ASPCM that offers the best result, at
least in the region of explored BER and FER values, with a gain of more than 2
dB over the PCM-based algorithm and more than 3 dB over the EPCM approach.However, for the (127, 71)-BCH code, the curves are
rather distant from the union bound, showing that further coding gain could be
achieved, in principle. Actually, techniques based on the adaptive belief
propagation can show better performance for the same code parameters. Figure3
reports also the BER and FER curves obtained by using the software made
publicly available in [22], showing that the adaptive belief propagation can
achieve about 2 dB of further gain, though still not reaching the union bound.
Moreover, as a drawback, such approach exhibits a much higher complexity than
the one proposed here.


## 4.2. CDMA2000 Reed-Solomon Codes

As an example of application of the proposed technique to
RS codes, we have considered the codes included by the “third-generation
partnership project 2” (3GPP2) in the CDMA2000 specification for broadcast services in high-rate
packet data systems [2].The CDMA2000 standard adopts systematic RS codes defined
over GF256
with the
following choice of the parameters (
N
,
K
): (16, 12), (16, 13), (16, 14),
(32, 24), (32, 26), and (32, 28).We have focused on the (16, 12) and (32, 28) RS codes
that are characterized by the following parity-check matrices over GF256 [2]: (19)
H
˜
(
16
,
12
)
=
[
40
8
158
209
76
160
125
70
137
254
160
201
0
−
∞
−
∞
−
∞
138
196
4
123
226
142
19
87
169
192
57
246
−
∞
0
−
∞
−
∞
141
97
250
27
198
95
59
39
244
27
53
201
−
∞
−
∞
0
−
∞
8
158
209
76
160
125
70
137
254
160
201
0
−
∞
−
∞
−
∞
0
]
H
˜
(
32
,
28
)
=
[
H
˜
(
32
,
28
)
a
H
˜
(
32
,
28
)
b
] with (20)
H
˜
(
32
,
28
)
a
=
[
207
229
141
32
224
248
120
228
113
88
74
178
78
5
182
212
34
210
50
160
37
5
229
73
215
208
37
76
225
218
188
157
22
95
89
127
223
131
44
240
118
113
215
97
181
168
204
221
229
141
32
224
248
120
228
113
88
74
178
78
5
182
212
40
]
,
H
˜
(
32
,
28
)
b
=
[
40
8
158
209
76
160
125
70
137
254
160
201
0
−
∞
−
∞
−
∞
138
196
4
123
226
142
19
87
169
192
57
246
−
∞
0
−
∞
−
∞
141
97
250
27
198
95
59
39
244
27
53
201
−
∞
−
∞
0
−
∞
8
158
209
76
160
125
70
137
254
160
201
0
−
∞
−
∞
−
∞
0
]
,
where “−
∞”
represents the null element (α
−
∞
=
0).From (19), the BXPCMs for the (16, 12) and (32, 28) RS
codes can be easily obtained, as explained in Section 2.6, in the form of a 32
×
128 and a 32
×
256 binary matrix, respectively. The density
reduction algorithm has been applied to the BXPCMs, thus obtaining two RPCMs
with a reduced number of symbols 1. Finally, the RPCMs have been used as the
starting point for the adaptive spreading algorithm that has been applied with s
=
2. The features of the parity-check
matrices for the considered RS codes are summarized in Table 2.Table 2
Characteristics of the parity-check matrices for the (16,
12) and (32, 28) RS Codes over GF256.
RS code
Matrix
Rows
Columns
1 Symbols
# 4-cycles
(16, 12)
BXPCM
32
128
1621
126756
RPCM
32
128
1519
82360
(32, 28)
BXPCM
32
256
3700
854034
RPCM
32
256
3302
502161We observe that the density reduction algorithm is able
to produce, in the RPCMs, a density reduction of about 6% for the (16, 12)-RS
code and 11% for the (32, 28)-RS code, with respect to the corresponding BXPCMs.
This reflects on a lower number of short cycles in the associated Tanner graphs
and in a more favorable performance, as shown in Figures4 and 5. The ASPCM has
a further reduced density of 1 symbols and, jointly with the spread version of
the decoding algorithm, it is able to ensure the best performance. In
particular, the BER curve in Figure 4(a), referred to the (16, 12)-RS code,
exhibits a coding gain of more than 1 dB due to the adoption of the proposed
approach, based on spread matrices, in comparison with the more conventional BXPCM
approach. Instead, the coding gain for the (32, 28)-RS code is less than 1 dB
(see Figure 5(a)).Simulated BER (a) and FER (b) for the (16, 12)-RS code over GF256.
(a)
(b)Simulated BER (a) and FER (b) for the (32, 28)-RS code over GF256.
(a)
(b)In comparison with the algorithm based on adaptive belief
propagation, the approach based on the ASPCM exhibits, for the considered
codes, a loss of more than 2 dB. This is not surprising, as the method proposed
in [4] is significantly more involved than the approaches we
have proposed.


## 4.3. DVB-S2 BCH Codes

The second revision of the European standard for
satellite digital video broadcasting (DVB-S2) adopts a forward error-correction
(FEC) scheme based on the concatenation of BCH and LDPC codes [1]. The data stream is divided into kbch-bit frames that are used as inputs for a systematic
BCH encoder. This produces nbch-bit
frames by appending r
b
c
h
=
n
b
c
h
−
k
b
c
h
redundancy bits to the input frame. According to the standard, rbch
can assume the following
values: 128, 160, and 192 for normal frames, 168 for short frames. The output
of the outer BCH encoder is given as input to an inner systematic LDPC encoder
that produces nldpc-bit
frames by appending further r
l
d
p
c
=
n
l
d
p
c
−
k
l
d
p
c
=
n
l
d
p
c
−
n
b
c
h redundancy bits to each BCH-encoded frame.The interest for applying an iterative soft-decision
decoding to the BCH code, too, is in the possibility of uniforming the decoding
procedure to that of the inner LDPC code, with expected hardware and software
advantages. The result should be a significant reduction of the complexity that,
even adopting hard decoding, is a critical issue for BCH codes of so large
sizes. In addition, a performance improvement should also be expected, although
we show that it is not simple to achieve it with the method proposed in the
previous sections.We consider, in our simulations, the short frame format
that is characterized byn
l
d
p
c
=
16200, but the proposed techniques can also be applied to normal frames, with n
l
d
p
c
=
64800. The
standard FEC parameters for short frames, together with encoding details, are
reported in [1] and are omitted here for the sake of brevity.BCH codes used for short DVB-S2 frames are able to
correctt
=
12 errors and have code
length ranging between 3240 and 14400 bits. Actually, the standard adopts
shortened BCH codes, all defined by the same generator polynomial that can be
obtained as g
(
x
)
=
∏
i
=
1
12
g
i
(
x
);
the structure of g
i
(
x
) is also given in [1]. Each factor g
i
(
x
)
,
i
=
1
,
…
,
12 has degree r
=
14 and can be
seen as the generator polynomial of a Hamming code with length n
=
2
14
−
1
=
16383 and redundancy r
=
14. The corresponding parity-check polynomial can therefore be obtained
as h
i
(
x
)
=
(
1
+
x
n
)
/
g
i
(
x
)
,
i
=
1
,
…
,
12.Each BCH code can be seen as a shortened version of a
“mother” BCH code with lengthn
*
=
16
n
=
262128, redundancy r
*
=
12
r
=
168, and dimension k
*
=
261960. In fact, it can be easily shown that g(x) divides 1
+
x
n
* and h(x) can be derived as follows: (21)
h
(
x
)
=
1
+
x
n
*
g
(
x
)
=
1
+
x
16
n
g
(
x
)
=
(
1
+
x
n
)
16
g
(
x
)
=
(
1
+
x
n
)
16
∏
i
=
1
12
g
i
(
x
)
=
∏
i
=
1
12
h
i
(
x
)
⋅
(
1
+
x
n
)
4
. Once having obtained h(x), the first row of H
E
,
h
1, becomes available; it
has Hamming weight w
1
=
128640.
Starting from this dense vector, it is possible to execute 7 iterations of the
reduction algorithm described in Section 2.3, thus obtaining a new vector, h
8, with Hamming weight w
8
=
125568. It must be said,
however, that in the present case that considers a long code with very high
rate, the density reduction algorithm is not able to produce immediately an
excellent result: the reduced parity-check matrix has a density that is only
2.4% smaller than that of the extended parity-check matrix.For each iteration of the algorithm, the shiftv has taken the following values: 213318,
215694, 106013, 171879, 40909, 85749, 761. When multiple choices for v were possible (due to the fact that the
autocorrelation function can assume its maximum out-of-phase value for more
than one shift v), a random selection
criterion has been adopted, and the experiment has been repeated several times
in order to find the best sequence among the selected ones.Vectorh
8 has been used as the first row of the RPCM for the cyclic mother code. A valid
parity-check matrix for each shortened code derived from the mother code can be
obtained by selecting the first r
b
c
h
=
168 rows and the first n
b
c
h columns of the RPCM so found. The shortened RPCM is then used as the starting
point for the spreading algorithm that produces the SPCM.We have considered the case ofn
b
c
h
=
3240 and applied the spreading algorithm with s
=
20. The results of numerical
simulations based on the spreading technique are shown in Figure 6. Actually,
performance is not particularly good: even by adopting the ASPCM, that outperforms
the SPCM, the simulated curves are worse than those referred to a hard-decision
decoder able to correct t
=
12
errors. However, we guess that the unsatisfactory result is due to the
difficulty in reducing the weight of the parity-check matrix when starting from
a so dense parity-check matrix. Also in this case, the adoption of adaptive
belief propagation permits to achieve better performance (with more than 2 dB
of further gain) at the cost of increased complexity.Simulated BER (a) and FER (b) for the DVB-S2 BCH code withn
b
c
h
=
3240. The performance of an LDPC code with the same length and rate is also shown for comparison.
(a)
(b)In Figure6, we also show the performance of an LDPC code
having the same parameters of the BCH code. It has been designed through the
so-called LCO technique [23], that permits to avoid the presence of length-4 cycles
but, except for this, the parity-check matrix has not been further optimized.
So, we see that wide margins for improving performance should exist, on
condition to find more effective representations of the parity-check matrix
than those considered so far. Work is in progress in such a direction.


## 5. Conclusion

We have studied the application of some new iterative
soft-decision decoding algorithms based on belief propagation to BCH and RS
codes. The essence of the method is in the possibility to overcome the
drawbacks of the parity-check matrix of these codes, namely, the high density of
1 symbols and the presence of short length cycles in the Tanner graph that
prevent effective application of the BP decoding algorithm. The naive idea of
matrix extension, already proposed in the literature, has been refined through
the introduction of additional “reduction” and “spreading” operations, the
latter, eventually, in an adaptive implementation.The procedure is very simple and quite suitable for
application in multimedia transmissions. If applied to binary short codes, like
those required in presence of stringent requirements on the decoding delay, the
method achieves improved performance with respect to classic parity-check
matrices. The proposed approach is still outperformed by adaptive belief
propagation, particularly in the case of very long and high-rate codes. Its
complexity, however, is always lower.



---

*Source: 957846-2008-09-03.xml*