Le LFSR dans le codage de canal (code de convolution et turbo code)
Nous avons sans cesse besoin d’augmenter les débits de transmission tout en gardant ou en améliorant leur qualité. Malheureusement, différents types de bruits existent dans le canal de transmission ou dans les composants de la chaîne de transmission. Par conséquent, nous devons appliquer des techniques et envisager des stratégies [114] [116] pour assurer une transmission fiable des données: – les stratégies ARQ (Automatic Repeat Request) qui sont basées sur la détection d’erreur et la retransmission; une demande envoyée à l’émetteur pour répéter le message sur la détection d’erreur par le récepteur, – les stratégies Forward Error Correction (FEC) qui corrigent automatiquement les erreurs détectées au niveau du récepteur, – Stratégies hybrides qui combinent ARQ et FEC. Un code correcteur d’erreur (stratégies FEC) permet de corriger une ou plusieurs erreurs dans un mot de code en ajoutant aux informations des symboles redondants. Différents codes possibles existent mais dans notre travail, nous traitons seulement les codes Convolutifs et les Turbo code car ils présentent une similarité avec le code Gold et les démodulateurs numériques à base de registres LFSR. De plus ce sont les codes les plus utilisés dans les standards de télécommunications [11]. Le principe du codage convolutionnel a été introduit en 1955 par Elias comme alternative aux codes blocs [117]. Les codes convolutionnels ajoutent une certaine redondance aux bits de la séquence d’information à transmettre moyennant une opération logique (OU exclusif). Chaque information d’un symbole de m bits se transforme en un symbole de n bits, où m/n est le taux de code (n ≥ m). Chaque codeur convolutionnel est caractérisé aussi par la longueur de contrainte K qui représente le nombre de cellules du registre à (a) «One-To-Many» (b) «Many-To-One» clk cn-1 cn-2 cn-3 c1 rn-1 rn-2 rn-3 r0 clk ܿିଵ ᇱ ܿିଶ ᇱ r1 ܿଵ ᇱ rn-1 rn-2 r0 112 décalage. Le code convolutif peut être divisé en deux catégories principales: le codeur non systématique (NSC) et le code convolutif récursif et systématique (RSC). Un code non systématique est celui dont la sortie ne contient pas les bits d’entrée. Dans sa forme la plus commune, un NSC est représenté par un registre à décalage linéaire et chaque code de sortie dépend d’un polynôme générateur dont l’équation pourrait être considérée comme l’équation d’un filtre de type FIR (Finite Impulse Response) [118]. Au contraire, un code systématique récursif est celui dans lequel la sortie contient les bits d’entrée plus une récurrence linéaire de la première sortie. Ainsi, une RSC est un codeur qui utilise un registre à décalage à rétroaction linaire (LFSR). Dans ce type de registre l’équation du polynôme générateur est une équation d’un filtre de type IIR (infinie Réponse Impluse): ܾ ∑ = [݊]ݕ ே ିݕ .ܽ ∑ − ିݔ . ே ଵ (14) où bk et ak sont respectivement les coefficients directs et de retour, N étant l’ordre du filtre. Les codeurs convolutifs peuvent être mis en œuvre en utilisant l’une des deux structures équivalentes présentées dans la section suivante; le MTO et l’OTM.
Architecture MTO (Many To One)
La forme canonique d’un codeur convolutif MTO est représentée dans la figure IV.10 pour une mémoire du codeur de taille m = 3. où ri représente la bascule i du registre R, gi et hi sont respectivement les coefficients du polynôme de la boucle de retour et du polynôme de la branche directe. Il y a deux configurations possibles : – un codeur Convolutif non récursif (CNR) est obtenu, lorsque (g0,g1,g2,g3) = (0,*,*,*) or (1,0,0,0), * égal à 0 ou 1. – un codeur convolutif récursif (CR) est obtenu, lorsque g0 = 1 et (g1, g2, g3) ≠ (0, 0, 0). La boucle de rétroaction est inséré uniquement, lorsque g0 = 1 et au moins un des coefficients g1, g2, g3 est égal à 1.
Architecture OTM (One To Many)
La forme canonique d’un codeur convolutif série OTM est représenté dans la figure IV.11 pour M = 3. La configuration de la structure de l’encodeur OTM est similaire au MTO avec deux configurations possibles: Un codeur CNR est obtenu, lorsque (g0,g1,g2,g3) = (*,*,*,0) or (0,0,0,1). * égal à 0 ou 1, Un codeur convolutif récursif (CR) est obtenu, lorsque g3 = 1 et (g0, g1, g2) (0, 0, 0). La boucle de rétroaction est insérée uniquement lorsque g3 = 1 et au moins l’un des coefficients g0, g1, g2 est égal à 1. Figure IV.11. Codeur convolutif OTM pour m = 3. 4.2.3. Un turbo-code Les turbo-codes peuvent être considérés comme une classe de codes concaténés. Un turbo-code est la concaténation d’un ou de plusieurs codes (convolutifs ou blocs) séparés par des blocs d’entrelacement. Suivant le type de la concaténation, nous avons les turbocodes série et les turbo-codes parallèle. Un turbo-code parallèle est construit par concaténation parallèle de deux codes de convolution séparés par entrelacement. Le premier code fonctionne avec la séquence d’informations et le second fonctionne avec la même séquence d’informations, mais entrelacées. La figure (IV.12) représente un turbo-code composé de deux codes constitutifs C1 et C2 de type RSC. Figure. IV.12. Turbo-code parallèle. RSC C (3) C (2) C (1) C (0) RSC D(M bits) C1 R1=m1/n1 Entrelacement C2 R2=m2/n2 N bits v c1 d1 u h0 g1 r0 r1 r2 g0 g2 h1 h2 g3 h3 114 Dans la pratique, nous choisissons les deux codes similaires et de structure RSC. En outre, afin d’augmenter la production, il est recommandé de ne pas utiliser la sortie systématique C (2) .
.Le LFSR pour le générateur de codes d’embrouillage dans le WCDMA
L’architecture du générateur de code Gold, basée sur une combinaison de deux registres à décalage à rétroaction linéaire (LFSR), est détaillée dans l’annexe A (section A.5.2).
LFSR pour la démodulation numérique
Les registres LFSR sont capables de produire des séquences fixes et périodiques, en fait c’est un choix pertinent pour une utilisation en tant que compteurs programmables [93] [109]. L’organisation fonctionnelle de l’un de ces compteurs (figure. IV.13) est composée de deux parties principales: · un LFSR registre contrôlé par un polynôme primitif de degré n, · une ROM décodage. Le rôle de cette ROM est de permettre la conversion entre l’ordre de parcours des éléments de corps de Galois GF(2 n )et l’ordre «traditionnel» croissant utilisé dans les compteurs classiques. Une architecture, en respectant ces critères, se comporte comme un compteur modulo 2 n -1 [93][109].