RealTime Turbo Decoder Nasir Ahmed Mani Vaya Elec
Real-Time Turbo Decoder Nasir Ahmed Mani Vaya Elec 434 Rice University
Outline w Description of Turbo Encoding w Description of Turbo Decoding w DSP Implementation issues w Performance Analysis w Conclusions
Turbo Codes w First introduced in 1993 w Parallel Concatenation of two Convolutional Coders with interleaving w Original results showed a BER of 10 E-5 at 0. 7 d. B using block size 65, 536 bits w For rate R=1/2 code, 0. 7 d. B off channel capacity
Turbo Encoder w Parallel concatenation of at least two RSC encoders, with second encoder seeing interleaved version of data w Utilize only one of the systematic streams
Turbo Encoder w The output stream of data consists of the systematic data, parity bits from encoder 1, and parity bits from encoder 2 w Through the use of the interleaver, the decoder will have two independent looks at the same data, and can use both streams to decode the information sequence
Convolutional Coder w Utilize recursive systematic (RSC) encoders w Unlike feed forward coders, a single 1 in the input will lead to large weight codeword w Performance of turbo codes dependent on low weight codewords
State transition Diagram
Interleaver w Interleaving is used to reorder the input bits w Random interleaver used for large block sizes w For small block sizes (<1000), random/block interleavers show similar performance w Block interleavers have simple interleaving/deinterleaving mechanism
Importance of Interleaver w At a given SNR, tradeoff between latency due to interleaver and QOS w Small block sizes (~300 bits) can be used for real time voice w Mid range block sizes (~4000 bits) used for video play back w Large block sizes (~16000 bits) large latency, very low BER, useful for file transfer
Turbo Decoding w Two decoders used in serial fashion, with output of one decoder used as prior information to next decoder w Feedback in decoding circuit allows for multiple iterations, and improves bit error performance
Decoder w Constituent decoders need bit probability estimates to be used as priors to the next decoder: standard Viterbi cannot be used for this reason w Soft Output Viterbi Algorithm used (SOVA) w The output of decoder 1 contains information that can be used as a prior probabilities for decoder 2, and vice versa
Steps in Viterbi Algorithm w Calculation of branch metric (distance from received data) w Calculation of path metric (Add compare select) w On reaching the end of trellis, start from the best state w Trace back (knowing the Path metrics) w Decide the data bits while tracing back
Hard Decision Viterbi Basics
Steps in Turbo Decoding w Evaluate the path metrics w Trace back to obtain the decisions (x) w Trace back using alternate paths to obtain the metric differences w Compute the minimum of all possible metric differences for that stage w Obtain the reliability of decision w Pass this reliability of decision to next decoder w Iterate the above steps
Path Metric Calculation for SOVA s(i) : state of ith path at time k uk(i): information bit Ys: received systematic bit, Yp: received parity bit Mk(s(i)): path metric of ith path at time k Lc : Channel value = 4*Ec/N 0 L(uk): output from previous decoder
Soft Value (L(u)) Computation
Reliability of decisions Δlk= Mk+l(s(il)) – Mk+l (s(i’l)) Δlk : Metric difference l: index of all non surviving paths L(uk) = uk * Min( Δlk) Min(Δlk ) : Reliability of the decision
Our Implementation w Rate 1/3 coding w Constraint length = 3 w Frame length = 400 w SOVA algorithm used w Number of iterations are flexible
Algorithmic Issues w Two iterations of Turbo decoding used w Traceback depth set at 5 times the constraint length (optimal for Viterbi decoding) w BPSK modulation used (+/-1) w Extrinsic Information (Le(u)) scaled after every decoder
Fixed point Issues w Used Q-15 format w Received signal (from AWGN channel) clipped to lie in a range of +/-1 w Received signal scaled by a constant factor (32) to avoid overflow
Performance in AWGN channel
Data Rates • Clock cycles / decoder = 654659 • Execution time / decoder = 4. 36 ms • Data rate /decoder = 91. 6 Kbps • Data rate/ iteration = 45. 8 Kbps
Conclusions w Fixed point SOVA based Turbo decoder implemented w Performance of DSP matches MATLAB at high SNRs w Real time voice processing possible using our implementation (~22 Kbps for 2 iterations)
- Slides: 23