FR3016760A1 - Procede et dispositif de decodage de symboles codes a l'aide d'un code correcteur d'erreurs lineaires, procede et dispositif de codage, et programme d'ordinateur correspondants - Google Patents

Procede et dispositif de decodage de symboles codes a l'aide d'un code correcteur d'erreurs lineaires, procede et dispositif de codage, et programme d'ordinateur correspondants Download PDF

Info

Publication number
FR3016760A1
FR3016760A1 FR1450400A FR1450400A FR3016760A1 FR 3016760 A1 FR3016760 A1 FR 3016760A1 FR 1450400 A FR1450400 A FR 1450400A FR 1450400 A FR1450400 A FR 1450400A FR 3016760 A1 FR3016760 A1 FR 3016760A1
Authority
FR
France
Prior art keywords
states
lattice
probabilities
symbols
elementary
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.)
Withdrawn
Application number
FR1450400A
Other languages
English (en)
Inventor
Jean-Claude Carlach
Senad Mohamed-Mahmoud
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
Orange SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Orange SA filed Critical Orange SA
Priority to FR1450400A priority Critical patent/FR3016760A1/fr
Priority to PCT/FR2015/050130 priority patent/WO2015107315A1/fr
Publication of FR3016760A1 publication Critical patent/FR3016760A1/fr
Withdrawn 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • H03M13/3916Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding for block codes using a trellis or lattice

Landscapes

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

Abstract

L'invention concerne un procédé de décodage d'une séquence d'échantillons reçus y par un décodeur correspondant, après transmission, à une séquence c codée de symboles. Selon l'invention, le procédé comprend une phase de calcul à plusieurs étages, et par étage une étape de calcul mettant en œuvre un opérateur papillon : - pour déterminer des produits Ti (X) Tj de treillis élémentaires distincts, Ti et Tj avec i ≠ j, - pour calculer sur un treillis produit Ti (X) Tj des probabilités a posteriori des états du produit Ti (X) Tj connaissant les probabilités des états {Pr(Sti)} des treillis élémentaires Ti et Tj et - pour calculer des probabilités a posteriori des états de chacun des deux treillis Ti et Tj connaissant les probabilités a posteriori des états du treillis produit Ti (X) Tj, - une phase de détermination de probabilités a posteriori associées aux symboles décodés à partir des probabilités a posteriori des états des k treillis élémentaires du dernier étage.

Description

Procédé et dispositif de décodage de symboles codés à l'aide d'un code correcteur d'erreurs linéaire, procédé et dispositif de codage, et programme d'ordinateur correspondants. Domaine de l'invention Le domaine de l'invention est celui du codage et du décodage de symboles, mettant en oeuvre un code correcteur d'erreurs. L'invention se rapporte plus particulièrement aux techniques de codage de symboles source, délivrant des paquets de symboles codés ou un flux de symboles codés comprenant les symboles source et des symboles de redondance, destiné(s) à être transmis sur un canal de transmission (par exemple aérien ou filaire de type hertzien, optique ou électrique), ou stocké(s) dans un support matériel. L'invention se rapporte également aux techniques de décodage correspondantes, permettant notamment de corriger les erreurs de transmission inhérentes au canal de transmission. L'invention trouve notamment des applications dans les domaines suivants : - la transmission d'information par télécommunications filaires électriques, comme dans les normes ADSL, ou optiques, sur fibres optiques ou en espace libre ; la transmission d'information dans les communications radios spatiales et terrestres sans fil (« wireless » en anglais), comme dans les systèmes de télévision numérique TNT, de radio numérique DAB, de téléphonie GSM ou UMTS, de réseau radio WiFi, et aussi dans les futurs systèmes de télécommunications, comme les futures normes pour des applications de télévision, de diffusion radio, de voix, de vidéo et de données (DVB, LTE, 4G, 5G,etc), l'« Internet du futur », ou entre véhicules, objets ou machines communicants ... ; la compression et la décompression de source d'informations ; la génération et la détection de séquences dites d'embrouillage (« scrambling » en anglais) dans les systèmes CDMA ; le stockage d'informations dans des mémoires de masse magnétiques, optiques, mécaniques ou électriques pour constituer des disques durs, ou des mémoires vives d'ordinateurs, ou des clés mémoire à interface de type USB... ; la correction d'informations lors des calculs dans un circuit intégré d'un microprocesseur ou dans un ordinateur ; la reconnaissance de formes : images, sons, etc la robotique commandée par une intelligence artificielle à base de réseaux de neurone. Art antérieur De nombreuses techniques de codage permettent la correction d'erreurs de transmission au décodage en générant des symboles de redondance à partir de symboles source. Ainsi, un code correcteur d'erreur est classiquement défini par : une longueur n, correspondant aux symboles en sortie du codeur (mot de code de longueur n formé de k symboles source et de (n - k) symboles de redondance), un nombre de bits ou de symboles d'information utiles k, correspondant aux symboles en entrée du codeur, encore appelées symboles source, et une distance minimale dmin.
La distance minimale d'un code dm,' correspond au minimum de distance entre deux mots de code. Elle permet de déterminer le nombre maximum d'erreurs que le code peut corriger dans un mot de code. Ainsi, plus la distance minimale d',,' est grande, meilleur est le code correcteur d'erreurs, puisqu'il permet de détecter (drain -1) symboles erronés et d'en corriger [(dmin -1)/ 2] (où l'opérateur L.] désigne la partie entière). La première méthode de décodage rigoureusement optimale connue consiste à trouver de façon exhaustive parmi tous les mots c, appartenant au code C, celui qui est le plus proche du mot reçu. Cette méthode donne en sortie des valeurs discrètes de symboles après décision, 0 ou 1 si l' alphabet est binaire, elle est dite à décision "dure" (bard). Cette méthode de décodage exhaustive est de complexité exponentielle en 2k , où k est la dimension du code, et donc très coûteuse et difficile à réaliser. Et donc elle ne permet pas de décoder actuellement en temps réel les codes de dimensions supérieures à environ k>24. Parmi les méthodes de décodage des codes correcteurs linéaires utilisant des informations douces, il est connu l'algorithme de Viterbi [2]. Cet algorithme est utilisé pour le décodage en temps réel des codes convolutifs et plus généralement pour le décodage de tous les codes décrits par un treillis. L' algorithme de Viterbi consiste à chercher le plus court chemin dans un arbre élaboré à partir du treillis du codeur. Ce chemin correspond donc à la séquence la plus probable c'est-à-dire qui est à la distance minimale de la séquence reçue. Cette séquence reçue qui correspond au mot reçu à décoder, est par exemple une séquence de n données binaires (décision dure). La séquence reçue peut être différente de la séquence codée issue du codeur compte tenu d'erreurs introduites lors de la transmission entre le codeur utilisé à l'émission et le décodeur utilisé à la réception. L' arbre utilisé au décodage dans le cas d'un codeur convolutif a une dimension « verticale » égale au nombre d'états possibles du codeur, soit 2m, m étant la longueur de contrainte du code, c'est-à-dire le nombre d'éléments mémoires utilisés lors du codage, et une dimension « horizontale » appelée profondeur. A chaque nouvelle entrée d'un groupe de données binaires de la séquence reçue, l'algorithme construit selon une phase dite avant (« forward ») une nouvelle section de l' arbre à partir de chaque noeud d' arrivée de la section précédente pris comme noeud de départ et jusqu' aux noeuds d' arrivée de la nouvelle section. Pour chaque noeud courant pris parmi les noeuds de départ de la nouvelle section de l'arbre, l'algorithme examine toutes les branches possibles du treillis et pour chaque branche il détermine une métrique de transition qui est la distance entre l'étiquette de la branche et le groupe de données binaires reçu par le décodeur. A chaque noeud d'arrivée, s'il y a plusieurs branches qui y arrivent, l'algorithme ne garde que la branche qui donne la distance minimum ; l'algorithme élimine systématiquement un chemin parmi deux chemins possibles atteignant chaque noeud d'arrivée. L'algorithme attribue au noeud d'arrivée, à l'extrémité du chemin constitué d'une succession de branches, une métrique cumulée égale à la somme de la métrique cumulée précédente et de la métrique de transition de la branche retenue. Quand la séquence de n données binaires reçue a été parcourue entièrement, l'algorithme ne retient que le noeud d'arrivée auquel est attribuée la métrique cumulée la plus faible. En remontant l'arbre à partir de ce noeud au cours d'une phase de remontée dite «des survivants», l'algorithme détermine le meilleur chemin en effectuant une lecture à rebours des décisions prises. Le principe de base de l'algorithme de Viterbi est en effet de ne considérer en chaque noeud de l'arbre que le chemin le plus probable de façon à permettre de remonter aisément le treillis et donc de déterminer a posteriori une estimation de la valeur reçue plusieurs instants de réception auparavant. Cet algorithme de Viterbi utilise en entrée des informations dures (i.e des symboles) ou des informations douces (i.e. les valeurs échantillonnées du signal reçu) mais ne délivre en sortie que des informations dures (i.e des symboles) : on dit que c'est un algorithme de décodage "Soft-InHard-Out". Dans le cas d'un codeur convolutif binaire non-récursif, le treillis est formé de noeuds reliés par des branches. Les noeuds représentent les différents états possibles du codeur ; il y a 2m états si le vecteur d'état, c'est-à-dire la longueur de la mémoire du codeur, est de dimension m. Les branches représentent les différentes transitions possibles d'un noeud à un autre (c'est-à-dire d'un état du codeur à l'état suivant du codeur) lors de l'arrivée d'un bit d'entrée. De chaque noeud, il part deux branches associées respectivement à l'arrivée d'un « 0 » ou d'un « 1 » en entrée du codeur. L'état du codeur à l'instant t est représenté par le vecteur d'état (SI), ..., st(m-i)). A chaque arrivée d'un élément binaire xt en entrée du codeur, le codeur génère en sortie un mot de code (d, ct, ..., cm-1)), l'étiquette affectée à la branche se compose de l'élément binaire d'entrée xt et du mot de code (ci, , ct(m-1)). Juste après le codeur passe dans l'état suivant représenté par le (m-i) vecteur d'état (s° sl ). La figure 1 représente un exemple d'un codeur convolutif t+1, t+1,---, st+i avec m égal à deux. La figure 2 représente une section de treillis du codeur convolutif de la figure 1. Le treillis d'un codeur convolutif ayant 2m états, selon l'exemple le treillis a quatre états compte tenu que m égal deux, et la machine d'état étant invariante dans le temps toutes les sections sont identiques. Les états sont indiqués pour l'état initial et l'état final, les valeurs des entrées xt et des sorties codées (ci, ch sont notées en étiquettes sur les branches transitant entre deux états. Ainsi, chaque mot de code est représenté par un chemin différent dans le treillis. La composition du mot de code est la concaténation des étiquettes des branches qui constituent le chemin trouvé, c'est-à-dire le plus court chemin La figure 3 représente un treillis formé en aboutant trois sections identiques à la section représentée à la figure 2. La succession des traits en gras représente un exemple de chemin (100, 010, 001), c'est-à-dire que pour la séquence d'entrée (100) le mot codé obtenu est (001001) en partant de l'état initial (10) et en arrivant à l'état final (00). Une variante de cet algorithme de Viterbi a été publiée en 1974, elle est dite "BCJR" [3] (acronyme du nom de ses inventeurs: Bahl, Cocke, Jelinek et Raviv). Cette variante utilise en entrée des informations douces (probabilités a priori) mais délivre en sortie des informations douces ou probabilités a posteriori pour chacun des bits : on dit que c'est un algorithme de décodage "Soft-In-Soft-Out" ou "SISO". Dans ce cas, il y a deux phases de parcours du treillis : une phase « forward » (respectivement une phase « backward ») qui accumulent les probabilités des états dans le sens des indices croissants t=0,1,..., n-1 des sections (respectivement dans le sens des indices décroissants t=n-1,n-2'..., 1,0) et une phase finale qui fusionne les probabilités d'état des phases forward et backward avec la probabilité a priori de chaque bit pour calculer la probabilité a posteriori de chaque bit. Les algorithmes de Viterbi et BCJR présentent une complexité trop grande due à la trop grande complexité des treillis et notamment de leurs trop grands nombres d'états et ce, même pour des codes ayant de modestes capacités de correction d'erreurs. Par exemple, un code (n=96,k=48,dmin=16) aurait un treillis tail-biting minimal de 212=4096 états. Dans l'algorithme BCJR les probabilités d'état « forward » sont notées at(m) et calculées telles que ci-dessous, et les probabilités a priori de branche notées yt (m, m') pour une transition de l'état m vers l'état m' dans la section d'indice t: at(m) = Em,at_i(m')yt(m,m'). De même les probabilités d'état « backward » sont notées igt (m) et calculées telles que : igt (m) = EmPt +1 (Tn')Yt (m, m). Finalement, les probabilités a posteriori des bits sont calculées telles que : Prapp(bitt = y) it = v)a t (M)Yt(m,m)igt(m) Parmi les techniques de décodage connues à décision douce permettant la correction d'erreurs de transmission, on distingue celle de Claude Berrou et Alain Glavieux de 1991 qui est une méthode de décodage itératif à décision douce des "Turbo codes" [4] dite SOVA et celle associée au décodage des codes LDPC. La base du décodage à décision douce des Turbo codes et des codes LDPC est l'algorithme à propagation de probabilités ou "BP" (Belief Propagation) [1] inventé par Robert Gallager en 1961. Cet algorithme BP propage des probabilités le long des branches d'un graphe du code et les agrège sur les noeuds de ce même graphe. Ce graphe associé au code est appelé graphe de Tanner [5] du code, il représente toutes les contraintes algébriques que doivent satisfaire les symboles d'un mot de code. Les turbo-codes et les codes LDPC (en anglais « Low-Density Parity Check ») présentent de très bonnes performances en termes de correction d'erreurs pour des codes de grande longueur n, avec n de l'ordre de quelques milliers de bits au moins (n > 1000). En revanche, les turbo-codes et les codes LDPC présentent des performances plus faibles pour des codes de plus petite longueur n (n < 1000) dits codes courts. Ceci est en partie dû au fait que l' algorithme de propagation de probabilités BP utilisé au décodage ou ses variantes, devient sous-optimal au fur et à mesure que la longueur minimale des cycles diminue On rappelle qu'un cycle correspond à un chemin fermé dans un graphe de Tanner représentant les contraintes que doivent remplir les symboles d'un mot pour être un mot du code. La notion de graphe de Tanner est bien connue, et notamment décrite dans l'article [7]. En effet, cet algorithme BP est optimal uniquement sur un graphe ayant la topologie d'un arbre ou d'une forêt d'arbres, la présence de cycles courts dégrade fortement les performances de l' algorithme BP de décodage itératif à décision douce. Un tel algorithme de propagation de probabilités n'est donc pas efficace pour des codes ayant des matrices génératrices très denses (i.e. ayant beaucoup de bits à 1) et donc pour des codes ayant d'excellentes distances de Hamming minimum relatives tS = dmin / n .
De plus, pour un usage industriel, l'optimisation des codes correcteurs d'erreurs comprend la minimisation des complexités de codage et de décodage en termes de coûts de matériel et d'énergie consommée Or ces problèmes d'optimisation du décodage des codes correcteurs d'erreurs sont encore plus difficiles à résoudre quand les longueurs des codes sont petites à moyennes, c'est-à-dire de l'ordre de n < 1000.
Il existe donc un besoin pour une nouvelle technique de décodage des bons codes correcteurs d'erreurs notamment, c'est-à-dire des codes correcteurs d'erreurs présentant une distance minimale d',,' la plus grande possible, et présentant notamment des cycles très courts. Exposé de l'invention L'invention propose un procédé de décodage à décision douce de symboles codés, comprenant des symboles source et des symboles de redondance. Ces symboles de redondance sont obtenus en appliquant, au codage, un code correcteur d'erreurs aux symboles source, mettant en oeuvre une matrice génératrice G de taille (n, k) ou une matrice de contrôle de parité H. Selon l'invention, le procédé comprend : une phase de calcul à plusieurs étages, utilisant des treillis élémentaires T, déterminés à partir des k lignes de la matrice, chaque treillis T, étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états comprenant par étage une étape de calcul mettant en oeuvre un opérateur papillon : pour déterminer des produits de treillis élémentaires distincts, pour calculer sur un treillis produit des probabilités a posteriori des états du produit de treillis connaissant les probabilités des états des treillis élémentaires du produit de treillis et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis connaissant les probabilités a posteriori des états du treillis produit, une phase de détermination de probabilités a posteriori associées aux symboles décodés à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage. L'invention propose ainsi une nouvelle technique de décodage de symboles codés à l' aide d'un code correcteur d'erreurs fournissant des décisions douces a posteriori par bit tout en ayant une complexité qui augmente de façon polynomiale ou quadratique car fonction de k2 et qui, par conséquent n'explose pas de façon exponentielle, c'est-à-dire en 2k, avec la dimension k du code contrairement aux méthodes connues. En effet, le procédé selon l'invention n'effectue pas le produit de k treillis élémentaires entre eux pour obtenir un treillis produit global à 2k états comme décrit par exemple par [6].
En fonction du mode de réalisation, chaque treillis élémentaire correspond à une ligne de la matrice ou résulte du produit d' au moins deux lignes avec pour contrainte que la phase de calcul a au moins deux étages donc k > 8 si un treillis élémentaire est le produit de deux lignes. Dans un alphabet binaire, un treillis élémentaire a donc 2m états avec m le nombre de lignes participant au produit pour obtenir le treillis élémentaire.
Selon l'invention, le procédé effectue pour un étage donné des produits portant uniquement sur au moins deux treillis élémentaires distincts. L'opérateur papillon est un opérateur de calcul qui par un calcul de probabilité a posteriori des états sur le produit d'au moins deux treillis assure une interaction entre ces treillis élémentaires distincts. En outre, de manière particulièrement notable le procédé n'utilise pas en interne des probabilités extrinsèques sur les bits des mots de code mais détermine des probabilités a posteriori d'états. Cette caractéristique fondamentale permet d'obtenir des estimations optimales de probabilités de bits uniquement à la fin de l' algorithme et permet ainsi de s' affranchir du problème des cycles courts dans un graphe de Tanner du code mis en oeuvre dans les méthodes connues de décodage de type « Belief-Propagation » telles qu'utilisées pour les Turbo codes et les codes LDPC et permet donc de décoder en temps réel des codes de petites longueurs (n<1000). La propagation de probabilité d'états est fondamentalement différente de la propagation de probabilité de bits existant dans un algorithme classique de type « Belief Propagation », et permet un décodage facilité des codes quelle que soit leur longueur. En outre, l'invention permet de diminuer le nombre d'itérations mises en oeuvre au décodage en particulier comparativement à un algorithme de type propagation de probabilités (« Belief Propagation »). Du fait de cette structure en treillis élémentaires qui permet d'effectuer une estimation des probabilités a posteriori d'états de ces treillis élémentaires, l'estimation récursive des probabilités d'états de ces treillis élémentaires est insensible aux cycles dans le réseau d'opérateur-papillon. Selon un mode de réalisation, l'étape de calcul met en oeuvre au moins une itération de calcul des probabilités a posteriori des états du treillis produit connaissant les probabilités des états des treillis élémentaires du produit et de calcul des probabilités a posteriori des états de chacun des treillis du produit connaissant les probabilités a posteriori des états du treillis produit. Selon ce mode de réalisation, l'étape de calcul de probabilités a posteriori se déroule de manière itérative. Ainsi, le procédé peut effectuer un premier calcul des probabilités a posteriori et peut itérer une ou plusieurs fois ce calcul. Selon un mode de réalisation simple, les probabilités des échantillons reçus y prises comme probabilités a priori ne sont prises en compte comme valeurs d'initialisation que lors des calculs du l' étage de la première itération. Selon un autre mode de réalisation, les probabilités des échantillons reçus y prises comme probabilités a priori sont injectées en totalité ou partiellement dans les autres étages. Les résultats de simulation mettent en avant un gain d'itération pour certaines conditions de mise en oeuvre. Plus particulièrement, en prenant en compte un canal à effacements qui modélise typiquement les pertes de paquet pour des applications Internet et en considérant un code avec une distance minimale dmin, le nombre maximum théorique d'effacements est égal à (dmin-1). Cette capacité de correction maximale est obtenue avec deux itérations des calculs de probabilité a posteriori. Selon un mode de réalisation, le procédé de décodage comprend en outre une phase d'initialisation au cours de laquelle pour le l' étage les probabilités des états des treillis élémentaires sont initialisées avec les probabilités a priori des symboles reçus et pour les étages suivants les probabilités d'états des treillis élémentaires sont initialisées à 1/2. Ces valeurs d'initialisation permettent d'obtenir de bonnes estimées en n'utilisant qu'une seule fois les valeurs y reçues. L'algorithme effectuant ensuite de façon récursive ses calculs sur les probabilités d'états des k treillis, il effectue de façon virtuelle une propagation et un « moyennage » de ces probabilités d'états sur le treillis produit global de tous les treillis élémentaires. Selon un mode de réalisation, le calcul des probabilités a posteriori des états du treillis produit comprend : une phase de propagation avant, consistant à propager des probabilités d'état le long des branches du treillis produit et une phase de propagation arrière, consistant à propager des probabilités d'état le long des branches du treillis produit. En d' autres termes, le calcul des probabilités a posteriori des états du produit de treillis élémentaires comprend une première phase de propagation avant des probabilités d'état dans tous les arbres élémentaires, et une deuxième phase de propagation retour des probabilités d'état dans tous les arbres élémentaires, chaque phase pouvant se dérouler en parallèle, le procédé combine en final les probabilités d'état avant et arrière pour une même section du treillis produit et pour un même état. Selon un mode de réalisation, le calcul des probabilités a posteriori des états sur le produit de treillis est effectué selon un algorithme de type BCJR ou de type Viterbi-SOVA. Selon un mode de réalisation, le calcul des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis est effectué par marginalisation à partir des probabilités a posteriori des états du treillis produit. Selon un mode de réalisation, un treillis élémentaire correspond à au moins une ligne de la matrice. Selon un mode de réalisation, les produits de treillis interviennent sur des ensembles d' au moins deux treillis élémentaires. Le nombre d'étages et les ensembles d'au moins deux treillis élémentaires intervenant dans les produits de treillis sont déterminés en appliquant les règles ci-dessous : - par étage, l'ensemble des indices des treillis des ensembles d'au moins deux treillis élémentaires forme une permutation de l'ensemble {0,1, - - -, k -1} , - tout ensemble d'au moins deux treillis élémentaires n'apparait qu'une seule fois dans l'ensemble des étages de calcul, - il existe au moins un chemin entre tout opérateur papillon du lei étage et tout opérateur papillon du dernier étage. L' existence du chemin assure que tout treillis élémentaire influence tout autre treillis élémentaire. L' ensemble des règles précédentes permet de faire interférer un nombre de fois minimum les treillis élémentaires deux par deux (directement ou indirectement) mais suffisant pour obtenir une bonne estimation finale. Selon un mode de réalisation, les produits de treillis interviennent sur des couples de treillis élémentaires et les couples de treillis intervenant dans les produits de treillis sont déterminés pour le lei étage : en effectuant une partition par couples à partir d'une permutation identité d'ordre k qui permet d'obtenir une matrice de k/2 lignes et deux colonnes, - en transposant la matrice obtenue pour obtenir une matrice à deux lignes et k/2 colonnes et mettant à plat cette matrice pour obtenir une liste de couples, et pour un étage suivant : - en répétant les opérations précédentes en partant de la liste des couples de l'étage précédent pour obtenir des permutations successives. Selon ce dernier mode de réalisation, si k n'est pas une puissance de deux, la dernière permutation est calculée en considérant une permutation affine : i-> 5*i+1 (mod k).
Selon un mode de réalisation l'alphabet est binaire. Selon un mode de réalisation le nombre d'étages est l'arrondi par valeur supérieure de Log(2,k). Selon un mode de réalisation la cellule de base cello associée à un bit de la matrice égal à zéro est la suivante : et la cellule de base celle associée à un bit de la matrice égal à un est la suivante : Selon ce dernier mode de réalisation, le produit de treillis élémentaires est défini à partir des produit des cellules de base : cello 0 cello, ce1100 celle , ce11,0 cello et celle 0 celle respectivement égaux à : et Un procédé de décodage selon l'invention peut être utilisé pour décoder en particulier un code de Hamming (8,4,4). Le nombre d'étages est de deux et l'ensemble des indices des treillis des couples de treillis forme les permutations suivantes : 0 0 1 2 2 1 3 3 15 Un procédé de décodage selon l'invention peut être utilisé pour décoder en particulier un code de Golay (24,12,8). Le nombre d'étages est de quatre et l'ensemble des indices des treillis des couples de treillis forme les permutations suivantes :10 10 [21 [à [61] [6] [81] [141] [180] [29] g] [26] [07] [,;] [131 [150] [:1] [171] [83]] Un procédé de décodage selon l'invention peut être utilisé pour décoder en particulier un code QR (48,24,12). Le nombre d'étages est de cinq et l'ensemble des indices des treillis des couples de treillis forme les permutations suivantes : l'il [23] [5] [67] [89] L[1101] [01] [20] [] [1 [1 [ro] [124] [91 [186] [1101] [2220] [1] [] [11 [11 [191] [119.] [21] [19] [223] [40] [80] [61] [182] [116] [116] [] [197] [221 [13] [120] [172] [2171] [131 [12-72] [26] [1191] [83] [1140] [12] [2,3] [1] [2,0] [1%] [31] [109] [164] [lu [272] [20]- [3] L'invention a en outre pour objet un décodeur d'une séquence d'échantillons reçus y correspondant, après transmission, à une séquence c codée de symboles ci, j = 0,1, - - (n -1) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires de paramètres (n, k) à k symboles source mettant en oeuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné. Le décodeur comprend : un moyen de calcul adapté pour effectuer un calcul à plusieurs étages, utilisant des treillis élémentaires T, déterminés à partir des k lignes de la matrice, chaque treillis T, étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l' alphabet et étant décrit par l'ensemble des probabilités de ses états comprenant par étage une étape de calcul mettant en oeuvre un opérateur papillon : pour déterminer des produits de treillis élémentaires distincts, pour calculer sur un treillis produit des probabilités a posteriori des états du produit de treillis connaissant les probabilités des états des treillis élémentaires et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis connaissant les probabilités a posteriori des états du treillis produit, un moyen de calcul adapté pour déterminer des probabilités a posteriori associées aux symboles décodés à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage.
Un tel dispositif de décodage est notamment adapté à mettre en oeuvre le procédé de décodage décrit précédemment. Un tel décodeur peut bien sûr comporter les différentes caractéristiques relatives au procédé de décodage selon l'invention, qui peuvent être combinées ou prises isolément. Ainsi, les caractéristiques et avantages de ce décodeur sont les mêmes que ceux du procédé de décodage, et ne sont donc pas détaillés plus amplement. On note qu'un tel décodeur peut être implémenté sous la forme d'un circuit intégré numérique ou analogique, ou dans un composant électronique de type microprocesseur. Ainsi, l'algorithme de décodage selon l'invention peut être mis en oeuvre de diverses manières, notamment sous forme câblée ou sous forme logicielle.
En particulier, il est possible d'utiliser un décodeur tel que décrit ci-dessus soit pour décoder des symboles codés, soit pour coder des symboles source. Dans ce dernier cas, les probabilités a priori des symboles reçus sont initialisées avec les valeurs des symboles à coder dans le cas de symboles binaires et les symboles de redondance sont forcés avec une probabilité de 1/2 afin de pouvoir utiliser le décodeur comme un codeur. Dans le cas de symboles appartenant à un alphabet non binaire, les symboles non-binaires sont considérés comme des vecteurs. Par exemple Z4=10,1,2,31 est noté 110,01,10,11,11,11,11,011 et la probabilité d'un symbole non-binaire est alors un vecteur de quatre probabilités lp00,p01,p11,p101 dont la somme est un. Si un symbole est inconnu alors son vecteur de probabilités est {1/4 ,1/4,1/4,1/4}. L'invention a donc en outre pour objet un procédé de codage de symboles source, délivrant des symboles codés comprenant les symboles source et des symboles de redondance. Selon l'invention, un tel procédé de codage de k symboles source délivre une séquence c codée de symboles ci, j = 0,1, - - - , (n - 1) , obtenue en appliquant un code correcteur d'erreurs linéaires de paramètres (n, k) mettant en oeuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné. Le procédé comprend : une phase de calcul à plusieurs étages, utilisant des treillis élémentaires T, déterminés à partir des k lignes de la matrice, chaque treillis T, étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états, comprenant par étage une étape de calcul mettant en oeuvre un opérateur papillon : pour déterminer des produits de treillis élémentaires distincts, pour calculer sur un treillis produit des probabilités a posteriori des états du produit de treillis connaissant les probabilités des états des treillis élémentaires du produit de treillis et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis connaissant les probabilités a posteriori des états du treillis produit, une phase de détermination de probabilités a posteriori associées aux symboles codés c, à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage, une phase d' initialisation au cours de laquelle pour le l' étage les probabilités des états des treillis élémentaires sont initialisées avec les k symboles source et avec n-k probabilités égales à 1/2 représentant les symboles de redondance. L'invention propose ainsi une nouvelle technique de codage de symboles source. Il est ainsi possible d'obtenir simplement de nouveaux codes ou de reconstruire des codes existants, présentant une longueur quelconque, facilement décodables par le procédé de décodage selon l'invention. Un tel procédé de codage peut bien sûr comporter les différentes caractéristiques relatives au procédé de décodage selon l'invention. L'invention a en outre pour objet un codeur correspondant. Un tel codeur de k symboles source délivre une séquence c codée de symboles j = 0,1,- - -, (n -1) , obtenue en appliquant un code correcteur d'erreurs linéaires de paramètres (n, k) mettant en oeuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné. Le codeur comprend : un moyen de calcul adapté pour effectuer un calcul à plusieurs étages, utilisant des treillis élémentaires T, déterminés à partir des k lignes de la matrice, chaque treillis T, étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l' alphabet et étant décrit par l'ensemble des probabilités de ses états, comprenant par étage une étape de calcul mettant en oeuvre un opérateur papillon : pour déterminer des produits de treillis élémentaires distincts, pour calculer sur un treillis produit des probabilités a posteriori des états du produit de treillis connaissant les probabilités des états des treillis élémentaires du produit de treillis et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis connaissant les probabilités a posteriori des états du treillis produit, un moyen de calcul adapté pour déterminer des probabilités a posteriori associées aux symboles codés c, à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage, - un moyen de calcul adapté pour initialiser les probabilités des états des treillis élémentaires du l' étage de calcul avec les k symboles source et avec n-k probabilités égales à 1/2 représentant les symboles de redondance. Un tel codeur est notamment adapté à mettre en oeuvre le procédé de codage décrit précédemment. Un tel codeur peut bien sûr comporter les différentes caractéristiques relatives au procédé de codage selon l'invention, qui peuvent être combinées ou prises isolément. Ainsi, les caractéristiques et avantages de ce codeur sont les mêmes que ceux du procédé de codage, et ne sont donc pas détaillés plus amplement. A nouveau, un tel codeur peut être implémenté sous la forme d'un circuit intégré numérique ou analogique, ou dans un composant électronique de type microprocesseur. Ainsi, l' algorithme de codage selon l'invention peut être mis en oeuvre de diverses manières, notamment sous forme câblée ou sous forme logicielle. L'invention concerne encore un dispositif comprenant un codeur et un décodeur de symboles précédemment décrits. Un tel dispositif, encore appelé codec pour codeur/décodeur, peut être implémenté sous la forme d'un circuit intégré numérique ou analogique, ou dans un composant électronique de type microprocesseur. En particulier, l'utilisation d'un codec permet de mutualiser les ressources matérielles utilisées au codage et au décodage. Par exemple, un tel codec peut recevoir en entrée des symboles source, et délivrer en sortie des symboles codés, ou recevoir en entrée des symboles codés, et délivrer en sortie une estimation des symboles source. Dans encore un autre mode de réalisation, l'invention concerne un ou plusieurs programmes d'ordinateur comportant des instructions pour la mise en oeuvre d'un procédé de décodage ou d'un procédé de codage tels que décrits précédemment, lorsque le ou les programmes sont exécutés par un processeur. De tels programmes peuvent être stockés sur un support d' information. Liste des figures D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante de modes de réalisation particuliers, donnés à titre de simples exemples illustratifs et non limitatifs, et des dessins annexés, parmi lesquels : la figure 1 est un schéma d'un exemple de codeur convolutif de longueur de mémoire m égale à deux, la figure 2 représente une section de treillis du codeur convolutif de la figure 1, la figure 3 représente un exemple de treillis à trois sections à quatre états du codeur convolutif de la figure 1, la figure 4 représente schématiquement un codeur COD et un décodeur DECOD, la figure 5 représente les principales étapes mises en oeuvre par un codeur/décodeur selon l'invention, la figure 6 représente un réseau d'opérateur-papillons pour codeur/décodeur d'un code défini par une matrice comportant 4 lignes selon l'invention, la figure 7 représente le schéma d'un codeur/décodeur complet selon l'invention pour d'un code défini par une matrice comportant 4 lignes selon l'invention (exemple le code de Hamming(8,4,4), la figure 8 représente le schéma d'un codeur/décodeur complet selon l'invention pour d'un code défini par une matrice comportant 12 lignes selon l'invention (exemple le code de Golay(24,12,8), la figure 9 représente le schéma d'un codeur/décodeur complet selon l'invention pour d'un code défini par une matrice comportant 24 lignes selon l'invention (exemple le code de QR(48,24,12), - les figures 10a et 10b sont des schémas des structures simplifiées d'un codeur et d'un décodeur selon un mode de réalisation de l'invention, notamment pour le cas de treillis élémentaires à 2 états et des opérateurs papillons traitant des ensembles de 2 (i.e. couples) treillis élémentaires. Description de modes de réalisation de l'invention L'invention effectue pour un étage donné de calcul des produits portant uniquement sur des ensembles d' au moins deux treillis élémentaires distincts et n'effectue pas de multiplication des k treillis élémentaires entre eux pour obtenir un treillis produit global à 2k états. L'invention fait interagir les treillis élémentaires entre eux au moyen d'un opérateur papillon. La propagation des interactions est faite de manière extrêmement avantageuse sur des probabilités d'états et non pas sur des probabilités de bits ce qui la rend insensible aux cycles de la structure du réseau d'opérateur-papillons. A titre d'exemple, l'invention offre une technique de décodage présentant de meilleures performances que les techniques de l'art antérieur vis-à-vis des bons codes correcteurs d'erreurs tels que : les codes algébriques classiques comme le code de Golay (24,12,8), le code QR (48,24,12) ; les turbo-codes ; les codes LDPC, etc.
L'invention code ou décode des symboles appartenant à un alphabet déterminé Celui-ci peut être l' alphabet binaire. La description qui suit est basée sur un alphabet binaire sachant que l' alphabet peut tout aussi bien ne pas être binaire. Les principales étapes mises en oeuvre par un codeur et/ou un décodeur binaire selon l'invention sont décrites en relation avec la figure 4. Il s'agit ici d'un simple exemple, dans lequel on utilise l'invention à la fois pour le codage et pour le décodage des symboles. Bien entendu, il est possible d'utiliser l'algorithme de décodage proposé avec un algorithme de codage correcteur d'erreurs linéaires classique de paramètres (n, k) mettant en oeuvre une matrice génératrice G ou de contrôle de parité H à n colonnes et k lignes de symboles. Ainsi, selon le mode de réalisation illustré en figure 4, un codeur COD selon l'invention prend en entrée k données source x et délivre en sortie une séquence c codée de données cf, j = 0,1, - - - , (n -1) comprenant les données source x et des données de redondance r. Le code correcteur d'erreurs linéaires de paramètres (n, k) met en oeuvre une matrice à n colonnes et k lignes de données binaires, cette matrice étant soit génératrice G soit de contrôle de parité H. Si le codage est systématique, la matrice génératrice G est alors dite sous forme systématique, le mot de code c comprend les bits source x = (x0,x1,...,x(k_i)) correspondant à l'information utile placés généralement à gauche et les bits de redondance r = (ro, ri., , r(n_k_i)) placés à la suite ou vice versa : c = (x0, x1, ro, ri., , r(n_k_i) ). Un mot de code c est tel que : c = xG ou cHtr = O. La séquence codée c peut être véhiculée dans un canal Ch de transmission ou stockée sur un support, puis décodée par un décodeur DEC selon l'invention. Un tel décodeur reçoit en entrée une séquence y d'échantillons comprenant les données source x et des données de redondance r éventuellement entachées d'erreur et délivre une estimation îc des données source.
Selon un mode de réalisation des treillis élémentaires, chaque générateur élémentaire ou ligne de la matrice G respectivement H est associé à un treillis élémentaire à deux états compte tenu que les symboles sont pris dans l' alphabet binaire {0, 1} à deux symboles. Pour généraliser à tout type d'alphabet, chaque treillis élémentaire comporte donc autant d'états que l' alphabet contient de symboles.
L'invention conserve les k treillis élémentaires T, à au moins deux états qui correspondent aux k lignes L, de la matrice et effectue des produits sur des ensembles d'au moins deux (i.e. des couples) treillis élémentaires distincts. Chaque treillis élémentaire est décrit par une structure de n sections d'indice t, une section étant constituée de branches représentées chacune par un triplet (état de départ, étiquette de branche, état d' arrivée) et par l'ensemble des probabilités de ses états : {Pr(st)}- Un procédé selon l'invention utilise les k treillis élémentaires TI. La structure du treillis T, élémentaire est construite selon l'invention à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet assurant un nombre minimal d'états au treillis.
Selon un mode de réalisation, la cellule de base cello associée à un bit de la matrice égal à zéro est la suivante : et la cellule de base celle associée à un bit de la matrice égal à un est la suivante : Dans cello et celle, les états notés 0 et 1 sont les états d'entrée et de sortie d'une section dans la direction horizontale. Un treillis est constitué par la mise bout à bout de sections composées elles-mêmes de branches. Une branche d'une section de treillis est un triplet (état de départ, étiquette de branche, état d'arrivée). Un treillis peut donc être vu comme un ensemble de branches : 15 Ti = [(sie[,s0}. L'invention est illustrée avec l'exemple du code de Hamming (n=8, k=4, dmio=4). Une matrice génératrice G de ce code de Hamming est la suivante : 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 G= 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 Le code de Hamming (n=8, k=4, dmio=4), et de manière générale tout code peut être décrit 20 de manière complète et non ambigüe de manière équivalente par une matrice de contrôle H ou par un ensemble d'équations modulo deux, qui est le suivant pour le code Hamming - iro + x1+ x2+ x3 = 0 ri + x0 + x2 ± X3 = 0 r2 + X0 + X1 + X3 = 0 r3 + X0 + X1 + X2 = 0 Chaque équation est associée à un treillis élémentaire à deux états. Le treillis élémentaire To associé au générateur 10000111 qui correspond à la première ligne Lo de la matrice G et donc à 25 l'équation booléenne ro+ xi+ x2+ x3 = 0 est donc le suivant : Le treillis élémentaire T1 associé au générateur 01001011 qui correspond à la deuxième ligne L1 de la matrice G ri + xo + x2 + x, = 0 est donc le suivant : Un procédé 1 selon l'invention dont les principales étapes sont illustrées par la figure 5 comprend une phase 2 de calcul à plusieurs étages 3 qui utilise les k treillis élémentaires TI. Par étage 3, le procédé comprend une étape 4, 5, 6 de calcul qui met en oeuvre un opérateur papillon. Lors de l'étape de calcul, l'opérateur paillon détermine 4 des produits T 07; de treillis élémentaires distincts, T et Ti avec i j. Le produit T OTJ de deux treillis de même nombre n de sections d'indice t E {0,1, , n - 1} est, d' après Calderbank-Forney-Vardyin tel que : T, 0T, = {((s:, sit ),(e:,eit ),(s:+1,s71))} avec la contrainte et =et . Ainsi, le produit de deux treillis est le produit cartésien de chacune des composantes des triplets des branches prises deux par deux avec la suppression des couples de branches telles que eit # eit . Selon l'invention le produit de treillis élémentaires est défini à partir des produit des cellules de base : celloOcello, celloOcelli,celliOcello et celliOcelli respectivement égaux à: et En reprenant l'exemple du code de Hamming (n=8, k=4, dmin=4), le produit To ()Ti est le suivant :20 Selon un autre mode de réalisation des treillis élémentaires, un treillis élémentaire est associé à un nombre m>1 de lignes de la matrice définissant le code, son nombre d'états par section est alors 2m. Si un treillis élémentaire Ti est associé à (g0,g1,...,gm-1) lignes de la matrice alors il est équivalent lui-même au produit des m treillis Ti associés chacun à une ligne gi, i=0,...,m-1.
Ceci ne change rien aux principes de l'algorithme mais modifie en particulier le nombre d'opérateur-papillons par étage qui est q = le/2m si 2 x m divise k et diminue le nombre d'étages puisque les interactions se font entre treillis élémentaires plus complexes associés à plus de lignes de la matrice. Si 2 x m ne divise pas k alors k = q x2 x m + r avec 0 < r < 2m. Chaque étage comprend q opérateur-papillons faisant interagir deux treillis élémentaires à r états associés chacun à m lignes de la matrice et un opérateur-papillon. Si r = m + rr ce dernier opérateur- papillon fait interagir un treillis élémentaires à r états et un treillis élémentaire à 2" états associé à rr lignes de la matrice, si r < m ce dernier opérateur-papillon fait interagir deux treillis associés aux m lignes rstantes. Les cas les plus intéressants à part le cas m=1 qui correspond à un mode de réalisation particulier des treillis élémentaires, sont les cas m=2, m=3 et m=4 pour garder une complexité de calculs raisonnable et de bonnes performances de convergence vers l'estimation optimale des probabilités a posteriori des états des treillis. Lors de l'étape de calcul, le procédé fait interagir les treillis au moins deux par deux (directement ou indirectement) au moyen de l'opérateur papillon un nombre de fois minimum mais suffisant pour obtenir une bonne estimation finale et de manière à ce que tout treillis élémentaire influence tout autre treillis élémentaire. En particulier, les interactions sont déterminées telles que : - tout opérateur papillon n'effectue des interactions qu'entre des ensembles d'au moins deux (ici des couples de) treillis Ti et Tj distincts, j, - l'ensemble des opérateurs papillon d'un même étage couvre de façon bijective l'ensemble des treillis : i.e. les indices des treillis d'un étage forment une permutation de 10, 1, . . . , -11, - globalement, tout ensemble (dans le cas le plus simple : tout couple) de treillis élémentaires n'apparaît qu'une seule fois et une seule, - il existe au moins un chemin entre tout opérateur papillon du dernier étage et tout opérateur papillon du premier étage.
Les interactions peuvent se représenter sous la forme d'une matrice d'ensemble d'au moins deux (selon un mode de réalisation : des couples d') indices de treillis élémentaires qui interagissent au moyen d'un opérateur papillon. Les ensemble d'au moins deux (selon un mode de réalisation : des couples de) treillis intervenant dans les produits de treillis sont déterminés pour le lei étage : - en effectuant une partition d'ensembles d'au moins deux indices (selon un mode de réalisation : en couples) à partir d'une permutation identité d'ordre k qui permet d'obtenir une matrice de k/2 lignes et deux colonnes, en transposant la matrice obtenue pour obtenir une matrice à deux lignes et k/2 colonnes et en mettant à plat cette matrice pour obtenir une liste d'ensembles d'au moins deux indices (selon un mode de réalisation : des couples) , et pour un étage suivant : en répétant les opérations précédentes en partant de la liste des ensembles d'au moins deux indices (selon un mode de réalisation : des couples) de l'étage précédent pour obtenir des permutations successives. Le procédé détermine donc un ensemble de nEtage = [Log(2, k)1 permutations de l'ensemble des indices 10, 1, . . , k - 11 où l'opérateur [.1 est l'arrondi par valeur supérieure. En reprenant l'exemple du code de Hamming (n=8, k=4, dmin=4), nEtage = 2 puisque k=4 et l'ensemble des permutations est décrit par une matrice de deux lignes et deux colonnes de couples d'indices : 0 0 1 2 2 1 3 3 Pour le code de Hamming (n=8, k=4, dmin=4), la phase de calcul a deux étages, le l étage correspond à la lère colonne et le 2nd et dernier étage correspond à la seconde colonne. Dit autrement, dans l'exemple du code de Hamming (n=8, k=4, d',,'=4) le procédé fait interagir lors du lei étage de la phase de calcul les couples ( To , TI) et ( T2, T3) et lors du 2nd étage les couples ( To , T2) et ( T3) ce qui peut être représenté par le schéma de la figure 5.
Selon l'invention, l'opérateur papillon effectue en outre un calcul 5 des probabilités a posteriori des états sur le produit 1; ®Ti de deux treillis Ti et T. avec j puis un calcul 6 des probabilités a posteriori des états de chacun des deux treillis Ti et T . Selon un mode de réalisation, l'opérateur-papillon effectue le calcul des probabilités a posteriori des états sur le produit des deux treillis Ti et Ti en utilisant un algorithme BCJR[31 adapté de manière à obtenir comme résultat de sortie le vecteur des probabilités des états du treillis produit alors que l'algorithme classique BCJR[31 fourni le vecteur des probabilités a posteriori des bits. Selon un mode de réalisation, l'opérateur-papillon effectue le calcul des probabilités a posteriori des états de chacun des deux treillis Ti et T par marginalisation.
Selon un mode de réalisation, un procédé de décodage selon l'invention comprend une phase d'initialisation. Selon un mode de réalisation simple de l'initialisation, les probabilités des états [Pr (sn} des treillis élémentaires Ti i =0,1,- - - ,(k -1) sont initialisées uniquement pour le l' étage avec les probabilités a priori des bits reçus y. Pour les étages suivants, les probabilités des états {Pr (sn} des treillis élémentaires Ti i = 0,1,- - - ,(k -1) sont initialisées à 1/2. Les valeurs des bits reçus y ne sont donc injectées qu'une fois dans le procédé de décodage. Selon un mode de réalisation de l'initialisation, les valeurs des bits reçus y sont injectées en totalité ou partiellement comme probabilités a priori reçues dans les autres étages. Compte tenu qu'un opérateur papillon a en données d'entrée les vecteurs de probabilité d'états {Pr(s[)} et {Pr(s1)} des treillis élémentaires Ti et Ti avec i j , ces vecteurs correspondent aux vecteurs de probabilités a posteriori des états de chacun des deux treillis Ti et T déterminés à l'étage précédent, pour chacun des étages suivants le premier étage. Le procédé de décodage selon l'invention comprend en outre une phase de détermination de probabilités a posteriori associées aux symboles décodés à partir des probabilités a posteriori des états des k treillis élémentaires du dernier étage. Cette détermination revient à fusionner toutes les informations disponibles sur chaque symbole décodé entre les k treillis élémentaires du dernier étage : avec oc l'opérateur d'égalité avec normalisation (division par la somme des probabilités des deux cas « 0 » et « 1 ». Selon un mode de réalisation, cette fusion correspond à la multiplication de toutes les probabilités finales d'un même bit de code de chacun des treillis élémentaires Ti avec i =0,1,- - - ,(k -1) à partir des probabilités a posteriori des états des k treillis élémentaires de l'étage final. Selon un mode de réalisation, cette fusion correspond à l'addition de toutes les métriques finales d'un même bit de code de chacun des treillis élémentaires Ti avec i = 0,1,- - - ,(k -1) à partir des probabilités a posteriori des états des k treillis élémentaires de l'étage final. Ainsi, en reprenant l'exemple du code de Hamming (n=8, k=4, dmin=4), le procédé de décodage peut être illustré par le schéma de la figure 6. La fusion fournit les probabilités des bits décodés : {Pr(îci ly)} connaissant les bits reçus y. La structure représentée à la figure 6 est valable pour tous les codes définis par k=4 treillis élémentaires quelle que soit sa longueur n.
L'invention est illustrée avec l'exemple du code de Golay (n=24, k=12, dmin=8). Selon le procédé de décodage précédemment décrit, le nombre d'étages est nEtage = 4 puisque k=12.
L'ensemble des permutations est décrit par une matrice de six lignes et quatre colonnes de couples d'indices : [1 [67] [98] [1101] La structure de l' algorithme de décodage est représentée à la figure 7. Les lettres Ai, Bi, Ci et Di référencent les différents opérateurs papillons.
L'invention est illustrée avec l'exemple du code QR (n=48, k=24, d',,'=12). Selon le procédé de décodage précédemment décrit, le nombre d'étages est nEtage = 5 puisque k=24. L'ensemble des permutations est décrit par une matrice de douze lignes et cinq colonnes de couples d'indices : 11311 [02] [04] M [61] [21 [6] [182] [1161 [111 L3] L16] [1] [ro] [60] [197] [ 221] [61 [1124] [5] [120] r 1 L71 L L121 Cl [3] [1 38] [2217] [10] [201 Fr [i [31 Liu L22] L21] L19] Lai [13] [3] [26] [121 [18] [i5]1_ L18] [m [] [li [20 [ 23 L151i 1:7 41 I_ 5 L 41 1 [161 [12_81 r 1 L171 L 21 L211 L141 [18 [135 [164] [ 19 L19-11 Ll] L 01 1 [201 p" [i [22] r 1 L21-1 L19-1 L15-1 L 7 1-10-1 [221 [211 [191 [151 [1511 L23] L23] L23] L23] L2011 La structure de l' algorithme de décodage est representée a la figure 8. Les lettres Ai, Bi, Ci, Di et Ei référencent les différents opérateurs papillons. La description de l'invention a été faite en considérant des probabilités. L'invention peut tout aussi bien considérer des métriques. Dans ce cas selon un mode de réalisation, un opérateur- [20] [40] [61] [6] [81] [141] [180] [9] [92] [31] [26] [07] [1 [130] [150] [191] [1171] [83] papillon effectue le calcul des métriques a posteriori des états sur le produit des deux treillis Ti et Tj selon un algorithme de type Viterbi-SOVA[4]. Les figures 10a et 10b représentent schématiquement les structures simplifiées d'un codeur COD et d'un décodeur DEC selon un mode de réalisation de l'invention.
Le codeur comprend une mémoire 10 comprenant une mémoire tampon, une unité de traitement 11, équipée par exemple d'un microprocesseur IJP, et pilotée par le programme d'ordinateur 12, mettant en oeuvre le procédé de codage selon un mode de réalisation de l'invention. A l'initialisation, les instructions de code du programme d'ordinateur 12 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 11. L'unité de traitement 11 reçoit en entrée des données source x et délivre des données codées c comprenant les données source et de données de redondance. Le microprocesseur de l'unité de traitement 11 met en oeuvre les étapes du procédé de codage décrit précédemment, selon les instructions du programme d'ordinateur 12, pour coder les données source. Pour cela, le codeur comprend, outre la mémoire tampon 10, un module de codage pour déterminer des produits T 0T, de treillis élémentaires distincts, T et Ti avec i j , pour calculer par treillis produit T DOT des probabilités a posteriori des états du produit T DOT connaissant les probabilités des états {Pr(s1)} des treillis élémentaires T et T et pour calculer des probabilités a posteriori des états de chacun des deux treillis T et Ti connaissant les probabilités a posteriori des états du treillis produit T, 01; et pour déterminer des probabilités a posteriori associées aux symboles codés c,. Ce module est piloté par le microprocesseur de l'unité de traitement 11. Le décodeur DEC comprend une mémoire 20 comprenant une mémoire tampon, une unité de traitement 21, équipée par exemple d'un microprocesseur IJP, et pilotée par le programme d'ordinateur 22, mettant en oeuvre le procédé de décodage selon un mode de réalisation de 25 l'invention. A l'initialisation, les instructions de code du programme d'ordinateur 22 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 21. L'unité de traitement 21 reçoit en entrée des données codées y comprenant des données source et des données de redondance, et délivre une estimation des données source z . Le microprocesseur 30 de l'unité de traitement 21 met en oeuvre les étapes du procédé de décodage décrit précédemment, selon les instructions du programme d'ordinateur 22, pour décoder les données codées. Pour cela, le décodeur comprend, outre la mémoire tampon 20, un module de décodage pour déterminer des produits T 01; de treillis élémentaires distincts, T et Ti avec i j , pour calculer par treillis produit T 07; des probabilités a posteriori des états du produit T 07; connaissant les probabilités des états [Pr(sti)} des treillis élémentaires T et Ti et pour calculer des probabilités a posteriori des états de chacun des deux treillis T et T connaissant les probabilités a posteriori des états du treillis produit T OT , et pour déterminer des probabilités a posteriori associées aux symboles décodés. Ce module est piloté par le microprocesseur de l'unité de traitement 21. Références : [1] R.G. Gallager, "Low-Density Parity-Check Codes ", IEEE Transactions on Information Theory, Vol.8, pp. 21-28, January 1962. [2] G.D. Forney, "The Viterbi Algorithm", Proceedings of the IEEE, Vol.61, no.3,pp.268- 278,March 1973. [3] L.R. Bahl and J. Cocke and F. Jelinek and R. Raviv, "Optimal Decoding of Linear Codes for Minimizing Symbol Error Rate ", IEEE Transactions on Information Theory, Vol. IT-20, pp.284- 287, March 1974. [4] C. Berrou, A. Glavieux, and P. Thitimajshima, "Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes", in Proceedings of the IEEE Int. Conf. on Communications (ICC'93), Geneva, Switzerland, pp.1064-1070, May 1993. [5] N. Wiberg, "Codes and Decoding on General Graphs", Ph.D. Thesis, Link"oping University, Sweden 1996. [6] A.R. Calderbank and G.D. Jr. Forney and A. Vardy, "Minimal Tailbiting Trellises: the Golay Code and More", IEEE Transactions on Information Theory, Vol. IT.45, no.5, pp.1435-1455, July 1999. [7] « Minimum-distance bounds by graph analysis » de R.M. Tanner, « IEEE Transactions on information theory », vol. 47, février 2001.

Claims (14)

  1. REVENDICATIONS1. Procédé (1) de décodage d'une séquence d'échantillons reçus y par un décodeur correspondant, après transmission, à une séquence c codée de symboles ci, j = 0,1, - - -, (n -1) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires de paramètres (n, k) à k symboles source (x) mettant en oeuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné, caractérisé en ce que ledit procédé comprend : une phase de calcul à plusieurs étages, utilisant des treillis élémentaires T, déterminés à partir des k lignes de la matrice, chaque treillis T, étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états ({Pr (s[)}, i = 0,1, - - -, (k -1)) comprenant par étage une étape de calcul mettant en oeuvre un opérateur papillon : pour déterminer des produits ( T CO T) de treillis élémentaires distincts, (T, , i j), pour calculer sur un treillis produit ( T 07; ) des probabilités a posteriori des états du produit de treillis ( ) connaissant les probabilités des états ( tPr(sp}) des treillis élémentaires (T, T) du produit de treillis et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis (T, T) connaissant les probabilités a posteriori des états du treillis produit ( ), une phase de détermination de probabilités a posteriori associées aux symboles décodés à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage.
  2. 2. Procédé (1) de décodage selon la revendication 1 dans lequel l'étape de calcul met en oeuvre au moins une itération de calcul des probabilités a posteriori des états du treillis produit ( 01; ) connaissant les probabilités des états ({Pr (s[)}, {Pr (4)}) des treillis élémentaires (T, T) du produit et de calcul des probabilités a posteriori des états de chacun des treillis (T, T) du produit connaissant les probabilités a posteriori des états du treillis produit (T 07; ).
  3. 3. Procédé (1) de décodage selon la revendication 1 comprenant en outre une phase d'initialisation au cours de laquelle pour le l' étage les probabilités des états des treillis élémentaires sont initialisées avec les probabilités a priori des symboles reçus et pour les étages suivants les probabilités d'états des treillis élémentaires sont initialisées à 1/2.
  4. 4. Procédé (1) de décodage selon la revendication 1 dans lequel le calcul des probabilités a posteriori des états du treillis produit ( T ®1) comprend : une phase de propagation avant, consistant à propager des probabilités d'état le long des branches du treillis produit et une phase de propagation arrière, consistant à propager des probabilités d' état le long des branches du treillis produit.
  5. 5. Procédé (1) de décodage selon la revendication 1 dans lequel le calcul des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis (7; et T) est effectué par marginalisation à partir des probabilités a posteriori des états du treillis produit ( 07 "i).
  6. 6. Procédé (1) de décodage selon la revendication 1, dans lequel un treillis élémentaire correspond à au moins une ligne de la matrice.
  7. 7. Procédé (1) de décodage selon la revendication 1 dans lequel un treillis élémentaire correspond à une ligne de la matrice et dans lequel le nombre d'étages est l'arrondi par valeur supérieure de Log(2,k).
  8. 8. Procédé (1) de décodage selon la revendication 1 dans lequel l'alphabet est binaire.
  9. 9. Procédé (1) de décodage selon la revendication précédente, dans lequel la cellule de base cello associée à un bit de la matrice égal à zéro est la suivante : et la cellule de base celle associée à un bit de la matrice égal à un est la suivante : 25 30
  10. 10. Procédé (1) de décodage selon la revendication précédente dans lequel le produit de treillis élémentaires est défini à partir des produit des cellules de base : cello 0 cello, cello 0 cella , cella 0 cello et cella 0 cella respectivement égaux à : et
  11. 11. Utilisation d'un procédé de décodage selon l'une des revendications 1 à 10 combinée à la revendication 8 pour décoder un code de Hamming (8,4,4) telle que le nombre d'étages est de deux et l'ensemble des indices des treillis des couples de treillis forme les permutations suivantes : 0 0 1 2 1 3 2 3
  12. 12. Décodeur d'une séquence d'échantillons reçus y correspondant, après transmission, à une séquence c codée de symboles ci, j = 0,1, - - -, (n -1) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires de paramètres (n, k) à k symboles source (x) mettant en oeuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné, caractérisé en ce que le décodeur comprend : un moyen de calcul adapté pour effectuer un calcul à plusieurs étages, utilisant des treillis élémentaires T, déterminés à partir des k lignes de la matrice, chaque treillis T, étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états er (s t(Ti))}), comprenant par étage une étape de calcul mettant en oeuvre un opérateur papillon : pour déterminer des produits ( T, 01; ) de treillis élémentaires distincts ( , Ti avec i j), pour calculer sur un treillis produit ( T 0T) des probabilités a posteriori des états du produit de treillis ( T 0T) connaissant les probabilités des états (t13 r (s t (T i)))) des treillis élémentaires (T» et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis ( T, T) connaissant les probabilités a posteriori des états du treillis produit ( T 07", ), un moyen de calcul adapté pour déterminer des probabilités a posteriori associées aux symboles décodés à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage.
  13. 13. Procédé de codage de k symboles source (x) délivrant une séquence c codée de symboles j=0,1,---, (n -1) , obtenue en appliquant un code correcteur d' erreurs linéaires de paramètres (n, k) mettant en oeuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné, caractérisé en ce que le procédé comprend : une phase de calcul à plusieurs étages, utilisant des treillis élémentaires T, déterminés à partir des k lignes de la matrice, chaque treillis T, étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états er (st(Ti))}), comprenant par étage une étape de calcul mettant en oeuvre un opérateur papillon : pour déterminer des produits ( T 07; ) de treillis élémentaires distincts ( T, T i j), pour calculer sur un treillis produit ( T 0T) des probabilités a posteriori des états du produit de treillis ( OTi) connaissant les probabilités des états (tPr (st (Ti)))) des treillis élémentaires (T, T» du produit de treillis et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis ( T, T) connaissant les probabilités a posteriori des états du treillis produit (T 07;), une phase de détermination de probabilités a posteriori associées aux symboles codés c; à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage, une phase d' initialisation au cours de laquelle pour le 1" étage les probabilités des états des treillis élémentaires sont initialisées avec les k symboles source et avec n-k probabilités égales à 1/2 représentant les symboles de redondance.
  14. 14. Codeur de k symboles source (x) délivrant une séquence c codée de symboles ci, j = 0,1, - - -, (n -1) , obtenue en appliquant un code correcteur d'erreurs linéaires de paramètres (n, k) mettant en oeuvre une matrice à n colonnes et k lignes de symboles, les symboles appartenant à un alphabet donné, caractérisé en ce que le codeur comprend : un moyen de calcul adapté pour effectuer un calcul à plusieurs étages, utilisant des treillis élémentaires T, déterminés à partir des k lignes de la matrice, chaque treillis T, étant décrit par une structure de n sections construites à partir de différentes cellules de base associées respectivement aux différents symboles de l'alphabet et étant décrit par l'ensemble des probabilités de ses états er(st(Ti)))), comprenant par étage une étape de calcul mettant en oeuvre un opérateur papillon : pour déterminer des produits ( T 0T) de treillis élémentaires distincts ( T, T i~j), pour calculer sur un treillis produit ( T 0T) des probabilités a posteriori des états du produit de treillis ( ) connaissant les probabilités des états (tPr (st (Ti)))) des treillis élémentaires (T, T» du produit de treillis et pour calculer des probabilités a posteriori des états de chacun des treillis élémentaires du produit de treillis ( T, T) connaissant les probabilités a posteriori des états du treillis produit (Ti 07; ), un moyen de calcul adapté pour déterminer des probabilités a posteriori associées aux symboles codés ci à partir des probabilités a posteriori des états de tous les treillis élémentaires du dernier étage, un moyen de calcul adapté pour initialiser les probabilités des états des treillis élémentaires du l' étage de calcul avec les k symboles source et avec n-k probabilités égales à 1/2 représentant les symboles de redondance.25
FR1450400A 2014-01-17 2014-01-17 Procede et dispositif de decodage de symboles codes a l'aide d'un code correcteur d'erreurs lineaires, procede et dispositif de codage, et programme d'ordinateur correspondants Withdrawn FR3016760A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1450400A FR3016760A1 (fr) 2014-01-17 2014-01-17 Procede et dispositif de decodage de symboles codes a l'aide d'un code correcteur d'erreurs lineaires, procede et dispositif de codage, et programme d'ordinateur correspondants
PCT/FR2015/050130 WO2015107315A1 (fr) 2014-01-17 2015-01-19 Codage et décodage de code linéaire à partir de treillis

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1450400A FR3016760A1 (fr) 2014-01-17 2014-01-17 Procede et dispositif de decodage de symboles codes a l'aide d'un code correcteur d'erreurs lineaires, procede et dispositif de codage, et programme d'ordinateur correspondants

Publications (1)

Publication Number Publication Date
FR3016760A1 true FR3016760A1 (fr) 2015-07-24

Family

ID=50976762

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1450400A Withdrawn FR3016760A1 (fr) 2014-01-17 2014-01-17 Procede et dispositif de decodage de symboles codes a l'aide d'un code correcteur d'erreurs lineaires, procede et dispositif de codage, et programme d'ordinateur correspondants

Country Status (2)

Country Link
FR (1) FR3016760A1 (fr)
WO (1) WO2015107315A1 (fr)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2214322A1 (fr) * 2009-01-30 2010-08-04 Alcatel Lucent Décodage itératif de codes en blocs utilisant des sub-treillis

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2214322A1 (fr) * 2009-01-30 2010-08-04 Alcatel Lucent Décodage itératif de codes en blocs utilisant des sub-treillis

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CALDERBANK A R ET AL: "Minimal Tail-Biting Trellises: The Golay Code and More", IEEE TRANSACTIONS ON INFORMATION THEORY, IEEE PRESS, USA, vol. 45, no. 5, July 1999 (1999-07-01), XP011027374, ISSN: 0018-9448 *
CARLACH J C ET AL: "A new scheme for building good self-dual block codes", INTERNATIONAL SYMPOSIUM ON INFORMATION THEORY, IEEE, PISCATAWAY, NJ, USA, 25 June 2000 (2000-06-25) - 30 June 2000 (2000-06-30), pages 476 - 476, XP010510349, ISBN: 978-0-7803-5857-7 *
KOTTER R ET AL: "Construction of minimal tail-biting trellises", INFORMATION THEORY WORKSHOP, 1998 KILLARNEY, IRELAND 22-26 JUNE 1998, NEW YORK, NY, USA,IEEE, US, 22 June 1998 (1998-06-22), pages 72 - 74, XP010297326, ISBN: 978-0-7803-4408-2, DOI: 10.1109/ITW.1998.706441 *
LI YANPING ET AL: "New implementation for the scalable LDPC-decoders", PROCEEDINGS / 2004 IEEE 59TH VEHICULAR TECHNOLOGY CONFERENCE, VTC 2004-SPRING : TOWARDS A GLOBAL WIRELESS WORLD ; 17 - 19 MAY 2004, MILAN, ITALY, IEEE OPERATIONS CENTER, PISCATAWAY, NJ, vol. 1, 17 May 2004 (2004-05-17), pages 343 - 346Vol.1, XP010764816, ISBN: 978-0-7803-8255-8 *
YE LIU ET AL: "MAP Algorithms for Decoding Linear Block Codes Based on Sectionalized Trellis Diagrams", IEEE TRANSACTIONS ON COMMUNICATIONS, IEEE SERVICE CENTER, PISCATAWAY, NJ. USA, vol. 48, no. 4, April 2000 (2000-04-01), pages 577 - 587, XP011010820, ISSN: 0090-6778, DOI: 10.1109/26.843125 *

Also Published As

Publication number Publication date
WO2015107315A1 (fr) 2015-07-23

Similar Documents

Publication Publication Date Title
EP0848501A1 (fr) Système et procédé de transmission numérique comportant un code produit combiné à une modulation multidimensionnelle
FR2804260A1 (fr) Procede de transmission numerique de type a codage correcteur d&#39;erreurs
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
EP1101288B1 (fr) Procede et dispositif de codage correcteur d&#39;erreurs et procede et dispositif de decodage correspondants
EP1974472A1 (fr) Procedes d&#39;encodage et de decodage rapides et dispositifs associes
EP2833555B1 (fr) Procede ameliore de decodage d&#39;un code correcteur avec passage de message, en particulier pour le decodage de codes ldpc ou codes turbo
EP1527521B1 (fr) Dispositif et procede de decodage robuste de codes arithmetiques
FR2802735A1 (fr) Procede et dispositif de codage, procede et dispositif de decodage, et systemes les mettant en oeuvre
EP1282254A1 (fr) Codage et décodage de canal pour modulation à grand nombre d&#39;etats
EP2766996B1 (fr) Codage et decodage correcteur d&#39;erreurs
FR2838581A1 (fr) Procede de codage et/ou de decodage de codes correcteurs d&#39;erreurs, dispositifs et signal correspondants
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
FR3016760A1 (fr) Procede et dispositif de decodage de symboles codes a l&#39;aide d&#39;un code correcteur d&#39;erreurs lineaires, procede et dispositif de codage, et programme d&#39;ordinateur correspondants
FR2972878A1 (fr) Procede d&#39;encodage correcteur d&#39;erreur, procede de decodage et dispositifs associes.
EP3311495A1 (fr) Conception de l&#39;entrelaceur pour des codes turbo en fonction du motif de poinçonnage
EP1443658A1 (fr) Procédé de contrôle du nombre d&#39;itérations d&#39;un processus de décodage itératif et dispositif pour la mise en oeuvre du procédé
WO2016198801A1 (fr) Décodage sur une pluralité de treillis à sections auto-complémentaires a 4 états
WO2008129195A1 (fr) Codage et decodage de signaux de donnees de rendements variables
Gonzalez Towards higher speed decoding of convolutional turbocodes
Yoshikawa On the bit error probability for constant log-MAP decoding of convolutional codes
WO2015197971A1 (fr) Procédés et dispositifs de codage et de décodage correcteur d&#39;erreurs, et programme d&#39;ordinateur correspondant
Balaji et al. Evaluation of decoding trade-offs of concatenated RS convolutional codes and turbo codes via trellis
FR2972877A1 (fr) Procede d&#39;encodage correcteur d&#39;erreur, procede de decodage et dispositifs associes.
Werling A Hardware Implementation of the Soft Output Viterbi Algorithm for Serially Concatenated Convolutional Codes
FR2878385A1 (fr) Procedes et dispositifs de multiplexage de sections de treillis pour decodage par l&#39;algorithme de viterbi ou aller-retour

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

ST Notification of lapse

Effective date: 20160930