Advanced channel coding : a good basis Alexandre Giulietti, on behalf of the T@MPO team
Errors in transmission are fowardly corrected using channel coding e.g. MPEG4 e.g. Turbo coding e.g. QAM source coding Transmitter channel modulation coding 1 1 1 1 1 1 1 code rate : k/n = 8/5 Channel source channel demodulation decoding decoding Receiver 1 1 1 1 1 1 1 errors!!
Broad, but not exhaustive, channel coding techniques overview block codes + convolutional codes block turbo (product) codes convolutional turbo codes (T@MPO) BCH codes concatenated codes Fano decoding algorithm block codes advanced channel coding convolutional codes Reed-Solomon codes applied codes Viterbi decoding algorithm trellis coded modulation space-time codes
Block codes were the first coding : (n,k) linear block code message bits k bits codeword : v = u.g received vector message parity bits n-k bits decoding: s = r. H T syndrome parity-check matrix errors, decoding using syndrome no errors, r = codeword Ex.: (7,4) block code () () (1) (111) (1) (111) (11) (1111) (1) (1111) (11) (111) (11) (111) (111) (1111) (1) (111) (11) (1111) (11) (1111) (111) (111) (11) (111) (111) (1111) (111) (1111) (1111) (1111111)
Convolutional coding became famous in the 8 s with Viterbi decoding Example : K=7, k/n = 1/2, non-recursive, non-systematic constraint length g (x) = 1 + x 2 + x 3 + x 5 +x 6 + code rate linear feedback shift-register (LFSR) coded output 1 input data S S1 S2 S3 S4 S5 + g 1 (x) = 1 + x 1 + x 2 + x 3 +x 6 coded output 2 S S1 S2 S3 S4 S5 64 encoder states, 11, etc.
Convolutional coding: trellis example K=4, k/n=1/2 () 1(1) 2(1) 3(11) 1 1 1 1 () 1(1) 2(1) 3(11) 4(1) 1 4(1) 5(11) 1 5(11) 1 6(11) 6(11) 8 states 7(111) 1 t = t = 1 t = 2 7(111) input bit = input bit = 1
Convolutional coding: trellis example input sequence : 1 input sequence : 11 input sequence : () 1(1) 2(1) 3(11) 4(1) 5(11) 6(11) 1 1 1 1 1 1 1 () 1(1) 2(1) 3(11) 4(1) 5(11) 6(11) 8 states 7(111) 1 t = t = 1 t = 2 7(111) input bit = input bit = 1
Viterbi decoding, ACS operation accumulated metric: 28 butterfly state 1 7 branch metrics state 4 state 1 (survivor) ACS state 4 state 5 state 5 accumulated metric : 32 7 state 16 state 1 ADD : 28 + 7 = 35 ( branch) 28 + = 28 ( 1 branch) 32 + = 32 32 + 7 = 39 state 16 state 34(survivor) COMPARE : 35 > 32 ( branch) 28 < 39 ( 1 branch) SELECT : state 16 ( branch) state 1 ( 1 branch)
Viterbi decoding, ML path a = after a few (>4*K) steps... t 1 t 2 t 3 t 4 t 5 t 6 1 1 11 b = 1 c = 1 1 1 d = 11 1 1 1 1 1 states...there s only one survivor path!! = maximum likelihood path branch
The path to advanced coding : concatenating and decoding iteratively iterative process SISO : Soft-input soft-output decoded bits uncoded bits constituent encoder 1 coded bits 1 channel constituent SISO diversity unity constituent SISO decoder 1 diversity decoder 2 diversity unity constituent encoder 2 coded bits 2 unity concatenation
Does iterative decoding + concatenation really allow reliable communication? AWGN fading
SISO decoder 1 diversity unity diversity unity SISO decoder 2
SISO decoder 1 diversity unity diversity unity SISO decoder 2
SISO decoder 1 diversity unity diversity unity SISO decoder 2
SISO decoder 1 diversity unity diversity unity SISO decoder 2
Parallel concatenated convolutional (turbo) codes(glavieux,berroux et Thitimajshima, 1993) two recursive systematic convolutional codes RSC 1 and RSC 2 concatenated in parallel! z -1 z -1 RSC 1 P k/n = 1/3 interleaver, size N z -1 z -1 RSC 2
Turbo codes: coder/decoder architecture! iterative decoding: D1 fi D2 fi D1 fi D2 fi D1 fi D2 fi! one decoder module (D) for each encoder (C)! increasingly good solution: encoder decoder Û U C 1 C Y D 1 P P P C 2 D 2 P -1
Turbo codes : soft-input soft-output (SISO) decoding log-likelihood ~ P( C ) ~ P( U ) a priori SISO 1 MAP or SOVA algorithms ~ P( U Dec1 ) extrinsic information intrinsic MAP or SOVA algorithms ~ P( C ) amplitude = confiability sign = hard-decision ~ P( U ) a priori SISO 2 ~ P( U Dec2 ) extrinsic -1 intrinsic L(u) = log p(u=1 R) p(u= R) at the end... L(u) = Lc.y + Le dec1 (u) + Le dec2 (u) SISO = log-likelihood information amplifier!
The MAP algorithm is a hard nut to crack frame size a calculation (forward recursion) b and L ext calculation (backward recursion) additions, comparisons and selections decoding delay a t = f (a t+1 ) b t+1 = f (b t ) P(coded 1) P(coded 2) g t = f (P(coded),P(uncoded),extr) P(uncoded) a t b L(u) = log a 1 b 1 g 1 a b g
Serially concatenated block (product) codes are brothers and rivals of turbo codes product coder block coding in the x direction product decoder decoded data block N r block coding in the y direction K c K r data block row check N c constituent SISO (Fang-Buda, Chase,...) decoder 1 constituent SISO (Fang-Buda, Chase,...) decoder 2 column check double check log-likelihood for the set of nearest codewords
Who corrects more errors? Selected algorithms product codes (SCBC) Fang-Buda 4 iterations BCH x BCH codes: (26,2)x(31,2) = 1 ATM cell (42,29)x(42,29) = 2 ATM cells k/n = 1/2 turbo codes (PCCC) log-max MAP 6 iterations UMTS codes UMTS interleaver 1 and 2 ATM cells k/n = 1/2 (punctured) 1. LLR sorting 2. H matrix permutation 3. Gaussian reduction on H 4. LLR permutation preprocessing 1. subset reordering with exclusion 2. coding to get list of codewords 3. reduced list of closest codewords 4. extrinsic calculation systematic search for codewords
Who corrects more errors? BER for QPSK and AWGN satellite to fixed terminal, LOS k/n = 1/2 no difference for BER = 1-6
Who corrects more errors? BER for 16-QAM and AWGN satellite to fixed terminal, LOS k/n = 1/2.5.65.75 db PCCCs perform between.5 and.75 db better
Who corrects more errors? BER for fading, time varying channels satellite to mobile terminal, LOS (Ricean) or non-los (Rayleigh) k/n = 1/2 K = 5 terminal speed = 2 km/h data rate = 1 Mb/s SCBCs perform better for the worst condition case (EbN>12 db) no difference for the Ricean (LOS) case
Trellis coded modulation (Ungerboeck, 1982) : coding specific to modulation scheme improves bandwidth efficiency i 1 i 2 i 3 rate 2/3 symbol encoder c 1 c 2 c 3 c 4 c 1 selects the 1st set partition c 2 selects the 2nd set partition c 3 selects the 4rd set partition c 4 selects the 4th set partition 1 16-QAM 1st partition 1 1 2nd partition 1 1 1 1 3rd partition 1 1 1 1 1 1 1 1 4th partition 1 1 11 1 11 11 111 1 11 11 111 11 111 111 1111 less protected bits are assigned to larger Euclidian distances larger code rates with good error correction!
Turbo trellis coded modulation: from k/n = 1/3 to k/n = 2/3 and 3/4 with good performance puncturing the classical turbo code scheme and using modulation with higher constellations (16-QAM, 64-QAM) intelligent puncturing scheme taking into account the mapping pragmatic approach (Berrou) turbo code working on symbol level symbol based trellis coded modulation (Robertson, Benedetto) T-TCM!
Pragmatic T-TCM performances rate 2/3 punctured TC rate 2/3 pragmatic T-TCM rate 1/3 unpunctured TC AWGN Channel 64-QAM - rate 2/3 - h= 4 bits/s/hz Ungerboeck mapping
We chose turbo codes for our channel coding/decoding ASIC + excellent coding gain + flexible (different coding rates, block sizes) + matches well with OFDM (WLAN) + leaves open the option for T-TCM in the future - complexity of the MAP algorithm - latency due to recursions and iterative process IMEC s effort is solving the problem with T@MPO (to be shown in the rest of the day)