# Patent

## Title
Information coding by algebraic geometric code offering two decoding options

## Abstract

The present invention concerns a method of coding information symbols according to a code defined on a Galois field Fq, where q is an integer greater than 2 and equal to a power of a prime number, and of length n=p(q−1), where p>1. This coding is designed so that there exists a corresponding decoding method, also disclosed by the invention, in which the correction of transmission errors essentially comes down to the correction of errors in p words of length (q−1) coded according to Reed-Solomon. The invention is particularly advantageous when, through a suitable choice of parameters, the code according to the invention is an algebraic geometric code: in this case, it is possible to correct the transmission errors by the method already mentioned and/or by a conventional method which is less economical but has a higher performance.

## Background
The present invention concerns communication systems in which, in order to improve the fidelity of the transmission, the data to be transmitted are subjected to a channel coding. It concerns more particularly on the one hand coding methods and on the other hand decoding methods as well as the devices and apparatus intended to implement these methods.
It will be recalled that coding known as “channel coding” consists, when the “code words” sent to the receiver are formed, of introducing a certain degree of redundancy in the data to be transmitted. More precisely, by means of each code word, the information initially contained in a predetermined number k of symbols taken from an “alphabet” of finite size q is transmitted; from these k information symbols a number n of symbols belonging to this alphabet are calculated, so as to form code words v=(v0,vu, . . . , vn−1). All the code words obtained when each information symbol takes any value in the alphabet constitutes a kind of dictionary called a “code” of “dimension” k and “length” n.
When the size q of the alphabet is a power of a prime number, it is possible to give this alphabet a field structure, referred to as a “Galois field”, denoted Fq, the non-zero elements of which can be conveniently identified as each being equal to γi−1 for a corresponding value of i, where i=1, . . . , q−1, and where γ is an element of Fq chosen from amongst the so-called “primitive” elements of this field. In the case where the alphabet is a Galois field, some codes can, conveniently, be associated with a matrix H of dimension (n−k)×n defined on Fq, referred to as a “parity-check matrix”: a word v of given length n is a code word if, and only if, it satisfies the equation: H·vT=0 (where the exponent T indicates the transposition); it is then said that the code is “orthogonal” to this matrix H. These codes, which are called “linear codes”, will be the only codes considered below.
At the receiver, the associated decoding method then judiciously uses this redundancy to detect any transmission errors and if possible to correct them. There is a transmission error if the difference e between a received word r and the corresponding code word v sent by the sender is non-zero.
More precisely, the decoding takes place in two main steps.
The first step consists of associating an “associated code word” with the word received. To do this, the decoder first of all calculates the “error syndromes” vector H·rT=H·eT. If the syndromes are all zero, it is assumed that there has been no transmission error, and the “associated code word” will then simply be taken to be equal to the word received. If such is not the case, it is deduced from this that some symbols in the word received are erroneous, and a correction algorithm is then implemented intended to estimate the value of the error e; the algorithm will thus supply an estimated value ê so that (r−ê) is a code word, which will then constitute the “associated code word”.
The second step consists simply of reversing the coding process. In the ideal situation where all the transmission errors have been corrected, the initial information symbols are thus found.
The task of an error correction algorithm is to associate with the word received the code word situated at the shortest Hamming distance from this word received, the “Hamming distance” being, by definition, the number of locations where two words with the same length have a different symbol. The shortest Hamming distance between two different words of a code is called the “minimum distance” d of this code. This is an important parameter of the code. More precisely, it is in principle possible to find the position of any errors in a word received, and to provide the correct replacement symbol (that is to say the one identical to that sent by the sender) for each of these positions, whenever the number of erroneous positions is no more than INT[(d−1)/2] (where “INT” designates the integer part) for a code of minimum distance d (with some error configurations, it is even sometimes possible to do better). In all cases however, it is only a possibility in principle, since it is often difficult to develop a decoding algorithm achieving this performance. It should also be noted that, when the chosen algorithm succeeds in a proposing a correction for the word received, this correction is all the more reliable (at least, for the majority of transmission channels) when it concerns a smaller number of positions.
The capability of an error correction algorithm for proposing a correction of a word received is faithfully represented by the formula:

2ε≦Δ,

where ε is the number of erroneous symbols in the word received, and Δ is a strictly positive integer which will be termed the “solving capability” of the algorithm. If the value of (2ε) is less than or equal to the solving capability, the correction algorithm will be capable of correcting the word received. If the value of (2ε) is greater than the solving capability, the algorithm may:

    
    
        either fail purely and simply in its correction attempt,
        or be capable of proposing a correction of the word received; in this case, if this correction is accepted, there is a risk that it may be erroneous, that is to say the code word proposed may not in fact be the word sent, this risk obviously being all the more pronounced when (2ε) is large compared with Δ.
    
    


Having regard to the above considerations concerning the minimum distance d of the code, it will be stated that the algorithm in question is “maximal” if

Δ=d−1,

and “sub-maximal” if

Δ<d−1.

Amongst the known codes, the “Reed-Solomon codes” can be cited, which are renowned for their efficacy (for a definition of Reed-Solomon codes, reference can be made to the work by R. E. Blahut entitled “Theory and Practice of Error-Control Codes”, Addison-Wesley, Reading, Mass., 1983). These codes are defined on Fq, and their minimum distance d is equal to (n−k+1). For decoding them, use is normally made of a so-called “Berlekamp-Massey” algorithm for detecting erroneous positions in a word received, and a so-called “Formey” algorithm for correcting the corresponding erroneous symbols (these algorithms are described in the work mentioned above).
In modern information media, for example in computer hard disks, CDs (“compact disks”) or DVDs (“digital video disks”), it is sought to increase the information density. When such a medium is affected by a physical defect such as a scratch, a large number of information symbols may be made illegible. This problem can however be remedied by using a very long code. However, Reed-Solomon codes have the particularity that the length n of the code words is necessarily less than or equal to the size q of the alphabet of the symbols. In fact, when it is sought, for fixed q, to maximize the length of the Reed-Solomon code, it may be preferred to take a length n equal to (q−1) rather than equal to q: this is because, as explained in the work by R. E. Blahut cited above, it is simpler to decode a Reed-Solomon code of length (q−1) defined on Fq than a code of length q (still defined on Fq), so that this slight loss of length is compensated for by a gain in ease of decoding; in this case, the parity-check matrix H(t), where t=n−k, of the Reed-Solomon code is a matrix with t rows and (q−1) columns, which can be defined by taking H(t)ij=γi(j−1) (1≦i≦t, 1≦j≦q−1), where γ is a primitive element of Fq.
Consequently, if it is wished to have a Reed-Solomon code having very long code words, it is necessary to envisage high values of q, which results in expensive implementations with regard to calculations and storage. In addition, high values of q are sometimes unsuited to the technical application envisaged. This is why it has been sought to construct codes offering, in a natural manner, a greater length of words than Reed-Solomon codes.
In particular, so-called “algebraic geometric codes” or “geometric Goppa codes” have been proposed recently (see for example “Algebraic Geometric Codes”, by J. H. van Lint, in “Coding Theory and Design Theory”, Part 1, IMA Volumes Math. Appl., Volume 21, Springer-Verlag, Berlin, 1990). These codes, also defined on a Galois field Fq, are constructed from an algebraic equation with two unknowns X and Y. The solutions of this algebraic equation can be considered to be the coordinates (x,y) of points on an “algebraic curve”. To define a parity-check matrix, first of all an ordered set is set up, called a “locating set”, from n such points, all of whose coordinates are finite; then each row in the parity-check matrix is obtained by evaluating a well-chosen function of X and Y in each element of this locating set. In this way an algebraic geometric code of length n is obtained.
An important parameter of such a curve is its “genus” g. In the particular case where the curve is a simple straight line (the genus g is then zero), the algebraic geometric code is reduced to a Reed-Solomon code. In some cases, the algebraic geometric codes make it possible to achieve a length equal to (q+2g√{square root over (q)}), which may be very high; for example, with an alphabet size equal to 256 and a genus equal to 120, code words of length 4096 are obtained. It should also be noted that the algebraic geometric codes have a minimum distance d greater than or equal to (n−k+1−g).
Like all the codes, algebraic geometric codes may be “shortened”. It is said that a given code is a “shortened” version of the code C if it comprises only the words of C where, for a number R of predetermined positions, the components are all zero: these positions being known to the receiver, it is possible to dispense with transmitting them, so that the shortened code is of length (n−R). In particular, it is normal to shorten an algebraic geometric code by eliminating, from the locating set, where necessary, a point, or several points, whose x coordinate is zero.
Algebraic geometric codes are advantageous with regard to their minimum distance and, as stated, with regard to the length of the code words, but they have the drawback of requiring decoding algorithms which are fairly complex and therefore fairly expensive in terms of equipment (software and/or hardware) and processing time. This complexity is in fact more or less great according to the algorithm in question, a greater complexity being in principle the price to be paid for increasing the error correction capacity of the decoder (see for example the article by Tom Høholdt and Ruud Pellikaan entitled “On the Decoding of Algebraic-Geometric Codes”, IEEE Trans. Inform. Theory, Vol. 41, No. 6, pages 1589 to 1614, November 1995).
The aim of the invention is, inter alia, to propose a code for correcting a relatively high number of transmission errors in an economical manner.
The invention thus concerns, according to a first aspect, a method of coding information symbols according to a code defined on a Galois field Fq, where q is an integer greater than 2 and equal to a power of a prime number, and of length n=p(q−1), where p is an integer greater than 1, said method being notable in that it comprises the following steps:

    
    
        a) a p-tuple of integers (t1, . . . , tp) is chosen such that

q−1>t1>t2> . . . >tp>0,

and a p-tuple of diagonal square matrices (Y1, . . . , Yp) of dimension (q−1) on Fq such that, for any i(1≦i≦q−1), the p elements in position (i,i) of these matrices Y1, . . . , Yp are different in pairs,

        b) said information symbols are placed successively in p words al of length (q−1−tl) (where l=1, . . . , p),
        c) words ul (where l=1, . . . , p) are formed of length (q−1), which constitute the components of the “precoded word” u=[u1u2 . . . up], by supplementing the corresponding word al, by means of redundant symbols so that ul is orthogonal to the matrix H(tl), where the matrices H(t) are defined by H(t)ij=γi(j−1)(1≦i≦t, 1≦j≦q−1), where γ is a symbol chosen from amongst the primitive elements of Fq, and
        d) a code word

v=[v1v2 . . . vp]

is formed, where each word vl (l=1, . . . , p) is of length (q−1), by resolving the system of equations

    
    






  {
  
    
      
        
          
            
              
                
                  v
                  _
                
                1
              
              +
              
                
                  v
                  _
                
                2
              
              +
              ...
              +
              
                
                  v
                  _
                
                p
              
            
            =
            
              
                u
                _
              
              1
            
          
          ,
        
      
    
    
      
        
          
            
              
                
                  
                    v
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                
              
              +
              
                
                  
                    v
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                
              
              +
              ...
              +
              
                
                  
                    v
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                
              
            
            =
            
              
                u
                _
              
              2
            
          
          ,
        
      
    
    
      
        
          
            
              
                
                  
                    v
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                  2
                
              
              +
              
                
                  
                    v
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                  2
                
              
              +
              ...
              +
              
                
                  
                    v
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                  2
                
              
            
            =
            
              
                u
                _
              
              3
            
          
          ,
        
      
    
    
      
        ⋯
      
    
    
      
        
          
            
              
                
                  v
                  _
                
                1
              
              ⁢
              
                Y
                1
                
                  p
                  -
                  1
                
              
            
            +
            
              
                
                  v
                  _
                
                2
              
              ⁢
              
                Y
                2
                
                  p
                  -
                  1
                
              
            
            +
            ...
            +
            
              
                
                  v
                  _
                
                p
              
              ⁢
              
                Y
                p
                
                  p
                  -
                  1
                
              
            
          
          =
          
            
              
                u
                _
              
              p
            
            .
          
        
      
    
  
   




Correspondingly, the invention concerns, according to the same first aspect, a method of receiving data received resulting from the transmission of symbols coded in the manner described succinctly above, said method being notable in that it comprises the following steps:

    
    
        e) from the word received

r=[r1r2 . . . rp]

where each word rl (l=1, . . . , p) is of length (q−1), at least one of the components sl (where l=1, . . . , p) of length (q−1), of the “post-received word”s=[s1 s2 . . . sp] is calculated, according to:

    
    






  {
  
    
      
        
          
            
              
                s
                _
              
              1
            
            =
            
              
                
                  r
                  _
                
                1
              
              +
              
                
                  r
                  _
                
                2
              
              +
              ...
              +
              
                
                  r
                  _
                
                p
              
            
          
          ,
        
      
    
    
      
        
          
            
              
                s
                _
              
              2
            
            =
            
              
                
                  
                    r
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                
              
              +
              
                
                  
                    r
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                
              
              +
              ...
              +
              
                
                  
                    r
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                
              
            
          
          ,
        
      
    
    
      
        
          
            
              
                s
                _
              
              3
            
            =
            
              
                
                  
                    r
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                  2
                
              
              +
              
                
                  
                    r
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                  2
                
              
              +
              ...
              +
              
                
                  
                    r
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                  2
                
              
            
          
          ,
        
      
    
    
      
        ⋯
      
    
    
      
        
          
            
              
                s
                _
              
              p
            
            =
            
              
                
                  
                    r
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                  
                    p
                    -
                    1
                  
                
              
              +
              
                
                  
                    r
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                  
                    p
                    -
                    1
                  
                
              
              +
              ...
              +
              
                
                  
                    r
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                  
                    p
                    -
                    1
                  
                
              
            
          
          ,
        
      
    
  
   




and

    
    
        f) at least one of the components ûl (where l=1, . . . , p) of length (q−1), of the “post-associated word” û=[û1û2 . . . ûp], is calculated, correcting the word sl with the same I according to the error syndrome vector H(tl)·slT.
    
    


Thus the correction of transmission errors in the coded words according to the invention essentially comes down to the correction of errors in p words coded according to Reed-Solomon. The correction of errors for each of these p components is relatively simple and rapid by virtue of the qualities of the known algorithms adapted to the Reed-Solomon codes, all the more so since the words of length (q−1) defined on Fq are corrected, as explained above.
According to particular characteristics, an algebraic equation in X and Y is considered such that, for any value γi−1(i=1, . . . , q−1) taken by X, said algebraic equation has p distinct solutions denoted yl(γi−1) (where l=1, . . . , p), and the diagonal element in position (i,i) of each of said matrices Yl is taken to be equal to yl(γi−1).
In this case, the code according to the invention is an algebraic geometric code, orthogonal to the parity-check matrix:




  H
  =
  
    
      [
      
        
          
            
              H
              
                (
                
                  t
                  1
                
                )
              
            
          
          
            
              H
              
                (
                
                  t
                  1
                
                )
              
            
          
          
            ...
          
          
            
              H
              
                (
                
                  t
                  1
                
                )
              
            
          
        
        
          
            
              
                H
                
                  (
                  
                    t
                    2
                  
                  )
                
              
              ⁢
              
                Y
                1
              
            
          
          
            
              
                H
                
                  (
                  
                    t
                    2
                  
                  )
                
              
              ⁢
              
                Y
                2
              
            
          
          
            ...
          
          
            
              
                H
                
                  (
                  
                    t
                    2
                  
                  )
                
              
              ⁢
              
                Y
                p
              
            
          
        
        
          
            
              
                H
                
                  (
                  
                    t
                    3
                  
                  )
                
              
              ⁢
              
                Y
                1
                2
              
            
          
          
            
              
                H
                
                  (
                  
                    t
                    3
                  
                  )
                
              
              ⁢
              
                Y
                2
                2
              
            
          
          
            ...
          
          
            
              
                H
                
                  (
                  
                    t
                    3
                  
                  )
                
              
              ⁢
              
                Y
                p
                2
              
            
          
        
        
          
            
              
            
          
          
            
              
            
          
          
            ...
          
          
            
              
            
          
        
        
          
            
              
                H
                
                  (
                  
                    t
                    p
                  
                  )
                
              
              ⁢
              
                Y
                1
                
                  p
                  -
                  1
                
              
            
          
          
            
              
                H
                
                  (
                  
                    t
                    p
                  
                  )
                
              
              ⁢
              
                Y
                2
                
                  p
                  -
                  1
                
              
            
          
          
            ...
          
          
            
              
                H
                
                  (
                  
                    t
                    p
                  
                  )
                
              
              ⁢
              
                Y
                p
                
                  p
                  -
                  1
                
              
            
          
        
      
      ]
    
    .
  




This particular choice offers several additional advantages. Three of them merit in particular to be mentioned. Firstly, there is the benefit of the great minimum distance guaranteed by algebraic geometric codes.
Secondly, for these codes, error correction algorithms such as the Feng-Rao algorithm, are known, able to take the best possible advantage of this great minimum distance (although the minimum distance of the code according to the invention is not always exactly known, it will be considered that the Feng-Rao algorithm is in practice “maximal” within the meaning defined above). Thus, correspondingly, the invention concerns a method of decoding received data resulting from the transmission of coded symbols according to the particular embodiment described succinctly above, said method being notable in that it comprises the following steps:

    
    
        e′) a maximal error correction algorithm is applied to each received word r, so as to obtain an estimation

{circumflex over (v)}=[{circumflex over (v)}1 {circumflex over (v)}2 {circumflex over (v)}p]

where each word vl (l=1, . . . , p) is of length (q−1), of the corresponding transmitted word v, and

        f′) at least one of the components ûl (where l=1, . . . , p), of length (q−1), of the “post-associated word” û=[û1 û2 . . . ûp], is calculated, according to:
    
    






  {
  
    
      
        
          
            
              
                
                  u
                  ^
                
                _
              
              1
            
            =
            
              
                
                  
                    v
                    ^
                  
                  _
                
                1
              
              +
              
                
                  
                    v
                    ^
                  
                  _
                
                2
              
              +
              ...
              +
              
                
                  
                    v
                    ^
                  
                  _
                
                p
              
            
          
          ,
        
      
    
    
      
        
          
            
              
                
                  u
                  ^
                
                _
              
              2
            
            =
            
              
                
                  
                    
                      v
                      ^
                    
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                
              
              +
              
                
                  
                    
                      v
                      ^
                    
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                
              
              +
              ...
              +
              
                
                  
                    
                      v
                      ^
                    
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                
              
            
          
          ,
        
      
    
    
      
        
          
            
              
                
                  u
                  _
                
                ^
              
              3
            
            =
            
              
                
                  
                    
                      v
                      ^
                    
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                  2
                
              
              +
              
                
                  
                    
                      v
                      ^
                    
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                  2
                
              
              +
              ...
              +
              
                
                  
                    
                      v
                      ^
                    
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                  2
                
              
            
          
          ,
        
      
    
    
      
        ⋯
      
    
    
      
        
          
            
              
                u
                _
              
              ^
            
            p
          
          =
          
            
              
                
                  
                    v
                    ^
                  
                  _
                
                1
              
              ⁢
              
                Y
                1
                
                  p
                  -
                  1
                
              
            
            +
            
              
                
                  
                    v
                    ^
                  
                  _
                
                2
              
              ⁢
              
                Y
                2
                
                  p
                  -
                  1
                
              
            
            +
            ...
            +
            
              
                
                  
                    v
                    ^
                  
                  _
                
                p
              
              ⁢
              
                
                  Y
                  p
                  
                    p
                    -
                    1
                  
                
                .
              
            
          
        
      
    
  
   




Thirdly, it should be noted that a person skilled in the art normally chooses a particular coding/decoding rather than another, according in particular to the specification (cost, reliability) of the application envisaged. However, this choice proves difficult in the case where this application concerns a channel in which the noise level varies greatly over time; likewise, a manufacturer of coding and decoding devices has difficulty in fixing the characteristics of his product if he does not know, at the manufacturing stage, whether this product will subsequently be used in high- or low-noise channels. This is because of the following dilemma: if the decoding method comprises a high-performance error correction algorithm, it will prove to be too expensive if, once the transmission has commenced, it is found that the transmission error rate is appreciably lower than expected; if on the other hand the decoding method comprises an error correction algorithm which is economical but of average performance, the transmission will suffer from an excessive rate of uncorrected errors if, once the transmission has commenced, it is found that the transmission error rate is appreciably higher than expected.
The embodiment of the invention succinctly described above resolves this problem by making it possible to correct the words received, as required, either using a maximal algorithm or using the sub-maximal algorithm, described succinctly above, having recourse to p algorithms adapted to Reed-Solomon codes (it will be said that either a “maximal decoding method” or a “sub-maximal decoding method” is applied to the current word received, respectively). This advantage of the algebraic geometric code according to the invention can possibly, moreover, extend to the code according to the invention in its most general form, as described succinctly above, if it turns out that there exists a maximal error correction algorithm adapted to this code.
It is possible, in practice, to make use of this advantage in various ways.
Thus, according to particular characteristics, the decoding method can comprise a preliminary step consisting of choosing, for the current word received, between the steps of the “sub-maximal” decoding method and the steps of the “maximal” decoding method, as described succinctly above, according to predetermined criteria, for example an estimation of the channel noise.
According to other particular characteristics, the decoding method can, for any word received, first of all implement the steps of the “sub-maximal method” and, where this method does not succeed, declare that a non-correctable error has been detected, and/or then implement the steps of the “maximal method”. This is because, as mentioned above, an error correction algorithm may prove to be incapable of proposing a corrected word when the number of errors is too high having regard to its solving capability.
Whatever the decoding method, as described succinctly above, used, it will then be possible to obtain estimated information symbols by removing from at least one component ûl(l=1, . . . , p) the symbols situated at the identical positions to the positions of the component ul with the same l of the corresponding precoded word u, in which the redundant symbols were placed at step c) of the coding according to the invention. In this way an estimation of the information symbols contained in the corresponding word al, is obtained.
It should be noted in this regard that the invention conveniently offers the possibility of decoding only the information symbols contained in some of the words forming the block a, which may be economically advantageous for some applications. This is for example the case when the information to be transmitted represents images coded at the source according to a series of approximations of different resolutions. Thus, in the method of coding at source called “decomposition into sub-bands”, each image to be transmitted is divided into several hierarchical data blocks (called “sub-bands”), and this iteratively; for example, at the first iteration, four sub-bands are created: the first contains the low frequencies of the image, the second the horizontal high frequencies, the third the vertical high frequencies and the fourth the diagonal high frequencies, each sub-band containing one quarter of the data (pixels) of the original image; at the second iteration, the low-frequency sub-band is itself decomposed into four new blocks containing the low frequencies, the horizontal high frequencies, the vertical high frequencies and the diagonal frequencies relating to this sub-band; the decomposition process is thus continued a certain number of times according to requirements. During the channel coding according to the invention, it is then possible to make the word al, correspond to the lowest frequencies of the image (which contribute most to the intelligibility of the image, and therefore require the greatest protection vis-à-vis transmission errors), the word a2 to the higher frequencies, the word a3 to the even higher frequencies, and so on; it will then be possible, according to the quality of service required by the communication system or by the destination of the images, to calculate only the component û1 of the post-associated word, or to calculate only the components û1 and û1, or to calculate only the components û1, û2 û3 and so on, before extracting therefrom the corresponding estimated information symbols. Another exemplary application is found in the coding of images at source according to the so-called “wavelet” method, as defined by the JPEG-2000 standard.
The invention also concerns, according to the same first aspect, a method of communicating information symbols comprising the following steps:

    
    
        1) the said information symbols are coded in accordance with one of the coding methods succinctly described above, so as to form the code words

v=(v0, v1, . . . , vn−1),

        2) the symbols of each code word v are permuted so as to form a word to be transmitted

v*=(v0, vq−1, v2(q−1), . . . , v(p−1)(q−1), v1, vq, v2q−1, . . . , v(p−1)(q−1)+1, . . . , vn−1)

        3) said word v*is transmitted,
        4) an interleaved word

r*=(r0, rq−1, r2(q−1), . . . , r(p−1)(q−1)+1, . . . , rn−1)

 corresponding to the word v*is received,

        5) the symbols of the interleaved word r*are permuted so as to form a received word r=(r0,r1, . . . , rn−1), and
        6) the received word r is decoded in accordance with one of the decoding methods succinctly described above, adapted to said coding method.
    
    


In addition to the advantages of the corresponding coding and decoding methods, this communication method offers, through the combination of an interleaving and a reverse deinterleaving of this interleaving, a limitation of the propagation of errors in the event of an error burst during the transmission of the coded symbols (a burst is a series of errors of high frequency with respect to the mean error frequency on the channel in question; such bursts are observed both on certain radio transmissions and on certain recordings on hard disk). This is because an error burst affecting bp symbols of v*during transmission will effect at most (b+1) symbols in each of the words ul (where l=1, . . . , p), whilst without interleaving each of these words ul will suffer bp transmission errors.
According to a second aspect, the invention concerns various devices.
The invention thus concerns, firstly, a device for coding information symbols according to a code defined on a Galois field Fq, where q is an integer greater than 2 and equal to a power of a prime number, and of length n=p(q−1), where p is an integer greater than 1, said device being notable in that, a p-tuple of integers (t1, . . . , tp) such that

q−1>t1>t2> . . . >tp>0,

and a p-tuple of diagonal square matrices (Y1, . . . , Yp) of dimension (q−1) on Fq such that, for any i(1≦i≦q−1), the p elements in position (i,i) of these matrices Y1, . . . , Yp are different in pairs, having been chosen, it is able to:

    
    
        place said information symbols successively in p words al of length (q−1−tl) (where l=1, . . . , p),
        form words ul (where l=1, . . . , p) of length (q−1), which constitute the components of the “precoded word” u=[u1 u2 . . . up], supplementing the corresponding word al by means of redundant symbols so that ul is orthogonal to the matrix H(tl), where the matrices H(t) are defined by H(t)ij=γi(j−1)(1≦i≦t, 1≦j≦q−1), where γ is a symbol chosen from amongst the primitive elements of Fq, and
        form a code word

v=[v1v2. . . vp],

where each word vl (l=1, . . . , p) is of length (q−1), by resolving the system of equations

    
    






  {
  
    
      
        
          
            
              
                
                  v
                  _
                
                1
              
              +
              
                
                  v
                  _
                
                2
              
              +
              ...
              +
              
                
                  v
                  _
                
                p
              
            
            =
            
              
                u
                _
              
              1
            
          
          ,
        
      
    
    
      
        
          
            
              
                
                  
                    v
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                
              
              +
              
                
                  
                    v
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                
              
              +
              ...
              +
              
                
                  
                    v
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                
              
            
            =
            
              
                u
                _
              
              2
            
          
          ,
        
      
    
    
      
        
          
            
              
                
                  
                    v
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                  2
                
              
              +
              
                
                  
                    v
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                  2
                
              
              +
              ...
              +
              
                
                  
                    v
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                  2
                
              
            
            =
            
              
                u
                _
              
              3
            
          
          ,
        
      
    
    
      
        ⋯
      
    
    
      
        
          
            
              
                
                  v
                  _
                
                1
              
              ⁢
              
                Y
                1
                
                  p
                  -
                  1
                
              
            
            +
            
              
                
                  v
                  _
                
                2
              
              ⁢
              
                Y
                2
                
                  p
                  -
                  1
                
              
            
            +
            ...
            +
            
              
                
                  v
                  _
                
                p
              
              ⁢
              
                Y
                p
                
                  p
                  -
                  1
                
              
            
          
          =
          
            
              
                u
                _
              
              p
            
            .
          
        
      
    
  
   




According to particular characteristics, this device is also able to assign the value yl(γi−1) to the diagonal element in position (i,i) of each of said matrices Yl, where, for a predetermined algebraic equation in X and Y, said algebraic equation has p distinct solutions denoted yl(γi−1) (where l=1, . . . , p) for any value γi−1(i=1, . . . , q−1) taken by X.
The invention also concerns, secondly, a device for decoding received words r resulting from the transmission of coded words v according to the invention, said device being notable in that it comprises:

    
    
        an error correction unit able to apply an errorcorrection algorithm to each word received r, so as to supply at least one component ûl (where l=1, . . . , p) of a “post-associated word” û, and
        a redundancy elimination unit able to remove from said component û the symbols situated at the positions identical to the positions of the component û with the same l of the corresponding precoded word u, in which redundant symbols were placed at the time of coding.
    
    


When the code used is an algebraic geometric code according to the invention, this device will also be able to comprise a selection unit capable of determining, according to predetermined criteria, whether it is necessary to apply to the current received word r a “sub-maximal decoding method” and/or a “maximal decoding method” as described succinctly above.
The advantages of these devices are essentially the same as those of the corresponding coding and decoding methods succinctly described above.
The invention also relates to:

    
    
        an information data transmission apparatus comprising a coding device as succinctly described above, as well as a modulator for modulating the data resulting from the coding of said information data,
        a data reception apparatus comprising a demodulator for demodulating the received data, as well as a decoding device as succinctly described above;
        an information data transmission apparatus comprising a coding device as succinctly described above, an interleaver able to permute the symbols of each code word v*=(v0,v1, . . . , vn−1) so as to form a word to be transmitted

v*=(v0,vq−1,v2(q−1), . . . ,vp−1)(q−1),v1,vq,v2q−1, . . . ,v(p−1)(q−1)+1, . . . , vn−1).

and a modulator for modulating the symbols of said word to be transmitted v*

        a data reception apparatus comprising a demodulator for demodulating the received data so as to form interleaved received words

r*=(r0,rq−1,r2(q−1), . . . ,rp−1)(q−1),r1,rq,v2q−1, . . . ,r(p−1)(q−1)+1, . . . , rn−1).

        where q is an integer greater than 2 and equal to a power of a prime number, p being an integer greater than 1, and n=p(q−1), a deinterleaver for permuting the symbols of each interleaved received word r*so as to form a received word r=(r0,r1, . . . ,rn−1), and a decoding device as succinctly described above,
        a non-removable data storage means comprising computer program code instructions for executing the steps of any one of the coding and/or decoding and/or communication methods succinctly disclosed above,
        a partially or totally removable data storage means, comprising computer program code instructions for executing the steps of any one of the coding and/or decoding and/or communication methods succinctly disclosed above, and
        a computer program containing instructions such that, when said program controls a programmable data processing device, said instructions mean that the data processing device implements one of the coding and/or decoding and/or communication methods succinctly disclosed above.
    
    


The advantages offered by such transmission apparatus, such reception apparatus, such data storage means and such a computer program are essentially the same as those offered by the coding, decoding and communication methods according to the invention.
The invention also relates to a method of decoding received symbols, characterized in that it comprises the steps of:

    
    
        determining a current state of transmission;
        selecting one of a plurality of available decoding algorithms in accordance with the current state of the transmission determined in said determining step; and
        decoding the received symbols by using the selected decoding algorithm.
    
    


This decoding method offers an appropriate decoding algorithm in accordance with the current state of the transmission.



Other aspects and advantages of the invention will emerge from a reading of the following detailed description of particular embodiments, given by way of non-limiting examples. The description refers to the drawings which accompany it, in which:
FIG. 1 is a block diagram of an information transmission system according to one embodiment of the invention,
FIG. 2 depicts an information data recording apparatus comprising a coder according to the invention, and
FIG. 3 depicts an information data reproduction apparatus comprising a decoder according to the invention.



FIG. 1 is a block diagram of an information transmission system implementing a communication method according to one embodiment of the invention.
The function of this system is to transmit information of any nature from a source 100 to a destination or user 109. Firstly, the source 100 puts this information in the form of symbols belonging to a certain alphabet (for example bytes of bits in the case where the size q of the alphabet is equal to 256), and transmits these symbols to a storage unit 101, which accumulates the symbols so as to form sets each containing k symbols. Next, each of these sets is transmitted by the storage unit 101 to a coding unit 102, which constructs a word v orthogonal to the parity-check matrix H.
The coding and decoding methods according to the invention will now be illustrated by means of a numerical example. It should be noted that this example does not necessarily constitute a preferential choice of parameters for coding or decoding. It is provided here only to enable a person skilled in the art to understand more easily the functioning of the invention.
Consider therefore an algebraic geometric code of length 1020 and dimension 916 defined, in a conventional manner, as follows.
The alphabet of the symbols consists of the 28 elements of the Galois field F256 (that is to say bytes of binary symbols) (this field can be constructed by means of the polynomial (X8+X4+X3+X2+1) defined on F2).
The algebraic-curve of genus g=24 consisting of all the solutions in F256 of the equation with two unknowns is then considered

Y4+Y=X17.

For any value taken by X in F256, the p=4 solutions of the corresponding equation in Y are also in F256. These solutions (XY) define the “points on the curve” associated with this equation on F256. This curve therefore comprises 1024 points of finite coordinates (and a point at infinity P∞) In this set, the four solutions of the equation for which X=0 are eliminated so as to construct “shortened” codes. All the points Pj(where j=1, . . . , 1020) remaining will therefore constitute the locating set, each point Pj serving to identify the j-th element of any code word.

Next, the vector space L(mP∞) of polynomials in X and Y with coefficients in F256 are considered, where the only poles are situated in P∞, and are of order less than or equal to m, where m is a strictly positive integer (it is therefore an algebraic geometric code said to be “with one point”). This vector space, which is of dimension greater than or equal to (m−g+1) (equal if m≧2g−2), has a base consisting of the monomials (XrYs), where r is a positive or zero integer, s is an integer between 0 and 3, and: 17s+4r≦m.
A parity-check matrix H′ is conventionally defined as follows: the element on row i and column j of this matrix is equal to the i-th monomial of said base (with 1≦i≦m+g+1) evaluated at point Pj(with j=1, . . . , 1020) of the algebraic curve. Take for example: m=127; then n−k=104 is obtained, and therefore k=916.
In fact, it would be more convenient to define the code by means of a matrix H a little different from H′ and which is written:




  
    
      
        
          H
          =
          
            [
            
              
                
                  
                    H
                    
                      (
                      32
                      )
                    
                  
                
                
                  
                    H
                    
                      (
                      32
                      )
                    
                  
                
                
                  
                    H
                    
                      (
                      32
                      )
                    
                  
                
                
                  
                    H
                    
                      (
                      32
                      )
                    
                  
                
              
              
                
                  
                    
                      H
                      
                        (
                        28
                        )
                      
                    
                    ⁢
                    
                      Y
                      1
                    
                  
                
                
                  
                    
                      H
                      
                        (
                        28
                        )
                      
                    
                    ⁢
                    
                      Y
                      2
                    
                  
                
                
                  
                    
                      H
                      
                        (
                        28
                        )
                      
                    
                    ⁢
                    
                      Y
                      3
                    
                  
                
                
                  
                    
                      H
                      
                        (
                        28
                        )
                      
                    
                    ⁢
                    
                      Y
                      4
                    
                  
                
              
              
                
                  
                    
                      H
                      
                        (
                        24
                        )
                      
                    
                    ⁢
                    
                      Y
                      1
                      2
                    
                  
                
                
                  
                    
                      H
                      
                        (
                        24
                        )
                      
                    
                    ⁢
                    
                      Y
                      2
                      2
                    
                  
                
                
                  
                    
                      H
                      
                        (
                        24
                        )
                      
                    
                    ⁢
                    
                      Y
                      3
                      2
                    
                  
                
                
                  
                    
                      H
                      
                        (
                        24
                        )
                      
                    
                    ⁢
                    
                      Y
                      4
                      2
                    
                  
                
              
              
                
                  
                    
                      H
                      
                        (
                        20
                        )
                      
                    
                    ⁢
                    
                      Y
                      1
                      3
                    
                  
                
                
                  
                    
                      H
                      
                        (
                        20
                        )
                      
                    
                    ⁢
                    
                      Y
                      2
                      3
                    
                  
                
                
                  
                    
                      H
                      
                        (
                        20
                        )
                      
                    
                    ⁢
                    
                      Y
                      3
                      3
                    
                  
                
                
                  
                    
                      H
                      
                        (
                        20
                        )
                      
                    
                    ⁢
                    
                      Y
                      4
                      3
                    
                  
                
              
            
            ]
          
        
        ,
      
    
    
      
        (
        1
        )
      
    
  
  
    
      where
    
    
      
        
      
    
  
  
    
      
        
          
            H
            
              (
              t
              )
            
          
          ≡
          
            [
            
              
                
                  1
                
                
                  γ
                
                
                  
                    γ
                    2
                  
                
                
                  
                    γ
                    3
                  
                
                
                  ...
                
                
                  
                    γ
                    254
                  
                
              
              
                
                  1
                
                
                  
                    γ
                    2
                  
                
                
                  
                    γ
                    4
                  
                
                
                  
                    γ
                    6
                  
                
                
                  ...
                
                
                  
                    γ
                    253
                  
                
              
              
                
                  ⋮
                
                
                  ⋮
                
                
                  ⋮
                
                
                  ⋮
                
                
                  ⋮
                
                
                  ⋮
                
              
              
                
                  1
                
                
                  
                    γ
                    t
                  
                
                
                  
                    γ
                    
                      2
                      ⁢
                      t
                    
                  
                
                
                  
                    γ
                    
                      3
                      ⁢
                      t
                    
                  
                
                
                  ...
                
                
                  
                    γ
                    
                      255
                      -
                      t
                    
                  
                
              
            
            ]
          
        
        ,
      
    
    
      
        (
        2
        )
      
    
  




and each matrix Yl is defined as being the diagonal square matrix of dimension 255 whose element in position (i,i) is equal to yl(yi−1). The code orthogonal to the matrix H′ is different from the code orthogonal to the matrix H, but it is equivalent to it in the sense that each word of the first code is identical to a single word in the second code multiplied by a diagonal matrix Z, of size 1020×1020, such that Zii=γi−1(i=1, . . . , 1020).

A description will now be given of the way in which, according to this embodiment of the invention, the coding unit 102 constructs a word v  orthogonal to the above parity-check matrix H.
The coding unit 102 first of all forms information blocks a of length k=916, drawing on successive symbols in the storage unit 101, these blocks a being structured in four words according to

a=[a1 a2 a3 a4], 

where the word a1, is of length 223, the word a2 is of length 227, the word a3 is of length 231 and the word a4 is of length 235.

A “precoded word”

u=[u1 u2 u3 u4], 

is then formed in the following manner: the word u1 of length 255 is obtained by supplementing a1 with redundant symbols so that:

H(32)·u1T=0,  (3a)

and the word u2 of length 255 by supplementing a2 with redundant symbols so that:

H28)·u2T=0,  (3b)

and the word u3 of length 255 by supplementing a3 with redundant symbols so that:

H24)·u3T=0,  (3c)

and finally the word u4 of length 255 by supplementing a4 with redundant symbols so that:

H20)·u4T=0,  (3d)

Consider then the words

v=[v1v2v3v4],

where the words v1, v2, v3, and v4 are all four of length 255 and obey the following system of equations:





  
    
      
        {
        
          
            
              
                
                  
                    
                      
                        v
                        _
                      
                      1
                    
                    +
                    
                      
                        v
                        _
                      
                      2
                    
                    +
                    
                      
                        v
                        _
                      
                      3
                    
                    +
                    
                      
                        v
                        _
                      
                      4
                    
                  
                  =
                  
                    
                      u
                      _
                    
                    1
                  
                
                ,
              
            
          
          
            
              
                
                  
                    
                      
                        
                          v
                          _
                        
                        1
                      
                      ⁢
                      
                        Y
                        1
                      
                    
                    +
                    
                      
                        
                          v
                          _
                        
                        2
                      
                      ⁢
                      
                        Y
                        2
                      
                    
                    +
                    
                      
                        
                          v
                          _
                        
                        3
                      
                      ⁢
                      
                        Y
                        3
                      
                    
                    +
                    
                      
                        
                          v
                          _
                        
                        4
                      
                      ⁢
                      
                        Y
                        4
                      
                    
                  
                  =
                  
                    
                      u
                      _
                    
                    2
                  
                
                ,
              
            
          
          
            
              
                
                  
                    
                      
                        
                          v
                          _
                        
                        1
                      
                      ⁢
                      
                        Y
                        1
                        2
                      
                    
                    +
                    
                      
                        
                          v
                          _
                        
                        2
                      
                      ⁢
                      
                        Y
                        2
                        2
                      
                    
                    +
                    
                      
                        
                          v
                          _
                        
                        3
                      
                      ⁢
                      
                        Y
                        3
                        2
                      
                    
                    +
                    
                      
                        
                          v
                          _
                        
                        4
                      
                      ⁢
                      
                        Y
                        4
                        2
                      
                    
                  
                  =
                  
                    
                      u
                      _
                    
                    3
                  
                
                ,
              
            
          
          
            
              
                
                  
                    
                      
                        v
                        _
                      
                      1
                    
                    ⁢
                    
                      Y
                      1
                      3
                    
                  
                  +
                  
                    
                      
                        v
                        _
                      
                      2
                    
                    ⁢
                    
                      Y
                      2
                      3
                    
                  
                  +
                  
                    
                      
                        v
                        _
                      
                      3
                    
                    ⁢
                    
                      Y
                      3
                      3
                    
                  
                  +
                  
                    
                      
                        v
                        _
                      
                      4
                    
                    ⁢
                    
                      Y
                      4
                      3
                    
                  
                
                =
                
                  
                    
                      u
                      _
                    
                    4
                  
                  .
                
              
            
          
        
         
      
    
    
      
        (
        4
        )
      
    
  




It can easily be verified that these words v are orthogonal to the matrix H of equation (1): these are therefore indeed code words associated with H.
The matrices Y, being regular, the system of equations (4) always has a single solution, which is given by:

v1K1=u1Y2Y3Y4+u(Y2Y3+Y3Y4+Y4Y2)+u3(Y2+Y3+Y4)+u4,  (5a)

v2K2=u1Y1Y3Y4+u(Y1Y3+Y3Y4+Y4Y1)+u3(Y1+Y3+Y4)+u4,  (5b)

v3K3=u1Y1Y2Y4+u(Y1Y2+Y2Y4+Y4Y1)+u3(Y1+Y2+Y4)+u4,  (5c)

v4K1=u1Y1Y2Y3+u(Y1Y2+Y2Y3+Y3Y1)+u3(Y1+Y2+Y3)+u4,  (5d)

where

K1=Y2Y3Y4+Y1(Y2Y3+Y3Y4+Y4Y2)+Y12(Y2+Y3+Y4)+Y13,  (6)

and K2, K3 and K4 are obtained by circular permutation of the indices of the matrices Yl.

In this embodiment of the invention, the coding unit 102 next transmits the words v to an interleaver 20, which supplies an “interleaved word” v*, of length 1020, by permuting the symbols of the word

v=(v0,v1, . . . , v1019)

in the following manner:

v*=(v0, v255, v510, v765,v1, v256, v511,v766, . . . , v1019).

Thus an error burst affecting 4b symbols of v*during transmission will affect at most (b+1) symbols in each of the words u1, u2, u3, and u4(that is to say (4b+4) errors in all), as is seen according to the system of equations (4), whilst in the absence of the interleaver 20 each of these words will suffer 4b transmission errors (that is to say 16b errors in all).

The interleaver 20 next transmits the interleaved words v*to a modulator 103. This modulator 103 associates a modulation symbol with each predetermined number of binary symbols (“bits”). Then these modulation symbols are transmitted to a recorder (or to a transmitter) 104, which inserts the symbols in a transmission channel. This channel can for example be a storage on an adequate medium such as a DVD or a magnetic disk or a magnetic tape. It can also correspond to a cable transmission or a non-cable transmission as is the case with a radio link.
The transmitted message, after having been affected by a “transmission noise” whose effect is to randomly modify or erase some of the transmitted data, reaches a reader (or a receiver) 105.
The reader (or receiver) 105 then transmits these elementary symbols to the demodulator 106, which converts them into symbols of the alphabet Fq. In this embodiment (where the code words v are interleaved before transmission), these received symbols are grouped together as “interleaved received words” r*, of length 1020, which are submitted to a deinterleaver 30 responsible for converting each word r*into a “received word” (by implication: deinterleaved) r, by reversing the permutation carried out by the interleaver 20.
This word r is then processed by a unit 107, which uses an error correction algorithm intended to supply a “post-associated word”

û=[û1û2û3û4]

where the words û1, û2, û3 and û4 are all of length 255, which is an estimation of the precoded word u.

According to one embodiment of the invention, the unit 107 is adapted to implement at least two algorithms, namely:

    
    
        a maximal algorithm such as the so-called “Feng-Rao” algorithm, and
        a sub-maximal algorithm, such as the one described below.
    
    


In this embodiment, a selection unit 40 determines which of the two algorithms must be used for the received word being processed, according to various predetermined parameters, which include in particular an evaluation (direct or indirect) of the channel noise.
If the selection unit 40 determines that the current transmission noise is not too high, it instructs the error correction unit 107 to implement a sub-maximal algorithm (which is therefore of lower performance but more economical than a maximal algorithm) which, in the embodiment considered here, operates as follows.
The error correction unit 107 first of all calculates, starting from the received word r, a “post-received word”

s=[s1s2s3s4],

where the words s1, s2, s3, and s4 are all of length 255, which can be interpreted as being the “noisy” version of the precoded word u. This word s is therefore obtained (see the system of equations (4)) according to:

s1=r1+r2+r3+r4,

s2=r1Y1+r2Y2+r3Y3+r4Y4,

s3=r1Y21+r2Y22+r3Y23+r4Y24,

s4=r1Y31+r2Y32+r3Y33+r4Y34.  (7a-d)

In order to obtain the post-associated word û, any algorithm able to correct the errors affecting coded words by means of a Reed-Solomon code is then applied independently to each of its four components. Thus there is obtained (see equations (3a-d)):

    
    
        û1 by correcting the word s1 according to the error syndrome vector H(32)·s1T,
        û2 by correcting the word s2 according to the error syndrome vector H(28)·s2T,
        û3 by correcting the word s3 according to the error syndrome vector H(24)·s3T, and
        û4 by correcting the word s4 according to the error syndrome vector H(20)·s4T.
    
    


This quadruple error correction is relatively simple and rapid by virtue of the qualities of the known algorithms adapted to Reed-Solomon codes, all the more so since words of length 255 defined on F256 are corrected. As explained above, this greater simplicity is the counterpart of a reduction in solving capability; more precisely, having regard to the dimension of the respective parity matrices, it will be possible to correct in this way, at best, only 16 errors in s1, 14 errors in s2, 12 errors in s3, and 10 errors in s4.
If on the other hand the noise in the channel is high, that is to say if the mean transmission error rate exceeds a predetermined threshold (the selection unit 40 will for example be able to determine this by measuring the number of errors corrected on a predetermined number of previous received words, or by noting that the correction attempt described above, by means of the sub-maximal algorithm, has not succeeded), the selection unit 40 instructs the error correction unit 107 to implement the maximal algorithm. More precisely, the application of this algorithm to r supplies a code word associated with r, that is to say an estimation

{circumflex over (v)}=[{circumflex over (v)}1{circumflex over (v)}2{circumflex over (v)}3{circumflex over (v)}4]

where the words {circumflex over (v)}1, {circumflex over (v)}2, {circumflex over (v)}3, and {circumflex over (v)}4are all of length 255, of the code word v transmitted. The post-associated word

û=[û1û2û3û4]

is then obtained according to the equations:

û1={circumflex over (v)}1+{circumflex over (v)}2+{circumflex over (v)}3+{circumflex over (v)}4,

û2={circumflex over (v)}1Y1+{circumflex over (v)}2Y2+{circumflex over (v)}3Y3+{circumflex over (v)}4Y4,

û3={circumflex over (v)}1Y21+{circumflex over (v)}2Y22+{circumflex over (v)}3Y23+{circumflex over (v)}4Y24,

û4={circumflex over (v)}1Y31+{circumflex over (v)}2Y32+{circumflex over (v)}3Y33+{circumflex over (v)}4Y34.  (8a-d)

In the numerical example considered here, the Feng-Rao algorithm can correct up to 40 errors in the received word r of length 1020. It therefore does appreciably better than the sub-maximal algorithm, and it will be used if the quality of service so requires, but in the knowledge that this maximal algorithm is complex and therefore expensive, if only in processing time.

It should be noted that the coding ratio k/n of this algebraic geometric code is equal to 916/1020=0.898. A Reed-Solomon code defined on F256, of length 255 and having the same coding ratio will have a dimension of 229, so that it would be necessary to code the 916 information symbols on four words belonging to this Reed-Solomon code; the minimum distance of this code being equal to 27, it will be possible to correct at maximum a number of errors equal to 13 in each of these four words; it will thus be possible to correct 52 errors in all, but only in the favorable cases (0.3% of cases) where the errors are distributed in equal numbers over these four words. This is to be compared with the performance of the code according to the invention, which is capable, as stated, of correcting all the words containing at most 40 errors when the maximal algorithm is used; when the sub-maximal algorithm is used, the code according to the invention is capable of correctly obtaining û1 if the received word r comprises no more than 16 errors, and to correctly obtain û2 if this received word comprises no more than 14 errors, and to correctly obtain û3 if this received word comprises no more than 12 errors, and finally to correctly obtain û4 if this received word comprises no more than 10 errors. It is said that this is an “unequal error protection system” or UEP.
Once the correction has ended, the unit 107 transmits the post-associated word u to a redundancy elimination unit 108, which extracts therefrom k=916 estimated information symbols by removing the redundant symbols at the positions of the word where the unit 102 placed redundant symbols during coding. Finally, these information symbols are supplied to their destination 109.
It can be considered that the units 40, 107 and 108 form conjointly a “decoder” 10.
It should be noted that, in the embodiment described above, the decoder 10 supplies an estimation of all of the k information symbols initially stored in the unit a. However, as explained in the introduction, the invention also offers the possibility of decoding only the information symbols contained in some of the (four in this example) components of the post-associated word û: such embodiments can be economically advantageous for some applications, such as the transmission of images coded at source.
The block diagram in FIG. 2 depicts, highly schematically, an information data recording apparatus 48 incorporating the coder 102.
This apparatus 48 comprises a keyboard 911, a screen 909, an external information source 100, a modulator 103 and a modulated data recorder 104, conjointly connected to input/output ports 903 of a coding device 102 which is produced here in the form of a logic unit.
The coding device 102 comprises, connected together by an address and data bus 902:

    
    
        a central processing unit 900,
        a random access memory RAM 904,
        a read only memory 905, and
        said input/output ports 903.
    
    


Each of the elements illustrated in FIG. 2 is well known to persons skilled in the art of microcomputers and transmission systems and, more generally, information processing systems. These known elements are therefore not described here. It should be noted, however, that:

    
    
        the information source 100 could, for example, be an interface peripheral, a sensor, a demodulator, an external memory or other information processing system (not shown), and could for example supply sequences of signals representing speech, service messages or multimedia data in particular of the IP or ATM type, in the form of sequences of binary data, and
        the recorder 104 is adapted to record modulated data on a medium such as a magnetic disk.
    
    


The random access memory 904 stores data, variables and intermediate processing results in memory registers bearing, in the description, the same names as the data whose values they store. It should be noted in passing that the word “register” designates, throughout the present description, both a memory area of low capacity (a few binary data) and a memory area of large capacity (for storing an entire program) within a random access memory or a read only memory.
The random access memory 904 contains in particular the following registers:

    
    
        a register “information_symbols” in which the information symbols belonging to Fq are stored,
        a register “precoded_words” in which the words u are stored, and
        a register “code_words” in which the code words v are stored before they are submitted to the modulator 103.
    
    


The read only memory 905 is adapted to store, in registers which, for convenience, have the same names as the data which they store:

    
    
        the operating program of the central processing unit 900, in a register “program”,
        the length of the code words recorded, in a register “length_words”,
        the cardinal of the Galois field Fq serving as an alphabet for the code used, in a register “q”,
        the number of information symbols serving to construct a code word, in a register “k”, and
        the parity-check matrix of the code, in a register “H”.
    
    


The block diagram in FIG. 3 depicts, highly schematically, an information data reproduction apparatus 70 incorporating the decoder 10.
This apparatus 70 comprises a keyboard 711, a screen 709, an external information destination 109, a modulated data reader 105 and a demodulator 106, conjointly connected to input/output ports 703 of the decoder 10, which is produced here in the form of a logic unit.
The decoder 10 comprises, connected together by an address and data bus 702:

    
    
        a central processing unit 700,
        a random access memory (RAM) 704,
        a read only memory (ROM) 705, and
        said input/output ports 703.
    
    


Each of the elements illustrated in FIG. 3 is well known to persons skilled in the art of microcomputers and transmission systems and, more generally, information processing systems. These known elements are therefore not described here. It should be noted however that:

    
    
        the information destination 109 could, for example, be an interface peripheral, a display, a modulator, an external memory or other information processing system (not shown), and could be adapted to receive sequences of signals representing speech, service messages or multimedia data in particular of the IP or ATM type, in the form of sequences of binary data, and
        the reader 105 is adapted to received modulated data recorded on a medium such as a magnetic disk.
    
    


The random access memory 704 stores data, variables and intermediate processing results, in memory registers bearing, in the description, the same names as the data whose values they store. The random access memory 704 contains in particular the following registers:

    
    
        a register “words_received”, in which the words received r are stored,
        a register “associated_words”, in which there are stored, where applicable, the words v resulting from the correction of r by the maximal algorithm,
        a register “post-received_words”, in which there are stored, where applicable, the words s obtained from r by means of the equations (7a-d),
        a register “post-associated_words”, in which there are stored the words û resulting from the implementation either of the maximal algorithm or sub-maximal algorithms, and
        a register “information_symbols”, in which the symbols resulting from the elimination of the redundancy are stored.
    
    


The read only memory 705 is adapted to store, in registers which, for convenience, have the same names as the data which they store:

    
    
        the operating program of the central processing unit 700, in a register “program”,
        the length of the data blocks transmitted, in a register “length_blocks”,
        the cardinal of the Galois field Fq serving as an alphabet for the code used, in a register “q”,
        the number of information symbols serving to construct a code word, in a register “k”, and
        the parity-check matrix of the code, in a register “H”.
    
    


It should be noted that, in some applications, it will be convenient to use the same computer device (functioning in multitask mode) for the exchange, that is to say both the transmission and reception, of signals according to the invention; in this case, the units 10 and 102 will be physically identical.
An application of the invention to the mass storage of data has been described here by way of example, but it is clear that the methods according to the invention can just as well be used within a telecommunications network, in which case the unit 105 for example could be a receiver adapted to implement a packet data transmission protocol on a radio channel.

## Claims

1. Computer implemented Method of coding information symbols according to a code defined on a Galois field Fq, where q is an integer greater than 2 and equal to a power of a prime number, and of length n=p(q−1), where p is an integer greater than 1, comprising steps of:
a) choosing a p-tuple of integers (t1, . . . , tp) such that


q−1>t1>t2> . . . >tp>0,


and a p-tuple of diagonal square matrices (Y1, . . . , Yp) of dimension (q−1) on Fq such that, for any i(1≦i≦q−1), the p elements in position (i,i) of these matrices Y1, . . . , Yp are different in pairs,
b) placing the information symbols successively in p words a1 of length (q−1−tl) (where l=1, . . . ,p),
c) forming words ul (where l=1, . . . ,p) of length (q−1), which constitute the components of the a precoded word u=[u,1u2 . . . up], by supplementing the corresponding word al by means of redundant symbols so that ul is orthogonal to a matrix H(tl), where the matrices H(t) are defined by H(t)ij=γi(j-1)(1≦i≦t, 1≦j≦q−1), where γ is a symbol chosen from amongst the primitive elements of Fq, and
d) forming a code word


v=[v1v2 . . . vp]


where each word v(l=1, . . . , p) is of length (q−1), by resolving a system of equations





  {
  
    
      
        
          
            
              
                
                  v
                  _
                
                1
              
              +
              
                
                  v
                  _
                
                2
              
              +
              ...
              +
              
                
                  v
                  _
                
                p
              
            
            =
            
              
                u
                _
              
              l
            
          
          ,
        
      
    
    
      
        
          
            
              
                
                  
                    v
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                
              
              +
              
                
                  
                    v
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                
              
              +
              ...
              +
              
                
                  
                    v
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                
              
            
            =
            
              
                u
                _
              
              2
            
          
          ,
        
      
    
    
      
        
          
            
              
                
                  
                    v
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                  2
                
              
              +
              
                
                  
                    v
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                  2
                
              
              +
              ...
              +
              
                
                  
                    v
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                  2
                
              
            
            =
            
              
                u
                _
              
              3
            
          
          ,
        
      
    
    
      
        ⋯
      
    
    
      
        
          
            
              
                
                  v
                  _
                
                1
              
              ⁢
              
                Y
                1
                
                  p
                  -
                  1
                
              
            
            +
            
              
                
                  v
                  _
                
                2
              
              ⁢
              
                Y
                2
                
                  p
                  -
                  1
                
              
            
            +
            ...
            +
            
              
                
                  v
                  _
                
                p
              
              ⁢
              
                Y
                p
                
                  p
                  -
                  1
                
              
            
          
          =
          
            
              
                u
                _
              
              p
            
            .

2. The method of coding according to claim 1, in which algebraic equation in X and Y is considered such that, for any value γi−1(i=1, . . . ,q−1) taken by X, said algebraic equation has p distinct solutions denoted yl(γi−l) (where l=1, . . . , p), and a diagonal element in position (i,i) of each of said matrices Yl is taken to be equal to yl(γi−1).

3. The method of coding according to claim 2, futher comprising steps of:
e) applying a maximal error correction algorithm to each received word r, so as to obtain an estimation


{circumflex over (v)}=[{circumflex over (v)}1{circumflex over (v)}2 . . . {circumflex over (v)}p],


where each word {circumflex over (v)}l(l=1, . . . , p) is of length (q−1), of the corresponding transmitted word v, and
f) calculating at least one of the components û(where l=1, . . . , p), of length (q−1), of a post-associated word û=[û1, û2. . . ûp], according to:





  {
  
    
      
        
          
            
              
                
                  u
                  ^
                
                _
              
              1
            
            =
            
              
                
                  
                    v
                    ^
                  
                  _
                
                1
              
              +
              
                
                  
                    v
                    ^
                  
                  _
                
                2
              
              +
              ...
              +
              
                
                  
                    v
                    ^
                  
                  _
                
                p
              
            
          
          ,
        
      
    
    
      
        
          
            
              
                
                  u
                  ^
                
                _
              
              2
            
            =
            
              
                
                  
                    
                      v
                      ^
                    
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                
              
              +
              
                
                  
                    
                      v
                      ^
                    
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                
              
              +
              ...
              +
              
                
                  
                    
                      v
                      ^
                    
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                
              
            
          
          ,
        
      
    
    
      
        
          
            
              
                u
                _
              
              ^
            
            3
          
          =
          
            
              
                
                  
                    v
                    ^
                  
                  _
                
                1
              
              ⁢
              
                Y
                1
                2
              
            
            +
            
              
                
                  
                    v
                    ^
                  
                  _
                
                2
              
              ⁢
              
                Y
                2
                2
              
            
            +
            ...
            +
            
              
                
                  
                    v
                    ^
                  
                  _
                
                p
              
              ⁢
              
                Y
                p
                2
              
            
          
        
      
    
    
      
        ⋯
      
    
    
      
        
          
            
              
                u
                _
              
              ^
            
            p
          
          =
          
            
              
                
                  
                    v
                    ^
                  
                  _
                
                1
              
              ⁢
              
                Y
                1
                
                  p
                  -
                  1
                
              
            
            +
            
              
                
                  
                    v
                    ^
                  
                  _
                
                2
              
              ⁢
              
                Y
                2
                
                  p
                  -
                  1
                
              
            
            +
            ...
            +
            
              
                
                  
                    v
                    ^
                  
                  _
                
                p
              
              ⁢
              
                
                  Y
                  p
                  
                    p
                    -
                    1
                  
                
                .

4. The method coding according to claim 1, in which each word al(where l=1, . . . ,p) represents a respective approximation of resolution of an image coded at source.

5. The method of coding according to claim 1, further comprises steps of:
e) calculating, from a word


r=[r1r2 . . . rp],


where each word rl(l=1, . . . , p) is of length (q−1), at least one of components sl (where l=1, . . . , p) of length (q−1), of post-received word s=[s1s2 . . . sp], according to:





  {
  
    
      
        
          
            
              
                s
                _
              
              1
            
            =
            
              
                
                  r
                  _
                
                1
              
              +
              
                
                  r
                  _
                
                2
              
              +
              ...
              +
              
                
                  r
                  _
                
                p
              
            
          
          ,
        
      
    
    
      
        
          
            
              
                s
                _
              
              2
            
            =
            
              
                
                  
                    r
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                
              
              +
              
                
                  
                    r
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                
              
              +
              ...
              +
              
                
                  
                    r
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                
              
            
          
          ,
        
      
    
    
      
        
          
            
              
                s
                _
              
              3
            
            =
            
              
                
                  
                    r
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                  2
                
              
              +
              
                
                  
                    r
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                  2
                
              
              +
              ...
              +
              
                
                  
                    r
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                  2
                
              
            
          
          ,
        
      
    
    
      
        ⋯
      
    
    
      
        
          
            
              
                s
                _
              
              p
            
            =
            
              
                
                  
                    r
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                  
                    p
                    -
                    1
                  
                
              
              +
              
                
                  
                    r
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                  
                    p
                    -
                    1
                  
                
              
              +
              ...
              +
              
                
                  
                    r
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                  
                    p
                    -
                    1
                  
                
              
            
          
          ,
        
      
    
  
   



and
f) calculating at least one of the components ûl[(where l=1, . . . , p) of length (q−1), of a post-associated word û=[û1û2 . . . ûp], and correcting the component slwith the same l according to an error syndrome vector H(tl), slT.

6. A device for coding information symbols according to a code defined on a Galois field Fq, where q is an integer greater than 2 and equal to a power of a prime number, and of length n=p(q−1), where p is an integer greater than 1, in which a p-tuple of integers (t1, . . . , tp) such that


q−1>t1>t2> . . . >tp>0,

and a p-tuple of diagonal square matrices (Y1, . . . , Yp) of dimension (q−1) on Fq such that, for any i (1≦iq−1), p elements in position (i,i) of these matrices Y1, . . . , Yp are different in pairs, having been chosen, it is able to:
place the information symbols successively in p words al of length (q−1−tl)(where l=1, . . . , p),
form words ul (where l=1, . . . , p) of length (q−1), which constitute components of the precoded word u=[u1u2 . . . up], supplementing the corresponding word a1 by means of redundant symbols so that u1 is orthogonal to the matrix H(tl), where matrices H(t) are defined by
H(t)ij=γi(−l)(1≦i≦t,1≦j≦q−1), where γ is a symbol chosen from amongst the primitive elements of Fq, and
form a code word


v=[v1v2 . . . vp],


where each word vl (l=1, . . . , p) is of length (q−1), by resolving the system of equations





   
  
    {
    
      
        
          
            
              
                
                  
                    v
                    _
                  
                  l
                
                +
                
                  
                    v
                    _
                  
                  2
                
                +
                ...
                +
                
                  
                    v
                    _
                  
                  p
                
              
              =
              
                
                  u
                  _
                
                l
              
            
            ,
          
        
      
      
        
          
            
              
                
                  
                    
                      v
                      _
                    
                    1
                  
                  ⁢
                  
                    Y
                    1
                  
                
                +
                
                  
                    
                      v
                      _
                    
                    2
                  
                  ⁢
                  
                    Y
                    2
                  
                
                +
                ...
                +
                
                  
                    
                      v
                      _
                    
                    p
                  
                  ⁢
                  
                    Y
                    p
                  
                
              
              =
              
                
                  u
                  _
                
                2
              
            
            ,
          
        
      
      
        
          
            
              
                
                  
                    
                      v
                      _
                    
                    1
                  
                  ⁢
                  
                    Y
                    1
                    2
                  
                
                +
                
                  
                    
                      v
                      _
                    
                    2
                  
                  ⁢
                  
                    Y
                    2
                    2
                  
                
                +
                ...
                +
                
                  
                    
                      v
                      _
                    
                    p
                  
                  ⁢
                  
                    Y
                    p
                    2
                  
                
              
              =
              
                
                  u
                  _
                
                3
              
            
            ,
          
        
      
      
        
          
            
              
                
                  
                    v
                    _
                  
                  1
                
                ⁢
                
                  Y
                  1
                  
                    p
                    -
                    1
                  
                
              
              +
              
                
                  
                    v
                    _
                  
                  2
                
                ⁢
                
                  Y
                  2
                  
                    p
                    -
                    1
                  
                
              
              +
              ...
              +
              
                
                  
                    v
                    _
                  
                  p
                
                ⁢
                
                  Y
                  p
                  
                    p
                    -
                    1
                  
                
              
            
            =
            
              
                
                  u
                  _
                
                p
              
              .

7. The device for coding according to claim 6, wherein the device is also able to assign the value yl(γi−1) to the diagonal element in position (i,i) of each of said matrices Yl, where, for a predetermined algebraic equation in X and Y, the algebraic equation has p distinct solutions denoted yl(γi−1)(where l=1, . . . , p) for any value γi−1(i=1, . . . , q−1) taken by X.

8. A device for decoding received words r resulting from the transmission of coded words v, comprising:
an error correction unit able to apply an error correction algorithm to each word received r, so as to supply at least one component ûl(where l=1, . . . ,p) of a post-associated word û, and
a redundancy elimination unit able to remove from said the at least one component ûl symbols situated at the positions identical to the positions of the component ul with the same l of the corresponding precoded word u, in which redundant symbols were placed at the time of coding.

9. An information data transmission apparatus comprising the device for coding according to claim 6 and a modulating data resulting from the coding the information symbols.

10. A data reception apparatus, comprising a demodulator for demodulating received data and the device for decoding according to claim 8.

11. An information data transmission apparatus, comprising the device for coding according to claim 6, an interleaver able to permute symbols of each code word
v=(v0, v1 . . . , vn−1) so as to form a word to be transmitted


v*=(v0, vq−1, v2(q−1), . . . , v(p−1)(q−1), v1, vq, v2q−1, . . . , v(p−1)(q−1)+1, . . . , vn−1),


and a modulator for modulating the symbols of said word to be transmitted v*.

12. A data reception apparatus, comprising a demodulator for demodulating received data so as to form interleaved received words


r*=(r0, rq−1, r2(q−1), . . . r(p−1)(q−1), r1, rq, r2q−1, . . . , r(p−1)(q−1)+1, . . . , rn−1),

where q is an integer greater than 2 and equal to a power of a prime number, p an integer greater than 1, and n=p(q−1), a deinterleaver for permuting the symbols of each interleaved received word r* so as to form a received word r=(r0, r1, . . . , rn−1), and the device for decoding according to claim 8.