Abstract:
An add-compare-select-offset device including first and second adders for generating values a and b respectively equal to the sum of first previous state and branch metrics and to the sum of second previous state and branch metrics, a calculation block for providing the greatest of values a and b on a first output and generating an adjustment value on a second output; and, a third adder for generating a current state metric equal to the sum of the outputs of the calculation block, wherein the adders perform additions without keeping the carry so that the current state metric and intermediary values a and b comprise the same number of bits as the first and second previous state metrics.

Description:
BACKGROUND OF THE INVENTION  
         [0001]    1. Field of the Invention  
           [0002]    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.  
           [0003]    2. Discussion of the Related Art  
           [0004]    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.  
           [0005]    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.  
           [0006]    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.  
           [0007]    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.  
           [0008]    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.  
           [0009]    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:  
               LLR        (   x   )       =     log        (       Pr        (     x   =     1   /   r       )         Pr        (     x   =     0   /   r       )         )               (   1   )                               
 
           [0010]    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.  
           [0011]    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.  
           [0012]    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.  
           [0013]    The calculation algorithm of ratio LLR is based on a lattice similar to that used in the Viterbi algorithm.  
           [0014]    [0014]FIG. 1 shows an example of a lattice with N states, N being equal to 4 in FIG. 1. Four states S i , i ranging from 1 to 4, are represented along the vertical direction. Different times k, k ranging from 1 to 5, are shown along the horizontal direction. Each point S i,k  of the lattice represents the i th  state at time k. A state may represent a sequence of a determined number of bits corresponding to the supposed state of several flip-flops of the convolution coder upon transmission. For a four-state lattice, each state may be associated with one of the sequences (“00”, “01”, “10”, “11”) corresponding to the supposed state of two flip-flops of the coder. A branch B represents a transition between a state at a time k and a state at a time k+1. The transition from one state to another corresponds to the reception by the decoder of a datum corresponding to a bit of value “0” or “1”. From a state at a time k, for example, state S 2,3 , there thus are but two possible transitions to states S 3,4  and S 4,4  according to whether the received datum is a bit of value “0” or “1”.  
           [0015]    In practice, datum r k  received at a time k is an analog datum. For a lattice branch connecting state S i,k  to state S m,k+1 , a metric γ k  of the branch corresponding to a possible transition from state S i,k  to state S m,k+1  is determined. The branch metric corresponds to a distance between received datum r k  and datum x k (S i,k , S m,k+1 ) which should have been received for the branch. It may be calculated as follows:  
                 γ   k          (       S     i   ,   k       ,     S     m   ,     k   +   1           )       =     exp        [       -     1     2                   σ   2                         r   k     -       x   k          (       S     i   ,   k       ,     S     m   ,     k   +   1           )              2       ]               (   2   )                               
 
           [0016]    where σ 2  is the noise variance associated with received datum r k  and γ k (S i,k ,S m,k+1 )=0 if there is no branch between states S i,k  and S m,k . Two categories of branch metrics can be distinguished hereafter:  
           [0017]    γ k   2 (S i,k ,S m,k+1 ), equal to γ k (S i,k ,S m,k+1 ) if the transition from state S i,k  to state S m,k+1  corresponds to an information bit at the coder input equal to 1, and equal to 0 otherwise; and  
           [0018]    γk 0 (S i,k ,S m,k+1 ), equal to γ k (S i,k ,S m,k+1 ) if the transition from state S i,k  to state S m,k+1  corresponds to an information bit at the coder input equal to 0, and equal to 1 otherwise.  
           [0019]    The calculation algorithm of ratio LLR comprises three main steps.  
           [0020]    At a time k, a forward probability α k (S i,k ) of being at state S i,k  is calculated for each state S i,k , i ranging from 1 to N, as follows:  
                 α   k          (     S     i   ,   k       )       =       ∑        =   1     N            ∑     j   =   0     1              α     k   -   1            (     S        ,     k   -   1         )              γ   k   j          (       S        ,     k   -   1         ,     S     i   ,   k         )                     (   3   )                               
 
           [0021]    For each state S i,k , with i ranging from 1 to N, a backward probability β k (S i,k ) of being at state S i,k  is also calculated at time k by the following equation:  
                 β   k          (     S     i   ,   k       )       =       ∑        =   1     N            ∑     j   =   0     1              β     k   +   1            (     S        ,     k   +   1         )              γ     k   +   1     j          (       S     i   ,   k       ,     S        ,     k   +   1           )                     (   4   )                               
 
           [0022]    From these two probabilities, ratio LLR is calculated as follows:  
               LLR        (     x   k     )       =     log                       ∑       (     i   ,        )     ∈     B        (     k   ,   1     )                    α     k   -   1            (     S        ,     k   -   1         )              γ   k   1          (       S        ,     k   -   1         ,     S     i   ,   k         )              β   k          (     S     i   ,   k       )               ∑       (     i   ,        )     ∈     B        (     k   ,   0     )                    α     k   -   1            (     S        ,     k   -   1         )              γ   k   0          (       S        ,     k   -   1         ,     S     i   ,   k         )              β   k          (     S     i   ,   k       )                       (   5   )                               
 
           [0023]    where B(k,0) (respectively B(k,1)) is the set of possible transitions from a state S 1,k−1  to a state  Si,k  caused by an input datum equal to “0” (respectively, “1”).  
           [0024]    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( e   x   +e   y )=MAX( x, y )+ln(1+ e   =|x−y|)    (6)  
           [0025]    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:  
                     ln        (       ∑     i   =   0     N               x   i         )       =       MAX   +          (       ln        (       ∑     i   =   0       N   -   1                 x   i         )       ,     x   i       )                   =       MAX   +          (         MAX   +          (       ln        (       ∑     i   =   0       N   -   2                 x   i         )       ,     x     N   -   1         )       ,     x   N       )                   =     …   =         MAX     i   ∈     [     1   ,   N     ]         +          (     x   i     )                       (   7   )                               
 
           [0026]    The following definitions are thus introduced:  
           γ k   −1 ( S   m,n   ,S   i,k )=log(γ k   1 ( S   m,n   ,S   i,k ))  
           γ k   −0 ( S   m,n   ,S   i,k )=log(γ k   0 ( S   m,n   ,S   i,k ))   (8)  
           {overscore (α)} k ( S   i,k )=log α k ( S   i,k )   (9)  
           [0027]    Term {overscore (α)} k (S i,k ) is called the forward state metric for state S i,k  or forward path metric for state S i,k .  
           {overscore (β)} k ( S   i,k )=log(β k ( S   i,k ))   (10)  
           [0028]    Term {overscore (β)} k (S i,k ) is called the backward state metric for state S i,k  or backward path metric for state S i,k .  
           [0029]    As a result:  
                   α   _     k          (     S     i   ,   k       )       =         MAX       (     i   ,   m     )     ∈     B        (     k   ,   j     )           +          (           α   _       k   -   1            (     S     m   ,     k   -   1         )       +       γ   k     -   j            (       S     m   ,     k   -   1         ,     S     i   ,   k         )         )               (   11   )                     β   _       k   -   1            (     S     i   ,     k   -   1         )       =         MAX       (     m   ,   i     )     ∈     B        (     k   ,   j     )           +          (           β   _     k          (     S     m   ,   k       )       +       γ   k     -   j            (       S     i   ,     k   -   1         ,     S     m   ,   k         )         )               (   12   )                               
 
           [0030]    The expression of ratio LLR becomes:  
                     LLR        (     x   k     )       =                  MAX       (     i   ,   m     )     ∈     B        (     k   ,   1     )           +          (           α   _       k   -   1            (     S     m   ,     k   -   1         )       +       γ   k     -   1            (       S     m   ,     k   -   1         ,     S     i   ,   k         )       +         β   _     k          (     S     i   ,   k       )         )       -                              MAX       (     i   ,   m     )     ∈     B        (     k   ,   0     )           +          (           α   _       k   -   1            (     S     m   ,     k   -   1         )       +       γ   k     -   0            (       S     m   ,     k   -   1         ,     S     i   ,   k         )       +         β   _     k          (     S     i   ,   k       )         )                     (   13   )                               
 
           [0031]    The calculations of forward metric {overscore (α)} k (S i,k ) and backward metric {overscore (β)} k (S i,k ) are performed by specific units of the decoder called ACSO (“ADD-COMPARE-SELECT-OFFSET) units that implement function MAX + .  
           [0032]    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.  
           [0033]    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.  
         SUMMARY OF THE INVENTION  
         [0034]    An object of the present invention consists of providing a simple and low-cost device to implement a decoding in monobinary mode.  
           [0035]    Another object of the present invention consists of providing a simple and low-cost device to implement a decoding in duobinary mode.  
           [0036]    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:  
           [0037]    first and second adders for generating first and second intermediary metric values a and b respectively equal to the sum of a first previous state metric and of an associated branch metric and to the sum of a second previous state metric and of an associated branch metric;  
           [0038]    a calculation block receiving values a and b, to compare values a and b, select the greatest of values a and b and provide said selected value on a first output, and to generate on a second output an adjustment value corresponding to an approximation of ln(1+e −|a−b| ); and  
           [0039]    a third adder for generating a current state metric equal to the sum of the outputs of the calculation block;  
           [0040]    wherein the first and second previous state metrics are coded over a same number of bits, and wherein the adders perform additions without keeping the carry so that the current state metric and intermediary values a and b comprise the same number of bits as the first and second previous state metrics.  
           [0041]    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:  
           [0042]    first and second devices such as described hereabove respectively comprising first and second calculation blocks for generating first and second current state metrics respectively from first and second previous state metrics and first and second associated branch metrics and from third and fourth previous state metrics and third and fourth associated branch metrics;  
           [0043]    a third calculation block such as described hereabove receiving as an input the first and second current state metrics; and  
           [0044]    an adder for generating a third current state metric equal to the sum of the outputs of the third calculation block, in which the previous state metrics are each coded over a same number of bits, said adder performing additions without keeping the carry so that the third current state metric comprises the same number of bits as the previous state metrics.  
           [0045]    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.  
           [0046]    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.  
           [0047]    The present invention also aims at a decoder comprising 2 N , 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;  
           [0048]    the output of each device associated with a first value being connected to provide one of the previous state metrics to four devices, each associated with a value, the N−2 most significant bits of which are the N−2 least significant bits of said first value and the two least significant bits of which respectively are one of the four possible values of the last received bibit;  
           [0049]    each device associated with a first value, the two least significant bits of which are one of the four possible values (00, 01, 10, 11) of a bibit receiving as branch metrics a value corresponding to a distance between the received bibit and said one of the four possible values of a bibit.  
           [0050]    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:  
           [0051]    i/ generating first and second intermediary metrics values, a and b, respectively equal to the sum of a first previous state metric and of an associated branch metric and to the sum of a second previous state metric and of an associated branch metric;  
           [0052]    ii/ comparing values a and b, selecting the largest of values a and b, and providing said selected value on a first output, and generating on a second output an adjustment value corresponding to an approximation of ln(1+e −|a−b| ); and  
           [0053]    iii/ generating a current state metric equal to the sum of the outputs of the calculation block;  
           [0054]    the first and second previous state metrics being coded over a same number of bits and the sums calculated at steps i/ and iii/ being performed without keeping the carry, so that the current state metric and intermediary values a and b comprise the same number of bits as the first and second previous state metrics.  
           [0055]    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:  
           [0056]    iv/ generating first and second current state metric according to the previously-described method in monobinary mode, respectively from first and second previous state metrics and from first and second associated branch metrics and from third and fourth previous state metrics and from third and fourth associated branch metrics;  
           [0057]    v/ providing a selected value and an approximation value calculated according to step ii/ of the previously-described method in monobinary mode, based on the first and second current state metric; and  
           [0058]    vi/ generating a third current state metrics equal to the sum of the values generated at step v/, the previous state metric being each coded over a same number of bits and said sum being calculated without keeping the carry so that the third current state metric comprises the same number of bits as the previous state metrics.  
           [0059]    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 I if said difference is equal to 0, 1, or −1, and equal to 0 otherwise.  
           [0060]    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.  
           [0061]    The present invention also aims at a method for decoding in a lattice comprising 2 N , 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:  
           [0062]    vii/ for the first received bibit, generating according to the previously-described decoding method in duobinary mode 2 N  current state metrics each associated with one of said values based on four predetermined initial previous state metrics and based on four identical branch metric corresponding to a distance between the received bibit and a value of the bibit equal to the two least significant bits of said one of said values;  
           [0063]    viii/ for each subsequently received bibit, generating according to the previously-described decoding method in duobinary mode 2 N  current state metric each associated with one of said values, taking for the four previous state metrics the four current state metrics generated for the previous received bibit and associated with a value, the N−2 least significant bits of which are the N−2 most significant bits of said one of said values, and taking for the four branch metrics a distance between the received bibit and a value of the bibit equal to the two least significant bits of said one of said values.  
           [0064]    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. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0065]    [0065]FIG. 1, previously described, shows an example of a lattice used for a monobinary decoding;  
         [0066]    [0066]FIG. 2 shows an example of a lattice used for a duobinary decoding according to the present invention;  
         [0067]    [0067]FIG. 3 shows an embodiment of an ACSO unit according to the present invention; and  
         [0068]    [0068]FIG. 4 shows an example of a decoding circuit corresponding to the lattice of FIG. 2 using ACSO units such as in FIG. 3. 
     
    
     DETAILED DESCRIPTION  
       [0069]    [0069]FIG. 2 shows an example of a lattice for decoding data coded in duobinary mode. The lattice comprises 5 columns, each comprising 8 states S i,j , where i=1-8 and j=1-5. Each column is associated with a different time corresponding to the reception of a new data bibit. For an eight-state lattice, each state may be associated with one of the sequences (“000”, “001”, “010”, “011”, “100”, “101”, “110”, “111”) of the internal states of the convolution coder. From each state at a time k (for example, state S 2,3 ), there are four possible transitions (in the considered example towards states S 5,4 , S 6,4 , S 7,4 , and S 8,4,  according to whether the received bibit has a value “00”, “01”, “10”, or “11”).  
         [0070]    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 r k  the received analog value and x k  the bibit which should have been received for the branch, or “received bibit”.  
         [0071]    Four categories of branch metrics are distinguished hereafter:  
         [0072]    γ k   00 (S i,k ,S m,k+1 ), equal to γ k (S i,k ,S m,k+1 ) if the transition from state S i,k  to state S m,k+1  corresponds to an information bibit at the coder input equal to 00, and equal to 0 otherwise;  
         [0073]    γ k   01 (S i,k ,S m,k+1 ), equal to γ k (S i,k ,S m,k+1 ) if the transition from state S i,k  to state S m,k+1  corresponds to an information bibit at the coder input equal to 01, and equal to 1 otherwise;  
         [0074]    γ k   10 (S i,k ,S m,k+1 ), equal to γ k (S i,k ,S m,k+1 ) if the transition from state S i,k  to state S m,k+1  corresponds to an information bibit at the coder input equal to 10, and equal to 0 otherwise;  
         [0075]    γ k   11 (S i,k ,S m,k+1 ), equal to γ k (S i,k ,S m,k+1 ) if the transition from state S i,k  to state S m,k+1  corresponds to an information bibit at the coder input equal to 11, and equal to 1 otherwise.  
         [0076]    The present inventors have shown that it is possible, for example, by following a lattice such as in FIG. 2, to measure at each time the probability for the received bibit to have one of the four possible values, by means of four ratios LLR each calculated as follows:  
                       LLR   00          (     x   k     )       =         MAX       (     i   ,   m     )     ∈     B        (     k   ,   00     )           +          (           α   _       k   -   1            (     S     m   ,     k   -   1         )       +       γ   k     -   00            (       S     m   ,     k   -   1         ,     S     i   ,   k         )       +         β   _     k          (     S     i   ,   k       )         )                       LLR   01          (     x   k     )       =         MAX       (     i   ,   m     )     ∈     B        (     k   ,   01     )           +          (           α   _       k   -   1            (     S     m   ,     k   -   1         )       +       γ   k     -   01            (       S     m   ,     k   -   1         ,     S     i   ,   k         )       +         β   _     k          (     S     i   ,   k       )         )                       LLR   10          (     x   k     )       =         MAX       (     i   ,   m     )     ∈     B        (     k   ,   10     )           +          (           α   _       k   -   1            (     S     m   ,     k   -   1         )       +       γ   k     -   10            (       S     m   ,     k   -   1         ,     S     i   ,   k         )       +         β   _     k          (     S     i   ,   k       )         )                       LLR   11          (     x   k     )       =         MAX       (     i   ,   m     )     ∈     B        (     k   ,   11     )           +          (           α   _       k   -   1            (     S     m   ,     k   -   1         )       +       γ   k     -   11            (       S     m   ,     k   -   1         ,     S     i   ,   k         )       +         β   _     k          (     S     i   ,   k       )         )                     (   14   )                               
 
         [0077]    where B(k,00) (respectively B(k,01), B(k,10), B(k,11)) is the set of all possible transitions from a state S m,k−1  to a state S i,k  caused by an input bibit equal to “00” (respectively “01”, “10”, “11”).  
         [0078]    The decoding is performed by comparing the calculated LLRs:  
         [0079]    if MAX(LLR 00 (x k ), LLR 01 (x k ), LLR 10 (x k ), LLR 11 (x k ))=LLR 00 (x k ), the decoded bibit is 00;  
         [0080]    if MAX(LLR 00 (x k ), LLR 01 (x k ), LLR 10 (x k ), LLR 11 (x k ))=LLR 01 (x k ), the decoded bibit is 01;  
         [0081]    if MAX(LLR 00 (x k ), LLR 01 (x k ), LLR 10 (x k ), LLR 11 (x k ))=LLR 10 (x k ), the decoded bibit is 10;  
         [0082]    if MAX(LLR 00 (x k ), LLR 01 (x k ), LLR 10 (x k ), LLR 11 (x k ))=LLR 11 (x k ), the decoded bibit is 11.  
         [0083]    Values {overscore (α)} k−1 , {overscore (β)} k  are respectively calculated according to previous equations (9) and (10), with α k (S i,k ), which is the forward probability of being at state S i,k,  equal to:  
                 α   k          (     S     i   ,   k       )       =       ∑        =   1     N            ∑       j   =   00     ,   01   ,   10   ,   11     3              α     k   -   1            (     S        ,     k   -   1         )              γ   k   j          (       S        ,     k   -   1         ,     S     i   ,   k         )                     (   15   )                               
 
         [0084]    and β k (S i,k ), which is the backward probability of being at state S i,k,  equal to:  
                 β   k          (     S     i   ,   k       )       =       ∑     l   =   1     N                       ∑       j   =   00     ,   01   ,   10   ,   11     3                         β     k   +   1            (     S     l   ,     k   +   1         )              γ     k   +   1     j          (       S     i   ,   k       ,     S     l   ,     k   +   1           )                     (   16   )                               
 
         [0085]    The present inventors have in particular shown that:  
                   α   _     k          (     S     i   ,   k       )       =       MAX   +     (       MAX   +     (             α   _       k   -   1            (     S     m1   ,     k   -   1         )       +       γ   k     -   00            (       S     m1   ,     k   -   1         ,     S     i   ,   k         )         ,                 (   17   )                              (           α   _       k   -   1            (     S     m2   ,     k   -   1         )       +       γ   k     -   01            (       S     m2   ,     k   -   1         ,     S     i   ,   k         )         )     ,                                            MAX   +     (             α   _       k   -   1            (     S     m3   ,     k   -   1         )       +       γ   k     -   10            (       S     m3   ,     k   -   1         ,     S     i   ,   k         )         ,                                            (           α   _       k   -   1            (     S     m4   ,     k   -   1         )       +       γ   k     -   11            (       S     m4   ,     k   -   1         ,     S     i   ,   k         )         )     )                           and                 that        :                                   β   _     k          (     S     i   ,     k   -   1         )       =       MAX   +     (       MAX   +     (             β   _     k          (     S     m1   ,   k       )       +       γ   k     -   00            (       S     i   ,     k   -   1         ,     S     m1   ,   k         )         ,                 (   18   )                              (           β   _     k          (     S     m2   ,   k       )       +       γ   k     -   01            (       S     i   ,     k   -   1         ,     S     m2   ,   k         )         )     ,                                            MAX   +     (             β   _     k          (     S     m3   ,   k       )       +       γ   k     -   10            (       S     i   ,     k   -   1         ,     S     m3   ,   k         )         ,                                            (           β   _     k          (     S     m4   ,   k       )       +       γ   k     -   11            (       S     i   ,     k   -   1         ,     S     m4   ,   k         )         )     )                                           
 
         [0086]    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.  
         [0087]    Above formulas (17) and (18) result in that each of forward and backward state metrics {overscore (α)} k (S i,k ) and {overscore (β)} k (S i,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.  
         [0088]    [0088]FIG. 3 shows an ACSO unit in duobinary mode MM 1  according to the present invention, enabling calculation of the state metric (forward and backward) of a considered state at a given time k. Hereafter, term “state metric” is indifferently used for a forward state metric and for a backward state metric and, when reference is made to a state adjacent to the considered state, this means a state at a time subsequent k+1 or prior k−1 to the considered state, according to the considered metric.  
         [0089]    The ACSO unit in duobinary mode DM comprises a first ACSO unit in monobinary mode MM 1 . Unit MM 1  receives as an input data MI 1 , MI 2 , which respectively represent the first and second previous state metrics. Unit MM 1  also receives data GI 1 , GI 2 , which represent branch metrics corresponding to the branches between the considered state and, respectively, the first and second adjacent states. Unit MM 1  comprises two adders  10  and  11  respectively receiving as an input data MI 1 , GI 1 , and MI 2 , GI 2 . 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 MAX 1 =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 ADJ 1  equal to 1 if difference a−b has a value equal to 0, 1, or −1, and a value equal to 0 otherwise. Value ADJ 1  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 MAXP 1  of values MAX 1  and ADJ 1 , where MAXP 1 =MAX + (a,b) in compliance with formula (6).  
         [0090]    Duobinary ACSO unit DM comprises a second monobinary ACSO unit MM 2  of same structure as unit MM 1 , generating a current state metric MAXP 2  based on data MI 3 , MI 4 , GI 3 , and GI 4  respectively representing the third and fourth previous state metrics and corresponding branch metrics. Same reference numerals in which the 1 of the ten&#39;s place has been replaced with a 2 refer to same elements in units MM 1  and MM 2 .  
         [0091]    Duobinary ACSO unit DM also comprises a calculation block  32  of same structure as calculation block  12  of unit MM 1 . 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 MAXP 1  and MAXP 2  of units MM 1  and MM 2  and provides an adder  39  with a value MAX 3  equal to the maximum of MAXP 1  and MAXP 2  and an adjustment value ADJ 3  corresponding to ln(1+e −|MAXP1−MAXP2| ). Output MAXP 3  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 MM 1  and the corresponding adders of unit MM 2 .  
         [0092]    The present inventors have shown that the performances of a decoder using a monobinary ACSO unit according to the present invention such as unit MM 1 , with a single-bit adjustment value ADJ 1 , 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 ADJ 1 , ADJ 2 , and ADJ 3  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.  
         [0093]    State metric values MI 1 , MI 2  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 MM 1  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 MI 1  and GI 1  and sum b of MI 2  and GI 2  is always smaller than a predetermined value δ, as well as a+ADJ 1 −b or b+ADJ 1 −a. If n is chosen such that n≧2δ, the fact for the adders of unit MM 1  to perform additions modulo n introduces no error in the calculation of the output value of unit MM 1 . Similarly, the values of state metrics MI 3 , MI 4  are coded over n bits and the adders of unit MM 2  as well as adder  39  operate with no keeping of the carry, whereby the value output by unit MM 1  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.  
         [0094]    [0094]FIG. 4 schematically shows an example of a circuit  40  using ACSO units in duobinary mode according to the present invention to perform a decoding based on the lattice of FIG. 2. Circuit  40  comprises eight ACSO units (DM 0 , DM 1 , DM 2 , DM 3 , DM 4 , DM 5 , DM 6 , DM 7 ). The four state metric inputs MI 1 , MI 2 , MI 3 , MI 4  of units DM 0 , DM 1 , DM 2 , and DM 3  are respectively connected to the outputs of units DM 0 , DM 2 , DM 4 , and DM 6 . The four state metric inputs MI 1 , MI 2 , MI 3 , MI4 of units DM 4 , DM 5 , DM 6 , and DM 7  are respectively connected to the outputs of units DM 1 , DM 3 , DM 5  and DM 7 . Units DM 0 , DM 1 , DM 2 , DM 3 , DM 4 , DM 5 , DM 6 , DM 7  are rated by a signal not shown to provide an output value upon reception of each bit.  
         [0095]    The four branch metric inputs GI 1 , GI 2 , GI 3 , GI 4  of units DM 0  and DM 4  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 DM 1  and DM 5 , DM 2  and DM 6 , DM 3  and DM 7  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.  
         [0096]    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 MM 1 , 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.  
         [0097]    The present invention has been described in relation with a decoding according to an 8-state lattice such as in FIG. 2, but those skilled in the art will readily adapt the present invention to a decoding according to other 8-state lattices or according to a 2 N -state lattice, where N is greater than 1.  
         [0098]    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.