FR2782423A1 - Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant - Google Patents

Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant Download PDF

Info

Publication number
FR2782423A1
FR2782423A1 FR9810089A FR9810089A FR2782423A1 FR 2782423 A1 FR2782423 A1 FR 2782423A1 FR 9810089 A FR9810089 A FR 9810089A FR 9810089 A FR9810089 A FR 9810089A FR 2782423 A1 FR2782423 A1 FR 2782423A1
Authority
FR
France
Prior art keywords
coding
data
processed
stage
stages
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.)
Pending
Application number
FR9810089A
Other languages
English (en)
Inventor
H Jean Claude Carlac
Cyril Vervoux
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
France Telecom 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 France Telecom SA filed Critical France Telecom SA
Priority to FR9810089A priority Critical patent/FR2782423A1/fr
Priority to FR9810316A priority patent/FR2782424A1/fr
Priority to FR9816788A priority patent/FR2782425B1/fr
Priority to AU51684/99A priority patent/AU5168499A/en
Priority to DE69914767T priority patent/DE69914767T2/de
Priority to PCT/FR1999/001912 priority patent/WO2000008766A1/fr
Priority to US09/744,849 priority patent/US6745362B1/en
Priority to EP99936670A priority patent/EP1101288B1/fr
Publication of FR2782423A1 publication Critical patent/FR2782423A1/fr
Pending 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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

Dispositif de codage correcteur d'erreurs, du type associant à une série de données source un bloc de données codées, destiné à être transmis vers au moins un récepteur comprenant au moins deux étages de codage (21 i ) comprenant chacun au moins deux modules (22i,j ) de codage de base, chacun desdits étages de codage recevant une série de données à traiter, réparties entre lesdits modules de codage de base, et délivrant une série de données traitées, issues desdits modules de codage de base et au moins un étage de brassage (23 i ), ledit étage de brassage étant inséré entre deux étages de codage successifs, un premier étage de codage et un second étage de codage, et répartissant les données traitées issues de chaque module de codage de base dudit premier étage de codage entre au moins deux modules de codage de base dudit second étage.

Description

Procédé et dispositif de codage correcteur d'erreurs et
procédé et dispositif de décodage correspondant.
Le domaine de l'invention est celui du codage de données numériques.
Plus précisément, l'invention concerne les codes correcteurs d'erreurs.
L'invention s'applique notamment, mais non exclusivement, aux codages de données source organisés en blocs de données, indépendants les uns des autres, et devant donc être codés, et décodés, unitairement, ainsi qu'au codage de flux de
données (codages convolutifs).
De nombreuses techniques de codage permettant la correction d'erreurs de
transmission sont déjà connues. On peut notamment se référer aux documents F.J.
McWilliams et N.J.A. Sloane [1], S.B.Wicker [2], et V.Pless et al [3] (toutes les références citées dans la présente demande ont été regroupées, pour simplifier la
lecture, en annexe. Cette annexe fait bien sûr partie de la présente description). Les
codes correcteurs d'erreurs permettent de corriger les erreurs de transmission inhérentes à tout canal de communication. Ainsi, ils sont abondamment utilisés en télécommunications, en télédiffusion et en stockage d'informations, par exemple
dans les disques laser et les disques magnétiques...
Ces erreurs sont causées, par exemple, par le bruit thermique des composants électroniques du récepteur, des brouillages électromagnétiques (intentionnels ou non), des échos ou des propagations multiples dans le cas de la propagation hertzienne (par exemple dans le cadre de systèmes de radiotéléphonie tel que le GSM, de radiodiffusion numérique tel que le DAB ou de télévision numérique tel que DVB) ou dans un réseau d'énergie électrique (par exemple pour
les télécommunications sur le réseau électrique)...
Les premières études sur les codes correcteurs d'erreurs datent des années 1940. Dans ses articles de 1948, Claude Shannon [4] a fondé la théorie de l'information suivant laquelle sont conçus encore actuellement (et pour toujours ?)
les systèmes de communications numériques.
L'un des résultats de Shannon est son théorème concernant la limite de la capacité d'un canal de communication dont la fameuse formule est: / C= B-L9(l+ N) o la capacité C du canal est un débit d'information s'exprimant en bit/s, B la bande passante du canal en Hz, et S/N le rapport des puissances du signal et du
bruit dans la bande passante.
Ce théorème peuts'énoncer de la façon suivante: "A tout canal est associé une capacité C de transmission (en bit/s). f existe des codes correcteurs d'erreurs tels que l'information peut être transmise à travers un canal à un débit inférieur à sa capacité C avec un taux d'erreurs binaires arbitrairement petit en prenant un code
correcteur d'erreurs de longueur suffisamment grande".
Le théorème de Shannon est malheureusement seulement une preuve d'existence. Sa publication a donné le coup d'envoi de la recherche sur les "bons" codes qui dure maintenant depuis 50 ans. Les principaux codes qui ont retenus l'attention de la communauté des télécommunications ont d'abord été les codes en bloc pour transmettre des paquets de bits: les codes de Hamming, les codes de
Golay, les codes de Reed-Muller, les codes BCH, les codes de ReedSolomon,...
Le principe des codes correcteurs d'erreurs en bloc a été inventé par R. W.
Hamming en 1950: à partir de k bits d'information utile, on calcule (n- k) bits de redondance au moyen d'additions modulo 2 des k bits d'information. la longueur totale de chaque bloc, appelé aussi mot de code, est donc de n bits. A la réception, si des erreurs sont présentes dans le mot de n bits reçus, la présence de (n-k) bits de redondance au côté des k bits d'informations utiles permettra de corriger
certaines des erreurs présentes.
Si le rapport des puissances signal/bruit est supérieur à une certaine valeur, alors le coût du débit d'information occupé par les bits de redondance du codage est plus que compensé par la réduction, voire la quasi annulation, du taux d'erreurs binaires (TEB) après décodage. Ce gain en performance est appelé gain de codage, pour un TEB fixé, et est donné en décibels (dB). Un gain de codage de 3dB signifie que l'on peut diviser par 2 la puissance du signal émis avec codage
pour obtenir le même TEB que sans codage (3 dB = lO.Loglo(2)).
Une autre grande famille de codages, plus récente, est celle des codes convolutifs introduite par P.Elias [5] en 1955. Ces codages transforment une suite infinie de symboles d'information en plusieurs autres suites infinies de symbole d'information. Ces codes ont été inventé pour transmettre des flux continus d'information. A.J.Viterbi [6] (en 1967) et G.D.Forney [7] (en 1973) ont démontré les possibilités de décoder les " petits " codes convolutifs de façon efficace avec l'algorithme dit de Viterbi (un algorithme issu de la théorie de la programmation dynamique de Cf; Bellmann [8] (1957), Djikstra (1950) [8],
Pontryaguine(1950), [8]).
Les codes (correcteurs d'erreurs) en bloc et les codes convolutifs peuvent
être traiter avec les mêmes outils théoriques et les mêmes méthodes de décodage.
On peut représenter les codes en bloc et les codes convolutifs par des graphes un peu particulier appelés "treillis" à partir desquels on peut calculer leurs
distributions des poids et effectuer un décodage selon l'algorithme de Viterbi (Cf.
Fomrney [7] et McEliece [9]).
Chaque mot de code est représenté par un chemin différent dans le treillis et un décodage selon l'algorithme de Viterbi permet de trouver le meilleur chemin c'est-à-dire le mot de code le plus proche du mot reçu. Mais, pour un code en bloc comme pour un code convolutif, la complexité de décodage "explose" de façon exponentielle en 2(n-k) pour un code en bloc, et en 2v pour un code convolutif (v est la taille de la mémoire du codeur convolutif). Le dilemme est que plus un code est long et puissant, plus il corrige d'erreurs, mais plus il est coûteux en temps ou
en matériel à décoder.
Récemment, en 1993, C. Berrou et A. Glavieux [10] ont présenté un nouveau schéma de codage couramment appelé "turbo-code". On peut souligner quatre idées présentes dans les turbo-codes: 1) Utiliser un codage convolutif récursif, c'est-à-dire ayant une réponse impulsionnelle infinie (et non pas une réponse
impulsionnelle finie comme classiquement).
2) Coder une fois les bits d'information utile dans leur ordre initial, puis coder une 2ème fois ces mêmes données utiles mais dans un ordre différent, c'est-à-dire permutées. On n'émet qu'une seule fois les bits utiles, et les codeurs n'émettent que leurs redondances. La permutation, appelée aussi entrelacement, est "magique", car plus sa taille est grande plus le code peut corriger d'erreurs. En effet, l'entrelacement permet de décorréler les erreurs dues au canal
de transmission.
3) Utiliser les techniques de décodage à décision douce (en anglais: "soft-decoding") introduite par Bahl et al.(algoritme BCJR) [11], G. Battail [12], ou Hagenauer (algoritme SOVA ("Soft-Output
Viterbi Algorithm")) [13]...
4) Poser par définition que la sortie Ai (de chaque décodeur i à décision douce élémentaire, recevant "l'information" A. () à l'itération i) est la somme de "l'information" initiale A0 reçue et
d'une information extraite ou extrinsèque W1 telle que: Ai=A0+Wi.
A l'itération suivante (i+l), on ne réinjecte qu'une partie de l'information extrinsèque telle que: Ai+1 ( )=A0+ai+lWi, avec les coefficients ai variant de 0 à la lère itération et pouvant atteindre 1,0 pour la dernière. Ces coefficients ai sont optimisés pour minimiser le TEB à partir d'un certain rapport signal/bruit. En toute rigueur, les quantités A sont des logarithmes de rapport de
vraisemblance et non pas des quantités d'information.
Les premiers turbo-codes de Berrou et Glavieux étaient des codes convolutifs basés sur une matrice de permutation de grande taille (256 x 256 = 65536) donnant des performances proches de la limite de Shannon, pour de faibles rapports signal à bruit. Mais, certains des plus récents systèmes de télécommunications et télédiffusion nécessitent de transmettre de petits paquets d'information (ex: rétrodiffusion hertzienne, téléphone mobile, ATM sans-fil, Internet...). De plus, l'inconvénient d'une permutation de grande taille est un retard de traitement incompressible qui peut être très gênant, dans un service temps réel, comme par exemple dans une conversation téléphonique. C'est pourquoi des recherches ont été menées pour trouver de bons "turbo- codes" en bloc. En particulier, R. Pyndiah et al. [14] ont adapté le concept du décodage itératif aux codes produits d'Elias [6] pour de petits codes en bloc (n<1024). Et récemment, en 1997, Berrou et al.[17] ont adapté leurs turbo-codes (en refermant les treillis) à la construction de codes en bloc performants de cette ordre de taille (n<2048),
appelés FOTC (en anglais: "Frame Oriented Turbo Codes").
Les codes en bloc présentés par Berrou et Pyndiah sont parmi les meilleurs codes connus dans leurs catégories de taille et de rendement (0.5<r<1) et ce pour une complexité de décodage permettant une réalisation matérielle d'un excellent
rapport qualité/prix.
Pour une longueur n de bloc donnée et pour une capacité de correction: t = L(d -1) / 2] donnée (d est la distance de Hamming minimale entre deux mots du code), il existe des bornes supérieures (plus ou moins sévères) des performances que l'on peut espérer atteindre. La meilleure des bornes supérieures connue est la borne de McEliece et al.[1,2], représentée (11) en trait plein sur la figure 1. On a fait
également apparaître, en pointillés, la borne 12 de Gilbert-Varshamov.
Pour une distance relative d/n fixée, on ne peut trouver un code ayant un rendement k/n supérieur à la borne de McEliece. De plus, on dit qu'une famille de code est bonne si: lim(d I/ n):0
n -'"-
Par exemple, pour un rendement de k/n = 0,5, la borne de McEliece sur la distance minimale relative est d/n < 0,18. Si n=1024 bits, on peut donc au plus
espérer corriger 91 erreurs.
Actuellement, les "turbo-codes" sont les codes correcteurs les plus efficaces, pour un TEB de l'ordre de 10-4. Lorsque ce TEB est très faible, par exemple de l'ordre de 10-10, le gain par rapport aux autres techniques est moins important. Par ailleurs, les rendements obtenus (classiquement 1/2) ne semblent pas optimaux. L'invention a notamment pour objectif de pallier ces différents
inconvénients de l'état de l'art.
Plus précisément, un objectif de l'invention est de fournir un procédé de codage correcteur d'erreurs offrant des performances meilleures que les codes connus. Notamment, un objectif de l'invention est de fournir un tel procédé,
permettant de se rapprocher fortement de la borne de McEliece.
Un autre objectif de l'invention est de fournir un tel procédé de codage, qui permette un gain très important en particulier lorsque les taux d'erreurs sont très
faibles, de l'ordre de 10-10.
L'invention a également pour objectif de fournir un tel procédé, qui permette un gain de rendement, par rapport aux techniques de codage connues (par
exemple, un passage d'une rendement de 1/2 à 1/4 ou 1/8).
Un autre objectif de l'invention est de fournir un tel procédé de codage, qui soit adapté au codage de blocs de données de longueur n moyenne, par exemple
comprise entre 128 et 2048 bits.
Encore un autre objectif de l'invention est de fournir un tel procédé de
codage, qui puisse être facilement implanté en VLSI.
L'invention a également pour objectif de fournir un procédé de décodage correspondant, qui soit de complexité raisonnable, et notamment qui offre un rapport ou performance/complexité compétitif par rapport aux meilleurs codes connus. Ces objectifs ainsi que d'autres qui apparaitront par la suite sont atteints selon l'invention à l'aide d'un dispositif de codage correcteur d'erreurs, du type associant à une série de données source un bloc de données codées, destiné à être transmis vers au moins un récepteur, comprenant: - au moins deux étages de codage comprenant chacun au moins deux modules de codage de base, chacun desdits étages de codage recevant une série de données à traiter, réparties entre lesdits modules de codage de base, et délivrant une série de données traitées, issues desdits modules de codage de base; - et au moins un étage de brassage, ledit étage de brassage étant inséré entre deux étages de codage successifs, un premier étage de codage et un second étage de codage, et répartissant les données traitées issues de chaque module de codage de base dudit premier étage de codage entre au moins deux modules de codage de base
dudit second étage.
Un tel dispositif de codage permet d'obtenir, pour un rendement donné, une distance minimale importante. Un tel code (192, 96) de rendement 1/2, construit sur la base de l'exemple décrit par la suite, présente ainsi une distance
minimale proche de 30. De plus, la distribution des poids est proche de l'optimale.
Comme cela apparaîtra par la suite, ce procédé peut aisément être implanté
sous la forme d'une machine pipe-line, notamment dans un VLSI.
De façon avantageuse, le code mis en oeuvre est systématique, ou pseudo-
systématique. Ainsi, ledit bloc de données codées à transmettre comprend avantageusement au moins certaines desdites données source et au moins certaines des données traitées issues du dernier étage de codage, et préférentiellement
l'ensemble desdites données source.
Selon un mode de réalisation avantageux de l'invention, ledit bloc de données codées comprend des données traitées issues d'au moins deux étages de codage. En d'autres termes, on peut prendre en compte les données calculées par le dernier étage, ainsi que des derniers étages. On choisira le compromis adéquat, en fonction des besoins, entre la qualité du décodage (prise en compte du plus
grand nombre d'informations possible) et le rendement.
Dans un mode de réalisation particulier, au moins un desdits étages de brassage comprend au moins une matrice de permutation. On peut également prévoir qu'au moins un desdits étages de brassage distribue des données traitées vers au moins deux étages de codage distincts. Les deux aspects peuvent bien sûr
être réunis dans un même dispositif.
De même, au moins une desdites données source et/ou au moins une desdites données traitées peut être dupliquée au moins une fois, de façon à former
au moins deux données à traiter.
On peut encore prévoir qu'au moins une desdites données source alimente
directement un autre étage de codage que le premier étage de codage.
Ces différents aspects sont bien sûr cumulables, et choisis préférentiellement de façon à obtenir le meilleur codage, avec un décodage restant
suffisamment simple et efficace.
Selon un mode de réalisation avantageux, le dispositif de codage comprend des moyens de poinçonnage, mis en oeuvre sur au moins certaines desdites
données à traiter et/ou sur au moins certaines desdites traitées.
Avantageusement, lesdits modules de codage mettent en oeuvre un code de
redondance de longueur n-k inférieure ou égale à 12.
Comme déjà mentionné, l'invention s'applique notamment au codage de
blocs de données de taille relativement limitée.
Selon un premier mode de réalisation, particulièrement aisé à mettre en oeuvre, tous lesdits modules de codage sont identiques. Lesdits modules de
codage peuvent par exemple mettre en oeuvre un code de Reed-MUller.
Selon un second mode de réalisation, au moins deux desdits modules de
codage sont différents.
De façon avantageuse, ledit dispositif comprend des moyens de contrôle et/ou de réglage d'au moins un des éléments suivants: - type et/ou caractéristique du codage mis en oeuvre par au moins un des modules de codage de base; - brassage mis en oeuvre par au moins un desdits étages de brassage; - poinçonnage mis en oeuvre sur au moins certaines desdites données à traiter et/ou au moins certaines desdites données traitées;
- nombre d'étages de codage.
Ledit contrôle et/ou ledit réglage peuvent agir systématiquement, sur une période donnée, et/ou en fonction d'au moins une information représentative d'au moins un des aspects appartenant au groupe comprenant: - au moins une caractéristique du canal de transmission; - au moins une caractéristique du récepteur;
- au moins une caractéristique du signal source.
L'invention concerne également le procédé de codage correcteur d'erreurs mis en oeuvre par le dispositif décrit ci-dessus. Selon ce procédé,on associe à une série de données source un bloc de données codées, destiné à être transmis vers au moins un récepteur, à partir de: - au moins deux étapes de codage mettant en oeuvre chacune au moins deux codages de base, chacune desdits étapes de codage recevant une série de données à traiter, réparties entre lesdits codages de base, et délivrant une série de données traitées, correspondant auxdits codage de base; - et au moins une étape de brassage, ladite étage de brassage étant insérée entre deux étapes de codage successives, une première étape de codage et une seconde étape de codage, et répartissant les données traitées correspondant à chaque codage de base de ladite première étape de codage entre au moins deux codages de base de
ladite seconde étape.
L'invention concerne également les procédés et les dispositifs de décodage
correspondant. Avantageusement, un tel procédé de décodage est itératif.
De façon préférentielle, ledit procédé de décodage met en oeuvre au moins une des techniques appartenant au groupe comprenant: - décodage à l'aide d'une structure symétrique de celle mise en oeuvre lors du codage; décodage exhaustif, selon lequel on considère tous les mots de code possibles et on sélectionne le meilleur selon un critère de sélection prédéterminé;
- décodage de type Viterbi, mettant en oeuvre un treillis de décodage.
D'autres caractéristiques apparaitront plus clairement à la lecture de la
description suivante d'un mode de réalisation préférentiel, donné à titre de simple
exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels: - la figure 1 illustre les bornes de McEliece et de Gilbert -Varshamov; - la figure 2 illustre le principe général d'un dispositif de codage selon l'invention; - la figure 3 est un exemple particulier de dispositif de codage selon la figure 2; - la figure 4 illustre d'autres aspects pouvant être mis en oeuvre dans
un dispositif de codage selon l'invention.
La technique de l'invention permet donc la construction de codes quasi-
optimaux (désignés par l'expression "Codes cortex"), auxquels une méthode de
décodage spécifique à décision douce est avantageusement associée.
Les résultats obtenus sont de meilleure qualité que ceux des "turbocodes".
En effet, la distance minimum d des turbo-codes actuels est relativement petite. En effet, par exemple un turbo-code en bloc de Pyndiah qui est un code produit (32,26,4)x(32,26,4)=(1024,676,16), est donc un code de longueur n=1024 pour k=676 bits utiles et une distance minimale d=16. Avec ce code en bloc, on ne peut
donc corriger au plus t = [(d - 1) / 2] = 7 erreurs en décision dure.
Autre exemple, un turbo-code en bloc de Berrou de longueur 192 bits (Cf.
Jung et al. [21]) et de rendement 1/3, a une distance minimale estimée de 8 avec un entrelaceur optimisé. Un code "cortex" (192,96) de rendement 1/2 a en revanche une distance minimale proche de 30. La distribution des poids des codes "cortex" semblent aussi tendre vers la distribution binômiale qui est celle du codage
aléatoire optimal (Cf. G. Battail [24]).
Le principe général de l'invention repose sur la mise en oeuvre de
plusieurs modules de codage, organisés selon le schéma de principe de la figure 2.
Ces modules de codage sont regroupés en au moins deux étages 211 à 21n.
Chaque étage de codage 21 i comprend au moins deux modules de codage 22j, j
fonctionnant indépendamment.
Entre chaque étage de codage 21 i et 21i + 1 est inséré un étage de brassage 231 à 23n - 1. Les données sortant de chaque module de codage de l'étage 22i sont
ainsi réparties entre plusieurs modules de codage de l'étage 22i+1.
Cette répartition est effectuée de préférence de façon à répartir au mieux les
bits reçus d'un même module de codage.
Dans le mode de réalisation décrit, le code mis en oeuvre est un code en blocs systématiques. Le paquet de bits transmis comprend donc les bits utiles 24, ou bits source, et les bits de redondance 25 issus du codeur. Bien sûr, un
poinçonnage peut être mis en oeuvre.
Selon un mode de réalisation particulier de l'invention, illustré par la figure 3, les modules de codage 22 i j sont tous identiques, et mettent en oeuvre un code
de Reed-Muller (8, 4, 4). On obtient ainsi un code "cortex" (48, 24).
La matrice génératrice du code de Reed-Muller utilisé est la suivante:
1 0 0 0 0 1 1 1
0 1 0 0 1 0 1 1
CG= 0O 1 0 1 1 0
0 0 0 11 1 10
Si les quatre bits utiles entrant sont (x0, x1, x2, x3), les quatre bits de redondance sont (x4, x5, x6, x7)tels que:
X4 = XI + X2 + X3
X4 =X0 +X2 +X3
x4 = xo + xI + x3
X4 =X0 +X1 +X2
Chaque étage de codage 211, 212 et 213 comprend six modules de codage de base (8, 4, 4) 221,1 à 2236. Les bits de redondance du premier étage de codage 211 sont soumis à une permutation IIl (231). Cette permutation peut être considérée comme une "jungle de fils" qui permnnet d'obtenir une bonne capacité de correction, si elle est choisie de façon adéquate (par exemple par essais successifs
et simulation).
Le deuxième étage de codage 212 effectue un nouveau calcul de 24 nouveaux bits de redondance intermédiaires, qui sont à nouveau permutés par l'étage de brassage Il2 (232). Le processus peut mettre en oeuvre de cette façon
plusieurs étages de codage.
On peut bien sûr transmettre tous les bits calculés avec les bits utiles.
Cependant, le code obtenu a alors un rendement faible. On pourra préférer ne transmettre que les bits utiles de départ 24 et les bits de redondance 25 du dernier étage. On a constaté que ces codes ont des distances minimales très bonnes, et
des distributions de poids ayant des "queues de distribution binômiales", c'est-à-
dire un très petit nombre de voisins après cette distance minimale.
De nombreuses variantes et adaptations de ce principe peuvent être envisagées. la figure 4 illustre schématiquement et fictivement (c'est-àdire de façon simplifiée dans un but illustratif) certaines d'entre elles. Elles peuvent bien
sûr être mises en oeuvre indépendamment, ou selon toute combinaison adéquate.
Sur cette figure 4, on a représenté un premier étage de codage 41 comprenant plusieurs codeurs identiques C1 411. Ces codeurs sont alimentés par les données source 42. Ils peuvent également prendre en compte des données intermédiaires 43 "réinjectés" depuis un emplacement quelconque de la chaîne de traitement. Les données codées par ces modules de codage 411 alimentent une matrice de permutation 44, qui répartit les données entre une pluralité de codeurs d'un deuxième étage de codage 45. Contrairement au premier étage de codage 41, ce second étage de codage 45 met en oeuvre plusiurs codeurs distincts C2, C3, C4 452 à 454. Ces différents codes peuvent être de tous types adéquats. Ils seront par exemple choisis en raison de leur efficacité de codage et/ou de la facilité du
décodage correspondant.
L'étage de permutation suivant est constitué de plusieurs modules de brassage 461, 462, dans lesquels la répartition des données intermédiaires reçues de l'étage de codage 45 sont distribués de façon variable vers les différents modules de codage 471 de l'étage de codage suivant 47. Ce brassage 461, 462
peut être régulier, aléatoire ou contrôlé en fonction d'une information 481.
La chaîne de transmission peut encore comprendre un ou plusieurs codages C6 49 (assurant un codage et/ou un cryptage, par exemple), qui agit sur
l'ensemble des données qu'il reçoit des modules de codage précédent.
Un poinçonnage 410 peut être effectué en différents points de la chaîne et sur différentes données. Dans l'exemple illustré, le poinçonnage 410 est effectué sur un ensemble de données comprenant: - les données source 42; les données issues du dernier étage de codage 491;
- au moins certaines des données intermédiaires 4101.
Plus généralement, les données, qu'il s'agisse des données source 42 ou des donnnées intermédiaires 4101, peuvent être réparties de façon très variée à
l'intérieur de la chaîne de traitement.
A titre d'exemple, on a illustré les cas suivants: - une donnée intermédiaires 51 est dirigée vers deux étages de codage distincts 45 et 47 simultanément; - une donnée source 52 subit le même "découplage" entre un module de codage du premier l'étage de de codage 41 et de l'étage de codage 45; - une donnée 53 alimente simultanément deux (ou plus) modules de codage 453 et 454 d'un même étage de codage 45; - une donnée 54 issue de l'étage de permutation 44 alimente directement l'étage de codage 47 (et non l'étage le plus proche 45); - une donnée 55 est sélectivement dirigée vers un premier module de codage 452 ou un second module de codage 453; une donnée 56 reçue par un module de codage 454 correspond sélectivement à deux (ou plusieurs) données intermédiaires; - des données source 57 sont introduites dans un étage de codage 45
autre que le premier étage de codage 41 de la chaîne.
Il ne s'agit ici bien sûr que d'exemples qui peuvent être adaptés et
généralisés.
Par ailleurs, de nombreux aspects du traitement peuvent être variables ou contrôlés en fonction d'informations variées telles que, par exemple: des informations sur le canal de transmission (niveau de bruit, types de bruits,...); - informations sur le décodeur (capacité de traitement, capacité de mémorisation,...); - une information sur le type de données transmises (structure et/ou caractéristiques des blocs de données, type d'informations (images, sons, données,...), qualité de codage requis,...); - une instruction donnée par un utilisateur; Ainsi le module 48 de contrôle peut piloter: - les permutations ou brassage effectués (481); les codages mis en oeuvre (type de codes et/ou caractéristiques du code) (482);
- le poinçonnage (483).
Le choix des codes mis en oeuvre dans les modules de codage tient notamment compte de l'efficacité et de la facilité de décodage. Classiquement, on choisira un code de base tel que la valeur n - k soit petite. Le choix des permutations (ou des brassages) est de préférence effectué de façon à assurer une grande diversité entre les fonctions booléennes de chaque sortie. Plus précisément, on fait en sorte que, finalement, la fonction booléenne de chaque bit de sortie de redondance soit composée d'un ensemble de bits d'information le plus différent
possible de ceux des autres bits de sorite de redondance.
On peut par exemple chercher des matrices et des codes de base permettant
de recréer un code connu tel que par exemple le code de Golay (24, 12, 8). L'invention concerne également le procédé et le dispositif de décodage des
données produites par le procédé de codage décrit ci-dessus. ce décodage est relativement simple et peu coûteux à mettre en oeuvre. Il est avantageusement
itératif, ce qui le rend aisément implémentable et adaptable.
La plupart des techniques de décodage classiques peuvent être mises en oeuvre. Ainsi, on peut mettre en oeuvre un décodage exhaustif, selon lequel on considère tous les mots de code possibles et on sélectionne le meilleur selon un critère de sélection prédéterminé. On peut également utilisé un décodage de type Viterbi, mettant en oeuvre un treillis de décodage (par exemple selon les
algorithmes SOVA ou BJCR).
Avantageusement, on met en oeuvre un décodage dont la structure est calquée sur la structure du codeur décrite précédemment. En d'autres termes, le décodeur comprend plusieurs étages de décodage comprenant chacun plusieurs
modules de décodage, et séparés par des étages de permutations.
Cette structure s'implante aisément sous la forme d'une machine pipeline,
en VLSI.
La figure 5B illustre un module de décodage, correspondant au module de codage illustré à la figure 5A (mettant un oeuvre un codage de ReedMuller
(8,4,4).
Ce module de décodage est un décodeur à entrées pondérées et à sorties pondérées, réalisé par exemple à partir de techniques connues, telle que la méthode SOVA. Il met en oeuvre des additions et des soustractions. De plus, selon
l'invention, il met en oeuvre des multiplications de normalisation des sorties.
Chaque fil (entrée ou sortie) du module de codage de la figure 5A, correspondant à un bit du codeur, est dédoublé en deux fils dans le module de décodage de la figure 5B. Ces fils permettent de communiquer, ou de propager, les valeurs de vraisemblance de l'amont vers l'aval du codeur, ou de l'aval vers l'amont. Les calculs dans le décodeur s'effectuent suivant un séquencement particulier afin de minimiser ces derniers. On commence par introduire les valeurs reçues sur les fils d'entrée de vraisemblance des données et des bits de redondance. La valeur de vraisemblance est égale au rapport log(probabilité (bit=0)/probabilité (bit=1)), qui est, dans le cas d'un canal gaussien, proportionnelle à la valeur reçue, dans le cas d'une modulation à 2 états, (0, 1)
associant (+1, -1).
Les valeurs non définies à l'initialisation du réseau sont par défaut fixée à
une valeur prédéterminée, avantageusement zéro.
En se référant à la structure du codeur de la figure 2, qui est similaire à celle du décodeur, le décodage s'effectue de la façon suivante: - on introduit les valeurs de vraisemblance reçues à traiter dans les étages de décodage d'extrémité (premier et dernier étages); - les nouvelles valeurs de vraisemblance calculées alimentent les étages voisins, et ainsi de suite jusqu'à l'étage central (si le nombre d'étages de décodage est impair) ou les étages centraux (si le nombre d'étages de décodage est pair); - ensuite, le processus suit le trajet inverse, des étages centraux vers
les étages d'extrémité, jusqu'au premier et dernier étages.
Ces étapes correspondent à une itération du traitement. Elles sont répétées soit jusqu'à un nombre d'itérations donné, soit avec un arrêt des itérations en fonction d'un critère de minimisation de la somme des valeurs absolues ou la racine carrée des carrés des différences des vraisemblances entrantes et sortantes
pour chaque fil, pour au moins un étage.
On vérifie en effet que l'on tend au fur et à mesure des itérations vers une égalité entre les deux signaux de vraisemblance entrant et sortant d'un même bit
dans un module de décodage.
ANNEXE
[1] F.J. MacWilliams, N.J.A. Sloane, "The Theory of Error-Correcting Codes ",
North-Holland, 3rd edition, 1981.
[2] S.B. Wicker, "Error Control Systems for Digital Communication and
Storage", Prentice Hall, 1995.
[3] V. Pless et al. "The Handbook of Coding Theory ", Elsevier, 1998.
[4] C.E. Shannon, " A Mathematical Theory of Communication ", Bell System
Technical Journal, pp. 379-423 et 623-656, no 27, 1948.
[5] P. Elias," Coding for Noisy Channels ", IRE Conv. Record, Part 4, pp.
37-47, 1955.
[6] A.J. Viterbi, "Error bounds for convolutional codes and an asymtotically
optimum decoding algorithm ", IEEE, IT13, pp. 260-269, 1967.
[7] G.D. Forney Jr.," The Viterbi algorithm ", Proceedings of the IEEE, Vol.61,
pp. 268-276, Marchl969.
[8] R.E. Bellman," Dynamic programming ", Princeton University Press, 1965.
[9] R.J. McEliece, " On the BCJR Trellis for linear block codes ", IEEE, IT
Vol.42, pp. 1072-1092, July 1996.
[10] C. Berrou, A. Glavieux, P.Thitimajshima, " Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes ", Proceedings of the
ICC'93,Geneva,Switzerland,May 1993,pp.1064-1070.
[11] L.R. Bahl, J. Cocke, F. Jelinek, J. Raviv: " Optimal decoding of linear codes for minimizing symbol error rate ", IEEE, Vol. IT20, pp.284287, March 1974. [12] G. Battail, "Pondération des symboles décodés par l'algorithme de Viterbi ", Annales des télécommunications, Vol. 31, no 1-2, pp. 31-38, Janvier-Février 1987. [13] J. Hagenauer, P. Robertson, L. Papke, " Iterative turbo decoding of systematic convolutional codes with the MAP and the SOVA algorithms ", in
Proc.ITG'94, 1994.
[14] R. Pyndiah, A. Glavieux, A.Picart, S. Jacq, "Near optimum decoding of products codes ", Proc. GLOBECOM'94, San Francisco, CA, Dec. 94, pp.
339-343.
[15] C. Berrou, A. Glavieux," Near Optimum Error Correcting Coding and Decoding: turbo-Codes ", IEEE, Vol. IT44, no. 10, October 1996, pp.
1261-1271.
[16] G. Battail, " A conceptual framework for understanding turbo-codes ", International Symposium on turbo-codes, ENST-Brest, Septembre 1997, pp. -62. [17] C. Berrou, M. Jézéquel, " Frame-oriented convolutional turbo-codes ",
Electronics letters, 18th July 1996, Vol.32, no. 15, pp. 1362-1364.
[18] P. Adde, R. Pyndiah, C. Berrou," Performance of hybrid turbo codes ",
Electronics letters, 21lth November 1996, Vol.32, no. 24, pp. 2209-2210.
[19] P. Jung, M. Nabhan" Performance evaluation of turbo codes for short frame transmission systems", Electronics letters, 20th Januaryl994, Vol.30, no 2,
pp. 111-113.

Claims (17)

REVENDICATIONS
1. Dispositif de codage correcteur d'erreurs, du type associant à une série de données source un bloc de données codées, destiné à être transmis vers au moins un récepteur, caractérisé en ce qu'il comprend: - au moins deux étages de codage comprenant chacun au moins deux modules de codage de base, chacun desdits étages de codage recevant une série de données à traiter, réparties entre lesdits modules de codage de base, et délivrant une série de données traitées, issues desdits modules de codage de base; et au moins un étage de brassage, ledit étage de brassage étant inséré entre deux étages de codage successifs, un premier étage de codage et un second étage de codage, et répartissant les données traitées issues de chaque module de codage de base dudit premier étage de codage entre au moins deux modules de codage de base dudit
second étage.
2. Dispositif de codage selon la revendication 1, caractérisé en ce que ledit bloc de données codées à transmettre comprend au moins certaines desdites données source et au moins certaines des données traitées issues du dernier étage
de codage.
3. Dispositif de codage selon la revendication 2, caractérisé en ce que ledit bloc de données codées à transmettre comprend l'ensemble desdites données source.
4. Dispositif de codage selon l'une quelconque des revendications 1 à 3,
caractérisé en ce ledit bloc de données codées comprend des données traitées
issues d'au moins deux étages de codage.
5. Dispositif de codage selon l'une quelconque des revendications 1 à 4,
caractérisé en ce qu'au moins un desdits étages de brassage comprend au moins
une matrice de permutation.
6. Dispositif de codage selon l'une quelconque des revendications 1 à 5,
caractérisé en ce qu'au moins un desdits étages de brassage distribue des données
traitées vers au moins deux étages de codage distincts.
7. Dispositif de codage selon l'une quelconque des revendications 1 à 6,
caractérisé en ce qu'au moins une desdites données source et/ou au moins une desdites données traitées est dupliquée au moins une fois, de façon à former au
moins deux données à traiter.
8. Dispositif de codage selon l'une quelconque des revendications 1 à 7,
caractérisé en ce qu'au moins une desdites données source alimente directement un
autre étage de codage que le premier étage codage.
9. Dispositif de codage selon l'une quelconque des revendications 1 à 8,
caractérisé en ce qu'il comprend des moyens de poinçonnage, mis en oeuvre sur au moins certaines desdites données à traiter et/ou sur au moins certaines desdites traitées.
10. Dispositif de codage selon l'une quelconque des revendications 1 à 9,
caractérisé en ce que lesdits modules de codage mettent en oeuvre un code de
redondance de longueur n-k inférieure ou égale à 12.
1 1. Dispositif de codage selon l'une quelconque des revendications 1 à 10,
caractérisé en ce que tous lesdits modules de codage sont identiques.
1 2. Dispositif de codage selon la revendication 11, caractérisé en ce que lesdits
modules de codage mettent en oeuvre un code de Reed-Muller.
13. Dispositif de codage selon l'une quelconque des revendications 1 à 10,
caractérisé en ce qu'au moins deux desdits modules de codage sont différents.
14. Dispositif de codage selon l'une quelconque des revendications 1 à 13,
caractérisé en ce qu'il comprend des moyens de contrôle et/ou de réglage d'au moins un des éléments suivants: - type et/ou caractéristique du codage mis en oeuvre par au moins un des modules de codage de base; brassage mis en oeuvre par au moins un desdits étages de brassage; poinçonnage mis en oeuvre sur au moins certaines desdites données à traiter et/ou au moins certaines desdites données traitées;
- nombre d'étages de codage.
15. Dispositif de codage selon la revendication 14, caractérisé en ce que ledit contrôle et/ou ledit réglage agissant systématiquement, sur une période donnée, et/ou en fonction d'au moins une information représentative d'au moins un des aspects appartenant au groupe comprenant: - au moins une caractéristique du canal de transmission; - au moins une caractéristique du récepteur;
- au moins une caractéristique du signal source.
16. Procédé de codage correcteur d'erreurs, du type associant à une série de données source un bloc de données codées, destiné à être transmis vers au moins un récepteur, caractérisé en ce qu'il comprend: - au moins deux étapes de codage mettant en oeuvre chacune au moins deux codages de base, chacune desdits étapes de codage recevant une série de données à traiter, réparties entre lesdits codages de base, et délivrant une série de données traitées, correspondant auxdits codage de base; - et au moins une étape de brassage, ladite étage de brassage étant insérée entre deux étapes de codage successives, une première étape de codage et une seconde étape de codage, et répartissant les données traitées correspondant à chaque codage de base de ladite première étape de codage entre au moins deux codages de base de
ladite seconde étape.
17. Procédé de décodage d'un bloc de données codées selon le procédé de
codage selon l'une quelconque des revendications 1 à 14.
18. Procédé de décodage selon la revendication 17, caractérisé en ce qu'il est itératif.
19. Procédé de décodage selon l'une quelconque des revendications 17 et 18,
caractérisé en ce qu'il met en oeuvre au moins une des techniques appartenant au groupe comprenant: - décodage à l'aide d'une structure symétrique de celle mise en oeuvre lors du codage; - décodage exhaustif, selon lequel on considère tous les mots de code possibles et on sélectionne le meilleur selon un critère de sélection prédéterminé;
- décodage de type Viterbi, mettant en oeuvre un treillis de décodage.
FR9810089A 1998-07-31 1998-07-31 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant Pending FR2782423A1 (fr)

Priority Applications (8)

Application Number Priority Date Filing Date Title
FR9810089A FR2782423A1 (fr) 1998-07-31 1998-07-31 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant
FR9810316A FR2782424A1 (fr) 1998-07-31 1998-08-07 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant
FR9816788A FR2782425B1 (fr) 1998-07-31 1998-12-31 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant
AU51684/99A AU5168499A (en) 1998-07-31 1999-08-02 Method and device for error correction coding and corresponding decoding method and device
DE69914767T DE69914767T2 (de) 1998-07-31 1999-08-02 Verfahren und vorrichtung zur fehlerkorrektur- codierung und decodierung
PCT/FR1999/001912 WO2000008766A1 (fr) 1998-07-31 1999-08-02 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondants
US09/744,849 US6745362B1 (en) 1998-07-31 1999-08-02 Method and device for error correction coding and corresponding decoding method and device
EP99936670A EP1101288B1 (fr) 1998-07-31 1999-08-02 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondants

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9810089A FR2782423A1 (fr) 1998-07-31 1998-07-31 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant

Publications (1)

Publication Number Publication Date
FR2782423A1 true FR2782423A1 (fr) 2000-02-18

Family

ID=9529442

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9810089A Pending FR2782423A1 (fr) 1998-07-31 1998-07-31 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant

Country Status (1)

Country Link
FR (1) FR2782423A1 (fr)

Similar Documents

Publication Publication Date Title
KR100522263B1 (ko) 병렬연결테일-바이팅콘벌루션코드및이코드용디코더
EP0891656B1 (fr) Procede et dispositif de codage convolutif de blocs de donnees, et procede et dispositif de decodage correspondants
EP1101288B1 (fr) Procede et dispositif de codage correcteur d&#39;erreurs et procede et dispositif de decodage correspondants
FR2815199A1 (fr) Procedes de turbocodage circulaire de grande distance minimale, et systemes pour leur mise en oeuvre
US20020174401A1 (en) Area efficient parallel turbo decoding
EP1362447A1 (fr) Procede et systeme de codage-decodage iteratif de flux de donnees numeriques codees par combinaisons spatio-temporelles, en emission et reception multiple
EP1230736B1 (fr) Procede de decodage de donnees codees a l&#39;aide d&#39;un code entropique, dispositif de decodage et systeme de transmission correspondants
JP3674851B2 (ja) スケーリングフィードバックターボ復号器
EP1128589B1 (fr) Critère d&#39;interruption pour un décodeur turbo
FR2807895A1 (fr) Procedes et dispositifs de codage et de decodage et systemes les mettant en oeuvre
FR2912574A1 (fr) Procede de decodage a passage de messages et a convergence forcee.
FR2883121A1 (fr) Procede et dispositif de decodage de codes a roulettes
EP3311495B1 (fr) Conception de l&#39;entrelaceur pour des codes turbo en fonction du motif de poinçonnage
FR2838581A1 (fr) Procede de codage et/ou de decodage de codes correcteurs d&#39;erreurs, dispositifs et signal correspondants
FR2805418A1 (fr) Procede de transmission numerique de type a codage correcteur d&#39;erreurs
FR2806177A1 (fr) Procede de transmission numerique de type a codage correcteur d&#39;erreurs
FR2782423A1 (fr) Procede et dispositif de codage correcteur d&#39;erreurs et procede et dispositif de decodage correspondant
FR2782424A1 (fr) Procede et dispositif de codage correcteur d&#39;erreurs et procede et dispositif de decodage correspondant
FR2972878A1 (fr) Procede d&#39;encodage correcteur d&#39;erreur, procede de decodage et dispositifs associes.
EP1094612B1 (fr) Dispositif de décodage turbo SOVA avec complexité de normalisation réduite
Banerjee et al. Evaluation of system performance by adding a fourth dimension to turbo code
WO2018172694A1 (fr) Construction de turbocodes à rendements compatibles
EP1475895A1 (fr) Dispositif et procédé d&#39;addition-comparaison-sélection-ajustement dans un décodeur
FR2972877A1 (fr) Procede d&#39;encodage correcteur d&#39;erreur, procede de decodage et dispositifs associes.
FR2804806A1 (fr) Procede et dispositif d&#39;entrelacement, procedes et dispositifs de codage et de decodage et systemes les mettant en oeuvre