Viterbi Decoder
Decode convolutionally encoded data using Viterbi algorithm
Libraries:
Wireless HDL Toolbox /
Error Detection and Correction
Description
The Viterbi Decoder block 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 optional erasure input port. You can use the Depuncturer block to insert neutral values in a punctured sample stream, and generate the erasure signal.
The Viterbi Decoder block 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. The Traceback depth is 32
. 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]). The
Traceback depth is 32
. The input and output
ctrl buses are expanded to show their three control signals.
The latency from each input ctrl.start
to output
ctrl.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 the Frame To
Samples block or the whdlFramesToSamples
function. For a full description of the streaming
sample interface, see Streaming Sample Interface.
Examples
Ports
Input
Output
Parameters
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.
Extended Capabilities
Version History
Introduced in R2018b