WO2015197971A1 - Methods and devices for error corrector coding and decoding, and corresponding computer program - Google Patents

Methods and devices for error corrector coding and decoding, and corresponding computer program Download PDF

Info

Publication number
WO2015197971A1
WO2015197971A1 PCT/FR2015/051680 FR2015051680W WO2015197971A1 WO 2015197971 A1 WO2015197971 A1 WO 2015197971A1 FR 2015051680 W FR2015051680 W FR 2015051680W WO 2015197971 A1 WO2015197971 A1 WO 2015197971A1
Authority
WO
WIPO (PCT)
Prior art keywords
level
data
coding
permutation
stage
Prior art date
Application number
PCT/FR2015/051680
Other languages
French (fr)
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 WO2015197971A1 publication Critical patent/WO2015197971A1/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/1505Golay Codes
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1191Codes on graphs other than LDPC codes
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • 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/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes

Definitions

  • the field of the invention is that of coding and decoding data, implementing an error correction code.
  • the invention proposes a new source data coding technique, delivering coded data packets or a coded data stream, intended to be transmitted over a transmission channel (for example of the wireless, optical or electrical), or stored in a physical medium.
  • the invention also relates to a corresponding decoding technique, in particular for correcting transmission errors inherent in the transmission channel, and in particular erase-type errors.
  • wireless space and wireless terrestrial radio communications
  • DTT digital television systems
  • DAB digital radio digital radio
  • GSM Global System for Mobile communications
  • U-MTS U-MTS telephony
  • WiFi radio network and also in future communications systems, such as future DVB, 4G, LTE standards, "Future Internet", or in communications between vehicles, objects or communicating machines ...;
  • Numerous coding techniques allow the correction of transmission errors (at decoding) by generating redundancy data from source data.
  • an error correction code is conventionally defined by:
  • n a length n, corresponding to the output data of the encoder (code word of length n formed of k source data and (n - k) redundancy data), a number of bits or useful information symbols k, corresponding to the input data of the encoder, also called source data, and
  • the minimum distance of a code d mjn is the minimum distance between two codewords. It allows to determine the maximum number of errors that the code can correct in a code word.
  • a disadvantage of such a technique is that it requires a large number of coding stages to obtain codes of great minimum distances d min with respect to the length n of a code word.
  • the minimum distance d mjn is therefore not optimal for these lengths n and k, ie the minimum distance is not as close as possible to a terminal for which the code allows to detect the maximum number of errors (Hamming terminal or "Sphere-Packing Bound", such as d min / n ⁇ 0.22 for an auto-dual code of k
  • the current Cortex code decoders do not function optimally as soon as the number of coding stages used to construct the Cortex code exceeds a number of three coding stages. This is mainly due to the fact that the intermediate variables (internal state variables) between the coding stages are not transmitted and therefore do not have any likelihood values or prior probabilities with which to initialize them, especially when the implementation at decoding of a propagation probability algorithm (in English "Belief Propagation" or BP).
  • a propagation probability algorithm in English "Belief Propagation" or BP.
  • the invention proposes a new solution that does not have all of these disadvantages of the prior art, in the form of an error correction coding device, capable of implementing a global error correction code associating redundancy data to source data, the global correction code being capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix for passing the source data to the invertible redundancy data.
  • the coding device comprises:
  • a first stage of first-level permutation connected, as input, on the one hand to input variables associated with a first set of source and / or redundancy data, and on the other hand to internal variables associated with input data and output data of a first level second-level coding stage, and
  • a second stage of first-level permutation connected, on the output, on the one hand to output variables associated with a second set of source and / or redundancy data, and on the other hand to internal variables associated with data.
  • input and output data of a second second-level coding stage
  • a first level coding stage connected firstly to the variables associated with the output data of the first level switching stage and secondly to the variables associated with the input data of the second level of first level permutation
  • each coding stage comprising at least two basic coding modules each implementing a basic code that can be represented by a generator matrix comprising, in its systematic form, an identity matrix and an input data passage matrix to the invertible output data.
  • the coding device comprises:
  • a first level switching stage connected on one side to input variables associated with a first set of said source and / or redundancy data, and to internal variables associated with input data and data; outputting a second level coding stage, and on the other side to said first level coding stage,
  • a second first-level permutation stage connected on one side to output variables associated with a second set of said source and / or redundancy data, and to internal variables associated with input data and output data; a second level of second level coding, and on the other side to said first level coding stage,
  • each coding stage comprising at least two basic coding modules each implementing a basic code capable of being represented by a generating matrix comprising, in its systematic form , an identity matrix and an input data pass matrix to the invertible output data.
  • the invention thus proposes a new error-correcting coding device, the particular structure of which makes it possible to construct an efficient overall code with a large minimum distance, even if the number of coding stages is small (for example three coding stages). ).
  • the code words obtained by using a global code thus constructed can be decoded by using the current Cortex code decoders, based on efficient "Belief Propagation" iterative decoding, or a decoder according to the invention.
  • the matrix of passage of the source data to the redundancy data is invertible. No other constraint is imposed on the error correction code, and in particular on the length of this code or the length of the cycles. It can therefore be considered that the error correction code implemented is quasi-random.
  • the proposed coder makes it possible to construct a global self-dual code with a large minimum distance regardless of the length of the code, and in particular for a rather short code (of the order of n ⁇ 1000).
  • the invention thus makes decoding easier and more efficient than the techniques of the prior art, in particular for codes having short lengths and / or short cycles.
  • At least three coding stages are considered, each comprising at least two basic coding modules operating independently, each basic coding module implementing a basic code. Only the first level coding stage is connected to input variables and output variables corresponding to the source data and the redundancy data after permutation. The other coding stages are connected only to internal variables, which are state variables, not transmitted to the decoder. The structure is therefore recursive and closed.
  • the basic codes belong to the group comprising:
  • a base code is a Hamming code (8.4.4), or a code defined on a quaternary alphabet TL ⁇ , or a Golay code (24, 12, 8) ....
  • the basic codes have the property of implementing auto-dual codes. This self-duality property allows for optimal decoding with reduced decoding complexity.
  • the coding device comprises at least two stages of permutation of q-th level, with q an integer greater than or equal to 2, including: a first level of permutation of q-th level connected, as input, to internal variables associated with the input data and the output data of a first (q + 1) -th level coding stage, and, at the output, to internal variables associated with the input data and the output data of a first level q-th level coding stage;
  • each basic coding module of the i-th level coding stage (s) comprises c inputs and c outputs, and each permutation stage of i-th level This level implements a permutation of the c-cyclic type, with i and c being integers greater than or equal to 1. In particular, c is equal to 4.
  • a permutation of c-cyclic type is a permutation according to which the same permutation pattern is applied for each block of length c.
  • the parameters ( ⁇ 0 , A 1 ..., A C - 1 ) must take at least three different values, or if the parameters (at 0 , A 1 ..., ⁇ ⁇ _ 1 ) take only two values different, then each of the two values is at least twice in the set.
  • each i-th level permutation stage implements an affine permutation, with i an integer greater than or equal to 1.
  • the i-th level coding stage (s) each comprise at least two local permutation modules, each local permutation module permutating the internal variables obtained at the output of a basic coding module .
  • the coding device has a symmetrical structure.
  • the two levels of q-th level coding are located on either side of the first level coding stage (q ⁇ 2), and include the same number of inputs and outputs.
  • the two (ql) -th level permutation stages are symmetrical.
  • ⁇ 0 is the permutation inserted between the first second level coding stage and the first level coding stage
  • ⁇ -L the inserted permutation between the second second level coding stage and the first level coding stage
  • the number of internal variables is twice the number of variables associated with the source data.
  • all basic coding modules implement an identical basic code.
  • the coding device according to the invention is simplified by the use of basic coding modules implementing identical basic codes.
  • the device comprises a zero forcing module, setting to zero at least one of the source data and / or at least one of the redundancy data.
  • the set of coding and permutation stages form a Tanner graph whose inputs are the input variables associated with the first set of source and / or redundancy data, and the outputs are the associated output variables. the second set of source and / or redundancy data.
  • the two coding stages of (q + 1) -th level and the two stages of permutation of q-th level are symmetrical to each other with respect to the middle axis of the Tanner graph.
  • the invention relates to an error correction coding method, capable of implementing a global error correction code associating redundancy data with source data, the global correction code being capable of be represented by a generator matrix comprising, in its systematic form, an identity matrix and a matrix for passing the source data to the invertible redundancy data.
  • such a coding method implements:
  • first-level permutation receiving, on the input side, on the one hand a first set of source and / or redundancy data, and on the other hand input data and output data obtained from a first step of second level coding, and
  • a second step of first-level permutation outputting on the one hand a second set of source and / or redundancy data, and on the other hand input data and output data obtained from a second level of second level coding,
  • a first level encoding step receiving the output data of the first first level permutation step and outputting input data to the second first level permutation step
  • each coding step implementing at least two basic coding modules each implementing a basic code that can be represented by a generating matrix comprising, in its systematic form, an identity matrix and a data transmission matrix; input to the invertible output data.
  • Such a method may in particular be implemented by an error correction coding device as described above.
  • This method may of course include the various characteristics relating to the coding device according to the invention, which can be combined or taken in isolation. Thus, the features and advantages of this method are the same as those of the coding device, and are not detailed further.
  • each step advantageously corresponds to a stage of the structure of the corresponding coding device, and can be implemented in the form of an integrated circuit, or in an electronic component of the microprocessor type.
  • This structure allows an easier understanding of the invention.
  • the method of the invention can be implemented in any other suitable form, and especially in essentially software form, one or more processors performing the corresponding processing.
  • the invention also relates to an error correction decoding device, able to retrieve source data from a received code word, the source data having been coded by a global error correction code associating redundancy data.
  • the global correction code being capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix for passing the source data to the invertible redundancy data.
  • such a decoding device comprises:
  • first-level permutation two stages of first-level permutation, of which: a first stage of first-level permutation connected, as input, on the one hand to input variables associated with a first set of source and / or redundancy data, and on the other hand to internal variables associated with input data and output data of a second level decoding first stage, and
  • a second stage of first-level permutation connected, on the output, on the one hand to output variables associated with a second set of source and / or redundancy data, and on the other hand to internal variables associated with data.
  • input and output data of a second second level decoding stage
  • a first-level decoding stage connected firstly to the variables associated with the output data of the first first-level permutation stage and secondly to the variables associated with the input data of the second-level first-level permutation stage,
  • each decoding stage comprising at least two basic decoding modules each implementing a basic code that may be represented by a generating matrix comprising, in its systematic form, an identity matrix and an input data passage matrix to the invertible output data.
  • Such a decoding device has a similar structure to that of the coding device described above. It therefore has the same characteristics as the coding device according to the invention, which can be combined or taken in isolation.
  • such a device can be used to decode code words obtained from the coding device described above.
  • the invention relates to an error correction decoding method capable of retrieving source data from a received code word, the source data having been coded by a global error correction code. associating redundancy data with the source data, the global correction code being capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix for passing the source data to the invertible redundancy data.
  • such a decoding method implements:
  • first-level permutation receiving, as input, on the one hand a first set of source and / or redundancy data, and on the other hand part of the input data and output data obtained from a first second level decoding step, and
  • a second step of first-level permutation outputting on the one hand a second set of source and / or redundancy data, and on the other hand input data and output data obtained from a second level of second level decoding,
  • a first level decoding step receiving the output data of the first first level permutation step and outputting input data to the second first level permutation step
  • each decoding step implementing at least two basic decoding modules, each implementing a basic code that can be represented by a generating matrix comprising, in its systematic form, an identity matrix and a data transmission matrix; input to the invertible output data.
  • Such a method may in particular be implemented by an error correction decoding device as described above.
  • This method may of course include the various features relating to the error correction decoding device according to the invention, which can be combined or taken separately.
  • the features and advantages of this method are the same as those of the error correction decoding device, and are not detailed further.
  • each step advantageously corresponds to a stage of the structure of the corresponding decoding device; and can be implemented as an integrated circuit, or in an electronic component of the microprocessor type.
  • This structure allows an easier understanding of the invention.
  • the method of the invention can be implemented in any other suitable form, and especially in essentially software form, one or more processors performing the corresponding processing.
  • the invention also relates to one or more computer programs comprising instructions for implementing an encoding method and / or a decoding method when the program or programs are executed by a processor.
  • Such programs can be stored on a storage medium.
  • the invention relates to a device capable of implementing the corresponding coding and decoding operations.
  • Figure 1 shows the main steps implemented by a coding method according to one embodiment of the invention
  • FIG. 2 illustrates the structure of an encoder and / or decoder with three stages of (de) coding according to one embodiment of the invention
  • FIG. 3 presents the main steps implemented by a decoding method according to one embodiment of the invention
  • FIG. 4 illustrates the structure of an encoder and / or decoder with seven stages of (de) coding according to one embodiment of the invention
  • FIGS. 5A and 5B show an example of construction and use of the Golay code (24, 12, 8) according to one embodiment of the invention
  • FIGS. 6A and 6B show an example of construction and use of a type II auto-dual code (72,36,12) according to one embodiment of the invention.
  • the general principle of the invention is based on a particular structure of an error correction code, based on an alternation of coding stages and permutation stages.
  • the proposed coding structure makes it possible to construct auto-dual error correcting codes with only three coding stages and a minimum number of "hidden” (ie non-transmitted) internal variables, also called intermediate or variable variables. state, and having great minimum distances.
  • it provides a practical solution to best protect small packets of information (n ⁇ 1000 bits) from the noise and interference inherent in any transmission channel. It also simplifies decoding, because of the small number of coding stages used.
  • turbo codes and LDPC codes in English "Low-Density Parity Check" have very good performances in terms of correction of errors. errors for codes of great length n, with n of the order of a few thousand bits at least (n> 1000). In contrast, turbo codes and LDPC codes have lower performance for shorter codes.
  • the proposed solution makes it possible to obtain efficient codes that are quite short (/ i ⁇ 1000), having a large minimum distance, where for example d min is a fraction of n, and therefore makes it possible to compete with these turbo-codes and these codes.
  • LDPC Low Density Polyethylene
  • Such a method is particularly suitable for implementing a global self-dual error correction code, that is to say capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix from the source data (X) to the invertible redundancy data ().
  • the coding method implements:
  • a first level coding step 11 for example receiving input data X after permutations, and for example outputting redundancy data R after permutations.
  • a first-level coding step implements at least two basic coding modules, connected on the one hand to all the variables associated with the source data and the redundancy data, and on the other hand to internal variables;
  • a first 121 and a second 122 second level coding steps denoted respectively C N2j1 and C N2,2 , each implementing at least two basic coding modules connected only to the internal variables of the first level coding step 11 C N1 after permutations;
  • the first permutation step 131 ⁇ 0 is implemented between the first level coding step 11 C m and the first second level coding step 121 C N2 , i, and therefore receives, as input, on the one hand the source data X and on the other hand the input data and output data obtained from the first second level coding step 121 C N2j i.
  • the second permutation step 132 ⁇ 1 is implemented between the first-level coding step 11 C m and the second second-level coding step 122 C N2 2 and therefore outputs, on the one hand, the data R redundancy and on the other hand input data and output data to the second second level coding step 122 C N2 2 .
  • each basic coding module implements an auto-dual basic code, which can be represented by a generating matrix comprising, in its systematic form, an identity matrix and a data transmission matrix. input to the invertible output data.
  • duality also called iso-duality, as expressed in particular in the document "Handbook of coding theory", V.S. Pless and W.C.
  • FIG. 2 more specifically illustrates the structure of a corresponding coding device, in the form of a Tanner graph comprising three coding stages, said "Cortex-Compact”.
  • Such a device receives as input source data X, organized for example in blocks of m bits.
  • the first source data block comprises, for example, the information bits x 0 to x m -i, the second block the information bits x m to a3 ⁇ 4m-i > ⁇ ⁇ the (k + 1) th block the information bits x k - m to ⁇ 3 ⁇ 4_ ⁇ , with k a multiple of m.
  • Such a device outputs redundancy data, also organized in blocks of m bits.
  • the first redundancy data block comprises, for example, the redundancy bits r 0 to r m _, the second block the redundancy bits r m to r 2m _i, the (k + 1) th block the redundancy bits r k _ m to r k _ lt with k a multiple of m.
  • the source data are associated with input variables and placed to the left of the Tanner graph representative of the coding device, and the redundancy data are associated with output variables and are placed to the right of the Tanner graph.
  • the number of information bits k is not necessarily equal to the number of redundancy bits (n-k).
  • Such a coding device comprises at least:
  • a first level coding stage 21 comprising at least two basic coding modules Cb, connected on the one hand to all the variables associated with the source data x t and to the redundancy data, for / ' ranging from 0 to k-1 and on the other hand internal variables dj and fj, for example for j ranging from 0 to 2k-1, via a first 231 or a second 232 first level permutation stage;
  • first 221 and a second 222 second level coding stages each connected to the first level coding stage 21 respectively via the first 231 or second 232 first level permutation stage.
  • Each second level coding stage comprises at least two basic coding modules Cb, connected only to the internal variables of the first level coding stage 21, via a first 231 or a second 232 stage. first level permutation.
  • the only variables that can be accessed are the input and output variables of the Tanner graph, which are associated with source and / or redundancy data. Other internal variables are not transmitted to the decoder.
  • each basic coding module implements the same basic code noted Cb.
  • the basic coding modules can implement different basic codes, within the same coding device. Indeed, the different coding modules are independent.
  • the number of inputs (respectively the number of outputs) of each basic coding module is identical.
  • each basic coding module implements a Hamming code (8, 4, 4).
  • This basic Hamming code (8.4.4) is auto-dual and has all its code words. of multiple weights of 4. It is therefore said by definition auto-dual type-II.
  • each basic coding module implements a simple repetition code, a code word of which is obtained from a repetition of a source data item.
  • This base code is auto-dual of type-l.
  • the first first level permutation stage 231, implementing a permutation ⁇ 0 receives, on the one hand, bits of information in packets of four bits, noted for example x 0 _ 3 for the packet of information bits x Q , x, x 2 , x ⁇ ), on the other hand internal variables input and output of coding modules of the second level coding second stage 221, also in packets of four bits.
  • each basic coding module Cb of the first second-level coding stage 221 is connected to four internal variables, denoted e.g. d 0 _ 3 for the packet (d 0, d 1, d 2, d 3). These four internal variables are transformed linearly, modulo 2, into four image variables, noted for example f 0 _ 3 for the packet ( ⁇ ⁇ ⁇ ⁇ 2 ⁇ 3) ⁇ according to the basic code of Hamming (8, 4, 4) , as :
  • each basic coding module of the different coding stages can be switched locally to obtain "local" codes with a good minimum distance d min .
  • d min a good minimum distance
  • there are 14 24 possible permutations for a vector of four bits.
  • the first first-level permutation stage 231 is connected to the input variables corresponding to k to k information bits ( ⁇ 0 _ ⁇ _ ⁇ ) and 2k internal variables (do- (f ei) o- (f latter )) - These variables 3k, after permutation, are connected to the first level of coding stage 21.
  • the first level coding stage 21 implements 3k / 4 basic Hamming coding modules (8,4,4), delivering k redundancy bits (r 0 _ (fe _ 1 - ) ) and 2k variables. internal
  • asymmetrical structure is however not mandatory.
  • FIG. 3 thus illustrates an example of a coding device implementing:
  • a first level coding stage 31 comprising basic coding modules B0, B1, etc .;
  • the basic coding modules of the first level coding stage 21 each implement a Hamming code (8, 4, 4) of all-multiples weight of 4, the equivalent code of the first level coding stage 21 is of weight multiple of 4.
  • the set of internal variables d Q 2 k and o 23 ⁇ 4 also forming a weight code multiple of 4, each code word formed by the bits of information ⁇ 0 _ ⁇ _ ⁇ and the redundancy bits r 0 _ ( fe _ 1 - ) is of multiple weight of 4 and therefore the overall code obtained, called Cortex-Compact, is also auto-dual type-I l.
  • Tanner graph comprises input variables, corresponding for example to the information bits, and output variables, corresponding for example to the redundancy bits, the redundancy bits being linked to the information bits by through constraints and permutations.
  • an encoder takes input source data X, in the form of packets or a continuous stream, and outputs at least one code word, comprising the source data X and redundancy data.
  • code words can be conveyed in a transmission channel or stored on a medium, and then decoded by a decoder according to the invention.
  • such a decoder can also use a Tanner graph as illustrated in FIG. 2, to correct erase-type errors in particular.
  • the decoder receives as input at least one codeword, comprising the source data X and redundancy data R possibly corrupted with error, and delivers an estimate of the source data X.
  • Such a decoding method implements, symmetrically to the coding: a first-level decoding step 41, denoted DC N1 , receiving as input a code word formed of source data X and / or redundancy, after permutations, and outputting an estimate of the source data X, after permutations.
  • a first-level decoding step implements at least two basic decoding modules, connected on the one hand to all the variables associated with the source data and the redundancy data of the codeword, and on the other hand to internal variables;
  • a first 421 and a second 422 second level decoding steps respectively denoted DC N2 1 and DC N2 2 , each implementing at least two basic decoding modules connected only to the internal variables of the first decoding step 41 DC level N1 , after permutations;
  • the first permutation step 431 ⁇ 0 is implemented between the first level decoding step 41 DC N i and the second second level decoding step 421 DC N2 , i, and thus receives, as input, a part of the code word formed by the source data X and / or redundancy R and, secondly, the input data and output data obtained from the first second level decoding step 421 DC N2j i.
  • the second permutation step 432 ⁇ 1 is implemented between the first level decoding step 41 DC N i and the second second level decoding step 422 DC N2 2 and therefore outputs, on the one hand, a estimating the source data and secondly input data and output data at the second second level decoding step 422 DC N2 2 .
  • each decoding module implements an auto-dual basic code, which can be represented by a generating matrix comprising, in its systematic form, an identity matrix and an input data passage matrix. to the invertible output data.
  • this decoder is similar to that of the encoder described above. It is therefore not explained in more detail.
  • LLR log ( ⁇ )
  • the Tanner graph representative of the coding device illustrated in FIG. 5A comprises: a first level coding stage 51, comprising nine basic coding modules denoted B0 to B8;
  • a first level second coding stage 521 comprising three basic coding modules denoted AO to A2;
  • a second second level coding stage 522 comprising three basic coding modules denoted C0 to C2;
  • Each basic coding module implements a Hamming code (8.4.4), followed by a local permutation taking, for example, a four-bit packet at the index positions ⁇ 0,1,2,3 ), and outputting these same bits at index positions ⁇ 0,2,1,3) respectively. It should be noted that another local permutation could be implemented, such as the local permutation taking a four-bit packet at the index positions ⁇ 0,1,2,3), and outputting these same bits to the positions of index ⁇ 0,3,1,2) respectively.
  • the twelve bits of information (source), denoted x 0 to x llt, are associated with input variables of the Tanner graph, and the twelve redundancy bits, denoted r 0 to r 1, are associated with variables output of the Tanner graph.
  • the information bits are in four-bit packets on the first level first permutation stage 531.
  • the first level first permutation stage 531 is therefore connected to input variables associated with a first set of source data and redundancy, here the information bits x 0 to x l .
  • the first level first permutation stage 531 is also connected, at the input, to the inputs and outputs of the first second level coding stage 521.
  • each of the three basic coding modules AO, A1, A2 of the first stage second level coding 521 receives as input a packet of four bits, respectively denoted d 0 to d 3 , d 4 to d 7 , and d 8 to d 11t and outputs a packet of four bits, respectively denoted f 0 to f 3 , f 4 to f 7 , and f 8 to / 11 according to the Hamming base code (8, 4, 4).
  • Each packet of four bits f 0 to f 3, f 4 f 7, f 8 and f llt undergoes local permutation ⁇ 0,1,2,3) ⁇ ⁇ 0,2,1,3) as shown in Figure 5A.
  • the first level first permutation stage 531 is thus connected, as input, to the 12 information bits x 0 to x 1 and to 24 internal bits d 0 to d 1 and f 0 to f 1 associated with internal variables. According to this example, there is therefore a basic coding module for each four-bit packet associated with input variables.
  • affine permutations associating a bit / input symbol with the position i, with the same bit / symbol at the position a * i + b, with a prime number with the length (or order) 1 of the permutation implemented by the first or second stage of first level permutation, and b an integer such that b ⁇ a.
  • the first level first permutation stage 531 outputs the 12 information bits x 0 to x 1 and the 24 internal bits d 0 to d 1 and f 0 to f 1 are exchanged at the first coding stage. level.
  • each basic coding module of the first level coding stage 531 receives two information bits, and two input or output bits of a basic coding module of the first coding second stage. level 521, through the first level first permutation stage 531.
  • the first basic coding module B0 receives the input bits d 0 and d lt and the output bits f 9 and f 11t
  • the second basic coding module B1 receives the output bits f 0 and f 2 , and the information bits x 2 and x 3
  • the third basic coding module B2 receives the input bits d 2 and d 3 and the information bits x 4 and x 5
  • the fourth coding module of base B3 receives the output bits f x and f 3 , and the input bits d 4 and d 5
  • the fifth basic coding module B4 receives the output bits f 4 and f 6 , and the information bits x 6 and x 7
  • the sixth basic coding module B5 receives the input bits d 6 and d 7 , and the information bits x 8 and x 9
  • the seventh basic coding module B 6 receives the bits of output f 5 and f 7 , and the input bits d 8 and d 9
  • Each basic coding module of the first level coding stage 51 receives as input a four bit packet and outputs a four bit packet in accordance with the Hamming base code (8.4.4).
  • the bits at the output of the coding module undergo a local permutation, in a local permutation module not illustrated, according to the permutation ⁇ 0,1,2,3 ⁇ ⁇ ⁇ 0,2,1,3 ⁇ .
  • the outputs of the first level coding stage 51 are connected to the first level first permutation stage 532.
  • This second level of first level permutation 532 implements a permutation ⁇ 1 that is the inverse of the permutation implemented by the first level.
  • This second top-level permutation stage 532 is connected, at the output, on the one hand to output variables associated with a second set of source data and redundancy, here the redundancy bits r 0 to r llt and other at the inputs and outputs of the second second level coding stage 522.
  • each of the three basic coding modules CO, C1, C2 of the second second level coding stage 522 receives as input a four bit packet, denoted respectively d 12 to d 15 , d 16 to d 19 , and d 20 to d 23 , and outputs a packet of four bits, denoted respectively f 12 to f 15 , f 16 to f 19 , and f 20 to f 23 , according to the basic code of Hamming (8,4,4).
  • Each four-bit packet f 12 to f 15, f 16 to f 19 and f 20 to f 23 undergoes local permutation ⁇ 0,1,2,3) ⁇ ⁇ 0,2,1,3).
  • the first level first permutation stage 532 is thus connected, at the output, to the 12 redundancy bits r 0 to r 1 and to 24 internal bits d 12 to d 23 and f 12 to f 23 associated with internal variables.
  • the internal variables associated with the bits d 10 , d 11 d 22 and d 23 are linked by constraints to the information bits x 0 and x 1 and the redundancy bits r 0 and r lt and therefore have information on the channel, which promotes decoding.
  • a global code can be represented by such a structure if the pre-calculation of the generator matrix determinant obtained from the system of equations combining all the Boolean equations of the structure is non-zero.
  • the basic code that one wishes to use in the basic coding modules is defined, which makes it possible to define the number of internal variables. Note that the higher the number of internal variables, the more powerful the overall code obtained. By adding to these internal variables the number of input variables associated with source data, the number of entries of the first-level coding stage is obtained. It is thus possible to define the number of basic coding modules to be used in the first level coding stage.
  • the generator matrix of the Golay code obtained from the graph of FIG. 5A composed of an identity matrix and of the matrix for moving from the source data to the redundancy data, is illustrated in FIG. 5B, where the white circles correspond to 0. and the black circles correspond to 1.
  • the Tanner graph representative of the coding device illustrated in FIG. 6A comprises: a first level coding stage 61, comprising 27 basic coding modules denoted BO to B26;
  • a first second level coding stage 621 comprising 9 basic coding modules denoted A0 to A8;
  • a second second-level coding stage 622 comprising 9 basic coding modules denoted CO to C8;
  • each basic coding module implements a Hamming code (8.4.4), followed by:
  • each basic coding module implements a Hamming code (8.4.4), followed by a local permutation taking as input a four-bit packet at the index positions ⁇ 0 , 1,2,3), and outputting these same bits at index positions ⁇ 3,0,2,1) respectively.
  • the 36 information bits (source), denoted x 0 to x 35 are associated with input variables of the Tanner graph, and the 36 redundancy bits, denoted r 0 to r 35 are associated with output variables of the Tanner graph.
  • the information bits are in four-bit packets on the first-level first-pass 631 stage.
  • the first-level first-pass 631 stage is also connected, as input, to the inputs and outputs of the first-second coding stage.
  • the first level first permutation stage 631 is thus connected, as input, to the 36 information bits and to the internal 72 bits.
  • the first first-level permutation stage 631 implements a 4-cyclic permutation, such that, by noting / ' the position of a bit at the input and ⁇ 0 ( ⁇ ) the position of this same bit.
  • the bits obtained after permutations are delivered to the first level coding stage
  • each basic coding module of the first-level coding stage 61 receives a four-bit packet as input and outputs a four-bit packet in accordance with the basic Hamming code (8.4 , 4), after local permutation ⁇ 0,1,2,3) ⁇ ⁇ 0,1,3,2).
  • the outputs of the first level coding stage 61 are connected to the second first level permutation stage 632.
  • This second first level permutation stage 632 implements a permutation ⁇ 1 that is the inverse of the permutation implemented by the first level 632.
  • This second top-level permutation stage 532 is connected, at the output, on the one hand the redundancy bits r 0 to r 35, and secondly to the inputs and outputs of the second level second coding stage 622.

Landscapes

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

Abstract

The invention relates to a device for coding by belief propagation on a multi-stage Tanner graph. According to the invention, such a coding device comprises: - two first-level permutation stages, of which a first stage (231) connected to input variables and to internal variables associated with a first second-level coding stage (221), and a second stage (232) connected to output variables and to internal variables associated with a second second-level coding stage (222), and - a first-level coding stage (21) connected on the one hand to the first first-level permutation stage and on the other hand to the second first-level permutation stage, each coding stage comprising at least two base coding modules each implementing a base code.

Description

Procédés et dispositifs de codage et de décodage correcteur d'erreurs, et programme d'ordinateur correspondant.  Methods and devices for error correction coding and decoding, and corresponding computer program.
1. Domaine de l'invention  1. Field of the invention
Le domaine de l'invention est celui du codage et du décodage de données, mettant en œuvre un code correcteur d'erreurs.  The field of the invention is that of coding and decoding data, implementing an error correction code.
Plus précisément, l'invention propose une nouvelle technique de codage de données source, délivrant des paquets de données codées ou un flux de données codées, destiné(s) à être transmis sur un canal de transmission (par exemple de type hertzien, optique ou électrique), ou stocké(s) dans un support matériel. L'invention concerne également une technique de décodage correspondante, permettant notamment de corriger les erreurs de transmission inhérentes au canal de transmission, et en particulier les erreurs de type effacement.  More specifically, the invention proposes a new source data coding technique, delivering coded data packets or a coded data stream, intended to be transmitted over a transmission channel (for example of the wireless, optical or electrical), or stored in a physical medium. The invention also relates to a corresponding decoding technique, in particular for correcting transmission errors inherent in the transmission channel, and in particular erase-type errors.
L'invention trouve notamment des applications dans les domaines suivants :  The invention finds particular applications in the following fields:
la transmission d'information par télécommunications filaires électriques, comme dans les normes ADSL, ou optiques, sur fibres optiques ou en espace libre ;  the transmission of information by wired electrical telecommunications, as in the ADSL or optical standards, on optical fibers or in free space;
la transmission d'information dans les communications radios spatiales et terrestres sans fil (« wireless » en anglais), comme dans les systèmes de télévision numérique TNT, de radio numérique DAB, de téléphonie GSM ou U MTS, de réseau radio WiFi, et aussi dans les futurs systèmes de communications, comme les futures normes DVB, 4G, LTE, « Internet du futur », ou dans les communications entre véhicules, objets ou machines communicants ... ;  the transmission of information in space and wireless terrestrial radio communications ("wireless"), as in the digital television systems DTT, DAB digital radio, GSM or U-MTS telephony, WiFi radio network, and also in future communications systems, such as future DVB, 4G, LTE standards, "Future Internet", or in communications between vehicles, objects or communicating machines ...;
la compression et la décompression de source d'informations ;  information source compression and decompression;
la génération et la détection de séquences dites d'embrouillage (« scrambling » en anglais) dans les systèmes CDMA ;  the generation and detection of so-called scrambling sequences in CDMA systems;
le stockage d'informations dans des mémoires de masse magnétiques, optiques, mécaniques ou électriques pour constituer des disques durs, ou des mémoires vives d'ordinateurs, ou des clés mémoire à interface de type USB... ;  storing information in magnetic, optical, mechanical or electrical mass memories for constituting hard disks, or RAMs of computers, or memory sticks with a USB type interface ...;
la correction d'informations lors des calculs dans un circuit intégré d'un microprocesseur ou dans un ordinateur ;  correcting information during calculations in an integrated circuit of a microprocessor or in a computer;
etc.  etc.
2. Art antérieur  2. Prior Art
De nombreuses techniques de codage permettent la correction d'erreurs de transmission (au décodage) en générant des données de redondance à partir de données source.  Numerous coding techniques allow the correction of transmission errors (at decoding) by generating redundancy data from source data.
Ainsi, un code correcteur d'erreurs est classiquement défini par :  Thus, an error correction code is conventionally defined by:
une longueur n, correspondant aux données en sortie du codeur (mot de code de longueur n formé de k données source et de (n - k) données de redondance), un nombre de bits ou de symboles d'information utiles k, correspondant aux données en entrée du codeur, encore appelées données source, et a length n, corresponding to the output data of the encoder (code word of length n formed of k source data and (n - k) redundancy data), a number of bits or useful information symbols k, corresponding to the input data of the encoder, also called source data, and
une distance minimale dmin. a minimum distance d min .
La distance minimale d'un code dmjn correspond au minimum de distance entre deux mots de code. Elle permet de déterminer le nombre maximum d'erreurs que le code peut corriger dans un mot de code. Le rendement du code est quant à lui défini par R = k/n The minimum distance of a code d mjn is the minimum distance between two codewords. It allows to determine the maximum number of errors that the code can correct in a code word. The performance of the code is defined by R = k / n
Par exemple, un code de Hamming (8, 4, 4) est un code de longueur n = 8, prenant en entrée k = 4 symboles d'information utiles, de distance minimale dmjn = 4, et de rendement 1/2. For example, a Hamming code (8, 4, 4) is a code of length n = 8, taking as input k = 4 useful information symbols, of minimum distance d mjn = 4, and of output 1/2.
Dans le brevet européen EP 1 101 288, J.C. Carlach et C. Vervoux ont présenté une technique de construction de codes quasi-optimaux, désignés par l'expression « codes Cortex ». De tels codes sont construits en utilisant plusieurs étages de codage, mettant chacun en œuvre plusieurs modules de codage de base simples, et des étages de brassage entre deux étages de codage. Une telle technique permet de construire des codes auto-duaux de type-l et de tye-ll, selon la parité du nombre d'étages.  In European Patent EP 1 101 288, J.C. Carlach and C. Vervoux have presented a technique for constructing quasi-optimal codes, designated by the term "Cortex codes". Such codes are constructed using a plurality of coding stages, each implementing a plurality of simple basic coding modules, and patching stages between two coding stages. Such a technique makes it possible to construct auto-dual type-1 and tye-11 codes, according to the parity of the number of stages.
Un inconvénient d'une telle technique est qu'elle nécessite un grand nombre d'étages de codage pour obtenir des codes de grandes distances minimales dmin par rapport à la longueur n d'un mot de code. A disadvantage of such a technique is that it requires a large number of coding stages to obtain codes of great minimum distances d min with respect to the length n of a code word.
De manière générale, la distance minimale dmjn n'est donc pas optimale pour ces longueurs n et k, c'est-à-dire que la distance minimale n'est pas la plus proche possible d'une borne pour laquelle le code permet de détecter le nombre maximum d'erreurs (borne de Hamming ou « Sphere-Packing Bound », telle que dmin/n≤ 0,22 pour un code auto-dual de k In general, the minimum distance d mjn is therefore not optimal for these lengths n and k, ie the minimum distance is not as close as possible to a terminal for which the code allows to detect the maximum number of errors (Hamming terminal or "Sphere-Packing Bound", such as d min / n≤ 0.22 for an auto-dual code of k
rendement - = 1/2) ou de la borne de Gilbert-Varshamov (telle que dmin/n « 0,11 pour un k yield - = 1/2) or the Gilbert-Varshamov bound (such as d min / n "0.11 for a k
code auto-dual de rendement - = 1/2). self-dual code of yield - = 1/2).
Or, plus la distance minimale dmjn est grande, meilleur est le code correcteur d'erreurs, puisqu'il permet de détecter (dmin— 1) symboles erronés et d'en corriger [(dmin— 1)/2J (où l'opérateur [. J désigne la partie entière). However, the greater the minimum distance d mjn , the better the error correction code, since it makes it possible to detect (d min - 1) erroneous symbols and to correct [(d min - 1) / 2J (where the operator [.J denotes the integer part).
Or les décodeurs de codes Cortex actuels ne fonctionnent pas de façon optimale dès que le nombre d'étages de codage utilisés pour construire le code Cortex dépasse un nombre de trois étages de codage. Ceci est principalement dû au fait que les variables intermédiaires (variables d'état internes) entre les étages de codage ne sont pas transmises et ne possèdent donc pas de valeurs de vraisemblance ou de probabilités a priori avec lesquelles on puisse les initialiser, notamment lors de la mise en œuvre au décodage d'un algorithme de type propagation des probabilités (en anglais « Belief Propagation » ou BP).  However, the current Cortex code decoders do not function optimally as soon as the number of coding stages used to construct the Cortex code exceeds a number of three coding stages. This is mainly due to the fact that the intermediate variables (internal state variables) between the coding stages are not transmitted and therefore do not have any likelihood values or prior probabilities with which to initialize them, especially when the implementation at decoding of a propagation probability algorithm (in English "Belief Propagation" or BP).
Cette difficulté à décoder des codes Cortex construits en utilisant plus de trois étages de codage rend problématique l'utilisation de codes Cortex plus longs, devant comporter plus d'étages de codage pour obtenir des distances minimales beaucoup plus grandes. Or un nombre supérieur d'étages de codage permet d'obtenir des codes offrant des capacités pratiques importantes de correction d'erreurs. This difficulty in decoding Cortex codes built using more than three stages of coding makes the use of longer Cortex codes problematic, having to have more coding stages to achieve much greater minimum distances. However, a higher number of coding stages makes it possible to obtain codes offering significant practical error correction capabilities.
Il existe donc un besoin pour une nouvelle technique de codage correcteur d'erreurs, permettant de générer des mots de code présentant de grandes distances minimales, et pouvant être décodés simplement.  There is therefore a need for a new error-correcting coding technique, making it possible to generate codewords having large minimum distances, and which can be decoded simply.
3. Exposé de l'invention  3. Presentation of the invention
L'invention propose une solution nouvelle qui ne présente pas l'ensemble de ces inconvénients de l'art antérieur, sous la forme d'un dispositif de codage correcteur d'erreurs, apte à mettre en œuvre un code correcteur d'erreurs global associant des données de redondance à des données source, le code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage des données source aux données de redondance inversible.  The invention proposes a new solution that does not have all of these disadvantages of the prior art, in the form of an error correction coding device, capable of implementing a global error correction code associating redundancy data to source data, the global correction code being capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix for passing the source data to the invertible redundancy data.
Selon l'invention, le dispositif de codage comprend :  According to the invention, the coding device comprises:
deux étages de permutation de premier niveau, dont :  two stages of first-level permutation, of which:
o un premier étage de permutation de premier niveau connecté, en entrée, d'une part à des variables d'entrée associées à un premier ensemble des données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un premier étage de codage de deuxième niveau, et  a first stage of first-level permutation connected, as input, on the one hand to input variables associated with a first set of source and / or redundancy data, and on the other hand to internal variables associated with input data and output data of a first level second-level coding stage, and
o un deuxième étage de permutation de premier niveau connecté, en sortie, d'une part à des variables de sortie associées à un deuxième ensemble des données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un deuxième étage de codage de deuxième niveau,  a second stage of first-level permutation connected, on the output, on the one hand to output variables associated with a second set of source and / or redundancy data, and on the other hand to internal variables associated with data. input and output data of a second second-level coding stage,
le premier ensemble et le deuxième ensemble formant un mot de code,  the first set and the second set forming a code word,
un étage de codage de premier niveau connecté d'une part aux variables associées aux données de sortie du premier étage de permutation de premier niveau et d'autre part aux variables associées aux données d'entrée du deuxième étage de permutation de premier niveau,  a first level coding stage connected firstly to the variables associated with the output data of the first level switching stage and secondly to the variables associated with the input data of the second level of first level permutation,
chaque étage de codage comprenant au moins deux modules de codage de base mettant chacun en œuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. Dit autrement, selon l'invention le dispositif de codage comprend : each coding stage comprising at least two basic coding modules each implementing a basic code that can be represented by a generator matrix comprising, in its systematic form, an identity matrix and an input data passage matrix to the invertible output data. In other words, according to the invention the coding device comprises:
un étage de codage de premier niveau et  a first level coding stage and
deux étages de permutation de premier niveau, dont :  two stages of first-level permutation, of which:
o un premier étage de permutation de premier niveau connecté d'un côté à des variables d'entrée associées à un premier ensem ble desdites données source et/ou de redondance, et à des variables internes associées à des données d'entrée et des données de sortie d'un premier étage de codage de deuxième niveau, et d'un autre côté audit étage de codage de premier niveau,  a first level switching stage connected on one side to input variables associated with a first set of said source and / or redundancy data, and to internal variables associated with input data and data; outputting a second level coding stage, and on the other side to said first level coding stage,
o un deuxième étage de permutation de premier niveau connecté d'un côté à des variables de sortie associées à un deuxième ensemble desdites données source et/ou de redondance, et à des variables internes associées à des données d'entrée et des données de sortie d'un deuxième étage de codage de deuxième niveau, et d'un autre côté audit étage de codage de premier niveau,  a second first-level permutation stage connected on one side to output variables associated with a second set of said source and / or redundancy data, and to internal variables associated with input data and output data; a second level of second level coding, and on the other side to said first level coding stage,
ledit premier ensemble et ledit deuxième ensemble formant un mot de code, et chaque étage de codage comprenant au moins deux modules de codage de base mettant chacun en œuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible.  said first set and said second set forming a code word, and each coding stage comprising at least two basic coding modules each implementing a basic code capable of being represented by a generating matrix comprising, in its systematic form , an identity matrix and an input data pass matrix to the invertible output data.
L'invention propose ainsi un nouveau dispositif de codage correcteur d'erreurs, dont la structure particulière permet de construire un code global performant avec une grande distance minimale, même si le nombre d'étage de codage est faible (trois étages de codage par exemple).  The invention thus proposes a new error-correcting coding device, the particular structure of which makes it possible to construct an efficient overall code with a large minimum distance, even if the number of coding stages is small (for example three coding stages). ).
De ce fait, les mots de code obtenus en utilisant un code global ainsi construit peuvent être décodés en utilisant les décodeurs de codes Cortex actuels, basés sur des décodages itératifs de type « Belief Propagation » performants, ou un décodeur selon l'invention.  As a result, the code words obtained by using a global code thus constructed can be decoded by using the current Cortex code decoders, based on efficient "Belief Propagation" iterative decoding, or a decoder according to the invention.
Selon l'invention, on considère que la matrice de passage des données source aux données de redondance est inversible. Aucune autre contrainte n'est imposée sur le code correcteur d'erreurs, et notamment sur la longueur de ce code ou la longueur des cycles. On peut donc considérer que le code correcteur d'erreurs mis en œuvre est quasi-aléatoire.  According to the invention, it is considered that the matrix of passage of the source data to the redundancy data is invertible. No other constraint is imposed on the error correction code, and in particular on the length of this code or the length of the cycles. It can therefore be considered that the error correction code implemented is quasi-random.
En particulier, le codeur proposé permet de construire un code global auto-dual avec une grande distance minimale quelque soit la longueur du code, et notamment pour un code assez court (de l'ordre de n < 1000). L'invention permet ainsi un décodage plus simple et plus performant que les techniques de l'art antérieur, notamment pour les codes présentant de petites longueurs et/ou des cycles courts. In particular, the proposed coder makes it possible to construct a global self-dual code with a large minimum distance regardless of the length of the code, and in particular for a rather short code (of the order of n <1000). The invention thus makes decoding easier and more efficient than the techniques of the prior art, in particular for codes having short lengths and / or short cycles.
Pour ce faire, on considère au moins trois étages de codage, comprenant chacun au moins deux modules de codage de base fonctionnant indépendamment, chaque module de codage de base mettant en œuvre un code de base. Seul l'étage de codage de premier niveau est connecté à des variables d'entrée et à des variables de sortie correspondant aux données source et aux données de redondance, après permutation. Les autres étages de codage sont connectés uniquement à des variables internes, qui sont des variables d'état, non transmises au décodeur. La structure est donc récursive et fermée.  To do this, at least three coding stages are considered, each comprising at least two basic coding modules operating independently, each basic coding module implementing a basic code. Only the first level coding stage is connected to input variables and output variables corresponding to the source data and the redundancy data after permutation. The other coding stages are connected only to internal variables, which are state variables, not transmitted to the decoder. The structure is therefore recursive and closed.
En particulier, les codes de base appartiennent au groupe comprenant :  In particular, the basic codes belong to the group comprising:
un code de Hamming ;  a Hamming code;
un code identité ;  an identity code;
un code de Golay ;  a Golay code;
un code à répétition simple ;  a simple repetition code;
Par exemple, un code de base est un code de Hamming (8,4,4), ou un code définit sur un alphabet quaternaire TL\, ou un code de Golay (24, 12, 8) .... For example, a base code is a Hamming code (8.4.4), or a code defined on a quaternary alphabet TL \, or a Golay code (24, 12, 8) ....
On choisit avantageusement un code de base présentant une grande distance minimale. Ainsi, les codes de base ont la propriété de mettre en œuvre des codes auto-duaux. Cette propriété d'auto-dualité permet un décodage optimal avec une complexité de décodage réduite. It is advantageous to choose a basic code having a large minimum distance. Thus, the basic codes have the property of implementing auto-dual codes. This self-duality property allows for optimal decoding with reduced decoding complexity.
Elle garantit notamment un rendement de codage égal à 1/2. It guarantees in particular a coding efficiency equal to 1/2.
Selon une caractéristique particulière de l'invention, le dispositif de codage comprend au moins deux étages de permutation de q-ème niveau, avec q un entier supérieur ou égal à 2, dont : un premier étage de permutation de q-ème niveau connecté, en entrée, à des variables internes associées aux données d'entrée et aux données de sortie d'un premier étage de codage de (q+l)-ème niveau, et, en sortie, à des variables internes associées aux données d'entrée et aux données de sortie d'un premier étage de codage de q-ème niveau ;  According to one particular characteristic of the invention, the coding device comprises at least two stages of permutation of q-th level, with q an integer greater than or equal to 2, including: a first level of permutation of q-th level connected, as input, to internal variables associated with the input data and the output data of a first (q + 1) -th level coding stage, and, at the output, to internal variables associated with the input data and the output data of a first level q-th level coding stage;
un deuxième étage de permutation de q-ème niveau connecté, en entrée, à des variables internes associées aux données d'entrée et aux données de sortie d'un deuxième étage de codage de q-ème niveau et, en sortie, à des variables internes associées aux données d'entrée et aux données de sortie d'un deuxième étage de codage de (q+l)-ème niveau. Selon un exemple de réalisation, chaque module de codage de base du ou des étages de codage de i-ème niveau comprend c entrées et c sorties, et chaque étage de permutation de i- ème niveau met en œuvre une permutation de type c-cyclique, avec i et c des entiers supérieurs ou égaux à 1. En particulier, c est égal à 4. a second stage of permutation of q-th level connected, at the input, to internal variables associated with the input data and the output data of a second stage of coding of q-th level and, at the output, with variables internal data associated with the input data and the output data of a second coding stage of (q + 1) -th level. According to an exemplary embodiment, each basic coding module of the i-th level coding stage (s) comprises c inputs and c outputs, and each permutation stage of i-th level This level implements a permutation of the c-cyclic type, with i and c being integers greater than or equal to 1. In particular, c is equal to 4.
Une permutation de type c-cyclique est une permutation selon laquelle un même motif de permutation est appliqué pour chaque bloc de longueur c.  A permutation of c-cyclic type is a permutation according to which the same permutation pattern is applied for each block of length c.
En particulier, de telles permutations cycliques par bloc sont faciles à implémenter. L'utilisation de permutations c-cycliques permet notamment de minimiser le nombre d'opérations d'accès mémoire (lecture/écriture), et d'éviter les problèmes de conflit d'accès mémoire.  In particular, such block cyclic permutations are easy to implement. The use of c-cyclic permutations makes it possible in particular to minimize the number of memory access operations (read / write), and to avoid memory access conflict problems.
Par exemple, une telle permutation de type c-cyclique s'écrit sous la forme :
Figure imgf000007_0001
For example, such a permutation of c-cyclic type is written in the form:
Figure imgf000007_0001
avec, pour conditions, que D = {Δο, Δ-^ ... , Δ^! ) soit un ensemble de paramètres entiers tels que : with, for conditions, that D = {Δο, Δ- ^ ..., Δ ^ ! ) a set of integer parameters such as:
les paramètres (Δ0, A1 ... , AC--1) doivent prendre au moins trois valeurs différentes, ou si les paramètres (à0, A1 ... , Δε_1) ne prennent que deux valeurs différentes, alors chacune des deux valeurs est au moins présente deux fois dans l'ensemble . the parameters (Δ 0 , A 1 ..., A C - 1 ) must take at least three different values, or if the parameters (at 0 , A 1 ..., Δ ε _ 1 ) take only two values different, then each of the two values is at least twice in the set.
Selon un autre exemple de réalisation, chaque étage de permutation de i-ème niveau met en œuvre une permutation affine, avec i un entier supérieur ou égal à 1.  According to another exemplary embodiment, each i-th level permutation stage implements an affine permutation, with i an integer greater than or equal to 1.
Selon un aspect spécifique de l'invention, le ou les étages de codage de i-ème niveau comprennent chacun au moins deux modules de permutation locale, chaque module de permutation locale permutant les variables internes obtenues en sortie d'un module de codage de base.  According to a specific aspect of the invention, the i-th level coding stage (s) each comprise at least two local permutation modules, each local permutation module permutating the internal variables obtained at the output of a basic coding module .
De telles permutations locales permettent notamment d'obtenir des mots de code de base présentant de bonnes distances minimales.  Such local permutations make it possible in particular to obtain basic code words having good minimum distances.
Selon une caractéristique particulière, le dispositif de codage présente une structure symétrique.  According to a particular characteristic, the coding device has a symmetrical structure.
Ainsi, les deux étages de codage de q-ième niveau sont localisés de part et d'autre de l'étage de codage de premier niveau (q≥ 2), et comprennent un même nombre d'entrées et de sorties.  Thus, the two levels of q-th level coding are located on either side of the first level coding stage (q≥2), and include the same number of inputs and outputs.
De la même façon, les deux étages de permutation de (q-l)-ième niveau, inséré chacun entre un des étages de codage de (q-l)-ième niveau et un des étages de codage de q-ième niveau sont symétriques. Par exemple, si l'on note π0 la permutation insérée entre le premier étage de codage de deuxième niveau et l'étage de codage de premier niveau, alors la permutation insérée entre le deuxième étage de codage de deuxième niveau et l'étage de codage de premier niveau, notée π-L, sera telle que π1 = π0 _1. In the same way, the two (ql) -th level permutation stages, each inserted between one of the (ql) -th level coding stages and one of the q-th level coding stages, are symmetrical. For example, if π 0 is the permutation inserted between the first second level coding stage and the first level coding stage, then the inserted permutation between the second second level coding stage and the first level coding stage, denoted π-L, will be such that π 1 = π 0 _1 .
En particulier, une symétrie entre les données source et les données de redondance permet de concevoir des algorithmes de type « Belief-Propagation » plus rapides à converger, car travaillant sur des couples (χί( ) pour i = 0,1, ... , k— 1. In particular, a symmetry between the source data and the redundancy data makes it possible to design "Belief-Propagation" type algorithms faster to converge, because working on pairs (χ ί ( ) for i = 0.1, .. ., k- 1.
Selon une caractéristique particulière de l'invention, le nombre de variables internes est deux fois supérieur au nombre de variables associées aux données source.  According to a particular characteristic of the invention, the number of internal variables is twice the number of variables associated with the source data.
Selon un mode de réalisation particulier, tous les modules de codage de base mettent en œuvre un code de base identique.  According to a particular embodiment, all basic coding modules implement an identical basic code.
Ainsi, le dispositif de codage selon l'invention est simplifié par l'utilisation de modules de codage de base mettant en œuvre des codes de base identiques.  Thus, the coding device according to the invention is simplified by the use of basic coding modules implementing identical basic codes.
Selon un aspect particulier de l'invention, le dispositif comprend un module de forçage à zéro, mettant à la valeur nulle au moins une des données source et/ou au moins une des données de redondance.  According to a particular aspect of the invention, the device comprises a zero forcing module, setting to zero at least one of the source data and / or at least one of the redundancy data.
Ce « forçage » à zéro de certaines données permet notamment d'obtenir, de façon très flexible, des codes de rendement différent de ½ et dont les distances minimales restent bonnes, même lorsque le rendement tend vers 1. De même, on peut construire des codes quasi-optimaux avec des rendements tendant vers zéro. En effet, les données forcées à zéro au moment du codage représentent à la réception des informations nulles parfaites non-bruitées.  This "forcing" to zero of certain data makes it possible in particular to obtain, in a very flexible manner, yield codes different from ½ and whose minimum distances remain good, even when the yield tends to 1. Similarly, it is possible to construct quasi-optimal codes with yields tending toward zero. Indeed, the data forced to zero at the time of the coding represent on the reception of the information null perfect non-noisy.
Il est également possible d'obtenir un rendement différent de ½ en utilisant une structure non symétrique.  It is also possible to obtain a yield different from ½ by using a non-symmetrical structure.
En particulier, l'ensemble des étages de codage et de permutation forme un graphe de Tanner, dont les entrées sont les variables d'entrée associées au premier ensemble de données source et/ou de redondance, et les sorties sont les variables de sortie associées au deuxième ensemble de données source et/ou de redondance.  In particular, the set of coding and permutation stages form a Tanner graph whose inputs are the input variables associated with the first set of source and / or redundancy data, and the outputs are the associated output variables. the second set of source and / or redundancy data.
Par exemple, les deux étages de codage de (q+l)-ème niveau et les deux étages de permutation de q-ème niveau sont symétriques l'un de l'autre par rapport à l'axe du milieu du graphe de Tanner.  For example, the two coding stages of (q + 1) -th level and the two stages of permutation of q-th level are symmetrical to each other with respect to the middle axis of the Tanner graph.
Dans un autre mode de réalisation, l'invention concerne un procédé de codage correcteur d'erreurs, apte à mettre en œuvre un code correcteur d'erreurs global associant des données de redondance à des données source, le code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage des données source aux données de redondance inversible.  In another embodiment, the invention relates to an error correction coding method, capable of implementing a global error correction code associating redundancy data with source data, the global correction code being capable of be represented by a generator matrix comprising, in its systematic form, an identity matrix and a matrix for passing the source data to the invertible redundancy data.
Selon l'invention, un tel procédé de codage met en œuvre :  According to the invention, such a coding method implements:
deux étapes de permutation de premier niveau, dont : o une première étape de permutation de premier niveau recevant, en entrée, d'une part un premier ensemble des données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une première étape de codage de deuxième niveau, et two steps of first-level permutation, including: a first step of first-level permutation receiving, on the input side, on the one hand a first set of source and / or redundancy data, and on the other hand input data and output data obtained from a first step of second level coding, and
o une deuxième étape de permutation de premier niveau délivrant, en sortie, d'une part un deuxième ensemble des données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une deuxième étape de codage de deuxième niveau,  a second step of first-level permutation outputting on the one hand a second set of source and / or redundancy data, and on the other hand input data and output data obtained from a second level of second level coding,
le premier ensemble et le deuxième ensemble formant un mot de code, et  the first set and the second set forming a code word, and
une étape de codage de premier niveau recevant les données de sortie de la première étape de permutation de premier niveau et délivrant des données d'entrée à la deuxième étape de permutation de premier niveau,  a first level encoding step receiving the output data of the first first level permutation step and outputting input data to the second first level permutation step,
chaque étape de codage mettant en œuvre au moins deux modules de codage de base mettant chacun en œuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. each coding step implementing at least two basic coding modules each implementing a basic code that can be represented by a generating matrix comprising, in its systematic form, an identity matrix and a data transmission matrix; input to the invertible output data.
Un tel procédé peut notamment être mis en œuvre par un dispositif de codage correcteur d'erreurs tel que décrit précédemment. Ce procédé pourra bien sûr comporter les différentes caractéristiques relatives au dispositif de codage selon l'invention, qui peuvent être combinées ou prises isolément. Ainsi, les caractéristiques et avantages de ce procédé sont les mêmes que ceux du dispositif de codage, et ne sont pas détaillés plus amplement.  Such a method may in particular be implemented by an error correction coding device as described above. This method may of course include the various characteristics relating to the coding device according to the invention, which can be combined or taken in isolation. Thus, the features and advantages of this method are the same as those of the coding device, and are not detailed further.
En particulier, chaque étape correspond avantageusement à un étage de la structure du dispositif de codage correspondant, et peut être implémentée sous la forme d'un circuit intégré, ou dans un composant électronique de type microprocesseur. Cette structure permet une compréhension plus aisée de l'invention. Cependant, le procédé de l'invention peut être mis en œuvre sous tout autre forme adéquate, et notamment sous forme essentiellement logicielle, un ou plusieurs processeurs effectuant le traitement correspondant.  In particular, each step advantageously corresponds to a stage of the structure of the corresponding coding device, and can be implemented in the form of an integrated circuit, or in an electronic component of the microprocessor type. This structure allows an easier understanding of the invention. However, the method of the invention can be implemented in any other suitable form, and especially in essentially software form, one or more processors performing the corresponding processing.
L'invention concerne par ailleurs un dispositif de décodage correcteur d'erreurs, apte à retrouver des données source à partir d'un mot de code reçu, les données source ayant été codées par un code correcteur d'erreurs global associant des données de redondance aux données source, le code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage des données source aux données de redondance inversible.  The invention also relates to an error correction decoding device, able to retrieve source data from a received code word, the source data having been coded by a global error correction code associating redundancy data. to the source data, the global correction code being capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix for passing the source data to the invertible redundancy data.
Selon l'invention, un tel dispositif de décodage comprend :  According to the invention, such a decoding device comprises:
deux étages de permutation de premier niveau, dont : o un premier étage de permutation de premier niveau connecté, en entrée, d'une part à des variables d'entrée associées à un premier ensemble des données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un premier étage de décodage de deuxième niveau, et two stages of first-level permutation, of which: a first stage of first-level permutation connected, as input, on the one hand to input variables associated with a first set of source and / or redundancy data, and on the other hand to internal variables associated with input data and output data of a second level decoding first stage, and
o un deuxième étage de permutation de premier niveau connecté, en sortie, d'une part à des variables de sortie associées à un deuxième ensemble des données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un deuxième étage de décodage de deuxième niveau,  a second stage of first-level permutation connected, on the output, on the one hand to output variables associated with a second set of source and / or redundancy data, and on the other hand to internal variables associated with data. input and output data of a second second level decoding stage,
le premier ensemble et le deuxième ensemble formant le mot de code, et  the first set and the second set forming the code word, and
un étage de décodage de premier niveau connecté d'une part aux variables associées aux données de sortie du premier étage de permutation de premier niveau et d'autre part aux variables associées aux données d'entrée du deuxième étage de permutation de premier niveau,  a first-level decoding stage connected firstly to the variables associated with the output data of the first first-level permutation stage and secondly to the variables associated with the input data of the second-level first-level permutation stage,
chaque étage de décodage comprenant au moins deux modules de décodage de base mettant chacun en œuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. each decoding stage comprising at least two basic decoding modules each implementing a basic code that may be represented by a generating matrix comprising, in its systematic form, an identity matrix and an input data passage matrix to the invertible output data.
Un tel dispositif de décodage présente une structure similaire à celle du dispositif de codage décrit ci-dessus. Il présente donc les mêmes caractéristiques que le dispositif de codage selon l'invention, qui peuvent être combinées ou prises isolément.  Such a decoding device has a similar structure to that of the coding device described above. It therefore has the same characteristics as the coding device according to the invention, which can be combined or taken in isolation.
En particulier, un tel dispositif peut être utilisé pour décoder des mots de code obtenus à partir du dispositif de codage décrit ci-dessus.  In particular, such a device can be used to decode code words obtained from the coding device described above.
Dans un autre mode de réalisation, l'invention concerne un procédé de décodage correcteur d'erreurs, apte à retrouver des données source à partir d'un mot de code reçu, les données source ayant été codées par un code correcteur d'erreurs global associant des données de redondance aux données source, le code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage des données source aux données de redondance inversible.  In another embodiment, the invention relates to an error correction decoding method capable of retrieving source data from a received code word, the source data having been coded by a global error correction code. associating redundancy data with the source data, the global correction code being capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix for passing the source data to the invertible redundancy data.
Selon l'invention, un tel procédé de décodage met en œuvre :  According to the invention, such a decoding method implements:
deux étapes de permutation de premier niveau, dont :  two steps of first-level permutation, including:
o une première étape de permutation de premier niveau recevant, en entrée, d'une part un premier ensemble des données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une première étape de décodage de deuxième niveau, et a first step of first-level permutation receiving, as input, on the one hand a first set of source and / or redundancy data, and on the other hand part of the input data and output data obtained from a first second level decoding step, and
o une deuxième étape de permutation de premier niveau délivrant, en sortie, d'une part un deuxième ensemble des données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une deuxième étape de décodage de deuxième niveau,  a second step of first-level permutation outputting on the one hand a second set of source and / or redundancy data, and on the other hand input data and output data obtained from a second level of second level decoding,
le premier ensemble et le deuxième ensemble formant le mot de code, et  the first set and the second set forming the code word, and
une étape de décodage de premier niveau recevant les données de sortie de la première étape de permutation de premier niveau et délivrant des données d'entrée à la deuxième étape de permutation de premier niveau,  a first level decoding step receiving the output data of the first first level permutation step and outputting input data to the second first level permutation step,
chaque étape de décodage mettant en œuvre au moins deux modules de décodage de base mettant chacun en œuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. each decoding step implementing at least two basic decoding modules, each implementing a basic code that can be represented by a generating matrix comprising, in its systematic form, an identity matrix and a data transmission matrix; input to the invertible output data.
Un tel procédé peut notamment être mis en œuvre par un dispositif de décodage correcteur d'erreurs tel que décrit précédemment. Ce procédé pourra bien sûr comporter les différentes caractéristiques relatives au dispositif de décodage correcteur d'erreurs selon l'invention, qui peuvent être combinées ou prises isolément. Ainsi, les caractéristiques et avantages de ce procédé sont les mêmes que ceux du dispositif de décodage correcteur d'erreurs, et ne sont pas détaillés plus amplement.  Such a method may in particular be implemented by an error correction decoding device as described above. This method may of course include the various features relating to the error correction decoding device according to the invention, which can be combined or taken separately. Thus, the features and advantages of this method are the same as those of the error correction decoding device, and are not detailed further.
En particulier, chaque étape correspond avantageusement à un étage de la structure du dispositif de décodage correspondant ; et peut être implémentée sous la forme d'un circuit intégré, ou dans un composant électronique de type microprocesseur. Cette structure permet une compréhension plus aisée de l'invention. Cependant, le procédé de l'invention peut être mis en œuvre sous tout autre forme adéquate, et notamment sous forme essentiellement logicielle, un ou plusieurs processeurs effectuant le traitement correspondant.  In particular, each step advantageously corresponds to a stage of the structure of the corresponding decoding device; and can be implemented as an integrated circuit, or in an electronic component of the microprocessor type. This structure allows an easier understanding of the invention. However, the method of the invention can be implemented in any other suitable form, and especially in essentially software form, one or more processors performing the corresponding processing.
Ainsi, l'invention concerne également un ou plusieurs programmes d'ordinateur comportant des instructions pour la mise en œuvre d'un procédé de codage et/ou d'un procédé de décodage lorsque le ou les programmes sont exécutés par un processeur. De tels programmes peuvent être stockés sur un support de stockage.  Thus, the invention also relates to one or more computer programs comprising instructions for implementing an encoding method and / or a decoding method when the program or programs are executed by a processor. Such programs can be stored on a storage medium.
Finalement, l'invention concerne un dispositif apte à mettre en œuvre les opérations de codage et de décodage correspondantes.  Finally, the invention relates to a device capable of implementing the corresponding coding and decoding operations.
4. Liste des figures  4. List of figures
D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation particulier, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : Other characteristics and advantages of the invention will appear more clearly on reading the following description of a particular embodiment, given as a simple illustrative and nonlimiting example, and appended drawings, among which:
la figure 1 présente les principales étapes mises en œuvre par un procédé de codage selon un mode de réalisation de l'invention ;  Figure 1 shows the main steps implemented by a coding method according to one embodiment of the invention;
la figure 2 illustre la structure d'un codeur et/ou d'un décodeur à trois étages de (dé)codage selon un mode de réalisation de l'invention ;  FIG. 2 illustrates the structure of an encoder and / or decoder with three stages of (de) coding according to one embodiment of the invention;
la figure 3 présente les principales étapes mises en œuvre par un procédé de décodage selon un mode de réalisation de l'invention ;  FIG. 3 presents the main steps implemented by a decoding method according to one embodiment of the invention;
la figure 4 illustre la structure d'un codeur et/ou d'un décodeur à sept étages de (dé)codage selon un mode de réalisation de l'invention ;  FIG. 4 illustrates the structure of an encoder and / or decoder with seven stages of (de) coding according to one embodiment of the invention;
les figures 5A et 5B présentent un exemple de construction et d'utilisation du code Golay (24, 12, 8) selon un mode de réalisation de l'invention ;  FIGS. 5A and 5B show an example of construction and use of the Golay code (24, 12, 8) according to one embodiment of the invention;
les figures 6A et 6B présentent un exemple de construction et d'utilisation d'un code auto-dual (72,36,12) de type II selon un mode de réalisation de l'invention.  FIGS. 6A and 6B show an example of construction and use of a type II auto-dual code (72,36,12) according to one embodiment of the invention.
5. Description d'un mode de réalisation de l'invention  5. Description of an embodiment of the invention
5.1 Principe général  5.1 General principle
Le principe général de l'invention repose sur une structure particulière d'un code correcteur d'erreurs, basée sur une alternance d'étages de codage et d'étages de permutation.  The general principle of the invention is based on a particular structure of an error correction code, based on an alternation of coding stages and permutation stages.
En particulier, la structure de codage proposée permet de construire des codes correcteurs d'erreurs auto-duaux avec seulement trois étages de codage et un nombre minimum de variables internes « cachées » (i.e. non-transmises), encore appelées variables intermédiaires ou variables d'état, et ayant de grandes distances minimales. Elle fournit notamment une solution pratique pour protéger le mieux possible de petits paquets d'information (n < 1000 bits) contre les bruits et les interférences inhérents à tout canal de transmission. Elle simplifie en outre le décodage, du fait du faible nombre d'étages de codage utilisé.  In particular, the proposed coding structure makes it possible to construct auto-dual error correcting codes with only three coding stages and a minimum number of "hidden" (ie non-transmitted) internal variables, also called intermediate or variable variables. state, and having great minimum distances. In particular, it provides a practical solution to best protect small packets of information (n <1000 bits) from the noise and interference inherent in any transmission channel. It also simplifies decoding, because of the small number of coding stages used.
En particulier, on rappelle que parmi les techniques de codage permettant la correction d'erreurs de transmission, 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.  In particular, it is recalled that among the coding techniques allowing the correction of transmission errors, turbo codes and LDPC codes (in English "Low-Density Parity Check") have very good performances in terms of correction of errors. errors for codes of great length n, with n of the order of a few thousand bits at least (n> 1000). In contrast, turbo codes and LDPC codes have lower performance for shorter codes.
La solution proposée permet d'obtenir des codes performants mêmes assez courts (/i<1000), présentant une grande distance minimale, où par exemple dmin est une faction de n, et permet donc notamment de concurrencer ces turbo-codes et ces codes LDPC. The proposed solution makes it possible to obtain efficient codes that are quite short (/ i <1000), having a large minimum distance, where for example d min is a fraction of n, and therefore makes it possible to compete with these turbo-codes and these codes. LDPC.
On présente, en relation avec la figure 1, les principales étapes mises en œuvre par un procédé de codage correcteur d'erreurs selon l'invention. Un tel procédé est notamment apte à mettre en œuvre un code correcteur d'erreurs global auto-dual, c'est-à-dire susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage des données source (X) aux données de redondance ( ) inversible. In relation to FIG. 1, the main steps implemented by an error correction coding method according to the invention are presented. Such a method is particularly suitable for implementing a global self-dual error correction code, that is to say capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix from the source data (X) to the invertible redundancy data ().
Comme illustré en figure 1, le procédé de codage met en œuvre :  As illustrated in FIG. 1, the coding method implements:
une étape de codage de premier niveau 11, notée CN1, recevant par exemple en entrée des données source X, après permutations, et délivrant par exemple en sortie des données de redondance R, après permutations. Une telle étape de codage de premier niveau met en œuvre au moins deux modules de codage de base, connectés d'une part à toutes les variables associées aux données source et aux données de redondance, et d'autre part à des variables internes ; a first level coding step 11, denoted by C N1 , for example receiving input data X after permutations, and for example outputting redundancy data R after permutations. Such a first-level coding step implements at least two basic coding modules, connected on the one hand to all the variables associated with the source data and the redundancy data, and on the other hand to internal variables;
une première 121 et une deuxième 122 étapes de codage de deuxième niveau, notées respectivement CN2jl et CN2,2, mettant chacune en œuvre au moins deux modules de codage de base connectés uniquement aux variables internes de l'étape de codage de premier niveau 11 CN1 après permutations ; a first 121 and a second 122 second level coding steps, denoted respectively C N2j1 and C N2,2 , each implementing at least two basic coding modules connected only to the internal variables of the first level coding step 11 C N1 after permutations;
une première 131 et une deuxième 132 étapes de permutation de premier niveau, notées respectivement π0 et π . La première étape de permutation 131 π0 est mise en œuvre entre l'étape de codage de premier niveau 11 Cm et la première étape de codage de deuxième niveau 121 CN2,i, et reçoit donc, en entrée, d'une part les données source X et d'autre part les données d'entrée et des données de sortie obtenues à partir de la première étape de codage de deuxième niveau 121 CN2ji. La deuxième étape de permutation 132 π1 est mise en œuvre entre l'étape de codage de premier niveau 11 Cm et la deuxième étape de codage de deuxième niveau 122 CN2 2 et délivre donc, en sortie, d'une part les données de redondance R et d'autre part des données d'entrée et des données de sortie à la deuxième étape de codage de deuxième niveau 122 CN2 2. a first 131 and a second 132 first level permutation steps, denoted respectively π 0 and π. The first permutation step 131 π 0 is implemented between the first level coding step 11 C m and the first second level coding step 121 C N2 , i, and therefore receives, as input, on the one hand the source data X and on the other hand the input data and output data obtained from the first second level coding step 121 C N2j i. The second permutation step 132 π 1 is implemented between the first-level coding step 11 C m and the second second-level coding step 122 C N2 2 and therefore outputs, on the one hand, the data R redundancy and on the other hand input data and output data to the second second level coding step 122 C N2 2 .
En particulier, on note que chaque module de codage de base met en œuvre un code de base auto-dual, susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible.  In particular, it should be noted that each basic coding module implements an auto-dual basic code, which can be represented by a generating matrix comprising, in its systematic form, an identity matrix and a data transmission matrix. input to the invertible output data.
On considère ici une définition générale de la dualité, encore appelée iso-dualité, telle qu'exprimée notamment dans le document « Handbook of coding theory », V.S. Pless et W.C. We consider here a general definition of duality, also called iso-duality, as expressed in particular in the document "Handbook of coding theory", V.S. Pless and W.C.
Huffman - Volume I - Chapitre 3 - pages 177 et 199. Cette définition impose pour seule contrainte l'inversibilité de la matrice de passage des données d'entrée aux données de sortie. Huffman - Volume I - Chapter 3 - pages 177 and 199. This definition imposes the only constraint on the invertibility of the matrix of passage of the input data to the output data.
La figure 2 illustre plus spécifiquement la structure d'un dispositif de codage correspondant, sous la forme d'un graphe de Tanner comprenant trois étages de codage, dit « Cortex-Compact ». FIG. 2 more specifically illustrates the structure of a corresponding coding device, in the form of a Tanner graph comprising three coding stages, said "Cortex-Compact".
Un tel dispositif reçoit en entrée des données sources X, organisées par exemple en blocs de m bits. Le premier bloc de données source comprend par exemple les bits d'information x0 à xm-i, le deuxième bloc les bits d'information xm à a¾m-i> ···< le (k+l)-ième bloc les bits d'information xk-m à χ¾_ι, avec k un multiple de m. Un tel dispositif délivre en sortie des données de redondance , organisées également en blocs de m bits. Le premier bloc de données de redondance comprend par exemple les bits de redondance r0 à rm_ , le deuxième bloc les bits de redondance rm à r2m_i, le (k+l)-ième bloc les bits de redondance rk_m à rk_lt avec k un multiple de m. Such a device receives as input source data X, organized for example in blocks of m bits. The first source data block comprises, for example, the information bits x 0 to x m -i, the second block the information bits x m to a¾m-i > ··· < the (k + 1) th block the information bits x k - m to χ¾_ι, with k a multiple of m. Such a device outputs redundancy data, also organized in blocks of m bits. The first redundancy data block comprises, for example, the redundancy bits r 0 to r m _, the second block the redundancy bits r m to r 2m _i, the (k + 1) th block the redundancy bits r k _ m to r k _ lt with k a multiple of m.
On note que selon l'exemple illustré en figure 2, les données source sont associées à des variables d'entrée et placées à gauche du graphe de Tanner représentatif du dispositif de codage, et les données de redondance sont associées à des variables de sortie et sont placées à droite du graphe de Tanner. Il ne s'agit ici que d'un choix de représentation, et une partie des données de redondance (voire l'ensemble des données de redondance) pourraient être placée à gauche du graphe de Tanner, et donc associées à des variables d'entrée du graphe de Tanner. De même, le nombre de bits d'information k n'est pas nécessairement égal au nombre de bits de redondance (n-k).  It should be noted that according to the example illustrated in FIG. 2, the source data are associated with input variables and placed to the left of the Tanner graph representative of the coding device, and the redundancy data are associated with output variables and are placed to the right of the Tanner graph. This is only a choice of representation, and some of the redundancy data (or even all the redundancy data) could be placed to the left of the Tanner graph, and therefore associated with input variables. of the Tanner graph. Similarly, the number of information bits k is not necessarily equal to the number of redundancy bits (n-k).
Un tel dispositif de codage comprend au moins :  Such a coding device comprises at least:
un étage de codage de premier niveau 21 comprenant au moins deux modules de codage de base Cb, connectés d'une part à toutes les variables associées aux données source xt et aux données de redondance , pour /' allant de 0 à k-1, et d'autre part à des variables internes dj et fj, par exemple pour j allant de 0 à 2k-l, par l'intermédiaire d'un premier 231 ou d'un deuxième 232 étage de permutation de premier niveau ; a first level coding stage 21 comprising at least two basic coding modules Cb, connected on the one hand to all the variables associated with the source data x t and to the redundancy data, for / ' ranging from 0 to k-1 and on the other hand internal variables dj and fj, for example for j ranging from 0 to 2k-1, via a first 231 or a second 232 first level permutation stage;
un premier 221 et un deuxième 222 étages de codage de deuxième niveau, connectés chacun à l'étage de codage de premier niveau 21 respectivement par l'intermédiaire du premier 231 ou du deuxième 232 étage de permutation de premier niveau.  a first 221 and a second 222 second level coding stages, each connected to the first level coding stage 21 respectively via the first 231 or second 232 first level permutation stage.
Chaque étage de codage de deuxième niveau comprend au moins deux modules de codage de base Cb, connectés uniquement aux variables internes de l'étage de codage de premier niveau 21, par l'intermédiaire d'un premier 231 ou d'un deuxième 232 étage de permutation de premier niveau.  Each second level coding stage comprises at least two basic coding modules Cb, connected only to the internal variables of the first level coding stage 21, via a first 231 or a second 232 stage. first level permutation.
Les seules variables auxquelles on a accès sont donc les variables d'entrée et de sortie du graphe de Tanner, auxquelles sont associées des données source et/ou de redondance. Les autres variables internes ne sont pas transmises au décodeur.  The only variables that can be accessed are the input and output variables of the Tanner graph, which are associated with source and / or redundancy data. Other internal variables are not transmitted to the decoder.
Selon l'exemple illustré, chaque module de codage de base met en œuvre un même code de base noté Cb. Bien entendu, les modules de codage de base peuvent mettre en œuvre différents codes de base, au sein d'un même dispositif de codage. En effet, les différents modules de codage sont indépendants. De préférence, le nombre d'entrées (respectivement le nombre de sorties) de chaque module de codage de base est identique. According to the illustrated example, each basic coding module implements the same basic code noted Cb. Of course, the basic coding modules can implement different basic codes, within the same coding device. Indeed, the different coding modules are independent. Preferably, the number of inputs (respectively the number of outputs) of each basic coding module is identical.
On considère par exemple que m = 4 et que chaque module de codage de base met en œuvre un code de Hamming (8, 4, 4). Un tel code est optimal pour sa longueur n = 8 et sa dimension k = 4 avec une distance minimale dmin = 4. Ce code de base de Hamming (8,4,4) est auto-dual et a tous ses mots de code de poids multiples de 4. Il est donc dit par définition auto-dual de type-Il. For example, we consider that m = 4 and that each basic coding module implements a Hamming code (8, 4, 4). Such a code is optimal for its length n = 8 and its dimension k = 4 with a minimum distance d min = 4. This basic Hamming code (8.4.4) is auto-dual and has all its code words. of multiple weights of 4. It is therefore said by definition auto-dual type-II.
Selon un autre exemple, on considère que m = 1 et que chaque module de codage de base met en œuvre un code à répétition simple, dont un mot de code est obtenu à partir d'une répétition d'une donnée source. Par exemple, on obtient le bit de redondance r0 = x0 à partir du bit source x0. Ce code de base est auto-dual de type-l. According to another example, it is considered that m = 1 and that each basic coding module implements a simple repetition code, a code word of which is obtained from a repetition of a source data item. For example, the redundancy bit r 0 = x 0 is obtained from the source bit x 0 . This base code is auto-dual of type-l.
Selon d'autres exemples, les modules de codage de base mettent en œuvre des codes de Golay (comme le code (24, 12, 8), avec m = 12), des codes définis sur des alphabets quaternaires Z4, des codes identités, des codes à répétition simple, etc.  According to other examples, the basic coding modules implement Golay codes (like the code (24, 12, 8), with m = 12), codes defined on quaternary alphabets Z4, identity codes, simple repetition codes, etc.
En revenant à la figure 2, et en considérant que chaque module de codage de base met en œuvre un code de Hamming (8, 4, 4), le premier étage de permutation de premier niveau 231, mettant en œuvre une permutation π0, reçoit d'une part des bits d'information par paquets de quatre bits, notés par exemple x0_3 pour le paquet de bits d'information xQ, x , x2, x^), d'autre part des variables internes d'entrée et de sortie des modules de codage du premier étage de codage de deuxième niveau 221, également par paquets de quatre bits. Returning to FIG. 2, and considering that each basic coding module implements a Hamming code (8, 4, 4), the first first level permutation stage 231, implementing a permutation π 0 , receives, on the one hand, bits of information in packets of four bits, noted for example x 0 _ 3 for the packet of information bits x Q , x, x 2 , x ^), on the other hand internal variables input and output of coding modules of the second level coding second stage 221, also in packets of four bits.
Ainsi, chaque module de codage de base Cb du premier étage de codage de deuxième niveau 221 est connecté à quatre variables internes, notées par exemple d0_3 pour le paquet (d0, d1, d2, d3). Ces quatre variables internes sont transformées linéairement, modulo 2, en quatre variables images, notées par exemple f0_3 pour le paquet ( ο<Λ< 2< 3)< conformément au code de base de Hamming (8, 4, 4), telles que :Thus, each basic coding module Cb of the first second-level coding stage 221 is connected to four internal variables, denoted e.g. d 0 _ 3 for the packet (d 0, d 1, d 2, d 3). These four internal variables are transformed linearly, modulo 2, into four image variables, noted for example f 0 _ 3 for the packet (ο < Λ < 2 < 3) <according to the basic code of Hamming (8, 4, 4) , as :
Figure imgf000015_0001
Figure imgf000015_0001
où P est la matrice de passage des données d'entrée d0_3 aux données de sortie 0_3 correspondant à la matrice identité de dimension 4, inversée modulo 2 : where P is the matrix of passage of the input data d 0 _ 3 to the output data 0 _ 3 corresponding to the dimension identity matrix 4, inverted modulo 2:
0 1 1 1  0 1 1 1
P = 1 0 1 1  P = 1 0 1 1
1 1 0 1  1 1 0 1
1 1 1 0  1 1 1 0
On note que les sorties de chaque module de codage de base des différents étages de codage peuvent être permutées localement pour obtenir des codes « locaux » de bonne distance minimale dmin. Par exemple, il est possible de permuter les quatre bits 0_3 pour obtenir un code « local » de grande distance minimale. On note qu'il y a 14 = 24 permutations possibles pour un vecteur de quatre bits. It is noted that the outputs of each basic coding module of the different coding stages can be switched locally to obtain "local" codes with a good minimum distance d min . For example, it is possible to swap the four bits 0 _ 3 to obtain a code "Local" of great minimum distance. We note that there are 14 = 24 possible permutations for a vector of four bits.
Le premier étage de permutation de premier niveau 231 est donc connecté en entrée à k variables correspondant aux k bits d'information (χ0_^_^) et à 2k variables internes (do-(fe-i)' o-(fc-i))- Ces 3k variables, après permutations, sont connectées à l'étage de codage de premier niveau 21. The first first-level permutation stage 231 is connected to the input variables corresponding to k to k information bits (χ 0 _ ^ _ ^) and 2k internal variables (do- (f ei) o- (f latter )) - These variables 3k, after permutation, are connected to the first level of coding stage 21.
L'étage de codage de premier niveau 21 met en œuvre 3k/4 modules de codage de base de t e Hamming (8,4,4), délivrant k bits de redondance (r0_(fe_1-)) et 2k variables internes
Figure imgf000016_0001
The first level coding stage 21 implements 3k / 4 basic Hamming coding modules (8,4,4), delivering k redundancy bits (r 0 _ (fe _ 1 - ) ) and 2k variables. internal
Figure imgf000016_0001
Si l'on considère une structure symétrique, le deuxième étage de permutation de premier niveau 232 reçoit ces 3k variables, met en œuvre une permutation π1 = π0 _1 et délivre d'une part des bits de redondance par paquets de quatre bits, notés par exemple r0_3 pour le paquet de bits de redondance Q, r , r2, r^) , d'autre part des variables internes d'entrée et de sortie des modules de codage du deuxième étage de codage de deuxième niveau 222, également par paquets de quatre bits. If we consider a symmetrical structure, the second first level permutation stage 232 receives these 3k variables, implements a permutation π 1 = π 0 _1 and delivers, on the one hand, four-bit packet redundancy bits, for example noted r 0 _ 3 for the redundancy bit packet Q , r, r 2 , r ^), on the other hand input and output internal variables of the coding modules of the second second level coding stage 222, also in packets of four bits.
On note qu'il est possible de trouver de très bons codes correcteurs globaux en gardant la contrainte de la symétrie miroir entre les données source et les données de redondance sur cette structure, par rapport à l'axe du milieu du graphe de Tanner. Une telle symétrie permet un repliement par rapport à cet axe et donc un décodage par couples de variables symétriques. La conséquence en est la possibilité de concevoir des algorithmes à propagation de probabilités (BP) performants et plus rapides à converger car travaillant sur des couples (Xj, rj) pour i = 0, 1, . . . , k - 1. It is noted that it is possible to find very good global correcting codes by keeping the mirror symmetry constraint between the source data and the redundancy data on this structure, with respect to the middle axis of the Tanner graph. Such symmetry allows a folding with respect to this axis and therefore a decoding by pairs of symmetrical variables. The consequence is the possibility of designing efficient probabilistic propagation algorithms (BP) that are faster to converge because they work on pairs (X j , r j ) for i = 0, 1,. . . , k - 1.
Ainsi, si le nombre de bits d'information est égal à k comme présenté dans l'exemple ci- dessus, alors la longueur totale du code global est de n = 2k et la taille des permutations π0 et π1 est égale à l = 3k pour un code de base de Hamming (8,4,4) par paquet de 4 bits d'information, ce qui fait aussi 2k variables internes dj, soit un bit associé à une variable interne par bit de code. Thus, if the number of information bits is equal to k as shown in the example above, then the total length of the global code is n = 2k and the size of the permutations π 0 and π 1 is equal to l = 3k for a Hamming base code (8.4.4) per packet of 4 information bits, which also makes 2k internal variables dj, ie a bit associated with an internal variable per code bit.
On note qu'une telle structure symétrique n'est cependant pas obligatoire. Notamment, il est possible de définir une structure dissymétrique en utilisant des permutations non symétriques dans les premier et deuxième étages de permutation de i-ème niveau (i.e. π1≠ π0 _1), un nombre de modules de codage différents dans les premier et deuxième étages de codage de i-ème niveau, et/ou des modules de codage mettant en œuvre des codes de base différents dans les premier et deuxième étages de codage de i-ème niveau, pour i≥ 1. Il est également possible de généraliser la structure en prenant un plus grand nombre de variables internes, et donc de modules de codage de base, au niveau des étages de codage de q- ème niveau, avec q≥ 2. It should be noted that such a symmetrical structure is however not mandatory. In particular, it is possible to define an asymmetrical structure by using unsymmetrical permutations in the first and second stages of permutation of i-th level (ie π 1 ≠ π 0 _1 ), a number of different coding modules in the first and second level of i-th level coding, and / or coding modules implementing different basic codes in the first and second levels of i-th level coding, for i≥ 1. It is also possible to generalize the structure by taking a larger number of internal variables, and thus basic coding modules, at the level of the q-th level coding stages, with q≥2.
La figure 3 illustre ainsi un exemple de dispositif de codage mettant en œuvre :  FIG. 3 thus illustrates an example of a coding device implementing:
- un étage de codage de premier niveau 31, comprenant des modules de codage de base B0, Bl, etc ; a first level coding stage 31, comprising basic coding modules B0, B1, etc .;
deux étages de permutation de premier niveau 321, 322, de part et d'autre de l'étage de codage de premier niveau 31 ;  two stages of first level switching 321, 322, on either side of the first level coding stage 31;
deux étages de codage de deuxième niveau 331, 332, de part et d'autre de l'ensemble de premier niveau formé par l'étage de codage de premier niveau 31 et les deux étages de permutation de premier niveau 321, 322, dont un premier étage comprenant des modules de codage de base AO, Al, etc, et un deuxième étage comprenant des modules de codage de base CO, Cl, etc ;  two second level coding stages 331, 332, on either side of the first level set formed by the first level coding stage 31 and the two first level permutation stages 321, 322, one of which first stage comprising basic coding modules A0, A1, etc., and a second stage comprising basic coding modules CO, C1, etc .;
deux étages de permutation de deuxième niveau 341, 342, de part et d'autre de l'ensemble formé par l'ensemble de premier niveau et les deux étages de codage de deuxième niveau two levels of second level permutation 341, 342, on either side of the set formed by the first level set and the two second level coding stages
331, 332 ; 331, 332;
deux étages de codage de troisième niveau 351, 352 de part et d'autre de l'ensemble de deuxième niveau formé par l'ensemble de premier niveau, les deux étages de codage de deuxième niveau 331, 332, et les deux étages de permutation de deuxième niveau 341, 342, dont un premier étage comprenant des modules de codage de base DO, Dl, etc, et un deuxième étage comprenant des modules de codage de base EO, El, etc ;  two third level coding stages 351, 352 on either side of the second level set formed by the first level set, the two second level coding stages 331, 332, and the two permutation stages second level stage 341, 342, including a first stage comprising basic coding modules DO, D1, etc., and a second stage comprising basic coding modules E0, E1, etc .;
deux étages de permutation de troisième niveau 361, 362, de part et d'autre de l'ensemble formé par l'ensemble de deuxième niveau et les deux étages de codage de troisième niveau 351, 352 ;  two third-level permutation stages 361, 362, on either side of the set formed by the second-level set and the two third-level coding stages 351, 352;
- deux étages de codage de quatrième niveau 371, 372 de part et d'autre de l'ensemble de troisième niveau formé par l'ensemble de deuxième niveau, les deux étages de codage de troisième niveau 351, 352, et les deux étages de permutation de troisième niveau 361, 362. two levels of fourth level coding 371, 372 on either side of the third level set formed by the second level set, the two third level coding stages 351, 352, and the two stages of third level permutation 361, 362.
On note toutefois qu'une telle augmentation du nombre de variables internes complexifie la structure et rend moins performant un éventuel décodage itératif par propagation de probabilités.  It should be noted, however, that such an increase in the number of internal variables makes the structure more complex and renders it less possible to perform iterative decoding by propagation of probabilities.
On note par ailleurs, en revenant à la figure 2, que comme les modules de codage de base de l'étage de codage de premier niveau 21 mettent chacun en œuvre un code de Hamming (8, 4, 4) de poids tous multiples de 4, le code équivalent de l'étage de codage de premier niveau 21 est de poids multiple de 4. Par soustraction, l'ensemble des variables internes dQ_2k et o-2¾ formant aussi un code de poids multiple de 4, chaque mot de code formé par les bits d'information χ0_^_^ et les bits de redondance r0_(fe_1-) est de poids multiple de 4 et donc le code global obtenu, dit Cortex-Compact, est aussi auto-dual de type-I l. It will also be noted, referring to FIG. 2, that since the basic coding modules of the first level coding stage 21 each implement a Hamming code (8, 4, 4) of all-multiples weight of 4, the equivalent code of the first level coding stage 21 is of weight multiple of 4. By subtraction, the set of internal variables d Q 2 k and o 2¾ also forming a weight code multiple of 4, each code word formed by the bits of information χ 0 _ ^ _ ^ and the redundancy bits r 0 _ ( fe _ 1 - ) is of multiple weight of 4 and therefore the overall code obtained, called Cortex-Compact, is also auto-dual type-I l.
On note finalement que l'existence d'un code global n'est assurée que si l'on peut résoudre le système d'équations liant toutes les variables entre-elles, par l'intermédiaire des codes de base. De façon équivalente, cela signifie que l'on peut déterminer une matrice génératrice du code global dont le déterminant est non nul (par exemple égal à 1 (modulo 2) dans le cas binaire), ou encore que la matrice génératrice comprend, sous sa forme systématique, une matrice identité et une matrice de passage des données source aux données de redondance inversible.  Finally, we note that the existence of a global code is ensured only if we can solve the system of equations linking all the variables together, through the basic codes. Equivalently, this means that it is possible to determine a generator matrix of the global code whose determinant is non-zero (for example equal to 1 (modulo 2) in the binary case), or that the generator matrix comprises, under its systematic form, an identity matrix, and a matrix for passing source data to invertible redundancy data.
A partir de la structure illustrée en figure 2, il est ainsi possible de déterminer un système d'équations. En effet, un tel graphe de Tanner comprend des variables d'entrée, correspondant par exemple aux bits d'information, et des variables de sortie, correspondant par exemple aux bits de redondance, les bits de redondance étant liés aux bits d'information par l'intermédiaire de contraintes et de permutations.  From the structure illustrated in Figure 2, it is thus possible to determine a system of equations. Indeed, such a Tanner graph comprises input variables, corresponding for example to the information bits, and output variables, corresponding for example to the redundancy bits, the redundancy bits being linked to the information bits by through constraints and permutations.
Ces contraintes peuvent être de deux types :  These constraints can be of two types:
- les contraintes de type égalité, correspondant à une répétition de la variable connectée à cette contrainte ;  the constraints of the equality type, corresponding to a repetition of the variable connected to this constraint;
- les contraintes de type addition modulo 2, correspondant à une contrainte logique de type « ou-exclusif ».  the modulo 2 addition type constraints, corresponding to a "or exclusive" type logic constraint.
Ces contraintes et permutations permettent de définir des relations algébriques, et de calculer une matrice génératrice permettant de réaliser le codage. En particulier, le calcul des données de redondance doit se faire par le pré-calcul de la matrice de passage, qui peut être construite à partir du système d'équations.  These constraints and permutations make it possible to define algebraic relations, and to compute a generator matrix making it possible to perform the coding. In particular, the calculation of the redundancy data must be done by the pre-calculation of the transition matrix, which can be constructed from the system of equations.
Ainsi, un codeur selon l'invention prend en entrée des données source X, sous la forme de paquets ou d'un flux continu, et délivre en sortie au moins un mot de code, comprenant les données source X et des données de redondance . Ces mots de code peuvent être véhiculés dans un canal de transmission ou stockées sur un support, puis décodées par un décodeur selon l'invention.  Thus, an encoder according to the invention takes input source data X, in the form of packets or a continuous stream, and outputs at least one code word, comprising the source data X and redundancy data. These code words can be conveyed in a transmission channel or stored on a medium, and then decoded by a decoder according to the invention.
En particulier, un tel décodeur peut également utiliser un graphe de Tanner tel qu'illustré en figure 2, pour corriger des erreurs de type effacement notamment.  In particular, such a decoder can also use a Tanner graph as illustrated in FIG. 2, to correct erase-type errors in particular.
Par exemple, comme illustré en figure 4, le décodeur reçoit en entrée au moins un mot de code, comprenant les données source X et des données de redondance R éventuellement entachées d'erreur, et délivre une estimation des données source X.  For example, as illustrated in FIG. 4, the decoder receives as input at least one codeword, comprising the source data X and redundancy data R possibly corrupted with error, and delivers an estimate of the source data X.
Un tel procédé de décodage met en œuvre, de façon symétrique au codage : une étape 41 de décodage de premier niveau, notée DCN1, recevant en entrée un mot de code formé de données source X et/ou de redondance , après permutations, et délivrant en sortie une estimation des données source X, après permutations. Une telle étape de décodage de premier niveau met en œuvre au moins deux modules de décodage de base, connectés d'une part à toutes les variables associées aux données source et aux données de redondance du mot de code, et d'autre part à des variables internes ; Such a decoding method implements, symmetrically to the coding: a first-level decoding step 41, denoted DC N1 , receiving as input a code word formed of source data X and / or redundancy, after permutations, and outputting an estimate of the source data X, after permutations. Such a first-level decoding step implements at least two basic decoding modules, connected on the one hand to all the variables associated with the source data and the redundancy data of the codeword, and on the other hand to internal variables;
une première 421 et une deuxième 422 étapes de décodage de deuxième niveau, notées respectivement DCN2 1 et DCN2 2, mettant chacune en œuvre au moins deux modules de décodage de base connectés uniquement aux variables internes de l'étape 41 de décodage de premier niveau DCN1, après permutations ; a first 421 and a second 422 second level decoding steps, respectively denoted DC N2 1 and DC N2 2 , each implementing at least two basic decoding modules connected only to the internal variables of the first decoding step 41 DC level N1 , after permutations;
une première 431 et une deuxième 432 étapes de permutation de premier niveau, notées respectivement π0 et π . La première étape de permutation 431 π0 est mise en œuvre entre l'étape de décodage de premier niveau 41 DCNi et la première étape de décodage de deuxième niveau 421 DCN2,i, et reçoit donc, en entrée, d'une part le mot de code formé des données source X et/ou de redondance R et d'autre part les données d'entrée et des données de sortie obtenues à partir de la première étape de décodage de deuxième niveau 421 DCN2ji. La deuxième étape de permutation 432 π1 est mise en œuvre entre l'étape de décodage de premier niveau 41 DCNi et la deuxième étape de décodage de deuxième niveau 422 DCN2 2 et délivre donc, en sortie, d'une part une estimation des données source et d'autre part des données d'entrée et des données de sortie à la deuxième étape de décodage de deuxième niveau 422 DCN2 2. a first 431 and a second 432 first level permutation steps, denoted respectively π 0 and π. The first permutation step 431 π 0 is implemented between the first level decoding step 41 DC N i and the second second level decoding step 421 DC N2 , i, and thus receives, as input, a part of the code word formed by the source data X and / or redundancy R and, secondly, the input data and output data obtained from the first second level decoding step 421 DC N2j i. The second permutation step 432 π 1 is implemented between the first level decoding step 41 DC N i and the second second level decoding step 422 DC N2 2 and therefore outputs, on the one hand, a estimating the source data and secondly input data and output data at the second second level decoding step 422 DC N2 2 .
En particulier, on note que chaque module de décodage met en œuvre un code de base auto-dual, susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible.  In particular, it should be noted that each decoding module implements an auto-dual basic code, which can be represented by a generating matrix comprising, in its systematic form, an identity matrix and an input data passage matrix. to the invertible output data.
Le fonctionnement de ce décodeur est similaire à celui du codeur décrit ci-dessus. Il n'est donc pas expliqué plus en détails. En particulier, le décodage peut être mis en œuvre en utilisant un algorithme de type « Belief Propagation », selon lequel les données reçues sont celles du mot de code reçu c = (x, r), éventuellement bruité, sous forme d'un vecteur de probabilités ou de métriques (par exemple de type logarithme de rapport de vraisemblance ou LLR: Log (~~))· Les valeurs de ce vecteur associées aux variables d'entrée et de sorties du graphe de Tanner sont propagées entre les nœuds du graphe, qui sont les codes de base de la structure.  The operation of this decoder is similar to that of the encoder described above. It is therefore not explained in more detail. In particular, the decoding can be implemented using a "Belief Propagation" type algorithm, according to which the received data are those of the received code word c = (x, r), possibly noisy, in the form of a vector probabilities or metrics (for example log likelihood ratio or LLR: Log (~~)) · The values of this vector associated with the input and output variables of the Tanner graph are propagated between the nodes of the graph , which are the basic codes of the structure.
5.2 Construction et mise en œuvre du code de Golay (24, 12, 8) On présente désormais, en relation avec les figures 5A et 5B, la construction et l'utilisation d'un code de Golay (24, 12, 8) sous forme Cortex-Compact selon l'invention. 5.2 Construction and implementation of the Golay code (24, 12, 8) The construction and use of a Golay code (24, 12, 8) in Cortex-Compact form according to the invention is now presented in relation to FIGS. 5A and 5B.
Le graphe de Tanner représentatif du dispositif de codage illustré en figure 5A comprend : un étage de codage de premier niveau 51, comprenant neuf modules de codage de base notés B0 à B8 ;  The Tanner graph representative of the coding device illustrated in FIG. 5A comprises: a first level coding stage 51, comprising nine basic coding modules denoted B0 to B8;
un premier étage de codage de deuxième niveau 521, comprenant trois modules de codage de base notés AO à A2 ;  a first level second coding stage 521, comprising three basic coding modules denoted AO to A2;
un deuxième étage de codage de deuxième niveau 522, comprenant trois modules de codage de base notés C0 à C2 ;  a second second level coding stage 522, comprising three basic coding modules denoted C0 to C2;
- un premier étage de permutation de premier niveau 531 ;  a first stage of first level permutation 531;
un deuxième étage de permutation de premier niveau 532.  a second stage of first level permutation 532.
Chaque module de codage de base met en œuvre un code de Hamming (8,4,4), suivi d'une permutation locale prenant par exemple en entrée un paquet de quatre bits aux positions d'indice {0,1,2,3), et délivrant en sortie ces mêmes bits aux positions d'indice {0,2,1,3) respectivement. On note qu'une autre permutation locale pourrait être mise en œuvre, comme la permutation locale prenant en entrée un paquet de quatre bits aux positions d'indice {0,1,2,3), et délivrant en sortie ces mêmes bits aux positions d'indice {0,3,1,2) respectivement.  Each basic coding module implements a Hamming code (8.4.4), followed by a local permutation taking, for example, a four-bit packet at the index positions {0,1,2,3 ), and outputting these same bits at index positions {0,2,1,3) respectively. It should be noted that another local permutation could be implemented, such as the local permutation taking a four-bit packet at the index positions {0,1,2,3), and outputting these same bits to the positions of index {0,3,1,2) respectively.
Par ailleurs, les douze bits d'information (source), notés x0 à xllt sont associés à des variables d'entrée du graphe de Tanner, et les douze bits de redondance, notés r0 à r l sont associés à des variables de sortie du graphe de Tanner. Moreover, the twelve bits of information (source), denoted x 0 to x llt, are associated with input variables of the Tanner graph, and the twelve redundancy bits, denoted r 0 to r 1, are associated with variables output of the Tanner graph.
Les bits d'information entrent par paquets de quatre bits sur le premier étage de permutation de premier niveau 531. Le premier étage de permutation de premier niveau 531 est donc connecté à des variables d'entrée associées à un premier ensemble des données source et de redondance, ici les bits d'information x0 à x l. Le premier étage de permutation de premier niveau 531 est également connecté, en entrée, aux entrées et aux sorties du premier étage de codage de deuxième niveau 521. Plus précisément, chacun des trois modules de codage de base AO, Al, A2 du premier étage de codage de deuxième niveau 521 reçoit en entrée un paquet de quatre bits, notés respectivement d0 à d3, d4 à d7, et d8 à dllt et délivre en sortie un paquet de quatre bits, notés respectivement f0 à f3, f4 à f7, et f8 à /11 conformément au code de base de Hamming (8, 4, 4). Chaque paquet de quatre bits f0 à f3, f4 à f7, et f8 à fllt subit une permutation locale {0,1,2,3)→ {0,2,1,3), comme illustré en figure 5A. Le premier étage de permutation de premier niveau 531 est donc connecté, en entrée, aux 12 bits d'information x0 à x l et à 24 bits internes d0 à d l et f0 à f l associés à des variables internes. Selon cet exemple, on dispose donc d'un module de codage de base pour chaque paquet de quatre bits associés à des variables d'entrée. Le premier étage de permutation de premier niveau 531 met en œuvre une permutation 4-cyclique de longueur l = 36, telle que, en notant /' la position d'un bit en entrée et π0 (ί) la position de ce même bit en sortie, on a : The information bits are in four-bit packets on the first level first permutation stage 531. The first level first permutation stage 531 is therefore connected to input variables associated with a first set of source data and redundancy, here the information bits x 0 to x l . The first level first permutation stage 531 is also connected, at the input, to the inputs and outputs of the first second level coding stage 521. More specifically, each of the three basic coding modules AO, A1, A2 of the first stage second level coding 521 receives as input a packet of four bits, respectively denoted d 0 to d 3 , d 4 to d 7 , and d 8 to d 11t and outputs a packet of four bits, respectively denoted f 0 to f 3 , f 4 to f 7 , and f 8 to / 11 according to the Hamming base code (8, 4, 4). Each packet of four bits f 0 to f 3, f 4 f 7, f 8 and f llt undergoes local permutation {0,1,2,3) → {0,2,1,3) as shown in Figure 5A. The first level first permutation stage 531 is thus connected, as input, to the 12 information bits x 0 to x 1 and to 24 internal bits d 0 to d 1 and f 0 to f 1 associated with internal variables. According to this example, there is therefore a basic coding module for each four-bit packet associated with input variables. The first first-level permutation stage 531 implements of 4-cyclic permutation of length l = 36, such that, by selecting / 'the position of an input bit 0 and π (ί) the position of that bit at the exit, we have:
i≡ 0 (mod 4) : π0 (ί) = i— 2 (mod l) i≡ 0 (mod 4): π 0 (ί) = i- 2 (mod l)
i≡ 1 (mod 4) : π0 (ί) = i— 2 (mod l) i≡ 1 (mod 4): π 0 (ί) = i- 2 (mod l)
i≡ 2 (mod 4) : π0 (ί) = i + 2 (mod l) i≡ 2 (mod 4): π 0 (ί) = i + 2 (mod l)
i≡ 3 (mod 4) : π0 (ί) = i + 2 (mod l) i≡ 3 (mod 4): π 0 (ί) = i + 2 (mod l)
En variante, d'autres permutations pourraient être mises en œuvre, comme des permutations affines associant à un bit/symbole d'entrée à la position i, un même bit/symbole à la position a * i + b, avec a un nombre premier avec la longueur (ou l'ordre) l de la permutation mise en œuvre par le premier ou le deuxième étage de permutation de premier niveau, et b un entier tel que b < a.  As a variant, other permutations could be implemented, such as affine permutations associating a bit / input symbol with the position i, with the same bit / symbol at the position a * i + b, with a prime number with the length (or order) 1 of the permutation implemented by the first or second stage of first level permutation, and b an integer such that b <a.
De ce fait, le premier étage de permutation de premier niveau 531 délivre les 12 bits d'information x0 à x l et les 24 bits internes d0 à d l et f0 à f l permutés à l'étage de codage de premier niveau. As a result, the first level first permutation stage 531 outputs the 12 information bits x 0 to x 1 and the 24 internal bits d 0 to d 1 and f 0 to f 1 are exchanged at the first coding stage. level.
Plus précisément, chaque module de codage de base de l'étage de codage de premier niveau 531 reçoit deux bits d'information, et deux bits d'entrée ou de sortie d'un module de codage de base du premier étage de codage de deuxième niveau 521, par l'intermédiaire du premier étage de permutation de premier niveau 531.  More specifically, each basic coding module of the first level coding stage 531 receives two information bits, and two input or output bits of a basic coding module of the first coding second stage. level 521, through the first level first permutation stage 531.
Par exemple, le premier module de codage de base B0 reçoit les bits d'entrée d0 et dlt et les bits de sortie f9 et fllt le deuxième module de codage de base Bl reçoit les bits de sortie f0 et f2, et les bits d'information x2 et x3, le troisième module de codage de base B2 reçoit les bits d'entrée d2 et d3 et les bits d'information x4 et x5, le quatrième module de codage de base B3 reçoit les bits de sortie fx et f3, et les bits d'entrée d4 et d5, le cinquième module de codage de base B4 reçoit les bits de sortie f4 et f6, et les bits d'information x6 et x7, le sixième module de codage de base B5 reçoit les bits d'entrée d6 et d7, et les bits d'information x8 et x9, le septième module de codage de base B6 reçoit les bits de sortie f5 et f7, et les bits d'entrée d8 et d9, le huitième module de codage de base B7 reçoit les bits d'information x10 et xllt le les bits de sortie f8 et fw, et le neuvième module de codage de base B8 reçoit les bits d'information x0 et xlt et les bits d'entrée d10 et d l. For example, the first basic coding module B0 receives the input bits d 0 and d lt and the output bits f 9 and f 11t the second basic coding module B1 receives the output bits f 0 and f 2 , and the information bits x 2 and x 3 , the third basic coding module B2 receives the input bits d 2 and d 3 and the information bits x 4 and x 5 , the fourth coding module of base B3 receives the output bits f x and f 3 , and the input bits d 4 and d 5 , the fifth basic coding module B4 receives the output bits f 4 and f 6 , and the information bits x 6 and x 7 , the sixth basic coding module B5 receives the input bits d 6 and d 7 , and the information bits x 8 and x 9 , the seventh basic coding module B 6 receives the bits of output f 5 and f 7 , and the input bits d 8 and d 9 , the eighth base coding module B7 receives the information bits x 10 and x 11t the the output bits f 8 and f w , and the ninth basic coding module B8 receives the information bits x 0 and x lt and the input bits d 10 and d 1 .
Chaque module de codage de base de l'étage de codage de premier niveau 51 reçoit en entrée un paquet de quatre bits et délivre en sortie un paquet de quatre bits conformément au code de base de Hamming (8,4,4). Les bits en sortie du module de codage subissent une permutation locale, dans un module de permutation locale non illustré, selon la permutation {0,1,2,3}→ {0,2,1,3}. Les sorties de l'étage de codage de premier niveau 51 sont connectées au deuxième étage de permutation de premier niveau 532. Ce deuxième étage de permutation de premier niveau 532 met en œuvre une permutation π1 inverse à la permutation mise en œuvre par le premier étage de permutation de premier niveau 531, telle que π1 = π0 _1. Ce deuxième étage de permutation de premier niveau 532 est connecté, en sortie, d'une part à des variables de sortie associées à un deuxième ensemble des données source et de redondance, ici les bits de redondance r0 à rllt et d'autre part aux entrées et aux sorties du deuxième étage de codage de deuxième niveau 522. Plus précisément, chacun des trois modules de codage de base CO, Cl, C2 du deuxième étage de codage de deuxième niveau 522 reçoit en entrée un paquet de quatre bits, notés respectivement d12 à d15, d16 à d19, et d20 à d23, et délivre en sortie un paquet de quatre bits, notés respectivement f12 à f15, f16 à f19, et f20 à f23, conformément au code de base de Hamming (8,4,4). Chaque paquet de quatre bits f12 à f15, f16 à f19, et f20 à f23 subit une permutation locale {0,1,2,3)→ {0,2,1,3). Le deuxième étage de permutation de premier niveau 532 est donc connecté, en sortie, aux 12 bits de redondance r0 à r l et à 24 bits internes d12 à d23 et f12 à f23 associés à des variables internes. Each basic coding module of the first level coding stage 51 receives as input a four bit packet and outputs a four bit packet in accordance with the Hamming base code (8.4.4). The bits at the output of the coding module undergo a local permutation, in a local permutation module not illustrated, according to the permutation {0,1,2,3} → {0,2,1,3}. The outputs of the first level coding stage 51 are connected to the first level first permutation stage 532. This second level of first level permutation 532 implements a permutation π 1 that is the inverse of the permutation implemented by the first level. first level permutation stage 531, such that π 1 = π 0 _1 . This second top-level permutation stage 532 is connected, at the output, on the one hand to output variables associated with a second set of source data and redundancy, here the redundancy bits r 0 to r llt and other at the inputs and outputs of the second second level coding stage 522. More specifically, each of the three basic coding modules CO, C1, C2 of the second second level coding stage 522 receives as input a four bit packet, denoted respectively d 12 to d 15 , d 16 to d 19 , and d 20 to d 23 , and outputs a packet of four bits, denoted respectively f 12 to f 15 , f 16 to f 19 , and f 20 to f 23 , according to the basic code of Hamming (8,4,4). Each four-bit packet f 12 to f 15, f 16 to f 19 and f 20 to f 23 undergoes local permutation {0,1,2,3) → {0,2,1,3). The first level first permutation stage 532 is thus connected, at the output, to the 12 redundancy bits r 0 to r 1 and to 24 internal bits d 12 to d 23 and f 12 to f 23 associated with internal variables.
En particulier, si l'on considère le module de codage de base B8 par exemple, les variables internes associées aux bits d10, dllt d22 et d23 sont liées par des contraintes aux bits d'information x0 et x1 et aux bits de redondance r0 et rlt et disposent donc d'informations relatives au canal, ce qui permet de favoriser le décodage. In particular, if we consider the basic coding module B8 for example, the internal variables associated with the bits d 10 , d 11 d 22 and d 23 are linked by constraints to the information bits x 0 and x 1 and the redundancy bits r 0 and r lt and therefore have information on the channel, which promotes decoding.
A partir d'un tel graphe de Tanner, il est possible d'écrire un système d'équations tenant compte des contraintes que doivent respecter les bits d'information et de redondance d'un mot pour être un mot du code global.  From such a Tanner graph, it is possible to write a system of equations taking into account the constraints that the bits of information and redundancy of a word must respect to be a word of the global code.
En particulier, on rappelle qu'un code global peut être représenté par une telle structure si le pré-calcul du déterminant de la matrice génératrice obtenue à partir du système d'équations réunissant toutes les équations booléennes de la structure est non-nul.  In particular, it is recalled that a global code can be represented by such a structure if the pre-calculation of the generator matrix determinant obtained from the system of equations combining all the Boolean equations of the structure is non-zero.
Ainsi, à partir du graphe de Tanner illustré en figure 5A, il est possible d'écrire et de résoudre un système de 60 équations (4 équations obtenues à partir de chaque module de codage de base), dans lequel les inconnues sont les données associées aux variables internes et les données de redondance  Thus, from the Tanner graph illustrated in FIG. 5A, it is possible to write and solve a system of 60 equations (4 equations obtained from each basic coding module), in which the unknowns are the associated data. to internal variables and redundancy data
Par exemple, les équations obtenues à partir du module de codage de base AO du premier étage de codage de deuxième niveau sont telles que : d1 + d2 + d3 + f0 = 0, d0 + d2 + d3 + f2 = 0, d0 + d1 + d3 + f = 0 et d0 + d1 + d2 + f3 = 0. Les équations obtenues à partir du module de codage de base BO de l'étage de codage de premier niveau sont telles que : f9 + n + f21 + x3 = 0, f9 + n + f23 + x2 = 0, d12 + f11 + x2 + x3 = 0 et d13 + f9 + x2 + x3 = 0. Les équations obtenues à partir du module de codage de base CO du deuxième étage de codage de deuxième niveau sont telles que : dlt + d13 + d15 + f12 = 0, dlt + d12 + d15 + f14 = 0, d12 + d13 + d15 + f13 = 0 et d l + d12 + d13 + f15 = 0. For example, the equations obtained from the basic encoding module AO of the first level of second level coding are such that: d 1 + d 2 + d 3 + f 0 = 0, d 0 + d 2 + d 3 + f 2 = 0, d 0 + d 1 + d 3 + f = 0 and d 0 + d 1 + d 2 + f 3 = 0. The equations obtained from the basic coding module BO of the coding stage first level are such that: f 9 + n + f 21 + x 3 = 0, f 9 + n + f 23 + x 2 = 0, d 12 + f 11 + x 2 + x 3 = 0 and d 13 + f 9 + x 2 + x 3 = 0. The equations obtained from the basic coding module CO of the second stage of second-level coding are such that: d lt + d 13 + d 15 + f 12 = 0, d lt + d 12 + d 15 + f 14 = 0, d 12 + d 13 + d 15 + f 13 = 0 and d l + d 12 + d 13 + f 15 = 0.
On peut ainsi « pré-calculer » une matrice de passage permettant de déterminer les bits de redondance à partir des bits d'information (également appelée « matrice de transfert »).  It is thus possible to "pre-calculate" a passage matrix making it possible to determine the redundancy bits from the information bits (also called "transfer matrix").
Lors de la construction du code, on définit par exemple le code de base que l'on souhaite utiliser dans les modules de codage de base, ce qui permet de définir le nombre de variables internes. On note que plus le nombre de variables internes est élevé, plus le code global obtenu est puissant. En ajoutant à ces variables internes le nombre de variables d'entrée associées à des données source, on obtient le nombre d'entrées de l'étage de codage de premier niveau. On peut ainsi définir le nombre de modules de codage de base à utiliser dans l'étage de codage de premier niveau.  During the construction of the code, for example, the basic code that one wishes to use in the basic coding modules is defined, which makes it possible to define the number of internal variables. Note that the higher the number of internal variables, the more powerful the overall code obtained. By adding to these internal variables the number of input variables associated with source data, the number of entries of the first-level coding stage is obtained. It is thus possible to define the number of basic coding modules to be used in the first level coding stage.
La matrice génératrice du code de Golay obtenue à partir du graphe de la figure 5A, composée d'une matrice identité et de la matrice de passage des données source aux données de redondance, est illustrée en figure 5B, où les ronds blancs correspondent à 0 et les ronds noirs correspondent à 1.  The generator matrix of the Golay code obtained from the graph of FIG. 5A, composed of an identity matrix and of the matrix for moving from the source data to the redundancy data, is illustrated in FIG. 5B, where the white circles correspond to 0. and the black circles correspond to 1.
5.3 Construction et mise en œuvre d'un code auto-dual (72, 36, 12)  5.3 Construction and implementation of an auto-dual code (72, 36, 12)
On présente désormais, en relation avec les figures 6A et 6B, la construction et l'utilisation d'un code auto-dual (72, 36, 12) de type-ll sous forme Cortex-Compact selon l'invention.  The construction and use of an auto-dual code (72, 36, 12) of type-II in the Cortex-Compact form according to the invention is now presented in relation with FIGS. 6A and 6B.
Le graphe de Tanner représentatif du dispositif de codage illustré en figure 6A comprend : un étage de codage de premier niveau 61, comprenant 27 modules de codage de base notés BO à B26 ;  The Tanner graph representative of the coding device illustrated in FIG. 6A comprises: a first level coding stage 61, comprising 27 basic coding modules denoted BO to B26;
un premier étage de codage de deuxième niveau 621, comprenant 9 modules de codage de base notés AO à A8 ;  a first second level coding stage 621, comprising 9 basic coding modules denoted A0 to A8;
- un deuxième étage de codage de deuxième niveau 622, comprenant 9 modules de codage de base notés CO à C8 ;  a second second-level coding stage 622, comprising 9 basic coding modules denoted CO to C8;
un premier étage de permutation de premier niveau 631 ;  a first level permutation first stage 631;
un deuxième étage de permutation de premier niveau 632.  a second stage of first level permutation 632.
Selon l'exemple illustré, chaque module de codage de base met en œuvre un code de Hamming (8,4,4), suivi :  According to the illustrated example, each basic coding module implements a Hamming code (8.4.4), followed by:
pour les modules de codage de base du premier étage de codage de deuxième niveau 621, pas de permutation locale (ou une permutation locale identité ({0,1,2,3)→ {0,1,2,3}),  for the basic coding modules of the first second level coding stage 621, no local permutation (or a local permutation identity ({0,1,2,3) → {0,1,2,3}),
pour les modules de codage de base de l'étage de codage de premier niveau 61, d'une permutation locale prenant en entrée un paquet de quatre bits aux positions d'indice {0,1,2,3), et délivrant en sortie ces mêmes bits aux positions d'indice {0,1,3,2) respectivement ({0,1,2,3)→ {0,1,3,2)), for the basic coding modules of the first level coding stage 61, a local permutation taking as input a four bit packet at the index positions {0,1,2,3), and outputting these same bits at positions of index {0,1,3,2) respectively ({0,1,2,3) → {0,1,3, 2)),
pour les modules de codage de base du deuxième étage de codage de deuxième niveau 622, d'une permutation locale prenant en entrée un paquet de quatre bits aux positions d'indice {0,1,2,3), et délivrant en sortie ces mêmes bits aux positions d'indice {0,2,1,3) respectivement ({0,1,2,3)→ {0,2,1,3)).  for the basic coding modules of the second second-level coding stage 622, a local permutation taking a four-bit packet at the index positions {0,1,2,3), and outputting these same bits at index positions {0,2,1,3) respectively ({0,1,2,3) → {0,2,1,3)).
Selon un deuxième exemple, non illustré, chaque module de codage de base met en œuvre un code de Hamming (8,4,4), suivi d'une permutation locale prenant en entrée un paquet de quatre bits aux positions d'indice {0,1,2,3), et délivrant en sortie ces mêmes bits aux positions d'indice {3,0,2,1) respectivement.  According to a second example, not illustrated, each basic coding module implements a Hamming code (8.4.4), followed by a local permutation taking as input a four-bit packet at the index positions {0 , 1,2,3), and outputting these same bits at index positions {3,0,2,1) respectively.
Par ailleurs, les 36 bits d'information (source), notés x0 à x35, sont associés à des variables d'entrée du graphe de Tanner, et les 36 bits de redondance, notés r0 à r35 sont associés à des variables de sortie du graphe de Tanner. Moreover, the 36 information bits (source), denoted x 0 to x 35 , are associated with input variables of the Tanner graph, and the 36 redundancy bits, denoted r 0 to r 35 are associated with output variables of the Tanner graph.
Les bits d'information entrent par paquets de quatre bits sur le premier étage de permutation de premier niveau 631. Le premier étage de permutation de premier niveau 631 est également connecté, en entrée, aux entrées et aux sorties du premier étage de codage de deuxième niveau 621. Le premier étage de permutation de premier niveau 631 est donc connecté, en entrée, aux 36 bits d'information et à 72 bits internes.  The information bits are in four-bit packets on the first-level first-pass 631 stage. The first-level first-pass 631 stage is also connected, as input, to the inputs and outputs of the first-second coding stage. Level 621. The first level first permutation stage 631 is thus connected, as input, to the 36 information bits and to the internal 72 bits.
Selon l'exemple illustré, le premier étage de permutation de premier niveau 631 met en œuvre une permutation 4-cyclique, telle que, en notant /' la position d'un bit en entrée et π0(ί) la position de ce même bit en sortie : According to the illustrated example, the first first-level permutation stage 631 implements a 4-cyclic permutation, such that, by noting / ' the position of a bit at the input and π 0 (ί) the position of this same bit. output bit:
( π0(ί) = 5 + i (mod 108) si i≡ 0(mod 4) 0 (ί) = 5 + i (mod 108) if i≡ 0 (mod 4)
7T0(j) = -18 + i (mod 108) si i≡ l(mod 4) 7T 0 (j) = -18 + i (mod 108) if i≡ l (mod 4)
π0(ί) = 18 + i (mod 108) si i≡ 2(mod 4) π 0 (ί) = 18 + i (mod 108) if i≡ 2 (mod 4)
7T0(j) = -5 + i (mod 108) si i≡ 3(mod 4) 7T 0 (j) = -5 + i (mod 108) if i≡ 3 (mod 4)
Les bits obtenus après permutations sont délivrés à l'étage de codage de premier niveau The bits obtained after permutations are delivered to the first level coding stage
61. 61.
Selon le deuxième exemple, non illustré, le premier étage de permutation de premier niveau 631 met en œuvre une permutation affine de longueur l = 108, telle que, en notant /' la position d'un bit en entrée et π0(ί) la position de ce même bit en sortie, on a n0 (i) = 7i(mod 108), et délivre les bits permutés à l'étage de codage de premier niveau 61. According to the second example, not illustrated, the first level of first level permutation 631 implements an affine permutation of length l = 108, such that, by noting / ' the position of an input bit and π 0 (ί) the position of this same bit at the output, 0 (i) = 7i (mod 108), and delivers the permutated bits to the first level coding stage 61.
Selon l'exemple illustré, chaque module de codage de base de l'étage de codage de premier niveau 61 reçoit en entrée un paquet de quatre bits et délivre en sortie un paquet de quatre bits conformément au code de base de Hamming (8,4,4), après permutation locale {0,1,2,3)→ {0,1,3,2). Les sorties de l'étage de codage de premier niveau 61 sont connectées au deuxième étage de permutation de premier niveau 632. Ce deuxième étage de permutation de premier niveau 632 met en œuvre une permutation π1 inverse à la permutation mise en œuvre par le premier étage de permutation de premier niveau 631, telle que π1 = π0 _1. Ce deuxième étage de permutation de premier niveau 532 est connecté, en sortie, d'une part aux bits de redondance r0 à r35, et d'autre part aux entrées et aux sorties du deuxième étage de codage de deuxième niveau 622. In the illustrated example, each basic coding module of the first-level coding stage 61 receives a four-bit packet as input and outputs a four-bit packet in accordance with the basic Hamming code (8.4 , 4), after local permutation {0,1,2,3) → {0,1,3,2). The outputs of the first level coding stage 61 are connected to the second first level permutation stage 632. This second first level permutation stage 632 implements a permutation π 1 that is the inverse of the permutation implemented by the first level 632. first level permutation stage 631, such that π 1 = π 0 _1 . This second top-level permutation stage 532 is connected, at the output, on the one hand the redundancy bits r 0 to r 35, and secondly to the inputs and outputs of the second level second coding stage 622.
A partir d'un tel graphe de Tanner, il est possible d'écrire un système d'équations tenant compte des contraintes que doivent respecter les bits d'information et de redondance d'un mot pour être un mot du code global.  From such a Tanner graph, it is possible to write a system of equations taking into account the constraints that the bits of information and redundancy of a word must respect to be a word of the global code.
Ainsi, à partir du graphe de Tanner illustré en figure 6A, il est possible d'écrire et de résoudre un système de 180 équations (4 équations par module de codage de base).  Thus, from the Tanner graph illustrated in FIG. 6A, it is possible to write and solve a system of 180 equations (4 equations per basic coding module).
La matrice génératrice du code auto-dual (72,36,12) de type-ll obtenue à partir du graphe de la figure 6A, composée d'une matrice identité et de la matrice de passage des données source aux données de redondance, est illustrée en figure 6B, où les ronds blancs correspondent à 0 et les ronds noirs correspondent à 1.  The generator matrix of the type-11 auto-dual code (72,36,12) obtained from the graph of FIG. 6A, composed of an identity matrix and the matrix for passing from the source data to the redundancy data, is illustrated in FIG. 6B, where the white circles correspond to 0 and the black circles correspond to 1.

Claims

REVENDICATIONS
1. Dispositif de codage correcteur d'erreurs, apte à mettre en œuvre un code correcteur d'erreurs global associant des données de redondance à des données source,  An error correction coding device capable of implementing a global error correction code associating redundancy data with source data,
ledit code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage desdites données source auxdites données de redondance inversible, said global correction code being capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix for passing said source data to said invertible redundancy data,
caractérisé en ce que ledit dispositif de codage comprend : characterized in that said coding device comprises:
deux étages de permutation de premier niveau, dont :  two stages of first-level permutation, of which:
o un premier étage de permutation de premier niveau (231 ; 321 ; 531 ; 631) connecté, en entrée, d'une part à des variables d'entrée associées à un premier ensemble desdites données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un premier étage de codage de deuxième niveau (221 ; 331 ; 521 ; 621), et o un deuxième étage de permutation de premier niveau (232 ; 322 ; 532 ; 632) connecté, en sortie, d'une part à des variables de sortie associées à un deuxième ensemble desdites données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un deuxième étage de codage de deuxième niveau (222 ; 332 ; 522 ; 622), ledit premier ensemble et ledit deuxième ensemble formant un mot de code, et un étage de codage de premier niveau (21 ; 31 ; 51 ; 61) connecté d'une part aux variables associées aux données de sortie dudit premier étage de permutation de premier niveau et d'autre part aux variables associées aux données d'entrée dudit deuxième étage de permutation de premier niveau,  a first level switching stage (231; 321; 531; 631) connected, as input, firstly to input variables associated with a first set of said source and / or redundancy data; and on the other hand to internal variables associated with input data and output data of a first second level coding stage (221; 331; 521; 621), and o a second first level permutation stage (232). ; 322; 532; 632) connected, on the output, on the one hand to output variables associated with a second set of said source and / or redundancy data, and on the other hand to internal variables associated with data of inputting and outputting data of a second second-level coding stage (222; 332; 522; 622), said first set and said second set forming a code word, and a first-level coding stage (21; 31; 51; 61) connected on the one hand to the variables associated with the data of e output of said first first level permutation stage and secondly variables associated with the input data of said second first level permutation stage,
chaque étage de codage comprenant au moins deux modules de codage de base mettant chacun en œuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. each coding stage comprising at least two basic coding modules each implementing a basic code that can be represented by a generator matrix comprising, in its systematic form, an identity matrix and an input data passage matrix to the invertible output data.
2. Dispositif de codage correcteur d'erreurs selon la revendication 1, caractérisé en ce qu'il comprend au moins deux étages de permutation de q-ème niveau, avec q un entier supérieur ou égal à 2, dont :  2. An error correcting coding device according to claim 1, characterized in that it comprises at least two permutation stages of q-th level, with q an integer greater than or equal to 2, of which:
un premier étage de permutation de q-ème niveau (341, 361) connecté, en entrée, à des variables internes associées aux données d'entrée et aux données de sortie d'un premier étage de codage de (q+1)- ème niveau (351, 371), et, en sortie, à des variables internes associées aux données d'entrée et aux données de sortie d'un premier étage de codage de q-ème niveau (331, 351) ; un deuxième étage de permutation de q-ème niveau connecté (342, 362), en entrée, à des variables internes associées aux données d'entrée et aux données de sortie d'un deuxième étage de codage de q-ème niveau (332, 352) et, en sortie, à des variables internes associées aux données d'entrée et aux données de sortie d'un deuxième étage de codage de (q+l)-ème niveau (352, 372). a first q-th level permutation stage (341, 361) connected, as input, to internal variables associated with the input data and the output data of a first coding stage of (q + 1) - th level (351, 371), and, at output, internal variables associated with the input data and the output data of a first level q-th level coding stage (331, 351); a second connected level switching level (342, 362) to internal variables associated with the input data and the output data of a second q-th level coding stage (332, 352) and, at the output, to internal variables associated with the input data and the output data of a second (q + 1) -th level coding stage (352, 372).
3. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 et 2, caractérisé en ce que chaque module de codage de base du ou desdits étages de codage de i- ème niveau comprend c entrées et c sorties, et en ce que chaque étage de permutation de i-ème niveau met en œuvre une permutation de type c-cyclique, avec /' et c des entiers supérieurs ou égaux à 1. An error correcting coding device according to any of claims 1 and 2, characterized in that each basic coding module of said one or more level coding stages comprises c inputs and outputs, and that each stage of permutation of i-th level implements a permutation of the type c-cyclic, with / ' and c of integers higher or equal to 1.
4. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 et 2, caractérisé en ce que chaque étage de permutation de i-ème niveau met en œuvre une permutation affine, avec i un entier supérieur ou égal à 1.  4. An error correcting coding device according to any one of claims 1 and 2, characterized in that each i-th level permutation stage implements an affine permutation, with i an integer greater than or equal to 1.
5. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 4, caractérisé en ce que le ou lesdits étages de codage de i-ème niveau comprennent chacun au moins deux modules de permutation locale, chaque module de permutation locale permutant les variables internes obtenues en sortie d'un module de codage de base, avec i un entier supérieur ou égal à 1.  5. An error correcting coding device according to any one of claims 1 to 4, characterized in that the at least one i-th level coding stage each comprise at least two local permutation modules, each local permutation module. permuting the internal variables obtained at the output of a basic coding module, with i an integer greater than or equal to 1.
6. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 5, caractérisé en ce que ledit dispositif présente une structure symétrique.  6. Error correcting coding device according to any one of claims 1 to 5, characterized in that said device has a symmetrical structure.
7. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 6, caractérisé en ce que le nombre de variables internes est deux fois supérieur au nombre de variables associées aux données source.  7. Error-correcting coding device according to any one of claims 1 to 6, characterized in that the number of internal variables is twice the number of variables associated with the source data.
8. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 7, caractérisé en ce que lesdits codes de base appartiennent au groupe comprenant :  8. An error correcting coding device according to any one of claims 1 to 7, characterized in that said basic codes belong to the group comprising:
un code de Hamming ;  a Hamming code;
un code identité ;  an identity code;
un code de Golay ;  a Golay code;
un code à répétition simple.  a simple repetition code.
9. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 8, caractérisé en ce que tous les modules de codage de base mettent en œuvre un code de base identique.  Error correction coding device according to one of Claims 1 to 8, characterized in that all the basic coding modules implement an identical basic code.
10. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 9, caractérisé en ce que l'ensemble desdits étages de codage et de permutation forme un graphe de Tanner, dont les entrées sont lesdites variables d'entrée associées à un premier ensemble desdites données source et de redondance, et les sorties sont lesdites variables de sortie associées à un deuxième ensemble desdites données source et de redondance. Error-correcting coding device according to any one of Claims 1 to 9, characterized in that all of said coding and permutation stages form a Tanner graph whose inputs are said associated input variables. to a first set said source and redundancy data, and the outputs are said output variables associated with a second set of said source and redundancy data.
11. Procédé de codage correcteur d'erreurs, apte à mettre en œuvre un code correcteur d'erreurs global associant des données de redondance à des données source,  11. An error correction coding method capable of implementing a global error correction code associating redundancy data with source data.
ledit code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage desdites données source auxdites données de redondance inversible, said global correction code being capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix for passing said source data to said invertible redundancy data,
caractérisé en ce que ledit procédé de codage met en œuvre : characterized in that said coding method implements:
deux étapes de permutation de premier niveau, dont :  two steps of first-level permutation, including:
o une première étape de permutation de premier niveau (131) recevant, en entrée, d'une part un premier ensemble desdites données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une première étape de codage de deuxième niveau (121), et  a first step of first-level permutation (131) receiving, on the input side, on the one hand a first set of said source and / or redundancy data, and on the other hand input data and output data obtained at from a first second level coding step (121), and
o une deuxième étape de permutation de premier niveau (132) délivrant, en sortie, d'une part un deuxième ensemble desdites données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une deuxième étape de codage de deuxième niveau (122),  a second step of first-level permutation (132) delivering, on the one hand, a second set of said source and / or redundancy data, and on the other hand input data and output data obtained at from a second second-level coding step (122),
ledit premier ensemble et ledit deuxième ensemble formant un mot de code, et une étape de codage de premier niveau (11) recevant les données de sortie de ladite première étape de permutation de premier niveau et délivrant des données d'entrée à ladite deuxième étape de permutation de premier niveau,  said first set and said second set forming a codeword, and a first level coding step (11) receiving the output data of said first first level permutation step and outputting input data to said second step of first level permutation,
chaque étape de codage mettant en œuvre au moins deux modules de codage de base mettant chacun en œuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. each coding step implementing at least two basic coding modules each implementing a basic code that can be represented by a generating matrix comprising, in its systematic form, an identity matrix and a data transmission matrix; input to the invertible output data.
12. Dispositif de décodage correcteur d'erreurs, apte à retrouver des données source à partir d'un mot de code reçu,  12. Error correction decoding device, able to retrieve source data from a received code word,
lesdites données source ayant été codées par un code correcteur d'erreurs global associant des données de redondance auxdites données source, ledit code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage desdites données source auxdites données de redondance inversible, said source data having been coded by a global error correction code associating redundancy data with said source data, said global correction code being capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix passing said source data to said invertible redundancy data,
caractérisé en ce que ledit dispositif de décodage comprend : characterized in that said decoding device comprises:
deux étages de permutation de premier niveau, dont : o un premier étage de permutation de premier niveau connecté, en entrée, d'une part à des variables d'entrée associées à un premier ensemble desdites données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un premier étage de décodage de deuxième niveau, et two stages of first-level permutation, of which: a first level of first-level permutation connected, in input, on the one hand to input variables associated with a first set of said source and / or redundancy data, and on the other hand to internal variables associated with input data and output data of a second level decoding first stage, and
o un deuxième étage de permutation de premier niveau connecté, en sortie, d'une part à des variables de sortie associées à un deuxième ensemble desdites données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un deuxième étage de décodage de deuxième niveau,  a second stage of first-level permutation connected, on the output, on the one hand to output variables associated with a second set of said source and / or redundancy data, and on the other hand to internal variables associated with data. input and output data of a second second level decoding stage,
ledit premier ensemble et ledit deuxième ensemble formant ledit mot de code, et un étage de décodage de premier niveau connecté d'une part aux variables associées aux données de sortie dudit premier étage de permutation de premier niveau et d'autre part aux variables associées aux données d'entrée dudit deuxième étage de permutation de premier niveau,  said first set and said second set forming said codeword, and a first-level decoding stage connected on the one hand to the variables associated with the output data of said first first-level permutation stage and on the other hand to the variables associated with the first-level input data of said second first level permutation stage,
chaque étage de décodage comprenant au moins deux modules de décodage de base mettant chacun en œuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. each decoding stage comprising at least two basic decoding modules each implementing a basic code that may be represented by a generating matrix comprising, in its systematic form, an identity matrix and an input data passage matrix to the invertible output data.
13. Procédé de décodage correcteur d'erreurs, apte à retrouver des données source à partir d'un mot de code reçu,  13. Error correction decoding method, able to retrieve source data from a received code word,
lesdites données source ayant été codées par un code correcteur d'erreurs global associant des données de redondance auxdites données source, ledit code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage desdites données source auxdites données de redondance inversible, said source data having been coded by a global error correction code associating redundancy data with said source data, said global correction code being capable of being represented by a generating matrix comprising, in its systematic form, an identity matrix and a matrix passing said source data to said invertible redundancy data,
caractérisé en ce que ledit procédé de décodage met en œuvre : characterized in that said decoding method implements:
deux étapes de permutation de premier niveau, dont :  two steps of first-level permutation, including:
o une première étape de permutation de premier niveau (431) recevant, en entrée, d'une part un premier ensemble desdites données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une première étape de décodage de deuxième niveau (421), et o une deuxième étape de permutation de premier niveau (432) délivrant, en sortie, d'une part un deuxième ensemble desdites données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une deuxième étape de décodage de deuxième niveau (432), a first step of first-level permutation (431) receiving, as input, on the one hand a first set of said source and / or redundancy data, and on the other hand input data and output data obtained at from a first second-level decoding step (421), and o a second first-level permutation step (432) outputting, on the one hand, a second set of said source and / or redundancy data, and on the other hand input data and output data obtained from a second second level decoding step (432),
ledit premier ensemble et ledit deuxième ensemble formant ledit mot de code, et une étape de décodage de premier niveau (41) recevant les données de sortie de ladite première étape de permutation de premier niveau et délivrant des données d'entrée à ladite deuxième étape de permutation de premier niveau,  said first set and said second set forming said code word, and a first level decoding step (41) receiving the output data of said first level first permutation step and outputting input data to said second step of first level permutation,
chaque étape de décodage mettant en œuvre au moins deux modules de décodage de base mettant chacun en œuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. each decoding step implementing at least two basic decoding modules, each implementing a basic code that can be represented by a generating matrix comprising, in its systematic form, an identity matrix and a data transmission matrix; input to the invertible output data.
14. Programme d'ordinateur comportant des instructions pour la mise en œuvre d'un procédé de codage selon la revendication 11 ou d'un procédé de décodage selon la revendication 13 lorsque ledit programme est exécuté par un processeur.  A computer program comprising instructions for implementing an encoding method according to claim 11 or a decoding method according to claim 13 when said program is executed by a processor.
PCT/FR2015/051680 2014-06-24 2015-06-23 Methods and devices for error corrector coding and decoding, and corresponding computer program WO2015197971A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1455849A FR3022651A1 (en) 2014-06-24 2014-06-24 METHODS AND DEVICES FOR ENCODING AND DECODING ERROR CORRECTING, AND CORRESPONDING COMPUTER PROGRAM.
FR1455849 2014-06-24

Publications (1)

Publication Number Publication Date
WO2015197971A1 true WO2015197971A1 (en) 2015-12-30

Family

ID=52130328

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2015/051680 WO2015197971A1 (en) 2014-06-24 2015-06-23 Methods and devices for error corrector coding and decoding, and corresponding computer program

Country Status (2)

Country Link
FR (1) FR3022651A1 (en)
WO (1) WO2015197971A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109889232A (en) * 2019-03-19 2019-06-14 南京维智感网络科技有限公司 Android intelligent low bit- rate short distance magnetic communication system and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1101288A1 (en) 1998-07-31 2001-05-23 France Telecom Method and device for error correction coding and corresponding decoding method and device
US20110289367A1 (en) * 2009-01-30 2011-11-24 France Telecom Method and device for flexible error correction encoding and corresponding computer program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1101288A1 (en) 1998-07-31 2001-05-23 France Telecom Method and device for error correction coding and corresponding decoding method and device
US20110289367A1 (en) * 2009-01-30 2011-11-24 France Telecom Method and device for flexible error correction encoding and corresponding computer program

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PEREZ-CHAMORRO J ET AL: "Decoding a family of dense codes using the Sum-Product Algorithm", INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS, ISCAS 2009, IEEE, PISCATAWAY, NJ, USA, 20 April 2009 (2009-04-20) - 25 April 2009 (2009-04-25), pages 2685 - 2688, XP031479797, ISBN: 978-1-4244-3827-3 *
V.S. PLESS; W.C. HUFFMAN: "Handbook of coding theory", vol. 1, pages: 177,199

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109889232A (en) * 2019-03-19 2019-06-14 南京维智感网络科技有限公司 Android intelligent low bit- rate short distance magnetic communication system and method
CN109889232B (en) * 2019-03-19 2022-01-07 无锡中科维智数据科技有限公司 Android smart phone low-code-rate close-range magnetic communication system and method

Also Published As

Publication number Publication date
FR3022651A1 (en) 2015-12-25

Similar Documents

Publication Publication Date Title
FR2815199A1 (en) Cyclic turbo coding scheme improves minimum Hamming distance
FR2909499A1 (en) Low density parity check code word decoding method for communication apparatus, involves determining messages, from variable node to control node, relative to set of symbols such that minimal value is null
WO2009044031A1 (en) Method and device for encoding symbols with a code of the parity check type and corresponding decoding method and device
FR3006133A1 (en) METHOD OF DECODING A CORRECTIVE CODE, FOR EXAMPLE A TURBO-CODE, BY ANALYZING THE EXTENDED SPECTRUM OF THE WORDS OF THE CODE
EP1974472B1 (en) Fast encoding and decoding methods and related devices
WO2008059160A2 (en) Encoding and decoding of a data signal according to a correcting code
FR2790621A1 (en) Interlacing method for coding and decoding of turbo codes of binary symbols representing a physical magnitude using two convolute recursive coders having polynomial divisor with same data period
FR2789824A1 (en) Residual error correction method for output of turbo-coder in transmitter-receiver communication systems, involves storing binary data in matrix form and applying error correcting code to create formatted matrix
WO2006000666A1 (en) Method for error correction coding comprising local error detection codes, corresponding decoding method, transmitting, receiving and storage device and program
EP2833555B1 (en) Improved method for decoding a corrector code with message passing, in particular for the decoding of LDPC codes or turbo codes
WO2007003855A2 (en) Method and system for encoding a data sequence
WO2015197971A1 (en) Methods and devices for error corrector coding and decoding, and corresponding computer program
EP2766996B1 (en) Error correction coding and decoding
WO2006108768A1 (en) Method and device for decoding a variable length code taking into account an a priori probability information
EP1471647B1 (en) Encoding and decoding of trellis codes comprising trellis sections constructed on block codes with good distance.
EP3311495A1 (en) Design of the interleaver for turbo codes as a function of the puncturing pattern
EP3879708B1 (en) Decoding of ldpc codes with selective bit-flipping
Zolotarev et al. Effective multithreshold decoder for optical and other data transmission systems
WO2015107315A1 (en) Encoding and decoding linear code from lattices
WO2018172694A1 (en) Construction of turbocodes with compatible rates
FR3037457A1 (en) CODING AND DECODING METHODS AND DEVICES BASED ON A SET OF LATTICE CONSTRUCTED WITH SELF-ADDITIONAL 4-STATE SECTIONS AND CORRESPONDING COMPUTER PROGRAMS
FR2800950A1 (en) Interleaving method e.g. for turbocoding of data, involves considering a matrix having r rows and m columns, filled row by row by the successive numbers from 0 to r tom-1
FR2829329A1 (en) Locked interlaced turbocoding system has shared divisor permutation
FR2805103A1 (en) Interleaving method e.g. for turbocoding of data, involves considering a matrix having r rows and m columns, filled row by row by the successive numbers from 0 to r tom-1
FR2944167A1 (en) RE-ENCODING DECODING METHOD, CORRESPONDING DEVICE AND COMPUTER PROGRAM

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

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

Country of ref document: EP

Kind code of ref document: A1