group6_final

advertisement
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?
Download