1. Field of the Invention
The present invention generally relates to signal decoders, like for example decoders of turbodecoder type. More specifically, the present invention relates to units used in such decoders, generally called ACSO (“Add-Compare-Select-Offset”) units, which perform additions to provide a plurality of data, then comparisons of the obtained data and a selection of one among the obtained data and offsets of the selected datum.
2. Discussion of the Related Art
One the aims of digital communications is faultless data transmission. During transmission, the data are submitted to noise, which may cause errors on the received data. To improve the reliability upon data transmission, error-correction techniques are used. A known error correction technique is the convolution coding. This technique provides an efficient error correction but requires sophisticated decoding techniques.
Error correction codes have a significant technical effect since they enable error correction on data transmitted between a transmitter and a receiver in applications such as telecommunications.
Convolution codes enable the digital data receiver to properly determine the transmitted data even when errors have occurred during transmission. Convolution codes introduce redundancies in the data to be transmitted and sequentially provide the transmitted data in packets in which the value of each bit depends on previous bits in the sequence. Thus, when errors occur, the receiver can deduce the original data by retracing the possible sequences of received data.
To improve the coding efficiency, coding methods comprise interleavers, which mix the bit order of the coded packet. Thus, when adjacent bits are altered during transmission, the error is distributed over the entire initial packet and can thus be more efficiently corrected.
Other improvements may comprise coders which code the data to be transmitted more than once, in parallel or in series. For example, error correction methods are known which transmit coded data packets for which each packet is formed by the juxta-position of initial uncoded data, of first coded data resulting from a coding of the initial data by a first coder, and of second coded data resulting from a coding of the initial data by a second coder preceded by an interleaver. Such an error correction method is called a systematic parallel convolutional coding (SPCC). Each transmitted data packet may correspond to a single bit of the initial data, and the coding is then said to be in monobinary mode; or correspond to a couple of bits (or “bibit”) of the initial data, and the coding is then said to be in duobinary mode.
It is known to decode by “turbodecoding” data coded in monobinary mode with an iterative algorithm, relatively efficient to achieve low error rates. Rather than immediately determining whether the received data are equal to “0” or to “1”, the receiver assigns to each received datum a value on a scale with several levels representing the probability for the datum to be equal to “1”. A conventional scale, usually called the log likelihood ratio LLR, represents each decoded datum x with an integer coded over a predetermined number of bits. For a received datum r, ratio LLR is determined as follows:
where Pr(x=1/r) represents the probability for decoded datum x to be equal to “1” for the received datum r and Pr(x=0/r) represents the probability for decoded datum x to be equal to “0” for the received datum r.
The iterative decoding method receives an input sequence corresponding to probabilities for each received value and outputs corrected probabilities. The iterative decoding is performed by several iterations after which the corrected probability sufficiently closely represents the transmitted datum.
The value of ratio LLR is then compared with a threshold to determine the value of decoded datum x. For example, the decoded datum is taken to be equal to “1” when ratio LLR is positive and to “0” otherwise. Ratio LLR thus contains both information representative of the value of decoded datum x and information representative of the reliability of the value of the decoded datum.
The calculation algorithm of ratio LLR is based on a lattice similar to that used in the Viterbi algorithm.
In practice, datum rk received at a time k is an analog datum. For a lattice branch connecting state Si,k to state Sm,k+1, a metric γk of the branch corresponding to a possible transition from state Si,k to state Sm,k+1 is determined. The branch metric corresponds to a distance between received datum rk and datum xk(Si,k, Sm,k+1) which should have been received for the branch. It may be calculated as follows:
where σ2 is the noise variance associated with received datum rk and γk(Si,k,Sm,k+1)=0 if there is no branch between states Si,k and Sm,k. Two categories of branch metrics can be distinguished hereafter:
The calculation algorithm of ratio LLR comprises three main steps.
At a time k, a forward probability αk(Si,k) of being at state Si,k is calculated for each state Si,k, i ranging from 1 to N, as follows:
For each state Si,k, with i ranging from 1 to N, a backward probability βk(Si,k) of being at state Si,k is also calculated at time k by the following equation:
From these two probabilities, ratio LLR is calculated as follows:
where B(k,0) (respectively B(k,1)) is the set of possible transitions from a state S1,k−1 to a state Si,k caused by an input datum equal to “0” (respectively, “1”).
The calculation of ratio LLR requires calculating multiplications and exponential values. Such operations are difficult to implement. For this purpose, the following function is introduced:
MAX+(x, y)=ln(ex+ey)=MAX(x, y)+ln(1+e=|x−y|) (6)
where term ln(1+e−|x−y|) is an offset value. The offset value may be obtained by means of a memory, for example, a ROM, in which are memorized values of function ln(1+e|v|) over a determined number of bits for certain values |v|coded over a determined number of bits. As a result:
The following definitions are thus introduced:
γk−1(Sm,n,Si,k)=log(γk1(Sm,n,Si,k))
γk−0(Sm,n,Si,k)=log(γk0(Sm,n,Si,k)) (8)
{overscore (α)}k(Si,k)=log αk(Si,k) (9)
Term {overscore (α)}k(Si,k) is called the forward state metric for state Si,k or forward path metric for state Si,k.
{overscore (β)}k(Si,k)=log(βk(Si,k)) (10)
Term {overscore (β)}k(Si,k) is called the backward state metric for state Si,k or backward path metric for state Si,k.
As a result:
The expression of ratio LLR becomes:
The calculations of forward metric {overscore (α)}k(Si,k) and backward metric {overscore (β)}k(Si,k) are performed by specific units of the decoder called ACSO (“ADD-COMPARE-SELECT-OFFSET) units that implement function MAX+.
The iterative operation of an ACSO unit implies forming several accumulations of a large number of sums of state and branch metrics within a time period smaller than the period separating the reception of two successive bits. Such an operating speed generally implies using redundant means in ACSO units, which makes the structure of these units more complex. Further, to limit the size of the adders used for accumulations without risking an information loss due to a saturation of the adders, the ACSO units comprise limiting means to, for example, when one of the accumulations exceeds a predetermined threshold, dividing all the accumulations by a predetermined value. Such means for limiting the accumulations also make the structure of ACSO units complex. ACSO units may also comprise means enabling compensation of a variation of the branch metric due to a variation in the transmission gain. Such gain compensation means have in particular the effect of increasing the size of the ROM in which are memorized the adjustment values, and make even more complex the preceding accumulation limiting means.
A coding in duobinary mode enables transmitting at an equal frequency the data with a greater rate than a coding in monobinary mode. No simple devices are however known to implement a decoding in duobinary mode.
An object of the present invention consists of providing a simple and low-cost device to implement a decoding in monobinary mode.
Another object of the present invention consists of providing a simple and low-cost device to implement a decoding in duobinary mode.
To achieve these and other objects, the present invention provides a device for implementing a function of add-compare-select-offset type in an error-correction code decoder, comprising:
The present invention also aims at a device for implementing a function of add-compare-select-offset type in an error-correction code decoder operating in duobinary mode, comprising:
According to an embodiment of the present invention, the calculation block comprises a subtractor for calculating the difference of the first and second values received by the calculation block, a multiplexer controlled by the output of the subtractor to generate on the first output of the calculation block the largest of the received values, and an approximation block for generating on the second output of the calculation block the adjustment value in the form of a value of one bit equal to 1 if said difference is equal to 0, 1, or −1, and equal to 0 otherwise.
According to an embodiment of the present invention, the approximation block comprises a first logic gate calculating a NOR of all the bits of said difference except for its least significant bit, a second logic gate calculating an AND of all the bits of said difference, and a third logic gate calculating an OR of the outputs of the first and second logic gates.
The present invention also aims at a decoder comprising 2N, where N is greater than 1, devices in duobinary mode such as described hereabove, each of which is associated with a specific N bit value, the decoder receiving data in the form of consecutive bibits;
The present invention also aims at a method for implementing a function of add-compare-select-offset type in an error-correction code decoder operating in monobinary mode, comprising the steps of:
The present invention also aims at a method for implementing a function of add-compare-select-offset type in an error-correction code decoder operating in duobinary mode, comprising the steps of:
According to an embodiment of the present invention, at step ii/, the value is selected by calculating the difference of the compared values and by providing the largest of the compared values based on the sign of said difference, and the adjustment value is generated as being a value of one bit equal to 1 if said difference is equal to 0, 1, or −1, and equal to 0 otherwise.
According to an embodiment of the present invention, the adjustment value is equal to the logic OR of a logic NOR of all the bits of said difference except for its least significant bit and of a logic AND of all the bits of said difference.
The present invention also aims at a method for decoding in a lattice comprising 2N, where N is greater than 1, states each associated with a specific N-bit value, data received in the form of consecutive bibits, comprising the steps of:
The foregoing objects, features, and advantages of the present invention will be discussed in detail in the following non-limiting description of specific embodiments in connection with the accompanying drawings.
In practice, like for a decoding in monobinary mode, a transmitted bibit is received at each time k in the form of an analog datum, and with each branch of the lattice is associated a branch metric γk calculated substantially in the same way as according to the preceding equation (2), calling rk the received analog value and xk the bibit which should have been received for the branch, or “received bibit”.
Four categories of branch metrics are distinguished hereafter:
The present inventors have shown that it is possible, for example, by following a lattice such as in
where B(k,00) (respectively B(k,01), B(k,10), B(k,11)) is the set of all possible transitions from a state Sm,k−1 to a state Si,k caused by an input bibit equal to “00” (respectively “01”, “10”, “11”).
The decoding is performed by comparing the calculated LLRs:
Values {overscore (α)}k−1, {overscore (β)}k are respectively calculated according to previous equations (9) and (10), with αk(Si,k), which is the forward probability of being at state Si,k, equal to:
and βk(Si,k), which is the backward probability of being at state Si,k, equal to:
The present inventors have in particular shown that:
with Sm1, Sm2, Sm3, Sm4 being the states preceding state Si (in the case of the calculation of α, and following state Si in the case of the calculation of β) for transitions respectively due to input bibits 00, 01, 10, and 11.
Above formulas (17) and (18) result in that each of forward and backward state metrics {overscore (α)}k(Si,k) and {overscore (β)}k(Si,k) can be calculated by an ACSO unit in duobinary mode according to the present invention, comprising two ACSO units in monobinary mode, each calculating the MAX+ of two sums of a state metric and of an associated branch metric, followed by a block calculating the MAX+ of the results of the ACSO units in monobinary mode.
The ACSO unit in duobinary mode DM comprises a first ACSO unit in monobinary mode MM1. Unit MM1 receives as an input data MI1, MI2, which respectively represent the first and second previous state metrics. Unit MM1 also receives data GI1, GI2, which represent branch metrics corresponding to the branches between the considered state and, respectively, the first and second adjacent states. Unit MM1 comprises two adders 10 and 11 respectively receiving as an input data MI1, GI1, and MI2, GI2. A calculation block 12 receives, on two inputs, values (a,b) output by adders 10 and 11. Calculation block 12 comprises a subtractor 13 calculating difference a−b. A multiplexer 14 receiving values a and b provides MAX1=MAX(a,b), that is, either value a or value b according to whether difference a−b is positive or negative (according to whether the sign bit of a−b is equal to 0 or 1). An approximation block 15 receives difference a−b and provides a value ADJ1 equal to 1 if difference a−b has a value equal to 0, 1, or −1, and a value equal to 0 otherwise. Value ADJ1 is shown to be an approximation coded over 1 bit of adjustment value ln(1+e−|a−b|). Block 15 for example comprises a logic gate 16 calculating a NOR of all the bits of difference a−b except for its least significant bit, a logic gate 17 calculating an AND of all the bits of difference a−b, and a logic gate 18 calculating an OR of the outputs of gates 16 and 17. An adder 19 provides sum MAXP1 of values MAX1 and ADJ1, where MAXP1=MAX+(a,b) in compliance with formula (6).
Duobinary ACSO unit DM comprises a second monobinary ACSO unit MM2 of same structure as unit MM1, generating a current state metric MAXP2 based on data MI3, MI4, GI3, and GI4 respectively representing the third and fourth previous state metrics and corresponding branch metrics. Same reference numerals in which the 1 of the ten's place has been replaced with a 2 refer to same elements in units MM1 and MM2.
Duobinary ACSO unit DM also comprises a calculation block 32 of same structure as calculation block 12 of unit MM1. Same reference numerals in which the 1 of the tens has been replaced with a 3 refer to same elements in blocks 12 and 32. Block 32 receives outputs MAXP1 and MAXP2 of units MM1 and MM2 and provides an adder 39 with a value MAX3 equal to the maximum of MAXP1 and MAXP2 and an adjustment value ADJ3 corresponding to ln(1+e−|MAXP1−MAXP2|). Output MAXP3 of adder 39 forms the output of unit DM. Unit DM operates preferably synchronously, and comprises data synchronization means not shown such as D flip-flops. Unit DM also preferably comprises reset means not shown, for example, enabling controllably setting back to 0 the outputs of adders 10 and 11 of unit MM1 and the corresponding adders of unit MM2.
The present inventors have shown that the performances of a decoder using a monobinary ACSO unit according to the present invention such as unit MM1, with a single-bit adjustment value ADJ1, are not under the performances of a decoder using a conventional monobinary ACSO unit with an adjustment value over several bits stored in a ROM. Indeed, a decoder comprises other systems (in particular upstream of the LLR calculation), the operation of which is more penalizing for the decoder performances, so that the use of a single-bit adjustment value has no influence on the general decoder performances. It can also be shown that a decoder using a DM unit with single-bit adjustment values ADJ1, ADJ2, and ADJ3 according to the present invention has performances which are as good as those of a decoder using a unit DM with adjustment values over several bits generated by means of ROMs, while having a size substantially reduced by the suppression of the ROMs.
State metric values MI1, MI2 are coded over a same number of bits n. According to the present invention and in particularly advantageous fashion, adders 10, 11, and 19 of unit MM1 operate modulo n without keeping the carry, to each provide an output coded over the same number of bits n. The present inventors have indeed found that upon implementation of above formulas (17) or (18), the maximum difference between sum a of MI1 and GI1 and sum b of MI2 and GI2 is always smaller than a predetermined value δ, as well as a+ADJ1−b or b+ADJ1−a. If n is chosen such that n≧2δ, the fact for the adders of unit MM1 to perform additions modulo n introduces no error in the calculation of the output value of unit MM1. Similarly, the values of state metrics MI3, MI4 are coded over n bits and the adders of unit MM2 as well as adder 39 operate with no keeping of the carry, whereby the value output by unit MM1 is also coded over n bits. Such an ACSO unit structure has the advantage of never being saturated while being particularly simple to implement. Further, such a structure advantageously comprises a single gain compensation means (not shown) on its input, and not a plurality of such means arranged at the level of the adders performing the accumulations in conventional ACSO units.
The four branch metric inputs GI1, GI2, GI3, GI4 of units DM0 and DM4 are connected to a block not shown providing upon reception of each bibit a branch metric {overscore (γ)}00 corresponding to the distance between value 00 and the value of the received bibit. Similarly, the branch metric inputs of the units, respectively DM1 and DM5, DM2 and DM6, DM3 and DM7 receive upon reception of each bibit values {overscore (γ)}01, {overscore (γ)}10, {overscore (γ)}11 corresponding to the distances between values 01, 10, 11 and the value of the received bibit.
Of course, the present invention is likely to have various alterations, modifications, and improvements which will readily occur to those skilled in the art. In particular, each of the described components may be replaced with one or several components performing the same function. Thus, the structures of unit MM1, of calculation block 12, or of block 15 may be similar to the corresponding structures described in European patent application number 03354009.7 filed by the applicant.
The present invention has been described in relation with a decoding according to an 8-state lattice such as in
Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the spirit and the scope of the present invention. Accordingly, the foregoing description is by way of example only and is not intended to be limiting. The present invention is limited only as defined in the following claims and the equivalents thereto.
| Number | Date | Country | Kind |
|---|---|---|---|
| 03/05648 | May 2003 | FR | national |
| Number | Date | Country | |
|---|---|---|---|
| 0223560 A1 | Nov 2004 | US |