ARCHITECTURE DU DECODEUR CSO C-SS

INTRODUCTION

  Le décodage itératif consiste à utiliser des décodeurs en cascades de façon à réaliser avec une succession de décodeurs de coûts faibles, les performances que 1′ on peut atteindre avec un décodeur très complexe donc coûteux. Les études menées au cours des dernières années ont permis de démontrer que 1 ‘on est en mesure de dépasser les limites des décodeurs classiques pour s’approcher de plus en plus de la limite dite de Shannon, imposée par la théorie édictée en 1948.Les codes turbo présentent une avenue intéressante, en utilisant une structure itérativebasée sur un décodeur de type SISO («Soft-Input/Soft-Output»). La technique de décodage, bien qu’étant itérative, reste encore très complexe et surtout introduit une latence qui tend à limiter la longueur de contrainte des codes que 1 ‘on peut utiliser et donc leur pouvoir correcteur. Il s’avère donc impossible de profiter pleinement de cette innovation pour les applications où de grandes latences sont inacceptables, la téléphonie par exemple. À partir de ces observations, un travail de recherche a été initié par D. Haccoun, F. Gagnon etC. Cardinal, et a aboutit avec la thèse de doctorat de ce dernier [1] portant sur un algorithme de décodage itératif sans entrelaceurs. Les décodeurs itératifs pour les codes doublement orthogonaux au sens strict utilisent un algorithme de décodage à seuil à quantification souple, et emploient une approximation de la probabilité a priori. Il en ressort une structure parallèle, moins complexe et donnant des résultats intéressants.

Les systèmes de communications numériques

  Les systèmes de communications numériques visent à transférer de l’information entre deux entités (ou plus) par le biais de différent mediums tels les câbles, la fibre optique ou la propagation de signaux radioélectriques. Généralement, on vise trois impératifs dans l’utilisation et donc la conception de ces systèmes :
• L’efficacité spectrale, qui représente la capacité de la technique de modulation utilisée à transporter l’information dans une bande de fréquences la plus limitée possible.
• L’efficacité de rendement de puissance, qui impose d’utiliser le moins d’énergie possible pour transférer l’information en toute fiabilité.
• La complexité des équipements qui entre en ligne de compte dans le coût final de la solution et de sa date de mise en marché. Plus la solution est complexe, plus les coûts sont élevés et le temps de développement est long. Il est intéressant de remarquer qu’on ne peut disposer d’un système parfait qui répond à tous les critères. Dans les faits, on optimise notre conception en fonction des critères d’un cahier de charges, en relaxant certaines contraintes secondaires pour en atteindre d’autres jugées primordiales pour l’utilisation finale.

Le canal à entrées binaires et bruit blanc additif gaussien

  Ce canal est très important analytiquement dans l’étude des techniques de codage de canal et spécialement dans le cas du décodage à entrées souples. Les hypothèses de ce modèle sont :
• la source est binaire et idéale,
• le modulateur associe à chaque élément binaire un signal antipodal (modulation BPSK),
• le canal de transmission affecte les signaux par l’ajout d’un bruit indépendant du signal, stationnaire, gaussien et blanc avec une variance a 2 et une densité spectrale bilatérale de N ° , 2
• le démodulateur avec un filtre adapté est optimal,
• l’échantillonnage est supposé effectué aux instants adéquats. Les symboles de l’entrée sont binaires, mais les symboles de sortie prennent des valeurs dans l’espace des réels. Ce genre de canal peut se transformer en BSC par l’adjonction d’un quantificateur sur les échantillons à 1′ entrée du décodeur.

Algorithme SOV A

  L’algorithme de Viterbi à sorties souples, ou pondérées, calcule de bonnes approximations des rapports de vraisemblance logarithmique bit à bit quand on dispose d’une représentation en treillis efficace. L’idée de base est d’associer à chaque décision ferme la fiabilité de cette décision dans l’algorithme de Viterbi de base. On résume les quatre étapes du décodage :
1. Précalculer les métriques de branche à partir des observations à priori et du canal.
2. Calcul récursif ascendant des métriques d’états cumulés et des fiabilités.
3. Remonter le chemin de vraisemblance maximale.
4. Calcul des rapports de vraisemblance logarithmique à posteriori bit à bit en trouvant le chemin concurrent de plus grande métrique. Comparé à l’algorithme BCJR, l’algorithme SOVA produit des sorties pondérées avec une complexité moindre et une dégradation acceptable des performances en terme d’erreurs binaires.

Les circuits FPGA

  Les circuits FPGA, à l’inverse des circuits dit prédiffusés et personnalisés, ne nécessitent pas l’intervention du constructeur pour programmer la logique voulue. Ceci réduit énormément le coût du développement pour cette technologie et les rend attrayants pour le prototypage. Inventés par la firme Xilinx™, ces circuits se situent entre les réseaux logiques programmables (PLD) et les prédiffusés. Il s’agit en fait d’un composant standard qui combine la densité et les performances des prédiffusés à la souplesse de la reprogrammation des PLD.
Architecture des FPGA L’architecture des FPGA est constituée de circuits configurables [29]. Ces derniers se composent d’une matrice de blocs logiques configurables (Configurable Logic Block, CLB) qui permet de réaliser des fonctions combinatoires et séquentielles. Autour de cette matrice de CLB, on trouve des blocs d’entrées/sorties (Input Output Block, lOB) dont le rôle consiste à gérer les entrées/sorties pour réaliser un interfaçage avec le monde externe. Chaque CLB est aussi entouré par quatre matrices de connexions qui permettent de «router» les signaux entre les différents CLB. La programmation du circuit consiste donc à charger une trame de bits dans des cellules de mémoire SRAM pour établir les différentes interconnexions entre les lOB et les CLB ainsi qu’entre les CLB eux même pour réaliser la fonction désirée et assurer la propagation des signaux. Nous allons tâcher de présenter les différentes composantes plus en détails.
Les CLB Les CLB déterminent en partie les performances du FPGA. Chaque bloc peut être vu comme composé d’un ou plusieurs blocs similaires, généralement deux que l’on appelle «tranche» (SLICE). Chacune de ses tranches est formée de deux générateurs de fonctions à quatre entrées et d’un bloc de mémorisation/synchronisation avec deux bascules D. Quatre autres entrées permettent de réaliser les connexions internes entre les différents éléments du CLB. La figure 3.1 représente le schéma d’une tranche pour la famille Virtex. Les blocs de logique combinatoire possèdent deux générateurs de fonction F et G à quatre entrées indépendantes (FI, … , F4, Gl, … , 04) offrant une grande flexibilité dedéveloppement. Les deux fonctions sont générées à partir d’une table de vérité câblée inscrite dans une zone mémoire, ainsi les délais de propagation pour chaque générateur sont indépendants de la fonction que 1 ‘on réalise. Dans certaines familles de FPGA Xilinx™, une troisième fonctions H est réalisée en combinant les sorties F, G et une troisième variable d’entrées transitant par un bloc secondaire. Les sorties des générateurs sortent de la tranche soit par la sortie X pour la fonction F, soit Y pour la fonction G. Ainsi on peut réaliser grâce à cet architecture soit :
• deux fonctions indépendantes à quatre entrées distinctes,
• une seule fonction de cinq variables voir jusqu’à neuf variables,
• deux fonctions, l’une à quatre variables et l’autre à cinq variables.
L’intégration de fonctions avec un nombre élevé de variables diminue le nombre de CLB nécessaire ainsi que les délais de propagation des signaux. Ceci augmente la densité et la vitesse du circuit. Les sorties des tranches peuvent s’appliquer à des bascules ou directement vers d’autres tranches ou des CLB. Il existe une autre entrée appelée «Global Set/Reset» qui se charge de tout initialiser dans le circuit FPGA à chaque mise sous tension, chaque configuration en mettant à un ou à zéro respectivement de toute les bascules en même temps. Un autre intérêt des CLB, est la possibilité de les configurer en mémoire RAM de I6x2 bits ou 32xl bits. Les entrées (FI, … , F4, Gl, … , G4) deviennent alors des lignes d’adressage pour sélectionner une cellule mémoire particulière. La fonctionnalité des signaux de contrôle se trouve modifiée dans cette configuration. Le contenu de la cellule mémoire adressée se trouve accessible sur les sorties des générateurs de fonction G et F et ils peuvent transiter par X et Y dans les bascules.
Les lOB Les blocs d’entrées/sorties constituent l’interface entre les broches du FPGA et la logique interne qui y est implantée. Ils se trouvent sur toute la périphérie du circuit avec un bloc lOB par broche. Ce bloc, peut être configuré en entrée, en sortie, en signaux bidirectionnels ou en haute impédance. La figure 3.2 présente un exemple simplifié d’un tel bloc.Lors de la configuration en entrée, le signal passe par un tampon (Buffer) qui peut en fonction de sa programmation détecter soit des niveaux TTL ou CMOS. Il peut être routé par la suite, directement vers la logique du CLB, ou bien synchronisé grâce à une bascule de type D qui accepte des changements sur les fronts montants et descendants. On remarque aussi que l’entrée peut être retardée de quelques nanosecondes pour compenser le retard du signal d’horloge qui passe par un amplificateur. La configuration de l’entrée se fait à l’aide d’un multiplexeur qui est commandé par un bit positionné dans une case mémoire. En configuration de sortie, il est possible d’appliquer les modifications suivantes au signal:
• inversion ou non du signal avant d’attaquer l’lOB,
• synchronisation du signal sur les fronts montants ou descendants de 1’horloge,
• mettre en place un «Pull-up» ou un «Pull-down» pour limiter la consommation des entrées, sorties inutilisées,
• signaux en logique trois états ou deux états. Le contrôle de mise en haute impédance ainsi que la réalisation des lignes bidirectionnelles sont assurés par un signal de commande «Üut Enable» pouvant être inversé ou non. Chaque sortie peut délivrer un courant de 12mA, ouvrant de nombreuses possibilités au concepteur pour connecter au mieux un FPGA avec les périphériques extérieures.
Les interconnexions Les connexions en interne pour les FPGA sont assurées par des segments métallisés  et ils influencent de plus en plus les performances des FPGA. Parallèlement à ces lignes, il existe des matrices programmables, dénotées PSM, réparties sur 1 ‘ensemble du circuit horizontalement et verticalement entre les divers CLB. Ces matrices se chargent d’établir les connexions entre les diverses lignes par le biais de transistor MOS dont l’état est contrôlé par des cellules en mémoire vive. Le rôle de ce réseau de connexions est de relier efficacement les CLB et les lOB. On distingue dans l’architecture Xilinx™, trois sortes d’interconnexions dépendamment de la longueur et de la destination du lien.
-Les interconnexions à usage général :Il s’agit d’une grille de segments métalliques verticaux et d’autres segments horizontaux positionnés entre les lignes et les colonnes de CLB et lOB. Des matrices de commutation situées à chaque intersection ont pour rôle le raccordement des segments entre eux selon diverses configurations pour assurer lepassage des signaux d’une voie à l’autre. Ce sont ces interconnexions qui relient n’importe quel CLB aux autres. Pour éviter que les signaux ne soient affaiblis par de fortes demandes de courant, on dispose généralement de mémoires tampons implantées en haut et à droite de chaque matrice.
-Les interconnexions directes :Ces interconnexions servent à relier directement les CLB aux lOB pour optimiser l’efficacité en terme de vitesse et d’occupation de surface. Il est aussi possible de relier directement certaines entrées de CLB avec les sorties d’autres CLB .
-Les longues lignes :Ce sont des longues lignes qui parcourent toute la longueur et la largeur du composant pour transmettre avec un minimum de retard les signaux entre les différents éléments. Le but de ces lignes est d’assurer une synchronisation aussi parfaite que possible et d’éviter la multiplicité des points d’interconnexions. Ce sont ces lignes qui véhiculent les signaux d’horloges et de «SetReset».
Cas des FPGA de la famille Virtex L’évolution des technologies de l’intégration et leur exploitation par les fabricants de FPGA, ont fait passer ces derniers du simple statut de plateforme de prototypage à celui de véritable concurrent des ASIC pour certaines applications. La famille Virtex [30] est commercialisée par Xilinx™ depuis 1998. Le circuit Virtex est constitué, comme on peut le voir sur la figure 3.5 de deux entités configurables :
• Les CLB qui sont composés de quatre cellules logiques reparties en deux tranches identiques (figure 3.6), et qui servent à la conception du circuit numérique. Chaque cellule logique contient :
o Une LUT à quatre entrées pour générer les fonctions logiques. Un multiplexeur choisit les sorties des deux LUT d’une tranche pour réaliser n’importe quelle fonction de cinq variables booléennes. De même, un autre multiplexeur combine les quatre LUT d’un CLB en sélectionnant la sortie de l’un des multiplexeurs. Il est intéressant de voir que lors de l’évolution des FPGA Xilinx™, les LUT à trois entrées que l’on trouvait dans les premiers produits (XC4000) ont été abandonnées et remplacées par un mécanisme plus souple. De plus, chaque LUT du Virtex permet la conception d’une mémoire synchrone de 16xl bits. On peut ainsi joindre les LUT d’une tranche pour réaliser une mémoire synchrone de taille I6x2 bits, 32×2 bits ou I6x 1 bits à double accès (Dual-port synchronuous RAM). Une LUT peut aussi servir de registre à décalage de seize bits.
o Un élément de mémorisation avec des signaux d’initialisation (Set et Reset) synchrones ou asynchrones.
o De la logique additionnelle pour la réalisation de circuits arithmétiques performants. Chaque tranche dispose d’une ligne de propagation de retenue pour faciliter la réalisation d’additionneurs, et d’éléments servants pour des multiplicateurs.
• Les lOB pour interfacer les CLB aux bornes du circuit. Le dispositif de routage «VersaRing» offre les ressources nécessaires à l’interconnexion des CLB aux lOB. L’intérêt de ce système est de pouvoir modifier le système implanté sans changer les attributions des bornes donc en gardant la compatibilité au niveau du boîtier. Le circuit Virtex offre aussi la possibilité de stocker de l’information dans deux mémoires (BRAM ou BlockSelectRAM+), organisées en blocs de 4096 bits, situées de part et d’autre de la matrice de CLB. La hauteur de chaque bloc équivaut à celle de quatre CLB, de sorte que si on dispose d’une matrice de CLB de 64 lignes, on aura 16 blocs. Les outils fournis par Xilinx™ permettent de construire avec ces blocs des mémoires synchrones simples ou doubles ports de la taille que 1 ‘on désire. Le composant possède aussi quatre lignes d’horloge disposant chacune d’une DLL (Delay Locked Loop). Cette dernière sert à contrôler le décalage d’horloge (Clock skew) à l’intérieur du FPGA ou entre plusieurs circuits, ainsi que de déphaser, doubler ou diviser une horloge. Les vendeurs de FPGA classifient les circuits d’une même famille en fonction de leur fréquence maximale de fonctionnement, processus appelé «Speed grading», et le prix est fonction de cette vitesse même si le coût de fabrication est le même. La famille Virtex est caractérisée par un chiffre représentant la vitesse de fonctionnement, -4 étant le circuit le plus lent et -5 ou -6 pour ceux qui sont plus rapides.  Il est à noter que d’autres FPGA s’inspirant de la famille Virtex ont été développés depuis le début de la commercialisation. Les Virtex-E [31] par exemple disposent de plus de mémoire BRAM qui, est organisée en colonne et est répartie dans la matrice de CLB. Une technologie d’intégration plus fine permet des fréquences de fonctionnement plus élevées (0.18~m pour la famille Virtex-E contre 0.22~m pour la famille Virtex). Une autre famille, la Virtex-E Extended Memory [32] propose des circuits destinés aux applications gourmandes en mémoire, comme le traitement d’images. La famille Virtex-II [33] quant à elle, offre des primitives nouvelles pour réaliser des opérateurs arithmétiques performants, comme un maximum de 168 multiplicateurs traitant deux nombres de 18 bits codés en complément à deux. Avec l’avenue de la série des Virtex-II pro (Virtex-II Pro, Virtex-II Pro X et Virtex-II Pro EasyPath), on assiste à une augmentation des primitives pour opérations arithmétiques ainsi qu’à l’adjonction de processeur IBM PowerPC 405 en dur et d’émetteurs récepteurs série «Rocketlü» qui permettent des débits de l’ordre de 10Gbps. Enfin, la famille Virtex-4 ( Virtex-4 LX, DX et FX) utilise la nouvelle architecture de Xilinx™ dite ASMBL (Advanced Silicon Modular BLock) et intègre de nouvelles fonctionnalités pour le calcul arithmétique, un contrôleur de FIFO à l’intérieur du BlockRAM pouvant fonctionner jusqu’à 500 MHz et la partie numérique du control d’accès au medium d’Ethemet 10/100/1000 Mbps.

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela rapport-gratuit.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

SOMMAIRE
ABSTRACT
REMERCIEMENTS
TABLE DES MATIÈRES
LISTE DES TABLEAUX
LISTE DES FIGURES
LISTE DES ABRÉVIATIONS ET SIGLES
INTRODUCTION
CHAPITRE 1 INTRODUCTION AU CODAGE DE CANAL
1.1 Introduction
1.2 Les systèmes de communications numériques
1.3 Théorie de la capacité d’un canal
1.4 Le canal discret
1.4.1 Le canal discret sans mémoire (DMC)
1.4.2 Le canal binaire symétrique (BSC)
1.4.3 Le canal binaire à effacement (BEC)
1.4.4 Le canal à entrée binaire et bruit blanc additif gaussien
1.5 Le codage convolutionnel
1.5.1 Structure des codes convolutionnels
1.5 .1.1 Code convolutionnel de taux1/v
1.5 .1.2 Code convolutionnel de taux k/v
1.5.2 Représentation polynomiale
1.5.3 Codes convolutionnels systématiques et récursifs, RSC
1.5.4 Représentation sous forme graphique du processus de codage
1. 6 Les codes turbo
1.6.1 La concatenation
1.6.2 L’entrelacement
1. 7 Algorithmes de décodages
1.8 Le décodage itératif
1.8.1 Algorithme BCJR
1.8.2 Algorithme SOVA
1.9 Conclusion
CHAPITRE 2 BASES THÉORIQUES DU DÉCODEUR
2.1 Introduction
2.2 Décodage à seuil en quantification ferme pour les codes convolutionnels
2.2.1 Code orthogonal (CSOC)
2.2.2 Décodage des codes CSOC
2.3 Adaptation du décodage à seuil à des sorties non quantifiées
2.4 Décodage itératif, définition des codes convolutionnels doublement orthogonaux au sens large CS02 C-WS
2.4.1 Le processus itératif
2.4.2 Les conditions de double orthogonalité
2.4.3 Les codes convolutionnels doublement orthogonaux au sens large
2.5 Les codes convolutionnels doublement orthogonaux au sens strict CS02 C-SS
2.6 Conclusion
CHAPITRE 3 ARCHITECTURE DU CIRCUIT PROGRAMMABLE FPGA CIBLE
3.1 Introduction
3.2 Les circuits FPGA
3.2.1 Architecture des FPGA
3.2.1.1 Les CLB
3.2.1.2 Les IOB
3.2.1.3 Les interconnexions
3.2.2 Cas des FPGA de la famille Virtex
3.3 Outils et méthodologie de développement pour FPGA
3.3.1 La saisie du design
3.3.2 La synthèse
3.3.3 Optimisation, projection et placement-routage
3.4 Conclusion
CHAPITRE 4 ARCHITECTURE DU DECODEUR CSO C-SS
4.1 Introduction
4.2 Analyse de l’algorithme du décodeur CS02 C-SS
4.2.1 Décomposition de l’algorithme
4.2.2 Analyse des opérations de base à effectuer
4.3 Architecture proposée
4.3.1 Nature de l’information utilisée
4.3.2 Les blocs FIFO de mémorisation et de décalage
4.3.3 Les blocs FIFOULP
4.3.4 Blocs de complément à deux
4.3.5 Bloc de sommation
4.3.6 Bloc de saturation
4.3.7 Assemblage des différents blocs
4.4 Codage en VHDL et validation fonctionnelle
4.4.1 Hiérarchie des fichiers VHDL et leurs descriptions
4.4.2 Validation fonctionnelle et procédures de vérification
4.5 Généralisation pour l’ensemble des décodeurs
4.5.1 Calcul du nombre de bits de dépassement de capacité
4.5.2 Mise en place de la structure d’addition
4.5.3 Mise en place du FIFOULP
4.6 Conclusion
CHAPITRE 5 RÉSULTATS ET ANALYSES
5.1 Introduction
5.2 Optimisation de l’architecture du décodeur
5.2.1 Modification du code HDL des FIFO
5.2.2 Amélioration de la fréquence maximale
5.2.3 Initialisation du système et sa synchronisation
5.3 Étude de la complexité du système
5.3.1 Méthode de calcul de la complexité pour les différents blocs
5.3.2 Complexité estimée versus la complexité relevée
5.3.3 Rapidité du décodeur
5.4 Étude des performances du décodeur
5.4.1 Procédure de mesure de la performance
5.4.2 Résultats des simulations
5.5 Conclusion
CONCLUSION
ANNEXES
1 : CODE VHDL POUR UN DOUBLE DÉCODEUR AVEC J=3 ET PIPELINE
2 : CODE C POUR UN GÉNÉRATEUR DE CODE VHDL DU DÉCODEUR 2 CSO C-SS
BIBLIOGRAPHIE

Rapport PFE, mémoire et thèse PDFTélécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *