WO2016198801A1 - Décodage sur une pluralité de treillis à sections auto-complémentaires a 4 états - Google Patents

Décodage sur une pluralité de treillis à sections auto-complémentaires a 4 états Download PDF

Info

Publication number
WO2016198801A1
WO2016198801A1 PCT/FR2016/051401 FR2016051401W WO2016198801A1 WO 2016198801 A1 WO2016198801 A1 WO 2016198801A1 FR 2016051401 W FR2016051401 W FR 2016051401W WO 2016198801 A1 WO2016198801 A1 WO 2016198801A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
matrix
sequence
decoding
lattice
Prior art date
Application number
PCT/FR2016/051401
Other languages
English (en)
Inventor
Jean-Claude Carlach
Original Assignee
Orange
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Orange filed Critical Orange
Publication of WO2016198801A1 publication Critical patent/WO2016198801A1/fr

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3944Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes for block codes, especially trellis or lattice decoding thereof
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing

Definitions

  • the field of the invention is that of coding and decoding of symbols, implementing a linear 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 digital television
  • DAB digital radio 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.), or between vehicles, the Internet of Things or communicating machines "IOT: Internet Of Things", ...;
  • an error correction code is conventionally defined by: a length n, corresponding to the sequence at the output of the encoder (or code word of length n formed of k source symbols and (n-k) redundancy symbols),
  • the minimum distance of a code d ⁇ n is the minimum number of different symbols (or distance) between two codewords. It makes it possible to determine the maximum number of errors that the code can detect and possibly correct in a code word.
  • 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. It does not make it possible to decode in real time codes of dimensions greater than about k> 24.
  • Calderbank-Forney-Vardy [l] 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 a block code.
  • c x. G (mod 2), modulo 2 in the binary example.
  • the matrix G is such that:
  • An elementary lattice Tj constructed from the generator matrix G of the code represents the ith line of this matrix.
  • Each elementary lattice is constituted by a series of sections "section 0" and “section 1” according to the values of the bits of a line or generator g t of the matrix G.
  • the lattices T ⁇ are elementary lattices with two states constructed from "section 0" and "section 1" sections illustrated by FIGS. 1a and 1b.
  • Elementary lattices can just as easily be constructed from the code parity check matrix H.
  • a parity check matrix H of a block code C (n, k) is a matrix of size (n-k) X n.
  • the matrix H is such that:
  • Each line of H is associated with an elementary lattice with two states T t .
  • One of the elementary lattices T j represents the ith line of the control matrix H of the code.
  • Each elementary lattice is constituted by a series of sections "section 0" and “section 1" according to the bit values of a line or generator of the matrix H.
  • FIGS. 2a and 2b 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. 2a and 2b.
  • FIG. 2a represents the elementary lattice T 0 corresponding to the generator 10000111.
  • FIG. 2b represents the elementary lattice T 1 corresponding to the generator 01001011.
  • the Viterbi algorithm [2] is known. 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 made from a set of trellises of the encoder. 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 (i.e. hard decision on the detected samples).
  • the received sequence may be different from the encoded sequence coming from the encoder taking into account errors introduced during the transmission between the encoder used on transmission and the decoder used on reception.
  • the decoding tree 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 constraint length code, that is 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.
  • a maximum likelihood decoding algorithm such as that of Viterbi 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 binary data group received by the decoder.
  • the algorithm keeps only the branch that gives the minimum distance; the algorithm systematically keeps only one path among the 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.
  • the Viterbi algorithm uses as input hard information (ie symbols) or soft information (ie quantized values on several levels, ie between -N and + N, ... of the received signal) but only outputs hard information (ie symbols): it is said that it is a decoding algorithm "Soft-In-Hard-Out".
  • 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 state the encoder at time t is represented by the state vector, s ⁇ , ..., sj: m
  • the encoder outputs a code word (c °, c ⁇ , ..., c: m the label assigned to the branch consists of the input bit x t and the code word (c °, c ⁇ , ..., cj : m
  • the state vector s + t the s t + l '- "' s t + 1 of a trellis encoder, only are shown the states for initial state and the final state, the values of the inputs x t and of the coded outputs 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.
  • a final phase that merges the probabilities of state of the forward and backward phases with the prior probability of each bit to calculate the posterior probability of each bit.
  • the "forward" state probabilities are noted at t (m and computed as below, and the branched prior probabilities Y t (n, m ') for a transition of the state.
  • SOVA soft-decision iterative decoding of "Turbo codes” [5] called SOVA
  • the basis for soft-decision decoding of Turbo codes and LDPC codes is the Probability Propagation Algorithm (BP) (Belief Propagation) [6] invented by Robert Gallager in 1961.
  • This BP algorithm propagates probabilities along the branches of a graph of the code and aggregates them on the nodes of this same graph.
  • This graph associated with the code is called Tanner graph of the code, it represents all the algebraic constraints that the symbols of a code word 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.
  • n n ⁇ 1000
  • the BP probability propagation algorithm used in the decoding or its variants becomes more and more suboptimal as the minimum length (girth) of the Tanner graph cycles decreases.
  • a cycle corresponds to a closed path in a Tanner graph representing the constraints that the symbols of a word must fulfill to be a word of the code.
  • Tanner graph is well known, and in particular described in the article [7]. Indeed, this BP algorithm is optimal only on a graph having the topology of a tree or a forest of trees, the presence of short cycles greatly degrades the performance of the soft decision iterative decoding algorithm BP.
  • the optimization of the error correcting codes includes minimizing coding and decoding complexities in terms of material and energy costs consumed as well as minimizing latency for transmissions in real time images and sounds.
  • 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 proposes a method of decoding a sequence y of samples received by a decoder corresponding, after transmission, to a coded sequence c of symbols Cj,
  • the method comprises:
  • a maximum likelihood decoding procedure with intermediate decisions from the received sequence y to determine a list of decoded code words and an error detection procedure on the bits of the decoded words and decision on the value of the bits by using a rule of unanimity between the decoded codewords of the list.
  • the invention thus performs a maximum likelihood decoding associated with decision-making according to a rule of unanimity between the different candidate code words corresponding to the intermediate decoding decisions, unlike the known techniques that use a majority rule.
  • a code may be represented as a binary tree or trellis comprising an originating node (the starting state), a plurality of intermediate nodes (the intermediate states) and a plurality of leaf nodes (the states of arrival).
  • a sequence of bits corresponding to a word of the code is formed by considering the successive transitions of the trellis from the original node to the leaf node associated with the decoded word.
  • the start state is associated with a received sequence of samples, each intermediate node corresponds to a decision about the value of a sample of the sequence and the leaf node corresponds to the decoded word.
  • the binary word or branch tag is a Boolean function of the start state and the input bit
  • the arrival state is also another Boolean function of the start state and the bit. input.
  • the coded sequence is the continuation of time-concatenated branch labels. At decoding, each sample of a received sequence is compared to this branch label and this comparison is accompanied by a decision that determines the transition from a previous state to a next state.
  • the method modifies the corresponding bit of the received sequence when all the intermediate decoding decisions concerning this bit are not identical.
  • the method actually considers in this case as more likely an erroneous received value of this bit.
  • the method then inverts the value received implicitly for a two-state modulation (for example MPD2) which associates with the emitted bit 0, respectively 1, the real value modulated -1.0, respectively +1.0, which amounts to taking into account a zero bit instead of one and vice versa.
  • MPD2 two-state modulation
  • the invention thus proposes a new coded symbol decoding technique using a linear error correction code providing hard decisions per bit while having a complexity that increases in a polynomial or quadratic manner as a function of n 2 .
  • nk-1 or (nk) lattices of n four-state sections that is a maximal complexity in 0 (n-k) n), that is to say a quasi-proportional complexity in 0 ( n 2 ). Therefore the complexity does not exponentially explode, that is to say in 2 k , with the dimension k of the code contrary to known methods.
  • the method further comprises:
  • the decoding method leads to a failure if there is still at least one bit for which the unanimity rule is not respected.
  • the method further comprises a modification of the samples of the sequence y corresponding to the bits for which the rule of unanimity between the decoded codewords of the list is not checked, the corresponding decoded code word to the modified sequence y received.
  • a modification of a sample consists in changing its sign.
  • the maximum-likelihood decoding procedure with intermediate decisions uses as input a set of lattice Ntreillis each constructed as a succession of lattice sections taken from two complementary four-state self-lattice sections, Ntreillis being a natural integer. .
  • the trellis section associated with a zero bit is the following:
  • the maximum likelihood decoding is performed according to a Viterbi type algorithm.
  • a decoding method according to the invention can be used to decode in particular a code 7 (20, 10, 6).
  • a decoding method according to the invention can be used to decode in particular a C code (15, 5, 6).
  • a decoding method according to the invention can be used to decode in particular a C code (18, 12,).
  • the decoder includes:
  • 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.
  • the detector and the decision-making device are iterative type, and the decoder further comprises a device modifying the samples of the sequence y corresponding to the bits for which the rule of unanimity between the decoded code words of the list is not verified.
  • a decoder according to the invention can be implemented in the form of a digital or analog integrated circuit, or in an electronic component of the microprocessor type.
  • the 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 invention therefore further relates to a method for encoding source symbols, delivering coded symbols comprising the source symbols and redundancy symbols.
  • the invention thus proposes a new source symbol encoding technique. It is thus possible to simply obtain new codes or reconstruct existing codes, having any length, easily decodable by the decoding method according to the invention.
  • a code obtained according to the invention is a linear error correction code of yield k / n whose size control matrix (nk, n) is such that one of the rows of the matrix is the complement to two of the sum of the other rows of the matrix.
  • Such a coding method can of course include the various characteristics relating to the decoding method according to the invention.
  • the invention furthermore relates to a corresponding linear error correction encoder.
  • 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.
  • FIGS. 2a and 2b respectively represent the known elementary lattices T 0 and T corresponding to the generators 10000111 and 01001011 for the example of the Hamming code (8.4.4)
  • FIG. 3 diagrammatically represents a coder COD and a decoder DECOD.
  • FIGS. 4a and 4b respectively represent the transition matrices of complementary section sections “sectionO" and “section 1" with four states according to one embodiment of these sections.
  • FIG. 5 represents a conventional sectionO section of a known conventional four-state BCJR lattice
  • FIGS. 6a and 6b respectively represent the self-complementary sections "SectionO" and "section 1" to four states according to an embodiment of these sections corresponding to the passage matrices of Figures 4a and 4b,
  • FIG. 7 represents the lattice composed of five self-complementary four-state sections following the generator (0, 1, 1, 0, 0),
  • FIG. 8 is a flowchart of a decoding method according to the invention.
  • FIG. 9 is a Venn diagram of the code (20, 10, 6) seen as the intersection of ten trellises,
  • Figure 10 is the matrix A of the ten-line and twenty-column lattices describing the complementary self-section lattices used to construct a C code (20, 10, 6)
  • FIG. 11 represents the Tanner graph of the matrix A of FIG. 10,
  • FIG. 12 represents the matrix M of the twenty generators of the lattices of the code C (20, 10, 6),
  • FIG. 13 represents the reduced matrix M reduced after reduction of the matrix M of FIG. 12,
  • FIG. 14 represents the generator matrix G corresponding to the matrix of lattices A of FIG. 10,
  • FIG. 15 represents the matrix A of nine-line and fifteen-column trellises describing the complementary self-section lattices used to construct a C code (15, 5, 6),
  • FIG. 16 represents the Tanner graph of the matrix A of Figure 15
  • FIG. 17 represents the matrix M of the eighteen generators of the lattices of the code C (15, 5, 6),
  • Figure 18 shows the reduced matrix M ⁇ r weft after reduction of the M matrix of Figure 17,
  • FIG. 19 represents the control matrix H corresponding to the lattice matrix A of FIG. 15,
  • FIG. 20 represents the generator matrix G corresponding to the matrix of lattices A of FIG. 15,
  • Fig. 21 shows the matrix A of the five-row, eighteen-column trellis describing the complementary self-section lattices used to construct a C-code (18, 12), and Fig. 22 shows the Tanner graph of the A-matrix. of Figure 21,
  • FIG. 23 represents the matrix M of the ten generators of the C code lattices (18, 12).
  • FIG. 24 represents the reduced matrix M reduced after reduction of the matrix M of FIG. 23.
  • FIG. 25 represents the control matrix H corresponding to the matrix of lattices A of FIG. 21,
  • FIG. 26 represents the generator matrix G corresponding to the lattice matrix A of FIG. 21,
  • FIG. 27 is a graph of the ray functions of the algorithm according to the invention and of Hamming algorithm as a function of the length n of the code,
  • Figs. 28a and 28b are schematic diagrams of simplified structures of an encoder and a decoder according to an embodiment of the invention.
  • the invention encodes or decodes symbols belonging to a binary alphabet.
  • a coder COD takes as input k source data x and outputs a coded sequence c of data c,
  • the linear error correction code C of parameters (n, k) implements an array of binary data, this matrix being either generatrix G of dimension k X n or of parity control H of dimension (n-k) X n .
  • G [P
  • P i ] where tr is the matrix transposition operator and 7d ( n _ fe ) is the identity matrix of
  • 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.
  • the coding and the decoding according to the invention are based on a lattice constructed with self-complementary sections, sectionO and section 1, with reference to the self-complementary codes (8) for which if a code word c belongs to the code then its bitwise complement bit c is also a code word.
  • These self-complementary sections sectionO and section 1 have the following properties: - there is no parallel branch: ie all the branches differ at least by a starting state or a state of arrival,
  • each bit c t of a code word described by a path in the trellis, t 0, 1,. . . , (n - 1), is active on all sections of a lattice formed of these sections, sectionO and sectionl.
  • next state s t + 1 is equal to the present state s t regardless of the value of the bit c t as illustrated in FIG. Figure 5 shows the graph of a section O of a conventional four-state BCJR lattice.
  • This type of section therefore does not make it possible to extract information by traversing the branch associated with the received bit.
  • the trellis codes with self-complementary sections allow a suitable decoding very little complex, fast and some calculations can be performed in parallel.
  • a very advantageous choice therefore consists in constructing the lattices with four-state autocomplementary sections that make it possible to have a set of not very complex lattices.
  • FIG. 6a and 6b A particularly interesting embodiment of the two self-complementary sections "sectionO" and “sectionl” four states is illustrated in Figures 6a and 6b.
  • For each section is represented its graph and its equivalent Tanner graph.
  • the branch label c t (0 or 1) is noted for each branch of the lattice of the section.
  • the transfer matrix of the sectionO is shown in Figure 4a and that of the sectionl in Figure 4b.
  • a trellis is the succession of several sections put end to end.
  • the lattice of the generator (0, 1, 1, 0, 0) has the shape illustrated in FIG. 7.
  • This lattice is composed of five self-complementary sections: a section O section followed by two sections successive sectionl followed by two successive sectionO sections.
  • decoding device an implementation of which is illustrated by the diagram of FIG. 8 comprises:
  • the maximum likelihood decoding uses a Viterbi algorithm.
  • the Viterbi algorithm calculates on a lattice code Cj T ⁇ the word of the code c ( 0 _ C®, ..., £ C j closest to y in the sense of the Euclidean distance 11.11:
  • the procedure provides 2 n decoding trellis intermediate decisions dj dj ° 1 ⁇ , ..., ⁇ dj ntreiUls for each trellis Tag bit ⁇ 3 ⁇ 4 resulting from decoding of n-trellis codes triiiis C t.
  • Method 3 detects the errors on the decoded bits and makes a decision on the value of the bits using a unanimity rule between the decoded codewords of the first list.
  • a code word c is such that:
  • the rule of unanimity between all the decoded code words 4 is to check the identity of the value of each intermediate decision d TM decoded bit) among all n i triuis index lattice for the same index j (same bit decoded): ⁇
  • the method determines that the received value of yj this bit is wrong.
  • the method modifies the erroneous samples of the sequence y corresponding to the erroneous detected decoded bits.
  • This mode implies that the received sequences are encoded according to an MDP2 type modulation format and that the sign change corresponds to a change of parity from 0 to 1 or vice versa from 1 to 0.
  • the method iterates through the decoding procedure 2 and the error detection and decision-making procedure 3.
  • the maximum likelihood decoding procedure 2 takes input of a modified y sequence to determine a second list of candidate decoded binary codewords. The method iterates 6 until unanimity is obtained for all bits or up to a maximum number of iterations.
  • the method can declare a failure of the decoding. This failure can trigger a request to retransmit the incorrectly decoded sequence.
  • Appendix A gives an example of a decoding algorithm according to the invention in a pseudo programming language.
  • the method comprises: a maximum likelihood decoding procedure of the received y sequence using n trelllls lattice with n trelllls intermediate decisions per sample received to determine nirti u is candidates per sample received and
  • an error detection procedure on the candidates and decision-making lasts on the value of the bit to be decoded, using for each sample received a rule of unanimity between the n tri u est candidates.
  • the coding method according to the invention is illustrated with three short bit codes, the code C (20, 10, 6), the code C (15, 5, 6) and the code C (18, 12,) of output respectively. 1/2, 1/3 and 2/3.
  • the determination of the C code (20, 10, 6) can be done from a lattice matrix A which describes a set of lattices (T j ) of ten rows and twenty columns.
  • a lattice matrix A which describes a set of lattices (T j ) of ten rows and twenty columns.
  • T j lattices
  • FIG. 10 shows a matrix A with the notation that a zero bit is represented by ° and that a bit one is represented by ⁇ .
  • FIG. 11 represents the Tanner graph of the matrix A of FIG. 10.
  • the code C (20, 10, 6) is obtained by the multiple intersection of ten code -treillis Cj.
  • the trellis T t of a trellis code C t is constructed as a sequence of sections equal to either "sectionO" or "sectionl".
  • these basic sections are self-complementary, which means that the branches are labeled either the bit Cj is its complementary ⁇ j and that we can obtain complementary codes with a trellis composed of these two sections.
  • a trellis T t can therefore be reduced to the data of two generators which are the line A t of the matrix A and its complement line. In the example of the code C (20, 10, 6), the twenty generators placed
  • M the matrix illustrated in FIG. 12.
  • the matrix M is reduced by using a "Row-Reduce” algorithm such as the Gauss-Jordan elimination algorithm (Gauss-Jordan elimination) [10].
  • the reduction makes it possible to obtain a reduced reduced matrix M in a systematic form illustrated by FIG. 13.
  • the reduced matrix makes it possible to determine the dimension of the subspace described by the matrix M, that is to say the number of lines independent.
  • the resulting check matrix H in this example is equal to the lattice of the matrix a shown in Figure 10.
  • P] it is easy to obtain the generator matrix G: G [P tr ⁇ Id w ]. This generator matrix G is illustrated in FIG.
  • the calculation of the 2 10 words in the code C (20, 10, 6) ensures that its distribution is:
  • W (X) 1 + 90X 6 + 255X 8 + 332X 10 + 255X 12 + 90X 14 + X 20 .
  • the whole distribution represents a null codeword and the first monomial non-zero power (90X 6) indicates that each code word has ninety first neighbors with a Hamming distance of six.
  • the distribution is symmetrical with respect to the weight of the medium (10) because this code C (20, 10, 6) is auto -complementary.
  • the Tanner graph of the matrix A is shown in FIG. 16.
  • the control matrix and the generator matrix of the code C (15, 5, 6) can be determined from the matrix of the lattices A.
  • a lattice T t is defined by two generators which are a line A t of matrix A lattices and its line
  • the matrix M illustrated in FIG. 16 is constructed with the eighteen generators thus defined.
  • the matrix M is reduced by using a column reduction algorithm (“Row-Reduce”) such as the Gauss-Jordan elimination algorithm (Gauss-Jordan elimination).
  • Reduction provides a reduced matrix M ⁇ r weft in a systematic form illustrated in FIG 18.
  • the reduced matrix is used to determine the dimension of the space described by the matrix M, that is to say the number of independent lines.
  • the control matrix of the code C (15, 5, 6) resulting from the intersection of the elementary codes is composed of the first non-zero lines of the reduced M reduced matrix which are ten in number.
  • the matrix resulting H control illustrated in FIG 19 is in this example equal to the nine lines of the lattice of the matrix a most a tenth line equal to the complement of all lines of the matrix A illustrated in FIG.
  • the Tanner graph of the matrix A is shown in Figure 22.
  • the check matrix and the generator matrix of the code C (18, 12, 4) can be determined from the lattice of the matrix A.
  • a trellis T t is defined by two generators which are a line A t of matrix A trellises and its complementary line A t .
  • the matrix M illustrated in FIG. 23 is constructed with the ten generators thus defined.
  • M form the matrix illustrated in Figure 23.
  • the matrix M is reduced by using a column reduction algorithm (“Row-Reduce”) such as the Gauss-Jordan elimination algorithm (Gauss-Jordan elimination).
  • the reduction allows a reduced matrix M r ⁇ pick systematic form shown in Figure 24.
  • the reduced matrix to determine the dimension of the space described by the matrix M, that is to say the number of independent lines.
  • the control matrix of the code C (18, 12, 4) resulting from the intersection of the elementary codes is composed of the first non-zero lines of the reduced reduced matrix M which are six in number.
  • P], it is easy to obtain the generator matrix G: G [P tr ⁇ Id 12 ]. This generator matrix G is illustrated in FIG. 26.
  • the invention provides a decoding technique that performs better than the prior art techniques with respect to good short error correcting codes such as: conventional algebraic codes such as Golay code (24, 12, 8), the QR code (48,24,12), etc.
  • Table 2 in Annex A is a comparative table of the complexity of the decoding algorithm according to the invention with respect to the complexity of the optimal known decoding on tail-biting lattice of Calderbank-Forney-Vardy [1] and the known decoding of Chase-Adde [9].
  • the complexity is evaluated by the number of additions implemented by the algorithm.
  • the complexity values highlight the least complexity of the invention for near-optimal performance.
  • FIG. 27 is a graph which makes it possible to compare the ray functions of the algorithm according to the invention and of the Hamming algorithm as a function of the length n of the code for an MDP2 modulation.
  • This radius is the radius of the sphere covered by the set of projections on each of the spaces that constitute the codes.
  • An efficient decoding algorithm requires that the radius be greater than the minimum Euclidean distance (Jd min ) of the code to be able to determine the nearest codeword within a radius sphere the minimum Euclidean distance of the code derived from its minimal Hamming distance.
  • the radius curve of the proposed algorithm in the case of yield codes 1/2 is much greater than the minimum Euclidean distance already for a length n ⁇ 24.
  • FIGS 28a and 29b schematically illustrate the simplified structures of an encoder
  • COD and DEC decoder 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 before being executed by the processor of the processing unit 11.
  • the processing unit 11 receives data input source x and delivers coded data c comprising the source data 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 the redundancy data with a yield k / n by multiplying a vector of source symbols x belonging to a binary alphabet with a size control matrix ( nk, n) such that one of the rows of the matrix is the two's complement of the sum of the other rows of the matrix.
  • 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 X 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 the buffer memory 20, a maximum likelihood decoder with intermediate decisions for determining a list of decoded codewords from the received sequence y, a bit error detector of the decoded words. and a bit value decision-making member using a unanimity rule between the decoded code words of the list.
  • the maximum likelihood decoder, the error detector and the decision-making member are controlled by the microprocessor of the processing unit 21. Annex A
  • dss reil is tiie ss ssi: ssi.rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
  • i0-B 0: k>g; lx ⁇ rs: i>? yj!> ⁇ : ⁇ ? . ⁇ iijg ⁇ ir ⁇ tlKîx;

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Error Detection And Correction (AREA)

Abstract

L'invention concerne un procédé de décodage d'une séquence y de n échantillons reçus par un décodeur et correspondant, après transmission, à une séquence c codée de n bits obtenue en appliquant au codage un code correcteur d'erreurs linéaires à des symboles source, le procédé (1) comprenant : • une procédure (2) de décodage à maximum de vraisemblance de la séquence y reçue utilisant une pluralité de treillis pour déterminer une pluralité correspondante de mots décodés, ainsi produisant une pluralité de décisions, dites intermédiaires, pour chacun des n échantillon reçus, • une procédure (3) de détection d'erreur sur les bits des mots décodés utilisant une règle de l'unanimité entre les décisions intermédiaires afférant à chaque échantillon et de prise de décision d'une valeur estimée des n bits de la séquence c codée.

Description

DECODAGE SUR UNE PLURALITE DE TREILLIS A SECTIONS
AUTO-COMPLÉMENTAIRES A 4 ÉTATS
Domaine de l'invention
Le domaine de l'invention est celui du codage et du décodage de symboles, mettant en œuvre un code correcteur d'erreurs linéaire.
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), ou entre véhicules, l'Internet des objets ou machines communicants « IOT : Internet Of Things », ... ;
la compression et la décompression de source d'informations par exemple de type vidéo ; - 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 à la séquence en sortie du codeur (ou 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^n.
La distance minimale d'un code d^n correspond au nombre minimum de symboles différents (ou distance) entre deux mots de code. Elle permet de déterminer le nombre maximum d'erreurs que le code peut détecter et éventuellement corriger dans un mot de code.
Ainsi, plus la distance minimale d^ est grande, meilleur est le code correcteur d'erreurs, puisqu'il permet de détecter (dm n - l) symboles erronés et d'en corriger (^niin (ou l'opérateur désigne la partie entière).
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. Elle ne permet pas de décoder actuellement en temps réel les codes de dimensions supérieures à environ k>24.
Calderbank-Forney-Vardy[l] ont décrit la construction de treillis élémentaires. Les treillis élémentaires sont construits à l'aide des lignes soit d'une matrice G génératrice, soit d'une matrice H de contrôle de parité d'un code en bloc.
Un code en bloc C(n,k) est défini par une matrice G génératrice de dimensions k x n composée de k lignes et de n colonnes telle que pour tout bloc d'information ou séquence de k échantillons x = (x0, xlt ... , le mot de code c = (c0, clt ... , cn_1) est obtenu par codage de x.
C'est-à-dire que c est le produit vecteur-matrice de x et de G : c = x. G (mod 2), modulo 2 dans l'exemple binaire. La matrice G est telle que :
G =
Figure imgf000004_0001
Figure imgf000004_0002
li
Un treillis élémentaire Tj construit à partir de la matrice G génératrice du code représente la ième ligne de cette matrice. Chaque treillis élémentaire est constitué par une suite de sections «section 0» et «section 1» selon les valeurs des bits d'une ligne ou générateur gt de la matrice G. De manière classique les treillis T{ sont des treillis élémentaires à deux états construits à partir des sections de type « section 0 » et « section 1 » illustrées par les figures la et lb. Les treillis élémentaires peuvent tout aussi bien être construits à partir de la matrice H de contrôle de parité du code. Une matrice H de contrôle de parité 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 : cHtr = 0 (mod 2), où « tr » est l'opérateur transposition matriciel. La matrice H est telle que :
H =
Figure imgf000005_0002
A chaque ligne de H est associé un treillis élémentaire à deux états Tt.
Dans le cas d'une matrice H de contrôle du code, la construction d'un ensemble de treillis élémentaires est décrit à partir de l'exemple du code de Hamming (n= 8, k=4, dmin = 4) dont une matrice de contrôle H4x8 est donnée par :
Figure imgf000005_0001
Un des 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. Les figures la et lb 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 2a et 2b. La figure 2a représente le treillis élémentaire T0 correspondant au générateur 10000111. La figure 2b représente le treillis élémentaire T1 correspondant au générateur 01001011.
Parmi les méthodes de décodage des codes correcteurs linéaires utilisant des informations douces, il est connu l'algorithme de Viterbi [2]. 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 d'un ensemble de 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 (i.e. décision dure sur les échantillons détectés). 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, un algorithme de décodage à maximum de vraisemblance tel que celui de Viterbi 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 ne garde systématiquement qu'un seul chemin parmi les 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.
Toutes les décisions intermédiaires de décodage concernant un même symbole sont combinées selon la règle de décision majoritaire comme le souligne [3] éventuellement adaptée si l'on dispose de valeurs de décodage intermédiaires quantifiées sur suffisamment de niveaux en faisant la somme des valeurs de décodage intermédiaires concernant le même symbole, comme dans le décodage des codes de Reed-Miiller.
L'algorithme de Viterbi utilise en entrée des informations dures (i.e des symboles) ou des informations souples (i.e. les valeurs quantifiées sur plusieurs niveaux, i.e. entre -N et +N, ... 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, 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 ,s^, ... , sj:m 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} , ... , c:m l'étiquette affectée à la branche se compose de l'élément binaire d'entrée xt et du mot de code (c°, c}, ... , cj:m Juste après le codeur passe dans l'état suivant représenté par le vecteur d'état (s t+l'St+l' -" ' St+1 Sur un treillis du codeur, seuls sont indiqués les états pour l'état initial et l'état final, les valeurs des entrées xt et des sorties codées 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.
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é de l'ensemble 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 : t m =∑m t_1(m')Yt(m, m'). De même les probabilités d'état « backward » sont notées /?t(m) et calculées telles que : /?t(m) =∑m'/?t+1(m')yt(m, m'). Finalement, les probabilités a posteriori des bits sont calculées telles que :
Prapp(bitt = v) =∑(m m it=v)at(m)yt(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 Gla vieux 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) [6] 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 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 de plus en plus sous-optimal au fur et à mesure que la longueur minimale (girth) des cycles du graphe de Tanner 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 ainsi que la minimisation des temps de latence pour les transmissions en temps réel d'images et de sons. 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.
Il 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 dmin la plus grande possible.
Exposé de l'invention
L'invention propose un procédé de décodage d'une séquence y d'échantillons reçus par un décodeur correspondant, après transmission, à une séquence c codée de symboles Cj ,
J = 0, !,· · ·,( ft—l) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires à des symboles source (x) appartenant à un alphabet binaire. Le procédé comprend :
- une procédure de décodage à maximum de vraisemblance avec décisions intermédiaires à partir de la séquence y reçue pour déterminer une liste de mots de code décodés et - une procédure de détection d'erreur sur les bits des mots décodés et de prise de décision sur la valeur des bits en utilisant une règle de l'unanimité entre les mots de code décodés de la liste.
L'invention effectue ainsi un décodage à maximum de vraisemblance associé à une prise de décision selon une règle de l'unanimité entre les différents mots de code candidats correspondant aux décisions intermédiaires de décodage contrairement aux techniques connues qui utilisent une règle majoritaire.
Un code peut être représenté sous la forme d'un arbre binaire ou treillis comprenant un nœud d'origine (l'état de départ), une pluralité de nœuds intermédiaires (les états intermédiaires) et une pluralité de nœuds feuilles (les états d'arrivée). Une séquence de bits correspondant à un mot du code est formée en considérant les transitions successives du treillis depuis le nœud d'origine jusqu'au nœud feuille associé au mot décodé. L'état de départ est associé à une séquence reçue d'échantillons, chaque nœud intermédiaire correspond à une prise de décision par rapport à la valeur d'un échantillon de la séquence et le nœud feuille correspond au mot décodé. Dit autrement, le mot binaire ou étiquette de branche est une fonction booléenne de l'état de départ et du bit d'entrée, de même l'état d'arrivée est aussi une autre fonction booléenne de l'état de départ et du bit d'entrée. La séquence codée est la suite des étiquettes de branche concaténées dans le temps. Au décodage, chaque échantillon d'une séquence reçue est comparé à cette étiquette de branche et cette comparaison s'accompagne d'une prise de décision qui détermine le passage d'un état précédent à un état suivant.
Selon la règle de l'unanimité utilisée, le procédé modifie le bit correspondant de la séquence reçue lorsque toutes les décisions intermédiaires de décodage concernant ce bit ne sont pas identiques. Le procédé considère effectivement dans ce cas comme plus probable une valeur reçue erronée de ce bit. Le procédé inverse alors la valeur reçue sous-entendu pour une modulation à deux états (par exemple MPD2) qui associe au bit émis 0, respectivement 1, la valeur réelle modulée -1.0, respectivement +1.0, ce qui revient à prendre en compte un bit zéro à la place d'un un et inversement.
Une prise de décision selon une règle de l'unanimité va à l'inverse des décodages à règle majoritaire classique. L'invention exploite en effet le fait qu'un mot de code se trouve à l'intersection de multiples codes-treillis à nombre réduit d'états et plus particulièrement à quatre états avec une distance minimum de seulement deux ce qui en font des codes seulement détecteurs d'erreurs. Cette règle de l'unanimité permet de simplifier le décodage. La détection des erreurs est simplifiée du fait que toutes les sections auto-complémentaires de même indice t donnent toutes une valeur de décodage a posteriori pour le bit ct. Si toutes ces décisions en t sont égales (unanimité) alors le procédé décide que le plus probable est que la valeur reçue est correcte sinon le plus probable est qu'une erreur soit survenue à cette position t. La combinaison de la règle de décision par unanimité et des sections de treillis auto-complémentaires rend ce décodage très simple.
L'invention propose ainsi une nouvelle technique de décodage de symboles codés à l'aide d'un code correcteur d'erreurs linéaire fournissant des décisions dures par bit tout en ayant une complexité qui augmente de façon polynomiale ou quadratique car fonction de n2. En effet, il y a (n-k-1) ou (n-k) treillis de n sections à quatre états soit une complexité maximale en 0 (n— k)n) c'est-à-dire une complexité quasi-proportionnelle en 0(n2). Par conséquent la complexité n'explose pas de façon exponentielle, c'est-à-dire en 2k, avec la dimension k du code contrairement aux méthodes connues.
Selon un mode de réalisation le procédé comprend en outre :
- une modification des échantillons de la séquence y correspondant aux bits pour lesquels la règle de l'unanimité entre les mots de code décodés de la liste n'est pas vérifiée et au moins une itération :
- d'une procédure de décodage à maximum de vraisemblance avec décisions intermédiaires à partir de la séquence y modifiée pour déterminer une nouvelle liste de mots de code décodés prise ultérieurement comme liste de mots de code décodés et
- d'une procédure de détection d'erreur sur les bits des mots de code décodés et de prise de décision sur la valeur des bits en utilisant une règle de l'unanimité entre les mots de code décodés de la liste.
Selon un mode de réalisation, après un nombre donné d'itérations, le procédé de décodage conduit à un constat d'échec s'il reste encore au moins un bit pour lequel la règle de l'unanimité n'est pas respectée.
Selon un mode de réalisation le procédé comprend en outre une modification des échantillons de la séquence y correspondant aux bits pour lesquels la règle de l'unanimité entre les mots de code décodés de la liste n'est pas vérifiée, le mot de code décodé correspondant à la séquence y reçue modifiée.
Selon un mode de réalisation une modification d'un échantillon consiste à changer son signe.
Selon un mode de réalisation la procédure de décodage à maximum de vraisemblance avec décisions intermédiaires utilise en entrée un ensemble de Ntreillis treillis construit chacun comme une succession de sections de treillis prises parmi deux sections de treillis auto complémentaires à quatre états, Ntreillis étant un entier naturel.
Selon un mode de réalisation la section de treillis associée à un bit zéro est la suivante :
Figure imgf000011_0001
et la section de treillis associée à un bit un est la suivante
Figure imgf000011_0002
Selon un mode de réalisation, le décodage à maximum de vraisemblance est effectué selon un algorithme de type Viterbi.
Un procédé de décodage selon l'invention peut être utilisé pour décoder en particulier un code £7(20, 10, 6).
Un procédé de décodage selon l'invention peut être utilisé pour décoder en particulier un code C(15, 5, 6).
Un procédé de décodage selon l'invention peut être utilisé pour décoder en particulier un code C(18, 12, ).
L'invention a en outre pour objet un 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,•••, {n— l) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires à des symboles source (x) appartenant à un alphabet binaire. Le décodeur comprend :
- un décodeur à maximum de vraisemblance avec décisions intermédiaires à partir de la séquence y reçue pour déterminer une liste de mots de code décodés et
- un détecteur d'erreur sur les bits des mots décodés et un organe de prise de décision sur la valeur des bits en utilisant une règle de l'unanimité entre les mots de code décodés de la liste.
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.
En particulier, selon un mode de réalisation, le détecteur et l'organe de décision sont de type itératif, et le décodeur comprend en outre un dispositif modifiant les échantillons de la séquence y correspondant aux bits pour lesquels la règle de l'unanimité entre les mots de code décodés de la liste n'est pas vérifiée.
Un décodeur selon l'invention 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.
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 applique à des symboles source x appartenant à un alphabet binaire un code correcteur d'erreurs linéaires dont la matrice de contrôle de taille (n- k,n) est telle qu'une des lignes de la matrice est le complément à deux de la somme des autres lignes de la matrice pour obtenir une séquence c codée de symboles Cj, J ' = 0, 1, · · · , ( n— l) avec un rendement k/n.
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.
Ainsi, un code obtenu selon l'invention est un code correcteur d'erreurs linéaires de rendement k/n dont la matrice de contrôle de taille (n-k,n) est telle qu'une des lignes de la matrice est le complément à deux de la somme des autres lignes de la matrice.
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 correcteur d'erreurs linéaires correspondant. Un tel codeur comporte un moyen de calcul adapté pour déterminer une séquence c codée de symboles Cj, j = 0,1,•••, {n— l) avec un rendement k/n en multipliant un vecteur de symboles source x appartenant à un alphabet binaire avec une matrice de contrôle de taille (n-k,n) telle qu'une des lignes de la matrice est le complément à deux de la somme des autres lignes de la matrice.
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 :
les figures la et lb représentent respectivement les sections classiques associées aux deux valeurs de bit (bit= 0 et bit =1) d'une ligne de la matrice H de contrôle de parité d'un code, les figures 2a et 2b représentent respectivement les treillis élémentaires connus T0 et T correspondant aux générateurs 10000111 et 01001011 pour l'exemple du code de Hamming (8,4,4),
la figure 3 représente schématiquement un codeur COD et un décodeur DECOD les figures 4a et 4b représentent respectivement les matrices de passage de sections auto complémentaires « sectionO » et « section 1 » à quatre états selon un mode de réalisation de ces sections,
- la figure 5 représente une section classique sectionO d'un treillis BCJR classique à quatre états connu,
les figures 6a et 6b représentent respectivement les sections auto-complémentaires « sectionO » et « section 1 » à quatre états selon un mode de réalisation de ces sections correspondant aux matrices de passage des figures 4a et 4b,
la figure 7 représente le treillis composé de cinq sections auto-complémentaires à quatre états suivant le générateur (0, 1, 1, 0, 0),
- la figure 8 est un organigramme d'un procédé de décodage selon l'invention,
la figure 9 est un diagramme de Venn du code (20, 10, 6) vu comme l'intersection de dix treillis,
la figure 10 est la matrice A des treillis, de dix lignes et vingt colonnes décrivant les treillis de sections auto complémentaires utilisées pour construire un code C(20, 10, 6)
- la figure 11 représente le graphe de Tanner de la matrice A de la figure 10,
la figure 12 représente la matrice M des vingt générateurs des treillis du code C(20, 10, 6), la figure 13 représente la matrice réduite Mréduite après réduction de la matrice M de la figure 12,
la figure 14 représente la matrice génératrice G correspondant à la matrice des treillis A de la figure 10,
la figure 15 représente la matrice A des treillis, de neuf lignes et quinze colonnes décrivant les treillis de sections auto complémentaires utilisées pour construire un code C(15, 5, 6), la figure 16 représente le graphe de Tanner de la matrice A de la figure 15,
la figure 17 représente la matrice M des dix-huit générateurs des treillis du code C(15, 5, 6),
la figure 18 représente la matrice réduite Mr^duite après réduction de la matrice M de la figure 17,
la figure 19 représente la matrice de contrôle H correspondant à la matrice des treillis A de la figure 15,
- la figure 20 représente la matrice génératrice G correspondant à la matrice des treillis A de la figure 15,
la figure 21 représente la matrice A des treillis, de cinq lignes et dix-huit colonnes décrivant les treillis de sections auto complémentaires utilisées pour construire un code C(18, 12, ), la figure 22 représente le graphe de Tanner de la matrice A de la figure 21,
- la figure 23 représente la matrice M des dix générateurs des treillis du code C(18, 12, ), la figure 24 représente la matrice réduite Mréduite après réduction de la matrice M de la figure 23,
la figure 25 représente la matrice de contrôle H correspondant à la matrice des treillis A de la figure 21,
- la figure 26 représente la matrice génératrice G correspondant à la matrice des treillis A de la figure 21, la figure 27 est un graphe des fonctions rayons de l'algorithme selon l'invention et de algorithme de Hamming en fonction de la longueur n du code,
les figures 28a et 28b 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.
Description de modes de réalisation de l'invention
L'invention code ou décode des symboles appartenant à un alphabet 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 3.
Il 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.
Ainsi, selon le mode de réalisation illustré en figure 3, 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 c ,
J = 0, !,· · ·, ( ft—l) comprenant les données source x et des données de redondance r. Le code correcteur d'erreurs linéaires C de paramètres (n, k) met en œuvre une matrice de données binaires, cette matrice étant soit génératrice G de dimension k X n soit de contrôle de parité H de dimension (n— k) X n. Le code correcteur d'erreurs linéaires C est l'ensemble des mots de code c tel que: c = xG. Le mot de code c comprend les bits source x = (ΧΟ, Χ-L, ... , Χ^-^) correspondant à l'information utile placés généralement à gauche et les bits de redondance r = (r0, r1( ... , r(n-k-i)) placés à la suite ou vice versa : c = (x0, xlt ... , Χ(¾_ι), r0, r1( ... , r(n_fe_1) ).
Si le codage est systématique, la matrice génératrice G est alors dite sous forme systématique. Dans ce cas elle s'écrit sous la forme : G = [P|/cZfe] avec Idk la matrice identité de dimensions k X k et P une matrice dite « de parité » de dimensions k X (n— k). La matrice de contrôle de parité du code définie par cHtr = 0 peut alors s'écrire : / = [/d(n_fe) |Pi ] = où tr est l'opérateur de transposition matriciel et 7d(n_fe) est la matrice identité de
Figure imgf000015_0001
dimensions (n— ) x (n— ).
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.
En rupture avec les techniques connues, le codage et le décodage selon l'invention sont basés sur un treillis construit avec des sections auto-complémentaires, sectionO et section 1, en référence aux codes auto-complémentaires (self complementary codes [8]) pour lesquels si un mot de code c appartient au code alors son complément bit à bit c est aussi un mot de code. Ces sections auto-complémentaires sectionO et section 1 ont les propriétés suivantes : - il n'y a aucune branche parallèle : i.e. toutes les branches diffèrent au moins par un état de départ ou un état d'arrivée,
- elles possèdent un nombre de branches étiquetées par 0 égal au nombre de branches étiquetées par 1 ,
- elles ont un nombre égal de branches d'étiquettes 0 et 1 partant d'un même état de départ,
- elles ont un nombre égal de branches d'étiquettes 0 et 1 finissant sur un même état d'arrivée.
Cet ensemble de propriétés se traduit de façon condensée par la forme de la matrice de passage C^sectionQ^, C^sectionl^, des sections : leurs matrices de passage possèdent une et une seule fois sur chacune de leurs lignes et sur chacune de leurs colonnes tous les symboles de l'alphabet. Chaque bit ct d'étiquette de branche est placé dans la matrice de passage dans la ligne de même indice d'état de départ et dans la colonne de même indice d'état d'arrivée j soit C section0-)i = ct, C (sectioni)i,j = c t- Les matrices de passage d'une sectionO et d'une sectionl auto-complémentaires à quatre états sont représentées respectivement aux figures 4a et 4b.
Dans le cas binaire {0, 1 }, il y a donc un seul 0 et un seul 1 par ligne et par colonne. Ces propriétés font que chaque bit ct d'un mot de code décrit par un chemin dans le treillis, t = 0, 1, . . . , (n - 1), est actif sur toutes les sections d'un treillis formé de ces sections, sectionO et sectionl. Le procédé peut donc obtenir de l'information a posteriori sur ce bit ct après décodage de chaque treillis ce qui est impossible avec les sections classiques des treillis connues notamment celles associées à un doublet nul (h0>t, hi>t) = (0, 0) et qui ont des branches parallèles. En effet, dans ce cas précis et notamment pour un treillis classique dit "BCJR", l'état suivant st+1 est égal à l'état présent st quel que soit la valeur du bit ct comme illustré par la figure 5. La figure 5 représente le graphe d'une sectionO d'un treillis BCJR classique à quatre états. Les branches parallèles du graphe se traduisent par une absence d'étiquette de branche puisque quelle que soit la valeur de l'échantillon reçu, il n'y a pas de changement entre l'état présent st = (s°,s^ ) et l'état suivant st+1 = (s°+1,s^+1 ). Ce type de section ne permet pas par conséquent d'extraire d'information en parcourant la branche associée au bit reçu.
Les codes treillis avec sections auto-complémentaires permettent un décodage adapté très peu complexe, rapide et dont certains calculs peuvent être effectués en parallèle.
Un choix très avantageux consiste donc à construire les treillis avec des sections autocomplémentaires à quatre états qui permettent d'avoir un ensemble de treillis peu complexes.
Un mode de réalisation particulièrement intéressant des deux sections autocomplémentaires « sectionO » et « sectionl » à quatre états est illustré aux figures 6a et 6b. Pour chaque section est représenté son graphe et son graphe de Tanner équivalent. Pour chaque section est indiqué à gauche du treillis l'état présent st = (s°,s^ ) et à droite du treillis l'état suivant st+1 = (s°+1,s^+1 ). L'étiquette de branche ct (0 ou 1) est notée pour chaque branche du treillis de la section. Les sections de treillis peuvent être représentées de manière très compacte sous la forme d'une matrice de passage C^section0 C^sectionl^ dans laquelle chaque bit ct d'étiquette de branche est placé dans la ligne de même indice d'état de départ et dans la colonne de même indice d'état d'arrivée j soit C (section0 i = ct,
Figure imgf000017_0001
= ct- La matrice de passage de la sectionO est représentée à la figure 4a et celle de la sectionl à la figure 4b.
Un treillis est la succession de plusieurs sections mises bout à bout. Par exemple, selon l'invention, le treillis du générateur (0, 1, 1, 0, 0) a la forme illustrée par la figure 7. Ce treillis est composé de cinq sections auto-complémentaires : une section sectionO suivie de deux sections sectionl successives suivies de deux sections sectionO successives.
Compte tenu que les sections de treillis sont auto-complémentaires, si le rendement du code r=k/n est égal à ½ alors le nombre de treillis ntrelllls = (n— k) = k et si le rendement du code est différent de ½ alors le nombre de treillis ntreiuis = (n— k— 1).
Le procédé de décodage décode avec un décodeur une séquence y = iyo,y ,— ,yn-i) d'échantillons reçus correspondant, après transmission, à une séquence c codée de symboles Cj, 7 = 0,1,· · ·,(η-ΐ) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires à des symboles source x = (x0, x1( ... , xfe_1) appartenant à un alphabet binaire. Un procédé 1 de décodage selon l'invention dont une mise en œuvre est illustrée par le schéma de la figure 8 comprend :
- une procédure 2 de décodage à maximum de vraisemblance avec décisions intermédiaires à partir de la séquence y = (y0, ylt ... , yn_i) reçue et
- une procédure 3 de détection d'erreur sur les bits d® des mots décodés et de prise de décision sur la valeur des bits selon une règle de l'unanimité.
La procédure 2 de décodage à maximum de vraisemblance prend des décisions intermédiaires pour déterminer une première liste de mots d® de codes binaires décodés candidats : d® = dg ... , d^i, i = 0, 1, ... , ^treillis ~ 1·
Selon un mode de réalisation, le décodage à maximum de vraisemblance utilise un algorithme de Viterbi. L' algorithme de Viterbi calcule sur un code Cj de treillis T{ le mot du code c (0 _ C®, ... , £ Cj le plus proche de y au sens de la distance euclidienne 11.11 :
Figure imgf000017_0002
d(i) = Arg min \\y - ||2 = Arg minc®eCi yj - c °) .
Ainsi, la procédure 2 de décodage fournit ntreillis décisions intermédiaires dj° dj 1^, ... , djntreiUls ^ pour chaque bit d'étiquette du treillis Γ¾ résultant du décodage de ntreiiiis codes-treillis Ct.
Le procédé 3 détecte les erreurs sur les bits décodés et prend une décision sur la valeur des bits en utilisant une règle de l'unanimité entre les mots de code décodés de la première liste. Le code global C(n, k, dmin) peut être vu comme l'intersection des ntreiuis codes-treillis Ci, i = 0, 1, ... , ntremis— 1 ce qui se note sous la forme : C = \ =Q IUIS 1 CI. Cette intersection multiple peut être représentée par le dessin du diagramme de Venn. La figure 9 illustre le diagramme de Venn du code (20,10, 6) pour lequel ntreillis = 10. Un mot de code c est tel que :
c = (c0, c1, ... , cn_1( ) £ C =
Figure imgf000018_0001
Un mot de code c doit appartenir à tous les codes-treillis Cit i = 0, 1,—, ntremis— 1 quel que soit le bit d'étiquette Cj,j = 0,1, (n— 1) et ce bit Cj doit donc être identique dans tous les treillis. La règle de l'unanimité entre tous les mots de code décodés consiste à vérifier 4 l'identité de la valeur de chaque décision intermédiaire d® bit décodé) entre tous les ntreiuis treillis d'indice i pour un même indice j (même bit décodé) : ϋ
Figure imgf000018_0002
En cas d'identité Yes, le procédé décide que la meilleure valeur correspond à celle décodée dj = ia valeur reçue du bit yj est considérée comme correcte.
Figure imgf000018_0003
Dans le cas où la règle de l'unanimité n'est pas respectée No, i.e. au moins une valeur décodée parmi les ntreiuis valeurs décodées du bit d'étiquette Cj est différente des autres, alors le procédé décide que la valeur reçue yj de ce bit est erronée.
Selon un mode de réalisation, le procédé modifie 5 les échantillons erronés de la séquence y correspondant aux bits décodés détectés erronés.
Selon un mode de réalisation, le procédé inverse la valeur des bits reçus correspondant aux bits erronés : yj =— yj . Ce mode sous-entend que les séquences reçues sont codées selon un format de modulation de type MDP2 et que le changement de signe correspond à un changement de parité de 0 vers 1 ou inversement de 1 vers 0.
Selon un autre mode de réalisation, le procédé itère 6 la procédure 2 de décodage et la procédure 3 de détection d'erreur et de prise de décision. A chaque itération, la procédure 2 de décodage prend en entrée comme valeurs sûres et certaines (fixation des valeurs ou pinning) de la séquence y = (y0, yi,— , yn-i)^ les valeurs des bits décodés pour lesquels la règle de l'unanimité est respectée. Ainsi, la procédure 2 de décodage à maximum de vraisemblance prend en entrée une séquence y modifiée pour déterminer une deuxième liste de mots de code binaires décodés candidats. Le procédé itère 6 jusqu'à obtention de l'unanimité pour tous les bits ou jusqu'à un nombre maximal d'itérations.
Dans l'éventualité où la règle de l'unanimité n'est pas respectée pour tous les bits à la fin des itérations, alors le procédé peut déclarer un échec du décodage. Cet échec peut déclencher une demande de réémission de la séquence incorrectement décodée.
L'annexe A donne un exemple d'un algorithme de décodage selon l'invention en pseudo langage de programmation.
Selon cet exemple, le procédé comprend : - une procédure de décodage à maximum de vraisemblance de la séquence y reçue utilisant ntrelllls treillis à ntrelllls décisions intermédiaires par échantillon reçu pour déterminer ntreiuis candidats par échantillon reçu et
- dans une boucle sur le nombre de bits à décoder, une procédure de détection d'erreur sur les candidats et de prise de décision dure sur la valeur du bit à décoder en utilisant pour chaque échantillon reçu une règle de l'unanimité entre les ntreiuis candidats.
Le procédé de codage selon l'invention est illustré avec trois codes binaires courts, le code C(20, 10, 6), le code C(15, 5, 6) et le code C(18, 12, ) de rendement respectivement 1/2, 1/3 et 2/3.
Le code C(20, 10, 6) a pour paramètres n=20, k=10 et d^^ô, la distance de Hamming
h
minimale entre deux mots de code. Le code C(20, 10, 6) a un rendement r = - = 1/2. Le nombre de treillis est donc ntreiuis = n— k = 10.
La détermination du code C(20, 10, 6) peut se faire à partir d'une matrice A de treillis qui décrit un ensemble de treillis {Tj) de dix lignes et vingt colonnes. Une telle matrice A est représentée à la figure 10 avec pour notation qu'un bit zéro est représenté par °et qu'un bit un est représenté par ·. La figure 11 représente le graphe de Tanner de la matrice A de la figure 10. Chacun des dix treillis correspond à une ligne de la matrice A et est une succession de sections auto-complémentaires. Il peut être imposé que les treillis se terminent de chaque côté sur un seul état 0 : s0 = sn_1 = (0,0) pour simplifier le décodage.
Le code C(20, 10, 6) est obtenu par l'intersection multiple de dix code -treillis Cj.
Le treillis Tt d'un code -treillis Ct est construit comme une suite de sections égales soit à la "sectionO", soit à la "sectionl". Par construction, ces sections de base sont auto-complémentaires ce qui veut dire que les branches ont pour étiquette soit le bit Cj soit son complémentaire ëj et que l'on peut obtenir des codes complémentaires avec un treillis composé de ces deux sections. Un treillis Tt peut donc se ramener à la donnée de deux générateurs qui sont la ligne At de la matrice A et sa ligne complément Dans l'exemple du code C(20, 10, 6), les vingt générateurs placés
dans une matrice : M = la matrice illustrée par la figure 12.
Figure imgf000019_0001
La matrice M est réduite en utilisant un algorithme de réduction de colonne (« Row- Reduce ») tel que l'algorithme d'élimination de Gauss-Jordan (Gauss-Jordan élimination) [10]. La réduction permet d'obtenir une matrice réduite Mréduite sous une forme systématique illustrée par la figure 13. La matrice réduite permet de déterminer la dimension du sous-espace décrit par la matrice M, c'est-à-dire le nombre de lignes indépendantes. Pour l'exemple, la matrice réduite ^réduite a ses dix dernières lignes nulles ce qui signifie que la dimension du noyau (kernel) de l'application linéaire représentée par la matrice M, notée Dim(Ker(M)^, égale dix : Dim{Ker(M ) = 10. La dimension de l'espace complémentaire ou « Image » de l'application représentée par la matrice M vaut : Dim m(M)) = nUgnes— Dim(Ker(M)) = 20— 10 = 10. La dimension du code dual est donc k = 10 et la dimension de la matrice génératrice de ce code dual résultant de l'intersection de ces codes élémentaires est composée des premières lignes non- nulles de la matrice réduite Mréduite qui sont au nombre de dix, qui correspond au nombre de treillis ntreiuis = 10. La matrice de contrôle H résultante est dans cet exemple égale à la matrice des treillis A illustrée par la figure 10. La matrice de contrôle H étant sous une forme systématique H = [7cZ10|P], il est aisé d'obtenir la matrice génératrice G : G = [Ptr\Idw]. Cette matrice génératrice G est illustrée par la figure 14.
La distribution des poids d'un code est l'ensemble des nombres At des mots de code de poids i. Elle est représentée par un polynôme à variable formelle X : W(X) =∑?=0ΑιΧι. Le calcul des 210 mots du code C(20, 10, 6) permet de vérifier que sa distribution est :
W(X) = 1 + 90X6 + 255X8 + 332X10 + 255X12 + 90X14 + X20 .
Dans cette distribution l'entier un représente le mot de code nul et le premier monôme de puissance non-nulle (90X6) indique que chaque mot du code possède quatre-vingt-dix premiers voisins à une distance de Hamming de six. Le code C(20, 10, 6) a donc bien une distance minimum dmin = 6. En outre, la distribution est symétrique par rapport au poids du milieu (10) car ce code C(20, 10, 6) est auto-complémentaire.
Le code C(20, 10, 6) est donc déterminé à partir de ntreiuis = 10 treillis construit comme une suite de sections auto-complémentaires sectionO et sectionl d'indice j=0,l,...,19 suivant la valeur des bits des lignes de la matrice A. Compte tenu que le code est auto-complémentaire, le mot de code tout à 1 : c = 111 ...111 est un mot du code, alors ntreillis = (n— k) = 10. L'ensemble des chemins de l'ensemble des ntreiuis = 10 treillis est associé de façon bijective avec l'ensemble des mots de code Ct £ C (20, 10, 6).
k
Le code C(15, 5, 6) a un rendement r = - = 1/3. Puisque ce rendement est différent de ½ le nombre de treillis est donc ntreiuis = n— k— 1 = 9. La construction du code peut se faire à partir de la matrice des treillis A illustrée par la figure 15 qui décrit un ensemble de treillis {Tj) de sections auto-complémentaires. Chaque ligne d'indice i de la matrice des treillis A est associée à un treillis Tj. Chacun des neufs treillis Tt est construit comme une succession de n = 15 sections « sectionO » ou « sectionl » suivant la valeur 0 ou 1 de chaque bit d'indice j de la ligne i. Le graphe de Tanner de la matrice A est représenté à la figure 16. La matrice de contrôle et la matrice génératrice du code C(15, 5, 6) peuvent être déterminées à partir de la matrice des treillis A. Un treillis Tt est défini par deux générateurs qui sont une ligne At de la matrice A des treillis et sa ligne complémentaire A La matrice M illustrée par la figure 16 est construite avec les dix-huit générateurs ainsi définis.
Dans l'exemple du code C (15, 5, 6), les dix-huit générateurs placés dans une matrice :
M = la matrice illustrée par la figure 17.
Figure imgf000021_0001
La matrice M est réduite en utilisant un algorithme de réduction de colonne (« Row- Reduce ») tel que l'algorithme d'élimination de Gauss-Jordan (Gauss-Jordan élimination). La réduction permet d'obtenir une matrice réduite Mr^duite sous une forme systématique illustrée par la figure 18. La matrice réduite permet de déterminer la dimension du sous espace décrit par la matrice M, c'est-à-dire du nombre de lignes indépendantes. Pour l'exemple, la matrice réduite ^réduite a ses nuiï dernières lignes nulles ce qui signifie que la dimension du noyau (kernel) de l'application linéaire représentée par la matrice M, notée Dim(Ker(M)^, égale huit : Dim{Ker(M ) = 8. La dimension de l'espace complémentaire ou « Image » de l'application représentée par la matrice M vaut : Dim(lm(M)^ = fingnes— Dira (tfer( )) = 18 - 8 = 10, c'est aussi la dimension du code dual égale à 10. La matrice de contrôle du code C(15, 5, 6) résultant de l'intersection des codes élémentaires est composée des premières lignes non-nulles de la matrice réduite Mréduite qui sont au nombre de dix. La matrice de contrôle H résultante illustrée par la figure 19 est dans cet exemple égale aux neuf lignes de la matrice des treillis A plus une dixième ligne égale au complément de toutes les lignes de la matrice A illustrée par la figure 15.
Figure imgf000021_0002
La matrice de contrôle H étant sous une forme systématique H = Id10\P], il est aisé d'obtenir la matrice génératrice G : G = [Ptr\Id5]. Cette matrice génératrice G est illustrée par la figure 20.
Le calcul des 25 mots du code C(15, 5, 6) permet de vérifier que sa distribution des poids est : W(X) = 1 + 7X6 + 23X8 + X14 .
Dans cette distribution l'entier un représente le mot de code nul et le premier monôme de puissance non-nulle (7X6) indique que chaque mot du code possède sept premiers voisins à une distance de Hamming de six. Le code C(15, 5, 6) a donc bien une distance minimum dmin = 6. En outre, il n'y a pas de symétrie de répartition des poids car ce code C(15, 5, 6) n'est pas auto- complémentaire.
Le code C(15, 5, 6) est donc déterminé à partir de ntreiuis = 9 treillis construit comme une suite de sections auto complémentaires sectionO et sectionl d'indice j=0,l,...,14 suivant la valeur des bits des lignes de la matrice A. L'ensemble des chemins de l'ensemble des ntreillis = 9 treillis est associé de façon bijective avec l'ensemble des mots de code Cj £ C(15, 5, 6).
h
Le code C(18, 12, ) a un rendement r = - = 2/3, différent de ½, le nombre de treillis est donc ntreii s = n— k— 1 = 5. La construction du code peut se faire à partir de la matrice des treillis A illustrée par la figure 21 qui décrit un ensemble de treillis {Tj) de sections autocomplémentaires. Chaque ligne d'indice i de la matrice des treillis A est associée à un treillis Tj. Chacun des cinq treillis Tt est construit comme une succession de n = 18 sections « sectionO » ou « sectionl » suivant la valeur 0 ou 1 de chaque bit d'indice j de la ligne i. Le graphe de Tanner de la matrice A est représenté à la figure 22. La matrice de contrôle et la matrice génératrice du code C(18, 12, 4)peuvent être déterminées à partir de la matrice des treillis A. Un treillis Tt est défini par deux générateurs qui sont une ligne At de la matrice A des treillis et sa ligne complémentaire At. ha matrice M illustrée par la figure 23 est construite avec les dix générateurs ainsi définis.
ans l'exemple du code C(18, 12, 4), les dix générateurs placés dans une matrice :
M = forment la matrice illustrée par la figure 23.
Figure imgf000022_0001
La matrice M est réduite en utilisant un algorithme de réduction de colonne (« Row- Reduce ») tel que l'algorithme d'élimination de Gauss-Jordan (Gauss-Jordan élimination). La réduction permet d'obtenir une matrice réduite Mr^duite sous une forme systématique illustrée par la figure 24. La matrice réduite permet de déterminer la dimension du sous espace décrit par la matrice M, c'est-à-dire du nombre de lignes indépendantes. Pour l'exemple, la matrice réduite ^réduite a ses quatre dernières lignes nulles ce qui signifie que la dimension du noyau (kernel) de l'application linéaire représentée par la matrice M, notée Dim(Ker(M)^, égale quatre : Dim{Ker(M ) = 4. La dimension de l'espace complémentaire ou « Image » de l'application représentée par la matrice M vaut : Dim m(M)) = nUgnes— Dim(Ker(M)) = 10— 4 = 6, c'est aussi la dimension du code dual égale à 6. La matrice de contrôle du code C(18, 12, 4) résultant de l'intersection des codes élémentaires est composée des premières lignes non-nulles de la matrice réduite Mréduite qui sont au nombre de six. La matrice de contrôle H résultante illustrée par la figure 25 est dans cet exemple égale aux cinq lignes de la matrice des treillis A plus une sixième ligne égale au complément de toutes les lignes de la matrice A illustrée par la figure 21. H = modulo 2
Figure imgf000023_0001
La matrice de contrôle H étant sous une forme systématique H = [7d6 |P], il est aisé d'obtenir la matrice génératrice G : G = [Ptr\Id12]. Cette matrice génératrice G est illustrée par la figure 26.
Le calcul des 212 mots du code C(18, 12, ) permet de vérifier que sa distribution des poids est : WQC) = 1 + 103X4 + 582X6 + 1347Z8 + 1396Z10 + 56LY12 + 102X14 + 4X16 .
Dans cette distribution l'entier un représente le mot de code nul et le premier monôme de puissance non-nulle (103X4) indique que chaque mot du code possède cent trois premiers voisins à une distance de Hamming de quatre. Le code C(18, 12, 4) a donc bien une distance minimum dmin = 4. En outre, il n'y a pas de symétrie de répartition des poids car ce code C(18, 12, 4) n'est pas auto-complémentaire car il n'y a pas de monôme X15.
Le code C(18, 12, 4) est donc déterminé à partir de ntreillis = 5 treillis construit comme une suite de sections auto complémentaires sectionO et sectionl d'indice j=0,l,...,14 suivant la valeur des bits des lignes de la matrice A. L'ensemble des chemins de l'ensemble des ntreiuis = 5 treillis est associé de façon bijective avec l'ensemble des mots de code Ct £ C(18, 12, 4).
La complexité de calcul en termes de nombres d'additions (add) d'un décodeur est quasiment proportionnelle aux nombres de sections à quatre états de leurs ensembles de treillis. A titre d'illustration, la table 1 en Annexe A donne la complexité de décodage selon l'invention des trois codes précédemment illustrés.
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 courts tels que : les codes algébriques classiques comme le code de Golay (24,12,8), le code QR (48,24,12), etc. Ainsi, la table 2 en Annexe A est un tableau comparatif de la complexité de l'algorithme de décodage selon l'invention par rapport à la complexité du décodage connu optimal sur treillis tail-biting de Calderbank-Forney-Vardy [1] et du décodage connu de Chase-Adde [9]. La complexité est évaluée par le nombre d'additions mises en œuvre par l'algorithme. Les valeurs de complexité mettent en avant la moindre complexité de l'invention pour des performances quasi-optimales.
La figure 27 est un graphe qui permet de comparer les fonctions rayons de l'algorithme selon l'invention et de l'algorithme de Hamming en fonction de la longueur n du code pour une modulation MDP2. Le rayon est la fonction : ^2ntreims = J2(n— k = ϊϋ = -Jn pour un code de rendement ½. Ce rayon est celui de la sphère couverte par l'ensemble des projections sur chacun des espaces que constituent les codes-treillis. Un algorithme de décodage efficace nécessite que le rayon soit supérieur à la distance euclidienne minimale (Jdmin) du code pour pouvoir déterminer le mot de code le plus proche à l'intérieur d'une sphère de rayon la distance minimale euclidienne du code dérivée de sa distance de Hamming minimale. La courbe du rayon de l'algorithme proposé dans le cas des codes de rendement 1/2 est bien supérieure à la distance euclidienne minimale déjà pour une longueur n≥ 24.
Les figures 28a et 29b 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 l'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 les données de redondance avec un rendement k/n en multipliant un vecteur de symboles source x appartenant à un alphabet binaire avec une matrice de contrôle de taille (n-k,n) telle qu'une des lignes de la matrice est le complément à deux de la somme des autres lignes de la matrice. 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 X 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 décodeur à maximum de vraisemblance avec décisions intermédiaires pour déterminer une liste de mots de code décodés à partir de la séquence y reçue, un détecteur d'erreur sur les bits des mots décodés et un organe de prise de décision sur la valeur des bits en utilisant une règle de l'unanimité entre les mots de code décodés de la liste. Le décodeur à maximum de vraisemblance, le détecteur d'erreur et l'organe de prise de décision sont pilotés par le microprocesseur de l'unité de traitement 21. Annexe A
Exemple d'un algorithme de décodage selon l'invention en pseudo langage de programmation
¾ *** Soss3S®«8 iï'sîïtr&s; y vec««ur a s aleurs Γ*ί;«»¾ ¥ÎJ> ixsr j-ô.i.,,. , ****> {**** ¾ d¾ scripts «s des; irsillxs T(i) «¾r ί-ϋ, i > , , . , iatrsiXIiss-i , «***> 3;rs5 s;¾ :i« d<¾ SecixSstgixe is "i;:<srM sur <;h.ac¾a des; tre lis; T(i)
Psi«r 1 ~ 0 a {^Treillis;-*} ar isicreis st <ie 1 f&±
l t ù û&ûaxnii') ~ Arg Mini iy~c\i «**c c t â% x Tii) );
Î *** f|B f¾g la ¾iSîcl« sar l<xs trsillis lit) ***·*)
ti«¾¾* sfe ls iiîsistra txon. dss reil is Tîui sla ass i:îit8rs&sài»irs.s ****.) our j ~ ¾ s ar in.cxm.mtt à» % f*£r»
Si { List8CîHidîîis s;fôs1} « L5.sî:¾C¾îsajd¾:s<itj) » ... œ L st8C¾5 idsts{î«:mî lis~i , j) &lœrs C**»-* ÎJïiiïïissii * SSÎ 1¾ *sisi«îxt i
Pess: i~0 s. (a?r«iills;«- ) psr iî!c; s-s8»t ski 5:¾ f»
T2 U , j ) ^lag;¾<x¼;:t i oiûre I.lli s ί d.j). List«Cs:sdid3¾sÇi, j) >;
Sisoîs. *·*** SffiG""ija;jssm¾® su»' 1& pes tiii& j ****}
y2(j)-«,o(* kmmt is posmosi j *}; c* ou uwm j3{;i)»--y<j) *) ;
(**«* s* la ceastrsctiss 4s s treill s T2(i) ^ls^&m 5.s?:«rs«dis r<ss *»**)
«'**·** 2erse s<sri» de S*i idsg¾s; d» VS &rbi sas: -jli&css d«s tralHis T2(X.; ***»}
Pe«r x - 0 & ·;·> χί;.; 1!: ··;.} par i&creœs de 1 alrs
Lis ?K¾idxtosS(i) ~ èrg ¾Î.ÎH i lyS- M «vec c: SÏO;:. dé CÎXÎ<¾ snsr T2< I.) };
Fi&Sou leitoar ;
F:«; d® la »e«ele sur las; treillis; T2(i) ****}
<>«*.* fkiSKiSiîs de se i : iist.e «i« ssff s; ses sts Lis .®S»a4i4?s;s.s:2 ****)
Table 1
r :~ k/n
....... ...J 17.55 iiïli
> 10
1 s
Table 2
.) j i0-B:0:k>g; lx<rs:i>?y j !> ϋ:νΐ?.ϊ iijgïirïtlKîx;
( ;Ay/;M; K; ?} j -i S }:¥> ώΐ j 7B¾ e¾:ÎJ~ : 1:Î:?
<} 7 *S2 ?52 <i>M ■¾ ¾ 2 } j
iT2 »>. \: "} j :Ï i 341 ¾x [ 2 :·¾ 2§β > ÏÏ 1 327¾ i iï< 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. IT.45, no.5, pp.1435-1455, July 1999.
[2] G.D. Forney, "The Viterbi Algorithm", Proceedings of the IEEE, Vol.61, no.3,pp.268- 278,March 1973.
[3] J.L. Massey, "Advances in Threshold Decoding", in Advances In Communications Systems, Vol.3, pp.91-115, Académie Press Inc., (New-York), 1968.
[4] L.R. Bahl and J. Cocke and F. Jelinek and R. Raviv, "Optimal Decoding of Linear Codes for Minimizing Symbol Error Rate", IEEE Transactions on Information Theory, Vol. IT-20, pp.284- 287, Mardi 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] R.G. Gallager, "Low-Density Parity-Check Codes", IEEE Transactions on Information Theory, Vol.8, pp. 21-28, January 1962.
[7] « Minimum-distance bounds by graph analysis » de R.M. Tanner, « IEEE Transactions on information theory », vol. 47, NO.2, février 2001.
[8] T. Kl0ve and S. Yari, "Proper Self-Complementary Codes", ISITA'2010, Taichung (Taiwan), pp.118-122, 17-20 October 2010.
[9] P. Adde, D. Gomez Toro and C. Jégo, "Design of an Efficient Maximum Likelihood Soft Décoder for Systematic Short Block Codes", IEEE Transactions on Signal Processing, Vol.60, no.7, July 2012, pp.3914-3919.
[10] Linear Algebra/Row Réduction and Echelon Forms Source: http://en.wikibwks.org wiki Lij3ear%20Algebra Row%20Reduction%20
s?oldid=2762122, extrait du 18/02/2015

Claims

REVENDICATIONS
1. Procédé (1) de décodage d'une séquence y d'échantillons reçus par un décodeur correspondant, après transmission, à une séquence c codée de symboles Cj,
_/ = 0,1,· l) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires de rendement k/n à k symboles source (x) appartenant à un alphabet binaire, pour déterminer un mot de code, caractérisé en ce qu'il comprend :
- une procédure (2) de décodage à maximum de vraisemblance à partir de la séquence y reçue utilisant ntreiuis treillis à ntreiuis décisions intermédiaires par échantillon reçu pour déterminer ntreiuis candidats par échantillon reçu et
- une procédure (3) de détection d'erreur sur les candidats et de prise de décision dure sur la valeur des bits du mot de code en utilisant pour chaque échantillon reçu une règle de l'unanimité entre les ntrelllls candidats, ntrelllls étant un entier naturel.
2. Procédé (1) de décodage selon la revendication 1 comprenant en outre :
- une modification d'un échantillon de la séquence y reçue pour lequel la règle de l'unanimité entre les ntreiuis candidats n'est pas vérifiée et
au moins une itération :
- d'une procédure (2) de décodage à maximum de vraisemblance à partir de la séquence y modifiée utilisant ntreiuis treillis à ntreiuis décisions intermédiaires par échantillon de la séquence y modifiée pour déterminer ntrelllls nouveaux candidats et
- d'une procédure (3) de détection d'erreur sur les nouveaux candidats et de prise de décision dure sur la valeur des bits du mot de code en utilisant pour chaque échantillon de la séquence y modifiée une règle de l'unanimité entre les ntreiuis nouveaux candidats.
3. Procédé (1) de décodage selon la revendication 2 dans lequel, après un nombre donné d'itérations, le procédé de décodage conduit à un constat d'échec s'il reste encore au moins un échantillon pour lequel la règle de l'unanimité n'est pas respectée.
4. Procédé (1) de décodage selon la revendication 1 comprenant en outre :
- une modification d'un échantillon de la séquence y reçue pour lequel la règle de l'unanimité entre les ntreiuis candidats n'est pas vérifiée, le mot de code correspondant à la séquence y reçue modifiée.
5. Procédé (1) de décodage selon l'une des revendications 1 à 4 dans lequel la procédure (2) de décodage à maximum de vraisemblance avec décisions intermédiaires utilise en entrée un ensemble de ntreiuis treillis construit chacun comme une succession de sections de treillis prises parmi deux sections de treillis auto complémentaires à quatre états, ntrelllls étant un entier naturel.
6. Décodeur (DEC) 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,· · ·,{η— l) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires de rendement k/n à k symboles source (x) appartenant à un alphabet binaire, pour déterminer un mot de code, caractérisé en ce que le décodeur comprend :
- un décodeur à maximum de vraisemblance de la séquence y reçue utilisant ntrelllls treillis à ntreiuis décisions intermédiaires par échantillon reçu pour déterminer ntreiuis candidats par échantillon reçu et
- un détecteur d'erreur sur les candidats et un organe de prise de décision dure sur la valeur des bits du mot de code en utilisant pour chaque échantillon reçu une règle de l'unanimité entre les ntrelllls candidats.
7. Décodeur selon la revendication précédente dans lequel le décodeur à maximum de vraisemblance, le détecteur et l'organe de décision sont de type itératif, le décodeur à maximum de vraisemblance modifiant en outre un échantillon de la séquence y pour lequel la règle de l'unanimité entre les ntrelllls candidats n'est pas vérifiée.
8. Procédé de codage en appliquant à des symboles source (x) appartenant à un alphabet binaire un code C(n, k, dmin) correcteur d'erreurs linéaires dont la matrice de contrôle de taille (n- k,n) est telle qu'une des lignes de la matrice est le complément à deux de la somme des autres lignes de la matrice pour obtenir une séquence c codée de symboles Cj, =0,1,· · l) avec un rendement k/n, le code C(n, k, dmin) étant construit comme l'intersection de ntreiuis codes-treillis auto-complémentaires, chaque treillis étant construit comme une succession de sections de treillis prises parmi deux sections de treillis auto complémentaires à quatre états, ntrelllls étant un entier naturel, dmin étant la distance minimale.
9. Codeur (COD) appliquant un code C n, k, dmin correcteur d'erreurs linéaires, comportant un moyen de calcul adapté pour déterminer une séquence c codée de symboles Cj ,
7 =0, !,· · ·,( ft—l) avec un rendement (/c)/n en multipliant un vecteur de symboles source
(x) appartenant à un alphabet binaire avec une matrice de contrôle de taille (n-k,n) telle qu'une des lignes de la matrice est le complément à deux de la somme des autres lignes de la matrice, le code C n, k, dmin étant construit comme l'intersection de ntreiuis codes-treillis auto-complémentaires, chaque treillis étant construit comme une succession de sections de treillis prises parmi deux sections de treillis auto complémentaires à quatre états, ntrelllls étant un entier naturel, dmin étant la distance minimale.
10. Utilisation d'un code C(n, k, dmin) correcteur d'erreurs linéaires de rendement k/n dont la matrice de contrôle de taille (n-k,n) est telle qu'une des lignes de la matrice est le complément à deux de la somme des autres lignes de la matrice pour coder k symboles source (x) appartenant à un alphabet binaire en une séquence c codée de symboles Cj, le code C(n, k, dmin) étant construit comme l'intersection de ntrelllls codes-treillis autocomplémentaires, chaque treillis étant construit comme une succession de sections de treillis prises parmi deux sections de treillis auto complémentaires à quatre états, ntrelllls étant un entier naturel, dmin étant la distance minimale.
PCT/FR2016/051401 2015-06-11 2016-06-10 Décodage sur une pluralité de treillis à sections auto-complémentaires a 4 états WO2016198801A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1555302 2015-06-11
FR1555302A FR3037457A1 (fr) 2015-06-11 2015-06-11 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

Publications (1)

Publication Number Publication Date
WO2016198801A1 true WO2016198801A1 (fr) 2016-12-15

Family

ID=54015016

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2016/051401 WO2016198801A1 (fr) 2015-06-11 2016-06-10 Décodage sur une pluralité de treillis à sections auto-complémentaires a 4 états

Country Status (2)

Country Link
FR (1) FR3037457A1 (fr)
WO (1) WO2016198801A1 (fr)

Citations (1)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
A.R. CALDERBANK; G.D. JR. FORNEY; A. VARDY: "Minimal Tailbiting Trellises: the Golay Code and More", IEEE TRANSACTIONS ON INFORMATION THEORY, vol. IT.45, no. 5, July 1999 (1999-07-01), pages 1435 - 1455
ANONYMOUS: "Hamming code - Wikipedia, the free encyclopedia", 4 February 2015 (2015-02-04), XP055260803, Retrieved from the Internet <URL:https://en.wikipedia.org/w/index.php?title=Hamming_code&oldid=645568710> [retrieved on 20160323] *
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), GENEVA, SWITZERLAND, May 1993 (1993-05-01), pages 1064 - 1070, XP010137024, DOI: doi:10.1109/ICC.1993.397441
G.D. FORNEY: "The Viterbi Algorithm", PROCEEDINGS OF THE IEEE, vol. 61, no. 3, March 1973 (1973-03-01), pages 268 - 278
GRACIE K ET AL: "Performance of an MLSE-based early stopping technique for turbo codes", 2004 IEEE 60TH VEHICULAR TECHNOLOGY CONFERENCE. VTC2004-FALL (IEEE CAT. NO.04CH37575) IEEE PISCATAWAY, NJ, USA, IEEE, vol. 3, 26 September 2004 (2004-09-26), pages 2287 - 2291, XP010787048, ISBN: 978-0-7803-8521-4, DOI: 10.1109/VETECF.2004.1400449 *
J.L. MASSEY: "Advances In Communications Systems", vol. 3, 1968, ACADEMIC PRESS INC., article "Advances in Threshold Decoding", pages: 91 - 115
JÉGO C ET AL: "Row-column parallel turbo decoding of product codes", ELECTRONICS LETTERS, IEE STEVENAGE, GB, vol. 42, no. 5, 2 March 2006 (2006-03-02), pages 296 - 298, XP006026258, ISSN: 0013-5194, DOI: 10.1049/EL:20064198 *
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, XP000647243, DOI: doi:10.1109/TIT.1974.1055186
LINEAR ALGEBRA/ROW RÉDUCTION AND ECHELON FORMS SOURCE, 18 February 2015 (2015-02-18), Retrieved from the Internet <URL:http://en.wikibooks.org/wiki/Linear%20Algebra/Row%20Reduction%20and%20Echelon%20Form s?oldid=2762122>
P. ADDE; D. GOMEZ TORO; C. JÉGO: "Design of an Efficient Maximum Likelihood Soft Decoder for Systematic Short Block Codes", IEEE TRANSACTIONS ON SIGNAL PROCESSING, vol. 60, no. 7, July 2012 (2012-07-01), pages 3914 - 3919, XP011454875, DOI: doi:10.1109/TSP.2012.2193575
R.G. GALLAGER: "Low-Density Parity-Check Codes", IEEE TRANSACTIONS ON INFORMATION THEORY, vol. 8, January 1962 (1962-01-01), pages 21 - 28, XP000992693, DOI: doi:10.1109/TIT.1962.1057683
R.M. TANNER: "Minimum-distance bounds by graph analysis", IEEE TRANSACTIONS ON INFORMATION THEORY, vol. 47, no. 2, February 2001 (2001-02-01), XP011027883
T. KL VE; S. YARI: "Proper Self-Complementary Codes", ISITA'2010, TAICHUNG (TAIWAN, 17 October 2010 (2010-10-17), pages 118 - 122, XP031811146

Also Published As

Publication number Publication date
FR3037457A1 (fr) 2016-12-16

Similar Documents

Publication Publication Date Title
Justesen Performance of product codes and related structures with iterated decoding
FR2909499A1 (fr) Procede et dispositif de decodage pour codes ldpc, et appareil de communication comprenant un tel dispositif
FR2804260A1 (fr) Procede de transmission numerique de type a codage correcteur d&#39;erreurs
EP1230736B1 (fr) Procede de decodage de donnees codees a l&#39;aide d&#39;un code entropique, dispositif de decodage et systeme de transmission correspondants
FR3006133A1 (fr) Procede de decodage d&#39;un code correcteur, par exemple un turbo-code, par analyse du spectre etendu des mots du code
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
EP2833555B1 (fr) Procede ameliore de decodage d&#39;un code correcteur avec passage de message, en particulier pour le decodage de codes ldpc ou codes turbo
EP1974472A1 (fr) Procedes d&#39;encodage et de decodage rapides et dispositifs associes
EP1527521B1 (fr) Dispositif et procede de decodage robuste de codes arithmetiques
JP2003218707A (ja) 誤り訂正符号を得るための方法、誤り訂正符号を復号化するための方法、情報要素のブロックを符号化するための符号器、および、軟値の第1のブロックを復号化する復号器
WO2016198801A1 (fr) Décodage sur une pluralité de treillis à sections auto-complémentaires a 4 états
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
WO2003088504A1 (fr) Procede de codage et/ou de decodage de codes correcteurs d&#39;erreurs, dispositifs et signal correspondants.
EP3311495B1 (fr) Conception de l&#39;entrelaceur pour des codes turbo en fonction du motif de poinçonnage
WO2006108768A1 (fr) Procédé et dispositif de décodage d&#39;un code à longueur variable prenant en compte une information de probabilité a priori
FR2972878A1 (fr) Procede d&#39;encodage correcteur d&#39;erreur, procede de decodage et dispositifs associes.
FR2888062A1 (fr) Codeur et turbo decodeur de code produit
WO2015107315A1 (fr) Codage et décodage de code linéaire à partir de treillis
EP2722992B1 (fr) Méthode de codage pour canal à évanouissement quasi-périodique
WO2015197971A1 (fr) Procédés et dispositifs de codage et de décodage correcteur d&#39;erreurs, et programme d&#39;ordinateur correspondant
WO2008129195A1 (fr) Codage et decodage de signaux de donnees de rendements variables
EP4128543A1 (fr) Poinçonnage sélectif de codes non binaires
Bocharova et al. Trellis complexity of short linear codes
Gonzalez Towards higher speed decoding of convolutional turbocodes
FR2972877A1 (fr) Procede d&#39;encodage correcteur d&#39;erreur, procede de decodage et dispositifs associes.

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: 16736519

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: 16736519

Country of ref document: EP

Kind code of ref document: A1