Escolar Documentos
Profissional Documentos
Cultura Documentos
– “Turbo Codes”
Ingredients
Parallel Code Concatenation
Iterative Decoder (“Turbo Decoder”)
Product codes
Encoder: Arrangement of info symbols in matrix,
horizontal and vertical encoding
Decoder: Iteration between vertical and horizontal
decoding
Interleavers
ut xt,1 xt,2
D D
xt,2
“7” → g1 (D) = 1 + D + D2
“5” → g2 (D) = 1 + D2
Memory length m = 2
Encoding rate R• = 1/2
“7” → g1 (D) = 1 + D + D2
“5” → g2 (D) = 1 + D2
Memory length m = 2
Encoding rate R• = 1/2
Encoder state st = [st,1 st,2 ]
Advanced Channel Coding – p.4
Convolutional Encoder
Trellis Diagram
00 00 00 00 00 00
00
11 11 11 11
01 01 01 01 01
01
10 10 10 10
11 11 11 11 11 11
10
00 00 00 00
10 10 10 10 10
11
01 01 01 01
Information-word polynomial:
u(D) = u1 + u2 D + u3 D2 + u4 D3
Generator polynomials:
g1 (D) = 1 + D + D2
g2 (D) = 1 + D2
Code-word polynomials:
x1 (D) = u(D) g1 (D) = x1,1 + x2,1 D2 + · · · + x6,1 D5
x2 (D) = u(D) g2 (D) = x1,2 + x2,2 D2 + · · · + x6,2 D5
ut st,1 st,2
xt,2
“1” → g1 (D) = 1
1 + D2
“5/7” → g2 (D) =
1 + D + D2
APP decoding
For each info symbol, the decoder computes the
a-posteriori probabilities:
X N
Y −1
Pr(Uk = 0|y) = α· p(yn |xn )
x∈C: n=0
uk =0
X N
Y −1
Pr(Uk = 1|y) = α· p(yn |xn )
x∈C: n=0
uk =1
BCJR algorithm
Bahl, Cocke, Jelinek, and Raviv found an efficient way to
compute the APPs on the code trellis (similar to the Viterbi
algorithm)
Advanced Channel Coding – p.10
LogAPP decoding
LogAPP decoding
For each info symbol, the decoder computes the
a-posteriori L-value:
Pr(Uk = 0|y)
L(Uk |y) = ln
Pr(Uk = 1|y)
lU,p
z lU,ch
Ch1 L lU,e
Decoder
lX,p
u x y lX,ch
Encoder Ch2 L lX,e
lUk ,ch = L(Uk |zk ) lUk ,p = L(Uk |z, y) = L(Uk |lU,ch , lX,ch )
lUk ,e = L(Uk |z \k , y) = L(Uk |lU,ch,\k , lX,ch )
lXn ,ch = L(Xn |yn ) lXn ,p = L(Xn |z, y) = L(Xn |lU,ch , lX,ch )
lXn ,e = L(Xn |z, y \n ) = L(Xn |lU,ch , lX,ch,\n )
xt,0
xt,1
ut st,1 st,2
xt,2
Block Interleaver
Symbols are written into a matrix column-wise and read out
row-wise
Random Interleaver
The permutation pattern is chosen randomly
(but only once then it is fixed, of course)
S-rand Interleaver
The permutation pattern is chosen randomly with a
“spreading” constraint given by the parameter s:
Question:
Given two LogAPP-decoder modules ...
What can you do with them?
Question:
Given two LogAPP-decoder modules ...
What can you do with them?
Answer:
Invent turbo codes.
Question:
Given two LogAPP-decoder modules ...
What can you do with them?
Answer:
Invent turbo codes.
Next Question:
What encoder constructions are reasonable?
u = u(1) x(1)
ENC1
P x
/
u(2) x(2) S
π ENC2
Typical Settings
l(1) = l û
(1)
lch a(1)
DEC1
lch S e(1)
/
P
(2)
lch a(2)
π
DEC2
π −1
e(2)
Typical Settings
l(1) = l û
(1)
lch a(1)
DEC1
lch S e(1)
/
P
(2)
lch a(2)
π
DEC2
π −1
e(2)
L-values for Decoder 1 (for Decoder 2 analogous)
(1) (1) (1) (1) (1)
ln,ch = L(Xn(1) |yn(1) ) ek = L(Uk | lch , a\k )
Some Remarks
Constituent encoders
Puncturing pattern