FR2878385A1 - Procedes et dispositifs de multiplexage de sections de treillis pour decodage par l'algorithme de viterbi ou aller-retour - Google Patents

Procedes et dispositifs de multiplexage de sections de treillis pour decodage par l'algorithme de viterbi ou aller-retour Download PDF

Info

Publication number
FR2878385A1
FR2878385A1 FR0412342A FR0412342A FR2878385A1 FR 2878385 A1 FR2878385 A1 FR 2878385A1 FR 0412342 A FR0412342 A FR 0412342A FR 0412342 A FR0412342 A FR 0412342A FR 2878385 A1 FR2878385 A1 FR 2878385A1
Authority
FR
France
Prior art keywords
node
recursion
metrics
return
window
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
FR0412342A
Other languages
English (en)
Inventor
David Gnaedig
Jacky Tousch
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.)
TURBOCONCEPT SOC PAR ACTIONS S
Original Assignee
TURBOCONCEPT SOC PAR ACTIONS S
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 TURBOCONCEPT SOC PAR ACTIONS S filed Critical TURBOCONCEPT SOC PAR ACTIONS S
Priority to FR0412342A priority Critical patent/FR2878385A1/fr
Publication of FR2878385A1 publication Critical patent/FR2878385A1/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
    • 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/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4107Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • 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/3922Add-Compare-Select [ACS] operation in forward or backward recursions
    • 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/3972Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using sliding window techniques or parallel windows

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 propose un procédé de décodage comprenant plusieurs étapes de mémorisation (701 et 702) dans la boucle de retour d'une étape de calcul de métriques de noeud d'un algorithme de Viterbi ou BCJR opérant sur un treillis, composé d'opérations de comparaison/sélection (76, 77, 78). Le décodage de plusieurs sections de treillis relatives à une trame codée uniqueest effectué simultanément suivant un principe de multiplexage temporel. L'invention propose différentes variantes optimisant le placement des étapes de mémorisation suivant le treillisconsidéré afin d'atteindre la fréquence de fonctionnement maximale. Un second aspect de l'invention utilise le principe de l'invention dans le cas d'une boucle de récursion intégrant plusieurs étapes de calcul de métriques de noeud. Des algorithmes à fenêtre glissante adaptés à l'invention sont également proposés.

Description

Procédés et dispositifs de multiplexage de sections de treillis pour
décodage par l'algorithme de Viterbi ou Aller-Retour
La présente invention propose un procédé et un dispositif, ainsi que les systèmes les mettant en oeuvre, de décodage par l'algorithme de Viterbi ou l'algorithme Aller-Retour opérant sur une représentation en treillis d'un code correcteur d'erreur ou d'un processus Markovien quelconque. La mise en oeuvre de l'invention permet de réduire la complexité de l'algorithme par une augmentation de la fréquence de fonctionnement du dispositif ou système correspodant. L'invention est particulièrement pertinente dans le cas des codes convolutifs comportant quatre branches ou plus par noeud, et la réduction de complexité associée est particulièrement intéressante dans un contexte de décodage itératif de turbo codes.
Le champ d'application de l'invention concerne l'ensemble des systèmes de transmission utilisant en réception un décodeur de type Viterbi ou AllerRetour opérant par exemple sur le treillis du code, ou de la modulation ou celui représentatif du canal de transmission à mémoire. On trouve par exemple des codes convolutifs et des turbo codes dans la plupart des systèmes standardisés de télécommunications numériques (hertzien, par satellite, etc), et on rencontre des canaux ou des modulations modélisables par une chaîne de Markov dans un grand nombre de systèmes de transmission ou de stockage. On détaillera par la suite sans perte de généralité la mise en oeuvre de l'invention dans le cadre particulier d'un algorithme Aller-Retour appliqué à un code convolutif et un turbo code.
Les codes convolutifs sont une famille de codes correcteurs d'erreurs très utilisée pour laquelle il existe un algorithme de décodage à maximum de vraisemblance appelé l'algorithme de Viterbi. L'implémentation de l'algorithme de Viterbi utilise la représentation en treillis associée au code convolutif. Plus précisément un treillis représente l'ensemble des successions des états possibles du codeur. L'objectif de cet algorithme est de retrouver quelle succession d'états est la plus probable, connaissant les observations disponibles au niveau du récepteur, issues du canal de transmission. Il introduit à cette fin les notions de chemin (une succession donnée d'états) et de métriques (mesure de la probabilité associée au chemin). Le calcul des métriques est effectué de manière récursive et fait intervenir notamment l'opérateur Addition-Comparaisonsélection (ACs), bien connu de l'homme du métier. L'algorithme de Viterbi effectue, lors de chaque récursion, une sélection entre les différents chemins menant au même état, conservant uniquement le plus probable. Lorsque le treillis est parcouru en totalité, le chemin le plus probable est utilisé pour effectuer une décision dure (bit 0 ou 1) pour chaque bit codé.
L'algorithme de Viterbi ne calcule pas de fiabilités associées aux décisions dures produites. Avec l'avènement des turbo codes [C. Berrou, A. Glavieux, Thitimajshima, P. "Near shannon limit error-correcting coding and decoding: Turbo-codes", International Conference on Communication, ICC 93] et du décodage itératif, il n'est plus suffisant, pour obtenir les performances optimales, de prendre une décision binaire lors du décodage en treillis. Il est nécessaire d'effectuer une décision pondérée, consistant à produire une probabilité pour chaque bit ou symbole, appelée probabilité a posteriori (par opposition à la probabilité a priori que l'algorithme utilise, qui lui est fournie) pour le bit ou symbole considéré.
L'algorithme Aller-Retour, également appelé algorithme BCJR [L. R. Bahl, J. Cocke, F. Jelinek, and J. Raviv, "Optimal decoding of linear codes for minimizing symbol error rate," IEEE Trans. Inform. Theory, vol. IT-20, pp. 284-287, 1974] permet de produire ces décisions pondérées de manière optimale par rapport au critère de Maximum a Posteriori ou MAP bit à bit ou symbole à symbole.
L'algorithme BCJR s'applique à tout code pouvant se représenter par un treillis et pour lequel une décision pondérée symbole à symbole est nécessaire. Le décodage à décision pondérée est largement utilisé dans le cadre du décodage itératif de codes de type turbo codes, qui consiste à échanger de manière itérative des décisions pondérées entre plusieurs décodeurs élémentaires afin de converger vers une décision finale optimale.
Un turbo code est une concaténation d'au moins deux codes élémentaires, par exemple des codes convolutifs, séparés par une fonction d'entrelacement qui réalise une permutation des données. Le décodeur correspondant comprend deux décodeurs élémentaires, chacun associé à un code constituant, et utilisant chacun un algorithme de décodage pondéré, par exemple l'algorithme Aller-Retour. Les performances de décodage sont optimisées si les deux décodeurs échangent de manière itérative des probabilités sur les bits ou les symboles. Ainsi lorsqu'un décodeur transmet une probabilité sur un bit ou un symbole, on parle de l'information extrinsèque sur ce bit ou symbole produite par ce décodeur. Elle sera utilisée par l'autre décodeur en tant qu'information a priori supplémentaire. L'information extrinsèque est en général obtenue à partir de l'information a posteriori calculée par l'algorithme Aller-Retour.
L'algorithme Aller-Retour consiste à calculer les informations a posteriori de chacun des symboles ou bits en combinant les informations fournies par une récursion Aller et une récursion Retour, effectuées sur le treillis. Afin de réduire la complexité des implémentations, cet algorithme est habituellement traduit dans le domaine logarithmique où il se réduit à des opérations d'additions et de sélections de maximum. Les probabilités sont alors remplacées par les Logarithmes de Rapport de vraisemblance (en anglais Log-Likelihood Ratio ou LLR). Dans ce cas, les deux récursions Aller et Retour sont chacune analogues à un algorithme de Viterbi effectué sur le même treillis, mais dans deux sens opposés. Deux variantes sont connues dans l'état de l'art: l'algorithme Log-MAP [ A comparison of optimal and suboptimal MAP decoding algorithms operating in the log domain , Robertson, P.; Villebrun, E.; Hoeher, P.; IEEE International Conference on Communications, 1995.] qui utilise un opérateur ACs* dans lequel la sélection s'accompagne d'une fonction de correction, l'algorithme Max-Log-MAP qui est une simplification du précédent, utilisant l'opérateur ACs simple.
Dans une réalisation matérielle sur circuit intégré, dans le cadre d'une logique synchronisée par une horloge, le débit maximal d'une récursion de l'algorithme de Viterbi est limité par la fréquence maximale de l'horloge et en particulier la fréquence maximale permise par le temps de propagation traversant l'opérateur ACs. En effet, la récursion de l'algorithme met en oeuvre une boucle de retour comprenant au moins un opérateur ACs: le calcul des métriques de l'étage courant du treillis nécessite la connaissance des métriques de l'étage précédent. Habituellement, pour augmenter la fréquence de fonctionnement d'un circuit combinatoire quelconque, des registres sont insérées afin de réduire la longueur du chemin critique. On parlera de barrière de registre ou pipeline un ensemble de registres placé de manière transversale sur un chemin de données ayant pour but de réduire le chemin critique. Le débit du circuit ainsi que sa latence sont ainsi augmentés. Dans le cas d'un algorithme utilisant une boucle de retour, cette solution n'est pas réalisable sans modifier le comportement de l'algorithme. Il est nécessaire dans ce cas d'envisager des techniques plus élaborées.
Ainsi, plusieurs techniques d'insertion de registres à l'intérieur de la boucle de retour de l'algorithme de Viterbi ont été proposées dans la littérature et font partie de l'état de l'art. Leur principe consiste à effectuer une division temporelle en allouant successivement les ressources de calcul disponibles à différentes opérations fonctionnelles.
Dans [ Algorithms and architectures for concurrent Viterbi decoding", D.; Messerschmitt, D.G. ICC Conference on Communications, 1989] , plusieurs techniques de multiplexage temporel de différents treillis sont proposées. La première technique consiste à multiplexer plusieurs trames codées provenant de sources indépendantes sur le même décodeur de Viterbi. Cette technique est donc restrictive dans son utilisation, car elle présuppose une dissymétrie du réseau de communication (un récepteur pour plusieurs émetteurs), et présente une augmentation de complexité mémoire, le récepteur devant stocker plusieurs trames pendant leur décodage. La deuxième technique appelée méthode par blocs s'applique à une seule source codée par un code convolutif. Le découpage en plusieurs treillis indépendants est effectué lors du codage: soit en insérant périodiquement des bits de terminaison pour forcer le codeur à revenir à un état connu; soit en réinitialisant l'état du codeur périodiquement. Cette technique nécessite une modification du procédé de codage et conduit à une perte d'efficacité spectrale ou de performances.
Une autre technique proposée dans [H. Dawid, s. Bitterlich, H. Meyr, "Trellis pipeline-interleaving: a novel method for efficient Viterbi decoder implementation", IsCAs '92, vol. 4, pp. 1875-1878, May 1992], découpe le treillis horizontalement , c'est à dire en séparant les différents états possibles d'un même étage de treillis, afin d'exhiber plusieurs groupes de noeuds (ou états) pour lesquels les calculs peuvent être effectués indépendamment. Ce découpage s'effectue en remarquant que pour un code convolutif classique, à un étage donné, il existe deux groupes distincts de noeuds, dont toutes les branches (également appelées transistions) issues des noeuds de chacun des deux groupes arrivent sur des noeuds communs. Ces noeuds communs sont distincts pour chacun des deux groupes de noeuds initiaux et forment donc à nouveaux deux groupes de noeuds distincts. Les calculs relatifs à ces deux groupes peuvent alors être effectués indépendamment sur plusieurs étages avant que les chemins suivis par ces deux groupes ne convergent. Ces deux groupes de noeuds partagent donc une même unité de calcul comprenant des opérateurs ACs. Néanmoins, lorsque les chemins de ces deux groupes convergent, il est nécessaire d'insérer des cycles d'attente avant de continuer le décodage. Cette insertion doit se faire périodiquement, avec une fréquence dépendant du nombre de noeuds du treillis et du nombre de branches quittant chaque noeud. Ainsi, cette technique n'est pas adaptée à des treillis à faible nombre de noeuds et/ou grand nombre de branches quittant chaque noeud.
Une autre technique appliquée au décodage par l'algorithme de Viterbi est celle proposée dans [ Parallel Viterbi algorithm implementation: breaking the ACs-bottleneck , Fettweis, G.; Meyr, H.; IEEE Transactions on Communications, Aug. 1989] et qui introduit la notion de M-treillis. Dans cette technique, la récursion de l'algorithme de Viterbi effectue M étages de treillis simultanément. Cette meta-récursion conduit à un calcul d'un nombre très important de métriques de branche. Ces métriques de branche peuvent être calculées de manières récursives par l'algorithme de Viterbi s'exécutant sur des treillis indépendants. Ainsi, ces algorithmes de Viterbi peuvent être effectués en parallèle et donc être multiplexés sur une même unité de calcul comprenant des boucles ACs avec des barrières de registres. Cette technique n'est pas adaptée à un décodage à sortie pondérée utilisant l'algorithme Aller-Retour car il nécessite les métriques de noeud de chaque étage de treillis afin de calculer les informations a posteriori et extrinsèques.
Dans [G. Park, s. Yoon, C. Kang, D. Hong, "An Implementation Method of a Turbo-code Decoder using a Block-wise MAP Algorithm", VTC Fall 2000, Boston, UsA, sept 2000], une technique pour insérer des barrières de registres dans la boucle de retour ACs est appliquée au décodage par l'algorithme Aller-Retour de turbo-codes. Cette technique utilise une récursion unique de calculs de métriques de noeuds et multiplexe des récusions Aller et Retour sur cette même unité de calcul. La structure du treillis Aller étant différente de celle du treillis Retour, il est nécessaire d'ajouter des multiplexeurs à l'intérieur de la boucle ACs. On parlera dans ce cas d'un multiplexage de calculs hétérogène. Ces multiplexeurs augmentent d'une part la complexité, et d'autre part contribuent à augmenter la longueur du chemin critique et donc atténuent l'augmentation visé en fréquence d'horloge.
Les différentes techniques de l'état de l'art offrent des gains limités en performances, si on considère l'augmentation de complexité liée à leur mise en oeuvre. D'autre part, certaines de ces techniques nécessitent la modification du procédé de codage. De plus, ces différentes techniques développées dans l'état de l'art ne prennent pas en compte la spécificité du treillis (nombre de noeuds, nombre de branches par noeud) et du type de circuit choisi (les deux grandes classes de circuit usuels sont d'une part les circuit programmables FPGA (Field Programmable Gate Array) et les circuits sspré-caractérisés ASIC (Application specific Integrated Circuit)) pour optimiser le placement de la barrière de registres. En particulier, aucune technique adaptée à un treillis comportant au moins 3 branches par noeud n'est spécifiée.
L'objectif de l'invention est d'augmenter le débit de décodage à complexité donnée, ou inversement de diminuer la complexité de décodage à débit constant. Les avantages suivants par rapport aux solutions de l'état de l'art peuvent être soulignés: - aucune modification du procédé de codage n'est nécessaire; l'invention est applicable à tout code convolutif; - il n'est pas nécessaire de multiplexer plusieurs blocs codés; le multiplexage temporel de différents calculs sur les mêmes modules concerne des traitement identiques, et n'implique donc aucune augmentation de complexité due à un multiplexage hétérogène; elle s'applique particulièrement efficacement dans le cas d'un treillis dense à plus de deux branches par noeud.
Pour atteindre ces objectifs, l'invention propose un procédé de décodage d'un code convolutif suivant un algorithme de Viterbi ou un algorithme de type Aller-Retour BCJR opérant sur le treillis représentatif du code composé de N+1 étages de h noeuds chacun, mettant en oeuvre pour chaque étage une étape de calcul d'une nouvelle métrique de noeud associée à chaque noeud. Cette étape de calcul est identique pour chacun des noeuds et comprend principalement les fonctions calculatoires séquentielles suivantes: une opération dite opération d'addition de métrique de branche, consistant, pour chacune des M branches entre ledit noeud, dit noeud d'arrivée, et le noeud précédent, dit noeud de départ, en une addition de la métrique de noeud du noeud de départ, dite métrique de départ, à une métrique de branche; cette opération résultant en autant de métriques concurrentes que de branches, une opération dite de comparaison/sélection dont les opérandes sont les métriques concurrentes résultant de ladite opération d'addition de métrique de branche; le résultat étant une nouvelle métrique de noeud.
En outre, les différentes étapes de calcul de métriques de noeud sont réalisées par récurrence, chaque récursion comprenant une étape de mémorisation des métriques de noeud résultant desdites fonctions calculatoires, afin d'être utilisées récursivement lors de la prochaine étape. Ladite étape de mémorisation comprend en outre une possibilité de chargement de valeurs d'initialisation. L'ensemble composé des fonctions calculatoires et de l'étape de mémorisation correspond à une boucle de récursion.
Le procédé est caractérisé en ce que: la boucle de récursion comprend au moins une étape de mémorisation supplémentaire, résultant en un total de K étapes de mémorisation, K étant au moins égal à deux, faisant ainsi apparaître K sous-étapes de calcul séparées par les étapes de mémorisation.
K sections de treillis distinctes sont traitées simultanément par la boucle de récursion ainsi modifiée, suivant un principe de multiplexage temporel caractérisé par: o les K sous-étapes de calcul sont actives simultanément et traitent respectivement des données relatives à chacune des K sections de treillis distinctes.
o chaque étape de récursion de chacune desdites sections de treillis est effectuée en K sous-étapes séquentielles mettant en oeuvre successivement lesdites K étapes de mémorisation et lesdites K sous-étapes de calcul.
L'invention propose également le dispositif de décodage correspondant.
L'introduction de plusieurs sous-étapes de calcul à l'aide de mémorisation intermédiaire permet de faire apparaître des fonctions calculatoires élémentaires plus simples dont l'implémentation matérielle met en oeuvre des barrières de registres permettant d'augmenter ainsi la fréquence de fonctionnement, augmentant ainsi le débit de décodage. Le multiplexage de K sections de treillis distinctes rend cette introduction possible, qui ne l'est pas naturellement à cause de la relation de dépendance des données d'une étape du treillis à la suivante. Les sections de treillis multiplexées entre elles sont des sections de treillis du même bloc de données codées, évitant le stockage de plusieurs blocs de données.
L'invention s'applique aussi bien dans le cas de l'utilisation de comparaison/sélection simple (algorithme Max-Log-MAP) que dans le cas de comparaison/sélection avec addition d'un facteur correctif au résultat de la sélection (algorithme Log-MAP). Dans ce dernier cas, il ast avantageux de positionner au moins une des étapes de mémorisation supplémentaires de manière à séparer ladite comparaison/sélection de ladite addition de terme correctif dans deux sous-étapes de calcul distinctes.
L'étape de calcul d'un étage de treillis comporte en outre une opération de normalisation-saturation des métriques de noeud visant à maîtriser la dynamique des nombres. Cette opération peut être placée à différents endroits du séquencement de l'étape de calcul de métriques de noeud. Le choix de son placement, ainsi que le choix du placement des K sous-étapes de mémorisation est effectué conjointement de manière à équilibrer les sous-étapes de calcul et ainsi maximiser la fréquence de fonctionnement du circuit.
Selon deux caractéristiques particulières de l'invention correspondant à des contraintes matérielles différentes, l'opération est positionnée: soit en aval des opération de comparaison/sélection; soit en amont de l'opération d'addition de métrique de branche Selon une caractéristique particulière, le nombre de transitions M ayant le même noeud d'arrivée est au moins égal à trois, l'opération de comparaison/sélection étant décomposée en opérateurs élémentaires de comparaison/sélection à deux opérandes, l'opération de comparaison/sélection de M métriques concurrentes nécessitant un arbre d'opérateurs élémentaires de comparaison/sélection résultant pour chacun des opérandes de ladite opération en une cascade d'au maximum G opérateurs élémentaires successifs, G étant égal à log2(M'), M' étant la puissance de 2 la plus proche de M respectant M'?M.
L'invention est d'autant plus pertinente que la quantité de calculs nécessaire pour les métriques de noeud est importante, ce qui est notamment le cas pour les codes à treillis comportant trois branches ou plus par noeud d'arrivée. La décomposition de l'opération de comparaisonsélection en une cascde d'opérateurs élémentaires augmente les possibilités de placement des barrières de registre et permet donc de l'optimiser.
Selon une caractéristique particulière, le nombre K d'étapes de mémorisation dans la boucle de récursion est supérieur ou égal au nombre maximum G d'opérateurs contenus dans une cascade d'opérateurs élémentaires de comparaison/sélection et dont le positionnement est choisi de telle sorte que - chaque opérateur élémentaire fasse partie d'une seule des K sous- étape de calcul;deux opérateurs élémentaires faisant partie d'une même cascade ne fassent pas partie de la même sous- étape de calcul.Cette caractéristique permet d'obtenir un bon équilibre entre les différentes sous-étapes de calcul, et ainsi d'optimiser la fréquence de fonctionnement de l'implémentation associée.
Selon une caractéristique particulière, le nombre de transitions ayant le même noeud d'arrivée est égal à quatre, l'opération de comparaison/sélection étant décomposée en trois opérateurs élémentaires de comparaison/sélection à deux opérandes, résultant pour chacun des opérandes de l'opération de comparaison/sélection en une cascade de deux opérateurs élémentaires successifs, et le nombre K d'étapes de mémorisation dans la boucle de récursion est égal à deux.
L'utilisation d'un code à quatre branches par noeud permet de construire des turbo codes très efficaces. L'invention est particulièrement bien adaptée dans ce cas car elle permet d'obtenir une augmentation de la fréquence d'un facteur deux par rapport à l'état de l'art.
Selon une caractéristique particulière, dans le cas d'un treillis à quatre branches par noeud et K=2, le positionnement des deux étapes de mémorisation est choisi de telle sorte que le premier des opérateurs élémentaires de comparaison/sélection de chacune desdites cascades est décomposé en une comparaison élémentaire suivie d'une sélection élémentaire et que le positionnement des deux étapes de mémorisation est choisi de telle sorte que: la première sous-étape de calcul regroupe notamment l'ensemble desdites comparaisons élémentaires desdits premiers opérateurs élémentaires de comparaison/sélection; la seconde sous-étape de calcul regroupe notamment l'ensemble desdites sélections élémentaires desdits premiers opérateurs élémentaires de comparaison/sélection, ainsi que l'ensemble des seconds opérateurs élémentaires de comparaison/sélection; Cette caractéristique permet d'obtenir le meilleur équilibre entre les deux sous-étapes de calcul, dans le cas d'un treillis à quatre branches par noeud d'arrivée, en particulier, dans le cas où l'opération de normalisation/saturation est située en amont des opérations d'addition de métrique de branche.
Selon un autre aspect de la présente invention, un second procédé de décodage d'un code convolutif est proposé, suivant un algorithme de Viterbi ou un algorithme de type Aller-Retour BCJR opérant sur le treillis représentatif du code composé de N+1 étages de h noeuds chacun, mettant en oeuvre pour chaque étage une étape de calcul d'une nouvelle métrique de noeud associée à chaque noeud. Cette étape de calcul est identique pour chacun des noeuds et comprend principalement les fonctions calculatoires séquentielles suivantes: une opération dite opération d'addition de métrique de branche, consistant, pour chacune des M transitions entre ledit noeud, dit noeud d'arrivée, et le noeud précédent, dit noeud de départ, en une addition de la métrique de noeud du noeud de départ, dite métrique de départ, à une métrique de branche; cette opération résultant en autant de métriques concurrentes que de transitions, une opération dite de comparaison/sélection dont les opérandes sont les métriques concurrentes résultant de ladite opération d'addition de métrique de branche; le résultat étant une nouvelle métrique de noeud.
En outre, les différentes étapes de calcul de métriques de noeud sont réalisées par récurrence, chacune des étapes de récursion comprenant une étape de mémorisation des métriques de noeud résultant desdites fonctions calculatoires, afin d'être utilisées récursivement lors de la prochaine étape de récursion.
Ce procédé est caractérisé en ce que: Une boucle de récursion dite métaboucle de récursion est formée par le regroupement de J étapes de récursions, J étant au moins égal à deux, mises en série de telle sorte que les métriques de noeud résultant de l'étape de récursion j (0<_jSJ 1) mémorisées après les fonctions calculatoires de ladite étape de récursion, sont utilisées comme métriques de départ par l'étape de récursion j' = j+l (modulo J), J sections de treillis distinctes sont traitées simultanément par ladite méta-boucle de récursion, suivant un principe de multiplexage temporel: o chacune des J étapes de récursion de la méta-boucle de récursion sont actives simultanément et traitent respectivement une étape de chacune des J sections de treillis distinctes.
o pour chacune des J sections de treillis, J étapes successives sont effectuées séquentiellement par la méta-boucle de récursion en mettant en oeuvre successivement lesdites J étapes de récursion.
Ce procédé utilise le principe de multiplexage temporel de plusieurs sections de treillis de l'invention, en conjonction avec une méta-boucle de récursion comprenant plusieurs étapes de récursion. Cette méta-boucle peut être mise en oeuvre par une mise en série de plusieurs modules de récursion.
Ce procédé permet de réaliser des dispositifs comprenant plusieurs unités de récursions Aller et Retour et donc d'augmenter le débit. Les avantages par rapport aux autres techniques de turbo décodage haut débit (présenté sur la figure 14) sont présentés dans la description de la figure 16.
Selon une caractéristique particulière, les deux aspects de l'invention peuvent être combinés. Cette caractéristique permet de benéficier des avantages liés à chacun des aspects de l'invention.
Avantageusement, les sections de treillis multiplexées entre elles sont des sections distinctes du même code.
Avantageusement, les sections de treillis multiplexées correspondent à des treillis indépendants résultant d'un découpage du bloc de données à coder en autant de sous-blocs codés indépendamment par un code convolutif circulaire. 10 1J
Les procédés et dispositifs proposés par l'invention sont particulièrement pertinents dans le cadre du décodage itératif d'un turbo code. Avantageusement, le nombre S de sections de treillis multiplexées est identique pour la récusion Aller et la récursion Retour, et est identique pour chacune des itérations de décodage.
Selon une caractéristique particulière, chacune des S sections de treillis est en outre décomposée en fenêtres de treillis successives et l'algorithme Aller-Retour est décomposé en autant de récursions élémentaires Aller et Retour sur chacune desdites fenêtres.
Cette caractéristique permet de réduire la taille de la mémoire des métriques de noeud utilisées par le calcul d'information a posteriori et extrinsèque.
Selon une caractéristique particulière, pour chacune des fenêtres, la récursion Retour précéde la récursion Aller, - les mémoires de noeuds Retour sont mémorisées au long de la fenêtre, afin d'être utilisées, lors de la récursion Aller de la même fenêtre, pour effectuer les calculs des informations extrinsèques correspondantes; - la récursion Retour de la fenêtre suivante est effectuée simultanément avec la récursion Aller de la fenêtre courante; Cette caractéristique permet aux récursions Aller et Retour d'être effectuées simultanément et optimise la taille de mémoire de métriques de noeud.
Selon une caractéristique particulière, pour chacune des fenêtres, une récursion Retour et une récursion Aller sont effectuées simultanément; Chacune des fenêtres est en outre décomposée en deux moitiés de fenêtre,30 le procédé est de plus caractérisé en ce que: 20 les métriques de noeud Aller de la première moitié de la fenêtre sont mémorisées; les métriques de noeud Retour de la seconde moitié de la fenêtre sont mémorisées; le calcul d'information extrinsèque est effectué à partir de: o pour la première moitié de la fenêtre, les métriques Aller mémorisées, et les métriques Retour concurrentes courantes, o pour la seconde moitié de la fenêtre, les métriques Retour mémorisées, et les métriques Aller concurrentes courantes; Cette caractéristique présente l'avantage de réduire la latence liée au traitement de la totalité de la section et augmente ainsi le débit d'une itération de décodage.
Selon une caractéristique particulière, le nombre K d'étapes de 15 mémorisation dans chacune des boucles de récursion Aller et Retour est égal à deux, résultant en un multiplexage temporel de deux sections, et que: la première (resp. seconde) moitié de fenêtre de la récursion Aller de la première section de treillis et la seconde (resp. première) moitié de fenêtre de la récursion Aller de la seconde section de treillis sont effectuées simultanément selon le principe de multiplexage temporel; la seconde (resp. première) moitié de fenêtre de la récursion Retour de la première section de treillis et la première (resp. seconde) moitié de fenêtre de la récursion Retour de la seconde section de treillis sont effectuées simultanément selon le principe de multiplexage temporel; le calcul de l'ensemble des informations extrinsèques de la première (resp. seconde) fenêtre est effectué lors de la seconde moitié de la récursion Aller de la première (resp. seconde) 30 fenêtre; 25 Cette caractéristique permet au dispositif correspondant d'utiliser un unique module de calcul d'information extrinsèque, affecté alternativement à chaque cycle de traitement à une fenêtre de chaque section, réduisant ainsi la complexité d'implémentation.
Selon une caractéristique particulière, les métriques de début de fenêtre des récursions Retour sont initialisées à l'aide de la possibilité de chargement d'une des étapes de mémorisation de la récursion Retour, et utilisant comme métrique Retour de début de récursion les métriques Retour de fin de récursions Retour de la fenêtre suivante résultant de l'itération de décodage précédente.
Cette caractéristique permet d'éviter d'effectuer un prologue avant chacune des fenêtres permettant aux métriques de noeud de converger, et présente une dégradation de performance négligeable.
Selon une caractéristique particulière, un nombre P de paires de récursions Aller - Retour est mis en oeuvre simultanément, chacune desdites paires de récursions traitant simultanément s sections de treillis distinctes suivant ledit principe de multiplexage temporel, résultant en un total de P*S sections de treillis distinctes traitées simultanément.
La mise en parallèle des paires de récursions Aller-Retour permet d'augmenter le débit de décodage.
L'invention concerne également les dispositifs associés aux procédés décrits ci-dessus, ainsi que les sytèmes mettant en oeuvre ces procédés et dispositifs, et notamment les circuits intégrés, les programmes informatiques, le code de programmation d'un circuit programmable FPGA.
Les avantages et caractéristiques de l'invention mentionnés ci-dessus, ainsi que d'autres, apparaîtront plus clairement à la lecture de la description détaillée des modes particuliers de réalisation, donnés à titre non limitatifs. La description se réfère aux figures jointes, parmi lesquelles: - la Figure 1 représente plusieurs étages d'un treillis binaire à 4 noeuds comprenant M = 2 branches par noeud.
la Figure 2 représente un étage de treillis duo-binaire 8 noeuds comprenant M= 4 branches par noeud.
- la Figure 3 représente le séquencement temporel d'un algorithme à fenêtre glissante.
- la Figure 4 représente le dispositif permettant le calcul d'un étage de métriques de noeud dans la boucle de retour, pour un treillis quelconque.
la Figure 5 représente le détail de la boucle de retour de la figure 4, correspondant à un seul noeud, clans le cas d'un treillis binaire à m = 2 branches.
la Figure 6 représente le détail de la boucle de retour de la figure 4, correspondant à un seul noeud, dans le cas d'un treillis à m = 4 branches.
la Figure 7 représente une mise en oeuvre de l'invention, appliqué à un treillis à m- 4 branches pour laquelle K = 2 étapes de mémorisation. la Figure 8 représente une mise en oeuvre de l'invention, appliqué à un treillis binaire à m = 2 branches pour laquelle K = 2 étapes de mémorisation.
- la Figure 9 représente les chronogrammes des métriques associés à la mise en oeuvre de l'invention suivant les figures 7 ou 8.
la Figure 10 représente le dispositif mettant en oeuvre une méta-boucle de récursion avec J= 2 étages de treillis successifs.
la Figure 11 représente une architecture de décodeur à sorties pondérées de type BCJR mettant en oeuvre une paire de récursions Aller-Retour.
la Figure 12 représente le séquencement temporel d'un algorithme sliding window modifié suivant une mise en oeuvre particulière de l'invention.
la Figure 13 représente les chronogrammes des métriques associés à la mise en oeuvre de l'invention suivant la figure 12.
- la Figure 14 représente une architecture de décodeur à sorties pondérées de type BCJR à P = 2 paires de récursions Aller-Retour.
la Figure 15 représente le séquencement temporel d'un algorithme sliding window modifié suivant une mise en oeuvre particulière de l'invention comprenant P = 2 paires de récursions Aller-Retour.
la Figure 16 représente une architecture de décodeur à sorties pondérées de type BCJR à P = 2 paires de récursions Aller-Retour selon la caractéristique de l'invention décrite en figure 10 pour laquelle J = 2 étages de treillis sont contenus dans la méta-boucle de récursion. la Figure 17 représente le séquencement temporel d'un algorithme sliding window modifié suivant la mise en oeuvre particulière de l'invention décrite en figure 16.
la Figure 18 représente le chronogramme des métriques associé à la mise en oeuvre de l'invention suivant la figure 17.
la Figure 19 représente le séquencement temporel d'un algorithme à fenêtre glissante, selon une caractéristique particulière de l'invention, et avec K = 2 étapes de mémorisation dans la boucle de récursion.
la Figure 20 représente une architecture de décodeur à sorties pondérées de type BCJR à P = 1 paire de récursions Aller-Retour suivant la caractéristique de l'invention décrite en figure 19.
Un treillis est une représentation graphique d'une chaîne (ou processus) de Markov. Les chaînes de Markov, bien connues de l'homme du métier sont utilisées pour modéliser des processus dans lesquels l'état courant d'un système à l'instant t dépend uniquement de l'état passé à l'instant t-1. Par exemple, la succession des états d'un code convolutif peut être modélisée par une chaîne de Markov.
Une chaîne de Markov est un processus aléatoire qui à chaque instant peut prendre plusieurs états possibles. Ces états sont représentés par des noeuds dans le treillis. L'évolution du processus à partir d'un état à l'instant courant vers un autre état à l'instant suivant définit un ensemble de transitions possibles. Une transition entre deux états est représentée par une branche reliant les deux noeuds correspondants dans le treillis.
Un étage de treillis est définit comme l'ensemble des h noeuds correspondants aux h états possibles à un instant donné du processus markovien. Un treillis est alors composé d'un ensemble d'étages successifs, ainsi que l'ensemble des transitions possibles entre les noeuds d'un étage et les noeuds de l'étage suivant. Dans le cas d'un code convolutif, le processus est invariant dans le temps. Le treillis est donc constitué d'étages identiques. On se placera en général dans le cas d'un codage d'un bloc de N symboles. Le treillis du code convolutif correspondant comporte donc N+1 étages et N ensembles de branches.
Les symboles entrant dans le codeur sont notés {uk}, k=0 à N-1. Chacun des symboles est un élément d'un corps fini de type GF(2) ou GF(2m) . On parlera d'un code binaire si les symboles uk sont binaires, Le. appartenant à GF(2), et de code duo-binaire si les symboles uk appartiennent à GF(4).
On associe à chaque noeud une métrique appelée métrique de noeud. De même, à chaque branche, on associe une métrique de branche dont la valeur est déterminée par les caractéristiques de la transition et des informations a priori disponibles sur le symbole associé.
Le calcul d'un étage de treillis correspond aux calculs des métriques de noeud pour l'étage considéré à partir de métriques de noeud précédentes dans le treillis ainsi que des métriques de branche correspondantes.
La figure 1 présente un treillis à h 4 noeuds, et M = 2 branches quittant chaque noeud. A chacun des 4 noeuds possibles 100, 101, 102 et 103 sont associées les branches sortantes 1001 et 1002, 1011 et 1012, 1021 et 1022, 1031 et 1033 respectivement. Le treillis est constitué de N+ 1 étages de treillis 10, 11, 12, 13,..., 14 et 15. Le premier (10) et le dernier (15) étage correspondent respectivement à l'état initial et final du processus de Markov représenté par le treillis. Dans le cas où le treillis représente un code convolutif, ces étages correspondent respectivement à l'état initial et l'état final du codeur.
Une section de treillis est définie comme étant un sous-ensemble d'étages successifs du treillis. Le sous-ensemble constitué des étages 10, 11 et 12 correspond à une section (18) de treillis constituée de 3 étages. De même le sous-ensemble constitué des étages 12, 13 à 14 et 15 correspond à une section (19) de treillis distincte.
La figure 2 présente une section d'un treillis comportant h = 8 snoeuds et M = 4 branches arrivant et partant de chaque noeud. Ce treillis représente les états et les transitions possibles d'un code convolutif à symboles dans GF(4) ou code duo-binaire. Chaque branche quittant un noeud correspond à une valeur de symbole possible. Ainsi, les 4 branches pour chaque noeud correspondent aux 4 combinaisons possibles pour les 2 bits constituant le symbole: 00, 01, 10 et 11.
L'algorithme BCJR ou Aller-Retour est un algorithme à décision pondérée qui produit pour chaque symbole des probabilités a posteriori. Cet algorithme bien connu de l'homme du métier est généralement implémenté sous sa forme logarithmique où les multiplications sont simplifiées en additions. Cependant il subsiste un opérateur difficile à implémenter: le logarithme d'une somme d'exponentielle. Cet opérateur peut toutefois être décomposé comme suit: ln(ez + ey) = max(x, y) + ln(1 + e-l"l) (1) Le second terme de l'expression peut être aisément implémenté à l'aide d'une table (Look-Up Table). On parle alors de l'algorithme Log-MAP. On peut également l'omettre, au prix d'une dégradation de performance. Cet algorithme simplifié est alors appelé Max-Log-MAP.
Dans la suite de la description de l'invention, l'algorithme Aller-Retour est directement décrit sous cette forme simplifiée. L'algorithme étant bien connu de l'homme du métier pour le cas des codes convolutifs binaires, nous le décrivons ici sous la forme plus générale de codes convolutifs à symboles dans GF(2m). Chaque symbole peut donc être représenté par m bits, dits bits d'information. Le code produit des symboles dits codés appartenant à GF(2"). Ces symboles sont donc représentés par n bits, dits bits codés. Dans le cas d'un code systématique, les m premiers bits parmi les n bits codés correspondent aux m bits d'information. Le rendement intrinsèque (avant un éventuel poinçonnage) est de R=m/n. Le codage d'un bloc consiste à coder une séquence de N symboles d'informations UO 1 = {uk}k=oN 1 en une séquence de N symboles codés V N-1={Vk}k=o..N 1 Après transmission sur un canal bruité et démodulation, l'entrée du décodeur 10 consiste en une séquence de n*N logarithmes de rapport de vraisemblance (LLR) correspondant au bloc de bits codés: {rk(i)}, k=O..N-1, i=0..n-1 A chaque branche reliant un noeud de départ s' et un noeud d'arrivée s correspond un symbole d'information supposé u, ainsi qu'un symbole codé supposé v. Le calcul d'une métrique de branche Ck(s',$) correspond alors à un produit scalaire entre le symbole reçu rk et la valeur du symbole codé v. Dans le cas d'un décodage itératif, on ajoute à cette métrique de branche une information a priori pk (u) fournie par un autre module non détaillé ici. n-1
Ck (S', S) = Ev(i) . rk(i) + pk(u) (2) i=0 La récursion Aller consiste à calculer les métriques de noeud Aller de façon récursive, pour chaque étage k de 1 à N. A l'étage de treillis k, le calcul de la métrique Aller du noeud s, c (s), est effectué en utilisant les métriques de branche ek_1(s',$) suivant l'équation: 1 ak (s) = ma)(ak-1 (s') + ck-1 (s, s)) (3) où s' représente l'ensemble des antécédents de s, c'est à dire l'ensemble des noeuds connectés aux branches arrivant sur le noeud s. La récursion est initialisée à un état équiprobable par ao (s) - 0 pour tous les noeuds s.
La récursion Retour consiste à calculer les métriques de noeud Retour de façon récursive, pour chaque étage de k = N-1 à 0. A l'étage k, le calcul de la métrique Retour du noeud s, fk(s), est effectué en utilisant les métriques de branche ck(s,s') suivant l'équation r: bk(s) = max(bk+l (s) + Ck (S, S)) (4) où s' représente l'ensemble des noeuds suivants de s c'est à dire l'ensemble des noeuds connectés aux branches partant du noeud s. La récursion est initialisée à 5 un état équiprobable par bN (s) = 0 pour tous les noeuds s.
Ces différentes métriques (Aller, Retour et de branche) sont combinées pour produire une information a posteriori (APP) pour chaque symbole possible. Comme le code utilise des symboles éléments de GF(2m), il y a 2m informations a posteriori {APPk (u)1=0 données par l'équation suivante.
APPk (u) = max(ak (s)+ck(s,s')+bk+l(s')) (, s) (5) uk =u Dans le cas d'un décodage itératif, on produit une information extrinsèque ek(u) pour chaque symbole u possible, en soustrayant de l'information APP l'information a priori reçue ainsi que la contribution de l'observation faite sur le symbole lui-même: n 1 ek(u) = APPk (u) pk (u) l v(i) rk (i) (6) ,=o La décision concernant le symbole émis est effectuée en cherchant le 15 symbole ayant l'information a posteriori maximale.
Une implémentation directe de l'algorithme Aller-Retour consiste à effectuer dans un premier temps une des récursions, par exemple la récursion Retour, sur l'ensemble du treillis. Les métriques produites sont stockées dans une mémoire. Dans un second temps la récursion Aller est effectuée. Les informations APP sont produites au fur et à mesure de la récursion Aller, en utilisant les métriques Retour lues de la mémoire.
Cette solution requiert une mémoire très importante pour mémoriser l'intégralité des N étages de métriques de noeud Retour avant de commencer la récursion Aller. La latence est également importante, car la récursion Aller ne peut débuter qu'après la fin des N étages de la récursion Retour.
Afin de réduire la taille de la mémoire et la latence de décodage, des algorithmes à fenêtres glissantes sont utilisés dans l'état de l'art. Ces algorithmes découpent la trame en plusieurs fenêtres de L symboles. L'algorithme Aller-Retour est effectué successivement sur chacune des fenêtres. La taille de la mémoire est ainsi ramenée à L. De même, la latence est diminuée car la récursion Aller peut commencer après le calcul des L premiers étages de la récursion Retour.
De nombreuses variantes d'algorithmes Aller-Retour à fenêtre glissante existent. Elles mettent en oeuvre généralement plusieurs récursions Aller et Retour qui travaillent simulanément sur des fenêtres successives. Elles diffèrent notamment par l'ordonnancement des calculs, la taille de la mémoire et la façon de gérer les initialisations des récursions.
La figure 3 décrit une possibilité de réalisation d'un algorithme AllerRetour à fenêtre glissante. Cette solution est l'une de celles utilisées par la suite pour illustrer la présente invention et ses différentes variantes. Les récursions Aller et Retour correspondant à un décodage de l'ensemble du treillis sont représentées. On se placera dans le cadre général d'un décodage itératif de plusieurs codes concaténés, de type turbo code, dont au moins un est représenté par un treillis. On parlera d'une itération de décodage pour désigner le déroulement d'un algorithme de décodage pour chacun des codes constituant le turbo code. Cet exemple d'algorithme à fenêtre glissante n'est pas limitatif et les techniques proposées dans la présente invention s'appliquent de manière générale à de nombreux algorithmes Aller-Retour ou Aller-Retour à fenêtre glissante.
sur cette représentation, l'axe des albscisses représente le temps en nombre de cycles. L'axe des ordonnées représente l'indice de l'étage de treillis, de 0 à N. On suppose ici que chacune des récursions Aller ou Retour peut effectuer l'ensemble des calculs d'un étage de treillis en une unité temporelle appelé cycle.
L'algorithme utilise 8 fenêtres 31 à 38. Pour chaque fenêtre, une récursion Retour est effectuée avec mémorisation des métriques de noeud dans une mémoire (représenté par la surface hachurée horizontal 39). Lors de la récursion Aller, les métriques de noeud Aller sont combinées avec les métriques de noeud Retour lues de la mémoire pour produire les informations APP.
La récursion Retour de chaque fenêtre est initialisée par une distribution uniforme lors de la première itération de décodage ou, pour les autres itérations, par les métriques Retour correspondantes de l'itération précédente. Par exemple la métrique Retour de la fenêtre 34 est initialisé par la métrique finale Retour de la fenêtre 35. Dans le cas d'un code circulaire, la métrique initiale de la dernière fenêtre 38 est initialisée par la métrique finale de la première fenêtre 31.
De même, pour les récursions Aller, l'initialisation de la première fenêtre 31 est effectuée par une distribution uniforme pour la première itération, ou pour les autres itérations, par la valeur finale de la récursion Aller de la fenêtre 38 produite à l'itération précédente. Les récursions des autres fenêtres n'ont pas besoin d'être initialisées et la récursion Aller s'effectue en continu de l'étage 0 à l'étage N-1.
Cet algorithme à fenêtre glissante nécessite N+L cycles pour traiter un treillis de N+l étages.
La figure 4 présente une réalisation possible du calcul d'un Etage de Métriques de Noeud (EMN) Aller ou Retour. Les métriques de noeud courantes sont mémorisées dans une unité de mémorisation 41. Cette unité de mémorisation est constituée d'un registre synchrone qui transfert les données présentes en entrée sur la sortie lors d'un front d'horloge. La valeur de la sortie est maintenue entre les fronts d'horloge, réalisant ainsi la fonction de mémorisation. Cette unité de mémorisation peut être chargée par des métriques de noeud externes 47 par l'intermédiaire des unités de chargement 42 qui effectuent la sélection entre les métriques de noeud externes et les métriques de noeud issues du calcul courant. Les différentes unités de chargement 42 sont commandées de manière identique par une commande de sélection 48. Les métriques de noeud suivantes 491, .. ., 49i, ..., 49h sont calculées à partir des métriques de noeud courantes mémorisées dans 41. Un réseau cablé 43 connecte l'unité (le mémorisation 41 avec les unités de calculs 44 et effectue les permutations des métriques de noeud suivant les connections du treillis. Les unités de calcul 44 réalisent le calcul des métriques de noeud suivantes (equation (3) ou (4)) à partir des métriques de noeud sortant du module 43 et des métriques de branche 45.
Le module de normalisation 46 permet de normaliser entre elles les métriques de noeud par addition ou soustraction à chacune d'entre elles d'une grandeur identique. Cette étape n'a pas d'influence sur les performances de l'algorithme mais est nécessaire pour borner la dynamique des nombres. Une technique bien connue de l'homme du métier consister à comparer les métriques de noeud à un seuil. Lorsque toutes les métriques sont supérieures à ce seuil, ce dernier est retranché de toutes les métriques. En choisissant un seuil égal à une puissance de 2 supérieure à l'écart maximal entre les métriques, ce calcul s'effectue simplement par un ET logique entre tous les bits de poids forts des métriques. Puis un OU EXCLUSIF entre le résultat et les bits de poids forts permet de soustraire ce seuil, si nécessaire. Une autre technique de normalisation consiste à effectuer régulièrement la soustraction de la métrique minimale à l'ensemble des métriques.
Selon d'autres variantes, l'étape de normalisation peut être effectuée après l'étape de mémorisation 41 et avant le réseau cablé 43.
La figure 5 présente une portion de la boucle de retour de la figure 4 pour un treillis avec M = 2 branches par noeud, tel que présenté sur la figure 1. Seule la partie relative au calcul d'une métrique de noeud est représentée. L'unité de mémorisation 50 est consituée d'un registre qui mémorise la métrique de noeud.
L'opération de chargement avec sélection de la métrique de noeud suivante 511 ou de la métrique de noeud à charger 512 est effectuée par le module 51. Les signaux de commande de chargement ne sont pas représentés sur cette figure.
Le calcul de la métrique de noeud 511 comprend les étapes suivantes: addition des métriques de noeud précédentes 521 et 531 avec les métriques de branche 531 et 532 respectivement par les unités 52 et 53 respectivement.
comparaison des 2 métriques de noeud concurrentes 541 et 542 et sélection d'une d'entre elles 543 par l'unité de comparaison/sélection 54, selon un critère de maximum, comme indiqué dans les équations (3) et (4). Une variante de l'algorithme Max-Log-MAP permet de remplacer les maximum par des minimum dans les equations (3) et (4).
- normalisation des métriques de noeud par le module 55. Ce module prend en compte l'ensemble des métriques de noeud. Dans le cas de la variante normalisation par dépassement de seuil , il comprend l'étape de comparaison avec le seuil pour chaque métrique de noeud, puis l'étape de soustraction du seuil pour chaque métrique de noeud.
Dans le cadre d'une implémentation sur un circuit synchrone (programmable ou dédié), le temps de propagation dans la boucle de retour correspond à la somme des temps de propagation des opérations successives suivantes: addition, comparaison / sélection, normalisation, chargement, ainsi que du temps de prépositionnement (setup) du registre de la mémoire. Le temps de prépositionnement d'un registre correspond à la durée minimale durant laquelle la donnée doit être présente et stable sur l'entrée du registre avant le front actif de d'horloge qui commande le registre.
La figure 6 présente une portion de la boucle de retour en regard de la figure 4 pour un treillis avec M = 4 branches par noeud, tel que présenté sur la figure 2. L'operation de comparison / sélection pour un treillis à m = 4 branches par noeud nécessite un arbre comprenant 3 opérateurs élémentaires de comparaison / sélection à 2 entrées (66, 67 et 68). Ces opérateurs réalisent deux cascades de G = 2 opérateurs successifs: opérateurs 66 et 68 ainsi que 67 et 68.
seul le calcul et la mémorisation relative à une métrique de noeud sont représentés. L'unité de mémorisation 60 est consituée d'un registre qui mémorise la métrique de noeud. L'opération de chargement avec sélection de la métrique de noeud suivante 611 ou de la métrique de noeud à charger 612 est effectué par le module 61. Les signaux de commande de chargement ne sont pas présentés sur cette figure.
Le calcul de la métrique de noeud suivante 611 comprend les étapes suivantes: addition de chacune des métriques de noeud précédentes 622, 632, 642 et 652 avec la métrique de branche correspondante 621, 631, 641, et 651, respectivement, par les unités 62, 63, 64 et 65 respectivement.
premier étage de comparaisons / sélections des résultats issus des additions (661, 662, 671 et 672) , deux à deux, par les modules 66 et 67. Ce premier étage fournit deux métriques de noeud concurrentes 681 et 682.
deuxième étage de comparaison / sélection des métriques de noeud concurrentes 681 et 683 pour fournir la métrique de noeud survivante 663.
normalisation de la métrique 663 par le module 69. Dans le cas de la variante normalisation par dépassement de seuil , il comprend d'une part une étape de comparaison avec le seuil pour chacune des métriques de noeud survivantes 663, et d'autre part une étape de soustraction conditionnelle du seuil.
Ainsi, le temps de propagation dans la boucle de retour correspond à la somme des temps de propagation des opérations successives suivantes: addition, comparaison / sélection, comparaison /sélection, normalisation, chargement, ainsi que du temps de prépositionnement du registre. Ce temps de propagation est plus important que dans le cas d'un treillis à m = 2 branches par noeud en regard de la figure 5.
C'est ce temps de progagation qui limite la fréquence maximale du circuit implémentant un algorithme Aller-Retour. On parle de chemin critique pour désigner le temps de propagation le plus long du circuit. Afin de réduire ce chemin critique, il est avantageux de séquencer les opérations en deux étapes successives, sur deux cycles de traitement. Concrètement, cette séparation s'obtient en insérant un registre supplémentaire (on parle de barrière de registres). La position de la barrière de registre dépend du circuit visé pour réaliser l'implémentation.
En particulier, sur une technologie de circuit programmable (FPGA), il est bien connu de l'homme du métier que l'opération de comparaison / sélection s'effectue par une soustraction puis une sélection par un multiplexeur. Ainsi l'addition et la comparaison sont calculées en cascade et le temps de propagation à travers les deux opérateurs n'est que très légèrement supérieur au temps de propagation à travers un seul opérateur. En effet, le temps de propagation correspond à la propagation de la retenue des bits de poids faible vers les bits de poids fort. La soustraction qui suit une addition peut alors commencer les calculs des bits de poids faibles avant que le résultat de l'addition des bits de poids fort ne soit fourni. Par contre, pour la sélection qui suit la comparaison, il est nécessaire d'attendre la propagation de la retenue complète dans la soustraction. Il n'est donc pas judicieux d'insérer un registre entre l'addition et la comparaison. En effet, cette dernière solution consiste à concevoir un opérateur ad hoc d'addition / soustraction contenant un registre interne positionné de telle sorte que tous les temps de propagation de tous les chemins soient identiques. Elle est complexe à mettre en oeuvre. Pour cette raison, il n'est pas aisé d'insérer une barrière de registres dans la boucle de retour pour un treillis à deux branches par noeud décodé par l'algorithme Max-Log-MAP.
Par contre, pour un treillis à M = 4 branches par noeud, G = 2 étages de comparaisons / sélections se succèdent en cascade et l'insertion d'unebarrière de registre entre les deux étages est peu complexe à réaliser et permet de réduire le temps de propagation de manière satisfaisante.
La figure 7 présente une mise en oeuvre particulière de l'invention. Cette 30 figure reprend le calcul de métrique de noeud de la figure 6. Une unité de mémorisation (barrière de registres) 702 est insérée entre les deux étages de comparaisons / sélections résultant en K = 2 étapes de mémorisation. Deux sections de treillis distinctes sont traitées simultanément par les deux sous-modules de calcul mis en évidence par l'étape de mémorisation supplémentaire.
La mise en oeuvre du multiplexage sera illustrée en détails notamment par les figures 9 et 12.
Selon une autre variante, l'unité de mémorisation peut également être placée entre la comparaison et la sélection du premier étage 76 et 77.
De manière générale, et en fonction des contraintes liées à la technologie du circuit d'une part, et à la nature précise des opérations à effectuer d'autre part (algorithme de type Max-Log-MAP ou Log-MAP, nombre de bits de quantification,...) le choix du placement des deux registres et du module de normalisation 79 peut être optimisé de manière ad-hoc, l'objectif étant de minimiser conjointement les deux temps de propagation entre les registres 701 et 702 d'une part et entre les registres 702 et 701 d'autre part, de telle sorte que le chemin critique (le maximum des deux temps de propagation) soit le plus petit possible. De cette façon, la fréquence de fonctionnement est maximale et peut être environ doublée par rapport à la solution de l'état de l'art contenant un seul registre dans la boucle (figure 6).
Les avantages particuliers mentionnés ci-dessus sont généralisable à tous les treillis à M3 branches par noeud car un tel treillis comporte au moins un chemin critique comportant une cascade d'au moins deux opérateurs élémentaires de comparaison / sélection. Pour un treillis à Mbranches, l'opération de comparaison / sélection de M métriques de noeud concurrentes nécessite un arbre de M 1 opérateurs élémentaires de comparaison/sélection résultant, pour chaque opérande, en une cascade de G opérateurs élémentaires successifs, G étant égal à log2(M'), M' étant la puissance de 2 la plus proche de M tel que M' M. L'insertion de G-1 barrières de registres entre les opérateurs élémentaires permet de réduire le chemin critique. Le placement des G barrières de registres peut avantageusement séparer chacune des cascades de telle sorte que deux opérateurs successifs soient toujours séparés par un registre, cette solution aboutit à un équilibre entre les temps de propagation simple à mettre en oeuvre. Cependant le choix de placement des barrières de registres peut être différent, en fonction de la technologie et de la nature précise des opérations à effectuer, l'objectif étant toujours de minimiser le chemin critique.
La complexité additionnelle de cette solution provient des registres supplémentaires. Il est à noter que dans le cadre d'une implémentation sur un circuit FPGA d'un turbo décodeur, ces registres sont en général disponibles car le taux d'utilisation des registres est inférieur à celui de la logique combinatoire, donnant lieu à des ressources non utilisées. L'ajout d'une barrière de registres dans la boucle de retour ainsi que l'ajout d'autres barrières de registres dans le circuit afin d'augmenter la fréquence maximale de fonctionnement permet d'utiliser au mieux les ressources du FPGA.
Dans le cadre d'un circuit spécifique ASIC, l'insertion d'une barrière de registres à l'intérieur de la boucle de retour reste pertinente. Néanmoins, la complexité additionnelle due à l'ajout de barrières de registres est importante. Le placement d'une barrière de registres après le premier étage de comparaisons / sélections est efficace, car le nombre de métriques de noeud à mémoriser est inférieur. En effet, l'insertion d'une barrière de registres entre la comparaison et la sélection du premier étage aurait pour conséquence de nécessiter la mémorisation du double de métriques de noeud.
Dans le cas d'un algorithme Aller Retour de type log-MAP, les opérations de comparaison / sélection comportent également une addition par un facteur correctif Les principes et avantages de la présente invention s'appliquent également de manière pertinente à ce cas particulier.
La figure 8 présente une portion de la boucle de retour de la figure 4 pour un treillis avec M = 2 branches par noeud, et modifiée suivant le principe de l'invention, en introduisant K = 2 étapes de mémorisation. L'algorithme Log- MAP est illustré ici, l'opération de compaison / sélection élementaire comprennant en outre une opération d'addition d'un facteur correctif tel que décrit par l'équation (1). L'opération élémentaire de comparaison / sélection comprend alors les étapes suivantes: comparaison des deux métriques de noeud concurrentes 841 et 842 par le module 84 - sélection de la métrique de noeud 843 par le module 84 et production de la différence entre les 2 métriques de noeud concurrentes 844 mémorisation de la métrique de noeud 843 et de la différence 844 par l'unité de mémorisation 85.
calcul d'un terme correctif 871 en fonction de la différence 851 par le module 87 addition du terme correctif 871 avec la métrique de noeud 852 par le module 86 pour obtenir la métrique de noeud 843 destinée à être normalisée Selon une autre variante, l'unité de mémorisation peut également être placée entre la comparaison et la sélection de l'opération 84.
L'insertion d'une barrière de registre présentée sur cette figure est peu complexe à réaliser et permet de réduire le temps de propagation de manière satisfaisante. Deux sections de treillis distnctes sont traitées simultanément par les deux sous-modules de calcul mis en évidence par l'étape de mémorisation supplémentaire. La mise en oeuvre du multiplexage sera illustrée en détails notamment par les figures 9 et 12.
La figure 9 présente les chronogrammes des calculs caractéristiques de l'invention et de son principe de multiplexage temporel. Il sera fait référence aux éléments de la figure 7, le principe similaire en est aisément déduit pour la figure 8. Les différentes étapes de calcul de deux étages de treillis indépendants sont effectuées alternativement sur chaque module de calcul. A chaque module de calcul ou de mémorisation de la figure 7 est associé un chronogramme, représentant l'évolution au cours des cycles de sa valeur de sortie. Le circuit fonctionne de manière synchrone, i.e. la valeur d'entrée d'un registre est transférée sur la sortie du registre sur un front d'horloge correspondant au début d'un cycle, et cette valeur est maintenue pendant toute la durée du cycle. Les modules de calcul sont purement combinatoires, Le. les valeurs de sortie sont modifiées (si les valeurs d'entrée changent) après un certain temps de propagation. Afin de simplifier les chronogrammes, ces temps de propagation ne sont pas représentés.
Sur ces chronogrammes, la présence d'une donnée relative à la première section de treillis est indiquée par un fonds blanc, tandis que les cases à points noirs correspondent à la seconde section de treillis. Une donnée relative à la première (resp. seconde) section de treillis est suffixée de l'exposant 1 (resp. 2). L'indice de ces variables indique l'étage relatif dans la section correspondante. On note par ailleurs (afin d'alléger les notations, on omet l'indice du noeud s considéré, qui n'est pas utile à la compréheension) : 15: la métrique de noeud Aller de la section i, étage j {d}:: les métriques de noeud Aller de la section i, étage j correspondantes aux noeuds d'origine {d,}: les métriques de noeud concurrentes intermédiaires (résultant du premier étage de sélection) de la section i, étage j {cj}: les métriques de branche de la section i, étage j.
Le détail des chronogrammes est le suivant: - 91: les métriques de branches nécessaires au calcul des métriques de noeud concurrentes (i.e. les données d'entrée 721, 731, 741 et 751 de la figure 7).
92: les métriques de noeud concurrentes Aller résultant du premier étage Aller de comparaisons / sélections (Le. les métriques mémorisées dans le registre 702 de la figure 7).
93: la métrique de noeud initiale de la récursion (Le. la métrique de noeud présentée sur l'entrée de chargement 712 de la figure 7).
2878385 33 94: la métrique de noeud Aller courante (Le. la métrique de noeud mémorisée dans le registre 701 de la figure 7).
Les indices spécifiant l'étage j sont des indices relatifs à la section de treillis correspondante, ainsi par exemple dans le cas d'un treillis de longueur N divisé en deux sections: section 1 [0; N/2] et section 2 [N/2; N]. La métrique de noeud Aller de l'étage de treillis N/2 (en absolu) de la seconde section est notée ao. Les chronogrammes représentés correspondent à une boucle de récursion Aller. Le cas Retour est similaire.
Au cours du cycle 0, la métrique de noeud initiale clic, relative à la première section de treillis est présentée sur l'entrée de chargement (93) . Cette valeur est chargée dans le registre (84 sur la figure 8) au cycle 1. Pendant le cycle 1, les métriques de branche Pol sont calculées et disponibles pour être combinées avec les métriques de noeud courantes {al, } (en sortie du réseau cablé 43 de la figure 4) afin de produire les métriques de noeud concurrentes. Un premier étage de comparaisons / sélections (76 et 77 sur la figure 7) permet de sélectionner 2 métriques de noeud concurrentes {â,' } mémorisées au cycle suivant (92).
Au cycle 2, la métrique de noeud initiale relative à la seconde section de treillis ad' est chargée dans le registre (94). Un déroulement similaire, avec un cycle de retard, des calculs de métriques branches, de l'addition et du premier étage de comparaisons / sélections fournit les métriques de noeud concurrentes {â,2} au cycle 3.
Au cours du cycle 2, le calcul du second étage de comparaisons / sélections ainsi que la normalisation sont effectuées pour la première section de treillis. La métrique de noeud suivante qui en résultent, a; est mémorisée en début de cycle 3 (94).
Au cours du cycle 3, le deuxième étage de métriques de noeud de la seconde section de treillis est calculé pendant qu''un nouvel étage recommence pour la première section. Les calculs se poursuivent ainsi de suite en continu sur toute la longueur L de chacune des deux sections de treillis.
La figure 10 présente une mise en oeuvre du second aspect de l'invention. Une méta-boucle de récursion est créée par la connexion en série de J = 2 modules EMN identiques 101 et 102 de calcul de métriques de noeud tels que décrits sur la figure 4.
Pour alléger le schéma, les fonctions de normalisation des métriques de noeud, le chargement des métriques de noeud initiales ainsi que la mémorisation des métriques de noeud courantes par un registre sont regroupées en une seule unité 1011 (et 1021 pour le second étage). Les unités de calculs de métriques de noeud des deux étages alimentées par leurs métriques de branche respectives peuvent contenir chacun K = 1 (figure 5 ou figure 6) ou K = 2 étapes de mémorisation (figure 6 ou figure 8). Deux réseaux cablés 1012 et 1022, qui ne sont pas nécessairement identiques sont également utilisés. Dans certains cas, il peut être intéressant d'utiliser une organisation différente des métriques de noeud dans les unités de mémorisation 1011 et 1021.
La figure 11 présente une réalisation possible d'une implémentation d'un algorithme Aller-Retour à fenêtre glissante pour décodage itératif de turbo codes convolutifs comme présenté sur la figure 3 et comprenant P = 1 paire de récursions Aller-Retour. Les fonctions réalisant l'entrelacement et le désentrelacement des données, bien connues de l'homme du métier, n'ont pas été représentées pour simplifier. On se place dans le cas d'un turbo code convolutif à concaténation parallèle de deux codes, afin de simplifier la description. Les principes de l'invention et leur application est toutefois généralisable aisément à d'autres codes, notamment à une concaténation en série, ainsi que dans le cas d'une concaténation de plus de deux codes.
Les symboles 113 codés et bruités par le canal de transmission sont mémorisés dans la mémoire intrinsèque 111. La mémoire 112 permet de mémoriser les informations extrinsèques: elle contient alternativement les informations extrinsèques produites par les deux demi-itérations de décodage (une demi-itération correspond au décodage d'un des deux codes constitutifs du turbo- code). On rappelle qu'on parlera d'information a priori pour une information utilisée par le décodage courant, et a posteriori pour une information produite.
Les symboles bruités ainsi que les informations a priori sont lus des mémoires 111 et 112 et utilisés pour calculer les métriques de branche par le module 114. On suppose que ce module fournit les métriques de branche nécessaires aux modules 115, 116 et 118, sans délai et dans l'ordre souhaité. Sa réalisation est bien connue de l'homme du métier, elle ne sera pas détaillée davantage.
Les récurions Aller et Retour sont réalisées par les unités Etage de Métriques de Noeud (EMN) 115 et 116 respectivement, qui implémentent chacun un seul étage de récursion dans leur boucle de retour respective. Les métriques de noeud Retour calculées par 116 sont mémorisées dans la mémoire 117, appelée mémoire fenêtre Retour. Ces métriques de noeud sont lues de la mémoire 117 par le module 118 qui réalise le calcul de l'information a posteriori. Le module 118 a pour entrées, par ailleurs, les métriques de noeud calculées par le module EMN Aller 115, ainsi que les métriques de branche correspondantes (fournies par le module MB 114). Ce module calcule en outre l'information extrinsèque 120, mémorisée dans la mémoire 112, ainsi que, si nécessaire, la décision dure 119 pour le symbole considéré Les unités de récursions Aller et Retour peuvent mettre en oeuvre une seule ou plusieurs étapes de mémorisations comme présentées sur les figures 6 et 7 respectivement pour un treillis à m = 4 branches par noeud, et sur les figures 5 et 8 respectivement pour un treillis à m = 2 branches par noeud. Dans le cas d'une seule étape de mémorisation, correspondant à l'état de l'art (figures 5 et 6), le séquencement des opérations d'un algorithme à fenêtre glissante est présenté sur la figure 3. Dans le cas où les récursions intègrent deux étapes de mémorisation comme proposé par l'invention (figures 7 et 8), deux sections de treillis sont décodées simultanément et un séquencement possible pour l'algorithme à fenêtre glissante est illustré sur la figure 12. Un extrait des chronogrammes correspondants est représenté en figure 13.
La figure 12 présente un exemple de séquencement des opérations d'un algorithme Aller-Retour à fenêtre glissante selon l'invention et selon les dispositifs présentés sur les figures 7 et 8.
Les boucles de retour des récursions Aller et Retour mettent en oeuvre K = 2 étapes de mémorisation. Ainsi, deux sections de treillis sont décodées simultanément suivant un principe de multiplexage temporel (détaillé sur la figure 13). On suppose, sans perte de généralité, que N est multiple de 8 et que les deux sections de treillis sont choisies comme suit: la première section 121 contient les étages de treillis 0 à N/2, la seconde 122 contient les étages N/2 à N. Chaque section est décodée par un algorithme Aller-Retour à fenêtre glissante décomposé en 4 fenêtres de taille L=N/8.
Les récursions Aller et Retour sont représentées par des lignes en pointillés, car elles sont décodées simultanément suivant un principe de division temporelle comme présenté sur la figure 8: chaque unité de calcul est affectée alternativement au décodage de l'une des K = 2 sections de treillis. Ainsi, une récursion de L symboles nécessite 2.L cycles d'horloge.
Les métriques de noeud Retour sont initialisées, en début de segment, avec des valeurs provenant de l'itération précédente comme décrit en regard de la figure 3. Pour les récursions Aller, seule les métriques de noeud initiales de la première fenêtre de chaque section de treillis proviennent de l'itération précédente (à l'exclusion de la première section de treillis dans le cas d'un code non circulaire). Pour les autres fenêtres, la récursion Aller s'effectue en continu et aucune initialisation des métriques de noeud n'est nécessaire.
Comparé à l'état de l'art de la figure 3, le nombre de cycles nécessaire au décodage simultané des deux sections de treillis est N + 2L + 1 pour N données décodées. La fréquence de fonctionnement étant plus élevée (typiquement un facteur 2) le débit de cette implémentation est plus important.
La figure 13 détaille un extrait des chronogrammes associés à l'algorithme Aller-Retour à fenêtre glissante en regard de la figure 12 et détaille le principe de multiplexage temporel dans le cas où la boucle de retour comprend K = 2 étapes de mémorisation. Ce principe est décrit en référence à la figure 7. Le procédé présenté sur la figure 8 peut être mis oeuvre suivant la même technique de multiplexage temporel.
Les signaux représentés sur les chronogrammes correspondent à une récursion Retour sur une fenêtre courante (chronogrammes 132 et 133) et une récursion Aller sur la fenêtre précédente (chronogrammes 134 et 135), ainsi que le calcul de l'information extrinsèque correspondante chronogrammes 136 et 137).
Les notations sont identiques à celles de la figure 9. On note par ailleurs: b'j: la métrique de noeud Retour de la section i, étage j : information extrinsèque produite relative à la section de treillis i et à l'étage j.
Le détail des chronogrammes est le suivant: 132: les métriques de noeud concurrentes Retour résultant du premier étage Retour de comparaisons / sélections et travaillant sur la fenêtre courante (Le. les données en sortie du module 702 de la figure 7 correspondant au module EMN Retour 116 de la figure 11).
133: les métriques de noeud courantes Retour, résultant du second étage Retour de comparaisons / sélections et travaillant sur la fenêtre courante (Le. les données en sortie du module 701 de la figure 7 correspondant au module EMN Retour 116 de la figure 11).
134: les métriques de noeud concurrentes Aller résultant du premier étage Aller de comparaisons / sélections et travaillant sur la fenêtre précédente (Le. les données en sortie du module 702 de la figure 7 correspondant au module EMN Aller 115 de la figure 11).
135: les métriques de noeud courantes Aller, résultant du second étage Aller de comparaisons / sélections et travaillant sur la fenêtre précédente (Le. les données en sortie du module 701 de la figure 7 correspondant au module EMN Retour 115 de la figure 11).
136: les métriques de noeud Retour lues de la mémoire fenêtre Retour 117 de la figure 11. Ces métriques correspondent à la fenêtre précédente.
137: les informations extrinsèques produites en combinant les métriques de noeud Aller 135 avec les métriques de noeud Retour 136.
Le calcul des métriques de branche n'est pas présenté sur cette figure. On suppose que les différentes métriques de branche nécessaires sont calculées et disponibles sans délai pour les différents modules qui en ont besoin.
Au cycle 1, les métriques de noeud courantes Aller 135 et Retour 133 relatives à la première section de treillis sont chargées avec des métriques initiales. La métrique de noeud Retour correspondant à la première section est lue de la mémoire (117 de la figure 11) pour être combinée avec la métrique Aller et produire une information extrinsèque relative à la première section de treillis.
Au cycle 2, les calculs du premier étage de comparaisons / sélections sont effectués pour la première section de treillis, tandis que les mêmes opérations effectuées au premier cycle pour cette première section sont effectuées pour la seconde section. La métrique de noeud Retour correspondant à la seconde section de treillis est lue de la mémoire pour être combinée avec la métrique Aller et produire une information extrinsèque relative à la seconde section de treillis.
Au cycle 3, le second étage de comparaisons / sélections est effectué pour la première section et simultanément le premier étage de comparaisons / sélections pour la seconde section de treillis est effectué.
Les calculs se poursuivent ainsi de suite en alternance sur les deux sections de treillis, de manière continue sur toute la longueur de la fenêtre, pour traiter les L étages de chaque fenêtre de chaque section. A la fin du traitement d'une fenêtre, la fenêtre suivante de chacune des sections est traitée, sans aucun cycle d'attente.
La figure 14 présente un dispositif mettant en oeuvre P = 2 paires de récursions Aller Retour suivant l'invention, dans le cadre d'un décodage itératif de turbo codes. Une paire de récursions Aller-Retour est appelée processeur. On qualifiera ce type de disposif, lorsque P>1, de dispositif multi-processeur parallèle de turbo-décodage. Ce dispositif est décrit dans le cas où K = 2 étapes de mémorisation sont mises en oeuvre clans chacune des récursions Aller et Retour.
Cette architecture multi-processeur (deux processeurs dans l'exemple) est qualifiée de parallèle car les processeurs 140 et 141 qui la composent n'échangent pas de données autres que les informations extrinsèques d'une demi-itération à la suivante, et sont donc indépendants.
Comme P = 2 processeurs réalisent les accès aux mémoires simultanément, il est nécessaire de scinder les mémoires intrinsèques et extrinsèques en P = 2 bancs mémoires chacun: 142 et 143 d'une part et 144 et 145 d'autre part, chaque banc mémoire étant accessible indépendamment de l'autre. Une organisation mémoire est associée à ces bancs mémoire de sorte à garantir l'absence de conflit d'accès (il y a conflit d'accès lorsque les deux processeurs souhaitent accéder simultanément à deux données différentes clans le même banc), et ce pour les deux demi-itérations du turbo décodage successivement. De telles organisations mémoire dépendent généralement de l'entrelaceur du turbo code. Plusieurs techniques atteignant cet objectif sont disponibles dans l'état de l'art. Par example un entrelaceur respectant la séparation pair/impair , c'est à dire que l'ensemble des adresses entrelacées de nombres pairs sont impairs et réciproquement. Une organisation mémoire respectant l'absence de conflits qui en découle est la suivante: les mémoires 142 et 144 contiennent les données relatives aux symboles d'adresse paire, tandis que les mémoires 143 et 145 les données relatives aux symboles d'adresse impaire.
Comme les deux processeurs lisent alternativement des symboles mémorisés dans les deux bancs mémoires. il est nécessaire d'insérer des réseaux 30 de permutation 147 et 148. De même en sortie des processeurs, les informations extrinsèques subissent la permutation inverse 146 afin d'être mémorisées dans leur banc respectif. La nature précise de ces permutations dépend de la fonction d'entrelacement choisi, et ne sera pas plus détaillée. L'invention s'applique de manière générale dans le cas d'organisations mémoire quelconques et les permutations associées.
La figure 15 présente le séquencement de décodage d'un treillis, en regard de l'architecture présentée sur la figure 14. Chacun des P = 2 processeurs comprend K = 2 étages de mémorisations dans les boucles de retour Aller et Retour. Ainsi, S = P.K = 4 sections de treillis indépendantes 150, 151, 152, 153 sont décodées simultanément.
Sur chacune des S sections, un algorithme Aller-Retour à fenêtre glissante tel que celui décrit sur la figure 3 est appliqué. Les métriques de noeud Retour sont initialisées à chaque début de fenêtre à partir des métriques de noeud Retour finales de l'itération précédente, si elles existent (sinon une initialisation par défaut est effectuée). Pour les métriques de noeud Aller, seules les métriques de noeud aux débuts de chaque section sont initialisées.
Les sections 150 et 152 sont décodées simultanément, c'est à dire que les mêmes unités fonctionnelles dans les processeurs 140 et 141 de la figure 14 sont affectées aux sections de treillis 150 et 152 (respectivement) de manière synchronisée (en même temps). Il en est de même pour les sections de treillis 151 et 153. Le déphasage de traitement entre les sections 150 et 152 d'une part, et 151 et 153 d'autre part, est de 1 cycle (154). Les sections 150 et 151 (resp. 152 et 153) sont décodées par le processeur 140 (resp. 141). En fin d'itération, les sections 151 et 153 sont complètement décodées avec un cycle de retard 155 par rapport aux sections 150 et 152.
Pour décoder N étages de treillis, 2(N / 4 + L)+1 cycles sont nécessaires.
La figure 16 présente une architecture bi-processeur série de turbodécodage. P = 2 processeurs sont implémentés: le processeur 0 (resp. 1) regroupe les modules MBO (1660), EMN ALLER 0 (1600), EMN RETOUR 0 (1620) et MEMOIRE RETOUR 0 (1670) (resp. MB 1 (1661), EMN ALLER 1 (1601) , EMN RETOUR 1 (1621) et MEMOIRE RETOUR 1 (1671).
L'ensemble des deux modules EMN ALLER 1 (1601) et 0 (1600) (dans cet ordre) forme une méta-boucle de récursion regroupant la concaténation en série de J= 2 étages tel que décrit en Fig 10. Il en est de même pour l'ensemble formé des modules EMN RETOUR 0 (1620) et 1 (1621) (dans cet ordre). On qualifiera donc cette architecture multi-processeur série. Chaque module EMN implémente une ou deux étapes de mémorisation interne comme présenté sur les figures 6 et 7, respectivement pour un treillis duo-binaire, et sur les figures 5 et 8, respectivement pour un treillis binaire.
Ainsi les méta-boucles de récursion Aller et Retour implémentent chacune plusieurs étages de treillis simultanés comme présentés sur la figure 10. Dans le cas présenté dans cette figure, chaque boucle de retour intègre J = 2 étages de treillis: 1600 et 1601 pour la boucle de retour Aller, 1620 et 1621 pour la boucle Retour.
Les étages de métriques de noeuds EIVIN 1600, 1601, 1620 et 1621 peuvent être chargés par des métriques de noeud initiales par l'intermédiaire des entrées 161 et 163. Les métriques de noeud initiales 161 et 163 sont alors chargées dans l'un des étages 1600 ou 1601, 1620 ou 1621 respectivement. Le choix est effectué par des signaux de commande non représentés sur cette figure.
De même que pour l'architecture multi-processeur parallèle présentée sur la figure 14, deux bancs mémoires sont nécessaires pour les mémoires intrinsèques (1650 et 1651) et extrinsèques (1640 et 1641).
Selon une réalisation particulière, chaque étage de treillis des boucles de retour comporte K = 2 étapes de mémorisation. Ainsi, S = K.P = 4 sections de treillis différentes sont multiplexées suivant une technique de division temporelle.
Afin de simplifier la description de cette architecture bi-processeur série, on considère qu'une seule étape de mémorisation est mise en oeuvre dans chaque étage de treillis (les modules EMN correspondent à ceux décrits en figures 5 ou 6). Ainsi, deux sections de treillis sont multiplexées sur chaque méta-boucle de Retour.
Afin d'illustrer le fonctionnement de cette architeture, l' entrelaceur du turbo code vérifie la règle pair/impair et l'organisation mémoire suivante est utilisée: les mémoires 1640 et 1650 contiennent les symboles d'indicespairs, tandis que les mémoires 1641 et 1651 contiennent les symboles d'indices impairs.
Deux unités de calcul de métriques de branche 1660 et 1661 sont utilisées pour calculer les métriques de branche des symboles pairs et impairs respectivement.
Les unités de mémorisation internes aux unités de calcul des métriques de noeud Aller 1600 et 1601 contiennent respectivement des métriques de noeud d'étages pairs et impairs, à chaque instant du déroulement de l'algorithme.
Les unités de mémorisation internes aux unités de calcul des métriques de noeud Retour 1620 et 1621 contiennent respectivement des métriques de noeud d'étages pairs et impairs, à chaque instant du déroulement de l'algorithme.
Les mémoires fenêtre Retour 1670 et 1671 mémorisent les métriques de noeud des étages pairs et impairs respectivement.
Le module 1680 (resp. 1681) de calcul des décisions dures et des informations extrinsèques des symboles pairs (resp. impairs) combine les métriques de noeud Aller paires (resp. impaires) produites par l'étage Aller 1600 (resp 1601), les métriques de noeud Retour impaires (resp. paires) lues de la mémoire fenêtre Retour 1671 (resp. 1670) avec les métriques de branche des symboles pairs (resp. impairs) produites par le module 1660 (resp. 1661). Les informations extrinsèques produites sont mémorisées dans la mémoire 1640 (resp.
1641).
L'architecture multi-processeur série proposée sur cette figure ne nécessite aucun réseau de permutation comme c'est le cas pour l'architecture multiprocesseur parallèle décrite sur la figure 14. La permutation est effectuée naturellement par la connection série entre les deux étages des boucles de retour.
Ainsi cette architecture est moins complexe que l'architecture multiprocesseur parallèle.
Cette architecture ainsi que les avantages associés se généralisent à une architecture multi-processeur implémentant plus que J = 2 étages de treillis dans 5 les méta-boucles de retour Aller et Retour.
La figure 17 présente le séquencement des opérations de l'algorithme Aller-Retour à fenêtre glissante pour l'architecture multi-processeur série en regard de la figure 16. Ce séquencement suit une architecture dans laquelle chacun des modules EMN (1600, 1601, 1620, 1621 de la figure 16) contient K = 2 étapes de mémorisation internes, suivant par exemple celui de la figure 7, dans l'exemple du code duo-binaire. Ainsi, S = 4 sections de treillis distinctes 170, 171, 172 et 173 sont multiplexées suivant une technique de division temporelle (détaillée sur la figure 18).
Sur chacune des S sections, un algorithme Aller-Retour à fenêtre glissante est appliqué. Les initialisations des métriques de noeuds s'effectuent de manière analogue à ce qui a été décrit précédemment pour la figure 12. Il est également possible, selon le découpage en sections qui est adopté, que certaines métriques Retour de début de fenêtre aient été actualisées à l'itération courante (par la récursion Retour effectuée sur la fenêtre adjacente) avant l'initialisation de début de fenêtre. Dans ce cas, l'initialisation utilisera avantageusement ces valeurs actualisées.
Les sections 170, 171, 172 et 173 sont décodées chacune avec un cycle de retard l'une par rapport à l'autre. Ces cycles de retard proviennent des 4 étapes de mémorisations dans les méta-boucles de retour Aller et Retour. Ces cycles de retard se retrouvent en fin de décodage des sections.
Pour décoder N symboles, 2(N/ 4 + L) + 3 cycles sont nécessaires.
La figure 18 présente le séquencement des opérations pour l'algorithme 30 Aller-Retour à fenêtre glissante décrit sur la figure 12 en utilisant l'architecture multi-processeur série décrite sur la figure 16. Pour simplifier la description, chacun des modules EMN (1600, 1601, 1620, 1621 de la figure 16) comporte K = 1 étape de mémorisation des métriques de noeud, suivant par exemple celui de la figure 6, dans l'exemple du treillis duo-binaire, ou de la figure 5 pour le treillis binaire. Ainsi, S = 2 sections de treillis sont décodées simultanément suivant la technique de division temporelle.
Les récursions Aller et le calcul des informations extrinsèques sont calculées pour les fenêtres courantes de chaque section de treillis, tandis que les récursions Retour sont calculées pour les fenêtres suivantes desdites sections.
Les chronogrammes représentés sur la figure correspondent aux signaux suivants: - 181 (resp. 182) : les métriques de noeud courantes Retour impaires (resp. paires), résultant de l'étage impair (resp. pair) de la méta-boucle de récursion Retour et travaillant sur la fenêtre suivante, Le. sortie du module 1621 (resp. 1620) de la Fig 16.
183 (resp. 186) : les métriques de noeud Aller paires (resp. impaires) résultant de l'étage pair (resp. impair) Aller et travaillant sur la fenêtre courante, Le. sortie du module 1600 de la figure 16 (resp. 1601) 184 (resp. 187) : les métriques de noeud Retour impaires (resp. pares) lues de la mémoire 1671 (resp. 1670) mémorisant les métriques de noeud Retour impaires (resp. paires).
(resp. 188) : les informations extrinsèques paires (resp. impaires) produites en combinant les métriques de noeud Aller paires 183 (resp.
impaires 186) avec les métriques de noeud Retour impaires 184 (resp. 25 paires 187), i.e. sortie du module 1680 (resp. 1681).
Le calcul des métriques de branche n'est pas présenté sur cette figure. On suppose corne précédemment que les différentes métriques de branche nécessaires sont calculées et disponibles sans délai pour les différents modules qui en ont besoin. Les notations adoptées sont similaires aux figures 9 et 13.
Au cours du premier cycle, les métriques de noeud courantes Aller paire 183 (resp. Retour paire 182) sont chargées par des métriques initiales relatives à la première section de treillis alo et bIL. Les métriques de noeud Retour impaires 184 b11 correspondantes à la première section sont lues de la mémoire pour être combinées avec les métriques Aller paires 183 alo et produire une information extrinsèque paire elo 185 relative à l'étage 0 de la première section de treillis. D'autre part les métriques de noeud Aller et Retour impaires ail b1L_1 sont calculées par EMN ALLER 1 er EMN RETOUR 1 respectivement.
Au cycle 2, les mêmes calculs sont effectués par les mêmes modules, pour 10 les symboles de la deuxième section du treillis: production de ego en combinant C12o et b21 calcul de agi b2L_1 par EMN ALLER 1 er EMN RETOUR 1 simultanément, les calculs supplémentaires suivants sont effectués pour la première section: - production de el l en combinant ai 1 et b12 calcul de aie b1L_2 par EMN ALLER 0 er EMN RETOUR 0 Les calculs se poursuivent de manière analogue, avec une production à chaque cycle, d'une information extrinsèque et d'un nouvel étage de métriques Aller et Retour, pour chacune des sections de treillis.
La figure 19 présente un algorithme Aller-Retour à fenêtre glissante selon une caractéristique particulière de l'invention. S = 2 sections de treillis sont multiplexées entre elles. Ce séquencement peut être mis en oeuvre par le dispositif décrit sur la figure 20.
Le même algorithme Aller-Retour est appliqué sur les deux sections de treillis 191 et 192, mais avec un décalage 193 de L + 1 cycles. Le même décalage 194 se retrouve également en fin de décodage de chaque section. L'explication de ce décalage est donnée ci-dessous.
Contrairement à l'algorithme à fenêtre glissante de la figure 3, la récursion 30 Aller 195 débute dès le premier cycle sans attendre la fin de la récursion Retour 196. Cet algorithme découpe chaque fenêtre en deux moitiés (la première moitié correspond aux étages 0 à L/2, la seconde aux étages L/2 à L). Cet algorithme est périodique et sa période correspond au décodage d'une fenêtre. La description de cet algorithme est donnée dans un premier temps pour les deux premières demi- périodes 1991 et 1992 de la première section. Pendant la première demi-période 1991, les deux récursions Aller et Retour produisent des métriques de noeud pour les étages de la première et de la seconde moitié fenêtre, respectivement. Ces métriques de noeud sont mémorisées dans des mémoires fenêtres Aller et Retour respectivement. Les deux récursions Aller et Retour se croisent lors du calcul de l'étage L/2. Puis, lors de la seconde demi-période, les métriques de noeud concurrentes Aller (resp. Retour) produites par la récursion Aller (resp. Retour) sont combinées avec les métriques de branche et les métriques de noeud Retour (respectivement Aller) correspondantes lues de la mémoire fenêtre Retour (resp. Aller), pour produire les informations extrinsèques des symboles 0 à L/2-1 de la seconde moitié de fenêtre (symboles L/2 à L-1 de la première moitié de fenêtre, respectivment). Les fenêtres suivantes sont décodées successivement de manière identique.
Sans utiliser la technique de multiplexage temporel décrite dans la présente invention, le décodage de deux sections de treillis par cet algorithme nécessite deux unités de calcul de métrique de branche et deux unités de calcul des décisions et des informations extrinsèques. La présente invention propose d'appliquer avantageusement le multiplexage temporel proposé à cet algorithme Aller-Retour à fenêtre glissante pour lequel la période est égale à 2L cycles, en utilisant l'architecture présentée dans la figure 20, comprenant notamment: une seule unité de calcul des métriques de branche 202 calculant alternativement à chaque cycle les métriques de branche pour unités de récursions Aller et Retour 203 et 204, respectivement. Pendant la première (seconde) demi-période, les récursions 195 et 196 (respectivement 195 et 196) de la section 191 (respectivement 192) sont alimentées première demi-période, et pour la seconde section 192 pendant la seconde demi-période.
une unité de récursion Aller 203 comprenant K = 2 étapes de mémorisation dans la boucle de retour (Le. analogue à celui de la figure 7 dans le cas d'un treillis duo-binaire) calcule en multiplexage temporel les métriques de noeud Aller. Au cours de la première (seconde) demi-période sont calculées les métriques de noeuds Aller de la première (resp. seconde) moitié de fenêtre de la première section 191 en alternance à chaque cycle avec les métriques de noeuds Aller 197 de la seconde (resp. première) moitié de fenêtre de la seconde section 192.
- une unité de récursion Retour 204 comprenant K = 2 étapes de mémorisation dans la boucle de retour (Le. analogue à celui de la figure 7 dans le cas d'un treillis duo-binaire) calcule en multiplexage temporel les métriques de noeud Retour. Au cours de la première (seconde) demipériode sont calculées les métriques de noeuds Retour 196 de la seconde (resp. première) moitié de fenêtre de la première section 191 en alternance à chaque cycle avec les métriques de noeuds Aller 198 de la première (resp. seconde) moitié de fenêtre de la seconde section 192.
- une seule unité de calcul des informations extrinsèques et des décisions dures 209 qui pendant la première (seconde) demi-période calcule alternativemement à chaque cycle les informations relatives à la première moitié et seconde moitié de la première (resp. seconde) section 191 (resp. 192).
Une seule unité de calcul des métriques de branche 202 et une seule unité de calcul des informations extrinsèques 209 sont utilisées. Ces unités sont partégées entre les deux sections 191 et 192. Ce partage des ressources explique les décalages 193 et 194.
Cette architecture comprend en outre une mémoire contenant les informations intrinsèques 200 une mémoire contenant les informations extrinsèques 201 une unité de mémorisation des métriques de noeud Aller 205.
une unité de sélection 207 entre les métriques de noeud Aller lues de la mémoire fenêtre Aller 205 ou Retour 206.
une unité de sélection 208 entre les métriques de noeud concurrentes Retour produites par l'unité de récursion Retour 206 et les métriques de noeud concurrentes Aller produites par l'unité de récursion Aller 203.
Le nombre de cycles nécessaires pour décoder les N étages de treillis est de N + L + 1, soit une réduction de L cycles par rapport à l'algorithme Aller-Retour présenté sur la figure 12.
De plus, ce séquencement permet de réduire la taille de la mémoire par deux puisque à chaque instant, L étages de métriques de noeud Aller ou Retour au maximum ont besoin d'être mémorisé pour l'ensemble des deux sections de treillis. Dans le séquencement de la figure 12, la mémoire nécessaire est de 2L étages de métriques de noeud.

Claims (1)

  1. 49 Revendications
    1. Procédé de décodage d'un code convolutif suivant un algorithme de Viterbi ou un algorithme de type Aller-Retour BCJR opérant sur le treillis représentatif du code composé de N+l étages de h noeuds chacun, mettant en oeuvre pour chaque étage une étape de calcul d'une nouvelle métrique de noeud associée à chaque noeud. Cette étape de calcul est identique pour chacun des noeuds et comprend principalement les fonctions calculatoires séquentielles suivantes: une opération dite opération d'addition de métrique de branche, consistant, pour chacune des M branches entre ledit noeud, dit noeud d'arrivée, et le noeud précédent, dit noeud de départ, en une addition de la métrique de noeud du noeud de départ, dite métrique de départ, à une métrique de branche; cette opération résultant en autant de métriques concurrentes que de branches, une opération dite de comparaison/sélection dont les opérandes sont les métriques concurrentes résultant de ladite opération d'addition de métrique de branche; le résultat étant une nouvelle métrique de noeud.
    En outre, les différentes étapes de calcul de métriques de noeud sont réalisées par récurrence, chaque récursion comprenant une étape de mémorisation des métriques de noeud résultant desdites fonctions calculatoires, afin d'être utilisées récursivement lors de la prochaine étape. Ladite étape de mémorisation comprend en outre une possibilité de chargement de valeurs d'initialisation. L'ensemble composé des fonctions calculatoires et de l'étape de mémorisation correspond à une boucle de récursion.
    Le procédé est caractérisé en ce que: la boucle de récursion comprend au moins une étape de mémorisation supplémentaire, résultant en un total de K étapes de mémorisation, K étant au moins égal à deux, faisant ainsi apparaître K sous-étapes de calcul séparées par les étapes de mémorisation.
    K sections de treillis distinctes sont traitées simultanément par la boucle de récursion ainsi modifiée, suivant un principe de multiplexage temporel caractérisé par: o les K sous-étapes de calcul sont actives simultanément et traitent respectivement des données relatives à chacune des K sections de treillis distinctes.
    o chaque étape de récursion de chacune desdites sections de treillis est effectuée en K sous-étapes séquentielles mettant en oeuvre successivement lesdites K étapes de mémorisation et lesdites K sous-étapes de calcul.
    2. Procédé selon la revendication 1 caractérisé en ce que l'opération de comparaison/sélection comporte en outre l'addition d'un terme correctif, fonction des différences entre les métriques opérandes, ayant pour but de compenser l'approximation faite par l'opération de comparaison/sélection simple, appliqué au résultat de ladite comparaison/sélection, et en ce que le placement d'au moins une des étapes de mémorisation supplémentaires soit effectué de manière à séparer ladite comparaison/sélection de ladite addition de terme correctif dans deux sous-étapes de calcul distinctes.
    3. Procédé selon l'une des revendications 1 ou 2 caractérisé en ce que l'étape de calcul d'un étage de treillis comporte en outre une opération de normalisation- saturation des métriques de noeud visant à maîtriser la dynamique des nombres, et opérant sur le résultat de ladite opération de comparaison/sélection.
    4. Procédé selon l'une des revendications 1 ou 2 caractérisé en ce que l'étape de calcul d'un étage de treillis comporte en outre une opération de normalisation-30 saturation des métriques de noeud visant à maîtriser la dynamique des nombres, et 10 opérant sur les métriques de noeud issues de la mémorisation des métriques de noeud résultant desdites fonctions calculatoires.
    5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que le nombre de branches M ayant le même noeud d'arrivée soit au moins égal à trois, l'opération de comparaison/sélection étant décomposée en opérateurs élémentaires de comparaison/sélection à deux opérandes, l'opération de comparaison/sélection de M métriques concurrentes nécessitant un arbre d'opérateurs élémentaires de comparaison/sélection résultant pour chacun des opérandes de ladite opération en une cascade d'au maximum G opérateurs élémentaires successifs, G étant égal à log2(M') , M' étant la puissance de 2 la plus proche de M respectant M'?M.
    6. Procédé selon la revendication 5 caractérisé en ce que le nombre K d'étapes de mémorisation dans la boucle de récursion soit supérieur ou égal au nombre maximum G d'opérateurs contenus dans une cascade d'opérateurs élémentaires de comparaison/sélection et dont le positionnement est choisi de telle sorte que: - chaque opérateur élémentaire fasse partie d'une seule des K sous- étape de calcul;deux opérateurs élémentaires faisant partie d'une même cascade ne fassent pas partie de la même sous-étape de calcul 7. Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce que le nombre de branches ayant le même noeud d'arrivée soit égal à quatre, l'opération de comparaison/sélection étant décomposée en trois opérateurs élémentaires de comparaison/sélection à deux opérandes, résultant pour chacun des opérandes de l'opération de comparaison/sélection en une cascade de deux opérateurs élémentaires successifs, et en ce que le nombre K d'étapes de mémorisation dans la boucle de récursion soit égal à deux.
    8. Procédé selon la revendication 7, caractérisé en ce que le premier des opérateurs élémentaires de comparaison/sélection de chacune desdites cascades est décomposé en une comparaison élémentaire suivie d'une sélection élémentaire et que le positionnement des deux étapes de mémorisation est choisi de telle sorte que: la première sous-étape de calcul regroupe notamment l'ensemble desdites comparaisons élémentaires desdits premiers opérateurs élémentaires de comparaison/sélection; la seconde sous-étape de calcul regroupe notamment l'ensemble desdites sélections élémentaires desdits premiers opérateurs élémentaires de comparaison/sélection, ainsi que l'ensemble des seconds opérateurs élémentaires de comparaison/sélection; 9. Procédé de décodage d'un code convolutif suivant un algorithme de Viterbi ou un algorithme de type Aller-Retour BCJR opérant sur le treillis représentatif du code composé de N+1 étages de h noeuds chacun, mettant en oeuvre pour chaque étage une étape de calcul d'une nouvelle métrique de noeud associée à chaque noeud. Cette étape de calcul est identique pour chacun des noeuds et comprend principalement les fonctions calculatoires séquentielles suivantes: une opération dite opération d'addition de métrique de branche, consistant, pour chacune (les M branches entre ledit noeud, dit noeud d'arrivée, et le noeud précédent, dit noeud de départ, en une addition de la métrique de noeud du noeud de départ, dite métrique de départ, à une métrique de branche; cette opération résultant en autant de métriques concurrentes que de branches, une opération dite de comparaison/sélection dont les opérandes sont les métriques concurrentes résultant de ladite opération d'addition de métrique de branche; le résultat étant une nouvelle métrique de noeud.
    En outre, les différentes étapes de calcul de métriques de noeud sont réalisées par récurrence, chacune des étapes de récursion comprenant une étape de mémorisation des métriques de noeud résultant desdites fonctions calculatoires, afin d'être utilisées récursivement lors de la prochaine étape de récursion. Ladite étape de mémorisation comprend en outre une possibilité de chargement de valeurs d'initialisation.
    Le procédé est caractérisé en ce que: Une boucle de récursion dite métaboucle de récursion est formée par le regroupement de J étapes de récursions, J étant au moins égal à deux, mises en série de telle sorte que les métriques de noeud résultant de l'étape de récursion j (KSI--1) mémorisées après les fonctions calculatoires de ladite étape de récursion, sont utilisées comme métriques de départ par l'étape de récursion j' = j+ l (modulo J), J sections de treillis distinctes sont traitées simultanément par ladite méta-boucle de récursion, suivant un principe de multiplexage temporel: o chacune des J étapes de récursion de la métaboucle de récursion sont actives simultanément et traitent respectivement une étape de chacune des J sections de treillis distinctes.
    o pour chacune des J sections de treillis, J étapes successives sont effectuées séquentiellement par la méta-boucle de récursion en mettant en oeuvre successivement lesdites J étapes de récursion.
    10. Procédé selon la revendication 9 caractérisé en ce que chaque étape de récursion de ladite méta-boucle de récursion comprend au moins une étape de mémorisation supplémentaire, résultant en K étapes de mémorisation par étape de récursion, K étant au moins égal à deux, faisant ainsi apparaitre dans chacune des étapes de récursion K sous- étapes de calcul séparées par les étapes de mémorisation. Ainsi J*K sections de treillis distinctes entre elles sont traitées simultanément par la méta-boucle de récursion ainsi modifiée, suivant un principe de multiplexage temporel caractérisé par: les J*K sous-étapes de calcul sont actives simultanément et traitent respectivement des données relatives à chacune desdites J*K sections de treillis distinctes.
    chaque étape de récursion de chacune desdites sections de treillis est effectuée en K sous-étapes séquentielles mettant en oeuvre successivement lesdites K étapes de mémorisation et lesdits K sous-étapes de calcul de l'une des étapes de récursion de ladite méta-boucle de récursion.
    11. Procédé selon l'une quelconque des revendications 1 à 10 caractérisé en ce que les s sections de treillis traitées simultanément correspondent à des sections 15 distinctes d'un même treillis de code convolutif.
    12. Procédé selon l'une quelconque des revendications 1 à 10 caractérisé en ce que les s sections de treillis distinctes traitées simultanément correspondent à des treillis indépendants résultant d'un découpage du bloc de données à coder en 20 autant de sous-blocs codés indépendamment par un code convolutif circulaire.
    13. Procédé selon l'une des revendications 11 ou 12 caractérisé en ce que plusieurs itérations de l'algorithme Aller-Retour soient mises en oeuvre pour décoder un code de type turbo code, et qu'à chacune des itérations, une paire de récursions Aller et Retour soit mise en oeuvre, chacune des récursions Aller et Retour traitant simultamément s sections de treillis distinctes suivant ledit principe de multiplexage temporel.
    14. Procédé selon l'une quelconque des revendications 1 à 13 caractérisé en ce 30 chacune des sections de treillis soit en outre décomposée en fenêtres de treillis 10 successives et que l'algorithme Aller-Retour soit décomposé en autant de récursions élémentaires Aller et Retour sur chacune desdites fenêtres.
    15. Procédé selon la revendication 14 caractérisé en ce que: pour chacune des fenêtres, la récursion Retour précède la récursion Aller, les mémoires de noeuds Retour sont mémorisées au long de la fenêtre, afin d'être utilisées, lors de la récursion Aller de la même fenêtre, pour effectuer les calculs des informations extrinsèques correspondantes; la récursion Retour de la fenêtre suivante est effectuée simultanément avec la récursion Aller de la fenêtre courante; 16. Procédé selon la revendication 14 caractérisé en ce que: pour chacune des fenêtres, une récursion Retour et une récursion Aller sont effectuées simultanément; Chacune des fenêtres est en outre décomposée en deux moitiés de fenêtre, le procédé est de plus caractérisé en ce que: les métriques de noeud Aller de la première moitié de la fenêtre sont mémorisées; - les métriques de noeud Retour de la seconde moitié de la fenêtre sont mémorisées; le calcul d'information extrinsèque est effectué à partir de: o pour la première moitié de la fenêtre, les métriques Aller mémorisées, et les métriques Retour concurrentes courantes, o pour la seconde moitié de la fenêtre, les métriques Retour mémorisées, et les métriques Aller concurrentes courantes; 17. Procédé selon la revendication 16 caractérisé en ce que le nombre K d'étapes de mémorisation dans chacune des boucles de récursion Aller et Retour soit égal à deux, résultant en un multiplexage temporel de deux sections, et que: la première (resp. seconde) moitié de fenêtre de la récursion Aller de la première section de treillis et la seconde (resp. première) moitié de fenêtre de la récursion Aller de la seconde section de treillis sont effectuées simultanément selon le principe de multiplexage temporel; la seconde (resp. première) moitié de fenêtre de la récursion Retour de la première section de treillis et la première (resp. seconde) moitié de fenêtre de la récursion Retour de la seconde section de treillis sont effectuées simultanément selon le principe de multiplexage temporel; le calcul de l'ensemble des informations extrinsèques de la première (resp. seconde) section est effectué lors de la seconde moitié de la récursion Aller de la première (resp. seconde) fenêtre; 18 Procédé selon l'une quelconque des revendications 15 à 17 caractérisé en ce que les métriques de début de fenêtre des récursions Retour sont initialisées à l'aide de la possibilité de chargement d'une des étapes de mémorisation de la récursion Retour, et utilisant comme métrique Retour de début de fenêtre les métriques Retour de fin de fenêtre suivante résultant de l'itération de décodage précédente.
    19. Procédé selon l'une quelconque des revendications 1 à 18 caractérisé en ce que plusieurs itérations de l'algorithme Aller-Retour soient mises en oeuvre pour décoder un code de type turbo code, et qu'à chacune des itérations, un nombre P de paires de récursions Aller -Retour soient mises en oeuvre simultanément, chacune desdites paires de récursions traitant simultanément S sections de treillis 10 15 distinctes suivant ledit principe de multiplexage temporel, résultant en en total de P*S sections de treillis distinctes traitées simultanément.
    20. Dispositif de décodage d'un code convolutif suivant un algorithme de Viterbi ou un algorithme de type Aller-Retour BCJR opérant sur le treillis représentatif du code composé de N+l étages de h noeuds chacun, mettant en oeuvre pour chaque étage le calcul d'une nouvelle métrique de noeud associée à chaque noeud. Ce calcul est identique pour chacun des noeuds et nécessite principalement les moyens de calcul suivants: des moyens dits d'addition de métrique de branche effectuant pour chacune des M branches entre ledit noeud, dit noeud d'arrivée, et le noeud précédent, dit noeud de départ, une addition de la métrique de noeud du noeud de départ, dite métrique de départ, à une métrique de branche, résultant en autant de métriques concurrentes que de branches; des moyens dits de comparaison/sélection dont les opérandes sont les sorties des moyens d'addition de métrique de branche; le résultat étant une nouvelle métrique de noeud.
    un registre réalisant une mémorisation de ladite nouvelle métrique de noeud associée au noeud; ledit registre comprend une possibilité de chargement d'une valeur d'initialisation; Les calculs de métriques de noeud correspondant aux différents étages du treillis sont réalisés par récurrence, les sorties des différents registres de mémorisation sont rebouclées sur les entrées des moyens d'addition de métrique de branche afin d'être utilisées récursivement lors de la prochaine étape, formant une boucle de récursion.
    Le dispositif est caractérisé en ce que: au moins une barrière de registres supplémentaire est insérée dans la boucle de récursion, résultant, pour chaque chemin de données de la boucle de récursion, en un total de K barrières de registres, K étant au moins égal à deux, faisant ainsi apparaître K sous-modules de calcul séparés deux à deux par lesdites barrières de registres.
    K sections de treillis distinctes entre elles sont traitées 5 simultanément par la boucle de récursion ainsi modifiée, suivant un principe de multiplexage temporel caractérisé par: (a) les K sous-modules de calcul sont actifs simultanément et traitent respectivement des données relatives à chacune des K sections de treillis distinctes.
    (b) chaque récursion de chacune desdites sections de treillis est effectuée en K sous-étapes séquentielles mettant en oeuvre successivement lesdites K barrières de registres et lesdits K sous-modules de calcul.
    21. Dispositif selon la revendication 20 caractérisé en ce que le code convolutif fasse partie d'un code construit avec plusieurs codes élémentaires concaténés en série ou en parallèle, dit de type turbo code, le décodage est effectué de manière itérative, chaque itération opérant sur des fenêtres successives du treillis et mettant en oeuvre les modules suivants: un module de récursion Aller constitué de K barrières de registres permettant ledit multiplexage temporel simultané de K sections de treillis distinctes; un module de récursion Retour constitué de K barrières de registres permettant ledit multiplexage temporel simultané de K 25 sections de treillis distinctes; une mémoire contenant les observations issues du canal de transmission, dite mémoire d'observation; une mémoire contenant les informations extrinsèques, dite mémoire d'extrinsèques; - un module de calcul de métriques de branches, effectuant les calculs de métriques de branche pour chacune des deux récursions Aller et Retour, à l'aide de données lues dans les mémoires d'observation et d'extrinsèques; une mémoire de métriques de noeuds Retour, dite mémoire fenêtre Retour, utilisée pour stocker les métriques de noeud Retour issues du module Retour d'une desdites fenêtre; un module de calcul d'information extrinsèque effectuant les calculs nécessaires à la production des informations extrinsèques, à partir des métriques de noeud concurrentes Aller d'une part, et des métriques de noeud Retour, lues dans la mémoire fenêtre Retour d'autre part. Les informations extrinsèques ainsi calculées sont écrites dans la mémoire d'extrinsèques; ce module effectue par ailleurs une prise de décision sur les symboles à décoder; 22. Dispositif selon la revendication 20 caractérisé en ce que le code convolutif fasse partie d'un code construit avec plusieurs codes élémentaires concaténés en série ou en parallèle, dit de type turbo code, le décodage est effectué de manière itérative, chaque itération opérant sur des fenêtres successives du treillis et mettant en oeuvre les modules suivants: - un module de récursion Aller constitué de K barrières de registres permettant ledit multiplexage temporel simultané de K sections de treillis distinctes; un module de récursion Retour constitué de K barrières de 25 registres permettant ledit multiplexage temporel simultané de K sections de treillis distinctes; une mémoire contenant les observations issues du canal de transmission, dite mémoire d'observation; une mémoire contenant les informations extrinsèques, dite 30 mémoire d'extrinsèques; 10 un module de calcul de métriques de branches, effectuant les calculs de métriques de branche pour chacune des deux récursions Aller et Retour, à l'aide de données lues dans les mémoires d'observation et d'extrinsèques; une mémoire de métriques de noeuds Retour, dite mémoire fenêtre Retour, utilisée pour stocker les métriques de noeud Retour issues du module Retour d'une moitié desdites fenêtre; une mémoire de métriques de noeuds Aller, dite mémoire fenêtre Aller, utilisée pour stocker les métriques de noeud Aller issues du module Aller d'une moitié desdites fenêtre; un module de calcul d'information extrinsèque effectuant les calculs nécessaires à la production des informations extrinsèques à partir de: o pour la première moitié de la fenêtre, les métriques de noeud Aller lues dans la mémoire fenêtre Aller, et les métriques Retour concurrentes courantes; o pour la seconde moitié de la fenêtre, les métriques de noeud Retour lues dans la mémoire fenêtre Retour, et les métriques Aller concurrentes courantes; Les informations extrinsèques ainsi calculées sont écrites dans la mémoire d'extrinsèques; ce module effectue par ailleurs une prise de décision sur les symboles à décoder 23: Dispositif selon la revendication 22 caratérisé en ce que: le nombre K de barrières de registre dans chacune des boucles de récursion Aller et Retour soit égal à deux, résultant en un multiplexage temporel de deux sections de treillis caractérisé en outre par une période définie telle que, au cours de la première (respectivement seconde) demi-période, le module de récursion Aller calcule les métriques de noeud des 30 deux récursions Aller desdites sections: les métriques de noeuds 10 15 20 Aller de la première (respectivement seconde) moitié de fenêtre de la première section en alternance à chaque cycle avec les métriques de noeuds Aller de la seconde (respectivement première) moitié de fenêtre de la seconde section; le module de récursion Retour calcule les métriques de noeud des deux récursions Retour desdites sections: les métriques de noeuds Retour de la seconde (respectivement première) moitié de fenêtre de la première section en alternance à chaque cycle avec les métriques de noeuds Retour de la première (respectivement seconde) moitié de fenêtre de la seconde section; le module de calcul d'information extrinsèque calcule alternativement à chaque cycle les informations extrinsèques de la première moitié et seconde moitié de la première (respectivement seconde) section.
    24. Dispositif selon l'une quelconque des revendications 21 à 23 caractérisé en ce que un nombre P, P>1, de paires de modules Aller Retour soient mises en oeuvre simultanément, chacune desdites paires traitant simultanément K sections de treillis distinctes suivant ledit principe de multiplexage temporel, résultant en en total de P*K sections de treillis distinctes traitées simultanément.
    25. Dispositif de décodage d'un code convolutif suivant un algorithme de Viterbi ou un algorithme de type Aller-Retour BCJR opérant sur le treillis représentatif du code composé de N+1 étages de h noeuds chacun, mettant en oeuvre pour chaque étage le calcul d'une nouvelle métrique de noeud associée à chaque noeud. Ce calcul est identique pour chacun des noeuds et est effectué par un module de calcul de métrique de noeud et comprend principalement les moyens de calcul séquentiels suivants: des moyens dits d'addition de métrique de branche effectuant 30 pour chacune des M branches entre ledit noeud, dit noeud 10 d'arrivée, et le noeud précédent, dit noeud de départ, une addition de la métrique de noeud du noeud de départ, dite métrique de départ, à une métrique de branche, résultant en autant de métriques concurrentes que de branches; des moyens dits de comparaison/sélection dont les opérandes sont les sorties des moyens d'addition de métrique de branche; le résultat étant une nouvelle métrique de noeud.
    un registre réalisant une mémorisation de ladite nouvelle métrique de noeud; ledit registre comprend une possibilité de chargement d'une valeur d'initialisation; Le dispositif est caractérisé en ce que: Une boucle de récursion dite méta-boucle de récursion est formée par le regroupement de J modules de calcul de métriques de noeuds, J étant au moins égal à deux, mises en série de telle sorte que les métriques de noeud résultant du module de récursion j (0jSI--1) sont utilisées comme métriques de départ par le module de récursion j' = j+1 (modulo J), J sections de treillis distinctes sont traitées simultanément par ladite méta-boucle de récursion, suivant un principe de 20 multiplexage temporel: o chacun des J modules de récursion de la méta-boucle de récursion sont actifs simultanément et traitent respectivement une étape de chacune des J sections de treillis distinctes.
    o pour chacune des J sections de treillis, J étapes successives sont effectuées séquentiellement par la méta-boucle de récursion en mettant en oeuvre successivement lesdits J modules de récursion.
    26. Dispositif selon la revendication 25 caractérisé en ce que le code convolutif 30 fasse partie d'un code construit avec plusieurs codes élémentaires concaténés en 10 15 série ou en parallèle, dit de type turbo code, le décodage est effectué de manière itérative, chaque itération opérant sur des fenêtres successives du treillis et mettant en oeuvre les modules suivants: J (J 1) modules de récursion Aller formant une métaboucle de récursion Aller; J modules de récursion Retour formant une métaboucle de récursion Retour; une mémoire contenant les observations issues du canal de transmission, dite mémoire d'observation; une mémoire contenant les informations extrinsèques, dite mémoire d'extrinsèques; un ou plusieurs modules de calcul de métriques de branches, effectuant les calculs de métriques de branche pour chacune des J récursions Aller et Retour, à l'aide de données lues dans les mémoires d'observation et d'extrinsèques; J mémoires de métriques de noeuds Retour, dites mémoires fenêtre Retour; la mémoire fenêtre Retour j (j=O..J-1) mémorise les métriques de noeud Retour issues du module Retour j d'une desdites fenêtre; J modules de calcul d'information e2xtrinsèque. Le module de calcul extrinsège j (j=O..J-1) effectuant les calculs nécessaires à la production des informations extrinsèques à partir des métriques de noeud concurrentes Aller issues du module Aller j d'une part, et des métriques de noeud Retour, lues dans la mémoire fenêtre Retour J-1 7j d'autre part. Les informations extrinsèques ainsi calculées sont écrites dans la mémoire d'extrinsèques; ce module effectue par ailleurs une prise de décision sur les symboles à décoder.
FR0412342A 2004-11-19 2004-11-19 Procedes et dispositifs de multiplexage de sections de treillis pour decodage par l'algorithme de viterbi ou aller-retour Pending FR2878385A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0412342A FR2878385A1 (fr) 2004-11-19 2004-11-19 Procedes et dispositifs de multiplexage de sections de treillis pour decodage par l'algorithme de viterbi ou aller-retour

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0412342A FR2878385A1 (fr) 2004-11-19 2004-11-19 Procedes et dispositifs de multiplexage de sections de treillis pour decodage par l'algorithme de viterbi ou aller-retour

Publications (1)

Publication Number Publication Date
FR2878385A1 true FR2878385A1 (fr) 2006-05-26

Family

ID=34953328

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0412342A Pending FR2878385A1 (fr) 2004-11-19 2004-11-19 Procedes et dispositifs de multiplexage de sections de treillis pour decodage par l'algorithme de viterbi ou aller-retour

Country Status (1)

Country Link
FR (1) FR2878385A1 (fr)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0884853A2 (fr) * 1997-06-10 1998-12-16 NEC Corporation Decodeur Viterbi rapide
US20010046269A1 (en) * 2000-01-31 2001-11-29 Alan Gatherer MAP decoding with parallelized sliding window processing
US6516444B1 (en) * 1999-07-07 2003-02-04 Nec Corporation Turbo-code decoder
US6754290B1 (en) * 1999-03-31 2004-06-22 Qualcomm Incorporated Highly parallel map decoder
US6810094B1 (en) * 1998-03-12 2004-10-26 Hitachi, Ltd. Viterbi decoder with pipelined parallel architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0884853A2 (fr) * 1997-06-10 1998-12-16 NEC Corporation Decodeur Viterbi rapide
US6810094B1 (en) * 1998-03-12 2004-10-26 Hitachi, Ltd. Viterbi decoder with pipelined parallel architecture
US6754290B1 (en) * 1999-03-31 2004-06-22 Qualcomm Incorporated Highly parallel map decoder
US6516444B1 (en) * 1999-07-07 2003-02-04 Nec Corporation Turbo-code decoder
US20010046269A1 (en) * 2000-01-31 2001-11-29 Alan Gatherer MAP decoding with parallelized sliding window processing

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
FANUCCI L ET AL: "VLSI design of a high speed turbo decoder for 3rd generation satellite communication", PROC. 9TH INTERNATIONAL CONFERENCE ON ELECTRONICS, CIRCUITS AND SYSTEMS, 15-18, 2002, PISCATAWAY, NJ, USA,IEEE, vol. 2, 15 September 2002 (2002-09-15), pages 509 - 512, XP010614398, ISBN: 0-7803-7596-3 *
LIN H-D ET AL: "Algorithms and architectures for concurrent Viterbi decoding", PROC. INTERN. CONFERENCE ON COMMUNICATIONS, 11 June 1989 (1989-06-11), pages 836 - 840, XP010081184 *
ZHONGFENG WANG ET AL: "Area-efficient high-speed decoding schemes for turbo decoders", IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS IEEE USA, vol. 10, no. 6, December 2002 (2002-12-01), pages 902 - 912, XP002335788, ISSN: 1063-8210 *

Similar Documents

Publication Publication Date Title
JP6858857B2 (ja) 受信機及び復号方法
EP1362447B1 (fr) Procede et systeme de codage-decodage iteratif de flux de donnees numeriques codees par combinaisons spatio-temporelles, en emission et reception multiple
EP0827285B1 (fr) Procédé de transmission de bits d&#39;information avec codage correcteur d&#39;erreurs, codeur et décodeur pour la mise en oeuvre de ce procédé
EP0827284B1 (fr) Procédé de transmission de bits d&#39;information avec codage correcteur d&#39;erreurs, codeur et décodeur pour la mise en oeuvre de ce procédé
FR2810475A1 (fr) Unite de decodage de turbo-code et unite de codage/decodage de turbo-code
EP1332557B1 (fr) Module, dispositif et procede de decodage a haut debit, d&#39;un code concatene
EP0848501A1 (fr) Système et procédé de transmission numérique comportant un code produit combiné à une modulation multidimensionnelle
EP1378089A1 (fr) Procede de codage/decodage d&#39;un flux de donnees numeriques codees abec entrelacement sur bits en emission et un reception multiple en presence d&#39;interference intersymboles et systeme correspondant
FR2675968A1 (fr) Procede de decodage d&#39;un code convolutif a maximum de vraisemblance et ponderation des decisions, et decodeur correspondant.
FR2815199A1 (fr) Procedes de turbocodage circulaire de grande distance minimale, et systemes pour leur mise en oeuvre
FR2776873A1 (fr) Procede de detection d&#39;une sequence de symboles discrets a partir d&#39;un signal d&#39;observation, et processeur de viterbi mettant en oeuvre un tel procede
EP0848524A1 (fr) MAQ à codage perforé en trellis, avec décodage itératif
EP1101288B1 (fr) Procede et dispositif de codage correcteur d&#39;erreurs et procede et dispositif de decodage correspondants
WO1996024999A1 (fr) Dispositif de reception de signaux numeriques a structure iterative, module et procede correspondants
FR2900294A1 (fr) Chargement de la memoire d&#39;entree d&#39;un decodeur ldpc avec des donnees a decoder
FR2896359A1 (fr) Procede d&#39;encodage et de decodage rapides et dispositifs associes.
FR2807895A1 (fr) Procedes et dispositifs de codage et de decodage et systemes les mettant en oeuvre
FR2883121A1 (fr) Procede et dispositif de decodage de codes a roulettes
FR2878385A1 (fr) Procedes et dispositifs de multiplexage de sections de treillis pour decodage par l&#39;algorithme de viterbi ou aller-retour
FR2838581A1 (fr) Procede de codage et/ou de decodage de codes correcteurs d&#39;erreurs, dispositifs et signal correspondants
FR2914447A1 (fr) Dispositif electronique de decalage de donnees en particulier pour du codage/decodage avec un code ldpc
FR2972878A1 (fr) Procede d&#39;encodage correcteur d&#39;erreur, procede de decodage et dispositifs associes.
FR2888062A1 (fr) Codeur et turbo decodeur de code produit
EP4335034A1 (fr) Decodage de turbo codes concatenes en serie
WO2008129195A1 (fr) Codage et decodage de signaux de donnees de rendements variables