WO2015197971A1 - Procédés et dispositifs de codage et de décodage correcteur d'erreurs, et programme d'ordinateur correspondant - Google Patents

Procédés et dispositifs de codage et de décodage correcteur d'erreurs, et programme d'ordinateur correspondant 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
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/FR2015/051680
Other languages
English (en)
Inventor
Jean-Claude Carlach
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
Orange SA
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 SA filed Critical Orange SA
Publication of WO2015197971A1 publication Critical patent/WO2015197971A1/fr
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

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

L'invention concerne un dispositif de codage par propagation de croyance sur graphe de Tanner multi-étages. Selon l'invention, un tel dispositif de codage comprend : - deux étages de permutation de premier niveau, dont un premier étage (231) connecté à des variables d'entrée et à des variables internes associées à un premier étage de codage de deuxième niveau (221), et un deuxième étage (232) connecté à des variables de sortie et à des variables internes associées à un deuxième étage de codage de deuxième niveau (222), et - un étage de codage de premier niveau (21) connecté d'une part au premier étage de permutation de premier niveau et d'autre part au deuxième étage de permutation de premier niveau, chaque étage de codage comprenant au moins deux modules de codage de base mettant chacun en œuvre un code de base.

Description

Procédés et dispositifs de codage et de décodage correcteur d'erreurs, et programme d'ordinateur correspondant.
1. Domaine de l'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.
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.
L'invention trouve notamment des applications dans les domaines suivants :
la transmission d'information par télécommunications filaires électriques, comme dans les normes ADSL, ou optiques, sur fibres optiques ou en espace libre ;
la transmission d'information dans les communications radios spatiales et terrestres sans fil (« wireless » en anglais), comme dans les systèmes de télévision numérique TNT, de radio numérique DAB, de téléphonie GSM ou 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 ... ;
la compression et la décompression de source d'informations ;
la génération et la détection de séquences dites d'embrouillage (« scrambling » en anglais) dans les systèmes CDMA ;
le stockage d'informations dans des mémoires de masse magnétiques, optiques, mécaniques ou électriques pour constituer des disques durs, ou des mémoires vives d'ordinateurs, ou des clés mémoire à interface de type USB... ;
la correction d'informations lors des calculs dans un circuit intégré d'un microprocesseur ou dans un ordinateur ;
etc.
2. Art antérieur
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.
Ainsi, un code correcteur d'erreurs est classiquement défini par :
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
une distance minimale dmin.
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
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.
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.
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.
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
rendement - = 1/2) ou de la borne de Gilbert-Varshamov (telle que dmin/n « 0,11 pour un k
code auto-dual de rendement - = 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).
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).
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.
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.
3. Exposé de l'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.
Selon l'invention, le dispositif de codage comprend :
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 codage de deuxième niveau, et
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,
le premier ensemble et le deuxième ensemble formant un mot de code,
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,
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 :
un étage de codage de premier niveau et
deux étages de permutation de premier niveau, dont :
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,
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,
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.
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).
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.
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.
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.
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.
En particulier, les codes de base appartiennent au groupe comprenant :
un code de Hamming ;
un code identité ;
un code de Golay ;
un code à répétition simple ;
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) ....
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.
Elle garantit notamment un rendement de codage égal à 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 ;
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.
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.
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.
Par exemple, une telle permutation de type c-cyclique s'écrit sous la forme :
Figure imgf000007_0001
avec, pour conditions, que D = {Δο, Δ-^ ... , Δ^! ) soit un ensemble de paramètres entiers tels que :
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 .
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.
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.
De telles permutations locales permettent notamment d'obtenir des mots de code de base présentant de bonnes distances minimales.
Selon une caractéristique particulière, le dispositif de codage présente une structure symétrique.
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.
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.
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.
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.
Selon un mode de réalisation particulier, tous les modules de codage de base mettent en œuvre un code de base identique.
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.
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.
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.
Il est également possible d'obtenir un rendement différent de ½ en utilisant une structure non symétrique.
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.
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.
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.
Selon l'invention, un tel procédé de codage met en œuvre :
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
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,
le premier ensemble et le deuxième ensemble formant un mot de code, et
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,
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.
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.
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.
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.
Selon l'invention, un tel dispositif de décodage comprend :
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
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,
le premier ensemble et le deuxième ensemble formant le 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 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,
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.
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.
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.
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.
Selon l'invention, un tel procédé de décodage met en œuvre :
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 décodage de deuxième niveau, et
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,
le premier ensemble et le deuxième ensemble formant le mot de code, et
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,
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.
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.
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.
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.
Finalement, l'invention concerne un dispositif apte à mettre en œuvre les opérations de codage et de décodage correspondantes.
4. Liste des 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 :
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 ;
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 ;
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 ;
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 ;
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 ;
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.
5. Description d'un mode de réalisation de l'invention
5.1 Principe général
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.
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é.
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.
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.
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.
Comme illustré en figure 1, le procédé de codage met en œuvre :
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 ;
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 ;
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.
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.
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.
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.
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 ».
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.
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).
Un tel dispositif de codage comprend au moins :
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 ;
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.
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.
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.
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.
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.
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.
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.
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.
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 :
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 :
0 1 1 1
P = 1 0 1 1
1 1 0 1
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.
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.
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
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.
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.
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.
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.
La figure 3 illustre ainsi un exemple de dispositif de codage mettant en œuvre :
- un étage de codage de premier niveau 31, comprenant des modules de codage de base B0, Bl, etc ;
deux étages de permutation de premier niveau 321, 322, de part et d'autre de l'étage de codage de premier niveau 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 ;
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
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 ;
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 ;
- 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.
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.
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.
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.
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.
Ces contraintes peuvent être de deux types :
- les contraintes de type égalité, correspondant à une répétition de la variable connectée à cette contrainte ;
- les contraintes de type addition modulo 2, correspondant à une contrainte logique de type « ou-exclusif ».
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.
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.
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.
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.
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 ;
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 ;
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.
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.
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.
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.
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 ;
un premier étage de codage de deuxième niveau 521, comprenant trois modules de codage de base notés AO à A2 ;
un deuxième étage de codage de deuxième niveau 522, comprenant trois modules de codage de base notés C0 à C2 ;
- un premier étage de permutation de premier niveau 531 ;
un deuxième étage de permutation de premier niveau 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.
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.
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 :
i≡ 0 (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≡ 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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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 »).
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.
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.
5.3 Construction et mise en œuvre d'un code auto-dual (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.
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 ;
un premier étage de codage de deuxième niveau 621, comprenant 9 modules de codage de base notés AO à A8 ;
- un deuxième étage de codage de deuxième niveau 622, comprenant 9 modules de codage de base notés CO à C8 ;
un premier étage de permutation de premier niveau 631 ;
un deuxième étage de permutation de premier niveau 632.
Selon l'exemple illustré, chaque module de codage de base met en œuvre un code de Hamming (8,4,4), suivi :
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}),
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)),
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)).
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.
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.
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.
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 :
( π0(ί) = 5 + i (mod 108) si i≡ 0(mod 4)
7T0(j) = -18 + i (mod 108) si i≡ l(mod 4)
π0(ί) = 18 + i (mod 108) si i≡ 2(mod 4)
7T0(j) = -5 + i (mod 108) si i≡ 3(mod 4)
Les bits obtenus après permutations sont délivrés à l'étage de codage de premier niveau
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.
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.
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.
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).
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.

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,
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,
caractérisé en ce que ledit dispositif de codage comprend :
deux étages de permutation de premier niveau, dont :
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,
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.
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 :
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).
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.
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.
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.
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.
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.
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 :
un code de Hamming ;
un code identité ;
un code de Golay ;
un code à répétition simple.
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.
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.
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,
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,
caractérisé en ce que ledit procédé de codage met en œuvre :
deux étapes de permutation de premier niveau, dont :
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
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),
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,
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.
12. Dispositif de décodage correcteur d'erreurs, apte à retrouver des données source à partir d'un mot de code reçu,
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,
caractérisé en ce que ledit dispositif de décodage comprend :
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
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,
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,
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.
13. Procédé de décodage correcteur d'erreurs, apte à retrouver des données source à partir d'un mot de code reçu,
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,
caractérisé en ce que ledit procédé de décodage met en œuvre :
deux étapes de permutation de premier niveau, dont :
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),
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,
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.
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.
PCT/FR2015/051680 2014-06-24 2015-06-23 Procédés et dispositifs de codage et de décodage correcteur d'erreurs, et programme d'ordinateur correspondant Ceased WO2015197971A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1455849A FR3022651A1 (fr) 2014-06-24 2014-06-24 Procedes et dispositifs de codage et de decodage correcteur d'erreurs, et programme d'ordinateur correspondant.
FR1455849 2014-06-24

Publications (1)

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

Family

ID=52130328

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2015/051680 Ceased WO2015197971A1 (fr) 2014-06-24 2015-06-23 Procédés et dispositifs de codage et de décodage correcteur d'erreurs, et programme d'ordinateur correspondant

Country Status (2)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109889232A (zh) * 2019-03-19 2019-06-14 南京维智感网络科技有限公司 Android智能手机低码率近距离磁通信系统及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1101288A1 (fr) 1998-07-31 2001-05-23 France Telecom Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondants
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 (fr) 1998-07-31 2001-05-23 France Telecom Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondants
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 (zh) * 2019-03-19 2019-06-14 南京维智感网络科技有限公司 Android智能手机低码率近距离磁通信系统及方法
CN109889232B (zh) * 2019-03-19 2022-01-07 无锡中科维智数据科技有限公司 Android智能手机低码率近距离磁通信系统及方法

Also Published As

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

Similar Documents

Publication Publication Date Title
FR2815199A1 (fr) Procedes de turbocodage circulaire de grande distance minimale, et systemes pour leur mise en oeuvre
EP3443678B1 (fr) Methode de décodage d&#39;un code polaire avec inversion de bits peu fiables
FR2909499A1 (fr) Procede et dispositif de decodage pour codes ldpc, et appareil de communication comprenant un tel dispositif
EP3879708B1 (fr) Décodage des codes ldpc avec basculement de bits sélectif
FR2789824A1 (fr) Procede de correction d&#39;erreurs residuelles a la sortie d&#39;un turbo-decodeur
WO2009044031A1 (fr) Procede et dispositif d&#39;encodage de symboles avec un code du type a contrôle de parite et procede et dispositif correspondants de decodage
EP1974472A1 (fr) Procedes d&#39;encodage et de decodage rapides et dispositifs associes
FR3006133A1 (fr) Procede de decodage d&#39;un code correcteur, par exemple un turbo-code, par analyse du spectre etendu des mots du code
WO2008059160A2 (fr) Codage et decodage d&#39;un signal de donnees en fonction d&#39;un code correcteur
FR2790621A1 (fr) Dispositif et procede d&#39;entrelacement pour turbocodage et turbodecodage
EP2833555B1 (fr) Procede ameliore de decodage d&#39;un code correcteur avec passage de message, en particulier pour le decodage de codes ldpc ou codes turbo
WO2015197971A1 (fr) Procédés et dispositifs de codage et de décodage correcteur d&#39;erreurs, et programme d&#39;ordinateur correspondant
EP2766996B1 (fr) Codage et decodage correcteur d&#39;erreurs
WO2006000666A1 (fr) Procede de codage correcteur d’erreurs comprenant des codes locaux detecteurs d’erreurs, procede de decodage, dispositifs d’emission, de reception et de stockage, et programme correspondants
EP1905157A2 (fr) Procede et systeme d&#39;encodage d&#39;une sequence de donnees
FR3037746A1 (fr) Procede de construction d&#39;un entrelaceur pour turbo-encodeur
EP1471647B1 (fr) Codage et décodage utilisant un code construit sur un treillis dont les sections sont basées sur des codes en bloc à bonne distance
WO2006108768A1 (fr) Procédé et dispositif de décodage d&#39;un code à longueur variable prenant en compte une information de probabilité a priori
Zolotarev et al. Effective multithreshold decoder for optical and other data transmission systems
FR2888062A1 (fr) Codeur et turbo decodeur de code produit
WO2015107315A1 (fr) Codage et décodage de code linéaire à partir de treillis
WO2016085314A1 (fr) Décodage turbo amélioré utilisant une moyenne pondérée de l&#39;information extrinsèque sur plusieurs itérations
Hug Codes on graphs and more
FR2800950A1 (fr) Procede d&#39;entrelacement pour turbo-codage convolutif de donnees
FR3037457A1 (fr) Procedes et dispositifs de codage et de decodage bases sur un ensemble de treillis construits avec des sections auto-complementaires a 4 etats et programmes d&#39;ordinateur correspondants

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