WO2015107315A1 - Codage et décodage de code linéaire à partir de treillis - Google Patents
Codage et décodage de code linéaire à partir de treillis Download PDFInfo
- 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
- Legal status (The legal status 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 status listed.)
- Ceased
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum 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/3916—Maximum 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
Codage et décodage à l'aide d'un code correcteur d'erreurs linaires (n,k), comprenant Le procédé comprend une phase de calcul à plusieurs étages, et par étage une étape de calcul mettant en œuvre un opérateur papillon : • - pour déterminer des produits T
i ⊗T
j de treillis élémentaires distincts, chaqe treillis élémentaire étant obtenu à partir d'une des k ligne de la matrice génératrice ou l'une des n-k lignes de la matrice de contrôle de parité, • - pour calculer sur un treillis produit T
i ⊗T
j des probabilités a postériorités états du produit T
i ⊗T
j connaissant les probabilités des états des treillis élémentaires et • - pour calculer des probabilités a postériorités états de chacun des deux treillis T /. et T. connaissant les probabilités a posteriori des états du treillis produit T
i ⊗T
j , le procédé comprenant une phase de détermination de probabilités a posteriori associées aux symboles décodés à partir des probabilités a postériorités états des k ou n-k treillis élémentaires du dernier étage.
Description
CODAGE ET DÉCODAGE DE CODE LINÉAIRE À PARTIR DE TREILLIS
Domaine de l'invention
Le domaine de l'invention est celui du codage et du décodage de symboles, mettant en oeuvre un code correcteur d'erreurs.
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.
L' invention trouve notamment des applications dans les domaines suivants :
la transmission d'information par télécommunications filaires électriques, comme dans les normes ADSL, ou optiques, sur fibres optiques ou en espace libre ;
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 ... ;
la compression et la décompression de source d'informations ;
la génération et la détection de séquences dites d'embrouillage (« scrambling » en anglais) dans les systèmes CDMA ;
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... ;
la correction d'informations lors des calculs dans un circuit intégré d'un microprocesseur ou dans un ordinateur ;
la reconnaissance de formes : images, sons, etc
la robotique commandée par une intelligence artificielle à base de réseaux de neurone. Art antérieur
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.
Ainsi, un code correcteur d'erreur est classiquement défini par :
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),
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
une distance minimale 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.
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).
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.
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,Χχ, ...
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 :
c = x. G (mod 2)
où la matrice G est telle que :
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 :
fc-l
c = ^ xt 9i
£=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 :
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 :
Ό 1 1 0 1 0 0>
1 0 1 1 0 0 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.
Soient deux treillis élémentaires Tj et T, (i≠ j) définis tels que:
T, = {(sieÎsr1)}.
Tj = ίΟί Γ )}·
Le produit de ces deux treillis élémentaires noté T;®Tjest défini par:
W^ KCsf.sfJ. 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.
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 :
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 :
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 :
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.
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:
Ti = {(si, efjS )} et Ti = {(sf, ef,s )}.
Le produit de ces deux treillis élémentaires d'une matrice de contrôle noté Tj®Tjest défini par :
Τ,βΓΓ, = {((sf, sj), (ef, e[), ef .
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.
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.
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.
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.
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".
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.
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 code
(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.
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).
Une variante de cet algorithme de Viterbi a été publiée en 1974, elle est dite "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.
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 : =∑m /ît+1(m')7i(7 i m').
Finalement, les probabilités a posteriori des bits sont calculées telles que :
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.
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).
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.
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.
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 .
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.
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.
Exposé de l'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.
Selon l'invention, 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 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
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,
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.
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.
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].
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.
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).
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.
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 »).
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.
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.
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.
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 à ½.
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.
Selon un mode de réalisation, le calcul des probabilités a posteriori des états du treillis produit comprend :
- une phase de propagation avant, consistant à propager des probabilités d'état le long des branches du treillis produit et
- une phase de propagation arrière, consistant à propager des probabilités d'état le long des branches du treillis produit.
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.
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.
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].
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é.
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 :
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] ,
tout ensemble d'au moins deux treillis élémentaires n'apparaît qu'une seule fois dans l'ensemble des étages de calcul,
- il existe au moins un chemin entre tout opérateur papillon du 1er étage et tout opérateur papillon du dernier étage.
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.
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 :
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,
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 :
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.
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).
Selon un mode de réalisation l'alphabet est binaire.
Selon un mode de réalisation le nombre d'étages est l'arrondi par valeur supérieure de 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.
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 à :
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 :
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 :
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 :
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,,
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 :
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,
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.
Un tel dispositif de décodage est notamment adapté à mettre en œuvre le procédé de décodage décrit précédemment.
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.
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.
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.
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}.
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.
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 :
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
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,
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,
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.
L'invention propose ainsi une nouvelle technique de codage de symboles source.
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.
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.
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 :
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
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,
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,
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.
Un tel codeur est notamment adapté à mettre en œuvre le procédé de codage décrit précédemment.
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.
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.
L'invention concerne encore un dispositif comprenant un codeur et un décodeur de symboles précédemment décrits.
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.
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.
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 :
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,
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),
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),
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,
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,
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),
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),
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,
la figure 8 est un schéma d'un exemple de codeur convolutif de longueur de mémoire m égale à deux,
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,
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),
la figure 13 représente les principales étapes mises en œuvre par un codeur/déc odeur selon l'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,
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),
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),
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.
Description de modes de réalisation de l'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.
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.
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.
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.
Π 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.
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.
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.
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.
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.
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 )}.
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.
Selon un mode de réalisation, la cellule de base cello associée à un bit de la matrice égal à zéro est la suivante :
<D
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.
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 :
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 :
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 :
r0 + Xl + x2 + x3
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,
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.
Par souci de simplification, k est considéré être le nombre de lignes de la matrice.
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.
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 :
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
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 à :
En reprenant l'exemple du code de Hamming (n=8, k=4, dmin=4), le produit TQ ®7 est illustré par la figure 14.
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.
Lors de l'étape de calcul, le procédé fait interagir les treillis au moins deux par deux
(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 :
- 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 },
- 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,
- il existe au moins un chemin entre tout opérateur papillon du dernier étage et tout opérateur papillon du premier étage.
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 :
- 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,
- 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),
et pour un étage suivant :
- 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.
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.
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 :
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.
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- .
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.
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.
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.
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.
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 :
&-1
Prtcj = 1 j y) oc JJ Pr(cj = 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 ».
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.
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.
Ainsi, en reprenant l'exemple du code de Hamming (n=8, k=4,
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.
L'invention est illustrée avec l'exemple du code de Golay (n=24,
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 :
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.
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 :
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.
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].
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.
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.
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.
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.
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.
Références :
[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.
[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.
[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.
[7] « Minimum-distance bounds by graph analysis » de R.M. Tanner, « IEEE Transactions on information theory », vol. 47, février 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.
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 :
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 :
pour déterminer des produits ( Tt ®Tj ) de treillis élémentaires distincts, ( Tt , T.
. 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
(
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- ),
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.
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 à ½.
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 :
- une phase de propagation avant, consistant à propager des probabilités d'état le long des branches du treillis produit et
- une phase de propagation arrière, consistant à propager des probabilités d'état le long des branches du treillis produit.
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. ).
Procédé (1) de décodage selon la revendication 1, dans lequel un treillis élémentaire correspond à au moins une ligne de la matrice.
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).
8. Procédé ( 1) de décodage selon la revendication 1 dans lequel l' alphabet est binaire.
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 :
et la cellule de base cellj associée à un bit de la matrice égal à un est la suivante :
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 à :
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 :
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 :
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
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
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. ),
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.
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 :
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 :
pour déterminer des produits ( T,- ®Tj ) de treillis élémentaires distincts (Ti t 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 ),
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,
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.
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 :
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 :
pour déterminer des produits ( Tt- ®Tj ) de treillis élémentaires distincts (!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
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 ),
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,
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.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR1450400A FR3016760A1 (fr) | 2014-01-17 | 2014-01-17 | Procede et dispositif de decodage de symboles codes a l'aide d'un code correcteur d'erreurs lineaires, procede et dispositif de codage, et programme d'ordinateur correspondants |
| FR1450400 | 2014-01-17 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2015107315A1 true WO2015107315A1 (fr) | 2015-07-23 |
Family
ID=50976762
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/FR2015/050130 Ceased WO2015107315A1 (fr) | 2014-01-17 | 2015-01-19 | Codage et décodage de code linéaire à partir de treillis |
Country Status (2)
| Country | Link |
|---|---|
| FR (1) | FR3016760A1 (fr) |
| WO (1) | WO2015107315A1 (fr) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2214322A1 (fr) * | 2009-01-30 | 2010-08-04 | Alcatel Lucent | Décodage itératif de codes en blocs utilisant des sub-treillis |
-
2014
- 2014-01-17 FR FR1450400A patent/FR3016760A1/fr not_active Withdrawn
-
2015
- 2015-01-19 WO PCT/FR2015/050130 patent/WO2015107315A1/fr not_active Ceased
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2214322A1 (fr) * | 2009-01-30 | 2010-08-04 | Alcatel Lucent | Décodage itératif de codes en blocs utilisant des sub-treillis |
Non-Patent Citations (13)
| 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 (fr) | 2015-07-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| FR2810475A1 (fr) | Unite de decodage de turbo-code et unite de codage/decodage de turbo-code | |
| EP1101288B1 (fr) | Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondants | |
| EP1974472A1 (fr) | Procedes d'encodage et de decodage rapides et dispositifs associes | |
| Chertova et al. | Development of Turbo Product Code with Elementary Encoders as LDPC Code | |
| EP1527521B1 (fr) | Dispositif et procede de decodage robuste de codes arithmetiques | |
| EP2833555B1 (fr) | Procede ameliore de decodage d'un code correcteur avec passage de message, en particulier pour le decodage de codes ldpc ou codes turbo | |
| JP5952971B2 (ja) | 通信路復号方法及び通信路復号装置 | |
| EP1282254A1 (fr) | Codage et décodage de canal pour modulation à grand nombre d'etats | |
| EP2766996B1 (fr) | Codage et decodage correcteur d'erreurs | |
| WO2006000666A1 (fr) | Procede de codage correcteur d’erreurs comprenant des codes locaux detecteurs d’erreurs, procede de decodage, dispositifs d’emission, de reception et de stockage, et programme correspondants | |
| Ullah et al. | Multi-Stage Threshold Decoding for High Rate Convolutional Codes for Optical Communications | |
| FR2838581A1 (fr) | Procede de codage et/ou de decodage de codes correcteurs d'erreurs, dispositifs et signal correspondants | |
| EP1471647B1 (fr) | Codage et décodage utilisant un code construit sur un treillis dont les sections sont basées sur des codes en bloc à bonne distance | |
| WO2015107315A1 (fr) | Codage et décodage de code linéaire à partir de treillis | |
| FR2972878A1 (fr) | Procede d'encodage correcteur d'erreur, procede de decodage et dispositifs associes. | |
| FR3037457A1 (fr) | Procedes et dispositifs de codage et de decodage bases sur un ensemble de treillis construits avec des sections auto-complementaires a 4 etats et programmes d'ordinateur correspondants | |
| WO2015197971A1 (fr) | Procédés et dispositifs de codage et de décodage correcteur d'erreurs, et programme d'ordinateur correspondant | |
| Zolotarev et al. | Effective multithreshold decoder for optical and other data transmission systems | |
| Iakuba et al. | Successive cancellation permutation decoding of extended BCH codes | |
| Yoshikawa | On the bit error probability for constant log-MAP decoding of convolutional codes | |
| WO2008129195A1 (fr) | Codage et decodage de signaux de donnees de rendements variables | |
| Bocharova et al. | Trellis complexity of short linear codes | |
| WO2018115648A1 (fr) | Codage et de décodage de paquets de données dans un corps de galois | |
| WO2015079168A1 (fr) | Codage de paquets de données par codes convolutifs et recouvrement de paquets effacés | |
| Gonzalez | Towards higher speed decoding of convolutional turbocodes |
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 |













