WO2003088504A1 - Procede de codage et/ou de decodage de codes correcteurs d'erreurs, dispositifs et signal correspondants. - Google Patents

Procede de codage et/ou de decodage de codes correcteurs d'erreurs, dispositifs et signal correspondants. Download PDF

Info

Publication number
WO2003088504A1
WO2003088504A1 PCT/FR2003/001188 FR0301188W WO03088504A1 WO 2003088504 A1 WO2003088504 A1 WO 2003088504A1 FR 0301188 W FR0301188 W FR 0301188W WO 03088504 A1 WO03088504 A1 WO 03088504A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
codes
coded
code
sub
Prior art date
Application number
PCT/FR2003/001188
Other languages
English (en)
Inventor
Emmanuel Boutillon
Glenn Gulak
Vincent Gaudet
David Gnaedig
Original Assignee
Universite De Bretagne Sud
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 Universite De Bretagne Sud filed Critical Universite De Bretagne Sud
Priority to AU2003246832A priority Critical patent/AU2003246832A1/en
Publication of WO2003088504A1 publication Critical patent/WO2003088504A1/fr

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2771Internal interleaver for turbo 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B2020/10935Digital recording or reproducing wherein a time constraint must be met
    • G11B2020/10944Real-time recording or reproducing, e.g. for ensuring seamless playback of AV data

Definitions

  • the present invention relates to the field of coding digital data intended to be transmitted and / or stored on a noisy channel and then decoded so as to correct transmission and / or reading errors.
  • the invention relates to error correcting coding based on the parallel concatenation of several codes, and a decoding method allowing high bit rates. Even more precisely, the invention relates to an improvement of the coding method commonly called “turbo-codes”, as well as the associated decoding method.
  • Parity codes are also known, in particular: - LDPC codes described by RG Gallager in the document “Low-density parity-check codes” (or in French “Low-density parity codes”) and published by MIT Press in 1963.
  • product turbo-codes made up of several codes concatenated in a block according to at least two dimensions of a table representative of a corresponding “product turbo-code”.
  • Product turbo codes are presented in particular in the document “Near Optimum decoding of product codes” (or “Daudage proche de optimimum des codes fresh”) in French) written by R. Pyndiah, A. Glaemper, A. Picard and S. Jacq and published in the report of the Globecom'94 colloquium in San Francisco (United States) in 1994. They allow a greater degree of parallelism to decoding than the “turbo- codes ”of the first type described above, several constituent codes being able to be decoded in parallel.
  • the constituent codes used are linear algebraic codes. However, the choice of a regular interleaver is not optimal in terms of performance.
  • codes for improving the latency at decoding and described in the article “Decoder-first code design” (or “code development first constructed on the basis of a decoder”) written by E Boutillon, J. Castura and F. Kschischang and published in the report "proceedings of the 2 nd international Symposium on turbo codes and related topics", pages 459 to 462 (Brest, France) in September 2000.
  • LDPC low density parity codes
  • this technique of the prior art has the drawback of being relatively complex to implement.
  • it requires numerous memory banks, the number of memory banks being equal to the number of data simultaneously entering the elementary decoders, ie the product of the number of decoders by the size of an elementary code word.
  • this technique is not suitable for large LDPC codes. This technique also has the disadvantage of not providing sufficient code quality for many applications.
  • the invention aims in particular to overcome these drawbacks of the prior art.
  • an objective of the invention is to provide a code in the form of a signal and an associated coding and / or decoding method as well as the corresponding devices, which combine the advantages of a good bit error rate with a low decoding latency and / or a high bit rate.
  • an objective of the invention is to provide a code in the form of a signal and an associated coding and / or decoding method as well as the corresponding devices, which combine the advantages of a good bit error rate with a low decoding latency and / or high bit rate.
  • the invention proposes a method for decoding an error correcting code, of the type associating a decoded data block with data coded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated to the global code, the decoding method being iterative and producing at each iteration a block of extrinsic data, each of the extrinsic data relating to one of the coded data, the method implementing a step of memorizing a block of data to be decoded comprising said coded data and the extrinsic data, the data block to be decoded being distributed in a plurality of separate, independently addressable memory banks, the method being remarkable in that: at each iteration, it further comprises a step of parallel supply of at least two decoders from a plurality of decoders, each corresponding respectively to at least one of said sub-codes, by corresponding data to be decoded from the data block to be decoded,
  • the method is remarkable in that at least one of the sub-codes is a circular convolutional recursive code. According to a particular characteristic, the method is remarkable in that at least one of the sub-codes is a systematic code.
  • the invention allows the use of short codes and therefore a reduction in coding latency.
  • the coding method allows an improvement of the GLD codes using several constituent sub-codes.
  • the method is remarkable in that at least two of the sub-codes are m-binary codes, m being an integer greater than or equal to 2 and in that an intra-symbol permutation is applied between the minus two of the m-binary sub-codes.
  • the invention applies not only to binary constituent sub-codes, but also to duo-binary constituent sub-codes or more generally to m-binary constituent sub-codes.
  • the method is remarkable in that it further comprises a step of routing each of the data to be decoded to one of the decoders, said data being routed in parallel and simultaneously so that each of between them supplies its own decoder.
  • the method is remarkable in that said switching step itself comprises a step of circular permutation of an assembly comprising at least part of the data to be decoded.
  • the invention makes it possible to improve the interleaving while using the maximum of parallelism linked to the decoding in parallel of several constituent codes of the global code.
  • the method is remarkable in that the circular permutation is a rotation which has a pitch determined as a function of the reading rank of the data read from the memory banks.
  • the interleaver is implemented simply and efficiently.
  • the method is remarkable in that the switching step implements a step of addressing each of the memory banks so that data can be read from the memory bank in a predetermined order distinct from the order of writing of said data in the memory bank.
  • each line of a first matrix of data representative of the data coded according to the global code is representative of data coded by a sub-code constituting the global code belonging to a first group of sub-codes; each line of at least a second matrix of data representative of the data coded according to the global code is representative of data coded by a sub-code constituting the global code belonging to at least a second group of sub-codes;
  • each matrix among the second data matrices being obtained from a transformation of said first matrix, the transformation comprising a permutation of at least part of the columns of the first matrix.
  • the method is remarkable in that the transformation further comprises a permutation of at least part of the lines of the first matrix.
  • the invention allows a large choice of interleavers (that is to say permutations) while retaining a relatively simple implementation.
  • each line of a first matrix of data representative of the data coded according to the global code is representative of data coded by a sub-code constituting the global code belonging to a first group of sub -codes, part of the data of the first matrix, called non-significant data, not being significant;
  • each line of a first subset of lines of at least a second data matrix representative of the data coded according to the global code is representative of data coded by a sub-code constituting the global code belonging to at least a second group sub-codes;
  • the method is remarkable in that it comprises a decoding test step implementing at least one stopping criterion so that when the at least one stopping criterion is verified for at least one of the sub-codes, at least one of the decoders associated with the sub-code (s) stops decoding the sub-code (s) for which the stopping criteria are checked.
  • the definition of the global code allows the application of a stopping criterion on the constituent codes in order to reduce over the iterations the number of constituent codes processed.
  • This stopping criterion is, for example, based on the thresholding of weighted decisions.
  • the method is remarkable in that it implements a step of reading the coded data from an optical and / or magnetic medium and / or of transmitting said coded data on an interference channel.
  • the method is remarkable in that at least one of the sub-codes corresponds to interference between symbols representative of the data block decoded when the block is stored on the optical and / or magnetic medium and / or when the block is transmitted in an interference channel.
  • the invention is particularly well suited to storage applications on an optical and / or magnetic medium, the storage channel itself enabling coding of the stored data according to a sub-code implementing interference between symbols corresponding to the data. stored and / or transmitted.
  • One or more other sub-codes can then be implemented according to code techniques using, for example, circular systematic recursive codes.
  • the method is remarkable in that it implements a step of reception of the coded data coming from a transmitter.
  • the invention can advantageously be implemented for transmission type applications on a noisy channel (for example, radio, infrared and / or acoustic wireless channel)
  • a noisy channel for example, radio, infrared and / or acoustic wireless channel
  • the method is remarkable in that the data sets coded with each of the sub-codes are all different in pairs.
  • the bipartite graph associated with the global code is irregular in particular because the sub-codes of the global code are all different two by two.
  • the method is remarkable in that at least two of the sub-codes comprise at least two of the data to be decoded in common.
  • the bipartite graph associated with the global code is irregular in particular because two sub-codes of the global code have at least two data in common.
  • the method is remarkable in that the global code is of the code type produced with a non-uniform interleaver.
  • the bipartite graph associated with the global code of the product code type is irregular in particular because the associated interleaver is not uniform, that is to say that, if the global code is symbolized by a two-dimensional matrix, the sub-codes do not correspond only to the rows and columns of the matrix.
  • the method is remarkable in that it further comprises a step of demultiplexing the decoded data block so as to supply at least two distinct recipients with data belonging to the decoded demultiplexed data block.
  • the invention can take into account data coming from different sources (for example, of multimedia type). These data are grouped together to be coded using a larger code than if data from separate sources were coded separately. They therefore benefit from a higher correction power, each block of information corresponding to a fraction or a subset of the rollers of the global code.
  • the larger overall code is therefore more efficient and its properties can therefore advantageously be exploited by the decoding process.
  • the method is remarkable in that the degree of the information symbols of the decoded data block in the global code is not uniform.
  • the degree of an information symbol in a global code is, by definition, here the number of arcs which are connected to this symbol in a representation of the code in the form of a bipartite graph.
  • the protection of a symbol can, in addition, be improved by reducing the performance of the constituent sub-codes with which the symbol is associated.
  • the method is remarkable in that the number of memory banks is different from the number of decoders supplied in parallel.
  • the decoding process is particularly well suited to different situations.
  • a very high speed application in order to improve the speed or to make the method compatible with such an application, not only are several decoders used in parallel but at least one of the decoders is supplied from two separate logical memory banks.
  • the decoding method in a heterogeneous system for which at least two decoders are of a different nature and do not require the same number of data per clock cycle to be processed in real time.
  • the number of decoders (in particular in this case) may be lower or higher than the number of logical memory banks.
  • the method is remarkable in that at least two memory banks are addressed simultaneously by the same address decoder.
  • the address decoder allows you to select a word in a memory for reading or writing.
  • Logical memory banks can be distinguished by the destination of the data they contain, the differentiation being made by the switches and the processing that the data is subjected to (two symbols of two separate logical memory banks being at a given moment referred to two separate decoders).
  • the invention also relates to a method for coding error correcting code, of the type associating a source data block with data coded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated with said global code , the coded data block being intended to be transmitted to at least one receiver and / or stored on a data medium, remarkable in that the coded data block is intended to be decoded by the iterative decoding method.
  • the invention further relates to a method for coding error correcting code, of the type associating a source data block with data coded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated to said global code, the coded data block being intended to be transmitted to at least one receiver and / or stored on a data medium, the coded data block being intended to be decoded by an iterative decoding method, remarkable in that the method further comprises a step of supplying in parallel at least two coders among a plurality of coders, each corresponding respectively to at least one of the sub-codes, by corresponding data to be coded of said data block to be coded , data to coding being extracted in parallel from at least two memory banks to supply as many coders.
  • the method is remarkable in that each of the coders is supplied sequentially by the data to be coded corresponding to it.
  • the method is remarkable in that at least one of said sub-codes is a circular convolutional recursive code.
  • the method is remarkable in that at least one of the sub-codes is a systematic code. According to a particular characteristic, the method is remarkable in that at least two of the sub-codes are m-binary codes, m being an integer greater than or equal to 2 and in that an intra-symbol permutation is applied between the minus two of the m-binary sub-codes.
  • the method is remarkable in that it further comprises a step of switching from each of the data to be coded to one of the coders, the data being routed in parallel and simultaneously so that each of they supply a corresponding encoder of its own.
  • the method is remarkable in that the switching step itself comprises a step of circular permutation of an assembly comprising at least part of the data to be coded.
  • the method is remarkable in that the circular permutation is a rotation which has a pitch determined as a function of the reading rank of the data read from the memory banks.
  • the method is remarkable in that the switching step implements a step of addressing each of the memory banks so that data can be read from the memory bank in a predetermined order distinct from the order to write data to the memory bank.
  • the method is remarkable in that each row of a first matrix of data representative of said data coded according to the global code is representative of data coded by a sub-code constituting the global code belonging to a first group of sub-codes; each line of at least a second matrix of data representative of said data coded according to the global code is representative of data coded by a sub-code constituting global code belonging to at least a second group of sub-codes; each matrix among the second data matrix or matrices being obtained from a transformation of the first matrix, the transformation comprising a permutation of at least part of the columns of the first matrix.
  • the method is remarkable in that the transformation further comprises a permutation of at least part of the lines of the first matrix.
  • each line of a first matrix of data representative of the data coded according to the global code is representative of data coded by a sub-code constituting the global code belonging to a first group of sub -codes, part of the data of the first matrix, called non-significant data, not being significant;
  • each line of a first subset of lines of at least a second data matrix representative of the data coded according to the global code is representative of data coded by a sub-code constituting the global code belonging to at least a second group of sub-codes; a second row subset of the second data matrix containing the non-significant data; and each matrix among the second data matrix or matrices being obtained from a transformation of the first matrix, the transformation comprising a permutation of at least part of the columns of the first matrix.
  • the method is remarkable in that it implements a step of writing said coded data on a medium. optical and / or magnetic and / or transmission of coded data on an interference channel.
  • the method is remarkable in that at least one of the sub-codes corresponds to interference between symbols representative of the data block decoded when the block is stored on the optical and / or magnetic medium and / or when the block is transmitted in an interference channel.
  • the method is remarkable in that it implements a step of transmitting said coded data intended for a receiver.
  • the method is remarkable in that the data sets coded with each of the sub-codes are all different in pairs.
  • the method is remarkable in that at least two of the sub-codes comprise at least two data coded in common.
  • the method is remarkable in that the global code is of the code type produced with a non-uniform interleaver.
  • the method is remarkable in that it further comprises a step of multiplexing at least two data blocks each coming from two distinct sources so as to form the source data block.
  • the method is remarkable in that the degree of the information symbols of said decoded data block in the global code is not uniform.
  • the method is remarkable in that the number of memory banks is different from the number of coders supplied in parallel. According to a particular characteristic, the method is remarkable in that at least two memory banks are addressed simultaneously by the same address decoder.
  • the invention also relates to a signal representative of a block of data coded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated with the global code, the block of coded data being intended to be decoded by the iterative decoding process.
  • the invention further relates to a device for decoding an error correcting code, of the type associating a decoded data block with data coded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated to said global code, the associated decoding process being iterative and producing at each iteration an extrinsic data block, each of the extrinsic data relating to one of the coded data, the device implementing means for storing a data block at decode comprising said coded data and said extrinsic data, the data block to be decoded being distributed in a plurality of separate, independently addressable memory banks, the device being remarkable in that at each iteration, it further comprises means for 'parallel supply of at least two decoders from a plurality of decoders, each corresponding one respectively to at least one of the sub-codes, by corresponding data to be decoded from the data block to be decoded, data to be decoded being extracted in parallel from at least
  • the invention relates to a device for coding error correcting code, of the type associating a source data block with data coded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated with the global code, the coded data block being intended to be transmitted to at least one receiver and / or stored on a data medium, the coded data block being intended to be decoded by an iterative decoding device, the device being in that the device also comprises means for supplying in parallel at least two coders among a plurality of coders, each corresponding respectively to at least one of the sub-codes, by corresponding data to be coded from the data block to be coded, data to be coded being extracted in parallel of at least two of the memory banks to supply as many encoders.
  • FIG. 1 presents a particular embodiment of the coding operation of the invention which consists in using four rollers making it possible to form a code (12,8) according to the invention
  • Figures 2 and 3 illustrate two particular embodiments of the coding operation, according to the invention
  • FIG. 4 shows an embodiment of an encoder for building irregular codes, according to the invention
  • FIG. 5 describes an encoder whose architecture allows the codes according to Figures 1 to 4 to be implemented;
  • - Figure 6 illustrates a decoder suitable for decoding roller codes described with reference to Figures 1 to 4;
  • FIG. 7 illustrates an application of the invention to data storage.
  • the general principle of the invention is based on codes allowing modular decoding associated with different quality levels and at different bit rates according to the number of modules implemented in a decoder.
  • the invention applies in all cases where it is necessary to transmit and / or store digital information with a certain level of reliability.
  • a preferred field of application of the invention is that of digital transmission over a noisy channel.
  • the invention can be used for the transmission and reception of data whose reliability and speed are of vital importance such as transmissions by satellite, on optical fiber, on a radio frequency channel, on a cable or for storage. information on a physical medium.
  • the invention also applies to applications for storing data on, for example optical and / or magnetic media.
  • the invention also makes it possible to code and decode any signal, in particular a sound, video, data signal or the concatenation of several heterogeneous signals.
  • the general principle of the invention is based on a coding of a sequence of K information symbols, using R constituent codes making it possible to obtain a code word of length N strictly greater than the number K.
  • the global code therefore includes constituent codes called, here, “rollers” by analogy to a possible embodiment using systematic and circular recursive convolutional codes.
  • the i th wheel R of a global code is defined, in the general case, by the ordered set, of the symbols of the word of the constituent code (sub- code of the global code) considered.
  • m represents the cardinal of M t .
  • the order of the symbols of M is given by the nature of the constituent code and / or by the order induced by the decoding algorithm.
  • the global code is formed from the wheels by a bipartite graph. This graph comprises: a line comprising the N symbols of the global code word; - a line containing the R castors; and - a set of M arcs connecting the R casters with the N symbols of the code word.
  • each caster has m, connections. It is therefore connected to m, symbols of the code word.
  • the number of arcs M is therefore equal to the sum of the m, for varying from 1 to R.
  • Tanner codes which consist in describing a code with using a bipartite graph which associates constraints with a group of information symbols.
  • a turbo-code (with two constituent codes) is generally described by a bipartite graph which contains two constraints, respectively associated with a non-interlaced coder and with an interlaced coder.
  • ⁇ ; (M ( ) the ordered set of symbols of the global code word connected to the wheel R ,.
  • ⁇ ; (fc) will be the k lime symbol used by decoder the set ⁇ (k) ⁇ represents the set. unordered symbols of the global code word connected to the wheel R ,.
  • the bipartite graph satisfies the following conditions: the sets ⁇ , (,) verify a particular constraint, in order to allow the decoding of the constituent codes with a degree P of parallelism; and the bipartite graph is irregular.
  • the sets ⁇ , (M ( ) are chosen so as to make it possible to perform an iteration of decoding (the processing of the R rollers) in one or more stages (the number of being noted T) and the rollers of each step t (t varying from 1 to T) being decoded by at least two decoders in parallel (the number of decoders being noted P, with P being equal to the ratio R on T).
  • the first step of each iteration includes a decoding of the first P rollers R_, R 2 ... R P by P decoders in parallel, each of the first P rollers being associated with one of the P decoders.
  • the second step of each iteration includes a decoding of the following P rollers R P + 1 , ..., R ⁇ .
  • the t " th step of each iteration includes a decoding of the rollers R (t . 1) P + ⁇ , ..., R tJ > each of the P rollers R (t . I) P + 1 , ..., R tP being associated with one of the P decoders.
  • Step T includes decoding of the last rollers (R R. P +] , ..., R R ).
  • step t of the T steps of each iteration we therefore use P decoders in parallel, each associated with a memory bank BMj, BM 2 , ..., BM P.
  • Each of the P memory banks contains the data necessary for the execution of one of the P decoders as well as the data produced by one of the P decoders.
  • the P decoders processing the P symbols ⁇ (t . ] J P + 2 (k), ..., ⁇ tJ > (k)) realize independent and parallel memory accesses in R distinct banks.
  • the constraint on the sets ⁇ , (,) is therefore the following: at each symbol cycle k: either there is a bijection which associates, for all the values of t going from 1 to T and for all the values of k going from 1 at M, the P symbols ( ⁇ * + y (*). ⁇ (t . I) .
  • the decoding latency is therefore divided by P.
  • the bit rate is therefore multiplied in the same proportions.
  • the two-partite graph is irregular. This irregularity makes it possible to generate a pseudo-random code and therefore to obtain good performance. It is characterized by the following two properties:
  • a stop criterion is applied as described in the document "Stopping rules for turbo decoders" (or “criterion d 'stop for turbo-decoders' in French) written by A. Matache, S. Dolinar and F; Pollara in the TMO progress Report 42-142 in August 2000 and published by the JPL (Jet
  • the stopping criterion is applied from a division of a frame to be decoded into windows of equal size. The stop criterion is then applied to the windows so as to stop the processing of the windows that have converged and thus, reduce the number of windows processed during the following iterations.
  • Such a device has two drawbacks:
  • the window breakdown is arbitrary and is generally not suitable for the configuration of residual errors in the decoding process; and cutting a continuous frame into a window requires complex and sub-optimal management of edge effects.
  • the code by construction, makes it possible to overcome these drawbacks of the prior art by improving the use of the stop criterion with thresholding of the weighted decisions which is applied for each of the R rollers.
  • the window on which the stop criterion is applied is not chosen arbitrarily but, on the contrary, this window corresponds exactly to a constituent code.
  • This stopping criterion can be used for low bit rate applications where the maximum parallelism allowed by the code is not used. It should be noted that the use as described below is not limited to codes implementing a decoding method according to the invention but applies to any code comprising at least one roulette type sub-code and one interleaving symbols of information which can be any. Thus, for example, one can choose to implement a single decoder which successively decodes the R casters. Thus, during the decoding of a roulette, a stop criterion is applied as described in the report cited above to each roulette (and not according to the state of the art only to the global code). If the criterion is verified for at least one caster, this caster will no longer be decoded during the next iteration, thereby saving energy and resource consumption.
  • an associated decoder may be used to decode a data block and, in particular, for another caster for which a data block is awaiting decoding.
  • the decoding resources can be distributed for optimization as required.
  • the process thus defined therefore has three advantageous properties: the graph is irregular which makes it possible to effectively emulate a random code, and therefore to obtain good performance; a simple implementation of the high-speed decoding method is permitted by the simultaneous decoding of several rollers, the data being taken into account sequentially by each of the decoders associated with a roulette; and the method allows efficient use of stopping criteria based on the structure of the code and not on an arbitrary division of the frame into packets of equal size.
  • the coding and decoding methods have several variants, in particular: - on the bipartite graph; and / or on wheels.
  • the code can be: systematic; or not systematic (in this case, when the constituent codes are parity codes, we obtain low density parity code (or LDPC) type codes).
  • the quantity m equal to the sum of the circumference c, and the number e, defines the size of the roulette R, (or m ⁇ c, ⁇ - e,).
  • the degree of the symbol number s of the code word that is to say, the number of arcs which are connected to this symbol.
  • the dimension of the symbols of the code word is called dimension of the global code.
  • the number of steps is greater than or equal to the dimension of the global code.
  • ⁇ ⁇ () the ordered set of symbols of the code word linked to the information of the roulette R,. So, represents the number of the symbol of the code word which is connected to the k th input of the roulette R ;.
  • the set ⁇ ]!; () ⁇ Represents the unordered set of symbols of the code word linked to the information of the roulette R ,.
  • the rollers can correspond to any block codes, for example, of the BCH or Reed-Solomon type;
  • the constituent codes can be convolutional and in particular recursive circular circular codes which solve the problem of closing the trellis associated with the corresponding decoder without degrading the spectral efficiency of the coding; in this case, we can associate with each roulette: the polynomials generating the systematic recursive convolutional code associated with R,; and - a punching pattern associated with the wheel R, making it possible to obtain the yield r ,. ; - the codes used can be based on binary, duo-binary or tuple symbols;
  • the codes (mistc,) can be identical for each of the rollers R,; and / or the punches can be identical for all the rollers R, and therefore allow a yield r j - uniform.
  • Variants of implementation of the bipartite graph are also possible: the number of casters processed during a decoding step can be different for each step: for a given architecture, one can in particular manage the edge effects due to the use of words of variable length (for example, the number of rollers is not necessarily a multiple of P); and / or according to the constraints of the technology, of the type of embodiment of the caster (insertion of a pipeline, type of implementation of the algorithm of the flexible input decoder - flexible output), and of the application speed constraints, the number P 'of memory benches and the number P of rollers produced in parallel may be different; however, the code must be constructed for values of P 'and P greater than or equal to 2.
  • the code can be two-dimensional.
  • the following specifications are added:
  • the number of casters R is even; all the rollers have a circumference equal to C; and the degree deg (k) of each of the K information symbols is two and each information symbol is connected to two separate rollers.
  • the rollers can then be separated into two groups such that in each group, the degrees deg (k) of the K information symbols are worth 1.
  • code words and the sets ⁇ , (C,) are then defined as follows:
  • the lines define the sets ⁇ , (C,) (i varying from 1 to R / 2) of the first group. They are elements of the corresponding constituent codes;
  • the permutation on each of the columns can be a circular rotation;
  • the lines obtained define the sets ⁇ , (C,) (i varying from R / 2 to R) of the second group. They are coded by the corresponding constituent codes.
  • This two-dimensional code requires P equal to R / 2 memory banks each being filled by a line of the non-permuted matrix.
  • the constituent codes are systematic recursive circular, the following memory organization can be used: at each address of the memory, the data relating to the systematic symbol are stored (information symbol from the channel, extrinsic information produced by the decoders) as well as the redundancy symbols from the corresponding channel.
  • Each group can then be decoded simultaneously by P decoders in parallel in T (worth 2) steps.
  • the matrix permutation process ensures during the decoding of the second group of rollers that the memory accesses are carried out on separate memory banks.
  • the permutations carried out on the lines correspond to a temporal interleaving of the data (that is to say, the permutations on the lines are carried out according to the decoding order by reading the symbols of each memory).
  • the permutations associated with the columns correspond to a spatial interleaving of the data. This interleaving is carried out physically by a permutation network between the P memory banks and the P decoders.
  • an irregular code can be constructed.
  • the 2P constituent codes used each have a circumference equal to the sum C + D.
  • each constituent code is associated with the sequence of information symbols of a line to which the D first symbols next line information; for the last line, the D information symbols of the first line are added.
  • the irregular code thus constructed has symbols of a degree equal to three which are located at the ends of the rollers.
  • the other symbols are all of degree two. This coding scheme makes the code more robust to transmission errors and allows faster decoder convergence.
  • the number of rollers is equal to R which is equal to the sum of P ⁇ and P 2 with a product of P ⁇ and P 2 equal to N and P_ being greater than or equal to R 2 ; there are therefore P x rollers with a circumference equal to P 2 and P 2 rollers with a circumference equal to P_; - all degrees deg (k) of the N information symbols are worth 2 and therefore each information symbol is connected to two separate rollers.
  • the rollers are separated into two groups of respectively P_ and P 2 rollers.
  • the coding method and the sets ⁇ , (M,) of the bipartite graph are then defined as follows: the N symbols of the code word are written line by line in a matrix having P ⁇ lines and P 2 columns; to this matrix, a number of empty columns is added equal to the difference of P ⁇ and P 2 (ie R, - P 2 in condensed form); - the lines define the sets ⁇ , (,) (for i ranging from 1 to P) of the first group; they are then coded by the corresponding constituent codes of length equal to P 2 .
  • any swapping between the symbols of said line is then carried out for each of the lines; these permutations are not all identical (according to a variant, these permutations are identical and can be advantageously deleted); these permutations distribute uniformly on the columns, the symbols of the empty columns of the preceding matrix; a permutation 0_ is carried out on each of the P columns of the resulting matrix, respecting the following constraint: after permutation, the empty symbols of the preceding matrix are distributed over the P -P 2 lines; the non-empty lines obtained define the sets ⁇ , (,) (for i ranging from R to P ⁇ + P 2 ) of the second group; they are coded by constituent codes.
  • a is close to the square root of C; and - the symbol k (k varying from 0 to C) of the roulette wheel corresponds to the symbol located at the address equal to the sum of the product ak and ⁇ modulo C
  • the invention also relates to the coding, decoding, interleaving devices defining the sets ⁇ / ⁇ ,) or ⁇ , (C,). These devices are presented with reference to FIGS. 5, 6 and 7.
  • the code is composed of four constituent codes 14, 15, 16 and 17 of which two codes can be coded and / or decoded simultaneously according to the invention.
  • Each of these constituent codes is a circular systematic recursive convolutional code:
  • Each constituent code is represented by a wheel, which has:
  • the degree of the information symbols is equal to one (for symbols 2, 3, 7 and 8) or two (for symbols 1, 4, 5 and 6).
  • the set of symbols 1 to 12 of code 13 is stored in two memory banks BM and BM 2 which respectively contain the following symbols:
  • rollers are coded and / or decoded with a degree of parallelism equal to two. Indeed, for each of the four symbols used in the constituent code, the following memory accesses are made:
  • the global coding operation is based on two distinct groups each comprising P rollers R ; applied globally to the same data.
  • each of the rollers R is equal to C.
  • the K information symbols to be coded are written line by line in a matrix 20 with R lines and C columns (K is equal to the product Px.
  • Each line is coded by a constituent code 21, for example of the circular systematic recursive convolutional code type.
  • the i th line of the matrix 20 comprises the N symbols given by a code word 21 (systematic information and redundancy) corresponding to a rollers R ; .
  • the j th line of the matrix 20 comprises the K symbols of systematic information of a code word 21 corresponding to a roulette R ; (the redundancy symbols are not shown).
  • interleaver ⁇ 22 we perform a permutation of the symbols of each of the lines by an interleaver ⁇ 22.
  • This interleaver is identical for each of the lines. According to a variant of the invention, this interleaver is different for each line.
  • the interleaver ⁇ is equal to the identity for all the lines and can therefore be deleted.
  • the permutation O ; 24 is circular, according to the preferred embodiment, or non-circular according to an alternative embodiment.
  • the rows of the resulting matrix 25 are coded by P constituent codes 26 which can be circular recursive convolutional codes.
  • the j- th ijg ne (j e j am atrice 25 includes the C systematic information symbols corresponding to a roulette R i + 5 .
  • the first (respectively second) line of the matrix 20 comprises a sequence which begins with the bits a, h and c (respectively d, e, f) as illustrated in FIG. 2, these bits will be interleaved by the permutation ⁇
  • bits a, h and c will be placed respectively in the fourth, seventh and second position of the first line of the matrix 23.
  • bits d, e and / will be respectively placed in the fourth, seventh and second position of the second line of the matrix 23.
  • the data of the fourth, seventh and second columns of the matrix 23 will then be respectively interleaved by the permutations 24 O 4 , 0 7 and O 8 .
  • the matrix 25 is thus obtained in which, for example: the data item d is located in the fourth position of the first line; the data c and e are respectively located in second and seventh position of the second line; the data f and a are respectively located in second and fourth position of the fourth line; and - the data b is located in seventh position of the last line.
  • the data a, b and c (respectively d, e and /) which are placed in the same line of the matrices 20 and 23 are, after the permutations Oj, located in separate lines of the matrix 25.
  • the bipartite graph is separated into two groups.
  • the first group contains P ⁇ wheels of circumference P 2 and the second group includes P 2 wheels of circumferences P x , with R, greater than or equal to P 2 and the product P, by P 2 equal to N.
  • the N information symbols of the global code word are written line by line in a square matrix 30 of side P ⁇ of which only the first P 2 columns are filled.
  • the P ⁇ - P 2 last columns remain empty with a value symbolized by V.
  • Each of the P_ lines is coded by a constituent code 31, the lth line of the matrix 30 corresponding to a roulette Rj of length P 2 .
  • Each of the codes 31 is, for example, a circular systematic recursive convolutional code (CRSC).
  • CRSC circular systematic recursive convolutional code
  • a permutation of the symbols of each of the lines is carried out by an interleaver ⁇ , 32.
  • Each of the P x interleavers has the following property: after permutation, the symbols V of the matrix 30 are distributed uniformly over all the columns of the matrix 33 Thus, we obtain the same number of symbols V on each of the columns of the matrix 33.
  • the P 2 non-empty lines of the resulting matrix 35 are then coded by P 2 constituent codes 36 of length P.
  • the P_ + P 2 constituent codes define the N symbols of the global code word.
  • This code requires P equal to P_ memory banks, each being filled by a line of the non-permuted matrix.
  • the first (respectively second) group can then be decoded simultaneously by P] (respectively P 2 ) decoders in parallel.
  • P] decoders in parallel.
  • the matrix permutation process ensures during the decoding of the second group of rollers that the memory accesses are carried out on separate memory banks.
  • the coding operation makes it possible to construct an irregular code from K (equal to 24) information symbols.
  • This code consists of eight constituent codes R, (i being between 1 and 8) 411, 412, 413, 414, 441, 442, 443 and 444 of yield r. Each constituent code has a circumference of eight.
  • the information symbols are stored in four memory banks 401 to 404.
  • the interlacing 420 is defined in a similar manner to that presented with reference to FIG. 2.
  • the code is then defined as follows: information symbols are written line by line in a matrix M with four lines and six columns; - the rows of the matrix M are placed end to end to form a circular frame 400, which will be coded by the four rollers R, 411, R 2 412, R 3 413 and R 4 414.
  • the eight information symbols of Roulette R ! 41 1 (respectively R 2 412, R 3 413 and R 4 414) consist of the symbols of the line 401 (respectively 402, 403 and 404) of the matrix and the first two symbols of the roulette R 2
  • the eight roulette information symbols R 5 415 consist of the symbols of line 431 (respectively 432, 433 and 434) of the permuted matrix M 'and of the first two symbols of the roulette R 6 416 (respectively R 7 417, R 8 418 and R 5 415).
  • the permutation acting on the columns of the matrix M is chosen so that during the decoding of the rollers 441 to 444, the memory accesses can be carried out simultaneously on separate memory banks.
  • This permutation on the columns is for example the identity, a rotation on the columns or, more generally, any permutation respecting the property related to memory accesses set out above.
  • FIG. 5 presents an embodiment of a global coder 500 using P circular recursive systematic convolutional coders in parallel (CRSG) 571, 572, ..., 57 /, ..., 57P and whose architecture makes it possible to generate the codes which are notably described with reference to FIGS. 1, 2 and 4.
  • the global coder 500 accepts on an input 550 blocks of K information symbols which are also presented on an output 553 (the global code is systematic) and also supplies, on an output 590, blocks of redundancy symbols originating from the coding of information blocks.
  • the global encoder 500 includes:
  • the control unit 504 manages the operation of the entire device 500. This control unit produces the following control signals:
  • Jézéquel entitled “Multiple parallel concatenation of circular recursive systematic codes", and published in the journal Annales des Telecommunications, tome 54, n ° 3-4, pp 166- 172, 1999); a memory access command 502 defining the address of the symbol intended to be processed and intended for the modules 510 and 520; and
  • the control unit 504 can be implemented in wired form and / or in the form of a computer program executing on a processor.
  • the addresses of the accesses to the memory banks 561 to 56P are produced by the module 510, controlled via the signal 502 by the control unit 504.
  • the module 510 controls a permutation of the data on each bank if necessary via a addressing signal 505.
  • the data to be coded 550 is written to the memory banks 561, 562,
  • the memory bank 561 stores the symbols of index 0 to C-1;
  • the memory bank 562 stores the symbols of index C to 2C-1; - the memory bank 56i stores the index symbols (i-1) C to iC-1; and
  • the memory bank 56P stores the index symbols (P-1) C to K-.
  • the data to be coded include not only the information symbols but also redundancy symbols originating from a code constituting the global code.
  • the architecture of this variant being similar to that of the encoder 500, it will not be described in more detail.
  • the control unit 504 manages the write access for the symbols 550 or the reading of the symbols which are transferred to the output 553 when the latter are not directly read during their presentation on the input 550, via the signal 503 for the write and read commands and via the 510 module for determining access addresses.
  • Each of the memory blocks respectively 561 to 56P is connected to the module 530 by a link respectively 531 to 53P allowing the reading of the data by the module 530 in the corresponding memory block, this reading being also controlled by the signal 503 and the module 510. A simultaneous reading of a symbol in each of the memory blocks, by the module 530 is therefore possible.
  • the memory blocks 561 to 56P are of the single-port or double-port RAM type depending on the bandwidth required.
  • the block 520 defines the circular rotation O k to be applied to all of the symbols presented at the inputs 531 to 53P and transmits the signal 506 to the module 530 to indicate the circular rotation O k to be performed between the inputs and outputs of the 530 module.
  • Each of the CRSC coders respectively 571 to 57P is connected to the module 530 by a link respectively 541 to 54P allowing the reading of a symbol given at the output of the module 530 by the corresponding CRSC coder.
  • a symbol read by the module 530 is presented practically simultaneously with an output of the module 530 which switches this symbol to the appropriate output according to the signal 506.
  • a simultaneous reading of a symbol by each of the CRSC coders in the module 530 is therefore possible .
  • the polynomials generating the CRSC codes will be chosen identical for the P coders. According to a variant, for an adaptation to any global code, the polynomials generating the CRSC codes will not all be identical.
  • the redundancy bits produced by the CRSC coders 571 to 57P are punctured by the module 540 to provide the redundancy symbols 590 associated with the information symbols 550.
  • the memory banks 561 to 56P provide symbols (in an order possibly different from the input order, which corresponds to a first interleaving) on which the module 530 applies a circular rotation of O k symbols.
  • the symbols obtained are then used by the circular recursive convolutional coders 571 to 57P.
  • the data permutations are carried out by the control unit 504 and by the module 510; - two memory banks are used;
  • the module 510 provides, in this embodiment, two memory addresses for the two memory banks by means of the signal 505;
  • the spatial permutation between the memory banks is carried out by the control unit 504 and by the modules 520 and 530;
  • rollers 14 and 15 are coded simultaneously using coders 571 and 572 in the first step with T being 1 (respectively second step with T being 2), P then being 2.
  • coder 500 corresponding to the code illustrated with reference to FIG. 2 (respectively 3)
  • the permutation ⁇ 22 (respectively ⁇ ; 32) is carried out by the control unit 504 and by the module 510; the rotation 24 (respectively 34) is carried out by the control unit 504 and by the modules 520 and 530; and
  • the interleaver 420 is implemented by the control unit 504 and by the modules 510, 520 and 530; and the first group of rollers 411 Rj to 414 R 4 and the second group of rollers 441 R 5 to 444 R 8 are successively coded using coders 571 to 574, P then being equal to 4 and the rollers being coded simultaneously with l inside each group.
  • the coding operation of a frame of K information symbols by TP wheels therefore comprises the following steps:
  • T coding steps (T being equal to 2 in the previous examples illustrated with reference to FIGS. 1, 2 and 4) by P rollers making it possible to supply the corresponding redundancy symbols; punching (optional) of the redundancy symbols (produced by the P castors) by the module 540 enabling the desired performance to be obtained; and transmission on a channel of the K systematic symbols (if the code is systematic) and of the NK redundancy symbols, if necessary stamped.
  • the memory organization is, according to the embodiment described, as follows: at each memory address of a memory bank, the data relating to a systematic symbol (information symbol from the channel and / or extrinsic information produced by the decoders) as well as the redundancy symbols coming from the corresponding channel.
  • the following successive operations are carried out: initialization of the convolutional coders in the zero state via the signal 501; first reading of the C information symbols of the P casters considered and pre-coding of each of the casters; - determination of the initial states of the coders; and second reading of the C information symbols by the P casters considered and coding of each of the casters in order to produce the corresponding redundancy symbols.
  • a coder similar to the coder 500 implements non-convolutional circular recursive constituent codes.
  • an encoder suitable for coding the code illustrated with reference to FIG. 3 is implemented on the basis of the encoder 500 with the following modifications: - the perforation of the code is not necessary;
  • FIG. 6 shows a decoder 600 adapted to decode a global code produced by the coder 500 illustrated with reference to FIG. 5.
  • the decoder 600 uses P parallel SISO decoders 671, 672, ..., 67 /, ..., 67P each corresponding to coders 571, 572, ..., 57 /, ..., 51 P.
  • the decoder 600 accepts on an input 650 blocks of N flexible information symbols (symbols coming from the channel and possibly a priori information) and supplies on an output 680 decoded symbols.
  • the incoming data and / or stored in the decoder 600 are symbols of information and redundancy coming from the channel and weighted information produced by the decoders.
  • the global decoder 600 comprises: the entry 650 of soft information symbols; the output 680 of decoded symbols;
  • P memory banks (denoted BM X ) 661 to 66P; the basic decoders of the SISO 671 to 67P type; - an intra-line permutation module, PIL k 610, which is identical for the P memory banks;
  • the control unit 604 manages the operation of the entire device 600. This control unit produces the following control signals:
  • a memory access command 602 defining the address of the symbol intended to be processed and intended for the modules 610 and 620;
  • the control unit 604 also exchanges a control signal 601 with each of the SISO decoders; this signal makes it possible in particular to implement the stopping criterion by defining which are the decoders actually used during an iteration.
  • the addresses of the accesses to the memory banks 661 to 66P are produced by the module 610 controlled by the signal 602 by the control unit 604.
  • the module 610 controls a permutation of the data on each bank if necessary by means of a signal address 605.
  • the data to be decoded 650 is written to or read from the memory banks
  • the memory bank 661 stores the data relating to the symbols of index 0 to Cl ;
  • memory bank 662 stores the data relating to symbols of index C to 2C-1;
  • the memory bank 66i stores the data relating to the symbols of index (M) C to / C-1; and
  • the memory bank 66P stores the data relating to the index symbols (P-1) C to K-1.
  • the memory organization is adapted to the code.
  • the control unit 604 manages the write access for the symbols 650 or the reading of the symbols which are transferred to the output 680, via the signal 603 for the write and read commands and via the module 610 for the determination of the addresses. access.
  • Each of the memory blocks 661 to 66P respectively is connected to the module
  • Memory blocks 661 to 66P are single port or dual port RAM type depending on the bandwidth required.
  • Each of the SISO decoders respectively 671 to 67P is connected to the module
  • the block 620 applies, in this embodiment, the circular rotation O k to the set of symbols presented at the inputs / outputs 631 to 63P or 641 to 641P and transmits signal 606 to module 630 to indicate to it the circular rotation O k to be performed between the inputs and outputs of module 630.
  • a symbol read or written by the module 630 is presented together at an output of the module 630 which switches this symbol to the appropriate output according to the signal 606.
  • a simultaneous reading or writing of a symbol by each of the SISO decoders in the module 630 is therefore possible.
  • Each of the SISO decoders 671 to 67P uses a flexible input and flexible output algorithm, which produces weighted information during the first (respectively second) step, T being 1 (respectively 2) and P being then 2.
  • the SISO decoders contain also the modules allowing the stop criterion to be implemented. Each of the modules returns information in particular on the convergence of the decoding associated with the corresponding decoder, to the control unit by means of the signal 601. The control unit takes care of the implementation of the application of the criteria d 'stops.
  • the weighted information is then written to memory symmetrically to the previous read operation.
  • the memory banks 661 to 66P provide symbols (in an order possibly different from the entry order, which corresponds to a first interleaving) on which the module 630 applies a circular rotation of O k symbols.
  • the symbols obtained are then used by the SISO decoders 671 to 67P.
  • a symmetrical operation is implemented, the data being transmitted from each of the SISO decoders to a memory bank after passing through the module 630.
  • the module 690 determines the hard decisions, result of the decoding from the data present in the memory banks 661 to 66p.
  • the hard decisions can then be read on an output 691 of the decoder 600.
  • the decoder 600 corresponding to the code illustrated with reference to FIG.
  • the rotation 24 (respectively 34) is carried out by the control unit 604 and by the modules 620 and 630;
  • the first group of rollers 21 R, at R 5 (respectively 31 R_ to R 5 ) and the second group of rollers 26 R 6 at R 10 (respectively 36 R ⁇ ; at Rc) are successively decoded using decoders 671 to 675, P then being equal to 5 and the rollers inside each group being decoded simultaneously in parallel.
  • decoders 671 to 675 P then being equal to 5 and the rollers inside each group being decoded simultaneously in parallel.
  • the interleaver 420 is implemented by the control unit 604 and by the modules 610, 620 and 630; and - the first group of rollers 411 Rj to 414 R 4 and the second group of rollers 441 R 5 to 444 R 8 are successively decoded using decoders 671 to 674, P then being equal to 4 and the rollers inside of each group being decoded simultaneously in parallel.
  • the iterative decoding operation of a frame of K information symbols by TP rollers therefore comprises the following steps:
  • T decoding steps T being, for example, 2 for the codes illustrated previously with reference to FIGS. 1 to 4
  • P casters implementing an SISO type algorithm which requires reading C systematic information symbols of the roulette considered and the writing of the C weighted information symbols produced in the corresponding memory banks; and - reading, in the memory banks 661 to 66P, of the data relating to
  • the iterative decoding is controlled by the control unit 600 defining the iterative decoding algorithm to be used and in particular the use of the stop criterion.
  • a stop criterion is applied to data windows. Each of the windows is determined so as to correspond exactly to a constituent code.
  • the stopping criterion is used in several ways, in particular: if at least one of the P decoders used in parallel has converged (indication by each corresponding signal 601), the control unit
  • control unit 600 freezes this or these decoders; and / or if all the P decoders used in parallel have converged (indicated by the corresponding signals 601), the control unit 600 skips the decoding step t corresponding and goes directly to the next decoding step t + 1, which allows a gain in decoding latency and consumption.
  • the decoding algorithms used for SISO decoders reference is made to the articles (respectively describing a BJCR and Niterbi type algorithm): - "Optimal decoding oflinear codes for minimizing symbol error rate",
  • a decoder similar to the decoder 600 implements systematic non-convolutional circular recursive constituent codes.
  • a decoder adapted to the coding of the code illustrated with reference to FIG. 3 is implemented on the basis of the decoder 600 with an organization of the memory adapted to the code.
  • each symbol of the code word is identified by a specific memory address (whereas for the decoder 600, the same addresses can be used for a systematic symbol and a corresponding redundancy symbol).
  • FIG. 7 illustrates an application of the coding and decoding method according to the invention to the storage of data on magnetic and / or optical medium.
  • the channel 700 is a magnetic channel with interference between symbols which corresponds to a convolutional code and makes it possible to code the data according to a roller code.
  • channel 700 is continuous. Its cutting into casters (in essence of finite size) therefore requires special treatment.
  • particular symbols are inserted in the frame so as to obtain a periodic return to a predefined state (for example, state 0). The number of symbols added is greater than or equal to the memory of channel 700. The cutting of the rollers is then done between two forced passages in the predefined state.
  • four blocks each comprising three information symbols are coded respectively by four rollers 721, 731, 741 and 751 to form four code words 720, 730, 740 and 750.
  • the data thus coded are then interleaved (according to an interleaving 770) and recorded on a magnetic medium corresponding to channel 700 (data 701 to 716). If the memory of channel 700 is equal, for example, to three, three bits 717 to 719 equal to 0 are added after the symbols 701 to 716 recorded, which makes it possible to force the passage of a wheel 760 corresponding to the coding on channel 700 of the symbols recorded 701 to 719 in the predefined state equal to 0.
  • rollers are created by duplicating the last bits of the rollers so as to “loop back” the information (for example, a message 11 12 13 14 will be transmitted in channel 700 by a message supplemented by the last two symbols 13 14 placed at the head of a completed message 13 14 II 12 13 14 if the memory of channel 700 is equal to 2, with only the four final symbols of the completed message which participates in a roulette).
  • the edge effects are managed by covering the rollers as illustrated with reference to FIG. 4, different blocks corresponding to a roulette coded by the channel being treated independently, taking a context which makes it possible to ensure the convergence of the decoding algorithms, so that the code thus obtained is not sub-optimal.
  • a message to be coded is divided into blocks and edge effects are managed, on decoding, by a mechanism for transmitting information (for example, of the state of the nodes of the trellis used by a SISO type) from one block to another.
  • the decoding operation is carried out by a decoder quite similar to that illustrated with reference to FIG. 6, with elementary decoders corresponding to the sub-codes 700, 721, 731, 741 and 751, the codes 721, 731, 741 and 751 can be decoded in parallel by separate decoders.
  • several blocks coded according to code 700 can themselves be decoded in parallel by separate decoders. It will therefore not be described in more detail.
  • the number of coders / decoders and the number of memory banks may be different.
  • P preferably being equal to the number of decoders that can be used in parallel
  • w two, three, four or more symbols in parallel so as to reduce the processing time of each code.
  • the P decoders then globally read wP data in wP logical memory banks at each clock cycle.
  • the number of memory banks is then strictly greater than the number of decoders supplied in parallel.
  • the architecture of the decoder (and of the corresponding coder) can be defined with flexibility because there is more freedom to allocate resources to process (memorization, decoding, coding, ...) several symbols than to process a single one .
  • the decoding method in a heterogeneous system for which at least two decoders are of a different nature and do not require the same number of data per clock cycle to be processed in real time.
  • the system is then balanced to adapt the bandwidths between the memory banks and the decoders by having a number of memory banks different from the number P of decoders supplied in parallel.
  • decoding modules implementing a decoding iteration may be cascaded.
  • the number of memory banks as well as sub-code coders / decoders may be reduced (for example to correspond to a fraction of the number of sub-codes. codes belonging to the global code).
  • the invention is not limited to the case where the number of steps T is equal to 2 but also extends to cases where T is greater than 2, in particular when the global code can be modeled in the form of a first matrix and of second matrices, each second matrix being obtained by interleaving the columns and possibly the rows of the first matrix, and each row of the first and second matrices corresponding to a subcode word of the global code.
  • T can clearly take any value (for example, 3, 4, 5, ).
  • the invention is not limited either to the case where the dimension of the code is equal to 2 but also extends to cases where it is greater than 2.
  • the invention is not limited to the coding or decoding of data intended for or coming from a transmission channel but extends to any application of the error correcting codes and, in particular to the storage of data on supports. magnetic and / or optical.
  • the invention further relates to devices comprising one or more coders or decoders according to the invention, and in particular to mobiles or radio communication infrastructure equipment as well as data transmission and / or reception equipment, in particular wireless (e.g. radio, optical and / or acoustic) and broadband.
  • devices comprising one or more coders or decoders according to the invention, and in particular to mobiles or radio communication infrastructure equipment as well as data transmission and / or reception equipment, in particular wireless (e.g. radio, optical and / or acoustic) and broadband.
  • wireless e.g. radio, optical and / or acoustic
  • the invention also relates to the codes generated by the coders described above and to the information signals coded with such coders.
  • the invention is not limited to the code allowing uniform protection of information symbols but also extends to the case where a level of protection as a function of the information symbols themselves (for example, from different sources or of unequal importance according to a source coding or according to their meaning (data or control symbols)).
  • the codes constituting a global code according to the invention could be of different performance depending on the level of protection desired.
  • the information symbols may have different degrees and be distributed over one or more constituent codes.
  • the invention is not limited to a purely material installation but that it can also be implemented in the form of a sequence of instructions of a computer program or any form mixing a material part and a part software.
  • the corresponding sequence of instructions may be stored in a removable storage means (such as for example a floppy disk, a CD-ROM or a DVD-ROM) or no, this way of storage being partially or fully readable by a computer or a microprocessor.

Landscapes

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

Abstract

L'invention concerne un procédé de décodage de code correcteur d'erreurs, du type associant un bloc de données décodé à des données codées selon un code global comprenant au moins deux sous-caves constituants (Ri), un graphe bipartite irrégulier étant associé au code global, le procédé de décodage étant itératif, un bloc de données à décoder étant réparti dans une pluralité de bancs mémoires disjoints (Mi), adressages indépendamment, le procédé comprenant, en outre à chaque itération , une étape d'alimentation en parallèle d'au moins deux décodeurs (671, 672, 67i, 67P) correspondant chacun respectivement à au moins un des sous-caves, par des données à décoder, des données à décoder étant extraites en parallèle d'au moins deux des bancs mémoires (Mi) pour alimenter autant de décodeurs, et chacun des décodeurs étant alimenté séquentiellement par les données à décoder lui correspondant. L'invention concerne également un procédé de codage, des dispositifs de codage/décodage et un signal correspondants.

Description

Procédé de codage et/ou de décodage de codes correcteurs d'erreurs, dispositifs et signal correspondants.
La présente invention se rapporte au domaine du codage de données numériques destinées à être transmises et/ou mémorisées sur un canal bruité puis décodées de manière à corriger les erreurs de transmission et/ou de lecture.
Plus précisément, l'invention concerne le codage correcteur d'erreurs reposant sur la concaténation parallèle de plusieurs codes, et une méthode de décodage permettant des débits élevés. Encore plus précisément, l'invention concerne une amélioration du procédé de codage communément appelé « turbo-codes », ainsi que le procédé de décodage associé.
Le principe général des « turbo-codes » (marque déposée) est présenté dans le brevet français n° FR-91 05280, ayant pour titre « Procédé de codage correcteur d'erreur à au moins deux codages convolutifs systématiques parallèles, procédé de décodage itératif, module de décodage et décodeur correspondant ».
Ce document décrit un premier type de « turbo-codes » reposant sur l'utilisation de codes convolutifs récursifs systématiques.
Les « turbo-codes » possèdent les avantages de la simplicité, de la régularité et de la souplesse du choix du rendement pour des performances élevées.
L'utilisation des « turbo-codes » nécessite un décodage itératif dont les performances croissent au cours des itérations. Pour atteindre les performances quasi-optimales, il est nécessaire d'effectuer de l'ordre d'une dizaine d'itérations ce qui pénalise grandement la rapidité de décodage. Ainsi, un inconvénient des « turbo-codes » de l'art antérieur est qu'ils présentent une latence importante au décodage, due à leur nature.
Un autre inconvénient des turbo-codes décrits précédemment est qu'ils ne sont pas adaptés à une architecture parallèle de décodage. On connaît également des codes de parités, notamment : - des codes LDPC décrits par R.G. Gallager dans le document « Low- density parity-check codes » (ou en français « Codes de parité à faible densité ») et paru aux éditions MIT Press en 1963.
- des codes à faible densité généralisé (GLD) décrits par R.M. Tanner dans un article intitulé « A recursive approach to low complexity codes » (ou, en français, « une approche recursive des codes à faibles complexité »), paru dans la revue IEEE Transaction On Information
Theory, Vol. IT-27 en septembre 1981.
Ces codes présentent les mêmes inconvénients que les turbo-codes précédemment décrits. En particulier, ils présentent une forte latence au décodage car ils nécessitent un nombre d'itération très grand. En outre, ils ne sont pas adaptés à un décodage en parallèle de codes élémentaires les constituants car ils sont irréguliers.
Ainsi, pour des applications de type temps réel telles que la voix et la vidéo, des trames courtes sont nécessaires afin de diminuer la latence de décodage. La diminution de la taille des trames entraîne une dégradation de la fiabilité des données décodées. En effet, celle-ci croît avec le nombre de symboles pris en compte dans une trame. De plus, les algorithmes utilisés pour décoder une trame sont basés sur un algorithme de type SISO (de l'anglais « Soft Input Soft Output » ou « à Entrées souples et Sorties Souples » en français) (par exemple un algorithme MAP (ou « Maximum A Posteriori »)) dont le degré de parallélisme est réduit et qui, par conséquent, limite le débit maximum possible.
On connaît également des « turbo-codes produits » constitués de plusieurs codes concaténés en bloc suivant au moins deux dimensions d'un tableau représentatif d'un « turbo-code produit » correspondant. Des turbo-codes produits sont présentés notamment dans le document « Near Optimum decoding of product codes » (ou « Décodage proche de l'optimum des codes produits ») en français) écrit par R. Pyndiah, A. Glavieux, A. Picard et S. Jacq et publié dans le compte- rendu du colloque Globecom'94 de San Francisco (Etats Unis) en 1994. Ils permettent un degré de parallélisme plus important au décodage que les « turbo- codes » de premier type décrits ci-dessus, plusieurs codes constituants pouvant être décodés en parallèle. Les codes constituants utilisés sont des codes linéaires algébriques. Néanmoins, le choix d'un entrelaceur régulier n'est pas optimal en termes de performances. On connaît, en outre, des codes permettant d'améliorer la latence au décodage et décrits dans l'article « Decoder-first code design » (ou « élaboration de code d'abord construit sur base d'un décodeur ») écrit par E. Boutillon, J. Castura et F. Kschischang et paru dans le compte-rendu « proceedings of the 2nd international Symposium on turbo codes and related topics », pages 459 à 462 (Brest, France) en septembre 2000.
Dans cet article, on décrit une structure de décodeur adapté à décoder des codes de parité à faible densité (LDPC). Selon la structure décrite, différents bancs mémoires contenant des données à décoder alimentent en parallèle des décodeurs associés chacun à un code de parité. L'ensemble des données correspondant à un mot de code de parité entrent simultanément dans un décodeur élémentaire. En outre, les décodages élémentaires se font en parallèle. Ainsi, on obtient une faible latence de décodage.
Néanmoins, cette technique de l'art antérieur présente l'inconvénient d'être relativement complexe à mettre en oeuvre. En outre, elle nécessite de nombreux bancs mémoires, le nombre de bancs mémoires étant égal au nombre de données entrant simultanément dans les décodeurs élémentaires, soit le produit du nombre de décodeurs par la taille d'un mot de code élémentaire. Aussi, cette technique n'est pas adaptée aux codes LDPC de grande taille. Cette technique présente également l'inconvénient de ne pas offrir une qualité de code suffisante pour de nombreuses applications.
L'invention selon ses différents aspects a notamment pour objectif de pallier ces inconvénients de l'art antérieur.
Plus précisément, un objectif de l'invention est de fournir un code sous forme de signal et un procédé de codage et/ou de décodage associé ainsi que les dispositifs correspondant, qui combinent les avantages d'un bon taux d'erreur binaire avec une latence de décodage faible et/ou un débit important.
Plus précisément, un objectif de l'invention est de fournir un code sous forme de signal et un procédé de codage et/ou de décodage associé ainsi que les dispositifs correspondant, qui combinent les avantages d'un bon taux d'erreur binaire avec une latence de décodage faible et/ou un débit important.
Un autre objectif de l'invention est de fournir un code qui possède une distance libre élevée pour une longueur de code, donnée et donc une grande capacité de correction d'erreurs. Encore un autre objectif de l'invention est de fournir un code et un procédé de codage et/ou de décodage associé ainsi que les dispositifs correspondant, qui soient relativement simples à mettre en œuvre.
Dans ce but, l'invention propose un procédé de décodage de code correcteur d'erreurs, du type associant un bloc de données décodé à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé au code global, le procédé de décodage étant itératif et produisant à chaque itération un bloc de données extrinsèques, chacune des données extrinsèques se rapportant à une des données codées, le procédé mettant en œuvre une étape de mémorisation d'un bloc de données à décoder comprenant lesdites données codées et les données extrinsèques, le bloc de données à décoder étant réparti dans une pluralité de bancs mémoires disjoints, adressables indépendamment, le procédé étant remarquable en ce : qu'à chaque itération, il comprend, en outre, une étape d'alimentation en parallèle d'au moins deux décodeurs parmi une pluralité de décodeurs, correspondant chacun respectivement à au moins un desdits sous-codes, par des données à décoder correspondantes du bloc de données à décoder,
- des données à décoder étant extraites en parallèle d'au moins deux desdits bancs mémoires pour alimenter autant de décodeurs, et - chacun des décodeurs étant alimenté séquentiellement par les données à décoder lui correspondant. Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins un des sous-codes est un code récursif convolutif circulaire. Selon une caractéristique particulière, le procédé est remarquable en en ce qu'au moins un des sous-codes est un code systématique.
Ainsi, l'invention permet une utilisation de codes courts et donc une diminution de la latence de codage.
En outre, le procédé de codage permet une amélioration des codes GLD utilisant plusieurs sous-codes constituants.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins deux des sous-codes sont des codes m-binaires, m étant un entier supérieur ou égal à 2 et en ce qu'une permutation intra-symboles est appliquée entre au moins deux des sous-codes m-binaires. Ainsi, l'invention s'applique non seulement aux sous-codes constituants binaires, mais également aux sous-codes constituants duo-binaires ou plus généralement aux sous-codes constituants m-binaires.
Selon une caractéristique particulière, le procédé est remarquable en en ce qu'il comprend, en outre, une étape d'aiguillage de chacune des données à décoder vers un des décodeurs, lesdites données étant aiguillées en parallèle et simultanément de sorte que chacune d'entre elles alimente un décodeur lui correspondant en propre.
Selon une caractéristique particulière, le procédé est remarquable en ce que ladite étape d'aiguillage comprend elle-même une étape de permutation circulaire d'un ensemble comprenant au moins une partie des données à décoder.
Ainsi, l'invention permet d'améliorer l'entrelacement tout en utilisant le maximum de parallélisme liés au décodage en parallèle de plusieurs codes constituants du code global. Selon une caractéristique particulière, le procédé est remarquable en ce que la permutation circulaire est une rotation qui possède un pas déterminé en fonction du rang de lecture des données lues dans les bancs mémoires.
Ainsi, l'entrelaceur est mis en œuvre simplement et efficacement. Selon une caractéristique particulière, le procédé est remarquable en ce que l'étape d'aiguillage met en œuvre une étape d'adressage de chacun des bancs mémoires de sorte que des données puissent être lues dans le banc mémoire dans un ordre prédéterminé distinct de l'ordre d'écriture desdites données dans le banc mémoire. Ainsi, on a une grande variété de choix d'entrelaceurs et donc des possibilités d'optimisation du code obtenu, tout en tenant compte au maximum du parallélisme des différentes opérations. Ceci permet d'obtenir un code global ayant de très bonnes performances.
Selon une caractéristique particulière, le procédé est remarquable en en ce que chaque ligne d'une première matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à un premier groupe de sous-codes ; - chaque ligne d'au moins une deuxième matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à au moins un deuxième groupe de sous-codes ;
- chaque matrice parmi les deuxièmes matrices de données étant obtenue à partir d'une transformation de ladite première matrice, la transformation comprenant une permutation d'au moins une partie des colonnes de la première matrice.
La notion de matrice est relativement théorique et l'homme du métier met en œuvre une matrice, en pratique, sous différentes formes et notamment en distinguant des sous-blocs dans un bloc de données, chaque sous-bloc correspondant à une ligne de matrice étant codé selon un sous-code du code global.
Selon une caractéristique particulière, le procédé est remarquable en ce que la transformation comprend, en outre, une permutation d'au moins une partie des lignes de la première matrice.
Ainsi, l'invention permet un grand choix d'entrelaceurs (c'est-à-dire de permutations) tout en conservant une mise en œuvre relativement simple.
Selon une caractéristique particulière, le procédé est remarquable en ce que chaque ligne d'une première matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à un premier groupe de sous-codes, une partie des données de la première matrice, dites données non significatives, n'étant pas significative ;
- chaque ligne d'un premier sous-ensemble de lignes d'au moins une deuxième matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à au moins un deuxième groupe de sous-codes ;
- un deuxième sous-ensemble lignes de la deuxième matrice de données contenant les données non significatives ; et
- chaque matrice parmi les au moins une deuxième matrice de données étant obtenue à partir d'une transformation de la première matrice, la transformation comprenant une permutation d'au moins une partie des colonnes de la première matrice. Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend une étape de test de décodage mettant en œuvre au moins un critère d'arrêt de façon à ce que lorsque le au moins un critère d'arrêt est vérifié pour au moins un des sous-codes, au moins un des décodeurs associés au ou aux sous-codes s'arrête de décoder le ou les sous-codes pour lesquels le ou les critères d'arrêt sont vérifiés. De cette manière, la définition du code global permet l'application d'un critère d'arrêt sur les codes constituants afin de réduire au fil des itérations le nombre de codes constituants traités. Ce critère d'arrêt est, par exemple, basé sur le seuillage des décisions pondérées. Ainsi, l'invention permet d'économiser du temps de calcul du dispositif de décodage et donc de l'énergie, ce qui est particulièrement utile lorsque le procédé de décodage est mis en œuvre au sein de terminaux fonctionnant sur batterie.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il met en œuvre une étape de lecture des données codées à partir d'un support optique et/ou magnétique et/ou de transmission desdites données codées sur un canal à interférences.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins un des sous-codes correspond à des interférences entre des symboles représentatifs du bloc de données décodé lorsque le bloc est stocké sur le support optique et/ou magnétique et/ou lorsque le bloc est transmis dans un canal à interférences.
Ainsi, l'invention est particulièrement bien adaptée aux applications de stockage sur un support optique et/ou magnétique, le canal de stockage permettant lui même de coder des données stockées selon un sous-code mettant en œuvre des interférences entre des symboles correspondant aux données stockées et/ou transmises. Un ou plusieurs autres sous-codes peuvent alors être mis en œuvre selon des techniques de codes utilisant, par exemple, des codes récursifs systématiques circulaires.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il met en œuvre une étape de réception des données codées en provenance d'un émetteur.
Ainsi, l'invention peut avantageusement être mise en œuvre pour des applications de type transmission sur un canal bruité (par exemple, canal sans fil radio, infra-rouge et/ou acoustique) Selon une caractéristique particulière, le procédé est remarquable en ce que les ensembles de données codées avec chacun des sous-codes sont tous différents deux à deux.
Ainsi, le graphe bipartite associé au code global est irrégulier notamment parce que les sous-codes du code global sont tous différents deux à deux.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins deux des sous-codes comprennent au moins deux des données à décoder en commun.
Ainsi, le graphe bipartite associé au code global est irrégulier notamment parce que deux sous-codes du code global ont au moins deux données en commun.
Selon une caractéristique particulière, le procédé est remarquable en ce que le code global est de type code produit avec un entrelaceur non uniforme.
Ainsi, le graphe bipartite associé au code global de type code produit est irrégulier notamment parce que l'entrelaceur associé n'est pas uniforme, c'est-à- dire que, si le code global est symbolisé par une matrice à deux dimensions, les sous-codes ne correspondent pas uniquement aux lignes et aux colonnes de la matrice.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend, en outre, une étape de démultiplexage du bloc de données décodé de façon à alimenter au moins deux destinataires distincts par des données appartenant au bloc de données décodé démultiplexé.
Ainsi, l'invention peut prend en compte des données en provenance de sources différentes (par exemple, de type multimédia). Ces données sont regroupées pour être codées selon un code de taille plus grande que si les données issues de sources distinctes étaient codées séparément. Elles bénéficient donc d'un pouvoir de correction plus élevé, chaque bloc d'information correspondant à une fraction ou un sous-ensemble des roulettes du code global. Le code global de taille plus grande est donc plus efficace et ses propriétés peuvent donc avantageusement être exploitées par le procédé de décodage. Selon une caractéristique particulière, le procédé est remarquable en ce que le degré des symboles d'information du bloc de données décodé, dans le code global n'est pas uniforme.
Le degré d'un symbole d'information dans un code global est, ici, par définition le nombre d'arcs qui sont connectés à ce symbole dans une représentation du code sous forme de graphe bipartite.
Ainsi, plus des bits d'information nécessitent un niveau de protection élevé, plus leur degré dans le code global sera élevé. La protection d'un symbole peut, en outre, être améliorée en diminuant le rendement des sous-codes constituants auquel le symbole est associé.
Selon une caractéristique particulière, le procédé est remarquable en ce que le nombre des bancs mémoires est différent du nombre de décodeurs alimentés en parallèle.
Ainsi, le procédé de décodage est particulièrement bien adapté à différentes situations. Par exemple, dans le cas d'une application à très haut débit, afin d'améliorer le débit ou de rendre compatible le procédé avec une telle application, non seulement plusieurs décodeurs sont utilisés en parallèle mais au moins un des décodeurs est alimenté à partir de deux bancs mémoires logiques distincts. Il est aussi possible d'utiliser le procédé de décodage dans un système hétérogène pour lequel au moins deux décodeurs sont de nature différente et ne nécessitent pas le même nombre de données par cycle d'horloge pour être traité en temps réel. Le nombre de décodeurs (notamment dans ce cas) peut-être inférieur ou supérieur au nombre de bancs mémoire logiques. particulière, le procédé est remarquable en ce qu'au moins deux bancs mémoires sont adressés simultanément par un même décodeur d'adresse.
Le décodeur d'adresse permet de sélectionner un mot dans une mémoire pour une lecture ou une écriture. Des bancs mémoires logiques peuvent être distingués par la destination des données qu'ils contiennent, la différentiation se faisant par les aiguillages et les traitements qu'on fait subir aux données (deux symboles de deux bancs mémoires logiques distincts étant à un moment donné aiguillés vers deux décodeurs distincts).
Lorsque les adresses d'accès à différents bancs mémoires logiques sont toujours identiques lors d'une opération de décodage (ou de codage), on peut, selon l'invention, adresser simultanément ces bancs mémoires par un même décodeur d'adresse et les regrouper en une seule mémoire physique. Ainsi, on simplifie la mise en œuvre des dispositifs de décodage (par exemple, en économisant de la surface de silicium) et/ou on diminue leur consommation d'énergie. Néanmoins, à chaque lecture et/ou écriture, la séparation des données permettant un décodage en parallèle est toujours effective, car les mots lus sont ensuite permutés par un réseau de permutation avant d'alimenter en parallèle plusieurs décodeurs.
L'invention concerne également un procédé de codage de code correcteur d'erreurs, du type associant un bloc de données source à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, le bloc de données codées étant destiné à être transmis vers au moins un récepteur et/ou stocké sur un support de données, remarquable en ce que le bloc de données codées est destiné à être décodé par le procédé de décodage itératif. L'invention concerne, en outre, un procédé de codage de code correcteur d'erreurs, du type associant un bloc de données source à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, le bloc de données codées étant destiné à être transmis vers au moins un récepteur et/ou stocké sur un support de données, le bloc de données codées étant destiné à être décodé par un procédé de décodage itératif, remarquable en ce que le procédé comprend, en outre, une étape d'alimentation en parallèle d'au moins deux codeurs parmi une pluralité de codeurs, correspondant chacun respectivement à au moins un des sous-codes, par des données à coder correspondantes dudit bloc de données à coder, des données à coder étant extraites en parallèle d'au moins deux bancs mémoires pour alimenter autant de codeurs.
Selon une caractéristique particulière, le procédé est remarquable en ce que chacun des codeurs est alimenté séquentiellement par les données à coder lui correspondant.
Selon une caractéristique particulière, le procédé est remarquable en en ce qu'au moins un desdits sous-codes est un code récursif convolutif circulaire.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins un des sous-codes est un code systématique. Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins deux des sous-codes sont des codes m-binaires, m étant un entier supérieur ou égal à 2 et en ce qu'une permutation intra-symboles est appliquée entre au moins deux des sous-codes m-binaires.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend, en outre, une étape d'aiguillage de chacune des données à coder vers un des codeurs, les données étant aiguillées en parallèle et simultanément de sorte que chacune d'entre elles alimente un codeur lui correspondant en propre.
Selon une caractéristique particulière, le procédé est remarquable en ce que l'étape d'aiguillage comprend elle-même une étape de permutation circulaire d'un ensemble comprenant au moins une partie des données à coder.
Selon une caractéristique particulière, le procédé est remarquable en ce que la permutation circulaire est une rotation qui possède un pas déterminé en fonction du rang de lecture des données lues dans les bancs mémoires.
Selon une caractéristique particulière, le procédé est remarquable en ce que l'étape d'aiguillage met en œuvre une étape d'adressage de chacun des bancs mémoires de sorte que des données puissent être lues dans le banc mémoire dans un ordre prédéterminé distinct de l'ordre d'écriture des données dans le banc mémoire.
Selon une caractéristique particulière, le procédé est remarquable en ce que chaque ligne d'une première matrice de données représentatives desdites données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à un premier groupe de sous-codes ; chaque ligne d'au moins une deuxième matrice de données représentatives desdites données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à au moins un deuxième groupe de sous-codes ; chaque matrice parmi la ou les deuxièmes matrices de données étant obtenue à partir d'une transformation de la première matrice, la transformation comprenant une permutation d'au moins une partie des colonnes de la première matrice. Selon une caractéristique particulière, le procédé est remarquable en ce que la transformation comprend, en outre, une permutation d'au moins une partie des lignes de la première matrice.
Selon une caractéristique particulière, le procédé est remarquable en ce que chaque ligne d'une première matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à un premier groupe de sous-codes, une partie des données de la première matrice, dites données non significatives, n'étant pas significative ; chaque ligne d'un premier sous-ensemble de lignes d'au moins une deuxième matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à au moins un deuxième groupe de sous-codes ; un deuxième sous-ensemble lignes de la deuxième matrice de données contenant les données non significatives ; et chaque matrice parmi la ou les deuxièmes matrices de données étant obtenue à partir d'une transformation de la première matrice, la transformation comprenant une permutation d'au moins une partie des colonnes de la première matrice.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il met en œuvre une étape d'écriture desdites données codées sur un support optique et/ou magnétique et/ou de transmission des données codées sur un canal à interférences.
Selon une caractéristique particulière, le procédé est remarquable en qu'au moins un des sous-codes correspond à des interférences entre des symboles représentatifs du bloc de données décodé lorsque le bloc est stocké sur le support optique et/ou magnétique et/ou lorsque le bloc est transmis dans un canal à interférences.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il met en œuvre une étape d'émission desdites données codées à destination d'un récepteur.
Selon une caractéristique particulière, le procédé est remarquable en ce que les ensembles de données codées avec chacun des sous-codes sont tous différents deux à deux.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins deux des sous-codes comprennent au moins deux données codées en commun.
Selon une caractéristique particulière, le procédé est remarquable en ce que le code global est de type code produit avec un entrelaceur non uniforme.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend, en outre, une étape de multiplexage d'au moins deux blocs de données en provenance chacun de deux sources distinctes de façon à former le bloc de données source.
Selon une caractéristique particulière, le procédé est remarquable en ce que le degré des symboles d'information dudit bloc de données décodé, dans le code global n'est pas uniforme.
Selon une caractéristique particulière, le procédé est remarquable en ce que le nombre des bancs mémoires est différent du nombre des codeurs alimentés en parallèle. Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins deux bancs mémoires sont adressés simultanément par un même décodeur d'adresse.
L'invention concerne aussi un signal représentatif d'un bloc de données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé au code global, le bloc de données codées étant destiné à être décodé par le procédé de décodage itératif.
L'invention concerne, en outre, un dispositif de décodage de code correcteur d'erreurs, du type associant un bloc de données décodé à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, le procédé de décodage associé étant itératif et produisant à chaque itération un bloc de données extrinsèques, chacune des données extrinsèques se rapportant à une des données codées, le dispositif mettant en œuvre des moyens de mémorisation d'un bloc de données à décoder comprenant lesdites données codées et lesdites données extrinsèques, le bloc de données à décoder étant réparti dans une pluralité de bancs mémoires disjoints, adressables indépendamment, le dispositif étant remarquable en ce qu'à chaque itération, il comprend, en outre, des moyens d'alimentation en parallèle d'au moins deux décodeurs parmi une pluralité de décodeurs, correspondant chacun respectivement à au moins un des sous-codes, par des données à décoder correspondantes du bloc de données à décoder, des données à décoder étant extraites en parallèle d'au moins deux desdits bancs mémoires pour alimenter autant de décodeurs, et chacun des décodeurs étant alimenté séquentiellement par les données à décoder lui correspondant.
De plus, l'invention concerne un dispositif de codage de code correcteur d'erreurs, du type associant un bloc de données source à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé au code global, le bloc de données codées étant destiné à être transmis vers au moins un récepteur et/ou stocké sur un support de données, le bloc de données codées étant destiné à être décodé par un dispositif de décodage itératif, le dispositif étant en ce que le dispositif comprend, en outre, des moyens d'alimentation en parallèle d'au moins deux codeurs parmi une pluralité de codeurs, correspondant chacun respectivement à au moins un des sous-codes, par des données à coder correspondantes du bloc de données à coder, des données à coder étant extraites en parallèle d'au moins deux des bancs mémoires pour alimenter autant de codeurs.
Les avantages des procédés de codage, du signal, du dispositif de codage et du dispositif de décodage sont les mêmes que ceux du procédé de décodage. Ils ne sont donc pas détaillés plus amplement.
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 préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : la figure 1 présente un mode particulier de réalisation de l'opération de codage de l'invention qui consiste à utiliser quatre roulettes permettant de former un code (12,8) selon l'invention ; les figures 2 et 3 illustrent deux modes particuliers de réalisation de l'opération de codage, selon l'invention ;
- la figure 4 présente un mode de réalisation d'un codeur permettant de construire des codes irréguliers, conforme à l'invention ;
- la figure 5 décrit un codeur dont l'architecture permet de mettre en oeuvre les codes selon les figures 1 à 4 ; - la figure 6 illustre un décodeur adapté à décoder des codes à roulettes décrits en regard des figures 1 à 4 ; et
- la figure 7 illustre une application de l'invention aux stockage de données. Le principe général de l'invention repose sur des codes permettant des décodages modulaires associés à différents niveaux de qualité et à différents débits suivant le nombre de modules implémentés dans un décodeur.
L'invention s'applique dans tous les cas où il est nécessaire de transmettre et/ou de mémoriser une information numérique avec un certain niveau de fiabilité. Un champ préférentiel d'application de l'invention est celui de la transmission numérique sur un canal bruité. Par exemple, l'invention peut être utilisée pour la transmission et réception de données dont la fiabilité et le débit on une importance vitale telles que les transmissions par satellite, sur fibre optique, sur un canal radio fréquence, sur un câble ou pour le stockage d'information sur un support physique.
L'invention s'applique également pour des applications de stockage de données sur des supports par exemple optiques et/ou magnétiques.
L'invention permet, en outre, de coder et décoder n'importe quel signal notamment un signal sonore, vidéo, de donnée ou la concaténation de plusieurs signaux hétérogènes.
Plus précisément, le principe général de l'invention repose sur un codage d'une séquence de K symboles d'informations, utilisant R codes constituants permettant d'obtenir un mot de code de longueur N supérieure strictement au nombre K.
Le code global comprend donc des codes constituants appelés, ici, « roulettes » par analogie à une réalisation possible utilisant des codes convolutifs récursif s systématiques et circulaires.
Pour chaque valeur d'un entier / variant de 1 à R, la iè e roulette R, d'un code global est définie, dans le cas général, par l'ensemble ordonné , des symboles du mot du code constituant (sous-code du code global) considéré. Par définition, m, représente le cardinal de Mt. L'ordre des symboles de M, est donné par la nature du code constituant et/ou par l'ordre induit par l'algorithme de décodage. Le code global est constitué à partir des roulettes par un graphe bipartite. Ce graphe comprend : une ligne comprenant les N symboles du mot de code global ; - une ligne contenant les R roulettes ; et - un ensemble de M arcs reliant les R roulettes avec les N symboles du mot de code. Selon l'invention, chaque roulette possède m, connexions. Elle est donc connectée à m, symboles du mot de code. Le nombre d'arcs M est donc égal à la somme des m, pour variant de 1 à R. On rappelle que de nombreux codes peuvent être décrits par un graphe bipartite général et appelés codes de Tanner qui consistent à décrire un code à l'aide d'un graphe bipartite qui associe des contraintes à un groupe de symboles d'information. Lorsque la contrainte est un simple code de parité, on obtient les LDPC décrits par R.G. Gallager dans le document « Low-density parity-check codes » (ou en français « Codes de parité à faible densité ») et paru aux éditions MIT Press en 1963. Si la contrainte est un code en bloc (n,k), alors on obtient un code à faible densité généralisé (GLD) décrits par R.M. Tanner dans un article intitulé « A recursive approach to low complexity codes » (ou, en français, « une approche recursive des codes à faibles complexité »), paru dans la revue IEEE Transaction On Information Theory, Nol. IT-27 en septembre 1981.
Un turbo-code (avec deux codes constituants) est généralement décrit par un graphe bipartite qui contient deux contraintes, respectivement associées à un codeur non entrelacé et à un codeur entrelacé.
On notera Φ;(M() l'ensemble ordonné des symboles du mot de code global relié à la roulette R,. On notera aussi, par souci de simplicité Φ,(£)> le numéro du symbole du mot de code qui est connecté avec la léème entrée de la roulette R,. Lors du décodage de la roulette /, Φ;(fc) sera donc le klime symbole utilisé par le décodeur. L'ensemble {Φ,(fc)} représente l'ensemble non ordonné des symboles du mot de code global relié à la roulette R,. Selon l'invention, le graphe bipartite vérifie les conditions suivantes : les ensembles Φ,( ,) vérifient une contrainte particulière, afin de permettre le décodage des codes constituants avec un degré P de parallélisme ; et le graphe bipartite est irrégulier. Afin de satisfaire la première des conditions énoncées ci-dessus, les ensembles Φ,(M() sont choisis de façon à permettre d'effectuer une itération de décodage (le traitement des R roulettes) en une ou plusieurs étapes (le nombre d'étapes étant noté T) et les roulettes de chaque étape t (t variant de 1 à T) étant décodées par au moins deux décodeurs en parallèle (le nombre de décodeurs étant noté P, avec P étant égal au rapport R sur T).
La première étape de chaque itération comprend un décodage des P premières roulettes R_, R2 ... RP par P décodeurs en parallèle, chacune des P premières roulettes étant associées à un des P décodeurs. La deuxième étape de chaque itération comprend un décodage des P roulettes suivantes RP+1, ... , R^. D'une manière générale, la t"è e étape de chaque itération (pour t variant de 1 à T-l) comprend un décodage des roulettes R(t.1)P+χ, ... , RtJ> chacune des P roulettes R(t.I)P+1, ... , RtP. étant associées à un des P décodeurs. L'étape T comprend un décodage des dernières roulettes (RR.P+], ... , RR).
Pour chaque étape t des T étapes de chaque itération, on utilise donc P décodeurs en parallèle, associés chacun à un banc mémoire BMj, BM2,... , BMP. Chacun des P bancs mémoires contient les données nécessaires à l'exécution d'un des P décodeurs ainsi que les données produites par un des P décodeurs. A chaque cycle symbole k de l'étape t, les P décodeurs traitant les P symboles
Figure imgf000021_0001
, Φ(t.]j P+2(k),... , ΦtJ>(k)) réalisent des accès mémoires en parallèle et indépendants dans R bancs distincts.
La contrainte sur les ensembles Φ,( ,) est donc la suivante : à chaque cycle symbole k : soit il existe une bijection qui associe, pour toutes les valeurs de t allant de 1 à T et pour toutes les valeurs de k allant de 1 à M, les P symboles (<* +y(*) . Φ(t.I).P+2(k),..., Φ,,(*)) aux P bancs (BM}, BM2,..., BMP) ; c'est-à-dire que l'on peut trouver une répartition des symboles dans les P bancs mémoires, compatible avec les ensembles Φ,( ,) et garantissant des accès mémoires en parallèle ; soit, dans le cas contraire, si les symboles Φt(k) et Φj(k) correspondent au même banc mémoire BMX, alors ils sont égaux (Φ,(fc) = Φ &)) ; la donnée lue dans un banc est alors unique et elle est dupliquée avant d'être transmise aux roulettes R.et R
Ainsi, lorsque l'on utilise P décodeurs en parallèle, on multiplie par un facteur égal à R la surface du circuit dédiée au calcul (partie calculatoire) par rapport à un seul décodeur. En revanche, le temps d'une itération est divisé par P.
La latence de décodage est donc divisée par P. Le débit est donc multiplié dans les mêmes proportions. En résumé, pour un accroissement linéaire de la surface, on obtient un accroissement linéaire du débit.
Par ailleurs, selon l'invention, le graphe bi-partite est irrégulier. Cette irrégularité permet de générer un code pseudo aléatoire et donc d'obtenir de bonnes performances. Elle se caractérise par les deux propriétés suivantes :
- les ensembles (Φ((Λ ,)} sont tous différents deux à deux (soit {Φ,(Λ ,)} ≠ {ΦJ(MJ)} pour tout i différent de./', i et j variants de 1 à R) (alors que cette propriété n'est pas vérifiée pour les « turbo-codes » classiques tels que décrits dans le brevet français n° FR-91 05280) ; et soit il existe deux ensembles {Φ,(M,)} et {ΦJ( )} pour deux valeurs i et j distinctes dont l'intersection contient au moins deux éléments (sous forme mathématique : il existe i différent de j tels que card({Φ,(M)} fl {Φ^M,)}) ≥ 2, où card représente la fonction cardinal d'un ensemble) ;
- soit le code vérifie la propriété: soit T l'ensemble des couples d'indice de roulette (ij,k) vérifiant :
- {Φ,( ,)} fl {Φj(M } = 0 (où 0 représente l'ensemble vide);
- cαr ({Φ1(M1)} n {Φ,(Mλ)}) = l ; et - card({Φ}{M)} D {Φt( *)}) = 1 ; alors :
- si {Φ,(M,)} 0 {Φk(Mk)} = {Φ,( ι)} (où Φ,(/ι) représente un point unique d'indice h pour la roulette R, ; et
- si (Φ/ ,)} D {Φk(Mk)} = {Φj(h')} (où Φ /V) représente un point unique d'indice Λ' pour la roulette R,) ; il existe au moins un triplet (ij,k) dans l'ensemble T tel que h est différent de h'.)
(dans ce cas, on peut obtenir des codes ayant de meilleures performances que les codes à concaténation parallèles qui utilise un entrelaceur uniforme, connus en soi, pour lesquels cette dernière condition n'est pas vérifiée et qui sont notamment décrits dans l'article « Code construction and decoding of Parallel concatenated tail-biting codes » (ou en français « construction de code et décodage de codes circulaires à concaténation parallèle ») écrit par C. Weiss, C. Bettstetter et S. Riedel et paru dans la revue « IEEE transaction on information theory », Vol. 47, Ν°l de janvier 2001)
Selon un autre aspect de l'invention, pour la mise en œuvre du décodage, afin de limiter la latence de décodage, on applique un critère d'arrêt tel que décrit dans le document « Stopping rules for turbo decoders » (ou « critère d'arrêt pour des turbo-décodeurs » en français ) écrit par A. Matache, S. Dolinar et F ; Pollara dans le rapport TMO progress Report 42-142 en août 2000 et édité par le JPL (Jet
Propulsion Laboratory). Néanmoins, selon des techniques connues, le critère d'arrêt est appliqué à partir d'un découpage d'une trame à décoder en fenêtres de taille égale. Le critère d'arrêt est alors appliqué sur les fenêtres de façon à arrêter le traitement des fenêtres ayant convergé et ainsi, diminuer le nombre de fenêtres traitées lors des itérations suivantes. Un tel dispositif présente deux inconvénients :
- le découpage en fenêtre est arbitraire et n'est en général, pas adapté à la configuration des erreurs résiduelles dans le processus de décodage ; et le découpage d'un trame continue en fenêtre nécessite une gestion complexe et sous-optimale des effets de bords.
Selon l'invention, le code, par construction, permet de pallier ces inconvénients de l'art antérieur en améliorant l'utilisation du critère d'arrêt à seuillage des décisions pondérées qui est appliqué pour chacune des R roulettes.
En effet, selon l'invention, la fenêtre sur laquelle est appliqué le critère d'arrêt n'est pas choisie de manière arbitraire mais, au contraire, cette fenêtre correspond exactement à un code constituant.
Ce critère d'arrêt peut être utilisé pour des applications à bas débits où l'on n'utilise pas le maximum de parallélisme permis par le code. On note que l'utilisation telle que décrite ci-après n'est pas limitée aux codes mettant en oeuvre un procédé de décodage selon l'invention mais s'applique à tout code comprenant au moins un sous-code de type roulette et un entrelacement des des symboles d'informations qui peut être quelconque. Ainsi, par exemple, on peut choisir d'implémenter un seul décodeur qui décode successivement les R roulettes. Ainsi, au cours du décodage d'une roulette, on applique un critère d'arrêt tel que décrit dans le rapport cité plus haut à chaque roulette (et non pas selon l'état de l'art seulement au code global). Si le critère est vérifié pour au moins une roulette, cette roulette ne sera plus décodée lors de l'itération suivante, permettant ainsi d'économiser de la consommation d'énergie et des ressources.
De même, si tous les décodeurs utilisés en parallèle ont convergé, on peut passer directement à l'étape de décodage suivante, ce qui permet un gain de latence de décodage et de consommation. Par ailleurs, si le critère est vérifié pour au moins une roulette, un décodeur associé pourra être utilisé pour décoder un bloc de données et, notamment, pour une autre roulette pour lequel un bloc de données est en attente de décodage. Ainsi, les ressources de décodage peuvent être réparties pour une optimisation en fonction des besoins.
Le procédé ainsi défini a donc trois propriétés avantageuses : le graphe est irrégulier ce qui permet d'émuler efficacement un code aléatoire, et donc d'obtenir de bonnes performances ; une mise en oeuvre simple du procédé de décodage à haut-débit est permise par le décodage simultané de plusieurs roulettes, les données étant prises en compte séquentiellement par chacun des décodeurs associés à une roulette ; et - le procédé permet une utilisation efficace de critère d'arrêt basé sur la structure du code et non sur un découpage arbitraire de la trame en paquets de taille égale. Par ailleurs, les procédés de codage et de décodage possèdent plusieurs variantes, notamment : - sur le graphe bipartite ; et/ou sur les roulettes. Selon différentes variantes sur le graphe bipartite, le code peut être : systématique ; ou non systématique (dans ce cas, lorsque les codes constituants sont des codes de parités, on obtient des codes de type code de parité à faible densité (ou LDPC)). Si le code est systématique, les roulettes R, du code (pour i variant de 1 à R) sont alors définies par les paramètres suivants : l'ensemble ordonné C, des symboles d'information systématique de la roulette ; par ailleurs, c, représente le nombre de symboles d'information systématique de la roulette R, (ou c, = card(C)). Ce nombre est appelé circonférence de la roulette R, ;
- l'ensemble ordonné E, des symboles de redondance de la roulette ; le nombre de symbole de redondance de la roulette R, est noté et (ou e, = card(E)); et
- la quantité m, égale à la somme de la circonférence c, et du nombre e, définit la taille de la roulette R, (ou m^ c,^- e,).
Ainsi, un ensemble ordonné M, constitué de la réunion ordonnée des ensembles C,et E, ( ou M, =(C„ E,)) de m, ( égal à la somme de c,et de e) symboles est un mot du code R, si le passage, dans l'ordre, des c, symboles C, dans le codeur associé à la roulette R, génère bien les e, symboles de redondance E,.
On notera deg(s) le degré du symbole numéro s du mot de code, c'est-à- dire, le nombre d'arcs qui sont connectés à ce symbole. On appelle dimension du code global, le maximum des degrés des symboles du mot de code. Préférentiellement, le nombre d'étapes est supérieur ou égal à la dimension du code global.
On notera π<( ) l'ensemble ordonné des symboles du mot de code relié à l'information de la roulette R,. Ainsi,
Figure imgf000026_0001
représente le numéro du symbole du mot de code qui est connecté à la kème entrée de la roulette R;. L'ensemble {]!;( )} représente l'ensemble non ordonné des symboles du mot de code relié à l'information de la roulette R,.
Selon des variantes de l'invention appliquées aux roulettes :
- les roulettes peuvent correspondre à des codes en bloc quelconques, par exemple, de type BCH ou Reed-Solomon ;
- les codes constituants peuvent être des codes convolutifs et notamment récursifs systématiques circulaires qui résolvent le problème de la fermeture du treillis associé au décodeur correspondant sans dégradation de l'efficacité spectrale du codage ; dans ce cas, on peut associer à chaque roulette : les polynômes générateurs du code convolutif récursif systématique associé à R, ; et - un motif de poinçonnage associé à la roulette R, permettant d'obtenir le rendement r,. ; - les codes utilisés peuvent être à base de symboles binaires, duo- binaires ou des n-uplets ;
- les codes (m„ c,) peuvent être identiques pour chacune des roulettes R, ; et/ou les poinçonnages peuvent être identiques pour toutes les roulettes R, et donc permettre un rendement rj- uniforme. Des variantes de mise en œuvre du graphe bipartite sont également possibles : le nombre de roulettes traitées au cours d'une étape de décodage peut être différent pour chaque étape : pour une architecture donnée, on peut notamment gérer les effets de bords dus à l'utilisation de mots de longueur variable (par exemple, le nombre de roulettes n'est pas nécessairement un multiple de P) ; et/ou selon les contraintes de la technologie, du type de réalisation de roulette (insertion de pipe-line, type de réalisation de l'algorithme du décodeur à entrée souple - sortie souple), et des contraintes de débits de l'application, le nombre P' de bancs mémoires et le nombre P de roulettes réalisées en parallèle peut-être différent ; néanmoins, le code doit être construit pour des valeurs de P' et P supérieures ou égales à 2.
Selon l'invention, le code peut être à deux dimensions. Ainsi, au code générique décrit précédemment, on ajoute les spécifications suivantes :
- le nombre de roulettes R est pair ; toutes les roulettes ont une circonférence égale à C ; et le degré deg(k) de chacun des K symboles d'informations vaut deux et chaque symbole d'information est connecté à deux roulettes distinctes. Les roulettes peuvent alors êtres séparées en deux groupes tels que dans chaque groupe, les degrés deg(k) des K symboles d'informations valent 1.
Selon une variante particulière réalisant une concaténation parallèle, les mots de code et les ensembles π,(C,) sont alors définis de la façon suivante :
- les K symboles du mot de code sont écrits ligne par ligne dans une matrice possédant R/2 lignes et C colonnes ;
- les lignes définissent les ensembles π,(C,) (i variant de 1 à R/2) du premier groupe. Elles sont des éléments des codes constituants correspondants ;
- on effectue ensuite pour chacune des lignes une permutation quelconque entre les symboles de ladite ligne ; - on effectue une permutation quelconque sur chacune des colonnes. En particulier, la permutation sur chacune des colonnes peut être une rotation circulaire ; et
- les lignes obtenues définissent les ensembles π,(C,) (i variant de R/2 à R) du second groupe. Elles sont codées par les codes constituants correspondants. Ce code à deux dimensions nécessite P égal à R/2 bancs mémoires chacun étant rempli par une ligne de la matrice non-permutée. Lorsque les codes constituants sont systématiques récursifs circulaires, on peut utiliser l'organisation de la mémoire suivante : à chaque adresse de la mémoire, sont mémorisées les données relatives au symbole systématique (symbole d'information en provenance du canal, informations extrinsèques produites par les décodeurs) ainsi que les symboles de redondance en provenance du canal correspondant. Chaque groupe peut alors être décodé simultanément par P décodeurs en parallèle en T (valant 2) étapes. Le procédé de permutation de la matrice assure lors du décodage du deuxième groupe de roulettes que les accès mémoires sont effectués sur des bancs mémoires distincts. Les permutations effectuées sur les lignes correspondent à un entrelacement temporel des données (c'est-à-dire, les permutations sur les lignes sont réalisées selon l'ordre de décodage par la lecture des symboles de chaque mémoire). Les permutations associées aux colonnes correspondent à un entrelacement spatial des données. Cet entrelacement est réalisé physiquement par un réseau de permutation entre les P bancs mémoires et les P décodeurs.
Selon l'invention, à partir du code décrit précédemment, on peut construire un code irrégulier. Les 2P codes constituants utilisés ont chacun une circonférence égale à la somme C+D.
Les ensembles H^C, définissant les codes constituant sont obtenus à partir des lignes des matrices non-permutées et des lignes permutées définies précédemment : chaque code constituant est associé à la séquence des symboles d'information d'une ligne à laquelle on ajoute les D premiers symboles d'information de la ligne suivante ; pour la dernière ligne, on ajoute les D symboles d'information de la première ligne.
Le code irrégulier ainsi construit possède des symboles de degré égal à trois qui sont situés aux extrémités des roulettes. Les autres symboles sont tous de degré égal à deux. Ce schéma de codage rend le code plus robuste aux erreurs de transmission et permet une convergence plus rapide du décodeur.
Selon encore une variante de l'invention mettant en oeuvre un code à deux dimensions par une concaténation série, avec un nombre de roulettes différent pour la première dimension et la deuxième dimension, on ajoute les spécifications suivantes : le nombre de roulettes vaut R qui est égal à la somme de Pλ et de P2 avec un produit de Pλ et de P2 valant N et P_ étant supérieur ou égal à R2 ; il y a donc Px roulettes de circonférence égale à P2 et P2 roulettes de circonférence égale à P_ ; - tous les degrés deg(k) des N symboles d'information valent 2 et donc chaque symbole d'information est connecté à deux roulettes distinctes. Les roulettes sont séparées en deux groupes de respectivement P_ et P2 roulettes.
Le procédé de codage et les ensembles Φ,(M,) du graphe bipartite sont alors définis de la façon suivante : les N symboles du mot de code sont écrits ligne par ligne dans une matrice possédant Pλ lignes et P2 colonnes ; à cette matrice, on ajoute un nombre de colonnes vides égal à la différence de Pλ et P2 (soit R, - P2 sous forme condensée) ; - les lignes définissent les ensembles Φ,( ,) (pour i allant de 1 à P) du premier groupe ; elles sont alors codées par les codes constituants correspondants de longueur égale à P2. on effectue ensuite pour chacune des lignes une permutation quelconque entre les symboles de ladite ligne ; ces permutations ne sont pas toutes identiques (selon une variante, ces permutations sont identiques et peuvent être avantageusement supprimées) ; ces permutations répartissent uniformément sur les colonnes, les symboles des colonnes vides de la matrice précédente ; on effectue une permutation 0_ sur chacune des P colonnes de la matrice résultante, en respectant la contrainte suivante : après permutation, les symboles vides de la matrice précédente se répartissent sur les P -P2 lignes ; les lignes non vides obtenues définissent les ensembles Φ,( ,) (pour i allant de R à Pι+P2) du second groupe ; elles sont codées par des codes constituants.
La permutation intra-ligne présentée dans les exemples précédents (code de dimension 2, codes irréguliers et codes produits) peut dans un mode préférentiel de réalisation être choisie parmi les permutations suivantes (la taille de la mémoire la ligne étant C): - le symbole k (k variant de 0 à C) de la roulette correspond au symbole situé à l'adresse égale au produit ak modulo C (l = ak mod C) de la mémoire où a et C sont premiers entre eux. Préférentiellement, dans ce cas, a est voisin de la racine carrée de C ; et - le symbole k (k variant de 0 à C) de la roulette correspond au symbole situé à l'adresse égale à la somme du produit ak et de β modulo C
(/ = ak + β mod C) de la mémoire où a et C étant premiers entre eux. Préférentiellement, dans ce cas, a est voisin de la racine carrée de C. L'invention concerne également les dispositifs de codage, décodage, d'entrelacement définissant les ensembles Φ/Λ ,) ou π,(C,). Ces dispositifs sont présentés en regard des figures 5, 6 et 7.
On présente, en relation avec la figure 1, le principe général du code selon un mode particulier de réalisation de l'invention.
Le code est composé de quatre codes constituants 14, 15, 16 et 17 dont deux codes peuvent être codés et/ou décodés simultanément selon l'invention. Chacun de ces codes constituants est un code convolutif récursif systématique circulaire :
- de circonférence égale à trois ;
- de taille égale à quatre ; et - définissant un code global de taille K égale à huit et de longueur N égale à douze. Chaque code constituant est représenté par une roulette, qui a :
- trois entrées ordonnées el, e2 et e3 associées chacune à un symbole d'information ; et - une sortie s associée à un symbole de redondance.
Le degré de chacun des symboles n'est pas uniforme :
- le degré des symboles de redondance (symboles 9 à 12) est égal à un ; et
- le degré des symboles d'information est égal à un (pour les symboles 2, 3, 7 et 8) ou deux (pour les symboles 1 , 4, 5 et 6).
L'ensemble des symboles 1 à 12 du code 13 est mémorisé dans deux bancs mémoires BM et BM2 qui contiennent respectivement les symboles suivants :
- 1 , 2, 3 , 4, 9 et 10 (banc mémoire BM ) ; et
- 5, 6, 7, 8, 11 et 12 (banc mémoire BM2). Lors de l'opération de codage et/ou de décodage, on code et/ou décode les roulettes avec un degré de parallélisme égal à deux. En effet, pour chacun des quatre symboles utilisés dans le code constituant, les accès mémoires suivants sont effectués:
- pour un premier groupe constitué des roulettes 14 et 15 : - à partir du symbole el , on accède aux symboles 1 ou 6 à partir du symbole e2, on accède aux symboles 5 ou 4
- à partir du symbole e3, on accède aux symboles 3 ou 8 ; et à partir du symbole s, on accède aux symboles 9 ou 11
- pour un deuxième groupe constitué des roulettes 16 et 17: - à partir du symbole el , on accède aux symboles 5 ou 2 ; à partir du symbole e2, on accède aux symboles 6 ou 1 ; à partir du symbole e3, on accède aux symboles 4 ou 7 ; et à partir du symbole s, on accède aux symboles 10 ou 12 ; A chaque cycle symbole, on accède à des bancs mémoires distincts et ainsi, on utilise un degré de parallélisme égal à deux.
Selon une variante de réalisation de l'invention décrite à la figure 2, l'opération de codage global est basée sur deux groupes distincts comprenant chacun P roulettes R; appliquées globalement aux mêmes données.
La circonférence de chacune des roulettes R; est égale à C. Les K symboles d'information à coder sont écrits ligne par ligne dans une matrice 20 à R lignes et C colonnes (K est égal au produit Px .
Chaque ligne est codée par un code constituant 21, par exemple du type code convolutif récursif systématique circulaire. La ièπιe ligne de la matrice 20 comprend les N symboles données d'un mot de code 21 (information systématique et redondance) correspondant à une roulettes R;. Selon une variante, la jè e ligne de la matrice 20 comprend les K symboles d'information systématique d'un mot de code 21 correspondant à une roulette R; (les symboles de redondance n'étant pas représentés).
Puis, on effectue une permutation des symboles de chacune des lignes par un entrelaceur Φ 22. Cet entrelaceur est identique pour chacune des lignes. Selon une variante de l'invention, cet entrelaceur est différent pour chaque ligne.
Selon une variante non représentée, l'entrelaceur Φ est égal à l'identité pour tous les lignes et peut donc être supprimé.
Sur chacune des colonnes de la matrice 23 est effectuée une permutation 0{ 24 de sorte que après permutation les C symboles de chacune des lignes de la matrice 25 proviennent de lignes différentes de la matrice 23 (avant permutation).
La permutation O;24 est circulaire, selon le mode préféré de réalisation, ou non circulaire selon une variante de réalisation.
Les lignes de la matrice 25 résultante sont codées par P codes constituants 26 qui peuvent être des codes convolutifs récursif s systématiques circulaires. La j-ème ijgne (je ja matrice 25 comprend les C symboles d'informations systématiques correspondant à une roulette Ri+5.
Ainsi, si la première (respectivement deuxième) ligne de la matrice 20 comprend une séquence qui commence par les bits a, h et c (respectivement d, e, f) comme illustré sur la figure 2, ces bits seront entrelacés par la permutation Φ
22. Ainsi, par exemple, les bits a , h et c seront respectivement placés à la quatrième, septième et deuxième position de la première ligne de la matrice 23.
De même, les bits d, e et/seront respectivement placés à la quatrième, septième et deuxième position de la deuxième ligne de la matrice 23. Les données des quatrième, septième et deuxième colonnes de la matrice 23 seront ensuite respectivement entrelacées par les permutations 24 O4, 07 et O8.
On obtient ainsi, la matrice 25 dans laquelle, par exemple : la donnée d est située en quatrième position de la première ligne ; les données c et e sont respectivement situées en deuxième et septième position de la deuxième ligne ; les données f et a sont respectivement situées en deuxième et quatrième position de la quatrième ligne ; et - la donnée b est située en septième position de la dernière ligne. Ainsi, les données a, b et c (respectivement d, e et/) qui sont placées dans une même ligne des matrices 20 et 23 sont, après les permutations Oj, situées dans des lignes distinctes de la matrice 25. De cette manière, alors qu'avant permutation, elles sont codées avec une même roulette R, (respectivement R2), après permutation, les données a, b et c (respectivement d, e et/) sont donc codées avec des roulettes distinctes. L'association des K symboles d'information et des symboles de redondance produits par les 2P codes constituants forme le mot de code de longueur N.
Selon une autre variante de réalisation de l'invention décrite à la figure 3, le graphe bipartite est séparé en deux groupes. Le premier groupe contient P} roulettes de circonférence P2 et le deuxième groupe comprend P2 roulettes de circonférences Px, avec R, supérieur ou égal à P2 et le produit P, par P2 égal à N.
Les N symboles d'information du mot de code global sont écrits ligne par ligne dans une matrice carrée 30 de coté Pλ dont seules les P2 premières colonnes sont remplies. Les Pλ - P2 dernières colonnes restent vides avec une valeur symbolisée par V.
Chacune des P_ lignes est codée par un code constituant 31 , la lème ligne de la matrice 30 correspondant à une roulette Rj de longueur P2. Chacun des codes 31 est, par exemple, un code convolutif récursif systématique circulaire (CRSC). Puis, on effectue une permutation des symboles de chacune des lignes par un entrelaceur Φ, 32. Chacun des Px entrelaceurs possède la propriété suivante : après permutation, les symboles V de la matrice 30 se répartissent uniformément sur toutes les colonnes de la matrice 33. Ainsi, on obtient le même nombre de symboles V sur chacune des colonnes de la matrice 33. On effectue une permutation Oj sur chacune des Pλ colonne de la matrice
33. Ces rotations possèdent la propriété suivante : après rotation, les symboles V de la matrice 33 se retrouvent dans les Pλ-P2 dernières lignes de la matrice 33.
Les P2 lignes non vides de la matrice résultante 35 sont alors codées par P2 codes constituants 36 de longueur P . Les P_+ P2 codes constituants définissent les N symboles du mot de code global.
Ce code nécessite P égal à P_ bancs mémoires, chacun étant rempli par une ligne de la matrice non permutée. Le premier (respectivement deuxième) groupe peut alors être décodé simultanément par P] (respectivement P2) décodeurs en parallèle. Le procédé de permutation de la matrice assure lors du décodage du deuxième groupe de roulettes que les accès mémoires sont effectués sur des bancs mémoires distincts.
Selon une autre variante de réalisation de l'invention décrite à la figure 4, l'opération de codage permet de construire un code irrégulier à partir de K (égal à 24) symboles d'informations. Ce code est constitué de huit codes constituants R, (i étant compris entre 1 et 8) 411, 412, 413, 414, 441, 442, 443 et 444 de rendement r. Chaque code constituant est de circonférence égale à huit.
Les symboles d'informations sont mémorisés dans quatre bancs mémoires 401 à 404. L'entrelacement 420 est défini de manière similaire à celui présenté en regard de la figure 2.
Le code est alors défini de la façon suivante : des symboles d'informations sont écrits ligne par ligne dans une matrice M à quatre lignes et six colonnes ; - les lignes de la matrice M sont mises bout à bout pour former une trame circulaire 400, qui va être codée par les quatre roulettes R, 411, R2 412, R3 413 et R4 414. Les huit symboles d'informations de la roulette R! 41 1 (respectivement R2 412, R3 413 et R4 414) sont constitués des symboles de la ligne 401 (respectivement 402, 403 et 404) de la matrice et des deux premiers symboles de la roulette R2
412 (respectivement R3 413, R4414 et Rλ 411) ;
On effectue une permutation 420 des quatre lignes puis une permutation des six colonnes de la matrice M pour obtenir une matrice permutée Λf ; - Les lignes de la matrice M' obtenue sont mises bout à bout pour former une trame circulaire 430, qui va être codée par les quatre roulettes R5
441, R6 442, R7 443 et R8 444. Les huit symboles d'informations de la roulette R5 415 (respectivement R6 416, R7 417 et R8 418) sont constitués des symboles de la ligne 431 (respectivement 432, 433 et 434) de la matrice permutée M' et des deux premiers symboles de la roulette R6416 (respectivement R7 417, R8 418 et R5 415).
La permutation agissant sur les colonnes de la matrice M est choisie de telle sorte que lors du décodage des roulettes 441 à 444, les accès mémoires puissent être effectués simultanément sur des bancs mémoires distincts. Cette permutation sur les colonnes est par exemple l'identité, une rotation sur les colonnes ou, plus généralement, une permutation quelconque respectant la propriété liées aux accès mémoire énoncée précédemment.
Après codage, les vingt-quatre symboles d'information et les symboles de redondance sont transmis sur le canal. La figure 5 présente un mode de réalisation d'un codeur global 500 utilisant P codeurs convolutifs systématiques récursifs circulaires en parallèle (CRSG ) 571, 572, ..., 57/, ..., 57P et dont l'architecture permet de générer les codes qui sont notamment décrits en regard des figures 1 , 2 et 4.
Le codeur global 500 accepte sur une entrée 550 des blocs de K symboles d'information qui sont également présentés sur une sortie 553 (le code global est systématique) et fournit, en outre, sur une sortie 590 des blocs de symboles de redondance issus du codage des blocs d'information.
Le codeur global 500 comprend :
- l'entrée 550 et la sortie 553 de symboles d'information ; - la sortie 590 de symboles de redondance ;
- une unité de commande 504 ;
- P bancs mémoires (notés BMX) 561 à 56P ;
- les codeurs élémentaires de type Convolutifs Récursifs Systématiques Circulaires (ou CRSC) 571 à 57P ; - un module de permutation PIL,,. 510 ;
- un module de rotation circulaire RC(Ok) 530 ;
- un module de commande Ok 520 du module 530 ; et
- un module de perforation 540.
L'unité de commande 504 gère le fonctionnement de l'ensemble du dispositif 500. Cette unité de commande produit les signaux de contrôle suivants :
- une commande 501 de mise à zéro des codeurs convolutifs récursifs circulaires 571 à 57p ; un code convolutif récursif circulaire est obtenu par un premier pré-codage, avec un état initial du codeur nul, qui permet de définir l'état initial du codeur lors de l'opération de codage (on trouvera une description des codes convolutifs circulaires dans l'article écrit par C. Berrou, C. Douillard et M. Jézéquel, intitulé « Multiple parallel concaténation of circular recursive systematic codes », et paru dans la revue Annales des Télécommunications, tome 54, n°3-4, pp 166-172, 1999) ; - une commande d'accès mémoire 502 définissant l'adresse du symbole destiné à être traité et destiné aux modules 510 et 520 ; et
- une commande 503 de contrôle des bancs mémoires 561 à 56P en lecture et en écriture.
L'unité de commande 504 peut être mise en oeuvre sous forme câblée et/ou sous forme de programme informatique s'exécutant sur un processeur.
Les adresses des accès aux bancs mémoires 561 à 56P sont produites par le module 510, commandé via le signal 502 par l'unité de commande 504. Le module 510 pilote une permutation des données sur chaque banc si nécessaire par l'intermédiaire d'un signal d'adressage 505. Les données à coder 550 sont écrites dans les bancs mémoires 561, 562,
..., 56i, ..., 56P à travers des bus 551, 552, ... , 55i, ..., 55P avec la partition suivante pour un bloc de K symboles d'information :
- le banc mémoire 561 mémorise les symboles d'indice 0 à C-l ;
- le banc mémoire 562 mémorise les symboles d'indice C à 2C-1 ; - le banc mémoire 56i mémorise les symboles d'indice (i-l)C à iC-1 ; et
- le banc mémoire 56P mémorise les symboles d'indice (P-l)C à K- . Selon une variante, les données à coder comprennent non seulement les symboles d'informations mais également des symboles de redondances issues d'un code constituant du code global. L'architecture de cette variante étant similaire à celle du codeur 500, elle ne sera pas détaillée plus amplement.
L'unité de commande 504 gère les accès en écriture des symboles 550 ou en lecture des symboles qui sont transférés sur la sortie 553 lorsque ces derniers ne sont pas directement lus lors de leur présentation sur l'entrée 550, via le signal 503 pour les commandes d'écriture et de lecture et via le module 510 pour la détermination des adresses d'accès. Chacun des blocs mémoires respectivement 561 à 56P est relié au module 530 par une liaison respectivement 531 à 53P permettant la lecture des données par le module 530 dans le bloc mémoire correspondant, cette lecture étant également pilotée par le signal 503 et le module 510. Une lecture simultanée d'un symbole dans chacun des blocs mémoires, par le module 530 est donc possible. Les blocs mémoires 561 à 56P sont de type RAM à simple port ou double ports en fonction de la bande passante nécessaire.
En fonction du signal 502 émis par l'unité de commande 504, le bloc 520 définit la rotation circulaire Ok devant être appliquée à l'ensemble des symboles présentés aux entrées 531 à 53P et transmet le signal 506 au module 530 pour lui indiquer la rotation circulaire Ok à effectuer entre les entrées et les sorties du module 530.
Chacun des codeurs CRSC respectivement 571 à 57P est relié au module 530 par une liaison respectivement 541 à 54P permettant la lecture d'un symbole donné en sortie du module 530 par le codeur CRSC correspondant. Un symbole lu par le module 530 est présenté pratiquement simultanément à une sortie du module 530 qui aiguille ce symbole sur la sortie adéquate en fonction du signal 506. Une lecture simultanée d'un symbole par chacun des codeurs CRSC dans le module 530 est donc possible. Chacun des codeurs convolutifs récursifs circulaires respectivement 571 à
57P permet :
- d'effectuer le pré-codage de chaque séquence d'information permettant de déterminer l'état initial du codeur tel que son état final après codage de la séquence considérée sera identique à cet état initial ; et
- d'effectuer le codage convolutif récursif de chaque séquence de symboles présentés sur son entrée respectivement 541 à 54P par multiplication par un polynôme multiplicatif respectivement ; à fP et par division par un polynôme diviseur respectivement g t à gP, permettant de produire les bits de redondance (respectivement Etp+1 à Zttp+p) respectivement transmis sur des sorties 581 à 58P vers le module de perforation 540. Pour simplifier la réalisation, les polynômes générateurs des codes CRSC seront choisis identiques pour les P codeurs. Selon une variante, pour une adaptation à un code global quelconque, les polynômes générateurs des codes CRSC ne seront pas tous identiques.
Les bits de redondance produits par les codeurs CRSC 571 à 57P sont poinçonnés par le module 540 pour fournir les symboles de redondance 590 associés aux symboles d'information 550. En résumé, à chaque accès en lecture commandé par les signaux 502 et
503, les bancs mémoires 561 à 56P fournissent des symboles (dans un ordre éventuellement différents de l'ordre d'entrée, ce qui correspond à un premier entrelacement) sur lesquels le module 530 applique une rotation circulaire de Ok symboles. Les symboles obtenus sont alors utilisés par les codeurs convolutifs récursifs circulaires 571 à 57P.
Dans une mise en oeuvre du codeur 500 correspondant au code illustré en regard de la figure 1 ,
- les permutations de données sont effectuées par l'unité de commande 504 et par le module 510 ; - deux bancs mémoires sont utilisés ;
- le module 510 fournit, dans ce mode de réalisation, deux adresses mémoires pour les deux bancs mémoires par l'intermédiaire du signal 505 ;
- la permutation spatiale entre les bancs mémoires est réalisée par l'unité de commande 504 et par les modules 520 et 530 ; et
- les roulettes 14 et 15 (respectivement 16 et 17) sont codées simultanément à l'aide des codeurs 571 et 572 à la première étape avec T valant 1 (respectivement deuxième étape avec T valant 2), P valant alors 2. Dans une mise en oeuvre du codeur 500 correspondant au code illustré en regard de la figure 2 (respectivement 3),
- la permutation φ 22 (respectivement φ; 32) est effectuée par l'unité de commande 504 et par le module 510 ; - la rotation 24 (respectivement 34) est réalisée par l'unité de commande 504 et par les modules 520 et 530 ; et
- le premier groupe de roulettes 21 R, à R5 (respectivement 31 Rj à R5) et le deuxième groupe de roulettes 26 R6 à R10 (respectivement 36 Rg à Rç,) sont successivement codées à l'aide des codeurs 571 à 576, P valant alors 5 et les roulettes étant codées simultanément à l'intérieur de chaque groupe. De même, dans une réalisation du codeur 500 correspondant au code illustré en regard de la figure 4, l'entrelaceur 420 est mis en oeuvre par l'unité de commande 504 et par les modules 510, 520 et 530 ; et le premier groupe de roulettes 411 Rj à 414 R4 et le deuxième groupe de roulettes 441 R5 à 444 R8 sont successivement codées à l'aide des codeurs 571 à 574, P valant alors 4 et les roulettes étant codées simultanément à l'intérieur de chaque groupe. L'opération de codage d'une trame de K symboles d'information par T.P roulettes comporte donc les étapes suivantes :
- une écriture des symboles d'information 550 reçus dans les bancs mémoires 561 à 56P ;
T étapes de codage (T valant 2 dans les exemples précédents illustrés en regard des figures 1 , 2 et 4) par P roulettes permettant de fournir les symboles de redondance correspondant ; un poinçonnage (facultatif) des symboles de redondance (produit par les P roulettes) par le module 540 permettant d'obtenir le rendement désiré ; et transmission sur un canal des K symboles systématiques (si le code est systématique) et des N-K symboles de redondance, le cas échéant poinçonnés.
L'organisation de la mémoire est, selon le mode de réalisation décrit, la suivante : à chaque adresse-mémoire d'un banc mémoire, sont mémorisées les données relatives à un symbole systématique (symbole d'information en provenance du canal et/ou informations extrinsèques produites par les décodeurs) ainsi que les symboles de redondance en provenance du canal correspondant.
Pour chacune des T étapes de codage par les P roulettes, les opérations successives suivantes sont effectuées: initialisation des codeurs convolutifs à l'état nul par l'intermédiaire du signal 501 ; première lecture des C symboles d'information des P roulettes considérées et pré-codage de chacune des roulettes ; - détermination des états initiaux des codeurs ; et deuxième lecture des C symboles d'information par les P roulettes considérées et codage de chacune des roulettes afin de produire les symboles de redondance correspondant.
Selon une variante du codeur 500 non représentée, un codeur similaire au codeur 500 met en œuvre des codes constituants non convolutifs systématiques récursifs circulaires.
De même, selon une autre variante, un codeur adapté au codage du code illustré en regard de la figure 3 est mis en œuvre sur base du codeur 500 avec les modifications suivantes : - la perforation du code n'est pas nécessaire ;
- l'organisation de la mémoire est adaptée au code ; et si un code constituant n'est pas systématique, les sorties 58i concernent tous les symboles du mot de code constituant. La figure 6 présente d'un décodeur 600 adapté à décoder un code global produit par le codeur 500 illustré en regard de la figure 5. Le décodeur 600 utilise P décodeurs SISO en parallèle 671 , 672, ..., 67/, ..., 67P correspondant chacun aux codeurs 571, 572, ..., 57/, ..., 51 P.
Le décodeur 600 accepte sur une entrée 650 des blocs de N symboles d'informations souples (symboles en provenance du canal et éventuellement informations a priori) et fournit sur une sortie 680 des symboles décodés. Les données entrantes et/ou mémorisées dans le décodeur 600 sont des symboles d'information et de redondance en provenance du canal et des informations pondérées produites par les décodeurs.
Le décodeur global 600 comprend : - l'entrée 650 de symboles d'information douce ; la sortie 680 de symboles décodés;
- une unité de commande 604 ;
- P bancs mémoires (notés BMX) 661 à 66P ; les décodeurs élémentaires de type SISO 671 à 67P ; - un module de permutation intra-ligne, PILk 610, qui est identique pour les P bancs mémoires;
- un module de rotation circulaire RC(Ok) 630 ;
- une module de commande Ok 620 du module 630 ; et
- un module de décision 690. L'unité de commande 604 gère le fonctionnement de l'ensemble du dispositif 600. Cette unité de commande produit les signaux de contrôle suivants :
- une commande d'accès mémoire 602 définissant l'adresse du symbole destiné à être traité et destiné aux modules 610 et 620 ; et
- une commande 603 de contrôle des bancs mémoires 661 à 66P en lecture et en écriture, les bancs mémoires pouvant être adressés simultanément et indépendamment les uns des autres. L'unité de commande 604 échange également un signal de contrôle 601 avec chacun des décodeurs SISO; ce signal permet notamment de mettre en œuvre le critère d'arrêt en définissant quels sont les décodeurs effectivement utilisés au cours d'une itération. Les adresses des accès aux bancs mémoires 661 à 66P sont produites par le module 610 commandé via le signal 602 par l'unité de commande 604. Le module 610 pilote une permutation des données sur chaque banc si nécessaire par l'intermédiaire d'un signal d'adressage 605. Les données à décoder 650 sont écrites ou lues dans les bancs mémoires
661, 662, ..., 66i, ..., 66P à travers des bus bidirectionnels 651, 652, ..., 65i, ..., 65P avec la partition suivante pour un bloc de K symboles d'information dans le cas où les codes constituants sont des codes convolutifs récursifs systématiques circulaires (pour ces codes les symboles de redondance et les symboles systématiques associés sont stockés à la même adresse mémoire) : le banc mémoire 661 mémorise les données relatives aux symboles d'indice 0 à C-l ; le banc mémoire 662 mémorise les données relatives aux symboles d'indice C à 2C-1 ; - le banc mémoire 66i mémorise les données relatives aux symboles d'indice (M)C à /C-l ; et le banc mémoire 66P mémorise les données relatives aux symboles d'indice (P-l)C à K-l. Dans le cas général d'un code constituant qui n'est pas convolutif récursif systématique circulaire, l'organisation mémoire est adaptée au code.
L'unité de commande 604 gère les accès en écriture des symboles 650 ou en lecture des symboles qui sont transférés sur la sortie 680, via le signal 603 pour les commandes d'écriture et de lecture et via le module 610 pour la détermination des adresses d'accès. Chacun des blocs mémoires respectivement 661 à 66P est relié au module
630 par une liaison respectivement 631 à 63P permettant la lecture des données par le module 630 dans le bloc mémoire correspondant, cette lecture étant également pilotée par le signal 603 et le module 610. Le module 630 peut donc lire ou écrire simultanément et en parallèle plusieurs symboles, un symbole étant lu ou écrit dans chacun des blocs mémoires. Les blocs mémoires 661 à 66P sont de type RAM à simple port ou double ports en fonction de la bande passante nécessaire.
Chacun des décodeurs SISO respectivement 671 à 67P est relié au module
630 par une liaison bidirectionnelle respectivement 641 à 64P permettant la lecture ou l'écriture d'un symbole donné en sortie du module 630 par le décodeur
SISO correspondant. Ainsi, plusieurs symboles sont lus en parallèle dans les bancs mémoires correspondant et alimentent autant de décodeurs SISO.
En fonction du signal 602 émis par l'unité de commande 604, le bloc 620 applique, dans ce mode de réalisation, la rotation circulaire Ok à l'ensemble des symboles présentés aux entrées/sorties 631 à 63P ou 641 à 641P et transmet le signal 606 au module 630 pour lui indiquer la rotation circulaire Ok à effectuer entre les entrées et les sorties du module 630.
Un symbole lu ou écrit par le module 630 est présenté ensemble à une sortie du module 630 qui aiguille ce symbole sur la sortie adéquate en fonction du signal 606. Une lecture ou une écriture simultanée d'un symbole par chacun des décodeurs SISO dans le module 630 est donc possible.
Chacun des décodeurs SISO 671 à 67P utilise un algorithme à entrée souple et à sortie souple, qui produit des informations pondérées lors de la première (respectivement deuxième) étape, T valant 1 (respectivement 2) et P valant alors 2. Les décodeurs SISO contiennent également les modules permettant de mettre en oeuvre le critère d'arrêt. Chacun des modules renvoie des informations notamment sur la convergence du décodage associé au décodeur correspondant, à l'unité de commande par l'intermédiaire du signal 601. L'unité de commande prend en charge la mise en oeuvre de l'application des critères d'arrêts.
Les informations pondérées sont alors écrites en mémoire de manière symétrique à l'opération de lecture précédente.
En résumé, à chaque accès en lecture commandé par les signaux 602 et
603, les bancs mémoires 661 à 66P fournissent des symboles (dans un ordre éventuellement différent de l'ordre d'entrée, ce qui correspond à un premier entrelacement) sur lesquels le module 630 applique une rotation circulaire de Ok symboles. Les symboles obtenus sont alors utilisés par les décodeurs SISO 671 à 67P. Après décodage, une opération symétrique est mise en oeuvre, les données étant transmises de chacun des décodeurs SISO à un banc mémoire après un passage dans le module 630.
A la fin du décodage itératif, le module 690 détermine les décisions dures, résultat du décodage à partir des données présentes dans les bancs mémoire 661 à 66p. Les décisions dures peuvent alors être lues sur une sortie 691 du décodeur 600. Dans une mise en oeuvre du décodeur 600 correspondant au code illustré en regard de la figure 1 , deux bancs mémoires sont utilisés; les permutations de données sont effectuées par l'unité de commande 604 et par le module 610 qui fournit deux adresses mémoires différentes pour les deux bancs mémoires utilisés par l'intermédiaire du signal 605 ; la permutation spatiale entre les bancs mémoires est réalisée par l'unité de commande 604 et par les modules 620 et 630 ; et les roulettes 14 et 15 (respectivement 16 et 17) sont décodées simultanément à l'aide des décodeurs 671 et 672, à la première étape avec T valant 1 (respectivement deuxième étape avec T valant 2), P valant alors 2. Dans une mise en oeuvre du décodeur 600 correspondant au code illustré en regard de la figure 2 (respectivement 3), - la permutation φ 22 (respectivement φj 32) est effectuée par l'unité de commande 604 et par le module 610 ;
- la rotation 24 (respectivement 34) est réalisée par l'unité de commande 604 et par les modules 620 et 630 ; et
- le premier groupe de roulettes 21 R, à R5 (respectivement 31 R_ à R5) et le deuxième groupe de roulettes 26 R6 à R10 (respectivement 36 R<; à Rç) sont successivement décodées à l'aide des décodeurs 671 à 675, P valant alors 5 et les roulettes à l'intérieur de chaque groupe étant décodées simultanément en parallèle. De même, dans une réalisation du codeur 600 correspondant au code illustré en regard de la figure 4, l'entrelaceur 420 est mis en oeuvre par l'unité de commande 604 et par les modules 610, 620 et 630 ; et - le premier groupe de roulettes 411 Rj à 414 R4 et le deuxième groupe de roulettes 441 R5 à 444 R8 sont successivement décodées à l'aide des décodeurs 671 à 674, P valant alors 4 et les roulettes à l'intérieur de chaque groupe étant décodées simultanément en parallèle. L'opération de décodage itérative d'une trame de K symboles d'information par T.P roulettes comporte donc les étapes suivantes :
- une écriture des données relatives aux symboles d'information 650 reçues dans les bancs mémoires 661 à 66P (décisions souples en sortie du canal des symboles d'information systématique et des symboles de redondance);
- plusieurs itérations de décodage, chacune étant constituée de T étapes de décodage (T valant, par exemple, 2 pour les codes illustrés précédemment en regard des figures 1 à 4) de P roulettes mettant en oeuvre un algorithme de type SISO qui nécessite la lecture des C symboles d'informations systématiques de la roulette considérée et l'écriture des C symboles d'information pondérés produits dans les bancs mémoires correspondant ; et - lecture, dans les bancs mémoires 661 à 66P, des données relatives aux
K symboles d'informations pour effectuer la décision dure sur les symboles et produire la trame décodée qui sera transmise sur la sortie 680. Le décodage itératif est contrôlé par l'unité de commande 600 définissant l'algorithme de décodage itératif à utiliser et notamment l'utilisation du critère d'arrêt.
Pour réduire le temps de décodage d'une trame, on applique un critère d'arrêt sur des fenêtres de données. Chacune des fenêtres est déterminée de façon à correspondre exactement à un code constituant.
Ainsi, on détermine les blocs de données sur lesquels le critère d'arrêt est vérifié au cours de l'itération courante et on n'effectue plus les calculs correspondants au cours de l'itération suivante. Cette méthode offre la possibilité de réduire la taille globale des données à décoder au fur et à mesure des itérations au prix d'une dégradation limitée des performances car les fenêtres correspondent à des codes constituants.
Ainsi, on utilise le critère d'arrêt de plusieurs façons, notamment : si au moins un des P décodeurs utilisés en parallèle a convergé (indication par chaque signal 601 correspondant), l'unité de commande
600 gèle ce ou ces décodeurs ; et/ou si tous les P décodeurs utilisés en parallèle ont convergé (indication par les signaux 601 correspondants), l'unité de commande 600 saute l'étape de décodage t correspondant et passe directement à l'étape de décodage suivante t+1 , ce qui permet un gain de latence de décodage et de consommation. Pour de plus amples détails sur les algorithmes de décodage utilisés pour les décodeurs SISO, on se référera aux articles (décrivant respectivement un algorithme de type BJCR et Niterbi): - « Optimal decoding oflinear codes for minimizing symbol error rate »,
(ou en français « décodage optimal des codes linéaires pour minimiser le taux d'erreur symbole ») écrit par L.R Bahl, J. Cocke, F. Jelinek, J. Raviv, et paru dans la revue IEEE Transactions on Information Theory, pp. 284-287, mars 1974. « A Viterbi algorithm with soft décision outputs and its applications » (ou en français « un algorithme de Niterbi avec des sorties à décisions souples et ses applications ») écrit par J. Hagenauer et P. Hoeher et paru dans le compte-rendu de la conférence IEEE Globecom, pp. 1680- 1686, novembre 1989.
Selon une variante du décodeur non représentée, un décodeur similaire au décodeur 600 met en œuvre des codes constituants non convolutifs systématiques récursifs circulaires.
De même, selon une autre variante, un décodeur adapté au codage du code illustré en regard de la figure 3 est mis en œuvre sur base du décodeur 600 avec une organisation de la mémoire est adaptée au code. En particulier, chaque symbole du mot de code est repéré par une adresse mémoire spécifique (alors que pour le décodeur 600, les mêmes adresses peuvent être utilisées pour un symbole systématique et un symbole de redondance correspondant). La figure 7 illustre une application du procédé de codage et de décodage selon l'invention aux stockage de données sur support magnétique et/ou optique.
Le document « Application des techniques de décodage itératif à la correction de l'interférence entre symboles » écrit par P. Didier, A. Picard, C. Douillard et M. Jezequel et présenté lors du 15ème colloque GRETSI (France) du 18 au 21 septembre 1995 propose un mécanisme dans lequel on considère un canal à interférence entre symboles comme étant un des codes constituants d'un code convolutif concaténé en série. De même, M. Oberg et P.H. Siegel propose dans un article intitulé « performance analysis of turbo-equalised partial response channels » (ou en français « analyse des performances des canaux à réponse partielle turbo-égalisés ») (paru dans la revue IEEE Transactions on communications, vol. 49, Ν°3, mars 2001, pages 436-444) une utilisation d'un turbo-décodage itératif dans le cas spécifique d'un canal magnétique avec interférences entre symboles. Ces techniques présentent les inconvénients des mécanismes de codage de l'état de la technique, présentés précédemment. Us ne sont donc pas détaillés plus avant.
Néanmoins, l'invention permet également de pallier ces inconvénients. Ainsi, on peut considérer que le canal 700 est un canal magnétique avec interférences entre symboles qui correspond à un code convolutif et permet de coder les données selon un code à roulette.
De part sa nature, le canal 700 est continu. Son découpage en roulettes (par essence de taille finie) nécessite donc un traitement particulier. Selon le mode de réalisation illustré en regard de la figure 7, des symboles particuliers sont insérés dans la trame de façon à obtenir un retour périodique à un état prédéfini (par exemple, l'état 0). Le nombre des symboles ajoutés est supérieur ou égal à la mémoire du canal 700. Le découpage des roulettes se fait alors entre deux passages forcés à l'état prédéfini. Ainsi, selon l'exemple illustré en regard de la figure 7, quatre blocs comprenant chacun trois symboles d'informations sont codés respectivement par quatre roulettes 721, 731, 741 et 751 pour former quatre mots de codes 720, 730, 740 et 750. Les données ainsi codées sont ensuite entrelacées (selon un entrelacement 770) et enregistrées sur un support magnétique correspondant au canal 700 (données 701 à 716). Si la mémoire du canal 700 est égale, par exemple, à trois, on ajoute trois bits 717 à 719 égaux à 0 à la suite des symboles 701 à 716 enregistrés, ce qui permet de forcer le passage d'une roulette 760 correspondant au codage sur le canal 700 des symboles enregistrés 701 à 719 à l'état prédéfini égal à 0. Selon une variante de réalisation, on créée des roulettes par duplication des derniers bits des roulettes de façon à « reboucler » l'information (par exemple, un message 11 12 13 14 sera transmis dans le canal 700 par un message complété par les deux derniers symboles 13 14 placés en tête d'un message complété 13 14 II 12 13 14 si la mémoire du canal 700 est égale à 2, avec seuls les quatre symboles finaux du message complété qui participe à une roulette). Selon une autre variante, on gère les effets de bord par recouvrement des roulettes comme illustré en regard de la figure 4, différents blocs correspondant à une roulette codée par le canal étant traités indépendamment, en prenant un contexte qui permet d'assurer la convergence des algorithmes de décodage, de façon à ce que le code ainsi obtenu ne soit pas sous-optimal.
Selon encore une autre variante, un message à coder est découpé en blocs et des effets de bord sont gérés, au décodage, par un mécanisme de transmission d'information (par exemple, de l'état des noeuds du treillis utilisé par un algorithme de type SISO) d'un bloc à l'autre. L'opération de décodage est effectuée par un décodeur tout à fait similaire à celui illustré en regard de la figure 6, avec des décodeurs élémentaires correspondant aux sous-codes 700, 721, 731 , 741 et 751, les codes 721, 731, 741 et 751 pouvant être décodés en parallèle par des décodeurs distincts. De même, plusieurs blocs codés selon le code 700 pouvant eux-même être décodés en parallèle par des décodeurs distincts Elle ne sera donc pas détaillée plus amplement.
Bien entendu, l'invention n'est pas limitée aux exemples de réalisation mentionnés ci-dessus.
En particulier, l'homme du métier pourra apporter toute variante dans le type des roulettes utilisées, ainsi que leur nombre dans un dispositif de codage et ou décodage de code global.
L'homme du métier pourra également mettre en œuvre un nombre de codeurs et/ou de décodeurs ainsi que de bancs mémoires adapté aux besoins des opérations de codage et/ou décodage en fonction notamment de la latence de codage et/ou décodage souhaitée et/ou de la complexité du codeur et/ou décodeur de code global. Ainsi, dans certaines applications visant à optimiser la latence, le nombre de bancs-mémoires et/ou de codeurs/décodeurs sera proche de, voire égal au nombre de sous-codes.
Le nombre de codeurs/décodeurs et le nombre de bancs mémoires pourront être différents. Ainsi, il est possible d'alimenter simultanément chacun des décodeurs appartenant à un ensemble de P décodeurs (P étant préférentiellement égal au nombre de décodeurs pouvant être utilisés en parallèle) avec w valant deux, trois, quatre ou plus symboles en parallèle de façon à diminuer le temps de traitement de chaque code. Les P décodeurs lisent alors globalement w.P données dans w.P bancs mémoires logiques à chaque cycle d'horloge. Le nombre de bancs mémoires est alors strictement supérieur au nombre de décodeurs alimentés en parallèle. Ainsi, l'architecture du décodeur (et du codeur correspondant) peut être définie avec souplesse car on dispose de plus de liberté pour allouer des ressources pour traiter (mémorisation, décodage, codage, ...) plusieurs symboles que pour en traiter un seul.
Il est aussi possible d'utiliser le procédé de décodage dans un système hétérogène pour lequel au moins deux décodeurs sont de nature différente et ne nécessite pas le même nombre de données par cycle d'horloge pour être traité en temps réel. Préférentiellement, le système est alors équilibré pour adapter les bandes passantes entre les bancs mémoires et les décodeurs en ayant un nombre de bancs mémoires différent du nombre P de décodeurs alimentés en parallèle.
Afin d'améliorer encore la vitesse de décodage, des modules de décodage mettant en oeuvre une itération de décodage pourront être mis en cascade. Pour des applications visant à optimiser la complexité tout en gardant une vitesse de codage/décodage élevée, le nombre de bancs mémoires ainsi que de codeurs/décodeurs de sous-code pourra être réduit (pour par exemple correspondre à une fraction du nombre de sous-codes appartenant au code global).
L'invention ne se limite pas au cas où le nombre d'étapes T vaut 2 mais s'étend également aux cas où T est supérieur à 2, notamment lorsque le code global peut être modélise sous forme d'une première matrice et de deuxièmes matrices, chaque deuxième matrice étant obtenu par entrelacement des colonnes et éventuellement des lignes de la première matrice, et chaque ligne des première et deuxièmes matrices correspondant à un mot de sous-code du code global. Dans ce cas, peut clairement prendre une valeur quelconque (par exemple, 3, 4, 5, ...). L'invention ne se limite pas non plus au cas où la dimension du code vaut 2 mais s'étend également aux cas où elle est supérieure à 2.
On note que l'invention ne se limite pas au codage ou au décodage de données destinées ou en provenance d'un canal de transmission mais s'étend à toute application des codes correcteurs d'erreurs et, notamment au stockage de données sur des supports magnétiques et/ou optiques.
L'invention concerne, en outre, les dispositifs comprenant un ou plusieurs codeurs ou décodeurs selon l'invention, et notamment les mobiles ou équipement d'infrastructure de radio-communication ainsi que les équipements de transmission et/ou de réception de données, notamment sans fil (par exemple radio, optique et/ou acoustique) et à haut débit.
L'invention concerne également les codes générés par les codeurs décrits précédemment et les signaux d'informations codées avec de tels codeurs.
L'invention n'est pas limitée au code permettant une protection uniforme des symboles d'information mais s'étend également au cas où un niveau de protection en fonction des symboles d'information eux-même (par exemple, issus de sources différentes ou d'importance inégale selon un codage de source ou selon leur signification (symboles de données ou de contrôle)). Ainsi, les codes constituant d'un code global selon l'invention pourront être de rendement différents en fonction du niveau de protection souhaité. En outre, les symboles d'information pourront avoir des degrés différents et être répartis sur un ou plusieurs codes constituants.
On notera que l'invention ne se limite pas à une implantation purement matérielle mais qu'elle peut aussi être mise en œuvre sous la forme d'une séquence d'instructions d'un programme informatique ou toute forme mixant une partie matérielle et une partie logicielle. Dans le cas où l'invention est implantée partiellement ou totalement sous forme logicielle, la séquence d'instructions correspondante pourra être stockée dans un moyen de stockage amovible (tel que par exemple une disquette, un CD-ROM ou un DVD-ROM) ou non, ce moyen de stockage étant lisible partiellement ou totalement par un ordinateur ou un microprocesseur.

Claims

REVENDICATIONS
1. Procédé de décodage de code correcteur d'erreurs, du type associant un bloc de données décodé à des données codées selon un code global comprenant au moins deux sous-codes constituants (Ri), un graphe bipartite irrégulier étant associé audit code global, ledit procédé de décodage étant itératif et produisant à chaque itération un bloc de données extrinsèques, chacune des données extrinsèques se rapportant à une desdites données codées, ledit procédé mettant en œuvre une étape de mémorisation d'un bloc de données à décoder comprenant lesdites données codées et lesdites données extrinsèques, ledit bloc de données à décoder étant réparti dans une pluralité de bancs mémoires disjoints (BMi), adressables indépendamment, caractérisé en ce qu'à chaque itération, ledit procédé comprend, en outre, une étape d'alimentation en parallèle d'au moins deux décodeurs (671, 672, 67i, 67P) parmi une pluralité de décodeurs, correspondant chacun respectivement à au moins un desdits sous-codes, par des données à décoder correspondantes dudit bloc de données à décoder, des données à décoder étant extraites en parallèle d'au moins deux desdits bancs mémoires (BMi)τpouτ alimenter autant de décodeurs, et chacun desdits décodeurs étant alimenté séquentiellement par lesdites données à décoder lui correspondant.
2. Procédé selon la revendication 1, caractérisé en ce qu'au moins un desdits sous-codes est un code récursif convolutif circulaire.
3. Procédé selon l'une quelconque des revendications 1 et 2, caractérisé en ce qu'au moins un desdits sous-codes est un code systématique.
4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce qu'au moins deux desdits sous-codes sont des codes m-binaires, m étant un entier supérieur ou égal à 2 et en ce qu'une permutation intra-symboles est appliquée entre au moins deux desdits sous-codes m-binaires.
5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'il comprend, en outre, une étape d'aiguillage de chacune des données à décoder vers un desdits décodeurs, lesdites données étant aiguillées en parallèle et simultanément de sorte que chacune d'entre elles alimente un décodeur lui correspondant en propre.
6. Procédé selon la revendication 5, caractérisé en ce que ladite étape d'aiguillage comprend elle-même une étape de permutation circulaire d'un ensemble comprenant au moins une partie des données à décoder.
7. Procédé selon la revendication 6, caractérisé en ce que ladite permutation circulaire est une rotation qui possède un pas déterminé en fonction du rang de lecture des données lues dans lesdits bancs mémoires.
8. Procédé selon l'une quelconque des revendications 5 à 7, caractérisé en ce que ladite étape d'aiguillage met en œuvre une étape d'adressage de chacun desdits bancs mémoires de sorte que des données puissent être lues dans ledit banc mémoire dans un ordre prédéterminé distinct de l'ordre d'écriture desdites données dans ledit banc mémoire.
9. Procédé selon l'une quelconque des revendications 1 à 8, caractérisé en ce que chaque ligne d'une première matrice de données représentatives desdites données codées selon ledit code global est représentative de données codées par un sous-code constituant dudit code global appartenant à un premier groupe de sous-codes ; chaque ligne d'au moins une deuxième matrice de données représentatives desdites données codées selon ledit code global est représentative de données codées par un sous-code constituant dudit code global appartenant à au moins un deuxième groupe de sous-codes ; chaque matrice parmi lesdites au moins une deuxième matrice de données étant obtenue à partir d'une transformation de ladite première matrice, ladite transformation comprenant une permutation d'au moins une partie des colonnes de ladite première matrice.
10. Procédé selon la revendication 9, caractérisé en ce que ladite transformation comprend, en outre, une permutation d'au moins une partie des lignes de ladite première matrice.
11. Procédé selon l'une quelconque des revendications 1 à 10, caractérisé en ce que chaque ligne d'une première matrice de données représentatives desdites données codées selon ledit code global est représentative de données codées par un sous-code constituant dudit code global appartenant à un premier groupe de sous-codes, une partie des données de ladite première matrice, dites données non significatives, n'étant pas significative ; chaque ligne d'un premier sous-ensemble de lignes d'au moins une deuxième matrice de données représentatives desdites données codées selon ledit code global est représentative de données codées par un sous-code constituant dudit code global appartenant à au moins un deuxième groupe de sous-codes ; un deuxième sous-ensemble lignes de ladite deuxième matrice de données contenant lesdites données non significatives ; et chaque matrice parmi lesdites au moins une deuxième matrice de données étant obtenue à partir d'une transformation de ladite première matrice, ladite transformation comprenant une permutation d'au moins une partie des colonnes de ladite première matrice.
12. Procédé selon l'une quelconque des revendications 1 à 11, caractérisé en ce qu'il comprend une étape de test de décodage mettant en œuvre au moins un critère d'arrêt de façon à ce que lorsque ledit au moins un critère d'arrêt est vérifié pour au moins un desdits sous-codes, au moins un desdits décodeurs associés audit au moins un desdits sous-codes s'arrête de décoder ledit au moins un desdits sous-codes pour lequel ledit au moins un critère d'arrêt est vérifié.
13. Procédé selon l'une quelconque des revendications 1 à 12, caractérisé en ce qu'il met en œuvre une étape de lecture desdites données codées à partir d'un support optique et/ou magnétique et/ou de transmission desdites données codées sur un canal à interférences.
14. Procédé selon la revendication 13, caractérisé en ce qu'au moins un desdits sous-codes correspond à des interférences entre des symboles représentatifs dudit bloc de données décodé lorsque ledit bloc est stocké sur ledit support optique et/ou magnétique et/ou lorsque ledit bloc est transmis dans un canal à interférences.
15. Procédé selon l'une quelconque des revendications 1 à 14, caractérisé en ce qu'il met en œuvre une étape de réception desdites données codées en provenance d'un émetteur.
16. Procédé selon l'une quelconque des revendications 1 à 15, caractérisé en ce que les ensembles de données codées avec chacun desdits sous-codes sont tous différents deux à deux.
17. Procédé selon l'une quelconque des revendications 1 à 16, caractérisé en ce qu'au moins deux desdits sous-codes comprennent au moins deux desdits données à décoder en commun.
18. Procédé selon l'une quelconque des revendications 1 à 17, caractérisé en ce que ledit code global est de type code produit avec un entrelaceur non uniforme.
19. Procédé selon l'une quelconque des revendications 1 à 18, caractérisé en ce qu'il comprend, en outre, une étape de démultiplexage dudit bloc de données décodé de façon à alimenter au moins deux destinataires distincts par des données appartenant audit bloc de données décodé démultiplexé.
20. Procédé selon l'une quelconque des revendications 1 à 19, caractérisé en ce que le degré des symboles d'information dudit bloc de données décodé, dans ledit code global n'est pas uniforme.
21. Procédé selon l'une quelconque des revendications 1 à 20, caractérisé en ce que le nombre desdits bancs mémoires est différent du nombre desdits décodeurs.
22. Procédé selon l'une quelconque des revendications 1 à 21, caractérisé en ce qu'au moins deux desdits bancs mémoires sont adressés simultanément par un même décodeur d'adresse.
23. Procédé de codage de code correcteur d'erreurs, du type associant un bloc de données source à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, ledit bloc de données codées étant destiné à être transmis vers au moins un récepteur et/ou stocké sur un support de données, caractérisé en ce que ledit bloc de données codées est destiné à être décodé par ledit procédé de décodage itératif selon l'une quelconque des revendications 1 à 22.
24. Procédé de codage de code correcteur d'erreurs, du type associant un bloc de données source à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, ledit bloc de données codées étant destiné à être transmis vers au moins un récepteur et/ou stocké sur un support de données, ledit bloc de données codées étant destiné à être décodé par un procédé de décodage itératif, caractérisé en ce que ledit procédé comprend, en outre, une étape d'alimentation en parallèle d'au moins deux codeurs parmi une pluralité de codeurs, correspondant chacun respectivement à au moins un desdits sous-codes, par des données à coder correspondantes dudit bloc de données à coder, des données à coder étant extraites en parallèle d'au moins deux bancs mémoires pour alimenter autant de codeurs.
25. Procédé selon la revendication 24, caractérisé en ce que chacun desdits codeurs est alimenté séquentiellement par lesdites données à coder lui correspondant.
26. Procédé selon l'une quelconque des revendications 24 et 25, caractérisé en ce qu'au moins un desdits sous-codes est un code récursif convolutif circulaire.
27. Procédé selon l'une quelconque des revendications 24 à 26, caractérisé en ce qu'au moins un desdits sous-codes est un code systématique.
28. Procédé selon l'une quelconque des revendications 24 à 27, caractérisé en ce qu'au moins deux desdits sous-codes sont des codes m-binaires, m étant un entier supérieur ou égal à 2 et en ce qu'une permutation intra-symboles est appliquée entre au moins deux desdits sous-codes m-binaires.
29. Procédé selon l'une quelconque des revendications 24 à 28, caractérisé en ce qu'il comprend, en outre, une étape d'aiguillage de chacune des données à coder vers un desdits codeurs, lesdites données étant aiguillées en parallèle et simultanément de sorte que chacune d'entre elles alimente un codeur lui correspondant en propre.
30. Procédé selon la revendication 29, caractérisé en ce que ladite étape d'aiguillage comprend elle-même une étape de permutation circulaire d'un ensemble comprenant au moins une partie des données à coder.
31. Procédé selon la revendication 30, caractérisé en ce que ladite permutation circulaire est une rotation qui possède un pas déterminé en fonction du rang de lecture des données lues dans lesdits bancs mémoires.
32. Procédé selon l'une quelconque des revendications 29 à 31, caractérisé en ce que ladite étape d'aiguillage met en œuvre une étape d'adressage de chacun desdits bancs mémoires de sorte que des données puissent être lues dans ledit banc mémoire dans un ordre prédéterminé distinct de l'ordre d'écriture desdites données dans ledit banc mémoire.
33 Procédé selon l'une quelconque des revendications 24 à 32, caractérisé en ce que chaque ligne d'une première matrice de données représentatives desdites données codées selon ledit code global est représentative de données codées par un sous-code constituant dudit code global appartenant à un premier groupe de sous-codes ; chaque ligne d'au moins une deuxième matrice de données représentatives desdites données codées selon ledit code global est représentative de données codées par un sous-code constituant dudit code global appartenant à au moins un deuxième groupe de sous-codes ; chaque matrice parmi lesdites au moins une deuxième matrice de données étant obtenue à partir d'une transformation de ladite première matrice, ladite transformation comprenant une permutation d'au moins une partie des colonnes de ladite première matrice.
34. Procédé selon la revendication 33, caractérisé en ce que ladite transformation comprend, en outre, une permutation d'au moins une partie des lignes de ladite première matrice.
35. Procédé selon l'une quelconque des revendications 24 à 32, caractérisé en ce que chaque ligne d'une première matrice de données représentatives desdites données codées selon ledit code global est représentative de données codées par un sous-code constituant dudit code global appartenant à un premier groupe de sous-codes, une partie des données de ladite première matrice, dites données non significatives, n'étant pas significative ; chaque ligne d'un premier sous-ensemble de lignes d'au moins une deuxième matrice de données représentatives desdites données codées selon ledit code global est représentative de données codées par un sous-code constituant dudit code global appartenant à au moins un deuxième groupe de sous-codes ; un deuxième sous-ensemble lignes de ladite deuxième matrice de données contenant lesdites données non significatives ; et chaque matrice parmi lesdites au moins une deuxième matrice de données étant obtenue à partir d'une transformation de ladite première matrice, ladite transformation comprenant une permutation d'au moins une partie des colonnes de ladite première matrice.
36. Procédé selon l'une quelconque des revendications 24 à 35, caractérisé en ce qu'il met en œuvre une étape d'écriture desdites données codées sur un support optique et/ou magnétique et/ou de transmission desdites données codées sur un canal à interférences.
37. Procédé selon la revendication 36, caractérisé en ce qu'au moins un desdits sous-codes correspond à des interférences entre des symboles représentatifs dudit bloc de données décodé lorsque ledit bloc est stocké sur ledit support optique et/ou magnétique et/ou lorsque ledit bloc est transmis dans un canal à interférences.
38. Procédé selon l'une quelconque des revendications 24 à 31, caractérisé en ce qu'il met en œuvre une étape d'émission desdites données codées à destination d'un récepteur.
39. Procédé selon l'une quelconque des revendications 24 à 38, caractérisé en ce que les ensembles de données codées avec chacun desdits sous-codes sont tous différents deux à deux.
40. Procédé selon l'une quelconque des revendications 24 à 39, caractérisé en ce qu'au moins deux desdits sous-codes comprennent au moins deux données codées en commun.
41. Procédé selon l'une quelconque des revendications 24 à 40, caractérisé en ce que ledit code global est de type code produit avec un entrelaceur non uniforme.
42. Procédé selon l'une quelconque des revendications 24 à 41, caractérisé en ce qu'il comprend, en outre, une étape de multiplexage d'au moins deux blocs de données en provenance chacun de deux sources distinctes de façon à former ledit bloc de données source.
43. Procédé selon l'une quelconque des revendications 24 à 42, caractérisé en ce que le degré des symboles d'information dudit bloc de données décodé, dans ledit code global n'est pas uniforme.
44. Procédé selon l'une quelconque des revendications 24 à 43, caractérisé en ce que le nombre desdits bancs mémoires est différent du nombre desdits codeurs.
45. Procédé selon l'une quelconque des revendications 24 à 44 caractérisé en ce qu'au moins deux desdits bancs mémoires sont adressés simultanément par un même décodeur d'adresses.
46. Signal représentatif d'un bloc de données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, caractérisé en ce que ledit bloc de données codées est destiné à être décodé par ledit procédé de décodage itératif selon l'une quelconque des revendications 1 à 22.
47. Dispositif de décodage de code correcteur d'erreurs, du type associant un bloc de données décodé à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, ledit procédé de décodage étant itératif et produisant à chaque itération un bloc de données extrinsèques, chacune des données extrinsèques se rapportant à une desdites données codées, ledit dispositif mettant en œuvre des moyens de mémorisation d'un bloc de données à décoder comprenant lesdites données codées et lesdites données extrinsèques, ledit bloc de données à décoder étant réparti dans une pluralité de bancs mémoires disjoints, adressables indépendamment, caractérisé en ce qu'à chaque itération, ledit dispositif comprend, en outre, des moyens d'alimentation en parallèle d'au moins deux décodeurs parmi une pluralité de décodeurs, correspondant chacun respectivement à au moins un desdits sous-codes, par des données à décoder correspondantes dudit bloc de données à décoder, des données à décoder étant extraites en parallèle d'au moins deux desdits bancs mémoires pour alimenter autant de décodeurs, et chacun desdits décodeurs étant alimenté séquentiellement par lesdites données à décoder lui correspondant.
48. Dispositif de codage de code correcteur d'erreurs, du type associant un bloc de données source à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, ledit bloc de données codées étant destiné à être transmis vers au moins un récepteur et/ou stocké sur un support de données, ledit bloc de données codées étant destiné à être décodé par un dispositif de décodage itératif, caractérisé en ce que ledit dispositif comprend, en outre, des moyens d'alimentation en parallèle d'au moins deux codeurs parmi une pluralité de codeurs, correspondant chacun respectivement à au moins un desdits sous-codes, par des données à coder correspondantes dudit bloc de données à coder, des données à coder étant extraites en parallèle d'au moins deux desdits bancs mémoires pour alimenter autant de codeurs.
PCT/FR2003/001188 2002-04-16 2003-04-14 Procede de codage et/ou de decodage de codes correcteurs d'erreurs, dispositifs et signal correspondants. WO2003088504A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003246832A AU2003246832A1 (en) 2002-04-16 2003-04-14 Method for coding and/or decoding error correcting codes, and corresponding devices and signal

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0204764A FR2838581B1 (fr) 2002-04-16 2002-04-16 Procede de codage et/ou de decodage de codes correcteurs d'erreurs, dispositifs et signal correspondants
FR02/04764 2002-04-16

Publications (1)

Publication Number Publication Date
WO2003088504A1 true WO2003088504A1 (fr) 2003-10-23

Family

ID=28459899

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2003/001188 WO2003088504A1 (fr) 2002-04-16 2003-04-14 Procede de codage et/ou de decodage de codes correcteurs d'erreurs, dispositifs et signal correspondants.

Country Status (3)

Country Link
AU (1) AU2003246832A1 (fr)
FR (1) FR2838581B1 (fr)
WO (1) WO2003088504A1 (fr)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191378B2 (en) 2002-07-03 2007-03-13 The Directv Group, Inc. Method and system for providing low density parity check (LDPC) encoding
US7398455B2 (en) 2002-07-03 2008-07-08 The Directv Group, Inc. Method and system for decoding low density parity check (LDPC) codes
US7577207B2 (en) 2002-07-03 2009-08-18 Dtvg Licensing, Inc. Bit labeling for amplitude phase shift constellation used with low density parity check (LDPC) codes
US7864869B2 (en) 2002-07-26 2011-01-04 Dtvg Licensing, Inc. Satellite communication system utilizing low density parity check codes
US8095854B2 (en) 2002-07-26 2012-01-10 Dtvg Licensing, Inc. Method and system for generating low density parity check codes

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101116249B (zh) * 2005-02-03 2010-10-13 松下电器产业株式会社 并行交织器、并行解交织器以及交织方法
FR2883121B1 (fr) * 2005-03-11 2007-04-27 France Telecom Procede et dispositif de decodage de codes a roulettes
FR2915641B1 (fr) * 2007-04-30 2009-08-07 St Microelectronics Sa Procede et dispositif d'entrelacement de donnees
FR2987527B1 (fr) 2012-02-23 2014-02-21 Univ Bretagne Sud Dispositif auto-configurable d'entrelacement/desentrelacement de trames de donnees

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4547882A (en) * 1983-03-01 1985-10-15 The Board Of Trustees Of The Leland Stanford Jr. University Error detecting and correcting memories
EP0282298A2 (fr) * 1987-03-13 1988-09-14 Space Systems / Loral, Inc. Méthode et appareil pour combiner le codage et la modulation
US5157671A (en) * 1990-05-29 1992-10-20 Space Systems/Loral, Inc. Semi-systolic architecture for decoding error-correcting codes
EP0511141A1 (fr) * 1991-04-23 1992-10-28 France Telecom Procédé de codage correcteur d'erreurs à au moins deux codages convolutifs systématiques en parallèle, procédé de décodage itératif, module de décodage et décodeur correspondants

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4547882A (en) * 1983-03-01 1985-10-15 The Board Of Trustees Of The Leland Stanford Jr. University Error detecting and correcting memories
EP0282298A2 (fr) * 1987-03-13 1988-09-14 Space Systems / Loral, Inc. Méthode et appareil pour combiner le codage et la modulation
US5157671A (en) * 1990-05-29 1992-10-20 Space Systems/Loral, Inc. Semi-systolic architecture for decoding error-correcting codes
EP0511141A1 (fr) * 1991-04-23 1992-10-28 France Telecom Procédé de codage correcteur d'erreurs à au moins deux codages convolutifs systématiques en parallèle, procédé de décodage itératif, module de décodage et décodeur correspondants

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
A. MATACHE S. DOLINAR F. POLLARA: "Stopping rules for turbo decoders", INTERNET ARTICLE: TMO PROGRESS REPORT EDITED BY JPL (JET PROPULSION LABORATORY), no. 42-142, - August 2000 (2000-08-01), XP002225478, Retrieved from the Internet <URL:http://tmo.jpl.nasa.gov/tmo/progress_report/42-142/title.htm> [retrieved on 20021217] *
BAHL L R ET AL: "OPTIMAL DECODING OF LINEAR CODES FOR MINIMIZING SYMBOL ERROR RATE", IEEE TRANSACTIONS ON INFORMATION THEORY, IEEE INC. NEW YORK, US, vol. IT-20, no. 2, March 1974 (1974-03-01), pages 284 - 287, XP000760833, ISSN: 0018-9448 *
BERROU C ET AL: "MULTIPLE PARALLEL CONCATENATION OF CIRCULAR RECURSIVE SYSTEMATIC CONVOLUTIONAL (CRSC) CODES", ANNALES DES TELECOMMUNICATIONS - ANNALS OF TELECOMMUNICATIONS, PRESSES POLYTECHNIQUES ET UNIVERSITAIRES ROMANDES, LAUSANNE, CH, vol. 54, no. 3/4, March 1999 (1999-03-01), pages 166 - 172, XP000834638, ISSN: 0003-4347 *
GALLAGER R G: "LOW-DENSITY PARITY-CHECK CODES", IRE TRANSACTIONS ON INFORMATION THEORY, IEEE INC. NEW YORK, US, January 1962 (1962-01-01), pages 21 - 28, XP000992693 *
HAGENAUER J ET AL: "A VITERBI ALGORITHM WITH SOFT-DECISION OUTPUTS AND ITS APPLICATIONS", COMMUNICATIONS TECHNOLOGY FOR THE 1990'S AND BEYOND. DALLAS, NOV. 27 - 30, 1989, PROCEEDINGS OF THE GLOBAL TELECOMMUNICATIONS CONFERENCE AND EXHIBITION(GLOBECOM), NEW YORK, IEEE, US, vol. 3, 27 November 1989 (1989-11-27), pages 1680 - 1686, XP000091258 *
RAMESH PYNDIAH ET AL: "NEAR OPTIMUM DECODING OF PRODUCT CODES", PROCEEDINGS OF THE GLOBAL TELECOMMUNICATIONS CONFERENCE (GLOBECOM). SAN FRANCISCO, NOV. 28 - DEC. 2, 1994, NEW YORK, IEEE, US, vol. 1, 28 November 1994 (1994-11-28), pages 339 - 343, XP000488569, ISBN: 0-7803-1821-8 *
TANNER R M: "A RECURSIVE APPROACH TO LOW COMPLEXITY CODES", IEEE TRANSACTIONS ON INFORMATION THEORY, IEEE INC. NEW YORK, US, vol. IT-27, no. 5, September 1981 (1981-09-01), pages 533 - 547, XP001002287, ISSN: 0018-9448 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191378B2 (en) 2002-07-03 2007-03-13 The Directv Group, Inc. Method and system for providing low density parity check (LDPC) encoding
US7398455B2 (en) 2002-07-03 2008-07-08 The Directv Group, Inc. Method and system for decoding low density parity check (LDPC) codes
US7424662B2 (en) 2002-07-03 2008-09-09 The Directv Group, Inc. Method and system for providing low density parity check (LDPC) encoding
US7577207B2 (en) 2002-07-03 2009-08-18 Dtvg Licensing, Inc. Bit labeling for amplitude phase shift constellation used with low density parity check (LDPC) codes
US7954036B2 (en) 2002-07-03 2011-05-31 Dtvg Licensing, Inc. Method and system for providing low density parity check (LDPC) encoding
US7962830B2 (en) 2002-07-03 2011-06-14 Dtvg Licensing, Inc. Method and system for routing in low density parity check (LDPC) decoders
US7864869B2 (en) 2002-07-26 2011-01-04 Dtvg Licensing, Inc. Satellite communication system utilizing low density parity check codes
US8095854B2 (en) 2002-07-26 2012-01-10 Dtvg Licensing, Inc. Method and system for generating low density parity check codes

Also Published As

Publication number Publication date
FR2838581B1 (fr) 2005-07-08
AU2003246832A1 (en) 2003-10-27
FR2838581A1 (fr) 2003-10-17

Similar Documents

Publication Publication Date Title
US6678843B2 (en) Method and apparatus for interleaving, deinterleaving and combined interleaving-deinterleaving
FR2815199A1 (fr) Procedes de turbocodage circulaire de grande distance minimale, et systemes pour leur mise en oeuvre
EP1332557B1 (fr) Module, dispositif et procede de decodage a haut debit, d&#39;un code concatene
FR2804260A1 (fr) Procede de transmission numerique de type a codage correcteur d&#39;erreurs
EP0848501A1 (fr) Système et procédé de transmission numérique comportant un code produit combiné à une modulation multidimensionnelle
EP1101288B1 (fr) Procede et dispositif de codage correcteur d&#39;erreurs et procede et dispositif de decodage correspondants
FR2900294A1 (fr) Chargement de la memoire d&#39;entree d&#39;un decodeur ldpc avec des donnees a decoder
WO2003088504A1 (fr) Procede de codage et/ou de decodage de codes correcteurs d&#39;erreurs, dispositifs et signal correspondants.
EP1128589B1 (fr) Critère d&#39;interruption pour un décodeur turbo
FR2896359A1 (fr) Procede d&#39;encodage et de decodage rapides et dispositifs associes.
FR2883121A1 (fr) Procede et dispositif de decodage de codes a roulettes
FR2807895A1 (fr) Procedes et dispositifs de codage et de decodage et systemes les mettant en oeuvre
FR2805418A1 (fr) Procede de transmission numerique de type a codage correcteur d&#39;erreurs
EP1205032B1 (fr) Procede et dispositif de codage a au moins deux codages en parallele et permutation amelioree, et procede et dispositif de decodage correspondants
FR2806177A1 (fr) Procede de transmission numerique de type a codage correcteur d&#39;erreurs
EP3311495B1 (fr) Conception de l&#39;entrelaceur pour des codes turbo en fonction du motif de poinçonnage
FR2888062A1 (fr) Codeur et turbo decodeur de code produit
EP3900193B1 (fr) Procédé de génération d&#39;un signal mettant en oeuvre un turbo-codeur, dispositif et programme d&#39;ordinateur correspondants
WO2008129195A1 (fr) Codage et decodage de signaux de donnees de rendements variables
FR3022651A1 (fr) Procedes et dispositifs de codage et de decodage correcteur d&#39;erreurs, et programme d&#39;ordinateur correspondant.
FR2804806A1 (fr) Procede et dispositif d&#39;entrelacement, procedes et dispositifs de codage et de decodage et systemes les mettant en oeuvre
Bohorquez Advanced coding and interleaving techniques for next generation communication and broadcasting systems
WO2018172694A1 (fr) Construction de turbocodes à rendements compatibles
Balaji et al. Evaluation of decoding trade-offs of concatenated RS convolutional codes and turbo codes via trellis
Kbaier Towards ideal codes: looking for new turbo code schemes

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP