Viterbi Decoder 6.375 Project Arthur Chang Omid Salehi-Abari Sung Sik Woo May 11, 2011 Background: • Error Control Techniques o Improving the reliability of digital communication o Inserting redundancy into the transmitted data o Detecting and correcting transmission errors • Example: Binary symmetric channel (BSC) 1-p o No error control o Pε = p o Triple- repetition code 0 a Digital Channel a’ 0 p a’ a p 1 1 1-p o Send each message bit three times, 0 → 000 , 1 → 111 o More zeros are received than ones, assume the message bit was a zero o Pε = Pr{2 or 3 code bits are in error} = 3p2(1 − p) + p3 = 3p2 − 2p3 Background: • Convolutional Codes: o Linear codes o Operate on continuous streams of symbols o Can be generated by the convolution of the message sequence with a set of generator sequences o A (3,1,2) convolutional encoder, g1=110, g2=111 and g3 =101 01 0/011 0 1 0/101 1/100 0/000 00 11 0/110 1/111 10 1/001 1/010 Background: • Some Definition: o Branch Metric: Hamming distance between the received codeword and all possible symbols (i.e. the number of bits in which received message differs from code sequence) o Path Metric: Sum of the Branch Metrics o Survivor Path: Path with the smallest Path Metric Background: • Viterbi Decoder: o Final decision on the maximum likelihood path is not made until the entire received sequence (i.e. long delay) o Practical solution: Sliding window with length of 5K Specification • • • • IEEE 802.16 WiMax Standards K=7 Rate = 29.1Mbps • Hardware is needed for the real-time decoding • FPGA is a good solution System Block Diagram dataIn Depuncturer Unit Branch Metric Unit Path Metric Unit Minimum State Unit Traceback Unit dataOut Depuncture Unit Depuncture Unit B u ff e r From SceMi Depuncturer Unit Mask MUX C h u n k e r Buffer Reorder FIFO B u ff e r dataIn 0 Branch Metric Unit Mask FIFO To BMU MUX 0 Path Metric Unit Minimum State Unit Traceback Unit dataOut Branch Metric Unit (BMU) Branch Metric Unit Hamming Distance Code = 00 Hamming Distance Code = 01 From Depuncturer FIFO toVec Depunctured Message & Erasure Mask FIFO To PMU Branch Metric Hamming Distance Code = 10 Hamming Distance Code = 11 dataIn Depuncturer Unit Branch Metric Unit Path Metric Unit Minimum State Unit Traceback Unit dataOut Path Metric Unit (PMU) Path Metric Unit Add-Compare-Select 0 Path Metric 0 BM00 > BM11 Path Metric 1 FIFO + + > Branch Metric Path Metric 62 BM00 Path Metric 63 toVec BM11 Branch Metric Unit To MSU Previous States + > Depuncturer Unit FIFO Mux + Add-Compare-Select 63 BM00 dataIn Mux Add-Compare-Select 1 BM11 From BMU + Mux + Path Metric Unit Minimum State Unit Traceback Unit dataOut Traceback Unit (TBU) Traceback Length = 5K = 35 Trace Back State History Table Previous 0 1 2 3 66 67 68 69 States From MSU Input Table FIFO Minimum FIFO Decoded To SceMi Message State Intermediate States dataIn Depuncturer Unit Branch Metric Unit Path Metric Unit Minimum State Unit Traceback Unit dataOut Functional Testbench MATLAB Implementation Random Message Generator Convolutional Encoder AWGN Channel MATLAB Communications Toolbox Viterbi Decoder Passed =? Bluespec Viterbi Decoder (Hard-Decision) Bluespec Viterbi Decoder Implementation • Messages decoded by MATLAB and Bluespec are compared and shown to be identical across all rates and channel SNR. Performance Benchmark Viterbi Decoder (Hard-Decision) LFSR seed Latency Counter start stop after 1st output Control Cycle Counter stop after last output Bluespec Performance Benchmark Setup • Decoder can maintain 1 bit/cycle output throughput with 88 cycles of latency. • Coded bits are generated on FPGA since Sce-Mi cannot supply bits as fast as the decoder can process them. • At 150MHz, we are 400x faster than the MATLAB implementation. Synthesis Report Decoder with 7-stage TBU Decoder with 35-stage TBU Number of Slice 28% Registers 38% Number of Slice 21% LUTs 23% Critical Path Module TBU MSU Clock Frequency 72.02MHz 150.40MHz Question?