WO2015107315A1 - Encoding and decoding linear code from lattices - Google Patents

Encoding and decoding linear code from lattices Download PDF

Info

Publication number
WO2015107315A1
WO2015107315A1 PCT/FR2015/050130 FR2015050130W WO2015107315A1 WO 2015107315 A1 WO2015107315 A1 WO 2015107315A1 FR 2015050130 W FR2015050130 W FR 2015050130W WO 2015107315 A1 WO2015107315 A1 WO 2015107315A1
Authority
WO
WIPO (PCT)
Prior art keywords
lattice
states
probabilities
elementary
symbols
Prior art date
Application number
PCT/FR2015/050130
Other languages
French (fr)
Inventor
Jean-Claude Carlach
Senad MOHAMED-MAHMOUD
Original Assignee
Orange
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Orange filed Critical Orange
Publication of WO2015107315A1 publication Critical patent/WO2015107315A1/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • H03M13/3916Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding for block codes using a trellis or lattice

Definitions

  • the field of the invention is that of coding and decoding of symbols, implementing an error correction code.
  • the invention relates more particularly to source symbol coding techniques, delivering coded symbol packets or a coded symbol stream comprising the source symbols and redundancy symbols, intended to be transmitted over a transmission channel (for example overhead or wired of wireless type, optical or electrical), or stored (s) in a material medium.
  • the invention also relates to corresponding decoding techniques, in particular for correcting the transmission errors inherent in the transmission channel.
  • wireless space and wireless terrestrial radio communications
  • digital television DAB digital radio
  • GSM or UMTS telephony WiFi radio network
  • future telecommunications systems such as future standards for television, radio broadcasting, voice, video and data applications (DVB, LTE, 4G, 5G, etc.), "Future Internet", or between vehicles, communicating objects or machines ...;
  • pattern recognition images, sounds, etc.
  • an error correction code is conventionally defined by:
  • n a length n, corresponding to the symbols at the output of the encoder (length codeword n formed of k source symbols and (n - k) redundancy symbols),
  • the minimum distance of a code d m i n is the minimum distance between two codewords. It allows to determine the maximum number of errors that the code can correct in a code word.
  • Calderbank-Forney-Vardyfl described the construction of elementary lattices.
  • the elementary lattices are constructed using the lines of either a generator matrix G or a parity check matrix H of the block code.
  • the lines g t of the matrix G are called generators and the code word c is thus obtained by making the weighted sum of the g; by the useful information bits Xj:
  • Each line g t generates a subcode of C denoted by C g
  • C g Let Ti be the trellis corresponding to the code C i, then the global trellis T representing the code C is obtained by the product of all the k elementary trellises:
  • FIG. 1 represents the elementary lattice 7 ⁇ corresponding to the generator gi in the case of a generator matrix.
  • FIGS. 2 and 3 For the preceding Hamming code (7, 4, 3), the two elementary lattices associated with the first two rows of its generating matrix above are represented in FIGS. 2 and 3.
  • T ⁇ (sie Î sr 1 ) ⁇ .
  • T The product of these two elementary lattices denoted by:
  • FIG. 4 represents the product Q of the two T 0 lattices. and previous TL in the case of a generator matrix.
  • a control matrix H of a block code C (n, k) is a matrix of size (n-k) x n. H is defined such that for every codeword c of C, it checks:
  • Each line of H is associated with an elementary lattice with two states 7j.
  • the global lattice T representing the code C is obtained by the Cartesian product of all (n-k) elementary lattices:
  • An elementary lattice Tj represents the ith line of the control matrix H of the code.
  • Each elementary lattice is constituted by a sequence of sections "section 0" and "section 1" according to the bit values of a line or generator of the matrix H defined by FIGS. 5a and 5b.
  • FIGS. 6a and 6b For the example of the preceding Hamming code (8.4.4), the two elementary lattices associated with the first two rows of its control matrix are represented respectively by FIGS. 6a and 6b.
  • FIG. 6a represents the elementary lattice T 0 corresponding to the generator 10000111.
  • FIG. 6b represents the elementary lattice T corresponding to the generator 01001011.
  • Tj®T j The product of these two elementary lattices of a control matrix denoted Tj®T j is defined by:
  • ⁇ , ⁇ , ⁇ ((sf, sj), (ef, e [), ef.
  • the product of two lattices thus carries out the Cartesian product of each of the three components of the triplet-branches but by suppressing the branches if e [ ⁇ ef.
  • the product lattice T 0 ®T 1 resulting from the product of the two elementary lattices T 0 and Tj represented respectively in FIGS. 6a and 6b is represented by FIG. 7.
  • the first method of rigorously optimal decoding known is to find exhaustively among all the words c, belonging to the code C, the one that is closest to the received word. This method outputs discrete values of symbols after decision, 0 or 1 if the alphabet is binary, it is said to decision "hard" (hard).
  • This exhaustive decoding method is of exponential complexity in 2 ⁇ , where k is the dimension of the code, and therefore very expensive and difficult to achieve. And so it does not currently allow decoding in real time codes larger than about k> 24.
  • the Viterbi algorithm is known [3]. This algorithm is used for the real-time decoding of convolutional codes and more generally for the decoding of all the codes described. by a trellis.
  • the Viterbi algorithm consists of looking for the shortest path in a tree built from the encoder lattice. This path therefore corresponds to the most probable sequence that is to say which is at the minimum distance of the received sequence.
  • This received sequence which corresponds to the received word to be decoded is for example a sequence of n binary data (hard decision).
  • the received sequence may be different from the coded sequence coming from the coder taking into account errors introduced during transmission between the coder used on transmission and the decoder used. at the reception.
  • the tree used for decoding in the case of a convolutional encoder has a "vertical" dimension equal to the number of possible states of the encoder, ie 2 m , where m is the code constraint length, that is to say the number of memory elements used during the coding, and a "horizontal" dimension called depth.
  • the algorithm builds according to a so-called forward phase a new section of the tree from each arrival node of the preceding section taken. as the starting node and to the arrival nodes of the new section.
  • the algorithm For each current node taken from the starting nodes of the new section of the tree, the algorithm examines all possible branches of the lattice and for each branch it determines a transition metric which is the distance between the branch label and the group of binary data received by the decoder. At each arrival node, if there are several branches that arrive there, the algorithm keeps only the branch that gives the minimum distance; the algorithm systematically eliminates one of two possible paths reaching each arrival node. The algorithm assigns to the arrival node, at the end of the path consisting of a succession of branches, a cumulative metric equal to the sum of the preceding cumulative metric and the transition metric of the selected branch.
  • the algorithm When the sequence of n binary data received has been fully traversed, the algorithm retains only the arrival node to which the lowest cumulative metric is allocated. Going up the tree from this node during a rising phase called “survivors", the algorithm determines the best path by performing a backward reading of decisions taken.
  • the basic principle of the Viterbi algorithm is in fact to consider in each node of the tree only the most probable path so as to make it possible to easily trace the lattice and thus to determine a posteriori an estimate of the value received. several moments of reception before.
  • This Viterbi algorithm uses as input hard information (ie symbols) or soft information (ie the sampled values of the received signal) but only outputs hard information (ie symbols): it is said that it is a "Soft-In-Hard-Out" decoding algorithm.
  • the trellis is formed of nodes connected by branches.
  • the nodes represent the different possible states of the encoder; there are 2 m states if the state vector, i.e. the length of the encoder memory, is of dimension m.
  • the branches represent the different possible transitions from one node to another (i.e. from a state of the encoder to the next state of the encoder) upon the arrival of an input bit. From each node, it leaves two branches respectively associated with the arrival of a "0" or a "1" at the input of the encoder.
  • the encoder state at time t is represented by the vector sj ⁇ state, ..., S j 771- l '').
  • the coder At each arrival of a bit x t at the input of the coder, the coder generates a codeword at the output
  • the label assigned to the branch consists of the input binary element x t and of the code word (°, c, ..., c 1 J) .
  • the encoder goes to the next state represented by the state vector (s t + l ' S t + l>'"' S Fig. 8 shows an example of a convolutional encoder with m equal to 2.
  • Fig. 9 shows a lattice section of the convolutional encoder of Fig. 8. The lattice of a convolutional encoder having 2 m states, according to FIG.
  • the trellis has four states considering that m equals two, and the state machine is invariant in time all sections are identical.
  • the states are indicated for the initial state and the final state, the values of the inputs x t and coded outputs (c °, c) are noted in labels on the branches transiting between two states.
  • each code word is represented by a different path in the trellis.
  • the composition of the code word is the concatenation of the labels of the branches that constitute the path found, that is to say the shortest path.
  • FIG. 10 represents a lattice formed by abutting three identical sections to the section shown in FIG. 9.
  • the succession of bold lines represents an example of a path (100, 010, 001), that is to say that for the input sequence (100) the obtained codeword is (001001) starting from the initial state (10) and arriving at the final state (00).
  • a final phase that merges the forward and backward phase state probabilities with the prior probability of each bit to compute the posterior probability of each bit.
  • SOVA soft-decision iterative decoding method of "Turbo codes” [5] called SOVA
  • the base of the soft-decision decoding of Turbo codes and LDPC codes is the Probability Propagation Algorithm (BP) [2] invented by Robert Gallager in 1961.
  • BP Probability Propagation Algorithm
  • This BP algorithm propagates probabilities along the branches. a graph of the code and aggregates them on the nodes of this same graph. This graph associated with the code is called the Tanner graph [6] of the code, it represents all the algebraic constraints that the symbols of a codeword must satisfy.
  • Turbocodes and LDPC codes (English Low-Density Parity Check) have very good performance in terms of error correction for codes of great length n, with n of the order of a few thousand bits at least (n> 1000).
  • turbo codes and LDPC codes have lower performances for codes of shorter length n (n ⁇ 1000) called short codes.
  • optimization of error correcting codes includes minimizing coding and decoding complexities in terms of hardware and energy costs consumed.
  • these problems of optimization of the decoding of the error-correcting codes are even more difficult to solve when the code lengths are small to medium, that is to say of the order of n ⁇ 1000.
  • the invention provides a soft code decoding method of coded symbols, including source symbols and redundancy symbols. These redundancy symbols are obtained by applying, to the coding, an error correction code (n, k) to the source symbols, setting implement a generator matrix G of size kn or a parity check matrix H of size (n-k) .n.
  • the method comprises:
  • each lattice Tj being described by a structure of n sections constructed from different base cells associated respectively with the different symbols of the alphabet and being described by the set of probabilities of its states comprising per stage a calculation step implementing a butterfly operator:
  • the invention thus proposes a new technique for decoding symbols coded with the aid of an error correction code providing soft decisions a posteriori per bit while having a complexity that increases in a polynomial or quadratic manner because of the function of k 2. and which therefore does not explode exponentially, that is to say in 2 k , with the dimension k of the code contrary to the known methods.
  • the method according to the invention does not make the product of k elementary trellises between them to obtain a lattice product global 2 k states as described for example by [1].
  • each elementary lattice corresponds to a row of the matrix or results from the product of at least two lines with the constraint that the calculation phase has at least two stages, so k ⁇ 8 if an elementary lattice is the product of two lines.
  • an elementary lattice thus has 2 m states with m the number of lines participating in the product to obtain the elementary lattice.
  • the method performs for a given stage products bearing only on at least two distinct elementary lattices.
  • the butterfly operator is a calculation operator which by a posterior probability calculation of the states on the product of at least two lattices ensures an interaction between these distinct elementary lattices.
  • the method does not internally use extrinsic probabilities on the bits of the code words but determines posterior probabilities of states.
  • the state probability propagation is fundamentally different from the existing bit probability propagation in a conventional Belief Propagation algorithm, and allows easy decoding of codes regardless of their length.
  • the invention makes it possible to reduce the number of iterations implemented during decoding, in particular compared to a "Belief Propagation" algorithm.
  • the calculation step implements at least one iteration of calculation of the posterior probabilities of the states of the lattice product knowing the probabilities of the states of the elementary lattices of the product and calculation of the posterior probabilities of the states of each one. lattices of the product knowing the posterior probabilities of the lattice states produced.
  • the step of calculating posterior probabilities proceeds iteratively.
  • the method can perform a first calculation of the posterior probabilities and can iterate one or more times this calculation.
  • the probabilities of the received samples are taken as a priori probabilities are taken into account as initialization values in the calculations of the 1st floor of the first iteration.
  • the probabilities of the samples received taken as prior probabilities are injected in whole or in part in the other stages.
  • the simulation results highlight an iteration gain for certain implementation conditions. More specifically, taking into account an erase channel that typically models packet losses for Internet applications and considering a code with a minimum distance dmin, the theoretical maximum number of erasures is (dmin-1). This maximum correction capacity is obtained with two iterations of the posterior probability calculations.
  • the decoding method further comprises an initialization phase during which for the 1st stage the probabilities of the states of the elementary lattices are initialized with the prior probabilities of the received symbols and for the following stages the state probabilities of elemental lattices are initialized to 1 ⁇ 2.
  • the calculation of the posterior probabilities of the lattice states produced comprises:
  • a rear propagation phase consisting in propagating state probabilities along the branches of the lattice produced.
  • the calculation of the posterior probabilities of the states of the elementary lattice product includes a first propagation phase before state probabilities in all the elementary trees, and a second phase of return propagation of the state probabilities in all the elementary trees, each phase being able to proceed in parallel, the process finally combines the probabilities of state before and back for the same section of the lattice produced and for the same state.
  • the calculation of the posterior probabilities of the states on the lattice product is carried out according to a BCJR or Viterbi-SOVA type algorithm.
  • the calculation of the posterior probabilities of the states of each of the elementary lattices of the lattice product is performed by marginalization from the posterior probabilities of the lattice states produced.
  • Marginalization is a technique known to those skilled in the art [8].
  • an elementary lattice corresponds to at least one line of the generator matrix or of the parity check matrix.
  • the trellis products intervene on sets of at least two elementary trellises.
  • the number of stages and the sets of at least two elementary lattices involved in the lattice products are determined by applying the rules below:
  • the set of lattice indices of sets of at least two elementary lattices form a permutation of the set ⁇ 0, 1, ⁇ ⁇ -, k-1],
  • the trellis products intervene on trellis pairs.
  • elementary and the lattice pairs involved in the lattice products are determined for the 1st stage:
  • the last permutation is calculated by considering an affine permutation: i-> 5 * i + 1 (mod k).
  • the alphabet is binary.
  • the number of stages is the rounded up value of Log (2, k).
  • the basic cell cello associated with one bit of the same matrix to zero is shown in Figure 5a and the basic unit cell ⁇ associated with one bit of the same matrix a is shown in Figure 5b.
  • the product of elementary mesh is determined from the product of the basic cells: cell ® 0 0 cell, cell 0 v ® cell, cel ® cell 0 and cell cel ® ⁇ res ectively equal to:
  • a decoding method according to the invention can be used to decode in particular a Hamming code (8.4.4).
  • the number of stages is two and the set of lattice indices of the lattice pairs form the following permutations:
  • a decoding method according to the invention can be used to decode in particular a Golay code (24, 12, 8).
  • the number of stages is four and the set of lattice indices of the lattice pairs form the following permutations:
  • a decoding method according to the invention can be used to decode in particular a QR code (48,24,12).
  • the number of stages is five and the set of lattice indices of the lattice pairs form the following permutations:
  • calculating means adapted to perform a multi-stage calculation, using elementary lattices Tj determined from the rows of the matrix, each lattice T; being described by a structure of n sections constructed from different base cells associated respectively with the different symbols of the alphabet and being described by the set of probabilities of its states comprising by stage a calculation step implementing a butterfly operator, to determine distinct elementary lattice products, to calculate on a lattice produces posterior probabilities of the states of the lattice product knowing the probabilities states of the elementary lattices and for calculating posterior probabilities of the states of each of the lattice members of the lattice product knowing the posterior probabilities of the states of the lattice produced,
  • computation means adapted to determine posterior probabilities associated with the decoded symbols from the posterior probabilities of the states of all the elementary lattices of the last stage.
  • Such a decoding device is particularly suitable for implementing the decoding method described above.
  • Such a decoder can of course include the various characteristics relating to the decoding method according to the invention, which can be combined or taken in isolation. Thus, the characteristics and advantages of this decoder are the same as those of the decoding method, and are therefore not detailed further.
  • decoder can be implemented in the form of a digital or analog integrated circuit, or in an electronic component of the microprocessor type.
  • decoding algorithm according to the invention can be implemented in various ways, in particular in hard-wired form or in software form.
  • the prior probabilities of the received symbols are initialized with the values of the symbols to be coded in the case of binary symbols and the redundancy symbols are forced with a probability of 1/2 in order to be able to use the decoder as an encoder.
  • the non-binary symbols are considered as vectors.
  • the invention therefore further relates to a method for encoding source symbols, delivering coded symbols comprising the source symbols and redundancy symbols.
  • the method comprises: a multistage calculation phase, using elementary lattices Tj determined from the rows of the matrix, each lattice Ti being described by a structure of n sections constructed from different base cells associated respectively with the different symbols of the alphabet and being described by the set of probabilities of its states, comprising by stage a calculation step implementing a butterfly operator:
  • the invention thus proposes a new source symbol encoding technique.
  • Such a coding method can of course include the various characteristics relating to the decoding method according to the invention.
  • the invention further relates to a corresponding encoder.
  • the encoder includes:
  • calculation means adapted to perform a multi-stage calculation, using elementary lattices Tj determined from the rows of the matrix, each lattice Tj being described by a structure of n sections constructed from different base cells associated respectively with the different symbols of the alphabet and being described by the set of probabilities of its states, comprising by stage a calculation step implementing a butterfly operator: to determine distinct elementary lattice products, to compute on a lattice produces posterior probabilities of the states of lattice product knowing the probabilities of lattice element lattice states and
  • calculation means adapted to determine posterior probabilities associated with. coded symbols Cj from the posterior probabilities of the states of all the elementary lattices of the last stage,
  • calculating means adapted to initialize the probabilities of the elementary lattice of statements 1 computation stage with the k source symbols and nk probabilities equal to 1 ⁇ 2 representing redundant symbols.
  • Such an encoder is particularly suitable for implementing the coding method described above.
  • Such an encoder can of course include the various characteristics relating to the coding method according to the invention, which can be combined or taken in isolation. Thus, the characteristics and advantages of this encoder are the same as those of the coding method, and are therefore not detailed further.
  • an encoder can be implemented as a digital or analog integrated circuit, or in an electronic microprocessor component.
  • the coding algorithm according to the invention can be implemented in various ways, in particular in hard-wired form or in software form.
  • the invention also relates to a device comprising a coder and a decoder of previously described symbols.
  • Such a device also called coded coder / decoder
  • coded coder / decoder can be implemented in the form of a digital or analog integrated circuit, or in a microprocessor-type electronic component.
  • the use of a codec makes it possible to pool the hardware resources used for coding and decoding.
  • such a codec may receive source symbols as input, and output coded symbols, or receive coded symbols as input, and output an estimate of the source symbols.
  • the invention relates to one or more computer programs comprising instructions for implementing a decoding method or coding method as described above, when the program or programs are executed by a processor.
  • Such programs can be stored on an information medium.
  • FIG. 1 represents the elementary lattice T t corresponding to the generator g t in the case of a generator matrix
  • FIG. 2 represents the elementary mesh T 0 which corresponds to the generator g Q - 0110100 for the example of the Hamming code (7,4,3),
  • FIG. 4 represents the product T Q of the two preceding lattices 70 and 7 in the case of a generator matrix
  • FIG. 6a represents the elementary mesh T 0 corresponding to the generator 10000111 for the example of the Hamming code (8.4.4),
  • FIG. 6b represents the elementary mesh T x corresponding to the generator 01001011 for the example of the Hamming code (8.4.4),
  • FIG. 7 represents the product lattice T Q ® 2 resulting from the product of the two elementary lattices T 0 and T x represented respectively in FIGS. 6a and 6b,
  • FIG. 8 is a diagram of an example of a convolutional encoder with a memory length m equal to two
  • FIG. 9 represents a trellis section of the convolutional coder of FIG. 8
  • FIG. 10 represents an example of a trellis with three four-state sections of the convolutional coder of FIG. 8,
  • FIG. 11 diagrammatically represents a coder COD and a decoder DECOD
  • FIG. 13 represents the main steps implemented by an encoder / decoder according to the invention
  • FIG. 15 represents an operator-butterfly network for an encoder / decoder of a code defined by a matrix comprising 4 lines according to the invention,
  • FIG. 16 represents the diagram of a complete coder / decoder according to the invention for a code defined by a matrix comprising 4 lines according to the invention (example the Hamming code (8.4.4)
  • FIG. 17 represents the diagram of a complete coder / decoder according to the invention for a code defined by a matrix comprising 12 lines according to the invention (example the Golay code (24, 12, 8),
  • FIG. 18 represents the diagram of a complete coder / decoder according to the invention for a code defined by a matrix comprising 24 lines according to the invention (example the QR code (48, 24, 12),
  • FIGS. 19a and 19b are diagrams of the simplified structures of an encoder and a decoder according to one embodiment of the invention, in particular for the case of elementary two-state lattices and butterfly operators processing sets of 2 ( ie couples) elementary lattices.
  • the invention performs for a given calculation stage products relating only to sets of at least two distinct elementary lattices and does not perform multiplication of k (respectively (nk)) elementary lattice between them to obtain a lattice global product 2 k (respectively 2 (n "!;)) states.
  • the invention makes interact elementary mesh each other by means of a throttle operator.
  • the propagation of interactions is made of extremely advantageously on state probabilities and not on bit probabilities which makes it insensitive to the cycles of the structure of the operator-butterfly network.
  • the invention offers a decoding technique that offers better performance than the techniques of the prior art with respect to good error-correcting codes such as: conventional algebraic codes, such as the Golay code (24,12,8), the QR code (48,24,12); turbo-codes; LDPC codes, etc.
  • conventional algebraic codes such as the Golay code (24,12,8), the QR code (48,24,12); turbo-codes; LDPC codes, etc.
  • the invention codes or decodes symbols belonging to a given alphabet. This one can be the binary alphabet. The following description is based on a binary alphabet knowing that the alphabet may just as well not be binary.
  • a coder COD takes as input k source data x and outputs a coded sequence of data Cj, j-0.1, ⁇ ⁇ ⁇ , (" - l) comprising the source data x and redundancy data r.
  • the linear error correction code of parameters (n, k) implements a matrix of binary data, this matrix being either generatrix G of dimension kxn or of parity check H of dimension (nk) xn.
  • the coded sequence c may be conveyed in a transmission channel CH or stored on a medium, and then decoded by a decoder DEC according to the invention.
  • a decoder DEC receives as input a sequence y of samples comprising the source data x and redundancy data r possibly tainted with error and delivers an estimate x of the source data.
  • each elementary generator or line of the matrix G respectively H is associated with a two-state elementary lattice, given that the symbols are taken from the binary alphabet ⁇ 0, 1 ⁇ with two symbols.
  • each elementary lattice thus has as many states that the alphabet contains symbols.
  • the invention preserves the k (respectively (n-k)) elementary lattices Ti with at least two states corresponding to the k (respectively (n-k)) lines L; of the matrix G (respectively H) and produces products on sets of at least two (i.e. distinct) elementary lattice pairs.
  • Each elementary lattice is described by a structure of n sections of index t, a section consisting of branches each represented by a triplet (starting state, branch label, arrival state) and by the set of probabilities of its components. states: ⁇ f ⁇ (sf) ⁇ .
  • a method according to the invention uses the k (respectively (nk)) elementary lattice T
  • the structure of the lattice T is constructed according to the invention from different basic cells respectively associated with the different symbols of the alphabet ensuring a minimum number of lattice states.
  • the basic cell cello associated with a bit of the matrix equal to zero is as follows:
  • the states denoted 0 and 1 are the states of entry and exit of a section in the horizontal direction.
  • a trellis is formed by the end-to-end sections themselves composed of branches.
  • a branch of a trellis section is a triplet (starting state, branch label, state of arrival).
  • a lattice can therefore be seen as a set of branches:
  • Each equation is associated with a two-state elemental lattice.
  • the elementary lattice T 0 associated with the generator 10000111 which corresponds to the first line L 0 of the matrix G and therefore to the boolean equation r 0 + x ] + x 2 - x 1 -0 is thus illustrated by FIG. 12a.
  • k is considered to be the number of rows in the matrix.
  • a method 1 according to the invention comprises a phase 2 of multistage calculation 3 which uses the elementary k trellises Ti.
  • the method comprises a calculation step 4, 5, 6 which implements a butterfly operator.
  • the butterfly operator determines 4 festive products. of distinct elementary lattices, T t and T j with i ⁇ j.
  • the product 2 ⁇ ®7j of two lattices of the same number n of sections of index t G ⁇ 0,1, ..., n-1 ⁇ is, according to Calderbank-Forney-Vardy [l], such that :
  • the lattice is the Cartesian product of each of the triplet components of the branches taken in pairs with the suppression of pairs of branches such as e j '.
  • the elementary mesh product is determined from the product of the basic cells: cell 0 ® cell 0, cell Q ® cell x, cell 0 and cell cel ® ® cell x respectively equal to:
  • this last butterfly operator makes an elementary lattice interact with 2 m states and an elementary lattice with 2 ⁇ states associated with rr lines of the matrix, if r ⁇ m this last operator-butterfly makes interact two trellises associated to the remaining m lines.
  • the method makes the lattices interact at least two by two
  • any butterfly operator performs interactions only between sets of at least two (here pairs of) lattices Ti and Tj distinct, i ⁇ j, the set of butterfly operators of the same stage covers, in a bijective manner, all the lattices: ie the indices of the lattices of one stage form a permutation of ⁇ 0, 1,. . . , k - 1 ⁇ ,
  • the interactions may be in the form of an overall matrix of at least two (in one embodiment: pairs of) elementary lattice indices that interact by means of a butterfly operator.
  • the sets of at least two (according to one embodiment: lattice pairs) involved in the lattice products are determined for the 1st stage:
  • the calculation phase has two floors, it corresponds to the re column and the 2 nd and last stage corresponds to the second column.
  • the method made to interact at the floor of the ⁇ couples calculation phase (Q T, and Tj (T 2, T 3 ) and during the 2 nd stage couples (T 0 , T 2 ) and TT 3 ) c & which can be represented by the diagram of Figure 15.
  • the butterfly operator furthermore performs a calculation of the posterior probabilities of the states on the product ®T j of two lattices T ⁇ and 7 ⁇ with i ⁇ j, then a calculation 6 of the posterior probabilities of the states of each of the two lattices T t and T-.
  • ⁇ operator butterfly calculates the posterior probabilities of the states on the product of the two trellis T t - and T ⁇ using a BCJR algorithm [4] adapted to obtain as output result vector the lattice state probabilities produced while the classical BCJR [4] algorithm provided the vector of the posterior probabilities of the bits.
  • the throttle operator performs the calculation of the posterior probabilities of the states of each of the two lattices T ⁇ and T- by marginalization.
  • a decoding method comprises an initialization phase.
  • the values of the received bits y are therefore only injected once in the decoding process.
  • the values of the received bits are injected in whole or in part as prior probabilities received in the other stages.
  • the decoding method according to the invention further comprises a phase of determining posterior probabilities associated with the decoded symbols from the posterior probabilities of the states of the elementary k trellises of the last stage. This determination amounts to merging all the information available on each decoded symbol between the elementary k trellises of the last stage:
  • the decoding method can be illustrated by the diagram of Figure 16.
  • the fusion provides the probabilities of the decoded bits: ⁇ Pi ⁇ (Xi ⁇ y) ⁇ knowing the received bits y.
  • the set of permutations is described by a matrix of six lines and four columns of pairs of indices:
  • the set of permutations is described by a matrix of twelve rows and five columns of pairs of indices:
  • the structure of the decoding algorithm is shown in FIG. 18.
  • the letters Ai, Bi, Ci, Di and Ei refer to the various butterfly operators.
  • a butterfly operator performs the calculation of the posterior states metrics on the product of the two lattices Ti and Tj according to a Viterbi-SOVA type algorithm [5].
  • FIGS. 1a and 19b show schematically the simplified structures of a coder COD and a decoder DEC according to one embodiment of the invention.
  • the encoder comprises a memory 10 comprising a buffer memory, a processing unit 11, equipped for example with a microprocessor ⁇ , and driven by the computer program 12, implementing the coding method according to an embodiment of the invention. 'invention.
  • the code instructions of the computer program 12 are for example loaded into a RAM memory before being executed by the processor of the processing unit 11.
  • the processing unit 11 receives as input source data x and delivers coded data c including the source and redundancy data.
  • the microprocessor of the processing unit 11 implements the steps of the coding method described above, according to the instructions of the computer program 12, for encoding the source data.
  • the encoder comprises, in addition to the buffer memory 10, a coding module for determining products T j ®Tj of distinct elementary lattices, T t and ⁇ - with i ⁇ j, to calculate by trellis product T t ®T j of the posterior probabilities of the states of the product ® T j knowing the probabilities of the states ÎPÎ * S ') ⁇ of the elementary lattices T ( and T j and to compute posterior probabilities of the states of each of the two lattices T t and T j knowing the posterior probabilities of the states of the lattice produced and to determine posterior probabilities associated with the coded symbols C.
  • This module is controlled by the microprocessor of the processing unit 11.
  • the decoder DEC comprises a memory 20 comprising a buffer memory, a processing unit 21, equipped for example with a ⁇ ocess microprocessor, and controlled by the computer program 22, implementing the decoding method according to an embodiment of FIG. the invention.
  • the code instructions of the computer program 22 are for example loaded into a RAM memory before being executed by the processor of the processing unit 21.
  • the processing unit 21 receives as input data encoded including source data and redundancy data, and provides an estimate of the source data.
  • the microprocessor of the processing unit 21 implements the steps of the decoding method described above, according to the instructions of the computer program 22, for decoding the coded data.
  • the decoder comprises, in addition to buffer memory 20, a decoding module for determining ® T j j products distinct elementary mesh, T; and ⁇ - with i ⁇ j, to calculate by product lattice T j ®T j posterior probabilities of the states of the product ®T j knowing the probabilities of the states ⁇ Pr (s) ⁇ of the elementary lattices T t and T. and for calculating posterior probabilities of the states of each of the two lattices T t and T. knowing the posterior probabilities of the states of the lattice product T t ®T-, and for determining posterior probabilities associated with the decoded symbols.
  • This module is controlled by the microprocessor of the processing unit 21.

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

The invention relates to an encoding and decoding method using a linear error-correcting code (n,k), which comprises a computation phase with a plurality of stages and, for each stage, a computation step implementing a butterfly operator: in order to determine T i T j products of separate elementary lattices, each elementary lattice being obtained from one of the k lines of the generator matrix or one of the n-k lines of the parity check matrix; in order to compute, on a T i T j product lattice, a posteriori probabilities of the states of the T i T j product, knowing the probabilities of the states of the elementary lattices; and in order to calculate a posteriori probabilities of the states of each of the two lattices T /. and T. knowing the a posteriori probabilities of the states of the T i T j product lattice, the method comprising a phase of determining a posteriori probabilities associated with the symbols decoded from the a posteriori probabilities of the states of the k or n-k elementary lattices of the last stage.

Description

CODAGE ET DÉCODAGE DE CODE LINÉAIRE À PARTIR DE TREILLIS  CODING AND DECODING LINEAR CODE FROM TREILLIS
Domaine de l'invention Field of the invention
Le domaine de l'invention est celui du codage et du décodage de symboles, mettant en oeuvre un code correcteur d'erreurs.  The field of the invention is that of coding and decoding of symbols, implementing an error correction code.
L'invention se rapporte plus particulièrement aux techniques de codage de symboles source, délivrant des paquets de symboles codés ou un flux de symboles codés comprenant les symboles source et des symboles de redondance, destiné(s) à être transmis sur un canal de transmission (par exemple aérien ou filaire de type hertzien, optique ou électrique), ou stocké(s) dans un support matériel. L'invention se rapporte également aux techniques de décodage correspondantes, permettant notamment de corriger les erreurs de transmission inhérentes au canal de transmission.  The invention relates more particularly to source symbol coding techniques, delivering coded symbol packets or a coded symbol stream comprising the source symbols and redundancy symbols, intended to be transmitted over a transmission channel ( for example overhead or wired of wireless type, optical or electrical), or stored (s) in a material medium. The invention also relates to corresponding decoding techniques, in particular for correcting the transmission errors inherent in the transmission channel.
L' invention trouve notamment des applications dans les domaines suivants :  The invention finds particular applications in the following fields:
la transmission d'information par télécommunications filaires électriques, comme dans les normes ADSL, ou optiques, sur fibres optiques ou en espace libre ;  the transmission of information by wired electrical telecommunications, as in the ADSL or optical standards, on optical fibers or in free space;
la transmission d'information dans les communications radios spatiales et terrestres sans fil (« wireless » en anglais), comme dans les systèmes de télévision numérique TNT, de radio numérique DAB, de téléphonie GSM ou UMTS, de réseau radio WiFi, et aussi dans les futurs systèmes de télécommunications, comme les futures normes pour des applications de télévision, de diffusion radio, de voix, de vidéo et de données (DVB, LTE, 4G, 5G,etc), « Internet du futur », ou entre véhicules, objets ou machines communicants ... ;  the transmission of information in space and wireless terrestrial radio communications ("wireless"), as in digital television, DAB digital radio, GSM or UMTS telephony, WiFi radio network, and also in future telecommunications systems, such as future standards for television, radio broadcasting, voice, video and data applications (DVB, LTE, 4G, 5G, etc.), "Future Internet", or between vehicles, communicating objects or machines ...;
la compression et la décompression de source d'informations ;  information source compression and decompression;
la génération et la détection de séquences dites d'embrouillage (« scrambling » en anglais) dans les systèmes CDMA ;  the generation and detection of so-called scrambling sequences in CDMA systems;
le stockage d'informations dans des mémoires de masse magnétiques, optiques, mécaniques ou électriques pour constituer des disques durs, ou des mémoires vives d'ordinateurs, ou des clés mémoire à interface de type USB... ;  storing information in magnetic, optical, mechanical or electrical mass memories for constituting hard disks, or RAMs of computers, or memory sticks with a USB type interface ...;
la correction d'informations lors des calculs dans un circuit intégré d'un microprocesseur ou dans un ordinateur ;  correcting information during calculations in an integrated circuit of a microprocessor or in a computer;
la reconnaissance de formes : images, sons, etc  pattern recognition: images, sounds, etc.
la robotique commandée par une intelligence artificielle à base de réseaux de neurone. Art antérieur  robotics controlled by an artificial intelligence based on neural networks. Prior art
De nombreuses techniques de codage permettent la correction d'erreurs de transmission au décodage en générant des symboles de redondance à partir de symboles source.  Many coding techniques allow the correction of decoding transmission errors by generating redundancy symbols from source symbols.
Ainsi, un code correcteur d'erreur est classiquement défini par :  Thus, an error correction code is conventionally defined by:
une longueur n, correspondant aux symboles en sortie du codeur (mot de code de longueur n formé de k symboles source et de (n - k) symboles de redondance), a length n, corresponding to the symbols at the output of the encoder (length codeword n formed of k source symbols and (n - k) redundancy symbols),
un nombre de bits ou de symboles d'information utiles k, correspondant aux symboles en entrée du codeur, encore appelées symboles source, et  a number of bits or useful information symbols k corresponding to the input symbols of the encoder, also called source symbols, and
une distance minimale d^.  a minimum distance d ^.
La distance minimale d'un code dmin correspond au minimum de distance entre deux mots de code. Elle permet de déterminer le nombre maximum d'erreurs que le code peut corriger dans un mot de code. The minimum distance of a code d m i n is the minimum distance between two codewords. It allows to determine the maximum number of errors that the code can correct in a code word.
Ainsi, plus la distance minimale dmin est grande, meilleur est le code correcteur d'erreurs, puisqu'il permet de détecter (dmin - l) symboles erronés et d'en corriger [(ίίηύη ^J °u l'opérateur désigne la partie entière). Thus, the greater the minimum distance dmin is, the better the error correcting code, since it allows to detect (d m i n - l) erroneous symbols and correct in [(ίίηύη - J ^ ° u the operator means the whole part).
Calderbank-Forney-Vardyfl] ont décrit la construction de treillis élémentaires. Les treillis élémentaires sont construits à l'aide des lignes soit d'une matrice génératrice G, soit d'une matrice de contrôle de parité H du code en bloc.  Calderbank-Forney-Vardyfl] described the construction of elementary lattices. The elementary lattices are constructed using the lines of either a generator matrix G or a parity check matrix H of the block code.
Un code en bloc C(n,k) est défini par une matrice génératrice G de dimensions k x n composée de k lignes et de n colonnes telle que pour tout bloc d'information x = χ0,Χχ, ... A block code C (n, k) is defined by a generative matrix G of dimensions kxn composed of k rows and n columns such that for any information block x = χ 0 , Χχ, ...
le mot de code c = (c0, clt ... , cn--1), obtenu par codage c'est-à-dire le produit vecteur-matrice de x et G est donné par : the code word c = (c 0 , c lt ..., c n-1 ), obtained by coding, that is to say the vector-matrix product of x and G is given by:
c = x. G (mod 2)  c = x. G (mod 2)
où la matrice G est telle que : where the matrix G is such that:
Figure imgf000004_0001
Figure imgf000004_0001
Les lignes gt de la matrice G sont appelées générateurs et le mot de code c est donc obtenu en faisant la somme pondérée des g; par les bits d'informations utiles Xj : The lines g t of the matrix G are called generators and the code word c is thus obtained by making the weighted sum of the g; by the useful information bits Xj:
fc-l  fc-l
c = ^ xt 9i c = ^ x t 9i
£=0  £ = 0
Chaque ligne gt génère un sous-code de C noté Cg Soit Ti le treillis correspondant au code Cgi alors le treillis global T représentant le code C est obtenu par le produit de tous les k treillis élémentaires : Each line g t generates a subcode of C denoted by C g Let Ti be the trellis corresponding to the code C i, then the global trellis T representing the code C is obtained by the product of all the k elementary trellises:
Les treillis T{ sont des treillis élémentaires à deux états. Chaque treillis représente deux mots de code : le mot de code zéro correspondant au bit d'information xt = 0 et le mot de code gj correspondant au bit d'information xt = 1. Chaque treillis élémentaire est donc composé de deux chemins représentant ces deux mots de code. Dans le cas d'une matrice G génératrice du code, la construction d'un treillis élémentaire et le produit de deux treillis sont décrits à partir de l'exemple du code de Hamming (n= 7, k=4, dmjn = 3) dont une matrice génératrice G4x7 est donnée par : The lattices T { are elementary lattices with two states. Each trellis represents two code words: the code word zero corresponding to the information bit x t = 0 and the code word g j corresponding to the information bit x t = 1. Each elementary trellis is therefore composed of two paths. representing these two codewords. In the case of a code generating matrix G, the construction of an elementary lattice and the product of two lattices are described from the example of the Hamming code (n = 7, k = 4, d m j n = 3) whose generator matrix G 4x7 is given by:
Ό 1 1 0 1 0 0>  Ό 1 1 0 1 0 0>
1 0 1 1 0 0 0  1 0 1 1 0 0 0
¾X7— 1 0 1 0 1 1 0  ¾X7- 1 0 1 0 1 1 0
α ο ο ο ι ο  α ο ο ο ι ο
Un treillis élémentaire Tj représente la ième ligne dans la matrice génératrice G du code. La figure 1 représente le treillis élémentaire 7^ correspondant au générateur gi dans le cas d'une matrice génératrice. Pour le code de Hamming (7,4,3) précédent, les deux treillis élémentaires associés aux deux premières lignes de sa matrice génératrice ci-dessus sont représentés aux figure 2 et 3. La figure 2 représente le treillis élémentaire TQ qui correspond au générateur g0 = 0110100. La figure 3 représente le treillis élémentaire 7 qui correspond au générateur g = 1011000. An elementary lattice T j represents the ith line in the generator matrix G of the code. FIG. 1 represents the elementary lattice 7 ^ corresponding to the generator gi in the case of a generator matrix. For the preceding Hamming code (7, 4, 3), the two elementary lattices associated with the first two rows of its generating matrix above are represented in FIGS. 2 and 3. FIG. 2 represents the elementary lattice T Q which corresponds to FIG. generator g 0 = 0110100. Figure 3 shows the elementary mesh 7 which corresponds to the generator g = 1011000.
Soient deux treillis élémentaires Tj et T, (i≠ j) définis tels que:  Let be two elementary lattices Tj and T, (i ≠ j) defined as:
T, = {(sieÎsr1)}. T, = {(sie Î sr 1 )}.
Tj = ίΟί Γ )}·  Tj = ίΟί Γ)} ·
Le produit de ces deux treillis élémentaires noté T;®Tjest défini par:  The product of these two elementary lattices denoted by T; is defined by:
W^ KCsf.sfJ. CefeeO. Cs S sH)}-W ^ KC s fsfJ. CefeeO. Cs S sH)} -
Le produit de deux treillis effectue donc le produit cartésien de leurs états et la somme les étiquettes de branches de transition entre ces états. Le treillis-produit TQ®^ résultant du produit des deux treillis élémentaires T0 et Tj représentés respectivement sur les Figures 2 et 3 est représenté par la figure 4. La figure 4 représente le produit TQ®^ des deux treillis T0 et T-L précédents dans le cas d'une matrice génératrice. The product of two lattices thus performs the Cartesian product of their states and the sum of the transitional branch labels between these states. The product lattice T Q ^ résultant resulting from the product of the two elementary lattices T 0 and T j respectively shown in FIGS. 2 and 3 is represented by FIG. 4. FIG. 4 represents the product Q of the two T 0 lattices. and previous TL in the case of a generator matrix.
Les treillis élémentaires peuvent tout aussi bien être construits à partir de la matrice de contrôle de parité du code. Une matrice de contrôle H d'un code en bloc C(n,k) est une matrice de taille (n— k) x n. H est définie telle que pour tout mot de code c de C, elle vérifie :  Elementary lattices can just as easily be constructed from the code parity check matrix. A control matrix H of a block code C (n, k) is a matrix of size (n-k) x n. H is defined such that for every codeword c of C, it checks:
0 (mod 2).  0 (mod 2).
A chaque ligne de H est associé un treillis élémentaire à deux états 7j. Le treillis global T représentant le code C est obtenu par le produit cartésien de tous les (n-k) treillis élémentaires :  Each line of H is associated with an elementary lattice with two states 7j. The global lattice T representing the code C is obtained by the Cartesian product of all (n-k) elementary lattices:
Dans le cas d'une matrice de contrôle H du code, la construction d'un treillis élémentaire et le produit de deux treillis sont décrits à partir de l'exemple du code de Hamming n= 8,k=4, d-min— 4) dont une matrice de contrôle ¾x8 est donnée par :
Figure imgf000005_0001
Un treillis élémentaire Tj représente la ième ligne de la matrice de contrôle H du code. Chaque treillis élémentaire est constitué par une suite des sections « section 0 » et « section 1 » selon les valeurs de bits d'une ligne ou générateur de la matrice H définit par les figures 5a et 5b. Les figures 5 a et 5b représentent respectivement les sections associées aux deux valeurs de bit (bit= 0 et bit =1) d'une ligne de la matrice de contrôle H du code. Pour l'exemple du code de Hamming(8,4,4) précédent, les deux treillis élémentaires associés aux deux premières lignes de sa matrice de contrôle sont représentés respectivement par les figures 6a et 6b. La figure 6a représente le treillis élémentaire T0 correspondant au générateur 10000111. La figure 6b représente le treillis élémentaire T correspondant au générateur 01001011.
In the case of a control matrix H of the code, the construction of an elementary lattice and the product of two lattices are described from the example of the Hamming code n = 8, k = 4, d-min- 4) whose control matrix ¾ x8 is given by:
Figure imgf000005_0001
An elementary lattice Tj represents the ith line of the control matrix H of the code. Each elementary lattice is constituted by a sequence of sections "section 0" and "section 1" according to the bit values of a line or generator of the matrix H defined by FIGS. 5a and 5b. FIGS. 5a and 5b respectively represent the sections associated with the two bit values (bit = 0 and bit = 1) of a line of the control matrix H of the code. For the example of the preceding Hamming code (8.4.4), the two elementary lattices associated with the first two rows of its control matrix are represented respectively by FIGS. 6a and 6b. FIG. 6a represents the elementary lattice T 0 corresponding to the generator 10000111. FIG. 6b represents the elementary lattice T corresponding to the generator 01001011.
Le produit de deux treillis élémentaires associés à deux lignes d'une matrice de contrôle est défini ci-après. Soient deux treillis élémentaires Tj et Tj (i≠ j) définis tels que: The product of two elementary lattices associated with two lines of a control matrix is defined below. Let be two elementary lattices Tj and T j (i ≠ j) defined such that:
Ti = {(si, efjS )} et Ti = {(sf, ef,s )}. T i = {(si, ef jS )} and Ti = {(sf, ef, s)}.
Le produit de ces deux treillis élémentaires d'une matrice de contrôle noté Tj®Tjest défini par : The product of these two elementary lattices of a control matrix denoted Tj®T j is defined by:
Τ,βΓΓ, = {((sf, sj), (ef, e[), ef .Τ, βΓΓ, = {((sf, sj), (ef, e [), ef.
Figure imgf000006_0001
Figure imgf000006_0001
Le produit de deux treillis effectue donc le produit cartésien de chacune des trois composantes des triplet-branches mais en supprimant les branches si e[≠ ef. Le treillis-produit T0®T1 résultant du produit des deux treillis élémentaires T0 et Tj représentés respectivement sur les figures 6a et 6b est représenté par la figure 7. The product of two lattices thus carries out the Cartesian product of each of the three components of the triplet-branches but by suppressing the branches if e [≠ ef. The product lattice T 0 ®T 1 resulting from the product of the two elementary lattices T 0 and Tj represented respectively in FIGS. 6a and 6b is represented by FIG. 7.
La première méthode de décodage rigoureusement optimale connue consiste à trouver de façon exhaustive parmi tous les mots c, appartenant au code C, celui qui est le plus proche du mot reçu. Cette méthode donne en sortie des valeurs discrètes de symboles après décision, 0 ou 1 si l'alphabet est binaire, elle est dite à décision "dure" (hard). Cette méthode de décodage exhaustive est de complexité exponentielle en 2^ , où k est la dimension du code, et donc très coûteuse et difficile à réaliser. Et donc elle ne permet pas de décoder actuellement en temps réel les codes de dimensions supérieures à environ k>24.  The first method of rigorously optimal decoding known is to find exhaustively among all the words c, belonging to the code C, the one that is closest to the received word. This method outputs discrete values of symbols after decision, 0 or 1 if the alphabet is binary, it is said to decision "hard" (hard). This exhaustive decoding method is of exponential complexity in 2 ^, where k is the dimension of the code, and therefore very expensive and difficult to achieve. And so it does not currently allow decoding in real time codes larger than about k> 24.
Parmi les méthodes de décodage des codes correcteurs linéaires utilisant des informations douces, il est connu l'algorithme de Viterbi [3], Cet algorithme est utilisé pour le décodage en temps réel des codes convolutifs et plus généralement pour le décodage de tous les codes décrits par un treillis. L'algorithme de Viterbi consiste à chercher le plus court chemin dans un arbre élaboré à partir du treillis du codeur. Ce chemin correspond donc à la séquence la plus probable c'est-à-dire qui est à la distance minimale de la séquence reçue. Cette séquence reçue qui correspond au mot reçu à décoder, est par exemple une séquence de n données binaires (décision dure). La séquence reçue peut être différente de la séquence codée issue du codeur compte tenu d'erreurs introduites lors de la transmission entre le codeur utilisé à l'émission et le décodeur utilisé à la réception. Among the methods for decoding linear correcting codes using soft information, the Viterbi algorithm is known [3]. This algorithm is used for the real-time decoding of convolutional codes and more generally for the decoding of all the codes described. by a trellis. The Viterbi algorithm consists of looking for the shortest path in a tree built from the encoder lattice. This path therefore corresponds to the most probable sequence that is to say which is at the minimum distance of the received sequence. This received sequence which corresponds to the received word to be decoded, is for example a sequence of n binary data (hard decision). The received sequence may be different from the coded sequence coming from the coder taking into account errors introduced during transmission between the coder used on transmission and the decoder used. at the reception.
L'arbre utilisé au décodage dans le cas d'un codeur convolutif a une dimension « verticale » égale au nombre d'états possibles du codeur, soit 2m, m étant la longueur de contrainte du code, c'est-à-dire le nombre d'éléments mémoires utilisés lors du codage, et une dimension « horizontale » appelée profondeur. A chaque nouvelle entrée d'un groupe de données binaires de la séquence reçue, l'algorithme construit selon une phase dite avant (« forward ») une nouvelle section de l'arbre à partir de chaque nœud d'arrivée de la section précédente pris comme nœud de départ et jusqu'aux nœuds d'arrivée de la nouvelle section. Pour chaque nœud courant pris parmi les nœuds de départ de la nouvelle section de l'arbre, l'algorithme examine toutes les branches possibles du treillis et pour chaque branche il détermine une métrique de transition qui est la distance entre l'étiquette de la branche et le groupe de données binaires reçu par le décodeur. A chaque nœud d'arrivée, s'il y a plusieurs branches qui y arrivent, l'algorithme ne garde que la branche qui donne la distance minimum ; l'algorithme élimine systématiquement un chemin parmi deux chemins possibles atteignant chaque nœud d'arrivée. L'algorithme attribue au nœud d'arrivée, à l'extrémité du chemin constitué d'une succession de branches, une métrique cumulée égale à la somme de la métrique cumulée précédente et de la métrique de transition de la branche retenue. Quand la séquence de n données binaires reçue a été parcourue entièrement, l'algorithme ne retient que le nœud d'arrivée auquel est attribuée la métrique cumulée la plus faible. En remontant l'arbre à partir de ce nœud au cours d'une phase de remontée dite «des survivants», l'algorithme détermine le meilleur chemin en effectuant une lecture à rebours des décisions prises. Le principe de base de l'algorithme de Viterbi est en effet de ne considérer en chaque nœud de l'arbre que le chemin le plus probable de façon à permettre de remonter aisément le treillis et donc de déterminer a posteriori une estimation de la valeur reçue plusieurs instants de réception auparavant. The tree used for decoding in the case of a convolutional encoder has a "vertical" dimension equal to the number of possible states of the encoder, ie 2 m , where m is the code constraint length, that is to say the number of memory elements used during the coding, and a "horizontal" dimension called depth. At each new entry of a binary data group of the received sequence, the algorithm builds according to a so-called forward phase a new section of the tree from each arrival node of the preceding section taken. as the starting node and to the arrival nodes of the new section. For each current node taken from the starting nodes of the new section of the tree, the algorithm examines all possible branches of the lattice and for each branch it determines a transition metric which is the distance between the branch label and the group of binary data received by the decoder. At each arrival node, if there are several branches that arrive there, the algorithm keeps only the branch that gives the minimum distance; the algorithm systematically eliminates one of two possible paths reaching each arrival node. The algorithm assigns to the arrival node, at the end of the path consisting of a succession of branches, a cumulative metric equal to the sum of the preceding cumulative metric and the transition metric of the selected branch. When the sequence of n binary data received has been fully traversed, the algorithm retains only the arrival node to which the lowest cumulative metric is allocated. Going up the tree from this node during a rising phase called "survivors", the algorithm determines the best path by performing a backward reading of decisions taken. The basic principle of the Viterbi algorithm is in fact to consider in each node of the tree only the most probable path so as to make it possible to easily trace the lattice and thus to determine a posteriori an estimate of the value received. several moments of reception before.
Cet algorithme de Viterbi utilise en entrée des informations dures (i.e des symboles) ou des informations douces (i.e. les valeurs échantillonnées du signal reçu) mais ne délivre en sortie que des informations dures (i.e des symboles) : on dit que c'est un algorithme de décodage "Soft-In- Hard-Out".  This Viterbi algorithm uses as input hard information (ie symbols) or soft information (ie the sampled values of the received signal) but only outputs hard information (ie symbols): it is said that it is a "Soft-In-Hard-Out" decoding algorithm.
Dans le cas d'un codeur convolutif binaire non-récursif, le treillis est formé de nœuds reliés par des branches. Les nœuds représentent les différents états possibles du codeur ; il y a 2m états si le vecteur d'état, c'est-à-dire la longueur de la mémoire du codeur, est de dimension m. Les branches représentent les différentes transitions possibles d'un nœud à un autre (c'est-à-dire d'un état du codeur à l'état suivant du codeur) lors de l'arrivée d'un bit d'entrée. De chaque nœud, il part deux branches associées respectivement à l'arrivée d'un « 0 » ou d'un « 1 » en entrée du codeur.In the case of a non-recursive binary convolutional encoder, the trellis is formed of nodes connected by branches. The nodes represent the different possible states of the encoder; there are 2 m states if the state vector, i.e. the length of the encoder memory, is of dimension m. The branches represent the different possible transitions from one node to another (i.e. from a state of the encoder to the next state of the encoder) upon the arrival of an input bit. From each node, it leaves two branches respectively associated with the arrival of a "0" or a "1" at the input of the encoder.
L'état du codeur à l'instant t est représenté par le vecteur d'état ^ sj, ... , Sj 771- l''). A chaque arrivée d'un élément binaire xt en entrée du codeur, le codeur génère en sortie un mot de codeThe encoder state at time t is represented by the vector sj ^ state, ..., S j 771- l ''). At each arrival of a bit x t at the input of the coder, the coder generates a codeword at the output
(cç , c , ... , Cf771-1'' l'étiquette affectée à la branche se compose de l'élément binaire d'entrée xt et du mot de code ( ° , c , ... , c 1 JJ. Juste après le codeur passe dans l'état suivant représenté par le vecteur d'état (s t+l' St+l> '" ' St+1 La figure 8 représente un exemple d'un codeur convolutif avec m égal à deux. La figure 9 représente une section de treillis du codeur convolutif de la figure 8. Le treillis d'un codeur convolutif ayant 2m états, selon l'exemple le treillis a quatre états compte tenu que m égal deux, et la machine d'état étant invariante dans le temps toutes les sections sont identiques. Les états sont indiqués pour l'état initial et l'état final, les valeurs des entrées xt et des sorties codées (c°, c ) sont notées en étiquettes sur les branches transitant entre deux états. (c, c, ..., Cf 771-1 '' the label assigned to the branch consists of the input binary element x t and of the code word (°, c, ..., c 1 J) . Just after the encoder goes to the next state represented by the state vector (s t + l ' S t + l>'"' S Fig. 8 shows an example of a convolutional encoder with m equal to 2. Fig. 9 shows a lattice section of the convolutional encoder of Fig. 8. The lattice of a convolutional encoder having 2 m states, according to FIG. For example, the trellis has four states considering that m equals two, and the state machine is invariant in time all sections are identical.The states are indicated for the initial state and the final state, the values of the inputs x t and coded outputs (c °, c) are noted in labels on the branches transiting between two states.
Ainsi, chaque mot de code est représenté par un chemin différent dans le treillis. La composition du mot de code est la concaténation des étiquettes des branches qui constituent le chemin trouvé, c'est-à-dire le plus court chemin. La figure 10 représente un treillis formé en aboutant trois sections identiques à la section représentée à la figure 9. La succession des traits en gras représente un exemple de chemin (100, 010, 001), c'est-à-dire que pour la séquence d'entrée (100) le mot codé obtenu est (001001) en partant de l'état initial (10) et en arrivant à l'état final (00).  Thus, each code word is represented by a different path in the trellis. The composition of the code word is the concatenation of the labels of the branches that constitute the path found, that is to say the shortest path. FIG. 10 represents a lattice formed by abutting three identical sections to the section shown in FIG. 9. The succession of bold lines represents an example of a path (100, 010, 001), that is to say that for the input sequence (100) the obtained codeword is (001001) starting from the initial state (10) and arriving at the final state (00).
Une variante de cet algorithme de Viterbi a été publiée en 1974, elle est dite "BCJR" [4] A variant of this Viterbi algorithm was published in 1974, it is called "BCJR" [4]
(acronyme du nom de ses inventeurs: Bahl, Cocke, Jelinek et Raviv). Cette variante utilise en entrée des informations douces (probabilités a priori) mais délivre en sortie des informations douces ou probabilités a posteriori pour chacun des bits : on dit que c'est un algorithme de décodage "Soft-In-Soft-Out" ou "SISO". Dans ce cas, il y a deux phases de parcours du treillis : une phase « forward » (respectivement une phase « backward ») qui accumulent les probabilités des états dans le sens des indices croissants t=0,l,..., n-1 des sections (respectivement dans le sens des indices décroissants t=n-l,n-2, 1,0) et une phase finale qui fusionne les probabilités d'état des phases forward et backward avec la probabilité a priori de chaque bit pour calculer la probabilité a posteriori de chaque bit. (Acronym of the names of its inventors: Bahl, Cocke, Jelinek and Raviv). This variant uses as input soft information (probabilities a priori) but outputs soft information or posterior probabilities for each of the bits: it is said that it is a decoding algorithm "Soft-In-Soft-Out" or " SISO ". In this case, there are two phases of trellis routing: a "forward" phase (respectively a "backward" phase) which accumulate the probabilities of the states in the direction of increasing indices t = 0, l, ..., n -1 sections (respectively in the direction of decreasing indices t = nl, n-2, 1.0) and a final phase that merges the forward and backward phase state probabilities with the prior probability of each bit to compute the posterior probability of each bit.
Les algorithmes de Viterbi et BCJR présentent une complexité trop grande due à la trop grande complexité des treillis et notamment de leurs trop grands nombres d' états et ce, même pour des codes ayant de modestes capacités de correction d'erreurs. Par exemple, un code (n=96,k=48,dmin=16) aurait un treillis tail-biting minimal de 212=4096 états. Dans l'algorithme BCJR les probabilités d'état « forward » sont notées at (m) et calculées telles que ci-dessous, et les probabilités a priori de branche notées Yt( n, m ) pour une transition de l'état m vers l'état m' dans la section d'indice t : at(m) =∑m'£rt_1(m')yt:(mJ m'). De même les probabilités d'état « backward » sont notées ?t(m) et calculées telles que : =∑mt+1(m')7i(7 i m').The Viterbi and BCJR algorithms are too complex due to the high complexity of the lattices and in particular their too large number of states, even for codes with modest error correction capabilities. For example, a code (n = 96, k = 48, dmin = 16) would have a minimum tail-biting lattice of 2 12 = 4096 states. In the BCJR algorithm the forward state probabilities are noted at t (m) and computed as below, and the branched prior probabilities Yt (n, m) for a transition of the state m to the state m 'in the section of index t: a t (m) = Σ m £ r t _ 1 (m') y t: (m J m '). Similarly, the "backward" state probabilities are noted t (m) and computed such that: = Σ m / t + 1 (m ') 7 i (7 i m').
Finalement, les probabilités a posteriori des bits sont calculées telles que : Finally, the posterior probabilities of the bits are calculated such that:
Prapp (bitt = v) =∑(in m-|i)££=v)œt(m)rt(m, m')^t(m') Parmi les techniques de décodage connues à décision douce permettant la correction d'erreurs de transmission, on distingue celle de Claude Berrou et Alain Glavieux de 1991 qui est une méthode de décodage itératif à décision douce des "Turbo codes" [5] dite SOVA et celle associée au décodage des codes LDPC. La base du décodage à décision douce des Turbo codes et des codes LDPC est l'algorithme à propagation de probabilités ou "BP" (Belief Propagation) [2] inventé par Robert Gallager en 1961. Cet algorithme BP propage des probabilités le long des branches d'un graphe du code et les agrège sur les nœuds de ce même graphe. Ce graphe associé au code est appelé graphe de Tanner [6] du code, il représente toutes les contraintes algébriques que doivent satisfaire les symboles d'un mot de code. Pr ap p (bit t = v) = Σ (in m - | i) £ = = v) - t (m) r t (m, m ' ) t (m') Among the decoding techniques known to decision soft allowing correction transmission errors, we distinguish that of Claude Berrou and Alain Glavieux of 1991 which is a soft-decision iterative decoding method of "Turbo codes" [5] called SOVA and that associated with the decoding of the LDPC codes. The base of the soft-decision decoding of Turbo codes and LDPC codes is the Probability Propagation Algorithm (BP) [2] invented by Robert Gallager in 1961. This BP algorithm propagates probabilities along the branches. a graph of the code and aggregates them on the nodes of this same graph. This graph associated with the code is called the Tanner graph [6] of the code, it represents all the algebraic constraints that the symbols of a codeword must satisfy.
Les turbo-codes et les codes LDPC (en anglais « Low-Density Parity Check ») présentent de très bonnes performances en termes de correction d'erreurs pour des codes de grande longueur n, avec n de l'ordre de quelques milliers de bits au moins (n > 1000).  Turbocodes and LDPC codes (English Low-Density Parity Check) have very good performance in terms of error correction for codes of great length n, with n of the order of a few thousand bits at least (n> 1000).
En revanche, les turbo-codes et les codes LDPC présentent des performances plus faibles pour des codes de plus petite longueur n (n < 1000) dits codes courts.  On the other hand, turbo codes and LDPC codes have lower performances for codes of shorter length n (n <1000) called short codes.
Ceci est en partie dû au fait que l'algorithme de propagation de probabilités BP utilisé au décodage ou ses variantes, devient sous-optimal au fur et à mesure que la longueur minimale des cycles diminue. On rappelle qu'un cycle correspond à un chemin fermé dans un graphe de Tanner représentant les contraintes que doivent remplir les symboles d'un mot pour être un mot du code. La notion de graphe de Tanner est bien connue, et notamment décrite dans l'article [7]. En effet, cet algorithme BP est optimal uniquement sur un graphe ayant la topologie d'un arbre ou d'une forêt d'arbres, la présence de cycles courts dégrade fortement les performances de l'algorithme BP de décodage itératif à décision douce.  This is partly due to the fact that the BP probability propagation algorithm used in the decoding or its variants becomes suboptimal as the minimum length of the cycles decreases. It is recalled that a cycle corresponds to a closed path in a Tanner graph representing the constraints that the symbols of a word must fulfill to be a word of the code. The notion of Tanner graph is well known, and in particular described in the article [7]. Indeed, this BP algorithm is optimal only on a graph having the topology of a tree or a forest of trees, the presence of short cycles greatly degrades the performance of the soft decision iterative decoding algorithm BP.
Un tel algorithme de propagation de probabilités n'est donc pas efficace pour des codes ayant des matrices génératrices très denses (i.e. ayant beaucoup de bits à 1) et donc pour des codes ayant d'excellentes distances de Hamming minimum relatives δ = dm[n I n . Such a probability propagation algorithm is therefore not effective for codes having very dense generator matrices (ie having many bits at 1) and therefore for codes having excellent minimum relative Hamming distances δ = d m [ n I n.
De plus, pour un usage industriel, l'optimisation des codes correcteurs d'erreurs comprend la minimisation des complexités de codage et de décodage en termes de coûts de matériel et d'énergie consommée. Or ces problèmes d'optimisation du décodage des codes correcteurs d'erreurs sont encore plus difficiles à résoudre quand les longueurs des codes sont petites à moyennes, c'est-à-dire de l'ordre de n < 1000.  In addition, for industrial use, optimization of error correcting codes includes minimizing coding and decoding complexities in terms of hardware and energy costs consumed. However, these problems of optimization of the decoding of the error-correcting codes are even more difficult to solve when the code lengths are small to medium, that is to say of the order of n <1000.
II existe donc un besoin pour une nouvelle technique de décodage des bons codes correcteurs d'erreurs notamment, c'est-à-dire des codes correcteurs d'erreurs présentant une distance minimale la plus grande possible, et présentant notamment des cycles très courts.  There is therefore a need for a new decoding technique good error correcting codes in particular, that is to say error correcting codes having a minimum distance as large as possible, and in particular having very short cycles.
Exposé de l'invention  Presentation of the invention
L'invention propose un procédé de décodage à décision douce de symboles codés, comprenant des symboles source et des symboles de redondance. Ces symboles de redondance sont obtenus en appliquant, au codage, un code correcteur d'erreurs (n, k) aux symboles source, mettant en œuvre une matrice génératrice G de taille k.n ou une matrice de contrôle de parité H de taille (n- k).n. The invention provides a soft code decoding method of coded symbols, including source symbols and redundancy symbols. These redundancy symbols are obtained by applying, to the coding, an error correction code (n, k) to the source symbols, setting implement a generator matrix G of size kn or a parity check matrix H of size (n-k) .n.
Selon l'invention, le procédé comprend :  According to the invention, the method comprises:
une phase de calcul à plusieurs étages, utilisant des treillis élémentaires Tj déterminés à partir des lignes de la matrice, chaque treillis Tj étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états comprenant par étage une étape de calcul mettant en œuvre un opérateur papillon :  a multistage calculation phase, using elementary lattices Tj determined from the rows of the matrix, each lattice Tj being described by a structure of n sections constructed from different base cells associated respectively with the different symbols of the alphabet and being described by the set of probabilities of its states comprising per stage a calculation step implementing a butterfly operator:
- pour déterminer des produits de treillis élémentaires distincts, pour calculer sur un treillis produit des probabilités a posteriori des états du produit de treillis connaissant les probabilités des états des treillis élémentaires du produit de treillis et  - to determine distinct elementary lattice products, to compute on a lattice produces posterior probabilities of the states of the lattice product knowing the probabilities of lattice element lattice states and
pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis connaissant les probabilités a posteriori des états du treillis produit,  for calculating posterior probabilities of the states of each of the lattice lattice products knowing the posterior probabilities of the lattice states produced,
une phase de détermination de probabilités posteriori associées aux symboles décodés à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage.  a phase of determination of posterior probabilities associated with the decoded symbols from the posterior probabilities of the states of all the elementary lattices of the last stage.
L'invention propose ainsi une nouvelle technique de décodage de symboles codés à l'aide d'un code correcteur d'erreurs fournissant des décisions douces a posteriori par bit tout en ayant une complexité qui augmente de façon polynomiale ou quadratique car fonction de k2 et qui, par conséquent n'explose pas de façon exponentielle, c'est-à-dire en 2k, avec la dimension k du code contrairement aux méthodes connues. The invention thus proposes a new technique for decoding symbols coded with the aid of an error correction code providing soft decisions a posteriori per bit while having a complexity that increases in a polynomial or quadratic manner because of the function of k 2. and which therefore does not explode exponentially, that is to say in 2 k , with the dimension k of the code contrary to the known methods.
En effet, le procédé selon l'invention n'effectue pas le produit de k treillis élémentaires entre eux pour obtenir un treillis produit global à 2k états comme décrit par exemple par [1]. Indeed, the method according to the invention does not make the product of k elementary trellises between them to obtain a lattice product global 2 k states as described for example by [1].
En fonction du mode de réalisation, chaque treillis élémentaire correspond à une ligne de la matrice ou résulte du produit d'au moins deux lignes avec pour contrainte que la phase de calcul a au moins deux étages donc k≥ 8 si un treillis élémentaire est le produit de deux lignes. Dans un alphabet binaire, un treillis élémentaire a donc 2m états avec m le nombre de lignes participant au produit pour obtenir le treillis élémentaire. According to the embodiment, each elementary lattice corresponds to a row of the matrix or results from the product of at least two lines with the constraint that the calculation phase has at least two stages, so k≥ 8 if an elementary lattice is the product of two lines. In a binary alphabet, an elementary lattice thus has 2 m states with m the number of lines participating in the product to obtain the elementary lattice.
Selon l'invention, le procédé effectue pour un étage donné des produits portant uniquement sur au moins deux treillis élémentaires distincts. L'opérateur papillon est un opérateur de calcul qui par un calcul de probabilité a posteriori des états sur le produit d'au moins deux treillis assure une interaction entre ces treillis élémentaires distincts. En outre, de manière particulièrement notable le procédé n'utilise pas en interne des probabilités extrinsèques sur les bits des mots de code mais détermine des probabilités a posteriori d'états. Cette caractéristique fondamentale permet d'obtenir des estimations optimales de probabilités de bits uniquement à la fin de l'algorithme et permet ainsi de s'affranchir du problème des cycles courts dans un graphe de Tanner du code mis en œuvre dans les méthodes connues de décodage de type « Belief-Propagation » telles qu'utilisées pour les Turbo codes et les codes LDPC et permet donc de décoder en temps réel des codes de petites longueurs (n<1000). According to the invention, the method performs for a given stage products bearing only on at least two distinct elementary lattices. The butterfly operator is a calculation operator which by a posterior probability calculation of the states on the product of at least two lattices ensures an interaction between these distinct elementary lattices. In addition, particularly noticeably, the method does not internally use extrinsic probabilities on the bits of the code words but determines posterior probabilities of states. This fundamental characteristic makes it possible to obtain optimal estimates of bit probabilities only at the end of the algorithm and thus makes it possible to overcome the problem of short cycles in a Tanner graph of the code implemented in the known "Belief-Propagation" type decoding methods as used for Turbo codes and LDPC codes and thus allows to decode in real time codes of short lengths (n <1000).
La propagation de probabilité d'états est fondamentalement différente de la propagation de probabilité de bits existant dans un algorithme classique de type « Belief Propagation », et permet un décodage facilité des codes quelle que soit leur longueur.  The state probability propagation is fundamentally different from the existing bit probability propagation in a conventional Belief Propagation algorithm, and allows easy decoding of codes regardless of their length.
En outre, l'invention permet de diminuer le nombre d'itérations mises en œuvre au décodage en particulier comparativement à un algorithme de type propagation de probabilités (« Belief Propagation »).  In addition, the invention makes it possible to reduce the number of iterations implemented during decoding, in particular compared to a "Belief Propagation" algorithm.
Du fait de cette structure en treillis élémentaires qui permet d'effectuer une estimation des probabilités a posteriori d'états de ces treillis élémentaires, l'estimation récursive des probabilités d'états de ces treillis élémentaires est insensible aux cycles dans le réseau d'opérateurs-papillon.  Because of this elementary lattice structure which makes it possible to estimate the posterior probabilities of states of these elementary lattices, the recursive estimation of the state probabilities of these elementary lattices is insensitive to cycles in the network of operators. -butterfly.
Selon un mode de réalisation, l'étape de calcul met en œuvre au moins une itération de calcul des probabilités a posteriori des états du treillis produit connaissant les probabilités des états des treillis élémentaires du produit et de calcul des probabilités a posteriori des états de chacun des treillis du produit connaissant les probabilités a posteriori des états du treillis produit.  According to one embodiment, the calculation step implements at least one iteration of calculation of the posterior probabilities of the states of the lattice product knowing the probabilities of the states of the elementary lattices of the product and calculation of the posterior probabilities of the states of each one. lattices of the product knowing the posterior probabilities of the lattice states produced.
Selon ce mode de réalisation, l'étape de calcul de probabilités a posteriori se déroule de manière itérative. Ainsi, le procédé peut effectuer un premier calcul des probabilités a posteriori et peut itérer une ou plusieurs fois ce calcul. Selon un mode de réalisation simple, les probabilités des échantillons reçus y prises comme probabilités a priori ne sont prises en compte comme valeurs d'initialisation que lors des calculs du 1er étage de la première itération. Selon un autre mode de réalisation, les probabilités des échantillons reçus y prises comme probabilités a priori sont injectées en totalité ou partiellement dans les autres étages. Les résultats de simulation mettent en avant un gain d'itération pour certaines conditions de mise en œuvre. Plus particulièrement, en prenant en compte un canal à effacements qui modélise typiquement les pertes de paquet pour des applications Internet et en considérant un code avec une distance minimale dmin, le nombre maximum théorique d'effacements est égal à (dmin-1). Cette capacité de correction maximale est obtenue avec deux itérations des calculs de probabilité a posteriori. According to this embodiment, the step of calculating posterior probabilities proceeds iteratively. Thus, the method can perform a first calculation of the posterior probabilities and can iterate one or more times this calculation. According to a simple embodiment, the probabilities of the received samples are taken as a priori probabilities are taken into account as initialization values in the calculations of the 1st floor of the first iteration. According to another embodiment, the probabilities of the samples received taken as prior probabilities are injected in whole or in part in the other stages. The simulation results highlight an iteration gain for certain implementation conditions. More specifically, taking into account an erase channel that typically models packet losses for Internet applications and considering a code with a minimum distance dmin, the theoretical maximum number of erasures is (dmin-1). This maximum correction capacity is obtained with two iterations of the posterior probability calculations.
Selon un mode de réalisation, le procédé de décodage comprend en outre une phase d'initialisation au cours de laquelle pour le 1er étage les probabilités des états des treillis élémentaires sont initialisées avec les probabilités a priori des symboles reçus et pour les étages suivants les probabilités d'états des treillis élémentaires sont initialisées à ½. According to one embodiment, the decoding method further comprises an initialization phase during which for the 1st stage the probabilities of the states of the elementary lattices are initialized with the prior probabilities of the received symbols and for the following stages the state probabilities of elemental lattices are initialized to ½.
Ces valeurs d'initialisation permettent d'obtenir de bonnes estimées en n'utilisant qu'une seule fois les valeurs y reçues. L'algorithme effectuant ensuite de façon récursive ces calculs sur les probabilités d'états des k treillis, il effectue de façon virtuelle une propagation et un « moyennage » de ces probabilités d'états sur le treillis produit global de tous les treillis élémentaires. These initialization values make it possible to obtain good estimates by using only the values y received once. The algorithm then recursively performs these computations on the state probabilities of the k lattice, and performs virtual propagation and averaging. of these state probabilities on the global lattice of all elementary lattices.
Selon un mode de réalisation, le calcul des probabilités a posteriori des états du treillis produit comprend :  According to one embodiment, the calculation of the posterior probabilities of the lattice states produced comprises:
- une phase de propagation avant, consistant à propager des probabilités d'état le long des branches du treillis produit et  a propagation phase before, consisting in propagating state probabilities along the branches of the lattice produced and
- une phase de propagation arrière, consistant à propager des probabilités d'état le long des branches du treillis produit.  a rear propagation phase, consisting in propagating state probabilities along the branches of the lattice produced.
En d'autres termes, le calcul des probabilités a posteriori des états du produit de treillis élémentaires comprend une première phase de propagation avant des probabilités d'état dans tous les arbres élémentaires, et une deuxième phase de propagation retour des probabilités d'état dans tous les arbres élémentaires, chaque phase pouvant se dérouler en parallèle, le procédé combine en final les probabilités d'état avant et arrière pour une même section du treillis produit et pour un même état.  In other words, the calculation of the posterior probabilities of the states of the elementary lattice product includes a first propagation phase before state probabilities in all the elementary trees, and a second phase of return propagation of the state probabilities in all the elementary trees, each phase being able to proceed in parallel, the process finally combines the probabilities of state before and back for the same section of the lattice produced and for the same state.
Selon un mode de réalisation, le calcul des probabilités a posteriori des états sur le produit de treillis est effectué selon un algorithme de type BCJR ou de type Viterbi-SOVA.  According to one embodiment, the calculation of the posterior probabilities of the states on the lattice product is carried out according to a BCJR or Viterbi-SOVA type algorithm.
Selon un mode de réalisation, le calcul des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis est effectué par marginalisation à partir des probabilités a posteriori des états du treillis produit. La marginalisation est une technique connue de l'homme du métier [8].  According to one embodiment, the calculation of the posterior probabilities of the states of each of the elementary lattices of the lattice product is performed by marginalization from the posterior probabilities of the lattice states produced. Marginalization is a technique known to those skilled in the art [8].
Selon un mode de réalisation, un treillis élémentaire correspond à au moins une ligne de la matrice génératrice ou de la matrice de contrôle de parité.  According to one embodiment, an elementary lattice corresponds to at least one line of the generator matrix or of the parity check matrix.
Selon un mode de réalisation, les produits de treillis interviennent sur des ensembles d'au moins deux treillis élémentaires. Le nombre d'étages et les ensembles d'au moins deux treillis élémentaires intervenant dans les produits de treillis sont déterminés en appliquant les règles ci- dessous :  According to one embodiment, the trellis products intervene on sets of at least two elementary trellises. The number of stages and the sets of at least two elementary lattices involved in the lattice products are determined by applying the rules below:
par étage, l'ensemble des indices des treillis des ensembles d'au moins deux treillis élémentaires forme une permutation de l'ensemble {0, 1, · · -, k— l] ,  per stage, the set of lattice indices of sets of at least two elementary lattices form a permutation of the set {0, 1, · · -, k-1],
tout ensemble d'au moins deux treillis élémentaires n'apparaît qu'une seule fois dans l'ensemble des étages de calcul,  any combination of at least two elementary lattices only appears once in all the calculation stages,
- il existe au moins un chemin entre tout opérateur papillon du 1er étage et tout opérateur papillon du dernier étage. - there is at least one path between any operator butterfly 1st floor and all butterfly operator of the top floor.
L'existence du chemin assure que tout treillis élémentaire influence tout autre treillis élémentaire. L'ensemble des règles précédentes permet de faire interférer un nombre de fois minimum les treillis élémentaires deux par deux (directement ou indirectement) mais suffisant pour obtenir une bonne estimation finale.  The existence of the path ensures that any elementary lattice influences any other elementary lattice. The set of previous rules allows to interfere a minimum number of times the elementary lattice two by two (directly or indirectly) but sufficient to obtain a good final estimate.
Selon un mode de réalisation, les produits de treillis interviennent sur des couples de treillis élémentaires et les couples de treillis intervenant dans les produits de treillis sont déterminés pour le 1er étage : According to one embodiment, the trellis products intervene on trellis pairs. elementary and the lattice pairs involved in the lattice products are determined for the 1st stage:
en effectuant une partition par couples à partir d'une permutation identité d'ordre k qui permet d'obtenir une matrice de k/2 lignes et deux colonnes,  by performing a partition in pairs starting from a permutation identity of order k which makes it possible to obtain a matrix of k / 2 rows and two columns,
en transposant la matrice obtenue pour obtenir une matrice à deux lignes et k/2 colonnes et mettant à plat cette matrice pour obtenir une liste de couples, et pour un étage suivant :  by transposing the matrix obtained to obtain a matrix with two lines and k / 2 columns and flattening this matrix to obtain a list of pairs, and for a following stage:
en répétant les opérations précédentes en partant de la liste des couples de l'étage précédent pour obtenir des permutations successives.  repeating the previous operations starting from the list of couples of the previous stage to obtain successive permutations.
Selon ce dernier mode de réalisation, si k n'est pas une puissance de deux, la dernière permutation est calculée en considérant une permutation affine : i-> 5*i+l (mod k).  According to this last embodiment, if k is not a power of two, the last permutation is calculated by considering an affine permutation: i-> 5 * i + 1 (mod k).
Selon un mode de réalisation l'alphabet est binaire.  According to one embodiment, the alphabet is binary.
Selon un mode de réalisation le nombre d'étages est l'arrondi par valeur supérieure de Log(2,k).  According to one embodiment the number of stages is the rounded up value of Log (2, k).
Selon un mode de réalisation la cellule de base cello associée à un bit de la matrice égal à zéro est représentée à la figure 5a et la cellule de base cell} associée à un bit de la matrice égal à un est représentée à la figure 5b. According to one embodiment the basic cell cello associated with one bit of the same matrix to zero is shown in Figure 5a and the basic unit cell} associated with one bit of the same matrix a is shown in Figure 5b.
Selon ce dernier mode de réalisation, le produit de treillis élémentaires est défini à partir des produit des cellules de base : cell0 ® cell0 , cell0 ® cellv , cel ® cell0 et cel ® cell} res ectivement égaux à : According to the latter embodiment, the product of elementary mesh is determined from the product of the basic cells: cell ® 0 0 cell, cell 0 v ® cell, cel ® cell 0 and cell cel ®} res ectively equal to:
Figure imgf000013_0001
Figure imgf000013_0001
Un procédé de décodage selon l'invention peut être utilisé pour décoder en particulier un code de Hamming (8,4,4). Le nombre d'étages est de deux et l'ensemble des indices des treillis des couples de treillis forme les permutations suivantes :  A decoding method according to the invention can be used to decode in particular a Hamming code (8.4.4). The number of stages is two and the set of lattice indices of the lattice pairs form the following permutations:
Figure imgf000013_0002
Figure imgf000013_0002
Un procédé de décodage selon l'invention peut être utilisé pour décoder en particulier un code de Golay (24,12,8). Le nombre d'étages est de quatre et l'ensemble des indices des treillis des couples de treillis forme les permutations suivantes : A decoding method according to the invention can be used to decode in particular a Golay code (24, 12, 8). The number of stages is four and the set of lattice indices of the lattice pairs form the following permutations:
Figure imgf000014_0001
Figure imgf000014_0001
Un procédé de décodage selon l'invention peut être utilisé pour décoder en particulier un code QR (48,24,12). Le nombre d'étages est de cinq et l'ensemble des indices des treillis des couples de treillis forme les permutations suivantes :  A decoding method according to the invention can be used to decode in particular a QR code (48,24,12). The number of stages is five and the set of lattice indices of the lattice pairs form the following permutations:
Figure imgf000014_0002
Figure imgf000014_0002
LL''iinnvveennttiioonn aa eenn oouuttrree ppoouurr oobbjjeett uunn ddééccooddeeuurr dd''uunnee ssééqquueennccee dd''éécchhaannttiilllloonnss rreeççuuss yy ccoorrrreessppoonnddaanntt,, aapprrèèss ttrraannssmmiissssiioonn,, àà uunnee ssééqquueennccee cc ccooddééee ddee ssyymmbboolleess CCjj,, yy == 00,,11,,
Figure imgf000014_0003
obtenue en appliquant au codage un code correcteur d'erreurs linéaires de paramètres (n, k) à k symboles source mettant en œuvre une matrice génératrice de dimension k.n ou une matrice de contrôle de parité de dimension (n-k).ndes symboles codés, les symboles appartenant à un alphabet donné. Le décodeur comprend :
LL''iinnvveennttiioonn iinn aa oouuttrree ffoorr oobbjjeett AANN ddééccooddeeuurr dd''uunnee ssééqquueennccee dd''éécchhaannttiilllloonnss rreeççuuss yy ccoorrrreessppoonnddaanntt aapprrèèss ttrraannssmmiissssiioonn ,, ,, ttoo tthhee uunnee ssééqquueennccee cc ccooddééee ssyymmbboolleess CC dd yy == ,, 00,, 11 ,,
Figure imgf000014_0003
obtained by applying to the coding a linear error correction code of parameters (n, k) with k source symbols implementing a kn dimension generating matrix or a size parity check matrix (nk). symbols belonging to a given alphabet. The decoder includes:
un moyen de calcul adapté pour effectuer un calcul à plusieurs étages, utilisant des treillis élémentaires Tj déterminés à partir des lignes de la matrice, chaque treillis T; étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états comprenant par étage une étape de calcul mettant en œuvre un opérateur papillon, pour déterminer des produits de treillis élémentaires distincts, pour calculer sur un treillis produit des probabilités a posteriori des états du produit de treillis connaissant les probabilités des états des treillis élémentaires et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis connaissant les probabilités a posteriori des états du treillis produit, calculating means adapted to perform a multi-stage calculation, using elementary lattices Tj determined from the rows of the matrix, each lattice T; being described by a structure of n sections constructed from different base cells associated respectively with the different symbols of the alphabet and being described by the set of probabilities of its states comprising by stage a calculation step implementing a butterfly operator, to determine distinct elementary lattice products, to calculate on a lattice produces posterior probabilities of the states of the lattice product knowing the probabilities states of the elementary lattices and for calculating posterior probabilities of the states of each of the lattice members of the lattice product knowing the posterior probabilities of the states of the lattice produced,
un moyen de calcul adapté pour déterminer des probabilités a posteriori associées aux symboles décodés à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage.  computation means adapted to determine posterior probabilities associated with the decoded symbols from the posterior probabilities of the states of all the elementary lattices of the last stage.
Un tel dispositif de décodage est notamment adapté à mettre en œuvre le procédé de décodage décrit précédemment.  Such a decoding device is particularly suitable for implementing the decoding method described above.
Un tel décodeur peut bien sûr comporter les différentes caractéristiques relatives au procédé de décodage selon l'invention, qui peuvent être combinées ou prises isolément. Ainsi, les caractéristiques et avantages de ce décodeur sont les mêmes que ceux du procédé de décodage, et ne sont donc pas détaillés plus amplement.  Such a decoder can of course include the various characteristics relating to the decoding method according to the invention, which can be combined or taken in isolation. Thus, the characteristics and advantages of this decoder are the same as those of the decoding method, and are therefore not detailed further.
On note qu'un tel décodeur peut être implémenté sous la forme d'un circuit intégré numérique ou analogique, ou dans un composant électronique de type microprocesseur. Ainsi, l'algorithme de décodage selon l'invention peut être mis en œuvre de diverses manières, notamment sous forme câblée ou sous forme logicielle.  It is noted that such a decoder can be implemented in the form of a digital or analog integrated circuit, or in an electronic component of the microprocessor type. Thus, the decoding algorithm according to the invention can be implemented in various ways, in particular in hard-wired form or in software form.
En particulier, il est possible d'utiliser un décodeur tel que décrit ci-dessus soit pour décoder des symboles codés, soit pour coder des symboles source.  In particular, it is possible to use a decoder as described above either to decode coded symbols or to code source symbols.
Dans ce dernier cas, les probabilités a priori des symboles reçus sont initialisées avec les valeurs des symboles à coder dans le cas de symboles binaires et les symboles de redondance sont forcés avec une probabilité de 1/2 afin de pouvoir utiliser le décodeur comme un codeur. Dans le cas de symboles appartenant à un alphabet non binaire, les symboles non-binaires sont considérés comme des vecteurs. Par exemple Z4={ 0,1, 2,3 } est noté { {0,0}, {0,1 }, { 1,1 }, { 1,0} } et la probabilité d'un symbole non-binaire est alors un vecteur de quatre probabilités {ρθθ,ρθΐ,ρΐ ΐ,ρΐθ} dont la somme est un. Si un symbole est inconnu alors son vecteur de probabilités est { 1/4 ,1/4, 1/4,1/4}.  In the latter case, the prior probabilities of the received symbols are initialized with the values of the symbols to be coded in the case of binary symbols and the redundancy symbols are forced with a probability of 1/2 in order to be able to use the decoder as an encoder. . In the case of symbols belonging to a non-binary alphabet, the non-binary symbols are considered as vectors. For example Z4 = {0,1, 2,3} is denoted {{0,0}, {0,1}, {1,1}, {1,0}} and the probability of a non-binary symbol is then a vector of four probabilities {ρθθ, ρθΐ, ρΐ ΐ, ρΐθ} whose sum is one. If a symbol is unknown then its vector of probabilities is {1/4, 1/4, 1 / 4,1 / 4}.
L'invention a donc en outre pour objet un procédé de codage de symboles source, délivrant des symboles codés comprenant les symboles source et des symboles de redondance.  The invention therefore further relates to a method for encoding source symbols, delivering coded symbols comprising the source symbols and redundancy symbols.
Selon l'invention, un tel procédé de codage de k symboles source délivre une séquence c codée de symboles Cj, j = 0, 1,■■·, (¾— l) , obtenue en appliquant un code correcteur d'erreurs linéaires de paramètres (n, k) mettant en œuvre une matrice génératrice à k lignes ou une matrice de contrôle de parité à (n-k) lignes des symboles codés, les symboles appartenant à un alphabet donné. Le procédé comprend : une phase de calcul à plusieurs étages, utilisant des treillis élémentaires Tj déterminés à partir des lignes de la matrice, chaque treillis Ti étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états, comprenant par étage une étape de calcul mettant en œuvre un opérateur papillon : According to the invention, such a method for encoding k source symbols delivers a coded sequence of symbols Cj, j = 0, 1, ■■ ·, (¾-1), obtained by applying a linear error correction code of parameters (n, k) implementing a k-line generator matrix or a parity check matrix at (nk) lines of the coded symbols, the symbols belonging to a given alphabet. The method comprises: a multistage calculation phase, using elementary lattices Tj determined from the rows of the matrix, each lattice Ti being described by a structure of n sections constructed from different base cells associated respectively with the different symbols of the alphabet and being described by the set of probabilities of its states, comprising by stage a calculation step implementing a butterfly operator:
pour déterminer des produits de treillis élémentaires distincts, pour calculer sur un treillis produit des probabilités posteriori des états du produit de treillis connaissant les probabilités des états des treillis élémentaires du produit de treillis et  to determine distinct elementary lattice products, to compute on a lattice produces posterior probabilities of the lattice product states knowing the probabilities of lattice element lattice states and
pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis connaissant les probabilités a posteriori des états du treillis produit,  for calculating posterior probabilities of the states of each of the lattice lattice products knowing the posterior probabilities of the lattice states produced,
une phase de détermination de probabilités a posteriori associées aux symboles codés ¾ à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage,  a phase of determining posterior probabilities associated with the symbols coded ¾ from the posterior probabilities of the states of all the elementary lattices of the last stage,
une phase d'initialisation au cours de laquelle pour le 1er étage les probabilités des états des treillis élémentaires sont initialisées avec les k symboles source et avec n-k probabilités égales à ½ représentant les symboles de redondance. an initialization phase during which for the 1st stage the probabilities of the states of the elementary lattices are initialized with the k source symbols and with nk probabilities equal to ½ representing the symbols of redundancy.
L'invention propose ainsi une nouvelle technique de codage de symboles source.  The invention thus proposes a new source symbol encoding technique.
Il est ainsi possible d'obtenir simplement de nouveaux codes ou de reconstruire des codes existants, présentant une longueur quelconque, facilement décodables par le procédé de décodage selon l'invention.  It is thus possible to simply obtain new codes or reconstruct existing codes, having any length, easily decodable by the decoding method according to the invention.
Un tel procédé de codage peut bien sûr comporter les différentes caractéristiques relatives au procédé de décodage selon l'invention.  Such a coding method can of course include the various characteristics relating to the decoding method according to the invention.
L'invention a en outre pour objet un codeur correspondant. Un tel codeur de k symboles source délivre une séquence c codée de symboles Cj, J ' =0,1, · · ·, («— l) , obtenue en appliquant un code correcteur d'erreurs linéaires de paramètres (n, k) mettant en œuvre une matrice génératrice à k lignes ou une matrice de contrôle de parité à (n-k) lignes des symboles codés, les symboles appartenant à un alphabet donné. Le codeur comprend :  The invention further relates to a corresponding encoder. Such an encoder of k source symbols delivers a coded sequence of symbols Cj, J '= 0.1, · · ·, («- l), obtained by applying a linear error correction code of parameters (n, k) implementing a k-line generator matrix or a parity check matrix at (nk) lines of the encoded symbols, the symbols belonging to a given alphabet. The encoder includes:
un moyen de calcul adapté pour effectuer un calcul à plusieurs étages, utilisant des treillis élémentaires Tj déterminés à partir des lignes de la matrice, chaque treillis Tj étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états, comprenant par étage une étape de calcul mettant en œuvre un opérateur papillon : pour déterminer des produits de treillis élémentaires distincts, pour calculer sur un treillis produit des probabilités a posteriori des états du produit de treillis connaissant les probabilités des états des treillis élémentaires du produit de treillis et calculation means adapted to perform a multi-stage calculation, using elementary lattices Tj determined from the rows of the matrix, each lattice Tj being described by a structure of n sections constructed from different base cells associated respectively with the different symbols of the alphabet and being described by the set of probabilities of its states, comprising by stage a calculation step implementing a butterfly operator: to determine distinct elementary lattice products, to compute on a lattice produces posterior probabilities of the states of lattice product knowing the probabilities of lattice element lattice states and
pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis connaissant les probabilités a posteriori des états du treillis produit,  for calculating posterior probabilities of the states of each of the lattice lattice products knowing the posterior probabilities of the lattice states produced,
un moyen de calcul adapté pour déterminer des probabilités a posteriori associées aux. symboles codés Cj à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage,  calculation means adapted to determine posterior probabilities associated with. coded symbols Cj from the posterior probabilities of the states of all the elementary lattices of the last stage,
un moyen de calcul adapté pour initialiser les probabilités des états des treillis élémentaires du 1er étage de calcul avec les k symboles source et avec n-k probabilités égales à ½ représentant les symboles de redondance. calculating means adapted to initialize the probabilities of the elementary lattice of statements 1 computation stage with the k source symbols and nk probabilities equal to ½ representing redundant symbols.
Un tel codeur est notamment adapté à mettre en œuvre le procédé de codage décrit précédemment.  Such an encoder is particularly suitable for implementing the coding method described above.
Un tel codeur peut bien sûr comporter les différentes caractéristiques relatives au procédé de codage selon l'invention, qui peuvent être combinées ou prises isolément. Ainsi, les caractéristiques et avantages de ce codeur sont les mêmes que ceux du procédé de codage, et ne sont donc pas détaillés plus amplement.  Such an encoder can of course include the various characteristics relating to the coding method according to the invention, which can be combined or taken in isolation. Thus, the characteristics and advantages of this encoder are the same as those of the coding method, and are therefore not detailed further.
A nouveau, un tel codeur peut être implémenté sous la forme d'un circuit intégré numérique ou analogique, ou dans un composant électronique de type microprocesseur. Ainsi, l'algorithme de codage selon l'invention peut être mis en œuvre de diverses manières, notamment sous forme câblée ou sous forme logicielle.  Again, such an encoder can be implemented as a digital or analog integrated circuit, or in an electronic microprocessor component. Thus, the coding algorithm according to the invention can be implemented in various ways, in particular in hard-wired form or in software form.
L'invention concerne encore un dispositif comprenant un codeur et un décodeur de symboles précédemment décrits.  The invention also relates to a device comprising a coder and a decoder of previously described symbols.
Un tel dispositif, encore appelé codée pour codeur/décodeur, peut être implémenté sous la forme d'un circuit intégré numérique ou analogique, ou dans un composant électronique de type microprocesseur. En particulier, l'utilisation d'un codée permet de mutualiser les ressources matérielles utilisées au codage et au décodage. Par exemple, un tel codée peut recevoir en entrée des symboles source, et délivrer en sortie des symboles codés, ou recevoir en entrée des symboles codés, et délivrer en sortie une estimation des symboles source.  Such a device, also called coded coder / decoder, can be implemented in the form of a digital or analog integrated circuit, or in a microprocessor-type electronic component. In particular, the use of a codec makes it possible to pool the hardware resources used for coding and decoding. For example, such a codec may receive source symbols as input, and output coded symbols, or receive coded symbols as input, and output an estimate of the source symbols.
Dans encore un autre mode de réalisation, l'invention concerne un ou plusieurs programmes d'ordinateur comportant des instructions pour la mise en œuvre d'un procédé de décodage ou d'un procédé de codage tels que décrits précédemment, lorsque le ou les programmes sont exécutés par un processeur. De tels programmes peuvent être stockés sur un support d'information.  In still another embodiment, the invention relates to one or more computer programs comprising instructions for implementing a decoding method or coding method as described above, when the program or programs are executed by a processor. Such programs can be stored on an information medium.
Liste des figures D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante de modes de réalisation particuliers, donnés à titre de simples exemples illustratifs et non limitatifs, et des dessins annexés, parmi lesquels : List of Figures Other characteristics and advantages of the invention will emerge more clearly on reading the following description of particular embodiments, given as simple illustrative and non-limiting examples, and the appended drawings, among which:
la figure 1 représente le treillis élémentaire Tt correspondant au générateur gt dans le cas d'une matrice génératrice, FIG. 1 represents the elementary lattice T t corresponding to the generator g t in the case of a generator matrix,
la figure 2 représente le treillis élémentaire T0 qui correspond au générateur gQ— 0110100 pour l'exemple du code de Hamming (7,4,3), FIG. 2 represents the elementary mesh T 0 which corresponds to the generator g Q - 0110100 for the example of the Hamming code (7,4,3),
la figure 3 représente le treillis élémentaire 7 qui correspond au générateur gx = 1011000 pour l'exemple du code de Hamming (7,4,3), FIG. 3 represents the elementary lattice 7 which corresponds to the generator g x = 1011000 for the example of the Hamming code (7,4,3),
la figure 4 représente le produit TQ®^ des deux treillis 70 et 7 précédents dans le cas d'une matrice génératrice, FIG. 4 represents the product T Q of the two preceding lattices 70 and 7 in the case of a generator matrix,
les figures 5a et 5b représentent respectivement les sections associées aux deux valeurs de bit (bit= 0 et bit =1) d'une ligne de la matrice de contrôle H du code,  FIGS. 5a and 5b respectively represent the sections associated with the two bit values (bit = 0 and bit = 1) of a line of the control matrix H of the code,
la figure 6a représente le treillis élémentaire T0 correspondant au générateur 10000111 pour l'exemple du code de Hamming (8,4,4), FIG. 6a represents the elementary mesh T 0 corresponding to the generator 10000111 for the example of the Hamming code (8.4.4),
la figure 6b représente le treillis élémentaire Tx correspondant au générateur 01001011 pour l'exemple du code de Hamming (8,4,4), FIG. 6b represents the elementary mesh T x corresponding to the generator 01001011 for the example of the Hamming code (8.4.4),
la figure 7 représente le treillis-produit TQ®^ résultant du produit des deux treillis élémentaires T0 et Tx représentés respectivement sur les figures 6a et 6b, FIG. 7 represents the product lattice T Q ® 2 resulting from the product of the two elementary lattices T 0 and T x represented respectively in FIGS. 6a and 6b,
la figure 8 est un schéma d'un exemple de codeur convolutif de longueur de mémoire m égale à deux,  FIG. 8 is a diagram of an example of a convolutional encoder with a memory length m equal to two,
la figure 9 représente une section de treillis du codeur convolutif de la figure 8, la figure 10 représente un exemple de treillis à trois sections à quatre états du codeur convolutif de la figure 8,  FIG. 9 represents a trellis section of the convolutional coder of FIG. 8, FIG. 10 represents an example of a trellis with three four-state sections of the convolutional coder of FIG. 8,
la figure 11 représente schématiquement un codeur COD et un décodeur DECOD, les figures 12a et 12b représentent les deux treillis élémentaires T0 et ΤΊ correspondant respectivement aux deux premières lignes d'une matrice génératrice G du code de Hamming (n=8, k=4, dmin=4), FIG. 11 diagrammatically represents a coder COD and a decoder DECOD, FIGS. 12a and 12b represent the two elementary lattices T 0 and ΤΊ respectively corresponding to the first two lines of a generator matrix G of the Hamming code (n = 8, k = 4, d min = 4),
la figure 13 représente les principales étapes mises en œuvre par un codeur/déc odeur selon l'invention,  FIG. 13 represents the main steps implemented by an encoder / decoder according to the invention,
la figure 14 représente le produit de treillis pour l'exemple du code de Hamming (n=8, k=4, la figure 15 représente un réseau d'opérateur-papillons pour codeur/décodeur d'un code défini par une matrice comportant 4 lignes selon l'invention,  FIG. 14 represents the lattice product for the example of the Hamming code (n = 8, k = 4; FIG. 15 represents an operator-butterfly network for an encoder / decoder of a code defined by a matrix comprising 4 lines according to the invention,
la figure 16 représente le schéma d'un codeur/décodeur complet selon l'invention pour un code défini par une matrice comportant 4 lignes selon l'invention (exemple le code de Hamming(8,4,4), la figure 17 représente le schéma d'un codeur/décodeur complet selon l'invention pour d'un code défini par une matrice comportant 12 lignes selon l'invention (exemple le code de Golay(24,12,8), FIG. 16 represents the diagram of a complete coder / decoder according to the invention for a code defined by a matrix comprising 4 lines according to the invention (example the Hamming code (8.4.4), FIG. 17 represents the diagram of a complete coder / decoder according to the invention for a code defined by a matrix comprising 12 lines according to the invention (example the Golay code (24, 12, 8),
la figure 18 représente le schéma d'un codeur/décodeur complet selon l'invention pour d'un code défini par une matrice comportant 24 lignes selon l'invention (exemple le code de QR(48,24,12),  FIG. 18 represents the diagram of a complete coder / decoder according to the invention for a code defined by a matrix comprising 24 lines according to the invention (example the QR code (48, 24, 12),
les figures 19a et 19b sont des schémas des structures simplifiées d'un codeur et d'un décodeur selon un mode de réalisation de l'invention, notamment pour le cas de treillis élémentaires à 2 états et des opérateurs papillons traitant des ensembles de 2 (i.e. couples) treillis élémentaires.  FIGS. 19a and 19b are diagrams of the simplified structures of an encoder and a decoder according to one embodiment of the invention, in particular for the case of elementary two-state lattices and butterfly operators processing sets of 2 ( ie couples) elementary lattices.
Description de modes de réalisation de l'invention  Description of Embodiments of the Invention
L'invention effectue pour un étage donné de calcul des produits portant uniquement sur des ensembles d'au moins deux treillis élémentaires distincts et n'effectue pas de multiplication des k (respectivement (n-k)) treillis élémentaires entre eux pour obtenir un treillis produit global à 2k (respectivement 2(n"!;)) états. L'invention fait interagir les treillis élémentaires entre eux au moyen d'un opérateur papillon. La propagation des interactions est faite de manière extrêmement avantageuse sur des probabilités d'états et non pas sur des probabilités de bits ce qui la rend insensible aux cycles de la structure du réseau d'opérateur-papillons. The invention performs for a given calculation stage products relating only to sets of at least two distinct elementary lattices and does not perform multiplication of k (respectively (nk)) elementary lattice between them to obtain a lattice global product 2 k (respectively 2 (n "!;)) states. the invention makes interact elementary mesh each other by means of a throttle operator. the propagation of interactions is made of extremely advantageously on state probabilities and not on bit probabilities which makes it insensitive to the cycles of the structure of the operator-butterfly network.
A titre d'exemple, l'invention offre une technique de décodage présentant de meilleures performances que les techniques de l'art antérieur vis-à-vis des bons codes correcteurs d'erreurs tels que : les codes algébriques classiques comme le code de Golay (24,12,8), le code QR (48,24,12) ; les turbo-codes ; les codes LDPC, etc.  By way of example, the invention offers a decoding technique that offers better performance than the techniques of the prior art with respect to good error-correcting codes such as: conventional algebraic codes, such as the Golay code (24,12,8), the QR code (48,24,12); turbo-codes; LDPC codes, etc.
L'invention code ou décode des symboles appartenant à un alphabet déterminé. Celui-ci peut être l'alphabet binaire. La description qui suit est basée sur un alphabet binaire sachant que l'alphabet peut tout aussi bien ne pas être binaire.  The invention codes or decodes symbols belonging to a given alphabet. This one can be the binary alphabet. The following description is based on a binary alphabet knowing that the alphabet may just as well not be binary.
Les principales étapes mises en œuvre par un codeur et/ou un décodeur binaire selon l'invention sont décrites en relation avec la figure 11.  The main steps implemented by a coder and / or a binary decoder according to the invention are described in relation with FIG. 11.
Π s'agit ici d'un simple exemple, dans lequel on utilise l'invention à la fois pour le codage et pour le décodage des symboles. Bien entendu, il est possible d'utiliser l'algorithme de décodage proposé avec un algorithme de codage correcteur d'erreurs linéaires classique de paramètres (n, k) mettant en œuvre une matrice génératrice G ou de contrôle de parité H à n colonnes et respectivement k lignes ou (n-k) lignes de symboles.  This is a simple example, in which the invention is used for both encoding and decoding symbols. Of course, it is possible to use the proposed decoding algorithm with a classical linear error correction coding algorithm of parameters (n, k) implementing a generator matrix G or of n-column H parity control and respectively k lines or (nk) lines of symbols.
Ainsi, selon le mode de réalisation illustré en figure 11, un codeur COD selon l'invention prend en entrée k données source x et délivre en sortie une séquence c codée de données Cj, j— 0,1, · · ·,(«— l) comprenant les données source x et des données de redondance r. Le code correcteur d'erreurs linéaires de paramètres (n, k) met en œuvre une matrice de données binaires, cette matrice étant soit génératrice G de dimension kxn soit de contrôle de parité H de dimension (n-k)xn. Thus, according to the embodiment illustrated in FIG. 11, a coder COD according to the invention takes as input k source data x and outputs a coded sequence of data Cj, j-0.1, · · ·, (" - l) comprising the source data x and redundancy data r. The linear error correction code of parameters (n, k) implements a matrix of binary data, this matrix being either generatrix G of dimension kxn or of parity check H of dimension (nk) xn.
Si le codage est systématique, la matrice génératrice G est alors dite sous forme systématique, le mot de code c comprend les bits source x = (x0, xlt ...,χ^)) correspondant à l'information utile placés généralement à gauche et les bits de redondance r = (r0, rïr ... , r(n_k--1 ) placés à la suite ou vice versa : c = (x0, xlr ... , a^-i), r0, rx, ... , r(n_¾--1) ). Un mot de code c est tel que : c = xG ou cHtr = 0. If the coding is systematic, the generating matrix G is then said in systematic form, the code word c comprises the source bits x = (x 0 , x lt ..., χ ^)) corresponding to the useful information placed generally on the left and the redundancy bits r = (r 0 , r ïr ..., r ( n _ k - 1 ) placed in a row or vice versa: c = (x 0 , x lr ..., a ^ -i), r 0 , r x , ..., r ( n _ ¾ - 1 )). A code word c is such that: c = xG or cH tr = 0.
La séquence codée c peut être véhiculée dans un canal Ch de transmission ou stockée sur un support, puis décodée par un décodeur DEC selon l'invention. Un tel décodeur reçoit en entrée une séquence y d'échantillons comprenant les données source x et des données de redondance r éventuellement entachées d'erreur et délivre une estimation x des données source.  The coded sequence c may be conveyed in a transmission channel CH or stored on a medium, and then decoded by a decoder DEC according to the invention. Such a decoder receives as input a sequence y of samples comprising the source data x and redundancy data r possibly tainted with error and delivers an estimate x of the source data.
Selon un mode de réalisation des treillis élémentaires, chaque générateur élémentaire ou ligne de la matrice G respectivement H est associé à un treillis élémentaire à deux états compte tenu que les symboles sont pris dans l'alphabet binaire {0, 1 } à deux symboles. Pour généraliser à tout type d'alphabet, chaque treillis élémentaire comporte donc autant d'états que l'alphabet contient de symboles.  According to one embodiment of the elementary lattices, each elementary generator or line of the matrix G respectively H is associated with a two-state elementary lattice, given that the symbols are taken from the binary alphabet {0, 1} with two symbols. To generalize to any type of alphabet, each elementary lattice thus has as many states that the alphabet contains symbols.
L'invention conserve les k (respectivement (n-k)) treillis élémentaires Ti à au moins deux états qui correspondent aux k (respectivement (n-k)) lignes L; de la matrice G (respectivement H) et effectue des produits sur des ensembles d'au moins deux (i.e. des couples) treillis élémentaires distincts. Chaque treillis élémentaire est décrit par une structure de n sections d'indice t, une section étant constituée de branches représentées chacune par un triplet (état de départ, étiquette de branche, état d'arrivée) et par l'ensemble des probabilités de ses états : {f î"(sf )}.  The invention preserves the k (respectively (n-k)) elementary lattices Ti with at least two states corresponding to the k (respectively (n-k)) lines L; of the matrix G (respectively H) and produces products on sets of at least two (i.e. distinct) elementary lattice pairs. Each elementary lattice is described by a structure of n sections of index t, a section consisting of branches each represented by a triplet (starting state, branch label, arrival state) and by the set of probabilities of its components. states: {f} (sf)}.
Un procédé selon l'invention utilise les k (respectivement (n-k)) treillis élémentaires T La structure du treillis T; élémentaire est construite selon l'invention à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet assurant un nombre minimal d'états au treillis. A method according to the invention uses the k (respectively (nk)) elementary lattice T The structure of the lattice T ; elementary is constructed according to the invention from different basic cells respectively associated with the different symbols of the alphabet ensuring a minimum number of lattice states.
Selon un mode de réalisation, la cellule de base cello associée à un bit de la matrice égal à zéro est la suivante :
Figure imgf000020_0001
According to one embodiment, the basic cell cello associated with a bit of the matrix equal to zero is as follows:
Figure imgf000020_0001
<D  <D
et la cellule de base cell; associée à un bit de la matrice égal à un est la suivante :
Figure imgf000020_0002
and the cell base cell; associated with a bit of the matrix equal to one is as follows:
Figure imgf000020_0002
Dans cello et ce¾, les états notés 0 et 1 sont les états d'entrée et de sortie d'une section dans la direction horizontale. In cello and ce¾, the states denoted 0 and 1 are the states of entry and exit of a section in the horizontal direction.
Un treillis est constitué par la mise bout à bout de sections composées elles-mêmes de branches. Une branche d'une section de treillis est un triplet (état de départ, étiquette de branche, état d'arrivée). Un treillis peut donc être vu comme un ensemble de branches :  A trellis is formed by the end-to-end sections themselves composed of branches. A branch of a trellis section is a triplet (starting state, branch label, state of arrival). A lattice can therefore be seen as a set of branches:
L'invention est illustrée avec l'exemple du code de Hamming (n=8, k=4, dmin=4). Une matrice génératrice G de ce code de Hamming est la suivante : The invention is illustrated with the example of the Hamming code (n = 8, k = 4, d min = 4). A generator matrix G of this Hamming code is as follows:
Figure imgf000021_0001
Figure imgf000021_0001
Le code de Hamming (n=8, k=4, dmin=4), et de manière générale tout code peut être décrit de manière complète et non ambiguë de manière équivalente par une matrice de contrôle H ou par un ensemble d'équations modulo deux, qui est le suivant pour le code Hamming : The Hamming code (n = 8, k = 4, d min = 4), and in general any code can be described completely and unambiguously in an equivalent way by a control matrix H or by a set of equations modulo two, which is the following for the Hamming code:
r0 + Xl + x2 + x3 r 0 + Xl + x 2 + x 3
Chaque équation est associée à un treillis élémentaire à deux états. Le treillis élémentaire T0 associé au générateur 10000111 qui correspond à la première ligne L0 de la matrice G et donc à l'équation booléenne ro + x] + x2 - xî—0 est donc illustré par la figure 12a, Each equation is associated with a two-state elemental lattice. The elementary lattice T 0 associated with the generator 10000111 which corresponds to the first line L 0 of the matrix G and therefore to the boolean equation r 0 + x ] + x 2 - x 1 -0 is thus illustrated by FIG. 12a.
Le treillis élémentaire T[ associé au générateur 01001011 qui correspond à la deuxième ligne Li de la matrice G et à l'équation booléenne + x0 + x2 + xî = 0 est donc illustré par la figure 12b. The elementary lattice T [associated with the generator 01001011 which corresponds to the second line Li of the matrix G and to the boolean equation + x 0 + x 2 + x i = 0 is thus illustrated by FIG. 12b.
Par souci de simplification, k est considéré être le nombre de lignes de la matrice.  For the sake of simplicity, k is considered to be the number of rows in the matrix.
Un procédé 1 selon l'invention dont les principales étapes sont illustrées par la figure 13 comprend une phase 2 de calcul à plusieurs étages 3 qui utilise les k treillis élémentaires Ti. Par étage 3, le procédé comprend une étape 4, 5, 6 de calcul qui met en œuvre un opérateur papillon.  A method 1 according to the invention, the main steps of which are illustrated in FIG. 13, comprises a phase 2 of multistage calculation 3 which uses the elementary k trellises Ti. By stage 3, the method comprises a calculation step 4, 5, 6 which implements a butterfly operator.
Lors de l'étape de calcul, l'opérateur papillon détermine 4 des produits fêT. de treillis élémentaires distincts, Tt et Tj avec i≠ j . Le produit 2^ ®7j de deux treillis de même nombre n de secti ns d'indice t G {0,1, ... , n— 1} est, d'après Calderbank-Forney-Vardy[l], tel que : During the calculation step, the butterfly operator determines 4 festive products. of distinct elementary lattices, T t and T j with i ≠ j. The product 2 ^ ®7j of two lattices of the same number n of sections of index t G {0,1, ..., n-1} is, according to Calderbank-Forney-Vardy [l], such that :
Tj ®Tj - ë} . Ainsi, le produit de deux
Figure imgf000021_0002
T j ®T j - ë } . So, the product of two
Figure imgf000021_0002
treillis est le produit cartésien de chacune des composantes des triplets des branches prises deux par deux avec la suppression des couples de branches telles que
Figure imgf000021_0003
ej' . Selon l'invention le produit de treillis élémentaires est défini à partir des produit des cellules de base : cell0 ® cell0 , cellQ ® cellx , cell ® cell0 et cel ® cellx respectivement égaux à :
lattice is the Cartesian product of each of the triplet components of the branches taken in pairs with the suppression of pairs of branches such as
Figure imgf000021_0003
e j '. According to the invention the elementary mesh product is determined from the product of the basic cells: cell 0 ® cell 0, cell Q ® cell x, cell 0 and cell cel ® ® cell x respectively equal to:
Figure imgf000022_0001
Figure imgf000022_0001
En reprenant l'exemple du code de Hamming (n=8, k=4, dmin=4), le produit TQ ®7 est illustré par la figure 14. Taking the example of the Hamming code (n = 8, k = 4, d min = 4), the product T Q ®7 is illustrated in FIG.
Selon un autre mode de réalisation des treillis élémentaires, en considérant k le nombre de lignes de la matrice, un treillis élémentaire est associé à un nombre m>l de lignes de la matrice définissant le code, son nombre d'états par section est alors 2m. Si un treillis élémentaire Ti est associé à (g0,gl,...,gm-l) lignes de la matrice alors il est équivalent lui-même au produit des m treillis Ti associés chacun à une ligne gi, i=0,...,m-l. Ceci ne change rien aux principes de l'algorithme mais modifie en particulier le nombre d 'opérateur-papillons par étage qui est q = ^^2m si 2 x m divise k et diminue le nombre d'étages puisque les interactions se font entre treillis élémentaires plus complexes associés à plus de lignes de la matrice. Si 2 X m ne divise pas k alors k = q x 2 x m + r avec 0 < r < 2m. Chaque étage comprend q opérateur-papillons faisant interagir deux treillis élémentaires à 2m états associés chacun à m lignes de la matrice et un opérateur-papillon. Si r = m + rr ce dernier opérateur-papillon fait interagir un treillis élémentaires à 2m états et un treillis élémentaire à 2π états associé à rr lignes de la matrice, si r < m ce dernier opérateur-papillon fait interagir deux treillis associés aux m lignes restantes. Les cas les plus intéressants à part le cas m=l qui correspond à un mode de réalisation particulier des treillis élémentaires, sont les cas m=2, m=3 et m=4 pour garder une complexité de calculs raisonnable et de bonnes performances de convergence vers l'estimation optimale des probabilités a posteriori des états des treillis. According to another embodiment of the elementary lattice, considering k the number of rows of the matrix, an elementary lattice is associated with a number m> l of rows of the matrix defining the code, its number of states per section is then 2 m . If an elementary trellis Ti is associated with (g0, gl, ..., gm-1) lines of the matrix then it is itself equivalent to the product of the trellis Ti each associated with a line gi, i = 0 ,. .., ml. This does not change the principles of the algorithm but modifies in particular the number of operator-butterflies per floor which is q = ^^ 2m s i 2 xm divides k and decreases the number of stages since the interactions are between lattice more complex elementals associated with more rows of the matrix. If 2 X m does not divide k then k = qx 2 xm + r with 0 <r <2m. Each stage comprises q operator-butterflies interacting two elementary lattices at 2 m states each associated with m rows of the matrix and a butterfly operator. If r = m + rr, this last butterfly operator makes an elementary lattice interact with 2 m states and an elementary lattice with 2 π states associated with rr lines of the matrix, if r <m this last operator-butterfly makes interact two trellises associated to the remaining m lines. The most interesting cases apart from the case m = 1 which corresponds to a particular embodiment of the elementary lattices, are the cases m = 2, m = 3 and m = 4 to keep a reasonable computational complexity and good performances of convergence towards the optimal estimation of the posterior probabilities of lattice states.
Lors de l'étape de calcul, le procédé fait interagir les treillis au moins deux par deux During the calculation step, the method makes the lattices interact at least two by two
(directement ou indirectement) au moyen de l'opérateur papillon un nombre de fois minimum mais suffisant pour obtenir une bonne estimation finale et de manière à ce que tout treillis élémentaire influence tout autre treillis élémentaire. En particulier, les interactions sont déterminées telles que : (directly or indirectly) by means of the butterfly operator a minimum number of times but sufficient to obtain a good final estimate and so that any elementary lattice influences any other elementary lattice. In particular, the interactions are determined such that:
- tout opérateur papillon n'effectue des interactions qu'entre des ensembles d'au moins deux (ici des couples de) treillis Ti et Tj distincts, i≠ j , - l'ensemble des opérateurs papillon d'un même étage couvre de façon bijective l'ensemble des treillis : i.e. les indices des treillis d'un étage forment une permutation de {0, 1, . . . , k - 1 }, any butterfly operator performs interactions only between sets of at least two (here pairs of) lattices Ti and Tj distinct, i ≠ j, the set of butterfly operators of the same stage covers, in a bijective manner, all the lattices: ie the indices of the lattices of one stage form a permutation of {0, 1,. . . , k - 1},
- globalement, tout ensemble (dans le cas le plus simple : tout couple) de treillis élémentaires n'apparaît qu'une seule fois et une seule,  - globally, everything together (in the simplest case: any pair) of elementary lattices appears only once and only once,
- il existe au moins un chemin entre tout opérateur papillon du dernier étage et tout opérateur papillon du premier étage.  - There is at least one path between any butterfly operator on the top floor and any butterfly operator on the first floor.
Les interactions peuvent se représenter sous la forme d'une matrice d'ensemble d'au moins deux (selon un mode de réalisation : des couples d') indices de treillis élémentaires qui interagissent au moyen d'un opérateur papillon. Les ensemble d'au moins deux (selon un mode de réalisation : des couples de) treillis intervenant dans les produits de treillis sont déterminés pour le 1er étage : The interactions may be in the form of an overall matrix of at least two (in one embodiment: pairs of) elementary lattice indices that interact by means of a butterfly operator. The sets of at least two (according to one embodiment: lattice pairs) involved in the lattice products are determined for the 1st stage:
- en effectuant une partition d'ensembles d'au moins deux indices (selon un mode de réalisation : en couples) à partir d'une permutation identité d'ordre k qui permet d'obtenir une matrice de k/2 lignes et deux colonnes,  by performing a partition of sets of at least two indices (according to one embodiment: in pairs) from an identity identity permutation k that makes it possible to obtain a matrix of k / 2 rows and two columns ,
- en transposant la matrice obtenue pour obtenir une matrice à deux lignes et k/2 colonnes et en mettant à plat cette matrice pour obtenir une liste d'ensembles d'au moins deux indices (selon un mode de réalisation : des couples),  by transposing the matrix obtained to obtain a matrix with two lines and k / 2 columns and by flattening this matrix to obtain a list of sets of at least two indices (according to one embodiment: couples),
et pour un étage suivant :  and for a next floor:
- en répétant les opérations précédentes en partant de la liste des ensembles d'au moins deux indices (selon un mode de réalisation : des couples) de l'étage précédent pour obtenir des permutations successives.  repeating the preceding operations starting from the list of sets of at least two indices (according to one embodiment: couples) of the preceding stage to obtain successive permutations.
Le procédé détermine donc un ensemble de nEtage = \Log(l, k i\ permutations de l'ensemble des indices {0, 1, . . . , k - 1 } où l'opérateur \. ] est l'arrondi par valeur supérieure.  The process therefore determines a set of nEtage = \ Log (l, ki \ permutations of the set of indices {0, 1, ..., k - 1} where the operator \.] Is the rounded up value. .
En reprenant l'exemple du code de Hamming (n=8, k=4, dmin=4), nEtage = 2 puisque k=4 et l'ensemble des permutations est décrit par une matrice de deux lignes et deux colonnes de couples d'indices : Taking again the example of the Hamming code (n = 8, k = 4, d min = 4), nEtage = 2 since k = 4 and the set of permutations is described by a matrix of two lines and two columns of couples of clues:
Figure imgf000023_0001
Figure imgf000023_0001
Pour le code de Hamming (n=8, k=4, dmi-=4), la phase de calcul a deux étages, le correspond à la l re colonne et le 2nd et dernier étage correspond à la seconde colonne. Dit autrement, dans l'exemple du code de Hamming (n=8, k=4, dmin=4) le procédé fait interagir lors du Γ étage de la phase de calcul les couples ( TQ , Tj et ( T2 , T3 ) et lors du 2nd étage les couples (T0 , T2 ) et T T3) c& qui peut être représenté par le schéma de la figure 15. For the Hamming code (n = 8, k = 4, d mi - = 4), the calculation phase has two floors, it corresponds to the re column and the 2 nd and last stage corresponds to the second column. In other words, in the example of the Hamming code (n = 8, k = 4, d min = 4) the method made to interact at the floor of the Γ couples calculation phase (Q T, and Tj (T 2, T 3 ) and during the 2 nd stage couples (T 0 , T 2 ) and TT 3 ) c & which can be represented by the diagram of Figure 15.
Selon l'invention, l'opérateur papillon effectue en outre un calcul 5 des probabilités a posteriori des états sur le produit ®Tj de deux treillis T{ et 7\ avec i≠ j puis un calcul 6 des probabilités a posteriori des états de chacun des deux treillis Tt et T- . According to the invention, the butterfly operator furthermore performs a calculation of the posterior probabilities of the states on the product ®T j of two lattices T { and 7 \ with i ≠ j, then a calculation 6 of the posterior probabilities of the states of each of the two lattices T t and T-.
Selon un mode de réalisation, Γ opérateur-papillon effectue le calcul des probabilités a posteriori des états sur le produit des deux treillis Tt- et T} en utilisant un algorithme BCJR[4] adapté de manière à obtenir comme résultat de sortie le vecteur des probabilités des états du treillis produit alors que l'algorithme classique BCJR[4] fourni le vecteur des probabilités a posteriori des bits. In one embodiment, Γ operator butterfly calculates the posterior probabilities of the states on the product of the two trellis T t - and T} using a BCJR algorithm [4] adapted to obtain as output result vector the lattice state probabilities produced while the classical BCJR [4] algorithm provided the vector of the posterior probabilities of the bits.
Selon un mode de réalisation, P opérateur-papillon effectue le calcul des probabilités a posteriori des états de chacun des deux treillis T{ et T- par marginalisation. According to one embodiment, the throttle operator performs the calculation of the posterior probabilities of the states of each of the two lattices T { and T- by marginalization.
Selon un mode de réalisation, un procédé de décodage selon l'invention comprend une phase d'initialisation. Selon un mode de réalisation simple de l'initialisation, les probabilités des états {Pr(s )} des treillis élémentaires T; i = 0, 1, · · ·, (τΐ— k— 1) sont initialisées uniquement pour le 1er étage avec les probabilités a priori des bits reçus y. Pour les étages suivants, les probabilités des états { r(sf)} des treillis élémentaires T; i = 0, 1, · · ·, (η— k— l) sont initialisées à ½. Les valeurs des bits reçus y ne sont donc injectées qu'une fois dans le procédé de décodage. Selon un mode de réalisation de l'initialisation, les valeurs des bits reçus y sont injectées en totalité ou partiellement comme probabilités a priori reçues dans les autres étages. According to one embodiment, a decoding method according to the invention comprises an initialization phase. According to a simple embodiment of the initialization, the probabilities of the states {Pr (s)} of the elementary lattices T; i = 0, 1, · · ·, (τΐ- k- 1) are initialized only for the 1st stage with the prior probabilities of the received bits y. For the following stages, the probabilities of the states {r (sf)} of the elementary lattices T; i = 0, 1, · · ·, (η- k- l) are initialized to ½. The values of the received bits y are therefore only injected once in the decoding process. According to one embodiment of the initialization, the values of the received bits are injected in whole or in part as prior probabilities received in the other stages.
Compte tenu qu'un opérateur papillon a en données d'entrée les vecteurs de probabilité d'états {Pr(s')} et {Pr(sJ)} des treillis élémentaires T; et Tj avec i≠j , ces vecteurs correspondent aux vecteurs de probabilités a posteriori des états de chacun des deux treillis Tt et Tj déterminés à l'étage précédent, pour chacun des étages suivants le premier étage. Considering that a butterfly operator has in input data the probability vectors of states {Pr (s')} and {Pr (sJ)} of the elementary lattices T ; and T j with i ≠ j, these vectors correspond to the posterior probability vectors of the states of each of the two lattices T t and T j determined in the preceding stage, for each of the stages following the first stage.
Le procédé de décodage selon l'invention comprend en outre une phase de détermination de probabilités a posteriori associées aux symboles décodés à partir des probabilités a posteriori des états des k treillis élémentaires du dernier étage. Cette détermination revient à fusionner toutes les informations disponibles sur chaque symbole décodé entre les k treillis élémentaires du dernier étage :  The decoding method according to the invention further comprises a phase of determining posterior probabilities associated with the decoded symbols from the posterior probabilities of the states of the elementary k trellises of the last stage. This determination amounts to merging all the information available on each decoded symbol between the elementary k trellises of the last stage:
&-1  & -1
Prtcj = 1 j y) oc JJ Pr(cj = 1 j "XL y) PRP jy j = 1) Pr oc JJ (c j = 1 j "XL y)
i=0 avec « l'opérateur d'égalité avec normalisation (division par la somme des probabilités des deux cas « 0 » et « 1 ». i = 0 with "the equality operator with normalization (division by the sum of the probabilities of the two cases" 0 "and" 1 ".
Selon un mode de réalisation, cette fusion correspond à la multiplication de toutes les probabilités finales d'un même bit de code de chacun des treillis élémentaires Ts- avec i = 0, 1, - · ·, (η - &— 1) à partir des probabilités a posteriori des états des k treillis élémentaires de l'étage final. According to one embodiment, this merger corresponds to the multiplication of all the final probabilities of one and the same code bit of each of the elementary lattices T s - with i = 0, 1, - · ·, (η - & - 1) from the posterior probabilities of the states of the elementary k lattice of the final stage.
Selon un mode de réalisation, cette fusion correspond à l'addition de toutes les métriques finales d'un même bit de code de chacun des treillis élémentaires 7^ avec î =0,1,-·,(«— k— l) à partir des probabilités a posteriori des états des k treillis élémentaires de l'étage final. According to one embodiment, this merger corresponds to the addition of all the final metrics of one and the same code bit of each of the elementary lattices 7 ^ with I = 0.1, - ·, («- k-1) from the posterior probabilities of the states of the elementary k lattice of the final stage.
Ainsi, en reprenant l'exemple du code de Hamming (n=8, k=4,
Figure imgf000025_0001
le procédé de décodage peut être illustré par le schéma de la figure 16. La fusion fournit les probabilités des bits décodés : {Pi~(Xi \y)} connaissant les bits reçus y. La structure représentée à la figure 16 est valable pour tous les codes définis par k=4 treillis élémentaires quelle que soit sa longueur n.
So, taking the example of the Hamming code (n = 8, k = 4,
Figure imgf000025_0001
the decoding method can be illustrated by the diagram of Figure 16. The fusion provides the probabilities of the decoded bits: {Pi ~ (Xi \ y)} knowing the received bits y. The structure shown in FIG. 16 is valid for all the codes defined by k = 4 elementary trellises, whatever its length n.
L'invention est illustrée avec l'exemple du code de Golay (n=24,
Figure imgf000025_0002
Selon le procédé de décodage précédemment décrit, le nombre d'étages est nEtage = 4 puisque k=12. L'ensemble des permutations est décrit par une matrice de six lignes et quatre colonnes de couples d'indices :
The invention is illustrated with the example of the Golay code (n = 24,
Figure imgf000025_0002
According to the decoding method previously described, the number of stages is nEtage = 4 since k = 12. The set of permutations is described by a matrix of six lines and four columns of pairs of indices:
Figure imgf000025_0003
Figure imgf000025_0003
La structure de l'algorithme de décodage est représentée à la figure 17. Les lettres Ai, Bi, Ci et Di référencent les différents opérateurs papillons.  The structure of the decoding algorithm is shown in Figure 17. The letters Ai, Bi, Ci and Di refer to the different butterfly operators.
L'invention est illustrée avec l'exemple du code QR (n=48, k=24, dmin=12). Selon le procédé de décodage précédemment décrit, le nombre d'étages est nEtage = 5 puisque k=24. L'ensemble des permutations est décrit par une matrice de douze lignes et cinq colonnes de couples d'indices : The invention is illustrated with the example of the QR code (n = 48, k = 24, d min = 12). According to the decoding method previously described, the number of stages is nEtage = 5 since k = 24. The set of permutations is described by a matrix of twelve rows and five columns of pairs of indices:
Figure imgf000026_0001
Figure imgf000026_0001
La structure de l'algorithme de décodage est représentée à la figure 18. Les lettres Ai, Bi, Ci, Di et Ei référencent les différents opérateurs papillons.  The structure of the decoding algorithm is shown in FIG. 18. The letters Ai, Bi, Ci, Di and Ei refer to the various butterfly operators.
La description de l'invention a été faite en considérant des probabilités. L'invention peut tout aussi bien considérer des métriques. Dans ce cas selon un mode de réalisation, un opérateur- papillon effectue le calcul des métriques a posteriori des états sur le produit des deux treillis Ti et Tj selon un algorithme de type Viterbi-SOVA[5].  The description of the invention was made by considering probabilities. The invention can just as well consider metrics. In this case, according to one embodiment, a butterfly operator performs the calculation of the posterior states metrics on the product of the two lattices Ti and Tj according to a Viterbi-SOVA type algorithm [5].
Les figures 1 a et 19b représentent schématiquement les structures simplifiées d'un codeur COD et d'un décodeur DEC selon un mode de réalisation de l'invention.  FIGS. 1a and 19b show schematically the simplified structures of a coder COD and a decoder DEC according to one embodiment of the invention.
Le codeur comprend une mémoire 10 comprenant une mémoire tampon, une unité de traitement 11, équipée par exemple d'un microprocesseur μΡ, et pilotée par le programme d'ordinateur 12, mettant en uvre le procédé de codage selon un mode de réalisation de l'invention.  The encoder comprises a memory 10 comprising a buffer memory, a processing unit 11, equipped for example with a microprocessor μΡ, and driven by the computer program 12, implementing the coding method according to an embodiment of the invention. 'invention.
A initialisation, les instructions de code du programme d'ordinateur 12 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 11. L'unité de traitement 11 reçoit en entrée des données source x et délivre des données codées c comprenant les données source et de données de redondance. Le microprocesseur de l'unité de traitement 11 met en œuvre les étapes du procédé de codage décrit précédemment, selon les instructions du programme d'ordinateur 12, pour coder les données source. Pour cela, le codeur comprend, outre la mémoire tampon 10, un module de codage pour déterminer des produits Tj ®Tj de treillis élémentaires distincts, Tt et Γ- avec i≠ j , pour calculer par treillis produit Tt ®Tj des probabilités a posteriori des états du produit ®Tj connaissant les probabilités des états ÎPÎ* S')} des treillis élémentaires T( et Tj et pour calculer des probabilités a posteriori des états de chacun des deux treillis Tt et Tj connaissant les probabilités a posteriori des états du treillis produit et pour déterminer des probabilités a posteriori associées aux symboles codés Cj. Ce module est piloté par le microprocesseur de l'unité de traitement 11. At initialization, the code instructions of the computer program 12 are for example loaded into a RAM memory before being executed by the processor of the processing unit 11. The processing unit 11 receives as input source data x and delivers coded data c including the source and redundancy data. The microprocessor of the processing unit 11 implements the steps of the coding method described above, according to the instructions of the computer program 12, for encoding the source data. For this purpose, the encoder comprises, in addition to the buffer memory 10, a coding module for determining products T j ®Tj of distinct elementary lattices, T t and Γ- with i ≠ j, to calculate by trellis product T t ®T j of the posterior probabilities of the states of the product ® T j knowing the probabilities of the states ÎPÎ * S ')} of the elementary lattices T ( and T j and to compute posterior probabilities of the states of each of the two lattices T t and T j knowing the posterior probabilities of the states of the lattice produced and to determine posterior probabilities associated with the coded symbols C. This module is controlled by the microprocessor of the processing unit 11.
Le décodeur DEC comprend une mémoire 20 comprenant une mémoire tampon, une unité de traitement 21, équipée par exemple d'un microprocesseur μΡ, et pilotée par le programme d'ordinateur 22, mettant en œuvre le procédé de décodage selon un mode de réalisation de l'invention.  The decoder DEC comprises a memory 20 comprising a buffer memory, a processing unit 21, equipped for example with a μocess microprocessor, and controlled by the computer program 22, implementing the decoding method according to an embodiment of FIG. the invention.
A l'initialisation, les instructions de code du programme d'ordinateur 22 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 21. L'unité de traitement 21 reçoit en entrée des données codées y comprenant des données source et des données de redondance, et délivre une estimation je des données source. Le microprocesseur de l'unité de traitement 21 met en œuvre les étapes du procédé de décodage décrit précédemment, selon les instructions du programme d'ordinateur 22, pour décoder les données codées. Pour cela, le décodeur comprend, outre la mémoire tampon 20, un module de décodage pour déterminer des produits j ®Tj de treillis élémentaires distincts, T; et Γ- avec i≠ j , pour calculer par treillis produit Tj ®Tj des probabilités a posteriori des états du produit ®Tj connaissant les probabilités des états {Pr(s )} des treillis élémentaires Tt et T. et pour calculer des probabilités a posteriori des états de chacun des deux treillis Tt et T. connaissant les probabilités a posteriori des états du treillis produit Tt ®T- , et pour déterminer des probabilités a posteriori associées aux symboles décodés. Ce module est piloté par le microprocesseur de l'unité de traitement 21. At initialization, the code instructions of the computer program 22 are for example loaded into a RAM memory before being executed by the processor of the processing unit 21. The processing unit 21 receives as input data encoded including source data and redundancy data, and provides an estimate of the source data. The microprocessor of the processing unit 21 implements the steps of the decoding method described above, according to the instructions of the computer program 22, for decoding the coded data. To do this, the decoder comprises, in addition to buffer memory 20, a decoding module for determining ® T j j products distinct elementary mesh, T; and Γ- with i ≠ j, to calculate by product lattice T j ®T j posterior probabilities of the states of the product ®T j knowing the probabilities of the states {Pr (s)} of the elementary lattices T t and T. and for calculating posterior probabilities of the states of each of the two lattices T t and T. knowing the posterior probabilities of the states of the lattice product T t ®T-, and for determining posterior probabilities associated with the decoded symbols. This module is controlled by the microprocessor of the processing unit 21.
Références : References :
[1] A.R. Calderbank and G.D. Jr. Forney and A. Vardy, "Minimal Tailbiting Trellises: the Golay Code and More", IEEE Transactions on Information Theory, Vol. ΓΓ.45, no.5, pp.1435-1455, July 1999.  [1] A.R. Calderbank and G.D. Jr. Forney and A. Vardy, "Minimal Tailbiting Trellises: The Golay Code and More", IEEE Transactions on Information Theory, Vol. ΓΓ.45, no.5, pp.1435-1455, July 1999.
[2] R.G. Gallager, "Low-Density Parity-Check Codes ", IEEE Transactions on Information Theory, Vol.8, pp. 21-28, January 1962. [2] R. G. Gallager, "Low-Density Parity-Check Codes," IEEE Transactions on Information Theory, Vol. 21-28, January 1962.
[3] G.D. Forney, "The Viterbi Algorithm", Proceedings of the IEEE, Vol.61, no.3,pp.268- 278,March 1973. [4] L.R. Bahl and J. Cocke and F. Jelinek and R. Raviv, "Optimal Decoding of Linear Codes for Minimizing Symbol Error Rate ", ΓΕΕΕ Transactions on Information Theory, Vol. IT-20, pp.284- 287, March 1974. [3] GD Forney, "The Viterbi Algorithm", Proceedings of the IEEE, Vol.61, no.3, pp.268-278, March 1973. [4] LR Bahl and J. Cocke and F. Jelinek and R. Raviv, "Optimal Decoding of Linear Codes for Minimizing Symbol Error Rate," Transactions on Information Theory, Vol. IT-20, pp. 284-287, March 1974.
[5] C. Berrou, A. Glavieux, and P. Thitimajshima, "Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes", in Proceedings of the IEEE Int. Conf. on Communications (ICC 93), Geneva, Switzerland, pp.1064-1070, May 1993.  [5] C. Berrou, A. Glavieux, and P. Thitimajshima, "Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes", in Proceedings of the IEEE Int. Conf. on Communications (ICC 93), Geneva, Switzerland, pp.1064-1070, May 1993.
[6] N. Wiberg, "Codes and Decoding on General Graphs", Ph.D. Thesis, Link'oping University, Sweden 1996. [6] N. Wiberg, "Codes and Decoding on General Graphs," Ph.D. Thesis, Link ' oping University, Sweden 1996.
[7] « Minimum-distance bounds by graph analysis » de R.M. Tanner, « IEEE Transactions on information theory », vol. 47, février 2001.  [7] R.M. Tanner's "Minimum-distance bounds by graph analysis", "IEEE Transactions on information theory", vol. 47, February 2001.
[8] "Probability and probabilistic reasoning for electrical engineering" de Terrence L. Fine, Pearson Education International, ISBN- 10 : 0130205915, chapitre 11.2.3, pages 324-325.  [8] Terrence L. Fine, Pearson Education International, ISBN-10: 0130205915, chapter 11.2.3, pp. 324-325, "Probability and Probability of Electrical Engineering."

Claims

REVENDICATIONS
Procédé (1) de décodage d'une séquence d'échantillons reçus y par un décodeur correspondant, après transmission, à une séquence c codée de symboles cj, j = 0,1, · - , [n— l) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires à des symboles source (x) mettant en œuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné, caractérisé en ce que ledit procédé comprend : Method (1) for decoding a sequence of samples received y by a decoder corresponding, after transmission, to a coded sequence of symbols c j , j = 0,1, · -, [n-1), obtained applying to the coding a linear error correcting code to source symbols (x) implementing an n-column matrix and k symbol lines, the symbols belonging to a given alphabet, characterized in that said method comprises:
une phase de calcul à plusieurs étages, utilisant des treillis élémentaires Tj déterminés à partir des k lignes de la matrice, chaque treillis Ί\ étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états ({Pr(s )}, i = 0, 1, · · ·,(η— k— 1) ) comprenant par étage une étape de calcul mettant en œuvre un opérateur papillon :  a multistage calculation phase, using elementary lattices Tj determined from the k rows of the matrix, each lattice Ί \ being described by a structure of n sections constructed from different base cells associated respectively with the different symbols of the 'alphabet' and being described by the set of probabilities of its states ({Pr (s)}, i = 0, 1, · · ·, (η-k-1)) comprising per stage a calculation step implementing a butterfly operator:
pour déterminer des produits ( Tt ®Tj ) de treillis élémentaires distincts, ( Tt , T. to determine products (T t ®Tj) of distinct elementary lattices, (T t , T.
. i≠j), . i ≠ j),
pour calculer sur un treillis produit (Tj ®Tj ) des probabilités a posteriori des états du produit de treillis ( 7 ®2) connaissant les probabilités des états to compute on a lattice produced (T j ®T j ) posterior probabilities of the states of the lattice product (7 ®2 ) knowing the probabilities of the states
(
Figure imgf000029_0001
des treillis élémentaires (Tt , T. ) du produit de treillis et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis ( Tj Tj ) connaissant les probabilités a posteriori des états du treillis produit ( Tj ®T- ),
(
Figure imgf000029_0001
elementary lattices (T t , T.) of the lattice product and for calculating posterior probabilities of the states of each of the lattice product lattice lattices (T j T j ) knowing the posterior probabilities of the states of the lattice produced (T j ®T-),
une phase de détermination de probabilités a posteriori associées aux symboles décodés à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage.  a phase of determining posterior probabilities associated with the decoded symbols from the posterior probabilities of the states of all the elementary lattices of the last stage.
Procédé (1) de décodage selon la revendication 1 dans lequel l'étape de calcul met en œuvre au moins une itération de calcul des probabilités a posteriori des états du treillis produit ( Tj ®Tj ) connaissant les probabilités des états ({Pr(s )}, {Pr(sJ)}) des treillis élémentaires (7^, - - ) du produit et de calcul des probabilités a posteriori des états de chacun des treillis ( Tt , Tj ) du produit connaissant les probabilités a posteriori des états du treillis produit ( ®7 ). Procédé (1) de décodage selon la revendication 1 comprenant en outre une phase d'initialisation au cours de laquelle pour le 1er étage les probabilités des états des treillis élémentaires sont initialisées avec les probabilités a priori des symboles reçus et pour les étages suivants les probabilités d'états des treillis élémentaires sont initialisées à ½. Method (1) of decoding according to claim 1 wherein the calculation step implements at least one iteration of calculation of the posterior probabilities of the states of the lattice produced (T j ®Tj) knowing the probabilities of the states ({Pr ( s)}, {Pr (sJ)}) elementary lattices (7 ^, - -) of the product and calculation of the posterior probabilities of the states of each of the lattices (T t , T j ) of the product knowing the posterior probabilities states of the lattice produced (®7). Method (1) for decoding according to claim 1, further comprising an initialization phase during which for the 1st stage the probabilities of the states of the elementary lattices are initialized with the prior probabilities of the symbols received and for the following stages the state probabilities of elemental lattices are initialized to ½.
Procédé (1) de décodage selon la revendication 1 dans lequel le calcul des probabilités a posteriori des états du treillis produit ( t ®Tj ) comprend : Method (1) for decoding according to claim 1, wherein the calculation of the posterior probabilities of the states of the lattice produced ( t ®T j ) comprises:
- une phase de propagation avant, consistant à propager des probabilités d'état le long des branches du treillis produit et  a propagation phase before, consisting in propagating state probabilities along the branches of the lattice produced and
- une phase de propagation arrière, consistant à propager des probabilités d'état le long des branches du treillis produit.  a rear propagation phase, consisting in propagating state probabilities along the branches of the lattice produced.
Procédé (1) de décodage selon la revendication 1 dans lequel le calcul des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis (Ts et Γ. ) est effectué par marginalisation à partir des probabilités a posteriori des états du treillis produit (T. ®T. ). Method (1) for decoding according to Claim 1, in which the calculation of the posterior probabilities of the states of each of the elementary lattices of the lattice product (T s and Γ.) Is carried out by marginalization from the posterior probabilities of the states of the lattice product (T.TM.).
Procédé (1) de décodage selon la revendication 1, dans lequel un treillis élémentaire correspond à au moins une ligne de la matrice. Method (1) of decoding according to claim 1, wherein a basic lattice corresponds to at least one line of the matrix.
Procédé (1) de décodage selon la revendication 1 dans lequel un treillis élémentaire correspond à une ligne de la matrice et dans lequel le nombre d'étages est l'arrondi par valeur supérieure de Log(2,k). Method (1) of decoding according to claim 1 wherein an elementary lattice corresponds to a row of the matrix and wherein the number of stages is the rounded up value of Log (2, k).
8. Procédé ( 1) de décodage selon la revendication 1 dans lequel l' alphabet est binaire. The method (1) of decoding according to claim 1 wherein the alphabet is binary.
9, Procédé (1) de décodage selon la revendication précédente, dans lequel la cellule de base cello associée à un bit de la matrice égal à zéro est la suivante :
Figure imgf000030_0001
9, decoding method (1) according to the preceding claim, wherein the base cell cello associated with a bit of the matrix equal to zero is as follows:
Figure imgf000030_0001
et la cellule de base cellj associée à un bit de la matrice égal à un est la suivante : and the basic cell cellj associated with a bit of the matrix equal to one is as follows:
10. Procédé (1) de décodage selon la revendication précédente dans lequel le produit de treillis élémentaires est défini à partir des produit des cellules de base : cell0 ® cell0 , cell0 ® cell , cell ® cell0 et cell{ ® respectivement égaux à : 10. Method (1) for decoding according to the preceding claim wherein the elementary lattice product is defined from the products of the base cells: cell 0 ® cell 0 , cell 0 ® cell, cell ® cell 0 and cell { ® respectively equal to:
Figure imgf000031_0001
Figure imgf000031_0001
11. Utilisation d'un procédé de décodage selon l'une des revendications 1 à 10 combinée à la revendication 8 pour décoder un code de Hamming (8,4,4) telle que le nombre d'étages est de deux et l'ensemble des indices des treillis des couples de treillis forme les permutations suivantes : 11. Use of a decoding method according to one of claims 1 to 10 combined with claim 8 for decoding a Hamming code (8.4,4) such that the number of stages is two and all lattice indices of the lattice pairs form the following permutations:
Figure imgf000031_0004
Figure imgf000031_0004
12. Décodeur d'une séquence d'échantillons reçus y correspondant, après transmission, à une séquence c codée de symboles cj, j = 0,1,· ·, {η— 1) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires à des symboles source (x) mettant en œuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné, caractérisé en ce que le décodeur comprend : 12. Decoder of a sequence of received samples corresponding thereto, after transmission, to a coded sequence of symbols c j , j = 0.1, · ·, {η-1), obtained by applying to the coding a code linear error corrector for source symbols (x) implementing an n-column matrix and k symbol lines, the symbols belonging to a given alphabet, characterized in that the decoder comprises:
un moyen de calcul adapté pour effectuer un calcul à plusieurs étages, utilisant des treillis élémentaires déterminés à partir des k lignes de la matrice, chaque treillis T, étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états
Figure imgf000031_0002
comprenant par étage une étape de calcul mettant en œuvre un opérateur papillon pour déterminer des produits ( Tj ®T- ) de treillis élémentaires distincts (T T. avec i≠ y ), pour calculer sur un treillis produit ( Tj ®Tj ) des probabilités a posteriori des états du produit de treillis T: ®Tj ) connaissant les probabilités des états
Figure imgf000031_0003
des treillis élémentaires (T: , Tj ) et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis {Tt , -Γ- ) connaissant les probabilités a posteriori des états du treillis produit ( Ti ®T. ),
calculation means adapted to perform a multi-stage calculation, using elemental lattices determined from the k rows of the matrix, each lattice T being described by a structure of n sections constructed from different base cells associated respectively with the different symbols of the alphabet and being described by the set of probabilities of its states
Figure imgf000031_0002
comprising, by step, a calculation step using a throttle operator to determine distinct elementary lattice products (T j TT-) (T with i ≠ y), to compute on a lattice produced (T j ®T j ) posterior probabilities of the states of the lattice product T : ®T j ) knowing the probabilities of the states
Figure imgf000031_0003
elementary lattice (T: T j) and for calculating posterior probabilities of the states of each of the lattice product lattice (T t , -Γ-) knowing the posterior probabilities of the states of the lattice produced (T i ®T.),
un moyen de calcul adapté pour déterminer des probabilités a posteriori associées aux symboles décodés à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage.  computation means adapted to determine posterior probabilities associated with the decoded symbols from the posterior probabilities of the states of all the elementary lattices of the last stage.
13. Procédé de codage de k symboles source (x) délivrant une séquence c codée de symboles Cj, J = 0, 1, · -, (iî— l) , obtenue en appliquant un code correcteur d'erreurs linéaires mettant en œuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné, caractérisé en ce que le procédé comprend : 13. A method of encoding k source symbols (x) delivering a coded sequence of symbols Cj, J = 0, 1, · -, (i-1), obtained by applying a linear error correction code implementing a matrix with n columns and k lines of symbols, the symbols belonging to a given alphabet, characterized in that the method comprises:
une phase de calcul à plusieurs étages, utilisant des treillis élémentaires T déterminés à partir des k lignes de la matrice, chaque treillis T; étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états ({i (st(r£))}), comprenant par étage une étape de calcul mettant en œuvre un opérateur papillon : a multistage calculation phase, using elementary lattices T determined from the k rows of the matrix, each lattice T; being described by a structure of n sections constructed from different basic cells associated respectively with the different symbols of the alphabet and being described by the set of probabilities of its states ({i (s t (r £ ))}) , comprising by stage a calculation step implementing a butterfly operator:
pour déterminer des produits ( T,- ®Tj ) de treillis élémentaires distincts (Ti t T- , to determine products (T, - ®T j ) of distinct elementary lattices (T it T-,
- pour calculer sur un treillis produit ( Tj ®Tj) des probabilités a posteriori des états du produit de treillis (Tf ®Tj ) connaissant les probabilités des états ({Pr(st( £))}) des treillis élémentaires (7T, T. ) du produit de treillis et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis (T Γ- ) connaissant les probabilités a posteriori des états du treillis produit ( Tj ®Tj ), - to calculate a product lattice (T ® T j j) of the posterior probabilities of mesh product states (T f ® T j) knowing the probabilities of the states ({Pr (s t (£))}) trellises elementary (7T, T) of the lattice product and for calculating posterior probabilities of the states of each of the lattice product lattice (T Γ-) knowing the posterior probabilities of the states of the lattice produced (T j ®T j )
une phase de détermination de probabilités a posteriori associées aux symboles codés Cj à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage,  a phase of determining posterior probabilities associated with the coded symbols Cj from the posterior probabilities of the states of all the elementary lattices of the last stage,
une phase d'initialisation au cours de laquelle pour le 1er étage les probabilités des états des treillis élémentaires sont initialisées avec les k symboles source et avec n-k probabilités égales à ½ représentant les symboles de redondance. an initialization phase during which for the 1st stage the probabilities of the states of the elementary lattices are initialized with the k source symbols and with nk probabilities equal to ½ representing the symbols of redundancy.
14. Codeur de k symboles source (x) délivrant une séquence c codée de symboles cj, j— 0,1, · · ·, («— 1) , obtenue en appliquant un code correcteur d'erreurs linéaires mettant en œuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné, caractérisé en ce que le codeur comprend : 14. Encoder of k source symbols (x) delivering an encoded sequence c of symbols c j , j- 0.1, · · ·, («- 1), obtained by applying a linear error correction code implementing an n-column matrix and k symbol lines, the symbols belonging to a given alphabet, characterized in what the coder understands:
un moyen de calcul adapté pour effectuer un calcul à plusieurs étages, utilisant des treillis élémentaires T, déterminés à partir des k lignes de la matrice, chaque treillis T; étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états ({Pr(st(Ti))}), comprenant par étage une étape de calcul mettant en œuvre un opérateur papillon : calculating means adapted to perform a multi-stage calculation, using elementary lattices T, determined from the k rows of the matrix, each lattice T ; being described by a structure of n sections constructed from different basic cells respectively associated with the different symbols of the alphabet and being described by the set of probabilities of its states ({Pr (s t (Ti))}), comprising per stage a calculation step implementing a butterfly operator:
pour déterminer des produits ( Tt- ®Tj ) de treillis élémentaires distincts (!7J, T- , i≠j ), to determine products (T t - ®T j ) of distinct elementary lattices (! 7J, T-, i ≠ j),
pour calculer sur un treillis produit ( Tj ®Tj ) des probabilités a posteriori des états du produit de treillis { T} ®Tj ) connaissant les probabilités des états
Figure imgf000033_0001
des treillis élémentaires {T; , Tj ) du produit de treillis et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis ( 7^, Γ- ) connaissant les probabilités posteriori des états du treillis produit ®7j ),
to calculate a product lattice (T j ®Tj) posterior probabilities lattices Product states {T} ® T j) knowing the probabilities of the states
Figure imgf000033_0001
elementary lattices {T ; , T j ) of the lattice product and for calculating posterior probabilities of the states of each of the lattice lattice products (7 ^, Γ-) knowing the posterior probabilities of the states of the lattice product (7j),
un moyen de calcul adapté pour déterminer des probabilités a posteriori associées aux symboles codés q à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage,  computation means adapted to determine posterior probabilities associated with the coded symbols q from the posterior probabilities of the states of all the elementary lattices of the last stage,
un moyen de calcul adapté pour initialiser les probabilités des états des treillis élémentaires du 1er étage de calcul avec les k symboles source et avec n-k probabilités égales à ½ représentant les symboles de redondance. calculating means adapted to initialize the probabilities of the elementary lattice of statements 1 computation stage with the k source symbols and nk probabilities equal to ½ representing redundant symbols.
PCT/FR2015/050130 2014-01-17 2015-01-19 Encoding and decoding linear code from lattices WO2015107315A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1450400 2014-01-17
FR1450400A FR3016760A1 (en) 2014-01-17 2014-01-17 METHOD AND DEVICE FOR DECODING SYMBOLS CODED USING A CORRECTING LINEAR ERROR CODE, METHOD AND DEVICE FOR ENCODING, AND CORRESPONDING COMPUTER PROGRAM

Publications (1)

Publication Number Publication Date
WO2015107315A1 true WO2015107315A1 (en) 2015-07-23

Family

ID=50976762

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2015/050130 WO2015107315A1 (en) 2014-01-17 2015-01-19 Encoding and decoding linear code from lattices

Country Status (2)

Country Link
FR (1) FR3016760A1 (en)
WO (1) WO2015107315A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2214322A1 (en) * 2009-01-30 2010-08-04 Alcatel Lucent Iterative MAP decoding of block codes using sub-trellises

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2214322A1 (en) * 2009-01-30 2010-08-04 Alcatel Lucent Iterative MAP decoding of block codes using sub-trellises

Non-Patent Citations (13)

* Cited by examiner, † Cited by third party
Title
A.R. CALDERBANK; G.D. JR. FORNEY; A. VARDY: "Minimal Tailbiting Trellises: the Golay Code and More", IEEE TRANSACTIONS ON INFORMATION THEORY, vol. IT.45, no. 5, July 1999 (1999-07-01), pages 1435 - 1455
C. BERROU; A. GLAVIEUX; P. THITIMAJSHIMA: "Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes", PROCEEDINGS OF THE IEEE INT. CONF. ON COMMUNICATIONS (ICC'93, May 1993 (1993-05-01), pages 1064 - 1070
CALDERBANK A R ET AL: "Minimal Tail-Biting Trellises: The Golay Code and More", IEEE TRANSACTIONS ON INFORMATION THEORY, IEEE PRESS, USA, vol. 45, no. 5, July 1999 (1999-07-01), XP011027374, ISSN: 0018-9448 *
CARLACH J C ET AL: "A new scheme for building good self-dual block codes", INTERNATIONAL SYMPOSIUM ON INFORMATION THEORY, IEEE, PISCATAWAY, NJ, USA, 25 June 2000 (2000-06-25) - 30 June 2000 (2000-06-30), pages 476 - 476, XP010510349, ISBN: 978-0-7803-5857-7 *
G.D. FORNEY: "The Viterbi Algorithm", PROCEEDINGS OF THE IEEE, vol. 61, no. 3, March 1973 (1973-03-01), pages 268 - 278
KOTTER R ET AL: "Construction of minimal tail-biting trellises", INFORMATION THEORY WORKSHOP, 1998 KILLARNEY, IRELAND 22-26 JUNE 1998, NEW YORK, NY, USA,IEEE, US, 22 June 1998 (1998-06-22), pages 72 - 74, XP010297326, ISBN: 978-0-7803-4408-2, DOI: 10.1109/ITW.1998.706441 *
L.R. BAHL; J. COCKE; F. JELINEK; R. RAVIV: "Optimal Decoding of Linear Codes for Minimizing Symbol Error Rate", IEEE TRANSACTIONS ON INFORMATION THEORY, vol. IT-20, March 1974 (1974-03-01), pages 284 - 287
LI YANPING ET AL: "New implementation for the scalable LDPC-decoders", PROCEEDINGS / 2004 IEEE 59TH VEHICULAR TECHNOLOGY CONFERENCE, VTC 2004-SPRING : TOWARDS A GLOBAL WIRELESS WORLD ; 17 - 19 MAY 2004, MILAN, ITALY, IEEE OPERATIONS CENTER, PISCATAWAY, NJ, vol. 1, 17 May 2004 (2004-05-17), pages 343 - 346Vol.1, XP010764816, ISBN: 978-0-7803-8255-8 *
N. WIBERG: "Codes and Decoding on General Graphs", PH.D. THESIS, 1996
R.G. GALLAGER: "Low-Density Parity-Check Codes", IEEE TRANSACTIONS ON INFORMATION THEORY, vol. 8, January 1962 (1962-01-01), pages 21 - 28
R.M. TANNER: "Minimum-distance bounds by graph analysis", IEEE TRANSACTIONS ON INFORMATION THEORY, vol. 47, February 2001 (2001-02-01)
TERRENCE L. FINE: "Probability and probabilistic reasoning for electrical engineering", PEARSON EDUCATION INTERNATIONAL, pages: 324 - 325
YE LIU ET AL: "MAP Algorithms for Decoding Linear Block Codes Based on Sectionalized Trellis Diagrams", IEEE TRANSACTIONS ON COMMUNICATIONS, IEEE SERVICE CENTER, PISCATAWAY, NJ. USA, vol. 48, no. 4, April 2000 (2000-04-01), pages 577 - 587, XP011010820, ISSN: 0090-6778, DOI: 10.1109/26.843125 *

Also Published As

Publication number Publication date
FR3016760A1 (en) 2015-07-24

Similar Documents

Publication Publication Date Title
EP1101288B1 (en) Method and device for error correction coding and corresponding decoding method and device
Ullah et al. Multi-Stage Threshold Decoding for High Rate Convolutional Codes for Optical Communications
WO2006000666A1 (en) Method for error correction coding comprising local error detection codes, corresponding decoding method, transmitting, receiving and storage device and program
EP1974472A1 (en) Fast encoding and decoding methods and related devices
EP2833555B1 (en) Improved method for decoding a corrector code with message passing, in particular for the decoding of LDPC codes or turbo codes
EP1527521B1 (en) Device and method for robust decoding of arithmetic codes
EP2766996B1 (en) Error correction coding and decoding
EP1282254A1 (en) Channel coding and decoding for modulation with large number of states
EP1471647B1 (en) Encoding and decoding of trellis codes comprising trellis sections constructed on block codes with good distance.
WO2015107315A1 (en) Encoding and decoding linear code from lattices
JP5952971B2 (en) Communication path decoding method and communication path decoding apparatus
FR2972878A1 (en) ERROR CORRECTING ENCODING METHOD, DECODING METHOD AND ASSOCIATED DEVICES
WO2016198801A1 (en) Decoding based on a plurality of four-state lattices with self-complementary sections
WO2015197971A1 (en) Methods and devices for error corrector coding and decoding, and corresponding computer program
WO2018115648A1 (en) Encoding and decoding data packets in a galois group
Zolotarev et al. Effective multithreshold decoder for optical and other data transmission systems
WO2008129195A1 (en) Coding and decoding of data signals with variable rates
Yoshikawa On the bit error probability for constant log-MAP decoding of convolutional codes
WO2015079168A1 (en) Data packet encoding by means of convolutional codes and deleted packet recovery
Iakuba et al. Successive cancellation permutation decoding of extended BCH codes
Bocharova et al. Trellis complexity of short linear codes
Chertova et al. Development of Turbo Product Code with Elementary Encoders as LDPC Code
Gonzalez Towards higher speed decoding of convolutional turbocodes
Werling A Hardware Implementation of the Soft Output Viterbi Algorithm for Serially Concatenated Convolutional Codes
SABARINATHAN et al. Reduced Complexity MS Algorithm for Finding the First Two Minima in Tree Architectures

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15704061

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15704061

Country of ref document: EP

Kind code of ref document: A1