1. Field of the Invention
The invention relates to a decoder in a communication system, and in particular to an add-compare-select (ACS) unit in a decoder and a method thereof.
2. Description of the Related Art
Convolutional encoding is typically utilized in digital communication systems to combat noise and interference during data transmission. Convolutional encoded data is recovered by a convolutional decoder in a receiver. A Viterbi decoder is a convolutional decoder used to achieve the maximum likelihood of decoding convolutional codes, by selecting a code sequence from a plurality of possible code sequences to decode the received data. An add-compare-select (ACS) unit is the key functional unit of a Viterbi decoder. The ACS unit compares the probability of all possible code sequences to decide a most likely sequence. The convolutional decoder may be implemented with pipelining, look-ahead, and parallelism techniques to enhance computation speed and circuit performance. These techniques, however, increase circuit complexity, circuit dimensions and manufacturing cost.
Thus an ACS unit and a method capable of minimizing circuit dimensions, without degrading circuit performance incurred by the use of pipelining, look-ahead, and parallelism techniques are desirable.
A detailed description is given in the following embodiments with reference to the accompanying drawings.
An embodiment of an add-compare-select (ACS) unit in a maximum likelihood decoder, performing an ACS operation to generate first path metrics having a first bit-pair and a most significant bit-pair (MSB), wherein each bit-pair is a redundant number representation having a high bit and a low bit, and comprising a first ACS circuit and an MSB ACS circuit is disclosed. The first ACS circuit produces the first bit-pair of the first path metrics and a first carry. The MSB ACS circuit comprises a limiting circuit, an MSB maximum select unit, an MSB storage unit, and a reset unit. The limiting circuit, coupled to the first ACS circuit, generates the MSB of the first path metrics based on the first carry, and limits the MSB of the first path metrics to a first predetermined value. The MSB maximum select (MS) unit, coupled to the limiting circuit and another ACS unit, receives an MSB of second path metrics from the other ACS unit, and compares the MSBs of the first and the second path metrics to determine MSB decision signals based on maximum likelihood selection. The MSB storage unit, coupled to the MSB maximum select unit, stores the MSB of the first path metrics as an MSB of a previous first path metric. The reset unit, coupled to the MSB maximum select unit and the MSB storage unit, and resets the MSB of the first path metrics to a second predetermined value when the high bits of the MSBs of the first and the second path metrics reach the first predetermined value.
According to another embodiment of the invention, a Viterbi decoder comprises a branch metrics unit, an add-compare-select (ACS) unit, and a survivor metrics unit. The branch metrics unit calculates branch metrics from input data. The add-compare-select (ACS) unit, coupled to the branch metrics unit, receives the branch metrics and second path metrics from a second ACS unit to generate first path metrics having a first bit-pair and a most significant bit-pair (MSB), and survivor metrics, where each bit-pair is in redundant representation having a high bit and a low bit, and comprises a limiting circuit, an MSB maximum selection (MS) unit, an MSB storage unit, and a reset unit. The first ACS circuit produces the first bit-pair of the first path metrics, a first carry, and the survivor metrics. The limiting circuit, coupled to the first ACS circuit, generates the MSB of the first path metrics based on the first carry, and limits the MSB of the first path metrics to a first predetermined value. The MSB maximum selection (MS) unit, coupled to the limiting circuit, receives an MSB of second path metrics from the other ACS unit, and compares the MSBs of the first and the second path metrics to determine MSB decision signals based on maximum likelihood selection. The MSB storage unit, coupled to the MSB maximum select unit, stores the MSB of the first path metrics as an MSB of a previous first path metric. The reset unit, coupled to the MSB maximum select unit and the MSB storage unit, resets the MSB of the first path metrics to a second predetermined value when the high bits of the MSBs of the first and the second path metrics reach the first predetermined value. The survivor metrics unit, coupled to the ACS unit, traces back the survivor path to decode the input data.
According to another embodiment of the invention, an add-compare-select (ACS) method for use in an ACS unit in a maximum likelihood decoder, generating first path metrics having a first bit-pair and a most significant bit-pair (MSB), where each bit-pair is in redundant number representation having a high bit and a low bit is disclosed. The ACS method comprises producing the first bit-pair of the first path metrics and a first carry, generating the MSB of the first path metrics based on the first carry, limiting the MSB of the first path metrics to a first predetermined value, comparing the MSBs of the first path metrics and second path metrics from another ACS unit to determine MSB decision signals based on maximum likelihood selection, storing the MSB of the first path metrics as an MSB of a previous first path metric, and resetting the MSB of the first path metrics to a second predetermined value when the high bits of the MSBs of the first and the second path metrics reach the first predetermined value.
The invention can be more fully understood by reading the subsequent detailed description and examples with references made to the accompanying drawings, wherein:
a is a portion of a trellis diagram with four-state convolutional data Dc and radix-2 algorithm.
b is a portion of a trellis diagram with four-state convolutional data Dc and radix-4 algorithm.
a is a block diagram of an exemplary ACS unit incorporated in the Viterbi decoder in
b is a circuit schematic of an exemplary ACS unit at bit-level, incorporated in the Viterbi decoder in
a is a circuit diagram of an exemplary code converter in
b is a truth table of code converter 1822, incorporating the code converter in
The following description is of the best-contemplated mode of carrying out the invention. This description is made for the purpose of illustrating the general principles of the invention and should not be taken in a limit sense. The scope of the invention is best determined by reference to the appended claims.
The scope of the invention may include, but is not limited to cellular, video/audio broadcasting, Local Area Networks (LANs), Wireless LANs (WLANs), satellite communications, and the like.
Convolutional encoder 10 is located at a transmitter end, encoding an m-bit symbol into n-bit convolutional data Dc, where n is larger than m and m/n is a code rate. Convolutional data Dc are error correction code with redundant bits generated by modulo-2 convolutions. Modulator 12 then modulates convolutional data Dc with a carrier frequency to generate modulated signal Sm, suitable for transmission over communication channel 14, and demodulator 16 demodulated the modulated signal back to convolutional data Dc.
After data transmission over a noisy communication channel 14, convolutional data Dc are received in Viterbi decoder 18 at a receiver end. Viterbi decoder 18 is a maximum likelihood decoder determining a most likely data sequence by estimating probabilities of transitions in convolutional data Dc.
In one embodiment, convolutional data Dc may be hard, i.e., binary number b′0 or b′1. In another embodiment, convolutional data Dc may be soft, i.e., multiple bits are employed for each data bit, representing data between 0 and 1. For example, convolutional data Dc conforming to gigabit Ethernet and 802.11n utilize 2-bit soft decision value, b′00 indicates the data bit is mostly close to data 0, b′01 indicating 33% between data 0 and data 1, b′10 is 66% between data 0 and data 1, and b′11 is mostly close to data 1.
Viterbi decoder 18 obtains convolutional data Dc in an input data block of n-bit to generate an output data block of m-bit, depending on the data rate thereof. For example, n is 2 for a ½ rate encoder, and n is 3 a ⅓ or ⅔ rate encoder. In some embodiments, convolutional data Dc is 2-bit soft encoded, thus Viterbi decoder 18 decodes on a basis of 2n-bit.
Viterbi decoder 18 utilizes maximum likelihood decoding to determine a particular code sequence with maximum likelihood in all possible code sequences. A transition of convolutional data Dc from one state to the next is referred to as a branch.
Branch metric unit 180 calculates distances between convolutional data Dc and code sequences predicted in corresponding branches to generate branch metrics BM. ACS unit 182 adds branch metrics BM to a corresponding prior path metric γj(t−1) to determine a current path metric γj(t) for each possible state and generates survivor metrics SM based thereon, which may be stored in a trace-back memory in survivor metrics unit 184. This process may be iterated until a decoding length is reached, which may be five to ten times the constraint length. Survivor metrics unit 184 traces back a survivor path through survivor metrics SM in the trace-back memory, thereby decoding a code sequence.
a is a portion of a trellis diagram with four-state convolutional data Dc and radix-2 algorithm, incorporating Viterbi decoder 2 in
Trellis diagram 3a depicts a process of an add-compare-select operation performed at each time stage. Time stages are separated by the time between receiving groups of input data (n-bit). Each convolutional data Dc may be in one of the four states at each stage, a trellis diagram calculates the probability of a convolutional data Dc in each respective state at each stage and selects a state with maximum likelihood to produce the survivor path. A path metric is computed by combining a previous path metric with a branch metric every stage, for example, path metric γ0(t) is combined with branch metrics λ00(t) to produce next path metric γ0(t+1) at time (t+1). At every stage two path metrics from two corresponding branches are compared to select the one with the maximum likelihood by a maximum select circuit or a minimum select circuit, depending on the used algorithm. In one embodiment the maximum select algorithm is implemented, ACS unit 182 computes path metrics (γ0(t)+λ00(t)) and (γ0(t)+λ10(t)), a maximum select circuit in ACS unit 182 then compares (γ0(t)+λ00(t)) and (γ0(t)+λ10(t)) to select a maximum for generating a survivor metric. While only two stages and four states are shown in
b is a portion of a trellis diagram with four-state convolutional data Dc and radix-4 algorithm, incorporating Viterbi decoder 2 in
At stage t, path metrics γ0(t), γ1(t), γ2(t), and γ3(t) are calculated, and path metrics γ0(t), γ1(t), γ2(t), and γ3(t) are further computed at stage (t+1) based on γ0(t), γ1(t), γ2(t), and γ3(t) and branch metrics λ00(t) through λ33(t). Radix-4 algorithm deploys 2-step look ahead technique, in which one iteration in ACS unit 182 is equivalent to 2 iterations in the non-look-ahead implementation in
a is a block diagram of an exemplary ACS unit incorporated in the Viterbi decoder in
Adder 1820 adds a branch metric to a previous path metric to produce a current path metric, code converter 1822 recodes the current path metric to simplify maximum likelihood selection circuits, maximum likelihood select unit 1824 receives the recoded current path metric and other recoded current path metric corresponding to another branch to select the one with the maximum likelihood therefrom.
Adder 1820 is a carry-save adder producing a current path metric in redundant number representation where an identical number may be represented by more than one form. For example, a current path metric may comprise 3 bit-pairs [xxx] representing a decimal number from 0 to 14, with x being a bit-pair representing 0, 1, or 2. In redundant number representation the 3 bit-pair [002] is equivalent to [010], and the 3 bit-pair [020] is equivalent to [100]. A carry-save adder always propagates each bit-pair “2” to a carry bit to the next higher bit-pair in the next clock cycle, such as [002] to [010] and [020] to [100]. The path metrics overflow when [2xx] in the most significant bit-pair propagates to the MSB output carry, even if the 3 bit-pair path metric has not reached [222].
b is a circuit schematic of an exemplary ACS unit at bit-level, excluding most significant bit-pair (MSB), incorporated in the Viterbi decoder in
a is a circuit diagram of an exemplary code converter in
Referring now to
ACS unit 182 utilizes a minimum number of bit-pairs, referred to as a minimum width, to prevent the path metrics from overflowing before the path metrics comparison process in the maximum likelihood select unit 1824 occurs.
Circle 6 comprises 0 through 31 positions thereon represented by 4 bit-pair numbers in redundant number representation alongside. Path metrics 60 and 62 are 4 bit-pair numbers, each holding one of 31 possible values positioned on circle 6. The comparison and selection process may be viewed as a race between path metrics 60 and 62 around circle 6. A constraint of determining a leader in the race is that the maximum difference between the two runners 60 and 62 is less than half the circumference of circle 6. For example, when path metric 60 is at position 30 and path metric 62 is at position 16, path metric 60 is the leader provided the maximum difference therebetween is less than 15. The maximum difference between any two path metrics, referred to as a dynamic range, is determined by a number of possible states and decoding stages. For example, in a 5-bit soft input, 64-state Viterbi decoder, the dynamic range is 180, resulting in 8 bit-pairs (0-511) a minimal width for ACS unit 182.
While 4 bit-pair number is deployed in
In one embodiment, Viterbi decoder 18 is a 4-state decoder, where each convolutional data Dc may be in one of states A, B, C, and D corresponding to ACS units 182a, b, c, and d. Each ACS unit 182 employs bit-pipelined and redundant number represented structure, in conjunction with most significant bit-pair circuit 70a to generate first path metric PM1 and first survivor metric SM1, providing minimal width to reduce circuit dimensions and manufacturing cost, while keeping performance and the critical path in ACS unit 182 unchanged. Each bit-pair in the redundant number representation comprises a high bit and a low bit, for example, a most significant bit-pair MSB comprises MSB high bit MSBH and MSB low bit MSBL.
Limiting circuit 700a receives and accumulates carry bit C from previous bit pair to generate current most significant bit-pair MSBc until reaching first predetermined value lim1, and limits current most significant bit-pair MSBc to value lim1. In one embodiment, first predetermined value lim1 is bit-pair “11”, limiting circuit 700a limits the current most significant bit-pair MSBc at maximum bit-pair “11”, preventing overflow of first path metric PM1.
MSB maximum select (MS) unit 702a compares current most significant bit-pairs MSBc from limiting circuit 700a and ACS units 182b, c, d to determine MSB decision signals based on maximum likelihood selection, thereby producing first survivor metric SM1 at the least significant bit-pair of ACS unit 182a. MSB maximum select (MS) unit 702a compares all four current most significant bit-pairs MSBc and selects the MSB decision signals corresponding to one with maximum likelihood. MSB decision signals may comprise preliminary decision bit dPM and final decision bit dFM, as disclosed in “A 550 Mb/s radix-4 bit-level pipelined 16-state 0.25-μm CMOS Viterbi decoder”, International Conference on Application Specific Systems, Architecture, and Processors on Jul. 10-12, 2000 by V/S Gierenz, O. Weiβ, T. G. Noll, I. Carew, J. Ashley, and R. Karabed, an implementation of MSB maximum select unit 702a may be also base thereon. Maximum likelihood selection may select maximum or minimum of current most significant bit-pairs MSBc from limiting circuit 700a and another ACS unit 182b.
MSB storage unit 704a receives current most significant bit-pair MSBc of first path metrics PM1 from MSB maximum select unit 702a to store therein. MSB storage unit 704a may be a register capable of holding a bit-pair and outputting previous most significant bit-pair MSBA.
Reset unit 706a compares bit-pairs MSBAH, MSBBH, MSBCH, MSBDH from ACS units 182a, b, c, and d with first predetermined value lim1. Upon previous bit-pairs MSBAH, MSBBH, MSBCH and MSBDH reaching first predetermined value lim1, reset unit 706a resets current most significant bit-pair MSBC to second predetermined value lim2. Second predetermined value lim2 may be bit-pair “00”, i.e., when previous most significant bit-pairs MSBAH through MSBDH reach “11”, reset units 706 a through d reset corresponding current bit-pairs MSBC to “00”. Referring to
Limiting circuit 700 combines carry bit c from previous bit-pair 72 with previous most significant bit-pair MSBA to generate current most significant bit-pair MSBc, and limits current most significant bit-pair MSBc to first predetermined value lim1. First OR gate 800 performs OR on carry bit c from previous bit-pair 82 and low bit MSBAL of previous most significant bit-pair MSBA to generate and limit low bit MSBCL of current most significant bit-pair MSBC to b′1′. First AND gate 802 performs an AND operation on carry bit c and low bit MSBAL to produce a fist AND output to second OR gate 804, where the first AND output in conjunction with high bit MSBAH of previous most significant bit-pair MSBA are ORed to output a second OR output to second AND gate 806, thereby producing and limiting high bit MSBCH of current most significant bit-pair MSBc to b′1′.
Reset unit 706 receives four high bits MSBAH from ACS units 182a through d, and resets high bit MSBCH of current most significant bit-pair MSBc to b′0′ when all high bits MSBAH reach a high bit of second predetermined value lim2. In the case where second predetermined value lim2 is ‘11’, Reset unit 706 resets high bit MSBCH to b′0′ when all high bits MSBAH reach b‘1’. Third AND gate 810 receives four high bits MSBAH from ACS units 182a through d, performs an AND operations on all four high bits MSBAH to generate a third AND output, an inverted third AND output in conjunction with the second OR output of second OR gate 804, are ANDed together in second AND gate 806 to reset high bit MSBCH of current most significant bit-pair MSBC to b′0′.
While the invention has been described by way of example and in terms of preferred embodiment, it is to be understood that the invention is not limited thereto. To the contrary, it is intended to cover various modifications and similar arrangements (as would be apparent to those skilled in the art). Therefore, the scope of the appended claims should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.