Académique Documents
Professionnel Documents
Culture Documents
10/4/2005
2/106
Contents
Shannon capacity under modulation constraints. Bit interleaved coded modulation. Iterative demodulation and decoding
EXIT charts.
Turbo coding.
The SISO decoding algorithm.
LDPC codes
The message passing algorithm.
10/4/2005
3/106
k p R = maxSz z pa x, yf log T
p( x )
p( x, y) dxdy p( x) p( y)
U V W
10/4/2005
4/106
FG H
IJ K
FG H
IJ K
10/4/2005
5/106
la = Ia X;Y f
=
fq
p ( x ): p = 1 / 2
= H (Y ) H ( N )
p y log 2 p ( y ) dy
af
1 log 2 eN o 2
g
pX ( ) pN ( y )d
pY ( y) = pX ( y) pN ( y) =
10/4/2005
6/106
Spectral Efficiency
Code Rate r
0.5
-2
-1
10
Eb/No in dB
Uncoded BPSK
Spectral Efficiency
Iridium 1998
Code Rate r
0.5
Turbo Code 1993 LDPC Code 2001 Chung, Forney, Richardson, Urbanke Galileo:LGA 1996
Voyager 1977
-2
-1
Eb/No in dB
Assuming that all symbols are equally likely, the most likely symbol xk is found by making a hard decision on f(y|xk) or log f(y|xk).
10/4/2005 Iterative Solutions Coded Modulation Library 10/106
10/4/2005
11/106
Log-Likelihood of Symbol xk
The log-likelihood of symbol xk is found by:
k = log p (x k | y ) = log p(x k | y ) p(x k | y )
x m S
f (y | x k ) = log f (y | x m )
x m S
x m S
f (y | x
)
m
= log f (y | x k ) max*[log f (y | x m )]
x m S
x m S
exp{log f (y | x )}
10/4/2005
12/106
Where fc is a correction function that only depends on the magnitude of the difference between x and y.
10/4/2005
13/106
f c ( z ) = log[1 + exp( z ) )]
fc(|y-x|)
10
|y-x|
Simplifications
0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -0.1
f c ( z ) = log[1 + exp( z ) )]
fc(|y-x|)
10
|y-x|
10/4/2005
16/106
bits
E x k ,n [ k ] log(2)
10/4/2005
17/106
xk nk Noise Generator
Benefits of Monte Carlo approach: -Allows high dimensional signals to be studied. -Can determine performance in fading. -Can study influence of receiver design.
E [ k ] C=+ log(2)
256QAM
2-
on nc U
ed in a str
y cit a ap C
64QAM
QPSK
BPSK
8 10 Eb/No in dB
12
14
16
18
20
15
M=2
M=4
M=16 M=64
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
15
10
M=2
M=4
M=16 M=64
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
BICM
Coded modulation (CM) is required to attain the aforementioned capacity.
Channel coding and modulation handled jointly. e.g. trellis coded modulation (Ungerboeck); coset codes (Forney)
Most off-the-shelf capacity approaching codes are binary. A pragmatic system would use a binary code followed by a bitwise interleaver and an M-ary modulator.
Bit Interleaved Coded Modulation (BICM); Caire 1998.
Binary to M-ary mapping
ul
Binary Encoder
c' n
Bitwise Interleaver
cn
xk
10/4/2005
22/106
p (x
| y)
( x k S n 0 )
p (x
| y)
= log
( x k S n1 )
p (y | x ) p[ x
k k
] ]
( x k S n 0 )
p (y | x ) p[ x
where S n represents the set of symbols whose nth bit is a 1. and S n is the set of symbols whose nth bit is a 0.
10/4/2005 Iterative Solutions Coded Modulation Library 23/106
(0)
BICM Capacity
BICM transforms the channel into parallel binary channels, and the capacity of the nth channel is:
C k = E cn ,n [log(2) + log p (c k | y )] nats p (c k | y ) = log(2) + E cn ,n log nats p (c k = 0 | y ) + p (c k = 1 | y ) p ( c k = 0 | y ) + p (c k = 1 | y ) = log(2) E cn ,n log nats p (c k | y ) p (c k = 0 | y ) p ( c k = 1 | y ) = log(2) - E cn ,n log exp log + exp log nats p (c k | y ) p ( c k | y ) p (c k = 0 | y ) p ( c k = 1 | y ) , log = log(2) - E cn ,n max* log nats p (c k | y ) p ( c k | y ) = log(2) - E cn ,n max* 0, (1) ck k
10/4/2005
}] nats
24/106
10/4/2005
25/106
BICM Capacity
As with CM, this can be computed using a Monte Carlo integration. This function is computed by
the ISCML function Somap
xk nk Noise Generator
n = log
( xS n1 )
( xS n 0 )
p (y x ) p (y x )
= E cn ,n max* 0, (1) ck k
k =1
}] bits
Unlike CM, the capacity of BICM depends on how bits are mapped to symbols
10/4/2005
E [ ] C=+ log(2)
26/106
CM and BICM capacity for 16QAM in AWGN 1 Code Rate R (4-bit symbols per channel use) 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -10 -5 0 5 10 Minimum Es/No (in dB) 15 20 CM M=16 QAM AWGN BICM M=16 QAM gray BICM M=16 QAM SP BICM M=16 QAM MSP BICM M=16 QAM Antigray BICM M=16 QAM MSEW
BICM-ID
The conventional BICM receiver assumes that all bits in a symbol are equally likely:
n = log
( xS n1 )
p (x | y )
However, if the receiver has estimates of the bit probabilities, it can use this to weight the symbol likelihoods. p (y x )p ( x | c n = 1)
n = log
( xS n1 )
( xS n 0 )
p (x | y )
= log
( xS n1 )
( xS n 0 )
p (y x ) p (y x )
( xS n 0 )
p (y x ) p (x | c
= 0)
Then the mutual information Iz at the output of the receiver can be measured through Monte Carlo Integration.
Iz vs. Iv is the Mutual Information Transfer Characteristic. ten Brink 1999.
10/4/2005
29/106
EXIT Chart
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 0.1 0.2 0.3 0.4 0.5 Iv 0.6 0.7 0.8 0.9 1 gray SP MSP MSEW Antigray K=3 Conv code I
z
16-QAM AWGN 6.8 dB adding curve for a FEC code makes this an extrinsic information transfer (EXIT) chart
M.C. Valenti and S. Cheng, Iterative demodulation and decoding of turbo coded M-ary noncoherent orthogonal modulation, to appear in IEEE JSAC, 2005.
Constraint Length K = 3
xi
ri
It is very unlikely that both encoders produce low weight code words. MUX increases code rate from 1/3 to 1/2.
Input RSC #1 Systematic Output
xi
MUX RSC #2
Parity Output
Nonuniform Interleaver
10/4/2005
37/106
Coding dilemma:
All codes are good, except those that we can think of.
10/4/2005
38/106
fd = 2
10/4/2005 Iterative Solutions Coded Modulation Library 39/106
10
-2
Convolutional Code CC free distance asymptote Turbo Code TC free distance asymptote
Convolutional code:
d min = 18
c d min = 187
10
-4
BER
10
-6
10
-8
0.5
Pb 9.2 10
6 Eb Q No
The Turbo-Principle
Turbo codes get their name because the decoder uses feedback, like a turbo engine.
10/4/2005
41/106
K=5
constraint length
10
-1
r = 1/2
1 iteration
code rate
10
-2
L= 65,536
2 iterations
10
BER
-3
Log-MAP algorithm
10
-4
6 iterations
3 iterations
10
-5
10 iterations 18 iterations
10
-6
10
-7
0.5
1.5
Eb/No in dB
Other factors
Interleaver design Puncture pattern Trellis termination
10/4/2005 Iterative Solutions Coded Modulation Library 43/106
10
-1
10 -2 10
-2
10
-3
BER
10
-4
-4
10
10 -6 10 10
-5
-6
10 10 0.5 0.5
-8 -7
1.5 1.5 2 E /N in dB
b o
2.5 2
2.5
The complexity of a constraint length KTC turbo code is the same as a K = KCC convolutional code, where:
KCC 2+KTC+ log2(number decoder iterations)
10/4/2005 Iterative Solutions Coded Modulation Library 45/106
Uninterleaved Parity Zk
Output
Interleaver
Interleaved Input Xk
Interleaved Parity Zk
10/4/2005
47/106
10/4/2005
48/106
10/4/2005
49/106
Thus:
X1 = X40 X2 = X26 X38 = X24 X2 = X16
10/4/2005
X3 = X18 X40 = X8
50/106
10/4/2005
51/106
Trellis Termination
XL+1 XL+2 XL+3 ZL+1 ZL+2 ZL+3
10/4/2005
BPSK Modulator
{-1,1}
2a
Channel gain: a
Rayleigh random variable if Rayleigh fading a = 1 if AWGN channel
Noise
variance is:
2 =
1 3 E E 2r b 2 b N N o o
10/4/2005
54/106
u,i c,i
u,o c,o
Inputs:
u,i LLRs of the data bits. This comes from the other decoder r. c,i LLRs of the code bits. This comes from the channel observations r.
10/4/2005
55/106
r(Xk) r(Zk)
Demux
zeros r(Zk)
Demux
Deinnterleave
$ Xk
10
-1
10
-2
10
BER
-3
2 iterations
10
-4
10
-5
3 iterations
10
-6
10 iterations
10
-7
0.2
0.4
0.6
1.4
1.6
1.8
Processing:
Sweep through the trellis in forward direction using modified Viterbi algorithm. Sweep through the trellis in backward direction using modified Viterbi algorithm. Determine LLR for each trellis section. Determine output extrinsic info for each trellis section.
Iterative Solutions Coded Modulation Library
10/4/2005
58/106
constant-log-MAP
Max operator.
z max( x, y )
max-log-MAP
10/4/2005
59/106
Constant-log-MAP
0.4
fc(|y-x|) 0 . 3
0.2
dec_type option in SisoDecode =0 For linear-log-MAP (DEFAULT) = 1 For max-log-MAP algorithm = 2 For Constant-log-MAP algorithm = 3 For log-MAP, correction factor from small nonuniform table and interpolation = 4 For log-MAP, correction factor uses C function calls
log-MAP
0.1
0
-0 . 1
10
|y-x|
Dotted line = data 0 Solid line = data 1 Note that each node has one each of data 0 and 1 entering and leaving it. The branch from node Si to Sj has metric ij
Forward Recursion
0 1 2 3 4 5 6 7 10/4/2005 00 10 0 1 2 3 4 5 6 7
A new metric must be calculated for each node in the trellis using:
j = max* ' i + i j , ' i + i j
1 1 2 2
od
id
it
where i1 and i2 are the two states connected to j. Start from the beginning of the trellis (i.e. the left edge). Initialize stage 0:
o = 0 i = - for all i 0
62/106
Backward Recursion
0 1 2 3 4 5 6 7 10/4/2005 00 10 0 1 2 3 4 5 6 7
A new metric must be calculated for each node in the trellis using:
i = max* ' j + ij , ' j + ij
1 1 2
od
id
it
where j1 and j2 are the two states connected to i. Start from the end of the trellis (i.e. the right edge). Initialize stage L+3:
o = 0 i = - for all i 0
63/106
Log-likelihood Ratio
The likelihood of any one branch is:
0 1 2 3 4 5 6 7 10/4/2005 00 10
i + ij + j
0 1 2 3 4 5 6 7
The likelihood of data 1 is found by summing the likelihoods of the solid branches. The likelihood of data 0 is found by summing the likelihoods of the dashed branches. The log likelihood ratio (LLR) is:
FP X b X g = lnG HP X
k
k k
=1 =0
= max* i + ij + j
Si S j : X k =1
Si S j : X k = 0
n max* n +
i
I JK
ij
s + s
j
64/106
Extrinsic Information
The extrinsic information is found by subtracting the corresponding input from the LLR output, i.e.
u,i (lower) = u,o (upper) - u,i (upper) u,i (upper) = u,o (lower) - u,i (lower)
It is necessary to subtract the information that is already available at the other decoder in order to prevent positive feedback. The extrinsic information is the amount of new information gained by the current decoder step.
10/4/2005
65/106
Performance Comparison
10
0
B E R o f 6 4 0 b it t u rb o c o d e m a x -lo g -M A P c o n s t a n t -lo g -M A P lo g -M A P
10
-1
10
-2
Fading
-3
10 BER
AWGN
-4
10
10
-5
10
-6
10 decoder iterations
10
-7
0.5
1.5 E b / N o in d B
2.5
b g b g
10/4/2005
i normalized
= i min i
i
b g
or
b g b g
i normalized
= i 0 = i 0
i normalized
= i min i
i
b g
i normalized
67/106
10/4/2005
68/106
10/4/2005
69/106
For a simulation, it is reasonable to automatically halt once the BER goes to zero.
Requires knowledge of the data.
10/4/2005
70/106
m b gr
Then compare this value to a threshold. If the minimum LLR is more than the threshold, then halt:
Halt if:
10/4/2005
71/106
BER of 640 bit turbo code llr halt llr halt llr halt llr halt =1 =5 = 10 =0
10
-2
10
-3
BER
10
-4
10
-5
10
-6
10
-7
0.2
0.4
0.6
0.8
1 Eb/No in dB
1.2
1.4
1.6
1.8
10
-1
10 FER 10
-2
-3
10
-4
llr halt llr halt llr halt llr halt 0 0.2 0.4 0.6
=1 =5 = 10 =0
10
-5
0.8
1 Eb/No in dB
1.2
1.4
1.6
1.8
0.2
0.4
0.6
0.8
1 Eb/No in dB
1.2
1.4
1.6
1.8
LDPC codes were originally invented by Robert Gallager in the early 1960s but were largely ignored until they were rediscovered in the mid-1990s by MacKay.
10/4/2005 Iterative Solutions Coded Modulation Library 75/106
In general, the per-iteration complexity of LDPC codes is less than it is for turbo codes.
e.g. the best LDPC code investigated here needs half as many additions per iteration than the UMTS turbo code.
Detecting Errors
With LDPC codes, error detection comes for free. Errors can be detected by computing cHT =? 0
The probability of undetetected error is very small.
This can be used to dynamically halt the iterations. No outer error detecting code is needed.
10/4/2005
77/106
An LDPC code is irregular if the rows and columns have non-uniform weight.
Typically the rows have similar weight (e.g. 5 and 6) while the columns have vastly different weight (e.g. from 2 to 15 or 20). Around 2000, Richardson and Urbanke showed that long irregular LDPC codes could come within ~0.1 dB of capacity.
One of their r=1/2 designs (with Chung) came within 0.04 dB of capacity.
Irregular LDPC codes tend to outperform turbo codes for block lengths of about n>105
Iterative Solutions Coded Modulation Library
10/4/2005
78/106
Solutions:
Richardson and Urbanke (2001) show how to transform the H matrix into a (fairly) sparse (almost) lower triangular matrix. Then encoding complexity is approximately O(k). An alternative involving a sparse-matrix multiply followed by differential encoding has been proposed by Ryan, Yang, & Li.
10/4/2005 Iterative Solutions Coded Modulation Library 79/106
Then a systematic code can be generated with G = [I H1TH2-T]. It turns out that H2-T is the generator matrix for an accumulate-code (differential encoder), and thus the encoder structure is simply: u u
Multiply by H1T D
uH1TH2-T
Performance Comparison
We now compare the performance of the maximum-length UMTS turbo code against four LDPC code designs. Code parameters
All codes are rate The LDPC codes are length (n,k) = (15000, 5000)
Up to 100 iterations of log-domain sum-product decoding Code parameters are given on next slide
BPSK modulation AWGN and fully-interleaved Rayleigh fading Enough trials run to log 40 frame errors
Sometimes fewer trials were run for the last point (highest SNR).
10/4/2005 Iterative Solutions Coded Modulation Library 81/106
5000
1 8282 9045 9999 2584 569 5000 206 1941 1 1689 1178
83/106
10
-1
BER in AWGN
BPSK/AWGN Capacity: -0.50 dB for r = 1/3
10
-2
10
-3
BER
10
-4
10
-5
10
-6
10
-7
turbo
0.2
0.4
0.6 Eb/No in dB
0.8
1.2
10
FER in AWGN
10
-1
10 FER 10
-2
-3
10
-4
0.2
0.4
0.6 Eb/No in dB
0.8
1.2
Code #3: JWT Code #4: IRA turbo 0.2 0.4 0.6 Eb/No in dB 0.8
1.2
10
-1
10
-2
10 BER
-3
10
-4
turbo 10
-6
1.2
1.4
1.6 Eb/No in dB
1.8
2.2
10
10
-1
10
-3
1.2
1.4
1.6 Eb/No in dB
1.8
2.2
1.6 Eb/No in dB
1.8
2.2
Tanner Graphs
A Tanner graph is a bipartite graph that describes the parity check matrix H. There are two classes of nodes:
Variable-nodes: Correspond to bits of the codeword or equivalently, to columns of the parity check matrix.
There are n v-nodes.
Check-nodes: Correspond to parity check equations or equivalently, to rows of the parity check matrix.
There are m=n-k c-nodes.
Bipartite means that nodes of the same type cannot be connected (e.g. a c-node cannot be connected to another c-node).
The ith check node is connected to the jth variable node iff the (i,j)th element of the parity check matrix is one, i.e. if hij =1.
All of the v-nodes connected to a particular c-node must sum (modulo-2) to zero.
10/4/2005 Iterative Solutions Coded Modulation Library 90/106
y0
y1
y2
y3
y4
y5
y6
v-nodes
10/4/2005
91/106
Rj = {i: hji = 1}
This is the set of column location of the 1s in the jth row
10/4/2005
92/106
More Notation
ij = sign( qij ) ij = | qij | (x) = -log tanh(x/2) = log( (ex+1)/(ex-1) )= -1(x)
6 5
(x)
3 x
10/4/2005
93/106
( )
jCi
qij = Qi rji
Make hard decision:
1 if Qi < 0 ci = 0 otherwise
10/4/2005 Iterative Solutions Coded Modulation Library 94/106
Halting Criteria
After each iteration, halt if: cH T = 0 This is effective, because the probability of an undetectible decoding error is negligible. Otherwise, halt once the maximum number of iterations is reached.
10/4/2005
95/106
) ((
))
This greatly reduces complexity, since now we dont have to worry about computing the nonlinear function. Note that since is just the sign of q, can be implemented by using XOR operations.
10/4/2005
96/106
Extrinsic-information Scaling
As with max-log-MAP decoding of turbo codes, min-sum decoding of LDPC codes produces an extrinsic information estimate which is biased.
In particular, rji is overly optimistic.
A significant performance improvement can be achieved by multiplying rji by a constant , where <1.
rji = i ' j min i ' j i 'R i 'R j \i j \i See: J. Heo, Analysis of scaling soft information on low density parity check code, IEE Electronic Letters, 23rd Jan. 2003.
Here we compare the performance of sum-product, minsum, and min-sum with extrinsic info scaling.
Experimentation shows that =0.9 gives best performance.
10/4/2005 Iterative Solutions Coded Modulation Library 97/106
10
-1
10
-2
10
-3
BER
10
-4
10
-5
10
-6
10
-7
0.2
0.4
0.6
0.8 1 Eb/No in dB
1.2
1.4
1.6
1.8
10
10
-1
10 FER 10
-2
-3
10
-4
Sum-product
0.2
0.4
0.6
0.8 1 Eb/No in dB
1.2
1.4
1.6
1.8
Forward Recursion.
For each stage of the trellis, compute 22 = 4 branch metrics.
This only requires 1 addition**
Normalization
Requires 7 subtractions** (subtraction has same complexity as addition)
LLR Calculation:
Likelihood of one: Compare 8 branches* Likelhood of zero: Compare 7 branches* So, 13 pairwise comparisons per trellis section. Subtract the two likelihoods Thus LLR Calculation requires:
k additions 13k comparisons
Extra overhead:
Need to subtract input from output LLR to get extrinsic info, and need to add extrinsic info to channel LLR. Amounts to an extra 3k additions / iteration.**
10/4/2005 Iterative Solutions Coded Modulation Library 101/106
If log-MAP decoding is used instead of max-log-MAP, then the 39k pairwise comparisons are replaced with max* operators. This neglects the extra overhead of detecting the data bits, implementing an adaptive stopping criterion, or scaling the extrinsic information.
10/4/2005 Iterative Solutions Coded Modulation Library 102/106
i i ' j i 'R j \i i ' j 'R j \i For a c-node of degree i, there will be i(i-2) xors and i(i-2) pairwise comparisons. Thus overall complexity of the update r stage is:
Update Q:
i
Qi = i + rji
jCi
For v-node of degree i, this requires i additions. So overall complexity of the update Q stage is: ni i additions
10/4/2005 Iterative Solutions Coded Modulation Library
i
103/106
qij = Qi rji
This is a single subtraction at every branch leaving a v-node, and thus the complexity is also:
n i additions
i i
And so the per iteration complexity of min-sum decoding of LDPC codes is: xors mii(i 2)
m i(i 2) 2 n i
i i i i
This neglects the extra overhead of detecting the data bits, checking for errors, or scaling the extrinsic information.
Iterative Solutions Coded Modulation Library
10/4/2005
104/106
Also, there will now be two nonlinear function calls per iteration for every edge in the graph
One for every and another for every r.
10/4/2005
105/106
Complexity Comparison
Here we compare the complexity of the (15000, 4996) turbo code with the four (15000,5000) LDPC codes.
Per iteration complexity. Overall, assuming 5 turbo iterations and 30 LDPC iterations.
Code Turbo LDPC #1 (MacKay 2A) LDPC #2 (R&U) LDPC #3 (JWT) LDPC #4 (extended IRA) Per iteration complexity additions comparisons* 219,824 194,844 80,000 80,000 119,974 239,883 109,084 190,878 79,998 114,995 Overall Complexity additions comparisons* 1,099,120 974,220 2,400,000 2,400,000 3,599,220 7,196,490 3,272,520 5,726,340 2,399,940 3,449,850
* For LDPC codes, one XOR is also required for every pairwise comparison.
Iterative Solutions Coded Modulation Library
10/4/2005
106/106