Rapport PFE
Rapport PFE
Rapport PFE
1
Résumé
Si beaucoups d'architectures existent pour le codage canal, la plupart d'entre
elles visent une norme particulière et diérent d'un standard à un autre. Nous
présentons dans ce travail une architecture capable de fonctionner dans n'importe
quel standard de communication sans l comme le 3GPP UMTS, WLAN 802.11a,
WIMAX 802.16 etc. Cette architecture englobe à la fois ; un codeur convolutif, un
codeur cyclique et générateur de m-séquences pour l'étalement des spectres dans la
technologie WCDMA. Notre implémentation se caractérise essentiellement par sa
exibilté ; elle est capable de s'adapter au standard choisit grace aux découpages
et découplages de ses diérents éléments.
Abstract
The nal year project aims at studying and implementing a recongurable
channel encoder. Despite the diversity of channel coding architectures, most of
them aim at a particular standard and dier from the other. In this work, we
present an architecture which is capable of working in any standard of wireless
communication such as 3GPP UMTS, WLAN 802.11a, WIMAX 802.16 etc. The
architecture developed consists of a convolutional encoder, a cyclic encoder and a
linear feed back shift registre (LFSR) for the spreading spectrum in the WCDMA
technology. The main feature of our implementation is its exibility : it is capable
of adapting itself to the chosen standard due to the divisions and the decoupling
of its various elements.
2
Table des matières
1 Introduction générale 9
2 Les codes correcteurs d'erreurs 12
2.1 Les codes cycliques . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.1 Les codes en blocs linéaires . . . . . . . . . . . . . . . . . . 13
2.1.2 Dénition et représentation des codes cycliques . . . . . . . 14
2.1.3 Dénition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.4 Code cyclique sous forme systématique . . . . . . . . . . . . 16
2.1.5 Mise en oeuvre du codeur . . . . . . . . . . . . . . . . . . . 16
2.2 Les codes convolutifs . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1 Principe du codage convolutif . . . . . . . . . . . . . . . . . 17
2.2.2 Polynôme générateur d'un code convolutif . . . . . . . . . . 18
2.2.3 Représentations graphiques des codes convolutifs . . . . . . 18
2.2.4 Choix de l'architecture du codeur . . . . . . . . . . . . . . . 22
2.3 Génération de M-séquences(LFSR) . . . . . . . . . . . . . . . . . . 23
2.3.1 Représentation de Fibonnacci . . . . . . . . . . . . . . . . . 24
2.3.2 Représentation de Galois . . . . . . . . . . . . . . . . . . . . 24
2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3
4 Implémentation hardware 43
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2 Modélisation en VHDL . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3 Flux de conception hardware . . . . . . . . . . . . . . . . . . . . . . 44
4.4 Composant top_coder . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.1 Eléments du top_coder . . . . . . . . . . . . . . . . . . . . 45
4.4.2 Signaux de commandes et d'entrée/ sortie du top_coder . . 46
4.5 Composant Preprocess . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.5.1 les entées/sorties de Preprocess . . . . . . . . . . . . . . . . 47
4.5.2 Principe de fonctionnement du Preprocess . . . . . . . . . . 47
4.6 Composant Bloc_coder . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.6.1 Signaux de commandes et d'entrée/sortie du Bloc_coder . . 48
4.7 Composant logic_control . . . . . . . . . . . . . . . . . . . . . . . . 50
4.7.1 Signaux d'entrée/sortie du logic_control . . . . . . . . . . . 50
4.7.2 Eléments du logic_control . . . . . . . . . . . . . . . . . . . 51
4.8 Composant FSM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.8.1 Les entrées/sorties de l'FSM . . . . . . . . . . . . . . . . . . 54
4.8.2 Éléments de l'FSM . . . . . . . . . . . . . . . . . . . . . . . 54
4.9 Composant regs_sup_64 . . . . . . . . . . . . . . . . . . . . . . . . 60
4.9.1 Les entrées/sorties du regs_sup_64 . . . . . . . . . . . . . . 60
4.9.2 Éléments de regs_sup_64 . . . . . . . . . . . . . . . . . . . 61
4.10 W_ram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.11 Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.11.1 Codeur cyclique . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.11.2 codeur convolutif . . . . . . . . . . . . . . . . . . . . . . . . 65
4.11.3 générateur de m-séquences . . . . . . . . . . . . . . . . . . . 67
4.12 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5 Conclusion 69
Annexes 70
A le projet Idromel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
A.1 Résumé du projet . . . . . . . . . . . . . . . . . . . . . . . . 70
A.2 Architecture matérielle d'IDROMEL . . . . . . . . . . . . . 71
A.3 Réalisations . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
A.4 Gestion du handover vertical . . . . . . . . . . . . . . . . . . 72
A.5 Caractéristiques . . . . . . . . . . . . . . . . . . . . . . . . . 73
B Technologie FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
B.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
B.2 Eléments constituant un FPGA . . . . . . . . . . . . . . . . 74
B.3 Programmation des FPGA . . . . . . . . . . . . . . . . . . . 76
4
C Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
C.1 Logic_control . . . . . . . . . . . . . . . . . . . . . . . . . . 78
C.2 FSM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
C.3 Regs_sup_64 . . . . . . . . . . . . . . . . . . . . . . . . . . 81
D Diagrammes d'activité . . . . . . . . . . . . . . . . . . . . . . . . . 83
Glossaire 85
Bibliographie 86
5
Table des gures
2.1 Canal de transmission pour la théorie du codage . . . . . . . . . . . 13
2.2 Schéma de principe d'un circuit diviseur par g(x) . . . . . . . . . . 17
2.3 Schéma de principe d'un codeur cyclique . . . . . . . . . . . . . . . 17
2.4 Principe d'un codeur convolutif . . . . . . . . . . . . . . . . . . . . 18
2.5 Codeur convolutif (7,5) . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Représentation en arbre du code C(7,5) . . . . . . . . . . . . . . . . 19
2.7 Diagramme d'états du codeur convolutif(7,5) . . . . . . . . . . . . . 20
2.8 Diagramme en treillis du codeur convolutif(7,5) . . . . . . . . . . . 21
2.9 Schéma de principe de la forme canonique de control convolutive . . 22
2.10 Schéma de principe de la forme canonique observatrice convolutive . 23
2.11 Schéma d'un LFSR dans la représentation de Fibonnacci . . . . . . 24
2.12 Schéma d'un LFSR dans la représentation de Galois . . . . . . . . . 24
6
3.20 Troisième sous-étape du codage . . . . . . . . . . . . . . . . . . . . 40
3.21 Première sous-étape du codage . . . . . . . . . . . . . . . . . . . . . 41
3.22 Début du codage(4,144) . . . . . . . . . . . . . . . . . . . . . . . . 41
7
5.9 Fonctionnement du logic_control dans CRC(150,10) . . . . . . . . . 78
5.10 Fonctionnement du logic_control dans Convolutif(13,10,3) . . . . . 79
5.11 Fonctionnement du FSM dans CRC(100,10) . . . . . . . . . . . . . 79
5.12 Fonctionnement du FSM dans CRC(150,10) . . . . . . . . . . . . . 80
5.13 Fonctionnement du FSM dans Convolutif(13,10,3) . . . . . . . . . . 81
5.14 Fonctionnement du Regs_sup_64 dans CRC(100,10) . . . . . . . . 81
5.15 Fonctionnement du Regs_sup_64 dans CRC(150,10) . . . . . . . . 82
5.16 Fonctionnement du Regs_sup_64 dans Convolutif(13,10,3) . . . . . 82
5.17 Diagramme d'activité séquentiel . . . . . . . . . . . . . . . . . . . . 83
5.18 architecture séquentielle . . . . . . . . . . . . . . . . . . . . . . . . 83
5.19 Diagramme d'activité combinatoire . . . . . . . . . . . . . . . . . . 84
5.20 architecture combinatoire . . . . . . . . . . . . . . . . . . . . . . . . 84
8
Chapitre 1
Introduction générale
Motivation
Les diérents types de demandes et d'applications dans le domaine de com-
munication sans l ont contribué à une diversité de normes et de standards. Les
technologies d'accès et les protocoles varient énormément d'un réseau à un autre.
Cette diversité provoque le besoin d'une conception globale d'un système qui peut
traiter la plupart des dispositifs de communication existants. La solution doit avoir
une architecture matérielle exible et recongurable qui couvrira les structures
existantes pour chaque standard.
9
Traditionnellement l'architecture de systèmes embarqués est décidée à l'aide de
techniques de co-conception logicielle/matérielle utilisées notamment pour déter-
miner le meilleur compromis entre performances, surface et consommation. Cette
approche se traduit par une surestimation importante des ressources lorsque les
applications traitées possèdent une charge qui varie sensiblement en fonction des
données et de l'environnement du système. Une alternative à cet écueil est la re-
conguration dynamique qui permet de modier une architecture en fonction des
besoins de l'application. L'architecture de FPGA Virtex V [6]de Xilinx a rendu
accessible les techniques et outils permettant de mettre en oeuvre la recongura-
tion dynamique.
C'est dans ce cadre que le projet Idromel [7] a été lancé pour répondre au besoin
de mettre en place un système recongurable et exible englobant les diérents
standards pour la communication sans l. Les réalisations concrètes du projet
IDROMel seront à la fois matérielles et logicielles. Le projet vise en particulier à
réaliser :
une carte Radio Fréquence capable de fonctionner dans au moins deux bandes
de fréquences très diérentes (les bandes 2 GHz et 5 GHz sont pressenties).
En outre cette carte sera équipée de deux chaînes de transmission et de ré-
ception, qui pourront être utilisées soit pour communiquer dans un standard
(en utilisant des techniques MIMO, Multiple Inputs Multiple Outputs), soit
pour pouvoir communiquer en utilisant deux standards diérents
une interface numérique/analogique et une partie bande de base intégrée
dans une architecture de type système sur puce (SoC).
Objectif
L'objectif de ce stage est d'élaborer un IP d'un codeur canal recongurable
pour le projet Idromel englobant à la fois le codage cyclique, le codage convolutif
et un générateur de m-séquences. Cet IP doit être conçu d'une manière à garantir
un ensemble de propriétés :
10
Adaptabilité : les diérents éléments du codeur doivent pouvoir être adaptés
de manière à assurer leurs fonctionnalités selon la technologie souhaitée.
Organisation du document
Dans le deuxième chapitre nous aborderons les notions théoriques de chaque
modèle du codage convolutif, cyclique ainsi que le générateur des m-séquences.
Dans le troisième chapitre nous proposerons une architecture uniée et nous ex-
pliquerons les adaptations nécessaires au fonctionnement de ces trois systèmes.
Dans le quatrième chapitre nous détaillerons l'implémentation hardware de notre
modèle recongurable et nous exposerons quelques simulations réalisées.
11
Chapitre 2
Les codes correcteurs d'erreurs
L'opération du codage consiste à ajouter au message numérique à transmettre
des éléments binaires, dits de redondance suivant une loi donnée. La nécessité d'in-
troduire de la redondance dans le message, pour se protéger contre les erreurs de
transmission, est démontrée par la théorie de l'information. Intuitivement, on peut
concevoir que pour un message dépourvu de redondance, chaque élément binaire
est essentiel et ainsi toute erreur de transmission conduit à une perte d'informa-
tion irréversible. Au contraire des éléments de redondance introduits astucieuse-
ment vont corréler les éléments binaires du message codé. Ainsi, sous certaines
conditions, un ou plusieurs éléments binaires erronés au cours de la transmission
pourront être détectés, voire corrigés. Le décodeur vient donc tester si la loi de co-
dage utilisée à l'émission (codeur) est respectée en réception ; si c'est le cas, aucune
erreur n'est détectée, tandis que dans le cas contraire, des erreurs sont présentes
dans le message codé. Les codes peuvent être classés en deux grandes familles : les
codes en blocs d'une part, les codes convolutifs ou récurrents d'autre part. Avant
d'aborder la présentation des codes, nous allons d'abord préciser la notion de canal
de transmission qui n'a pas exactement le même sens en théorie du codage qu'en
théorie des communications.
Canal de transmission
En théorie du codage, le canal de transmission inclut toutes les fonctions si-
tuées entre la sortie du codeur et l'entrée du décodeur, soit : l'émetteur, le milieu
de transmission, le bruit et le récepteur 2.1. En considérant des messages numé-
riques codés constitués d'éléments binaires, l'entrée du canal de transmission est
discrète et binaire, mais sa sortie peut être discrète ou continue.
12
Figure 2.1 Canal de transmission pour la théorie du codage
Les codes cycliques [8] forment une sous-classe importante des codes linéaires.
Ces codes sont attractifs pour deux raisons : d'abord, le codage et le calcul de syn-
drome peuvent être mis en oeuvre facilement en employant des registres à décalage
avec des connexions de rétroaction. Ensuite, parce qu'ils ont une structure algé-
brique considérablement inhérente, il est possible donc d'employer des diérentes
méthodes pour le décodage.
13
est donc équivalent au signe " + " et ainsi aucune erreur de signe n'est possible
dans le corps F2 .
2.1.3 Dénition
Un code en blocs linéaire C(n, k) est cyclique si, c = [c0 ...cj ...cn−1 ] étant un
mot du code, alors c1 = [c1 ...cj ...cn−1 c0 ] , obtenu par permutation circulaire à
gauche d'un élément binaire de c est aussi un mot du code. Cette dénition des
codes cycliques entraine que toute permutation circulaire à gauche de j éléments
binaires d'un mot du code, redonne un mot du code. Ainsi au mot c on associe le
polynôme de degré n − 1
Ainsi le résultat de la multiplication d'un mot c(x) par la variable x−1 est encore
un mot du code modulo(xn + 1) :
14
Ce résultat peut être étendu à la multiplication d'un mot du code par x−i , qui
redonne encore un mot du code modulo(xn + 1).
x−1 c(x) = qi (x)(xn + 1) + ci (x) ⇔ x−i c(x) = ci (x) (2.6)
Nous allons montrer maintenant que les mots d'un code cyclique peuvent être
obtenus à partir du produit d'un polynôme d'information par g(x). En eet en
partant de 2.1.3 et en tenant compte de la relation 2.1.3, le mot ci (x) est égale à :
ci (x) = x−i c(x) + qi (x)h(x)g(x) (2.10)
Ainsi si c(x) est multiple du polynôme g(x), alors tout mot ci (x) est aussi un
multiple de g(x). On peut alors écrire :
ci (x) = mi (x)g(x) (2.11)
15
2.1.4 Code cyclique sous forme systématique
Lorsque le code est sous forme systématique, les éléments binaires d'information
sont séparés des éléments binaires de redondance, et ainsi, le mot c(x) associé au
polynôme m(x) est de la forme :
Où v(x) est le polynôme de degré au plus égal à n − k − 1, associé aux éléments bi-
naires de redondance. En tenant compte du fait que c(x) est multiple du polynôme
générateur, et que les opérations sont eectuées dans le corps F2 , l'expression 2.1.4
peut encore s'écrire :
xn−k m(x) = k(x)g(x) + v(x) (2.13)
v(x) est donc le reste de la division de xn−k m(x) par le polynôme générateur.
Ainsi le mot du code associé à m(x) est égale à xn−k m(x) augmenté du reste de la
division de xn−k m(x) par le polynôme générateur g(x).
16
Figure 2.2 Schéma de principe d'un circuit diviseur par g(x)
17
Figure 2.4 Principe d'un codeur convolutif
les blocs de n éléments binaires fournis par le codeur et d'un convertisseur pa-
rallèle série. La quantité R = k/n est appelée, comme pour les codes cycliques,
le rendement du code. Si les k éléments binaires d'information présents à l'entrée
du codeur sont eectivement émis, c'est-à-dire se retrouvent explicitement dans le
bloc de n éléments binaires en sortie du codeur, le code est dit systématique.
Diagramme en arbre
Pour mieux comprendre cette notion, on considère le cas du codeur convolutif
(7,5) représenté par la gure 2.5.
18
Figure 2.5 Codeur convolutif (7,5)
Le diagramme en arbre associé à ce codeur convolutif est représenté sur la
gure 2.6. Sur ce diagramme, les conventions suivantes ont été adoptées :
Le temps s'écoule de gauche à droite.
Lorsque l'élément binaire à l'entrée du codeur est égal à 0 (respectivement à
1), le couple binaire en sortie du codeur (mentionné sur chaque branche) est
porté par une branche montante (respectivement descendante) du digramme
en arbre.
19
dépend du bloc de k = 1 élément binaire présent à son entrée mais aussi des
m = 2 blocs de k éléments binaires contenus dans sa mémoire. Ces m.k = 2
éléments binaires dénissent l'état du codeur. On note qu'il y a 2.m.k = 4 états
possibles de ce codeur :
Remarque
Quel que soit l'état initial du codeur, après (m+1)=3 décalages à l'entrée du
codeur, tous les états peuvent être atteints dans l'arbre.
Diagramme d'états
Le diagramme d'état est une autre représentation d'un codeur convolutif, ne
faisant pas apparaître explicitement le temps. Ce digramme ne retient que les
diérents états du codeur et la façon dont ils communiquent. La gure 2.7 donne
le diagramme d'état associé au codeur convolutif de la gure 2.5.
Diagramme en treillis
La sortie du codeur dépendant uniquement de son entrée et de son état, il est
donc possible d'utiliser une représentation plus concise que l'arbre, appelé dia-
gramme en treillis. Dans ce diagramme sont pris en compte les diérents états
20
du codeur et la façon dont ils communiquent en fonction du temps. La gure 2.8
donne la représentation en treillis associée au codeur convolutif de la gure 2.5.
Sur ce diagramme, les conventions suivantes ont été adoptées :
Les branches en traits pointillées correspondent à la présence d'un élément
binaire d'information égal à 0 à l'entrée du codeur et les branches en trait
plein, à un élément binaire égal à 1
La valeur du couple binaire disponible en sortie du codeur est inscrite sur
chaque branche
Remarques
Après (m + 1) décalages (ici 3), quelque soit l'état initial du codeur, le motif
du treillis se répète. De chaque nud partent 2k branches (ici 2), et en chaque
noeud convergent 2k branches
Généralement on préfère commencer et terminer le treillis par l'état 00 (cas
du codeur de la gure 2.5). C'est pourquoi, pour une séquence de longueur
L, il faut ajouter m (ici 2) bits égaux à 0 an d'engendrer les m décalages
supplémentaires qui permettent au codeur de revenir à son état initial.
21
2.2.4 Choix de l'architecture du codeur
La sortie du codeur convolutif [9]à la kième itération est déni par :
m
X
vk = fi .Wk−i (2.14)
i=0
Où m
X
Wk = Uk + gi .Wk−i (2.15)
i=0
22
Figure 2.10 Schéma de principe de la forme canonique observatrice convolutive
La réalisation d'un tel codeur est représentée dans la Figure 2.10 et est appelé forme
observatrice. Dans ce cas, les mémoires ne forment plus un registre à décalage puis-
qu'ils sont séparés par additionneur modulo 2 (en d'autre terme l'operateur XOR).
23
2.3.1 Représentation de Fibonnacci
Un LFSR fonctionne donc sur le principe illustré par la gure 2.11.
24
Dans la représentation de Galois, le bit sortant du LFSR est directement réinjecté
dans chacune des cellules, après avoir été multiplié par un coecient et ajouté au
contenu de la cellule précédente.
2.4 Conclusion
25
Chapitre 3
Architecture recongurable pour le
Codage canal
3.1 Introduction
Présentée par la gure 3.1, notre architecture générique est capable d'accomplir
selon le choix de l'utilisateur :
• le codage cyclique
• le codage convolutif
• la génération de m-séquence
Pour implémenter le codeur, quatre blocs sont utilisés en cascade représentés
dans la gure 3.2 pour fournir la fonctionnalité du codage adéquat. La raison pour
laquelle nous allons utiliser exactement quatre blocs est la suivante : Premièrement,
dans la spécication du codeur convolutif, nous avons fait le choix de quatre sorties
en maximum. Deuxièmement, la taille de la mémoire pour le même code varie de
1 à 10. Nous avons décidé, ensuite, d'utiliser 16 registres par bloc et 64 en total
qui correspondent à la taille d'un mot binaire dans la mémoire. Cette structure
fournit les diérents états dans lesquels chacun des blocs, pendant l'exécution de
l'opération de codage, peut être :
26
Figure 3.1 forme générique du codeur
27
3.2.1 Architecture du premier bloc
L'architecture du premier bloc représenté dans la gure 3.3 est composé de :
U correspond au bit d'entrée d'information.
X est un bit d'entrée. Il permet la liaison entre ce bloc et le bloc utilisé juste
avant.
F16, F15...,F1 et F0 représentent dix-sept coecients du polynôme F.
G16, G15...,G1 et G0 représentent dix-sept coecients du polynôme G.
S est un bit de sortie.
FB, un signal de rétroactions.
INT est un signal de contrôle.
CONV contrôle le multiplexeur de sortie.
28
X est un bit d'entrée. Il permet la liaison entre ce bloc et le bloc utilisé juste
avant.
SZ16, SZ15..., SZ1 et SZ0 représentent dix-sept entrées.
G16, G15..., G1 et G0 représentent dix-sept coecients du polynôme G.
S est un bit de sortie.
FB-I, un signal de réactions. Il est nécessaire si le bloc est intermédiaire.
FB-O, un signal de réactions. Il est nécessaire si le bloc est un dernier.
INT est un signal de contrôle. Quand le bloc est intermédiaire, INT prend
un.
CONV-O contrôle le multiplexeur de sortie.
CONV-I contrôle le multiplexeur de sortie.
29
3.3 Codage convolutif
Les codes convolutifs sont généralement spéciés par trois paramètres : (n, k,
m)
n = nombre de bits de sortie
k = nombre de bits d'entrée
m = nombre des registres
Dans notre implémentation, nous sommes intéressés par le cas où k égal à 1,
n entre 1 et 4 et le nombre maximal des registres est 16. Comme indiqué dans la
gure 3.5 , m est l'ordre des registres dans le codeur. Pour ce type de codage, Le
coecient F0 est toujours égal à un pour fournir l'entrée au codeur. Le coecient
G0 indique l'existence d'une éventuelle rétroaction (feedback). G0 et F0 sont aussi
les coecients du plus bas degré des polynômes F et G. Nous allons utiliser pour
le codage convolutif la forme canonique observatrice . Particulièrement, la forme
observatrice du codeur convolutif est utilisée pour permettre l'implémentation du
codeur cyclique et le générateur de m-séquences.
30
Les coecients Gm..., G0 sont les m coecients du polynôme générateur
G.
G16..., Gm+1 sont à zéro.
Tous les registres à zéro.
INT et CONV sont à zéro.
• Les trois autres blocs
Les coecients SZm..., SZ0 sont les m coecients du polynôme générateur
F.
SZ16..., SZm+1 sont à zéro.
Les coecients Gm..., G0 sont les m coecients du polynôme générateur
G.
G16..., Gm+1 sont à zéro.
Tous les registres à zéro.
INT, CONV-I et CONV-O sont à zéro.
Le circuit peut exécuter l'opération de codage continuellement et sans changement
d'état.
Comme les codes convolutifs, les codes cycliques sont aussi spéciés par les trois
paramètres n,k et m. n désigne la longueur du mot code, k désigne la longueur de
la trame d'entrée et m qui est la diérence entre n et k désigne le nombre des
registres à utiliser. Pour obtenir du schéma du codeur générique de la gure 3.1
le codeur cyclique représenté par la gure 3.6, nous devons ajuster ses diérents
paramètres :
Fm, Fm-1..., F1=0
Gm=1
Gm, Gm-1..., G1, G0 correspond aux coecients du polynôme générateur
G. G0 est le coecient du plus haut degré et Gm est le coecient du plus
bas degré.
G0 représente le gate. Il est activé quand le codeur décale les bits d'informa-
tion dans les registres. Et il est désactivé quand le codeur décharge les bits
de contrôle de parité.
Le commutateur est nécessaire pour fournir d'abord les bits d'information et en-
suite les bits de contrôle de parité. Il y a deux étapes pour eectuer le codage
cyclique :
Etape 1.Les bits d'information sont injectés dans le circuit et simultanément
dans le canal de communication. Pour cette étape, la sortie du commutateur
est directement les bits d'information. (G0=1 et F0=1).
Etape 2.La boucle de rétroaction est férmée en mettant G0=0 et F0=0 pour
31
Figure 3.6 Forme générique du codeur cyclique
décaler les bits de parité dans les registres. Dans cette étape, la sortie du
commutateur est V.
La gure 3.6 représente l'architecture de la forme générique de tous les codeurs
cycliques possibles.
Dans chacun de ces trois modes, l'adaptation est la même des quatre blocs est
s'eectue selon les quatre états mentionnés dans 3.2.
32
Le premier bloc
Le polynôme F n'existe pas dans le codage cyclique. Par suite tous les coe-
cients F16 F15... et F1 sont égaux à zéro. Par contre, le dernier coecient F0 est
égal à 1 ,pendant la première étape, quand les bits de donnés sont injecté dans le
circuit. Et il est égal à zéro, dans la deuxième étape, pour permettre de générer
les bits de redondance à partir du décalage des registres .
• État 1.bloc en est entièrement utilisé et c'est le premier bloc dans l'opération.
Dans ce cas, le fonctionnement de ce bloc nécessite le signal FB.
G16, G15... et G1 représentent les coecients des 16 premiers monômes
des degrés inférieurs du polynôme générateur.
G0, F0 et CONV sont égaux à zéro pour permettre l'entrée du contenu du
registre numéro 0 au bloc suivant.
INT est égal à un et X est égal à zéro.
• État 3.Le bloc est un bloc intermédiaire et il est entièrement utilisé.
G16, G15... et G1 sont les seize coecients du polynôme générateur.
G0, F0 et CONV sont égaux à zéro pour la même raison que l'état 1.
INT est égal à un.
X représente la valeur du dernier registre utilisé par le dernier bloc.
• État 4. Le bloc est le premier et le dernier bloque en même temps.
Gm, Gm-1... et G0 sont les m coecients du polynôme générateur.
G16, G15... et Gm + 1 sont égaux à zéro.
F0 et G0 prennent la même valeur. Dans la première étape, quand les
bits de données sont injectés dans le circuit, F0 et G0 prennent 1 pour
introduire ces bits dans les registres. Dans la deuxième étape, F0 et G0
prennent zéro pour annuler l'eet de la boucle de rétroaction. G0 repré-
sentent le coecient du polynôme du plus haut degré. La valeur du signal
CONV suit la même valeur que G0 pour permettre au commutateur d'être
dans les deux étapes nécessaires.
INT égal à zéro.
33
G16... et Gi + 1 sont égaux à zéro.
SZi est égal à un. Les autres SZj, j diérent de i, sont égaux à zéro.
SZ0, G0 et CONV-O prennent dans la première étape la valeur un et, dans
la deuxième étape la valeur zéro.
INT est égal à zéro pour permettre le calcul du signal FB-O de retour.
• État 3. Le bloc est un bloc intermédiaire. Et il est entièrement utilisé.
G16... et G1 correspond aux seize coecients du polynôme G.
SZ16 est égal à un pour injecter X, les autres SZi sont égales à zéro.
SZ0, G0 et CONV-O sont égaux à zéro pour permettre l'entrée de S au
bloc suivant.
INT est égal à un.
34
deuxième à l'état 3 et le troisième à l'état 2.
Si 48<m<64 : les quatre blocs de l'architecture seront fonctionnels et la sortie
du quatrième bloc constituera le mot code. Le premier bloc sera à l'état 1,
le deuxième et le troisième seront à l'état 3 et le quatrième à l'état 2.
Deuxième mode
Ce mode de fonctionnement requiert l'utilisation de deux registres externes
pour remplacer les registres de l'architecture générique an de parvenir à produire
des mots codes dont les bits de parité sont supérieurs à 64 et inferieurs à 128 bits.
Notre architecture sera donc constituée seulement par la partie combinatoire qui
se présente dans les opérations XOR et AND. Il est nécessaire aussi d'introduire
deux registres pour le maintient des signaux X et FB-O.
35
Figure 3.9 Nouvelle architecture du deuxième, troisième et quatrième bloc
36
Figure 3.11 Le codeur devisé en deux blocs
Notre bloc de la gure 3.10 va prendre, dans chaque itération (valeur du compteur
à T(i)) deux états pendant t(i).
• A T(1)
A t(1), on utilise le premier bloc, dans lequel, on injecte l'entrée U(0) et
on stocke sa sortie x(0) dans le registre reg-x. Ce bloc génère 64 bits à la
direction des premiers registres reg_1 (gure 3.12).
37
• A T(2)
A t(1), le premier bloc va prendre comme entrées les 64 bits stockés regs-1,
les utiliser avec le bit du feedback pour générer les nouveaux 64 bits à la
direction de reg-1 et x(1)(gure 3.14).
38
Entrées-bloc (regs-in) : les entrées D0 ou D1.
Exemple : m = 140 Le codeur idéal pour cette opération sera un codeur avec
140 registres. Comme dans l'exemple précédent, nous allons partager le codeur de
140 registres sur 3 sous blocs, deux avec 64 registres et un avec 12 registres. (gure
3.17).
39
• A T(1)
A t(1), on utilise le premier bloc, dans lequel, on injecte l'entrée U(0) et
on stocke sa sortie x(0) dans le registre reg-x(gure 3.18).
40
• A T(2)
A t(1), le premier bloc va prendre comme entrées les 64 bits stockés dans
la mémoire, les utiliser avec le bit du feedback pour générer les nouveaux
64 bits à la direction de la mémoire et x(0)(gure 3.21).
41
3.5 Générateur de m-séquences
3.6 Conclusion
Nous avons présenté dans ce chapitre une solution recongurable pour adapter
en ligne l'implantation d'un codeur convolutif, un codeur cyclique ou un générateur
de m-séquences.
En plus de sa exibilité, cette architecture présente des caractéristiques très in-
téressantes sur le plan surface et latence. Composée de 64 registres seulement, notre
conception et capable de produire des mots codes cycliques ou des m-séquences
avec une partie de redondance qui peut atteindre les 1024x64 bits. La disposi-
tion des portes XOR entre les registres ore une meilleure latence pour le codeur
convolutif et réduit considérablement le chemin critique de notre architecture.
Nous allons dans le chapitre suivant présenter l'implémentation hardware en
dénissant les diérents objets de notre codeur canal.
42
Chapitre 4
Implémentation hardware
4.1 Introduction
Dans les sous-chapitres qui suivent, nous allons discuter et expliquer l'implé-
mentation hardware choisie. Nous implémenterons une architecture top-coder qui
permet, comme vu dans le chapitre 3, d'eectuer un codage cyclique, un codage
convolutif ou générer des m-séquences avec une fréquence de 200 Mhz et un dé-
bit de 20 Mb/s . Avant de détailler notre codeur, nous allons présenter quelques
notions sur la programmation en VHDL.
Un système VHDL [11] est constitué d'objets élémentaires décrits par deux
parties principales : l'entité (mot clé ENTITY) qui correspond à la vue externe du
modèle et l'architecture de l'entité (mot clé ARCHITECTURE), la vue interne du
modèle.
La spécication de l'entité permet d'appeler les bibliothèques utiles, de dé-
nir les paramètres génériques (constantes qu'il est possible de modier avant la
compilation) et les ports (mot clé PORT) qui servent à échanger l'information
avec l'environnement extérieur. Les diérents types d'information pouvant être
échangée sont transmis par les ports de classe SIGNAL (information à évènement
discrets).
L'architecture de l'entité permet de dénir le fonctionnement du modèle par
l'intermédiaire d'instanciations de composants (assemblage d'objets), d'instruc-
tions concurrents pour manipuler l'information numérique et d'instructions simul-
tanées pour les valeurs analogiques. L'architecture manipule l'information dispo-
nible sur les ports.
43
Outre l'entité et l'architecture, il existe 3 autres unités de conception : La spé-
cication de paquetage, Le corps de paquetage et La conguration. Le paquetage
permet de rassembler des objets en vue de l'exportation par les commandes LI-
BRARY/USE. La spécication regroupe les déclarations exportables alors que le
corps rassemble les unités non exportables qui décrivent les objets.La congura-
tion permet d'associer l'instanciation d'un composant et sa base de données (entité
et architecture) au moment de l'élaboration sans avoir à recompiler le modèle. Il
existe deux méthodes de conguration : l'un se fait embarquée dans l'architecture
et oblige donc à la recompiler si on change de conguration. L'autre se fait dans
une unité de conception indépendante qui peut être compilée indépendamment.
Les principales étapes pour la conception hardware d'un circuit logique sur
FPGA ou CPLD sont présentées par la gure 4.1.
44
4.4 Composant top_coder
45
4.4.2 Signaux de commandes et d'entrée/ sortie du top_coder
Les signaux utilisés par le top_coder se divisent en deux catégories diérentes :
Les signaux de commandes
Les signaux d'entée/sortie
Les signaux de commande représentent tous les signaux permettant au codeur de
fonctionner correctement. Ces signaux sont :
Clk : signal d'horloge (std_ulogic)
Start : signal qui permet d'activer le top_coder. Ce signal est activé quand
les bits à coder arrivent et reste actif jusqu'à ce que le dernier bit codé soit
sorti du top_coder (std_ulogic)
Rst : signal permettant la remise à zéro du top_coder (std_ulogic)
Code_select : signal qui permet d'ordonner le type du codage (std_ulogic_vector
(1 downto 0))
Data_in_size : signal qui permet au top_coder de connaitre le nombre de
bits de données à l'entrée (std_ulogic_vector (31 downto 0))
Poly_gen_deg : signal qui permet au top_coder de connaitre le degré du
polynôme générateur (std_ulogic_vector (31 downto 0))
Poly_g, poly_f : signaux qui correspondent aux diérents coecients des
polynômes générateur F et G (std_ulogic_vector (64 downto 0))
Les signaux d'entrée/sortie constituent tous les signaux que le système doit
traiter. Ces signaux sont :
u : signal d'entré des symboles à coder. Cette entrée est sur un bit (std_ulogic)
S : signal de sortie des symboles codés. Cette sortie est sur 4 bits (std_ulogic_vector
(3 downto 0))
46
Détaillons, maintenant, les diérents objets qui constituent le top_coder.
47
Figure 4.3 Diagramme d'activité du Preprocess
48
la ram interne ou les registres externes et réutilisés dans l'itération suivante
(std_ulogic vector (15 downto 0)
Reg_out_i, i= [|1,4|] : signaux d'entée, provenant de la ram ou des re-
gistres externes, ils sont les valeurs de Reg_in_i dans l'itération antérieure
(std_ulogic vector (15 downto 0)
f_i, g_i, i= [|1,4|] : signaux d'entrée, ils présentent les coecients des poly-
nômes générateurs (std_ulogic vector (16 downto 0)
s_i, i= [|1,4|] : signaux de sorties des symboles codés. (std_ulogic)
49
4.7 Composant logic_control
50
Les signaux de sortie sont :
Enable : signal permettant d'activer l'opération du codage (std_ulogic)
M : signal indiquant le nombre des registres à utiliser pour le codage (integer)
Cpt : compteur pour le codage cyclique et m-séquence (integer)
Cpt_rst : compteur pour la préparation initial de la machine à états nis
(integer)
Cpt_conv : compteur pour le codage convolutif
Sub_cpt : compteur dans le cas ou m>64 (integer)
Fct_normal : signal qui indique si m>64 ou non (std_ulogic)
W_addr : adresses de la W_ram (integer)
Deuxième processus
Ce processus est aussi combinatoire, il permet, dans le cas d'un codage cyclique
ou m-séquence, de prendre une décision sur la longueur de la partie redondante (m)
à travers le signal fct_normal. Il produit, de plus, s'il s'agit bien d'un m>64 une
valeur limit_sub_cpt qui contrôle le compteur sub_cpt. Son diagramme d'activité
est représenté dans la gure 4.7.
51
Figure 4.7 Diagramme d'activité du deuxième processus du logic_control
Troisième processus
Ce processus est séquentiel, il produit les signaux enable, w_addr et select_m
ainsi que les diérents compteurs correspondant à l'opération adéquate :
Cpt_rst : ce compteur gère le premier état (prepar_iram) de la machine à
états nis et permet d'enclencher le signal enable responsable du fonction-
nement des autres compteurs et du fsm.
Cpt : c'est un compteur pour le codage cyclique ainsi que le m-séquence.
Son incrémentation dépend du signal fct_normal et il commande le passage
entre les deux états du codage.
Sub_cpt : ce compteur gère les sous-états du codeur cyclique ou m-séquence
dans le cas où m>64, il est inactif dans le cas échéant.
Cpt_conv : ce compteur dirige le déroulement du codage convolutif.
Son diagramme d'activité est présenté dans la gure 4.8.
Quatrième processus
Ce processus est aussi séquentiel, il ordonne l'enclenchement et le déclenche-
ment des diérents compteurs à travers les signaux enable_cpt et enable_cpt_conv.
La commande des ces deux signaux se fait suivant la valeur des compteurs rst_cpt,
cpt et cpt_conv. Son diagramme d'activité est présenté dans la gure 4.9.
52
Figure 4.8 Diagramme d'activité du troisième processus du logic_control
53
4.8 Composant FSM
54
Proc_machine(deuxième processus)
Ce processus présente la machine d'états nis, gure 4.11.
Proc_EXE(troisième processus)
Ce process eectue le réglage des diérents signaux de commande du Bloc_coder
relatif à chaque état.
Idle : c'est le premier état, le codeur est en état d'attente du signal start.
Tous les signaux sont à zéro.
55
Figure 4.12 Diagramme d'activité de l'état First_step
Second_step_cyc : si cpt=k, l'état actuel devient second_step_cyc. C'est
la deuxième étape du codage cyclique, la boucle de rétroaction est fermé en
mettant G0=0 et F0=0 pour décaler les bits de parité dans les registres. Elle
reste active tant que cpt<n sinon si cpt=n elle passe à l'état idle.
Les opérations eectuées dans cet état sont représentées dans le diagramme
d'activité de la gure 4.13(r=16).
56
Convolutif : si enable_conv est enclenché, l'état actuel prepar_iram passe à
l'état suivant convolutif. L'opération du codage convolutif va être exécutée
dans cette étape. Cet état reste actif si cpt-conv < n_conv sinon l'état passe
à idle.
Les opérations eectuées dans cet état sont représentées dans le diagramme
d'activité de la gure 4.14
57
second_step_LFSR : le passage à cet état s'eectue directement si cpt=k.c'est
l'étape principale du générateur des m-séquences et presque similaire au
deuxième état du codage cyclique.
Les opérations eectuées dans cet état sont représentées dans le diagramme
d'activité de la gure 4.16(r=16).
Proc_reg(quatrième processus)
Ce processus est utilisé dans le cas où m>64.Il permet de controler les signaux
de commande du bloc_4 du bloc_coder et aecter les registres reg_k et reg_x.
Sont diagramme d'activité est représenté dans la gure 4.17
58
Figure 4.17 Diagramme d'activité du Proc_reg
59
4.9 Composant regs_sup_64
Ce composant sera actif seulement si le mot code cyclique ou les m-séquence ont
une partie redondante supérieur à 64. Dans ce cas, cet objet regs_sup_64 eectue
le stockage des s_i dans les registres reg_x et reg_k et le stockage des regs_in
dans la mémoire interne w_ram ou dans des registres. Il comporte trois proces-
sus, deux séquentiels pour les registres et un combinatoire pour le contrôle des
entrées/sorties de la mémoire. Son architecture est présentée dans la gure 4.18.
60
cas_m : signal qui indique dans quel cas de m est l'état du codage (std_ulogic_vector
(1 downto 0))
Reg_out_i, i= [|1,4|] : signaux d'entée du bloc_coder (std_ulogic_vector
(15 downto 0)
Sram_data_out : signal de sortie de la w_ram (std_ulogic_vector (63
downto 0))
Les signaux de sortie sont :
Sram_data_in : signal d'entrée de la w_ram (std_ulogic_vector (63 downto
0))
Reg_in_i, i= [|1,4|] : signaux de sortie du bloc_coder (std_ulogic_vector
(15 downto 0)
Reg_k : signal de stockage (std_ulogic)
Reg_x : signal de stockage (std_ulogic)
61
Deuxième processus
La contrainte de la latence imposée par la mémoire nous a obligé d'ajouter deux
registres dans le cas où limit_sub_cpt=2. Ces registres sont dénis dans ce pro-
cessus séquentiel qui eectue le stockage des reg_out_i provenant du bloc_coder.
Le diagramme d'activité de ce processus est présenté dans la gure 4.20.
Troisième processus
C'est un processus combinatoire. Il permet l'interfaçage entre la ram interne
w_ram et le bloc_coder dans le cas ou m>128. Si limit_sub_cpt = 2 (64<m<128),
les valeurs du compteur cpt vont s'étalonner sur deux coups d'horloge ordonnés
suivant sub_cpt. Dans ce cas, on initialise les reg_in_i puis suivant sub_cpt on
aect à reg_in_i reg_1 ou reg_2. Dans le cas ou limit_sub_cpt>2, on procède
à l'interfaçage entre la w_ram et le bloc_coder. Le diagramme d'activité de ce
processus est présenté dans la gure 4.21.
62
Figure 4.21 Diagramme d'activité du troisième processus du regs_sup_64
4.10 W_ram
Le bloc w_ram est une sram interne [12] du top_coder avec une capacité de
stockage de 1Ko x 64 bits. Elle était conçue suivant la spécication du FPGA
VIRTEX 5 et implémentée de façon à permettre le piplining qui aura lieu dans
le codage cyclique ou la génération des m-séquence. Son architecture interne se
présente dans la gure 4.22.
63
Figure 4.23 Chronogramme du mode READ_FIRST
4.11 Simulations
64
d=input('Enter Data stream :') ;
code = encode(d,n,k,'cyclic',g)
**OUTPUT
Enter Length of code [n,k] :[7,4]
Enter generator polynomial co-e : [1 0 1 1]
Enter Data stream :[1 0 1 0]
code = 0 1 1 1 0 1 0
65
Les sorties du codeur convolutif sont :
Sout_1=1001110
Sout_2=1011010
La vérication de ce modèle est simple et correspond exactement aux sorties du
codeur représenté par la gure 4.26
Vous pouvez consulter l'annexe [C] pour vérier le fonctionnement des trois
blocs : logic_control, FSM et regs_sup_64 dans les cas de CRC(100,10),CRC(150,10)
et convolutif(13,10,3).
66
4.11.3 générateur de m-séquences
Comme vous l'avez déjà remarqué, notre générateur ne produit qu'une sé-
quences de longueur m (le degré du polynôme générateur), nous nous limiterons
dans notre simulation à ce cas, en sachant que nous devons dans notre futur travail
ajouter une entée qui indique le nombre des séquences nécessaire. nous avons tester
le modèle LFSR pour un cas très simple pour m=3, g=1011 et u (pour l'initiali-
sation des registres =1010)et la simulation a donné le chronogramme représenté
dans la gure 4.27
67
4.12 Conclusion
68
Chapitre 5
Conclusion
Dans le cadre du projet Idromel, nous avons présenté, dans ce rapport, la
conception et l'implémentation d'une architecture exible pour le codage canal.
Dans le deuxième chapitre, une étude théorique a été amenée du codeur cy-
clique, convolutif et du générateur des m-séquences. Nous avons exploité leurs
architectures an de mettre en place une architecture uniée.
Dans le troisième chapitre, nous avons présenté cette architecture et les dié-
rents blocs qui la constituent. Ensuite, nous avons détaillé les réglages nécessaires
des paramètres pour fournir le codeur convolutif, le codeur cyclique et le généra-
teur des m-séquences. La partie la plus importante du travail était consacrée au
codeur cyclique, son implémentation était un peu délicate et sensible au degré du
polynôme générateur. Pour le générateur des m-séquence, nous avons vu que son
implémentation est similaire à celle du codeur cyclique avec le réglage des para-
mètres et les diérents états et les modes de fonctionnement. L'implémentation du
codeur convolutif était la plus simple et la plus rapide à mettre en place.
Dans le quatrième chapitre, nous avons exposé l'implémentation matérielle de
cette architecture générique en présentant les diérentes entités qui composent le
bloc global. D'abord, nous avons cité les interconnexions, les entrées/sorties et
l'architecture de chaque composant. Ensuite, nous avons fait quelques simulations
avec Modelsim pour valider cette architecture.
Dans les deux mois à venir, nous allons améliorer le fonctionnement du géné-
rateur des m-séquence. Nous allons régler l'interfaçage avec la ram de sortie pour
pouvoir récupérer les diérents mots codes. Il nous reste encore à implémenter un
modèle de référence avec SystemC qui servira aussi à une simulation plus rapide
dans la chaine complète.
69
Annexes
A le projet Idromel
IDROMEL [7]est un projet de plateforme ANR 2005, ayant pour thème prin-
cipale la radio logicielle. Le projet IDROMEL a débuté en 2006 et se terminera au
début de l'année 2009. Il regroupe Eurecom (Chef de File), THALES, TELECOM,
ParisTech, le CEA, SIRADEL et Supéléc.
70
(en utilisant des techniques MIMO, Multiple Inputs Multiple Outputs), soit
pour pouvoir communiquer en utilisant deux standards diérents
une interface numérique/analogique et une partie bande de base intégrée
dans une architecture de type système sur puce (SoC).
Toutes les parties matérielles et logicielles seront intégrées dans un démonstrateur
qui présentera les principales caractéristiques d'un réseau d'accès recongurable.
Le fonctionnement de ce réseau sera validé par des expérimentations en vraie
grandeur à Sophia-Antipolis.
71
A.3 Réalisations
Gestion des ressources radio et propagation
cette activité comprend :
des études théoriques sur la propagation électromagnétique
des études sur la gestion des ressources radio.
72
Figure 5.2 Gestion du handover vertical
A.5 Caractéristiques
73
B Technologie FPGA
B.1 Introduction
Les FPGA [6](Field Programmable Gate Arrays ou "réseaux logiques program-
mables") sont des composants VLSI entièrement recongurables. Les énormes pro-
grès réalisés dans ces technologies permettent de réaliser des composants toujours
plus rapides, à plus haute intégration, comportant toujours plus de fonctions em-
barquées et orant la possibilité de programmer des applications de plus en plus
importantes. Aujourd'hui, il est de plus en plus courant de concevoir une première
réalisation de son algorithme sur FPGA, qui est rapide et peu coûteuse, avant de
passer à la conception sur un ASIC. Ce type de circuit possède un prix de pro-
duction relativement bas lorsqu'il est produit en grande quantité mais exige un
passage chez le fondeur, ce qui implique des frais de développement élevés. Une
première réalisation sur FPGA évite donc les surcoûts dus aux modications.
En comparaison avec d'autres types de circuits, les FPGA orent un délai
de conception relativement court et permettent de tester facilement une réalisa-
tion. Parmi les désavantages des FPGA, nous pouvons citer un prix unitaire élevé,
des performances électriques inférieures aux puces spécialisées (notamment en fré-
quence) et un taux d'utilisation du circuit en général assez faible.
74
fonction booléenne sur ces entrées. Comme l'indique la gure 5.4, il y a deux look-
up table dans une slice et un certain nombre de multiplexeurs qui, combinés aux
look-up table, permettent de générer des fonctions booléennes allant jusqu'à huit
entrées. La slice possède également d'autres portes logiques et des registres. La
moitié supérieure d'une slice est représentée à la gure 5.5, la moitie inférieure
étant semblable.
75
Figure 5.6 Congurable Logic Block
76
Figure 5.7 Programmation d'un FPGA
77
C Simulations
Dans cette section nous présentons les simulations des trois blocs : logic_control,
FSM et regs_sup_64 dans les cas de CRC(100,10),CRC(150,10) et convolutif(13,10,3).
C.1 Logic_control
CRC(100,10)
CRC(150,10)
Convolutif(13,10,3)
78
Figure 5.10 Fonctionnement du logic_control dans Convolutif(13,10,3)
C.2 FSM
CRC(100,10)
79
CRC(150,10)
Convolutif(13,10,3)
80
Figure 5.13 Fonctionnement du FSM dans Convolutif(13,10,3)
C.3 Regs_sup_64
CRC(100,10)
81
CRC(150,10)
Convolutif(13,10,3)
82
D Diagrammes d'activité
83
Pour un processus combinatoire décrit par les lignes suivantes :
Process(A,B,D,E)
Begin
if (A=B) then
C<= D ;
else
C<=E ;
end if ;
end process ;
Est représenté par le diagramme d'activité gure 5.19 :
84
Glossaire
SOC : "System on Chip", système sur puce,désigne un système complet emb-
arqué sur une puce, pouvant comprendre de la mémoire(data/code),un
ou plusieurs microprocesseurs,des périphériques d'interface,ou tout
autre composant à la réalisation de la fonction attendue.
IP : "Intellectual Propriety".
CRC : Contrôle de redondance cyclique (Cyclic Redundancy Check)
LFSR : "Linear Feedback Shift Registre", Registre à décalege
à rétroaction linéaire.
FSM : "Finite State Machine", machine à états nis
ASIC : "Application-Specic Integrated Circuit", un circuit
intégré spécialisé.
FPGA : "Field-Programmable gate array" réseau de portes programmables.
VLSI : "Very-Large-Scale Integration", un technologie de circuit intégré
dont la densité d'intégration permet de supporter plusde 100 000
composants électroniques sur une même puce.
LUT : "Look-Up Table", une table de correspondance, qui permet d'associer
des valeurs. Elle se comporte un peu comme une table de vérité,
et désigne sa sortie en fonction des ses entrées et du contenu de
la table.
SRAM "Static Random Access Memory", un type de mémoire vive utilisant
des bascules pour mémoriser les données.
VHDL : "Very High Speed Integrated Circuit Hardware Description Language",
un langage de description matériel destiné à décrire le comportement
et/ou l'architecture d'un système électronique numérique.
85
Bibliographie
[1] XPP PACT, http ://www.pactcorp.com, consulté le 10/06/2008
[2] HIVE, http ://www.siliconhive.com, consulté le 10/06/2008
[3] Xilinx, http ://www.xilinx.com, consulté le 10/06/2008
[4] Altera, http ://www.altera.com, consulté le 10/06/2008
[5] Shu Lin, Daniel J.Costello,JR., "Error control coding :
Fundamentals and Applications", Illinois institute of
Technology.
[6] Virtex-5, http ://www.xilinx.com, consulté le 10/06/2008
products/silicon_solution/fpgas/virtex/virtex5/index.htm,
consulté le 10/06/2008
[7] IDROMEL, http ://www.openairinterface.org/
page1007/page1021.fr.htm, consulté le 10/06/2008
[8] Alain Glavieux, Michal Joint, "Communications numériques :
Introduction",Collection : Sciences Sup,Parution : 16/08/2007
[9] Matthias Kamuf, John B.Anderson, and Viktor Owall,
"Providing exibility in a convolutional encoder"Lund
University,SE-221 00 lund, Sweden
[10] A. Klapper and M. Goresky. "Fibonacci and galois represen-
tations of feedback-with-carry shift registers".IEEE Tran-
sactions of Information Theory,48(11) : 2826-2836, Nov 2002
[11] Pong P.Chu, "RTL hardware design using VHDL,coding eci-
ency,portability,and scalability".Clevland State University
[12] http ://www.xilinx.com/products/silicon_solutions/fpgas/virtex
/virtex5/capabilities/block_ram.htm, consulté le 10/06/2008
86