FR2799592A1 - Procede de construction et de codage simple et systematique de codes ldpc - Google Patents

Procede de construction et de codage simple et systematique de codes ldpc Download PDF

Info

Publication number
FR2799592A1
FR2799592A1 FR9912710A FR9912710A FR2799592A1 FR 2799592 A1 FR2799592 A1 FR 2799592A1 FR 9912710 A FR9912710 A FR 9912710A FR 9912710 A FR9912710 A FR 9912710A FR 2799592 A1 FR2799592 A1 FR 2799592A1
Authority
FR
France
Prior art keywords
matrix
columns
symbols
zero
rows
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9912710A
Other languages
English (en)
Other versions
FR2799592B1 (fr
Inventor
Pierre Andre Laurent
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thales SA
Original Assignee
Thomson CSF SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Thomson CSF SA filed Critical Thomson CSF SA
Priority to FR9912710A priority Critical patent/FR2799592B1/fr
Priority to EP00402797A priority patent/EP1093231A1/fr
Priority to CA002322983A priority patent/CA2322983A1/fr
Priority to JP2000312558A priority patent/JP2001168733A/ja
Priority to US09/686,873 priority patent/US6715121B1/en
Publication of FR2799592A1 publication Critical patent/FR2799592A1/fr
Application granted granted Critical
Publication of FR2799592B1 publication Critical patent/FR2799592B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1177Regular LDPC codes with parity-check matrices wherein all rows and columns have the same row weight and column weight, respectively
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure

Landscapes

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

Abstract

Le procédé permet la construction de codes LDPC comportant N symboles dont K libres chaque code étant défini par une matrice de contrôle A comportant M=N-K lignes N colonnes et t symboles non nuls dans chaque colonne. Il consiste :- à attribuer à toutes les lignes de la matrice de contrôle A un même nombre de symboles non nuls,- à prendre comme nombre de symboles t un nombre impair le plus petit possible,- à définir les colonnes de façon que deux colonnes quelconques de la matrice de contrôle A n'aient au plus qu'une valeur non nulle,- et à définir les lignes de façon que deux lignes de la matrice de contrôle A n'aient qu'une valeur commune non nulle.Application : Transmissions radio.

Description

<Desc/Clms Page number 1>
Procédé de construction et de codage simple et systématique de codes LDPC.
La présente invention concerne un procédé de construction et de codage simple et systématique de codes connus sous l'abréviation anglosaxonne LDPC de "Low Density Parity Check".
Les codes de Gallager, proposés vers 1963, sont à l'origine des codes LDPC actuellement envisagés comme alternative aux turbo-codes.
Un article publié dans la revue IEEE Transaction on Information Theory Vol 45 n 2 Mars 1999 de M J C MacKay ayant pour titre "Good Error Correcting Codes Based on very Sparre Matrices" présente des résultats intéressants concernant ces codes, en particulier le fait que: - ce sont asymptotiquement pour des blocs de taille élevée de "très bons codes" - le décodage pondéré ("soft decoding", ou "décodage souple") est facile à mettre en oeuvre.
Mais il n'existe pas de méthode autre qu'heuristique pour les construire.
Suivant cette technique de codage un code (N, K) comportant N symboles dont K libres est défini par sa matrice de contrôle de parité A, comportant M = N - K lignes et N colonnes.
La matrice de contrôle A est caractérisée par sa faible "densité" : il faut entendre par là qu'elle comporte un nombre réduit d'éléments non nuls.
Plus précisément, elle comporte exactement t symboles non nuls dans chaque colonne, tous les autres étant égaux à 0.
Si les symboles d'un mot de code sont notés ci, i = O...N-1 et les éléments de la matrice de controle Aij, le code satisfait M = N-K relations de la forme :
Figure img00010001
Les méthodes proposées par M J C MacKay consistent à bâtir une matrice A initiale à partir de matrices unité ou tridiagonales plus petites, puis à permuter leurs colonnes pour arriver au résultat souhaité.
L'expérience montre cependant qu'il est difficile de satisfaire les différentes contraintes imposées pour leur construction.
<Desc/Clms Page number 2>
Le but de l'invention est de pallier les inconvénients précités.
A cet effet l'invention a pour objet, un procédé de construction de codes LDPC comportant N symboles dont K libres chaque code étant défini par une matrice de contrôle A comportant M=N-K lignes N colonnes et t symboles non nuls dans chaque colonne caractérisé en ce qu'il consiste : a - à attribuer à toutes les lignes de la matrice de contrôle A un même nombre de symboles "t" non nuls, b - à prendre comme nombre de symboles "t" un nombre impair le plus petit possible, c - à définir les colonnes de façon que deux colonnes quelconques de la matrice de contrôle A n'aient au plus qu'une valeur non nulle, d - et à définir les lignes de façon que deux lignes de la matrice de contrôle A n'aient qu'une valeur commune non nulle.
Le procédé selon l'invention a pour avantage qu'il permet de simplifier les algorithmes de codage et de décodage, en utilisant une matrice de contrôle A qui est la moins dense possible tout en donnant de bonnes performances pour une complexité raisonnable, la puissance de calcul nécessaire étant proportionnelle au nombre t. Dans la mesure où il y a peu d'erreurs, la contrainte "c" ci dessus permet à l'algorithme de décodage de toujours converger.
D'autres caractéristiques et avantages de l'invention apparaîtront à l'aide de la description qui suit faite en regard des dessins annexés qui représentent :
La figure 1 un tableau représentant une partition de la matrice de contrôle A.
Les figures 2 et 3 des groupements des m2 sous matrices de gauche du tableau de la figure 1 en une sous matrice MxM et n-m sousmatrices MxP.
Les figures 4 et 5 une matrice de contrôle A obtenue respectivement selon une première et une deuxième variante d'exécution du procédé selon l'invention.
Les figures 6 à 9 une matrice de passage pour le calcul des symboles de redondance.
<Desc/Clms Page number 3>
Pour la mise en #uvre du procédé selon l'invention la matrice de contrôle, A, est subdivisée comme le montre la figure 1 en n sous-matrices de M lignes et P colonnes ou m x n sous-matrices carrées de P lignes et P colonnes telles que N=nP et M=mP et n et m premiers entre eux.
Les m2 sous-matrices de gauche sont ensuite regroupées comme le montre la figure 2 en une sous-matrice M x M (ceci permettra de simplifier grandement l'algorithme de codage) et les autres en n - m sous-matrices M x P .
Le procédé de construction est décrit ci - après selon deux variantes, selon que m est égal à 1 ou t.
Les valeurs différentes de m ne sont pas à envisager ici, à cause de la condition "a" qui exige que tr soit entier. En effet, tr = t N / M, soit encore t n / m. n et m étant premiers entre eux, m doit diviser t et ne peut donc être qu'égal à 1 ou t pour t premier et petit (vrai pour les faibles valeurs de t, à savoir 3, 5, 7).
Dans la première variante où m = 1 (codes de redondance r / (r -
1)),le procédé selon l'invention est valable pour les codes de taux de redondance N/K de la forme r / (r - 1), où le nombre de symboles de redondance est exactement N / r (r entier). Dans ce cas, M est égal à P et le tableau de la figure 2 se résume au tableau de la figure 3. Le procédé consiste alors à chercher n séquences de longueur M comportant t "1" et (M -t) "0".
Ces séquences notées ci-après w[0..n-1]r sont obtenues par : - une autocorrélation cyclique égale à 0,1, ou t (la séquence i décalée ne coïncide avec elle-même non décalée qu'en 0 ou 1 point) telle que pour tout i = O...n-1 : #k=0 M-1 w[i][k] w [i][k] = t (par définition) #K=0 M-1 w[i][k] w[i][(k + p) modulo M] = 0 ou 1, pour p = 1..M-1 - une intercorrélation cyclique égale à 0 ou 1 (la séquence i décalée ou non ne coïncide avec la séquence j qu'en 0 ou 1 point) telle que pour toute paire {i, j} où i = O...n-1 et j = O...n-1 sont différents :
<Desc/Clms Page number 4>
Figure img00040001
L'algorithme de calcul des séquences w est très simple : il détermine successivement les positions pos[0][0...t-1], pos[1][0...t-1], pos[n-1 ][O...t- 1], où ces séquences possèdent un "1", en commen- ant par pos[x][0] = 0, pos[x][1]= 1, ..., pos[x][t-1]= t-1, et en les modifiant pour satisfaire les conditions d'autocorrélation et intercorrélation.
Pour t = 3, les boucles de calcul mises en #uvre sont montrées à l'annexe 1.
Cet algorithme échoue lorsque n est trop grand compte tenu de M : peu de "petits" codes sont trouvés, mais ceci est de peu d'importance car on cherche généralement des codes de grande taille (N 100).
Les colonnes de la matrice A sont alors tout simplement les vecteurs w permutés circulairement : - kème sous-matrice (k = O...n-1)
A[ligne][colonne] = w[k][(ligne - (colonne - k P)) modulo M]
Avec : ligne = O...M-1 et colonne = kP...(k + 1) P - 1
Ainsi, chaque ligne de A comporte exactement t valeurs non nulles dans chacune des n sous-matrices, soit un total de n = tr.
Un exemple de matrice A, obtenue par ce procédé pour un code LDPC(75,50, t=3, tr=9) de redondance 3 / 2 (r = n = 3) avec P = 25 est montré à la figure 4. Selon le tableau représenté on peut constater que: w[0][i] = 1 pour i = 0, 1, 3 w[1][i] = 1 pour i = 0, 4, 9 w[2][i] = 1 pour i = 0, 6,13
La construction proposée garantit que : - chaque colonne comporte exactement t valeurs non nulles (par définition des w) - chaque ligne comporte exactement tr valeurs non nulles (grâce aux propriétés d'autocorrélation et intercorrélation des w) - toute paire de colonnes distinctes a au maximum une valeur non nulle commune (idem)
<Desc/Clms Page number 5>
- toute paire de lignes distinctes a au maximum une valeur non nulle commune (idem)
Selon une deuxième variante inspirée de la précédente correspondant au cas où m=t le procédé selon l'invention recherche n - m + 1 séquences de longueur M comportant t "1"et (M -t) "0", séquences notées w[O..n-m].
La première séquence, w[0] est obtenue par : - une autocorrélation cyclique égale à 0,1, ou t (la séquence 0 décalée ne coïncide avec elle-même non décalée qu'en 0 ou 1 point) telle que :
Figure img00050001
En fait, c'est la même définition que pour m = 1.
Les séquences suivantes, w[1...n-m] sont obtenues par - une autocorrélation cyclique égale à 0 ou t pour des décalages multiples de m (la séquence i décalée d'un multiple de m ne coïncide jamais avec elle-même non décalée) telle que : pour tout i = 1...n-m :
Figure img00050002

- par une intercorrélation cyclique égale à 0 ou 1 avec la séquence w[0] (la séquence i décalée ou non ne coïncide avec la séquence 0 qu'en 0 ou 1 point) telle que : pour tout i = 1...n-m :
Figure img00050003
<Desc/Clms Page number 6>
- et par une intercorrélation cyclique avec les séquences w[1..n-m] égale à 0 ou 1 pour des décalages multiples de m (la séquence i décalée ou non d'un multiple de m ne coïncide avec la séquence j qu'en 0 ou 1 point) telle que : pour toute paire {i, j} où i = 1...n-m et j = 1...n-m sont différents :
Figure img00060001
L'algorithme de calcul des séquences w est le même que précédemment. Seuls changent les critères d'autocorrélation et d'intercorrélation, celles-ci n'étant à vérifier que sur P points au lieu de M.
Les colonnes de la matrice A sont alors les vecteurs w permutés circulairement avec un pas égal à 1 ou m telles que : - Sous-matrice M x M à gauche de A :
A[ligne][colonne] = w[0][(ligne - colonne) modulo M]
Avec : ligne = 0...M-1 colonne = O...M - 1 - Sous-matrices M x P suivantes (en nombre égal à n - m) pour k = m...n-1 :
A[ligne][colonne] = w[k - m + 1][(ligne - m (colonne - k P)) modulo M]
Avec : ligne = O...M-1 colonne = kP...(k + 1)P - 1
Ainsi, chaque ligne de A comporte exactement m = t valeurs non nulles dans ses M premières colonnes, puis 1 valeur non nulle dans chacun des n - m paquets de P colonnes successives, soit un total de n ou tr.
Un exemple de matrice A, obtenu selon la deuxième variante du procédé selon l'invention est montré à la figure 5 pour un code LDPC(75,30, t=3, tr=5) de redondance 5 / 2 (n = 5, m = 3) avec P = 15. On constate sur le tableau de la figure 5 que: w[0][i] = 1 pour i = 0, 1, 3 w[1][i] = 1 pour i = 0, 4, 8 w[2][i] = 1 pour i = 0, 5,10
<Desc/Clms Page number 7>
Le procédé selon l'invention qui vient d'être décrit sous ses deux variantes conduit directement à un algorithme de codage de symboles de redondance Yi et de symboles d'information Xi très simple.
Pour cela, il suffit de considérer que les symboles de redondance Yi sont les M premiers symboles d'un mot de code, et les symboles libres Xi (information) sont les N - M derniers.
Les équations que doivent vérifier tout mot de code peuvent donc être réécrites sous la forme :
Figure img00070001

ou encore :
Figure img00070002

avec
Figure img00070003
Le procédé consiste alors à calculer dans un premier temps les M quantités Zm de la matrice de passage, et ensuite les symboles de redondance :
Figure img00070004
A titre d'exemple, pour le code LDPC(75,50) les quantités Zm sont calculés par le système d'équation défini par le tableau de la figure 6 qui, après résolution, se transforme en le tableau des symboles de redondance de la figure 7.
La matrice B d'élément générique Bij est l'inverse de la partie gauche AM (de dimension M x M) de la matrice A. Elle a une forme très simple : par construction, toutes ses colonnes sont des permutations circulaires de la séquence w[0][O..M-1] :
Aij = w[0][(i - j) modulo M] , i=O...M-1, j=O...M-1
<Desc/Clms Page number 8>
La matrice B comporte alors M lignes qui sont des permutations circulaires d'une ligne unique b[O...M-1], à savoir :
Bij = b[(j - i) modulo M]
B étant l'inverse de Am, les coefficients b sont définis par :
Figure img00080001
Par exemple, pour le code LDPC(75,50), les coefficients de redondance Ym sont calculés par le système d'équations défini par le tableau de la figure 8 qui après résolution se transforme en le tableau de la figure 9.
Cependant, il existe des cas où le calcul est impossible.
On peut en effet écrire les équations qui les définissent sous la forme :
Figure img00080002

tAM t{b[0], b[1 ], ..., b[M-1 ]} = tll, 0, 0, ... 101 La matrice tAm est une matrice circulante, dont la première ligne est
Figure img00080003

égale à a[0...M-1] ] = w[O]. Son déterminant est égal au produit de ses M valeurs propres I0...M-1. La kéme valeur propre est elle-même donnée par :
Figure img00080004

où a est une racine Même de l'unité.
Par exemple: - pour w[0] = a[0...M-1] = {1, 1, 0, 1, 0, 0, 0, ....} - pour des codes binaires (on se situe dans le corps de Galois
CG (2) où l'addition est équivalente au OU EXCLUSIF (XOR) et la multiplication au ET logique) on a : #1 = 1 + a + a3'
Si M est multiple de 7, il se trouve que l'équation
1 + a + a 3 = 0 définit un corps de Galois où a est racine 7ème de l'unité (le polynôme g(x) = 1 + x + x3 est irréductible et primitif dans CG (2) génère un corps de Galois CG(23)), ce qui signifie que #1 = 0.
<Desc/Clms Page number 9>
Parmi les codes LDPC trouvés par l'algorithme proposé, il faut donc éliminer ceux où M est multiple de 7 si l'on garde ce w[0] ci car : - l'une des valeurs propres de tAM sera nulle - donc son déterminant sera nul - dont on ne pourra pas trouver de b[i] convenables - donc on ne pourra pas effectuer le codage (calculer les Yi)
D'une manière très générale, quel que soit le choix fait pour w[0], il y aura des valeurs de M ne convenant pas car ne permettant pas de faire le codage.
On montre facilement (en factorisant xM- 1 et a(x) = #i M-1 a [i] xk) que ces valeurs de M sont les multiples d'une valeur MO pour laquelle a (x) divise xMO - 1.
Par exemple, pour des codes binaires avec t = 3 : - w[0] = {1, 1, 0, 1, ...} - w[0] = {1, 0, 1, 1, ...} interdisent M multiple de 7 (a(x) définit une racine 7ème de l'unité) - w[0] = {1, 1, 0, 0, 1, ...} - w[0] = {1, 0, 0, 1, 1, ...} interdisent M multiple de 15 (a(x) définit une racine 15ème de l'unité) - w[0] = {1, 0,1, 0,1, ...} n'est pas accepté (autocorrélation incorrecte) - w[0] = {1, 1, 0, 0, 0, 1, ...} - w[0] = {1, 0, 0, 0, 1, 1, ...} interdisent M multiple de 3 (a(x) est multiple de 1 + x + x2 qui définit une racine 3ème de l'unité) - w[0] = {1, 0, 1, 0, 0, 1, ...} - w[0] = {1,0, 0, 1, 0, 1, ...} interdisent M multiple de 31 (a(x) définit une racine 31 ème de l'unité)
Le calcul des coefficients b[i] est effectué de la manière suivante:
Pour une valeur de M non interdite, il existe un algorithme particulièrement simple de calcul des b [i] partir des a [i] (ouw[0][O...M-1]).
Cet algorithme repose sur l'observation que la série des b [i], périodisation et filtrage par un filtre à réponse impulsionnelle finie (RIF) A (z)
<Desc/Clms Page number 10>
dont les coefficients sont les a[M-1, M-2, ..., 1, 0] doit donner la série {1, 0,0, ...} périodisée. En fait, pour un code binaire utilisant l'un des w[0] énumérés précédemment, cette série est formée de la concaténation de séquences maximales (Maximal Length Séquences) de longueur 7 (ou 15 ou 31 ou 63).
On calcule donc la réponse impulsionnelle du filtre à réponse impulsionnelle infinie (RII) 1/ A (z) et on en extrait une tranche de longueur M qui, une fois périodisée, donne la série {1, 0,0, ...}après filtrage par A(z).
Par exemple, pour un code binaire avec t = 3 et pour lequel seuls a[0], a[k1]et a[k2] ne sont pas nuls, un algorithme correspondant est fourni à l'annexe 2.
Dans un esprit de simplification pour ne pas effectuer le calcul précédent à chaque codage, l'algorithme de codage peut encore être défini par les k2 derniers éléments b[M-K2...M-1] qui, par récurrence (filtrage par 1 / A(z)) permettent de recalculer tous les autres.
Egalement comme la deuxième phase de l'algorithme de codage standard (calcul des Y à partir des Z) comporte en moyenne M2 / 2 opérations, ce qui peut devenir important pour des codes conséquents : la complexité étant une fonction quadratique de la taille, et que de plus, il est nécessaire de stocker le tableau intermédiaire Z (M éléments) et connaître le tableau b (M éléments aussi) s'il n'est pas calculé sur place, cette partie de l'algorithme peut être modifiée pour n'utiliser que deux tableaux intermédiaires de très petite taille en réécrivant ainsi les équations donnant les Y de la façon montrée par le tableau de la figure 9 (exemple pour un code LDPC(75, 50)) :
Les M - k2 (pour t = 3) premières lignes sont les M - k2 dernières lignes du système d'équations donnant Y, avant résolution.
Les k2 dernières lignes sont les k2 dernières lignes du système d'équations donnant Y, après résolution.
Il suffit alors de calculer les Y dans l'ordre inverse, à savoir Y[M-1], Y [M-2], Y[0].
Le nombre d'opérations à effectuer est alors en moyenne de k2 M / 2 (calcul de Y[M-1] ... Y[M-k2]) suivi de t(M - k2) (calcul de tous les autres) soit approximativement (t + k2/2) M : la complexité n'est plus qu'une fonction linéaire de la taille.
L'algorithme utilise X[M...N] en entrée.
<Desc/Clms Page number 11>
La partie basse de X (X[0...M-1]) est utilisée comme stockage temporaire pour les Z : X[0...M-1] stocke Z[k2...M-1, O...k2-1] pour éviter un décalage circulaire en phase finale.
Les b [i] sontcalculés itérativement sur place, à partir des b[M-k2...M- 1].
Le code est défini par deux tableaux : - le tableau finB[0...k2-1] des k2 derniers éléments de b - le tableau pos[0...(n - m + 1)t] contenant les positions des éléments non nuls des séquences w[0], w[1], ..., w[n-m].
On utilise deux buffers internes de taille k2 : - reg[0...k2-1] pour calculer les b [i] - temp[0...k2-1]pour stocker les valeurs intermédiaires de Y[M- k2...M-1].
L'algorithme complet de codage rapide est alors celui montré à l'annexe 3.
Ces algorithmes sont très simples à mettre en oeuvre. Ils ont entre autre la caractéristique de définir un code par très peu de paramètres, à savoir les (n - m + 1)(t - 1) positions non nulles des "1"dans les séquences w et éventuellement k2 coefficients de codage. Même s'ils ne donnent pas tous les codes possibles répondant aux conditions a-d (par exemple, pas le code (150,125) de redondance 6/5, qui nécessite n=6 séquences w de longueur P=25), ils en donnent suffisamment pour que, dans une application quelconque où N et K sont définis a priori, on puisse trouver soit - un code (NLDPC, KLDPC) avec NLDPC = N et KLDPC = K - un code voisin (NLDPC+d, KLDPC+d), avec d faible, qui sera raccourci par non transmission de d symboles utiles mis arbitrairement à zéro.
Par exemple, pour obtenir un code de (N, K) redondance 5 / 3 (taux 0. 6), il suffit de partir d'un code (NLDPC+d, KLDPC+d) de redondance 8/ 5 (taux 0. 625) avec d = NLDPC/ 15. Pour des valeurs de N inférieures ou égales à 500 et t = 3, il est possible de construire très rapidement 932 codes différents dont les redondances sont les suivantes (on s'est volontairement limité aux redondances comprises entre 4 et 8/7, et aux codes où w[0] = {1, 1, 0, 1, 0,0, 0, ....} pour lesquels k2 = 3) : R=4/1 soit 4. 000 (105 codes)
<Desc/Clms Page number 12>
R = 5/2 soit 2. 500 (82 codes)
R = 6/3 ou 2/1 soit 2. 000 (203 codes) R=7/4 soit 1. 750 (55 codes)
R = 8/5 soit 1.600 (47 codes) R = 9/6 ou 3/2 soit 1. 500 (124 codes) R = 10/7 soit 1.428 (34 codes)
R = 11/8 soit 1. 375 (28 codes)
R = 12/9 ou 4/3 soit 1. 333 (84 codes)
R = 13/10 soit 1. 300 (20 codes)
R = 14/11 soit 1. 273 (17 codes)
R = 15/12 ou 5/4 soit 1. 250 (56 codes)
R = 16/13 soit 1. 231 (11 codes)
R = 17/14 soit 1. 214 (7 codes)
R = 18/15 ou 6/5 soit 1. 200 (34 codes)
R = 19/16 soit 1. 187 (3 codes)
R = 20/17 soit 1. 176 (2 codes)
R = 21/18 ou 7/6 soit 1. 167 (17 codes)
R = 24/21 ou 8/7 soit 1. 143 (3 codes)
De plus, toujours pour une valeur donnée de N inférieure ou égale à 500, il peut y avoir jusqu'à 12 codes différents (pour N = 480).
Par exemple, dès que N est multiple de 6 et supérieur ou égal à 288, il existe toujours trois codes de longueur N et de redondances 6/5, 3/2 et 2/1, par exemple LDPC(300,250) + LDPC(300,200) + LDPC(300,150).
Ceci est très utile pour protéger efficacement un train binaire formé de trois trains binaires chacun de longueur N et de sensibilités différentes.
Bien entendu, il est toujours possible d'envisager de nombreuses variantes de ces algorithmes, comme par exemple une permutation aléatoire des lignes et/ou colonnes de la matrice A.
Il est aussi important de signaler que l'adaptation à des codes non binaires est particulièrement simple.
<Desc/Clms Page number 13>
ANNEXE 1 for(x=0; x<n - m + 1; x++) { pos[x][0] = 0; for(pos[x][1]=pos[x][0]+1; pos[x][1]<M-1; pos[x][1]++) { for(pos[x][2]=pos[x][1]+1; pos[x][2]<M; pos[x][2]++) { (si les conditions ne sont pas satisfaites, continuer sinon, aller à ok) (arrêter : impossible de trouver un choix convenable pour pos[x][0...t-1]) ok :; }
<Desc/Clms Page number 14>
ANNEXE 2 (langage C : l'opérateur "#" correspond au OU EXCLUSIF.
/* Initialisation du passe de b, de longueur M */ for(i=M-k2; i<M; i++) b[i] = 0; /* Calcul de N valeurs successives de la réponse impulsionnelle de 1/A(z) */ b[0] = 1 ; for(i=1; i<k2; i++) b [i] = b[(i+M-(k2-k1)) % M]# b [(i+M-k2) % M]; for (i=k2; i<M; i++) b [i] = b[i-(k2-k1)]#b[i-k2]; /* S'arranger pour qu'il n'y ait qu'un 1 dans les k2 dernières positions de b filtre par A(z) */ weight = 0; /* tout sauf 1 */ while(weight ! = 1) { /* Decaler d'un cran */ for(i=1; i<M; i++) b[i-1] = b[i]; b[M-1 ] = b[M-1-(k2-k1)]# b[M-1-k2]; /* Verifier */ weight = 0; for(i=M-k2; i<M; i++) { char sum = b[i] # b[(i+k1 ) % M] # b [(i+k2) % M]; if (sum) { shift = M - i; weight++ ;
<Desc/Clms Page number 15>
/* Cas particulier ou M est interdit */ if(weight == 0) return(M~FORBIDDEN); /* decalage circulaire final a droite : b[i] = b[(i - shift) % M] */ for(dec=0; dec < shift ; { char temp = b[M-1]; for(i=M-1; i>0; i--) b [i] = b[i - 1]; b[0] = temp ; return(OK);
<Desc/Clms Page number 16>
ANNEXE 3 (langage C) : /* Phase 1 : calcul des M parites intermédiaires z.
Ces parites sont calculees en lisant les colonnes successives de la matrice de codage, a savoir A[*][M], ..., A[*][N]
Elles sont mises en tete de x a titre temporaire */ #define z x for(i=0; i<M; i++) z [i] = 0; /* Boucle sur les n-m sous-matrices a la droite de A */ cO = M; c1 = c0 + P ; for(k = 1; k ≤ n - m ; { offset = 0; for(c = cO; c < c1; c++) { if(x[c] ! = 0) for(i=0; i<t; i++) { /* p devrait etre offset + pos[i].
On le decremente de k2 pour eviter le decalage du tableau z avant la phase 3 */ p = offset + pos[k*t + i]- k2 ; if(p < 0) z [p + M] + z[p + M]#1; else if(p < M) z[p] = z[p]# 1; else z [p - M] = z[p - M]#1;
<Desc/Clms Page number 17>
offset = offset + m; } c0=c1; c1 = c1 + P; } /* Phase 2 : calcul des k2 derniers symboles de parite */ ixbO = M -1 - k2 ; /* 1 : initialisation des k2 derniers elements de y temp[0...k2-1] = y[M-1, M-2, ...M-k2] */ for(k=0; k<k2; k++) temp [k] = 0; /* 2 : des k2 derniers elements de b reg[0...k2-1] = b[M-k2...M-1] */ for(i=0; i<k2; i++) reg [i] = finB[i]; /* 3 : calcul iteratif des k2 derniers symboles */ for(i=0; i < M ; {
Figure img00170001

/* b[i] ={100 z b[i-(k2-k1 )] ^ b[i-k2] avec b[i-k2]...b[i-1] = reg[0...t2-1] On doit vérifier : b[-k2] + b[k1-k2] + b[0] = 0 b [-2] + b[k1-2] + b [k2-2] 0 b[-1]+ b[k1-1] + b[k2-1 ] = 0 b[0] + b[k1] + b [k2] = 1 b[1] + b[1+k1] + b[1+k2] = 0 ... */ if(i == k2) input = 1;
<Desc/Clms Page number 18>
else input = 0; bi = input ^ reg[0]# reg[k1]; for(k=1; k<k2; k++) reg[k - 1] = reg [k]; reg[k2 - 1]= bi; if(bi != 0) for(k=0; k<k2; k++) if(z[(ixb0 - k + M) % M] != 0) temp [k] = temp[k] 1\ 1; ixbO = ixbO + 1; if(ixb0 == M) ixbO = 0; /* 4 : Les z ont deja ete decales a gauche pour eviter l'ecrasement. Sinon, il faudrait faire : for(k=0; k<M - k2 ; z [k] z[k + k2];
Recopie de temp a la fin de y */ #define y x for(k=0; k<k2; k++) y[M - 1 - k] = temp[k]; /* Phase 3 : calcul de y[M-k2-1, M-k2-2,0] y[k + k2 - k2] + y[k + k2 - k1] + y[k + k2 - 0] + z[k + k2] = 0 y [k] va en x[k] z[k + k2] est en x[k]
Donc : x[k + k2 - k2] + x[k + k2 - k1] + x[k + k2 - 0] + x[k] = 0
Soit: x[k + k2 - k2] = -(x[k + k2 - k1 ] + x[k + k2] + x[k])
<Desc/Clms Page number 19>
*/ for(k = M - k2 - 1; k ≥ 0; k--) y [k] = y[k + k2 - k1] # y[k + k2]# z [k];

Claims (4)

REVENDICATIONS
1. Procédé de construction de codes LDPC pour la protection de trains binaires d'information, chaque train étant composé de N symboles décomposés en N-M symboles d'informations utiles X, et M symboles d'informations de redondance Ym, chaque code étant défini par une matrice de contrôle A comportant M=N-K lignes de N colonnes et t symboles non nuls dans chaque colonne, caractérisé en ce qu'il consiste : - à attribuer à toutes les lignes de la matrice de contrôle A un même nombre de symboles non nuls, - à prendre comme nombre de symboles t un nombre impair le plus petit possible, - à définir les colonnes de façon que deux colonnes quelconques de la matrice de contrôle A n'aient au plus qu'une valeur non nulle, - et à définir les lignes de façon que deux lignes de la matrice de contrôle A n'aient qu'une valeur commune non nulle.
2. Procédé selon la revendicationlcaractérisé en ce qu'il consiste : - à subdiviser la matrice de contrôle A de M lignes et N colonnes en n sous matrice de M lignes et P colonnes pour former n sous matrices de P lignes et P colonnes et à regrouper les m2 sous matrices de gauche en une sous matrice MxM et les autres en n-m sous matrice MxP, - et à déterminer Mxn séquences de vecteurs colonne w[0....n-1] de longueur M comportant t valeurs non nulles et (M-t) valeurs nulles en effectuant une autocorrélation et une intercorrélation cyclique des vecteurs colonne w.
3. Procédé selon la revendication 1 caractérisé en ce qu'il consiste : -- à subdiviser la matrice de contrôle A de M lignes et N colonnes en n sous matrices de M lignes et P colonnes pour former nxm sous matrices de P lignes et P colonnes et à regrouper les m2 sous matrices de gauche en une sous matrice MxM et les autres en n-m sous matrice MxP, - à déterminer n-m+1 séquences de vecteurs colonnes w[0....n-m] de longueur M comportant t valeurs non nulles et (M-t) valeurs nulles, - la première séquence w[0] étant obtenue par autocorrélation cyclique égale à 0,1, ou à la valeur t de façon que la séquence w[0] décalée ne coïncide avec elle même non décalée qu'en 0 ou 1 point,
<Desc/Clms Page number 21>
- les n-m séquences suivantes w [i][k] étantobtenues : - par une autocorrélation cyclique de valeur nulle ou égale à la valeur t de façon que la valeur de la séquence w[i] décalée d'un multiple de m ne coïncide jamais avec elle-même non décalée,et par une intercorrélation cyclique - et par une intercorrélation cyclique de valeur nulle ou 1 avec les séquences w[1....n-m] pour des décalages multiples de m de façon que une séquence i décalée ou non d'un multiple de m ne coïncide avec la séquence j qu'en 0 ou 1 point.
4. Procédé selon l'une quelconque des revendications 1 à 4 caractérisé en ce qu'il consiste à déterminer pour le codage d'informations utiles X,, une matrice de passage Zm égale au produit de la matrice de contrôle A par un vecteur colonne représentant N-M symboles d'information X, et à adjoindre aux symboles d'information des symboles de redondance Ym obtenus en résultat du produit de la matrice de passage Zm par une matrice B égale à l'inverse de la partie de dimension MxM de la matrice de contrôle A.
FR9912710A 1999-10-12 1999-10-12 Procede de construction et de codage simple et systematique de codes ldpc Expired - Fee Related FR2799592B1 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
FR9912710A FR2799592B1 (fr) 1999-10-12 1999-10-12 Procede de construction et de codage simple et systematique de codes ldpc
EP00402797A EP1093231A1 (fr) 1999-10-12 2000-10-10 Procédé de construction et de codage simple et systématique de codes Ldpc
CA002322983A CA2322983A1 (fr) 1999-10-12 2000-10-10 Processus simple et systematique pour la confection et le codage de codes de controle de la parite a faible densite (ldpc)
JP2000312558A JP2001168733A (ja) 1999-10-12 2000-10-12 Ldpcコードの構築およびコーディングのためのプロセス
US09/686,873 US6715121B1 (en) 1999-10-12 2000-10-12 Simple and systematic process for constructing and coding LDPC codes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9912710A FR2799592B1 (fr) 1999-10-12 1999-10-12 Procede de construction et de codage simple et systematique de codes ldpc

Publications (2)

Publication Number Publication Date
FR2799592A1 true FR2799592A1 (fr) 2001-04-13
FR2799592B1 FR2799592B1 (fr) 2003-09-26

Family

ID=9550834

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9912710A Expired - Fee Related FR2799592B1 (fr) 1999-10-12 1999-10-12 Procede de construction et de codage simple et systematique de codes ldpc

Country Status (5)

Country Link
US (1) US6715121B1 (fr)
EP (1) EP1093231A1 (fr)
JP (1) JP2001168733A (fr)
CA (1) CA2322983A1 (fr)
FR (1) FR2799592B1 (fr)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6888897B1 (en) 2000-04-27 2005-05-03 Marvell International Ltd. Multi-mode iterative detector
US7184486B1 (en) 2000-04-27 2007-02-27 Marvell International Ltd. LDPC encoder and decoder and method thereof
EP1290802A1 (fr) * 2000-06-16 2003-03-12 Aware, Inc. Systemes et procedes pour modulation a codage ldpc
US7000177B1 (en) 2000-06-28 2006-02-14 Marvell International Ltd. Parity check matrix and method of forming thereof
US6965652B1 (en) 2000-06-28 2005-11-15 Marvell International Ltd. Address generator for LDPC encoder and decoder and method thereof
US7072417B1 (en) * 2000-06-28 2006-07-04 Marvell International Ltd. LDPC encoder and method thereof
US7099411B1 (en) 2000-10-12 2006-08-29 Marvell International Ltd. Soft-output decoding method and apparatus for controlled intersymbol interference channels
WO2002091592A1 (fr) * 2001-05-09 2002-11-14 Comtech Telecommunications Corp. Codes a controle de parite faible densite, et produits turbocodes faible densite
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
JP3808769B2 (ja) * 2001-12-27 2006-08-16 三菱電機株式会社 Ldpc符号用検査行列生成方法
JP3833545B2 (ja) * 2002-02-13 2006-10-11 三菱電機株式会社 通信システム、受信機、送信機および通信方法
JP3946087B2 (ja) * 2002-05-23 2007-07-18 三菱電機株式会社 通信システム、受信機および通信方法
JP4005084B2 (ja) * 2002-07-02 2007-11-07 三菱電機株式会社 検査行列生成方法および検査行列生成装置
US7577207B2 (en) 2002-07-03 2009-08-18 Dtvg Licensing, Inc. Bit labeling for amplitude phase shift constellation used with low density parity check (LDPC) codes
US7020829B2 (en) 2002-07-03 2006-03-28 Hughes Electronics Corporation Method and system for decoding low density parity check (LDPC) codes
ES2381012T3 (es) 2002-07-03 2012-05-22 Dtvg Licensing, Inc Procedimiento y sistema para generar códigos de comprobación de paridad de baja densidad (LDPC)
EP2190123B9 (fr) * 2002-07-03 2014-08-27 Dtvg Licensing, Inc Procédé et système pour la génération de codes LDPC (Low Density Parity Check)
CN101515804B (zh) * 2002-07-26 2013-01-23 Dtvg许可公司 产生低密度奇偶校验码的方法和***
US7864869B2 (en) 2002-07-26 2011-01-04 Dtvg Licensing, Inc. Satellite communication system utilizing low density parity check codes
US20040019845A1 (en) 2002-07-26 2004-01-29 Hughes Electronics Method and system for generating low density parity check codes
US7702986B2 (en) 2002-11-18 2010-04-20 Qualcomm Incorporated Rate-compatible LDPC codes
KR100502609B1 (ko) * 2002-11-21 2005-07-20 한국전자통신연구원 Ldpc 코드를 이용한 부호화기 및 부호화 방법
KR100936022B1 (ko) 2002-12-21 2010-01-11 삼성전자주식회사 에러 정정을 위한 부가정보 생성 방법 및 그 장치
KR100906474B1 (ko) 2003-01-29 2009-07-08 삼성전자주식회사 저밀도 부가정보 발생용 매트릭스를 이용한 에러 정정방법 및그 장치
EP1597828B1 (fr) 2003-02-26 2020-10-07 QUALCOMM Incorporated Procede et dispositif permettant d'executer des operations de codage a controle de parite de faible densite (ldpc) par permutation multi-niveaux
US6957375B2 (en) * 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
US20050100076A1 (en) * 2003-08-04 2005-05-12 Gazdzinski Robert F. Adaptive holographic wideband communications apparatus and methods
US20050041746A1 (en) * 2003-08-04 2005-02-24 Lowell Rosen Software-defined wideband holographic communications apparatus and methods
US20050084033A1 (en) * 2003-08-04 2005-04-21 Lowell Rosen Scalable transform wideband holographic communications apparatus and methods
KR100809619B1 (ko) 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
US7334181B2 (en) * 2003-09-04 2008-02-19 The Directv Group, Inc. Method and system for providing short block length low density parity check (LDPC) codes
KR100922956B1 (ko) 2003-10-14 2009-10-22 삼성전자주식회사 저밀도 패리티 검사 코드의 부호화 방법
US7376883B2 (en) * 2003-10-27 2008-05-20 The Directv Group, Inc. Method and system for providing long and short block length low density parity check (LDPC) codes
KR100975061B1 (ko) 2003-11-28 2010-08-11 삼성전자주식회사 저밀도 패리티 검사를 이용한 패리티 정보 생성 방법
EP1708367A4 (fr) 2004-01-20 2009-02-11 Nec Corp Procede de generation de matrices d'inspection, systeme de transmission de donnees, dispositif codeur, dispositif decodeur, et programme de generation de matrices d'inspection
CA2559818C (fr) * 2004-04-28 2011-11-29 Samsung Electronics Co., Ltd. Appareil et procede pour le codage/decodage de bloc de code de controle de parite a faible densite a longueur de code variable
JP4282558B2 (ja) 2004-06-30 2009-06-24 株式会社東芝 低密度パリティチェック符号復号器及び方法
KR100739684B1 (ko) 2004-08-05 2007-07-13 삼성전자주식회사 저밀도 패리티 체크 행렬 생성 장치 및 방법
KR101208546B1 (ko) * 2004-08-09 2012-12-05 엘지전자 주식회사 저밀도 패리티 체크 행렬을 이용한 부호화 및 복호화 방법
EP1790083B1 (fr) * 2004-08-13 2011-01-12 Dtvg Licensing, Inc Ameliorations de conception de code et de mise en oeuvre pour des codes de verification de parite a faible densite de canaux a entrees multiples et a sorties multiples
CN101341659B (zh) 2004-08-13 2012-12-12 Dtvg许可公司 用于多输入多输出通道的低密度奇偶校验码的码设计与实现的改进
AU2005273169B2 (en) * 2004-08-16 2008-09-11 Nokia Technologies Oy Apparatus and method for coding/decoding block low density parity check code with variable block length
WO2006027818A1 (fr) * 2004-09-03 2006-03-16 Mitsubishi Denki Kabushiki Kaisha Procede de generation de code ldpc et appareil de communication
FI121431B (fi) 2004-09-13 2010-11-15 Tamfelt Pmc Oy Paperikoneessa käytettävä kudosrakenne ja menetelmä sen valmistamiseksi
KR100669152B1 (ko) 2004-11-25 2007-01-15 한국전자통신연구원 저밀도 패리티 검사 코드의 부호화 장치 및 방법
KR100913876B1 (ko) 2004-12-01 2009-08-26 삼성전자주식회사 저밀도 패리티 검사 부호의 생성 방법 및 장치
KR100641052B1 (ko) * 2004-12-08 2006-11-02 한국전자통신연구원 Ldpc 부호기 및 복호기, 및 ldpc 부호화 방법 및복호화 방법
KR100678521B1 (ko) 2004-12-20 2007-02-02 한국전자통신연구원 비균일 저밀도 패리티 검사 부호의 부호화 장치 및 방법
WO2006073322A1 (fr) * 2004-12-29 2006-07-13 Intel Corporation Codes de verification de parite a faible densite gilbert a trois bandes
CN100414841C (zh) * 2005-05-11 2008-08-27 电子科技大学 一种ldpc编码的实现方法
US7499490B2 (en) * 2005-06-24 2009-03-03 California Institute Of Technology Encoders for block-circulant LDPC codes
US8196025B2 (en) 2005-08-03 2012-06-05 Qualcomm Incorporated Turbo LDPC decoding
US7853862B2 (en) 2005-08-03 2010-12-14 Qualcomm Incorporated Systems and methods for a turbo low-density parity-check decoder
US7934147B2 (en) * 2005-08-03 2011-04-26 Qualcomm Incorporated Turbo LDPC decoding
US7577892B1 (en) 2005-08-25 2009-08-18 Marvell International Ltd High speed iterative decoder
US7861131B1 (en) 2005-09-01 2010-12-28 Marvell International Ltd. Tensor product codes containing an iterative code
JP4558638B2 (ja) * 2005-12-15 2010-10-06 富士通株式会社 符号器および復号器
US7644339B2 (en) * 2006-10-02 2010-01-05 Broadcom Corporation Overlapping sub-matrix based LDPC (low density parity check) decoder
US8117523B2 (en) * 2007-05-23 2012-02-14 California Institute Of Technology Rate-compatible protograph LDPC code families with linear minimum distance
CN101075811B (zh) * 2007-06-08 2010-06-23 中国科学技术大学 一种三对角线结构的准循环低密度码及其构造方法
CN100462986C (zh) * 2007-09-13 2009-02-18 南京大学 基于可编程门阵列的低密度奇偶校验编解码硬件仿真***
JP4618293B2 (ja) * 2007-12-12 2011-01-26 住友電気工業株式会社 復号装置及び検査行列生成方法
US8321769B1 (en) 2008-11-06 2012-11-27 Marvell International Ltd. Multi-parity tensor-product code for data channel
US8516352B2 (en) * 2009-07-21 2013-08-20 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US9397699B2 (en) * 2009-07-21 2016-07-19 Ramot At Tel Aviv University Ltd. Compact decoding of punctured codes
US8516351B2 (en) * 2009-07-21 2013-08-20 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US8375278B2 (en) * 2009-07-21 2013-02-12 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US8656244B1 (en) 2010-10-29 2014-02-18 Massachusetts Institute Of Technology Rate adaptive nonbinary LDPC codes with low encoding complexity
TWI487288B (zh) 2012-01-04 2015-06-01 Nat Univ Tsing Hua 用於非二進制類循環低密度奇偶檢查碼之解碼裝置及其方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537427A (en) * 1991-08-21 1996-07-16 International Business Machines Corporation Modular multiple error correcting code system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2283592A1 (fr) 1974-08-27 1976-03-26 Thomson Csf Dispositif extracteur de synchronisation et systeme de transmission d'informations comportant un tel dispositif
FR2431229A1 (fr) 1978-07-12 1980-02-08 Thomson Csf Dispositif de demodulation de signaux modules en deplacement de frequence et systeme de transmission comportant un tel dispositif
FR2546001B1 (fr) 1983-05-10 1985-07-05 Thomson Csf Demodulateur de signaux, a enveloppe constante et phase continue, modules angulairement par un train de symboles binaires
FR2604318B1 (fr) 1986-09-23 1989-03-31 Thomson Csf Procede et dispositif de synchronisation symbole et leur application a la demodulation symbole de messages numeriques
FR2605769B1 (fr) 1986-10-22 1988-12-09 Thomson Csf Operateur polynomial dans les corps de galois et processeur de traitement de signal numerique comportant un tel operateur
FR2605818B1 (fr) 1986-10-27 1992-09-18 Thomson Csf Codeur-decodeur algebrique de codes en blocs reed solomon et bch, applicable aux telecommunications numeriques
FR2607987B1 (fr) 1986-12-05 1989-02-10 Thomson Csf Procede et dispositif de modulation et de demodulation a plusieurs etats, a niveau de protection ajustable
FR2631146B1 (fr) 1988-05-04 1991-05-10 Thomson Csf Procede et dispositif de codage de l'energie du signal vocal dans des vocodeurs a tres faibles debits
FR2631147B1 (fr) 1988-05-04 1991-02-08 Thomson Csf Procede et dispositif de detection de signaux vocaux
FR2635420B1 (fr) 1988-07-19 1990-10-19 Thomson Csf Procede et dispositif de demodulation de signaux a enveloppe constante et phase continue modules angulairement par un train de symboles binaires, tolerant les derives de frequence
EP0386506A3 (fr) * 1989-03-06 1991-09-25 International Business Machines Corporation Codage et décodage de symboles à correction d'erreurs à peu de frais
FR2654542B1 (fr) 1989-11-14 1992-01-17 Thomson Csf Procede et dispositif de codage de filtres predicteurs de vocodeurs tres bas debit.
FR2670313A1 (fr) 1990-12-11 1992-06-12 Thomson Csf Procede et dispositif pour l'evaluation de la periodicite et du voisement du signal de parole dans les vocodeurs a tres bas debit.
FR2690551B1 (fr) 1991-10-15 1994-06-03 Thomson Csf Procede de quantification d'un filtre predicteur pour vocodeur a tres faible debit.
US5425038A (en) * 1993-07-02 1995-06-13 International Business Machines Corporation Error plus single bit error detection
US5412667A (en) * 1993-07-08 1995-05-02 Commodore Electronics Limited Decoder for cross interleaved error correcting encoded data
US5872798A (en) * 1994-02-16 1999-02-16 U.S. Philips Corporation Error correctable data transmission method and device based on semi-cyclic codes
US5745507A (en) * 1995-03-31 1998-04-28 International Business Machines Corporation Systematic symbol level ECC for use in digital memory systems
FR2738383B1 (fr) 1995-09-05 1997-10-03 Thomson Csf Procede de quantification vectorielle de vocodeurs bas debit
US5757823A (en) * 1995-10-03 1998-05-26 International Business Machines Corporation Error detection and correction for four-bit-per-chip memory system
US5768294A (en) * 1995-12-11 1998-06-16 International Business Machines Corporation Memory implemented error detection and correction code capable of detecting errors in fetching data from a wrong address
US6195777B1 (en) * 1997-11-06 2001-02-27 Compaq Computer Corporation Loss resilient code with double heavy tailed series of redundant layers
US6307487B1 (en) * 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US6320520B1 (en) * 1998-09-23 2001-11-20 Digital Fountain Information additive group code generator and decoder for communications systems
US6463563B1 (en) * 1999-11-30 2002-10-08 International Business Machines Corporation Single symbol correction double symbol detection code employing a modular H-matrix

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537427A (en) * 1991-08-21 1996-07-16 International Business Machines Corporation Modular multiple error correcting code system

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
BOUTROS J ET AL: "Generalized low density (Tanner) codes", 1999 IEEE INTERNATIONAL CONFERENCE ON COMMUNICATIONS (CAT. NO. 99CH36311), 1999 IEEE INTERNATIONAL CONFERENCE ON COMMUNICATIONS, VANCOUVER, BC, CANADA, 6-10 JUNE 1999, 1999, Piscataway, NJ, USA, USA, pages 441 - 445 vol.1, XP002143044, ISBN: 0-7803-5284-X *
LI PING ET AL: "Low density parity check codes with semi-random parity check matrix", ELECTRONICS LETTERS, 7 JAN. 1999, IEE, UK, vol. 35, no. 1, pages 38 - 39, XP002143043, ISSN: 0013-5194 *
MACKAY D J C: "Good error-correcting codes based on very sparse matrices", IEEE TRANSACTIONS ON INFORMATION THEORY, MARCH 1999, IEEE, USA, vol. 45, no. 2, pages 399 - 431, XP002143042, ISSN: 0018-9448 *
PENG X -H ET AL: "EFFICIENT PERMUTATION CRITERION FOR OBTAINING MINIMAL TRELLIS OF A BLOCK CODE", ELECTRONICS LETTERS,GB,IEE STEVENAGE, vol. 32, no. 11, 23 May 1996 (1996-05-23), pages 983 - 984, XP000599121, ISSN: 0013-5194 *
RICHARD E. BLAHUT: "Theory and practice of error control codes ISBN: 0-201-10102-5", May 1984, ADDISON-WESLEY, UNITED STATES, XP002143045 *

Also Published As

Publication number Publication date
EP1093231A1 (fr) 2001-04-18
JP2001168733A (ja) 2001-06-22
US6715121B1 (en) 2004-03-30
FR2799592B1 (fr) 2003-09-26
CA2322983A1 (fr) 2001-04-12

Similar Documents

Publication Publication Date Title
FR2799592A1 (fr) Procede de construction et de codage simple et systematique de codes ldpc
EP1829223B1 (fr) Décodage parallèle en plusieurs couches de codes LDPC
TWI466451B (zh) 編碼器、解碼器、編碼方法及解碼方法
CN101073205B (zh) 低密度奇偶校验编码器和解码器以及低密度奇偶校验编码和解码方法
KR100881889B1 (ko) 저밀도 패리티 검사(ldpc) 코드들에 대한 계층화된디코딩 방식의 개선
JP4033245B2 (ja) ターボ符号化装置およびターボ符号化方法
CN104426554B (zh) 用于低密度奇偶校验码的改善的解码器
CN105075128A (zh) 具有高并行性、低差错本底和简单编码原理的经提升ldpc码的设计
EP2486661A1 (fr) Procédé de décodage de codes non binaires
CN103053116B (zh) 低密度奇偶校验码的编码方法和装置
JP5774237B2 (ja) 誤り訂正符号化方法および誤り訂正符号化装置
FR2512568A1 (fr) Systeme pour transferer des donnees binaires par une pluralite de canaux au moyen d&#39;un codeur operant par convolution
La Guardia On classical and quantum MDS-convolutional BCH codes
EP1905157B1 (fr) Procede et systeme d&#39;encodage d&#39;une sequence de donnees
EP2384547B1 (fr) Procede et dispositif de codage correcteur d&#39;erreurs flexible et programme d&#39;ordinateur correspondant
Fujiwara et al. High-rate quantum low-density parity-check codes assisted by reliable qubits
FR2858141A1 (fr) Codage d&#39;informations par codes de reed-solomon raccourcis
CN103117749B (zh) 低密度奇偶校验码的校验矩阵构造和编解码方法及装置
CN109257049B (zh) 一种修复二进制阵列码校验矩阵的构造方法及修复方法
EP2724467A1 (fr) Procédé d&#39;encodage de données d&#39;information en bursts
EP0989679A1 (fr) Méthode de correction de données perdues et circuit correspondant
EP1471647B1 (fr) Codage et décodage utilisant un code construit sur un treillis dont les sections sont basées sur des codes en bloc à bonne distance
CN103067024B (zh) 低密度生成矩阵码的生成矩阵构造和编解码方法及装置
EP1300952A1 (fr) Code de détection et/ou de correction d&#39;erreurs à haute efficacité
FR3022651A1 (fr) Procedes et dispositifs de codage et de decodage correcteur d&#39;erreurs, et programme d&#39;ordinateur correspondant.

Legal Events

Date Code Title Description
CD Change of name or company name
ST Notification of lapse

Effective date: 20150630