Viterbi Decoder
Decode convolutionally encoded data using Viterbi algorithm
- Library:
Wireless HDL Toolbox / Error Detection and Correction
Description
TheViterbi Decoderblock decodes convolutionally encoded data using a RAM-based traceback implementation. Viterbi decoding is widely used in LTE standard TS 36.212[1]and other forward-error-correction (FEC) applications such as wireless networks (802.11a/b/g/n/ac), digital satellite communications, digital video broadcast (DVB), IEEE 802.16, and HiperLAN. To support any of these standards, the block accepts convolution codes with constraint lengths of 3 to 9, code rates 1/2 to 1/7, and provides continuous, terminated, and truncated modes. The block provides an architecture and interface suitable for HDL code generation.
The block supports decoding of punctured codes by providing an optionalerasureinput port. You can use theDepuncturerblock to insert neutral values in a punctured sample stream, and generate theerasuresignal.
TheViterbi Decoderblock accepts input samples as hard-decision binary values or soft-decision log-likelihood-ratios (LLR). Each sample is a column vector, whose length depends on the encoding scheme. The first waveform shows continuous operation mode with input samples of signed 4-bit data, using the default block parameters. TheTraceback depthis32
. The block returns the first decoded output data sample after 148 clock cycles. The decoding latency is 4×Traceback depth+Constraint length+ 13 valid input cycles.
The second waveform shows three frames in terminated operation mode. The input is unsigned 4-bit samples, and the block is using the trellis (7,[171 133 112]). TheTraceback depthis32
. The input and outputctrlbuses are expanded to show their three control signals. The latency from each inputctrl.start
to outputctrl.start
is also 148 clock cycles.
The control signals in the bus indicate the validity of each sample and the boundaries of the frame. To convert a matrix into a sample stream and corresponding control signals, use theFrame To Samplesblock or thewhdlFramesToSamples
function. For a full description of the streaming sample interface, seeStreaming Sample Interface.
Ports
Input
Output
Parameters
Model Examples
Algorithms
References
[1] 3GPP TS 36.212. "Multiplexing and channel coding."3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL:https://www.3gpp.org.
[2] Horwitz, M., and R. Braun. "A Generalised Design Technique for Traceback Survivor Memory Management in Viterbi Decoders."Proceedings of the 1997 South African Symposium on Communications and Signal Processing: 63-68. Piscataway, NJ: IEEE, 1997.
[3] Shung, C.b., P.h. Siegel, G. Ungerboeck, and H.k. Thapar. "VLSI Architectures for Metric Normalization in the Viterbi Algorithm."IEEE International Conference on Communications, Including Supercomm Technical Sessions: vol 4. 1726-728. New York, N.Y. : IEEE, 1990.