0% found this document useful (0 votes)
133 views

Hardware Implementation: Branch Metric Unit (BMU)

A hardware Viterbi decoder typically consists of three main blocks: 1) A branch metric unit that calculates the distance between received and possible symbols. 2) A path metric unit that summarizes branch metrics to evaluate the 2K-1 possible paths at each time. 3) A traceback unit that reconstructs the most likely path by tracing decisions back through time.

Uploaded by

api-19790923
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
133 views

Hardware Implementation: Branch Metric Unit (BMU)

A hardware Viterbi decoder typically consists of three main blocks: 1) A branch metric unit that calculates the distance between received and possible symbols. 2) A path metric unit that summarizes branch metrics to evaluate the 2K-1 possible paths at each time. 3) A traceback unit that reconstructs the most likely path by tracing decisions back through time.

Uploaded by

api-19790923
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

Hardware implementation

A common way to implement a hardware viterbi decoder


A hardware viterbi decoder for basic (not perforated) code usually consists of the following
major blocks:
• Branch metric unit (BMU)
• Path metric unit (PMU)
• Traceback unit (TBU)
Branch metric unit (BMU)

A sample implementation of a branch metric unit


A branch metric unit's function is to calculate branch metrics, which are normed distances
between every possible symbol in the code alphabet, and the received symbol.
There are hard decision and soft decision viterbi decoders. A hard decision viterbi decoder
receives a simple bitstream on its input, and a Hamming distance is used as a metric. A soft
decision viterbi decoder receives a bitstream containing information about the reliability of each
received symbol. Usually this reliability information is encoded as follows (the table is shown
for 3-bit input):
value meaning
000 strongest 0
001 relatively strong 0
010 relatively weak 0
011 weakest 0
100 weakest 1
101 relatively weak 1
110 relatively strong 1
111 strongest 1
Of course, it is not the only way to encode reliability data.
The squared Euclidean distance is used as a metric for soft decision decoders.
Path metric unit (PMU)

A sample implementation of a path metric unit for a specific K=4 decoder


A path metric unit summarizes branch metrics to get metrics for 2K − 1 paths, one of which can
eventually be chosen as optimal. Every clock it makes 2K − 1 decisions, throwing off wittingly non
optimal paths. The results of these decisions are written to the memory of a traceback unit.
The core elements of a PMU are ACS (Add-Compare-Select) units. The way in which they are
connected between themselves is defined by a specific code's trellis diagram.

Since branch metrics are always , there must be an additional circuit preventing metric
counters from overflow (it isn't shown on the image). An alternate method that eliminates the
need to monitor the path metric growth is to allow the path metrics to "roll over", to use this
method it is necessary to make sure the path metric accumulators contain enough bits to prevent
the "best" and "worst" values from coming within 2(n-1) of each other. The compare circuit is
essentially unchanged.

A sample implementation of an ACS unit


It is possible to monitor the noise level on the incoming bit stream by monitoring the rate of
growth of the "best" path metric, a simpler way to do this is to monitor a single location or
"state" and watch it pass "upward" through say four discrete levels within the range of the
accumulator. As it passes upward through each of these thresholds, a counter is incremented that
reflects the "noise" present on the incoming signal.
Traceback unit (TBU)

A sample implementation of a traceback unit


Back-trace unit restores an (almost) maximum-likelihood path from the decisions made by PMU.
Since it does it in inverse direction, a viterbi decoder comprises a FILO (first-in-last-out) buffer
to reconstruct a correct order.
Note that the implementation shown on the image requires double frequency. There are some
tricks that eliminate this requirement.
Implementation issues
Quantization for soft decision decoding
In order to fully exploit benefits of soft decision decoding, one needs to quantize input signal
properly. The optimal quantization zone width is defined by the following formula:

where N_0 is a noise power spectral density, and k is a number of bits for soft decision.
Euclidean metric computation
The squared norm distance (l2) distance between the received and the actual symbols in the code
alphabet may be further simplified into a linear sum/difference form, which makes it less
computationally intensive.
Consider a 1/2 convolutional coder, which generates 2 bits (00, 01, 10 or 11) for every input bit
(1 or 0). These Return-to-Zero signals are translated into a Non-Return-to-Zero form shown
alongside.
code alphabet vector mapping
00 1, 1
01 1, -1
10 -1, 1
11 -1, -1
Each received symbol may be represented in vector form as vr = {r0, r1}, where r0 and r1 are soft
decision values, whose magnitudes signify the joint reliability of the received vector, vr.
Every symbol in the code alphabet may, likewise, be represented by the vector vi = {±1, ±1}.
The actual computation of the Euclidean distance metric is:

Each square term is a normed distance, depicting the energy of the symbol. For ex., the energy of
the symbol vi = {±1, ±1} may be computed as

Thus, the energy term of all symbols in the code alphabet is constant (at (normalized) value 2).
The Add-Compare-Select (ACS) operation compares the metric distance between the received
symbol ||vr|| and any 2 symbols in the code alphabet whose paths merge at a node in the
corresponding trellis, ||vi(0)|| and ||vi(1)||. This is equivalent to comparing

and

But, from above we know that the energy of vi is constant (equal to (normalized) value of 2), and
the energy of vr is the same in both cases. This reduces the comparison to a minima function
between the 2 (middle) dot product terms,

since a min operation on negative numbers may be interpreted as an equivalent max operation on
positive quantities.
Each dot product term may be expanded as
where, the signs of each term depend on symbols, vi(0) and vi(1), being compared. Thus, the
squared Euclidean metric distance calculation to compute the branch metric may be performed
with a simple add/subtract operation.
[edit] Traceback
The general approach to traceback is to accumulate path metrics for up to five times the
constraint length (5 * (K - 1)), find the node with the largest accumulated cost, and begin
traceback from this node.
However, computing the node which has accumulated the largest cost (either the largest or
smallest integral path metric) involves finding the maxima or minima of several (usually 2K-1)
numbers, which may be time consuming when implemented on embedded hardware systems.
Most communication systems employing Viterbi decoding involving data packets of fixed sizes,
with a fixed bit/byte pattern either at the beginning or/and at the end of the data packet. By using
the known bit/byte pattern as reference, the start node may be set to a fixed value, thereby
obtaining a perfect Maximum Likelihood Path during traceback.
[edit] Limitations
Generally speaking, the viterbi decoder doesn't produce an exact maximum-likelihood stream
due to these limitations:
• Quantizing of an input signal, branch and path metrics.
• Limited traceback length.
[edit] Perforated codes
A hardware viterbi decoder of perforated codes is commonly implemented in such a way:
• A deperforator, which transforms the input stream into the stream which looks like an
original (imperforated) stream with ERASE marks at the places where bits were erased.
• A basic viterbi decoder understanding these ERASE marks (that is, not using them for
branch metric calculation).
[edit] Software implementation
See Viterbi algorithm.
One of the most time-consuming operations is an ACS butterfly, which is usually implemented
using an assembly language and appropriate instruction set extensions (such as SSE2) to speed
up the decoding time.
[edit] Applications
The Viterbi decoding algorithm is widely used in the following areas:
• Decoding trellis-coded modulation (TCM), the technique used in telephone-line modems
to squeeze high spectral efficiency out of 3 kHz-bandwidth analog telephone lines. The
TCM is also used in the PSK31 digital mode for amateur radio and sometimes in the
radio relay and satellite communications.
• Decoding convolutional codes in satellite communications.
• Computer storage devices such as hard disk drives.
• Hidden Markov model (HMM)-based speech recognition

You might also like