1.65k likes | 2.07k Views
Turbo Codes. Colin O’Flynn Dalhousie University http:// www.newae.com/tiki-index.php?page=Turbo coflynn@dal.ca Last Update of This Presentation : Thursday Jan 26 / 2012. Handy References @ Dal. Trellis and turbo coding Schlegel, Christian B.; Pérez, Lance C.
E N D
Turbo Codes Colin O’Flynn Dalhousie University http://www.newae.com/tiki-index.php?page=Turbo coflynn@dal.ca Last Update of This Presentation: Thursday Jan 26 / 2012
Handy References @Dal Trellis and turbo coding Schlegel, Christian B.; Pérez, Lance C. http://www.knovel.com/web/portal/basic_search/display?_EXT_KNOVEL_DISPLAY_bookid=1988 http://www.amazon.ca/Trellis-Turbo-Coding-Christian-Schlegel/dp/0471227552/ Codes and turbo codes Claude Berrou http://www.springerlink.com/content/w56240 http://www.amazon.ca/Codes-turbo-codes-Claude-Berrou/dp/2817800389 Turbo code applications : a journey from a paper to realization KeattisakSripimanwat http://www.springerlink.com/content/l32688/ http://www.amazon.ca/Turbo-Code-Applications-Journey-realization/dp/1402036868 Note: You need to be on Dalhousie Network or using EZProxy to access these resources online.
Handy References @Dal The design and application of RZ turbo codes Xin Liao http://proquest.umi.com/pqdlink?Ver=1&Exp=11-01-2016&FMT=7&DID=766741131&RQT=309 Turbo coding, turbo equalisation, and space-time coding : exit-chart aided near-capacity designs for wireless channels L. Hanzo et. al. http://www.dal.worldcat.org/title/turbo-coding-turbo-equalisation-and-space-time-coding-exit-chart-aided-near-capacity-designs-for-wireless-channels/oclc/666867885&referer=brief_results Note: You need to be on Dalhousie Network or using EZProxy to access these resources online.
Handy References A Turbo Code Tutorial William E. Ryan http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.37.4605 Liang Li’s Nine Month Report & MATLAB Code Liang Li, Rob Maunder http://users.ecs.soton.ac.uk/rm/wp-content/liang_li_nine_month_report.pdf http://users.ecs.soton.ac.uk/rm/resources/matlabturbo/ Chapers 4,9,15 of Turbo coding, turbo equalisation, and space-time coding : exit-chart aided near-capacity designs for wireless channels http://eprints.ecs.soton.ac.uk/8252/2/Turbo_Chaps_4,9,15.pdf
Notes If You Are Viewing Online Be sure to enable presentation notes, as there is some additional information there: I’m using the following acronyms to reference where you can find additional information: • CATC: Codes and Turbo Coding, 1st Edition, Berrou • TATC: Trellis and Turbo Coding, 1st Edition, Schlegel TCT: Turbo Code Tutorial, Ryan TCTEASTC: Turbo Coding, Turbo Equalization, and Space-Time Coding
Which Reference to Use? Trellis and Turbo Coding – Very in-depth guide to Turbo Codes, including mathematical derivation. Covers sufficient background to make book stand-alone reference. Covers topics I didn’t find in other books such as derivation of free-distance for turbo codes. Codes and Turbo Coding – Less mathematical derivation by comparison, but contains some examples which are easier to follow. Author was also on team that invented Turbo Codes. Turbo Code Applications – Covers how codes are used in real systems, and also history of discovery in more depth than other books. Turbo coding, turbo equalisation, and space-time coding : exit-chart aided near-capacity designs for wireless channels - I found had easiest to understand description of how Turbo Decoding works. Includes a complete example of the decoding process, with intermediate values and internal operation of soft-output decoders. Also includes substantial number of charts showing difference in performance for changing Turbo parameters, which is fairly interesting. You can get a few chapters of this book online (see previous slides for link).
The Beginning 10100 01100 < 101000101011 011001011011
“With 52 FPGAs for the processors, 52 FPGAs for the switches, seven FPGAs for the memory controllers and one FPGA to control the whole system, a total of 112 FPGAs are required. In total, the cost of the RACER II is approximately $200,000, which is 10 times cheaper than the BVD at the same decoding rate and without the need for custom ASICs”
The Beginning Large MHD Code Small MHD Code What we can have What we want “It's not the quantity that counts — it's the quality” WRONG
The Beginning Maybe we can get the large MHD by using several of the small ones… Small MHD Code Large MHD Code Small MHD Code Small MHD Code
Concatenated Codes: Serial Permutation Outer Encoder Inner Encoder Permutation Inner Decoder Outer Decoder
Concatenated Codes: Parallel Systematic Part of Codeword Encoder 1 Redundant Part of Codeword from Enc 1 Permutation Encoder 2 Redundant Part of Codeword from Enc 2
Concatenated Codes: Comparison Shopping Parallel Serial MHD Normally better compared to parallel Systematic ONLY, at least one should be recursive, need to be careful with code choice Systematic or Non-Systematic, pretty indifferent to code choice
Example: Parallel Using Hamming (7,4) as base: Parity from Code 1 Data Parity from Code 2
Example: Parallel Using Hamming (7,4) as base: Math Stuff Rate = 16/40 =4/10 For input of weight 1, output = 5 Asymptotic Gain = 10log(R*d) = 10log(4 * 5 / 10) =3.01 dB Compare with input code: =10log(4 * 3 / 7) = 2.34 dB Parity from Code 1 Data Parity from Code 2
Example: Serial Using Hamming (7,4) as base: Math Stuff Rate = 16/49 For input of weight 1, output = 9 Asymptotic Gain = 10log(R*d) = 10log(16 * 9 / 49) =4.68 dB Compare with input code: =10log(4 * 3 / 7) = 2.34 dB Parity from Code 1 Data Parity from Code 2
Concatenated Codes: Conclusions As promised, serial codes had better MHD but worse Rate. Parallel codes can work well but should use Recursive Systematic Convolutional (RSC) codes – notice poor performance with hamming code here.
Tag Team (Iterative) Decoding Eat this Error-Man!
Iterative Example 1 2 3 4 5 animate Greek Sticks Conflicts slow oral representation projection force rope i ii iii iv v This example from: Codes and Turbo Codes by Claude Berrou
Iterative Example - Across 1 2 3 4 5 animate Greek Sticks Conflicts slow oral representation projection force rope i ii iii iv v This example from: Codes and Turbo Codes by Claude Berrou
Iterative Example - Down 1 2 3 4 5 animate Greek Sticks Conflicts slow oral representation projection force rope i ii iii iv v This example from: Codes and Turbo Codes by Claude Berrou
Iterative Example - Across 1 2 3 4 5 animate Greek Sticks Conflicts slow oral representation projection force rope i ii iii iv v Agons = fight/struggle in Latin Lento = slow in Spanish This example from: Codes and Turbo Codes by Claude Berrou
Iterative Example - Down 1 2 3 4 5 animate Greek Sticks Conflicts slow oral representation projection force rope i ii iii iv v Tenon = A projecting piece of wood made for insertion into a mortise in another piece This example from: Codes and Turbo Codes by Claude Berrou
Iterative Example - Across 1 2 3 4 5 animate Greek Sticks Conflicts slow oral representation projection force rope i ii iii iv v This example from: Codes and Turbo Codes by Claude Berrou
Turbo Encoder – General Format Systematic Part of Codeword Encoder 1 Redundant Part of Codeword from Enc 1 Permutation Puncturing (Optional) Encoder 2 Redundant Part of Codeword from Enc 2
Turbo Encoder - Permutation 101001010101010101010101011010101011100010101110101 WIRELESS CHANNEL 101001010010101010101101011010101011100010101110101
Turbo Encoder - Permutation 101001010101010101010101011010101011100010101110101 101001010101010101010101011010101011100010101110101 WIRELESS CHANNEL 101001010010101010101101011010101011100010101110101 101001010101010101010101011010101011100010101110101
Turbo Encoder - Permutation Assumption: Nature Hates Us (In all fairness, we started it.)
Turbo Encoder - Permutation 101001010101010101010101011010101011100010101110101 101001010101010101010101011010101011100010101110101 WIRELESS CHANNEL 101001010101010101010101011010101011100010101110101 101001010010101010101101011010101011100010101110101
Turbo Encoder - Termination • Do Nothing • Decreases Asymptotic Gain • Will give proof later about why this is bad – hold on
Turbo Encoder - Termination • Terminate the Trellis of One or Both, outside of permutation Systematic Part of Codeword Encoder 1 Message Redundant Part of Codeword from Enc 1 Permutation Puncturing (Optional) Encoder 2 Redundant Part of Codeword from Enc 2
Unterminated Loss N=1024, only 1st encoder terminated N=1024, both encoders terminated From “Illuminating the Structure of Code and Decoder of Parallel Concatenated Recursive Systematic (Turbo) Codes”, by Patrick Robertson
Turbo Encoder - Termination 3. Use Interleaver to Terminate Trellis based on input sequence to first
Turbo Encoder - Termination 4. Circular Encoding (“Tail Biting”) See page 138 of TATC or page 194 of CATC.
Why is RSC So Good? Convolution Code (Not Systematic, Not Recursive): Note: Input of weight 1 results in finite-weight output TACT pp291, TTC pp1
Why is RSC So Good? Recursive Systematic Convolution Code: Note: Input of weight 1 results in infinite-weight output
Example with Non-Recursive Systematic Part of Codeword Encoder 1 Redundant Part of Codeword from Enc 1 Permutation Non-recursive encoders Encoder 2 Redundant Part of Codeword from Enc 2
Example with RSC Systematic Part of Codeword Encoder 1 Redundant Part of Codeword from Enc 1 Permutation RSC Encoder 2 Redundant Part of Codeword from Enc 2
Permutation - Linear Encoder 1 dFree Permutation Encoder 2 dFree TACT pp296-7
Permutation - Random Encoder 1 dFree Permutation Encoder 2 dFree
Why Terminate Encoder 1? 0 0 0 … 0 0 1
What does Turbo Code BER Look Like? Turbo Cliff
Bit Error Rate Bound of Finite-Length Convolution Code TACT 10.3 / 10.4 : pp290-7
Distance Spectrum Representation of Bound TACT 10.3 / 10.4 : pp290-7
Free Distance of Turbo Code TACT 10.3 / 10.4 : pp290-7
Plotting Distance Spectrum functionprintBERContribution( d, Nd, wd, N, R ) %PRINTBERCONTRIBUTION Print contribution from distance spectrum components. % d, Nd, wd are arrays of numbers, each index corresponding to one spectral % component. N is interleaver size. R is rate. close all; %SNR Range in dB SNR_range = [0:0.01:2]; ebno = 10 .^ (SNR_range ./ 10); ber=zeros(length(d), length(ebno)); linetypes = {'b', 'r--', 'b--', 'r:', 'b:', 'r-.', 'b-.'}; leg = cell(1,length(d)); fori=1:length(d) ber(i+1,:) = ber(i,:) + ((Nd(i) * wd(i)) / N) * qfunc (sqrt(d(i) * 2 * R * ebno)); semilogy(SNR_range, ber(i+1,:), linetypes{i}); hold on leg{i} = sprintf('d = %d', d(i)); end legend(leg);