Vous êtes sur la page 1sur 99

Cycle de formation des ingénieurs en Télécommunications

Option :
Architectures des Systèmes de Télécommunications

Rapport de Projet de fin d’études

Thème :

Conception et implémentation hardware


d’un émetteur/récepteur BFDM

Réalisé par :

SLIM EL ABED

Encadré par :

M. Fathi TLILI

M. Mohamed SIALA

Travail proposé et réalisé en collaboration avec la société Smart-Waves

Année universitaire : 2006/2007


i

Dédicace

A mon cher père,

et ma chère mère,

pour l’éducation et le grand amour dont ils m’ont entouré depuis ma naissance.

Et pour leurs patiences et leurs sacrifices.

A mon cher frère et mes adorables sœurs,

A tous mes proches ;

A tous mes ami(e)s;

A tous ceux que j’aime.

Je dédie ce mémoire.
ii

Remerciement

Je profite de cette occasion pour remercier tous ceux qui m’ont aidé à réaliser

ce projet dans les meilleures conditions.

Je tiens à exprimer mes vifs remerciements en premier lieu à mes deux

encadreurs, Mr. Fathi TLILI & Mr. Mohamed SIALA, Pour l’aide déterminante

qu'ils m’ont accordée et pour l’intérêt qu'ils ont porté à mon projet. Qu'ils

trouvent ici l'expression de mon profond respect.

Je ne manquerai pas cette occasion pour remercier mes enseignants Mr.

Hichem BESBES et Mr. Sofien CHERIF pour leur sympathie et leur

disponibilité.

Ce mémoire s’appuie sur les travaux Mlle Ismahen NASRI. Je la remercie pour

son aide précieuse et sa collaboration durant la période ce projet.

Enfin, je tiens à exprimer ma gratitude aux membres de jury qui ont accepté de

juger ce travail.
iii

Résumé

Ce projet porte sur la mise en place d’une solution hardware pour un système de transmission
basé sur la technique de modulation BFDM (Biorthogonal Frequency Division Multiplexing)
avec forme d’onde optimisée. Il constitue la continuité de plusieurs travaux de recherches
effectués dans ce thème qui avaient montré l’intérêt que peut nous apporter cette technique de
modulation par rapport aux systèmes OFDM conventionnels. De ce fait, la réalisation d’un tel
système fournirait une solution aux limites imposées par le canal radio-mobile limitant le
débit supporté. En conséquence, nous pouvons envisager l’utilisation du contenu multimédia
gourmand en termes de débit pour les récepteurs mobiles ce qui entrainera la possibilité
d’enrichir les services offerts par les entreprises du monde du TIC.

L’objectif de ce travail est de concevoir l’architecture d’un émetteur/récepteur BFDM et de


l’implémenter sur FPGA. La partie synchronisation sera considérée dans la phase de la
conception mais son implémentation ne sera pas incluse dans ce projet. Il en est de même
pour l’égalisation fréquentielle du canal.

La simulation avec ModelSim a permis de confirmer que l’objectif de ce projet est atteint.

Mots clés : Modulation BFDM, transformée de Fourier rapide, filtrage, égalisation


fréquentielle, implémentation VHDL, Simulation.
iv

TABLE DES MATIERES

INTRODUCTION GENERALE ....................................................................... 1

CHAPITRE 1 : PRINCIPE DES SYSTEMES BFDM .................................... 3

1.1. INTRODUCTION ................................................................................................................. 4


1.2. LES SYSTEMES OFDM...................................................................................................... 5
1.2.1. Principe de la modulation OFDM ........................................................................................ 6
1.2.2. Principe de la démodulation................................................................................................. 8
1.2.3. Techniques d'implémentation des modulateurs OFDM........................................................ 9
1.2.4. Implantation numérique du démodulateur ......................................................................... 10
1.2.5. Egalisation et séquences d'apprentissage........................................................................... 10
1.2.6. Intervalle de garde.............................................................................................................. 11
1.3. FAIBLESSES DE LA FORME D’ONDE RECTANGULAIRE DE L’OFDM ................................. 13
1.3.1. Offset fréquentiel ................................................................................................................ 13
1.3.2. Effet de l’étalement Doppler............................................................................................... 14
1.4. OPTIMISATION DE LA FORME D'ONDE POUR LA MODULATION BFDM ............................. 14
1.5. CONCLUSION .................................................................................................................. 15

CHAPITRE 2 : CONCEPTION DE L’ARCHITECTURE DE


L’EMETTEUR/RECEPTEUR BFDM ........................................................... 16

2.1. INTRODUCTION ............................................................................................................... 17


2.2. CONCEPTION DE L'EMETTEUR BFDM ............................................................................. 17
2.2.1. Etude fonctionnelle ............................................................................................................. 17
2.2.2. Architecture interne de l’émetteur...................................................................................... 20
2.2.2.1. Description de l’IP XFFT de Xilinx ............................................................................................................ 20
2.2.2.2. Etage de filtrage........................................................................................................................................... 20
2.2.2.3. Sélection des porteuses actives et insertion des symboles pilotes................................................................ 24
2.2.2.4. Etage de mapping ........................................................................................................................................ 27
v

2.2.2.5. Générateur d’horloges ................................................................................................................................. 28

2.3. CONCEPTION DU RECEPTEUR BFDM .............................................................................. 29


2.3.1. Etude fonctionnelle ............................................................................................................. 29
2.3.2. Architecture interne ............................................................................................................ 30
2.3.2.1. Etage de filtrage à la réception .................................................................................................................... 30
2.3.2.2. Démapping .................................................................................................................................................. 33
2.3.2.3. Extraction des Symboles Pilotes.................................................................................................................. 33

2.4. CONCLUSION .................................................................................................................. 34

CHAPITRE 3 : IMPLEMENTATION SUR FPGA DE


L’EMETTEUR/RECEPTEUR BFDM ........................................................... 35

3.1. INTRODUCTION ............................................................................................................... 36


3.2. IMPLEMENTATION SUR FPGA DE L’EMETTEUR............................................................... 37
3.2.1. Etage de Mapping............................................................................................................... 37
3.2.2. Génération et configuration de l’IP XFFT de Xilinx.......................................................... 38
3.2.3. Filtrage à l’émission........................................................................................................... 43
3.2.4. Sélection des porteuses et insertion des symboles pilotes .................................................. 44
3.2.5. Générateur d'horloges ........................................................................................................ 45
3.3. IMPLEMENTATION DU RECEPTEUR BFDM ...................................................................... 46
3.3.1. Etage de filtrage à la réception .......................................................................................... 47
3.3.2. Extraction des Symboles Pilotes ......................................................................................... 48
3.3.3. Démapping.......................................................................................................................... 49
3.4. CONCLUSION .................................................................................................................. 49

CHAPITRE 4 : SIMULATION ET SYNTHESE DE


L’EMETTEUR/RECEPTEUR BFDM ........................................................... 51

4.1. INTRODUCTION ............................................................................................................... 52


4.2. RESULTATS DE SIMULATION DE L'EMETTEUR/RECEPTEUR BFDM .................................. 52
4.2.1. Mapping et Démapping ...................................................................................................... 52
4.2.2. Sélection, insertion et extraction des symboles pilotes....................................................... 54
4.2.3. Simulation du Core XFFT : ................................................................................................ 56
4.2.4. Filtrage ............................................................................................................................... 57
4.2.5. Générateur d’horloges........................................................................................................ 58
4.3. RESULTATS DE SYNTHESE DE L'EMETTEUR/RECEPTEUR BFDM ...................................... 60
4.3.1. Synthèse de l’étage Mapping .............................................................................................. 61
4.3.2. Synthèse de l’étage Demapping.......................................................................................... 62
vi

4.3.3. Synthèse du bloc « Sélection des porteuses et insertion des SP » ...................................... 64


4.3.4. Synthèse du bloc « Sélection des porteuses et extraction des SP » .................................... 65
4.3.5. Synthèse du bloc « Générateur d’horloges »...................................................................... 66
4.3.6. Synthèse du bloc « Filtrage » ............................................................................................. 68
4.4. CONCLUSION .................................................................................................................. 70

CONCLUSION ET PERSPECTIVES ............................................................ 70

BIBLIOGRAPHIE ............................................................................................ 72

ANNEXE A : CARACTERISATION DE L’ENVIRONNEMENT RADIO-


MOBILE............................................................................................................. 74
1. Les variations à grande et moyenne échelle............................................................................. 74
2. Les variations à petite échelle .................................................................................................. 75
3. Modèle de canal........................................................................................................................ 75
3.1. Modèle statique du canal radio-mobile.............................................................................................................. 75
3.2. Modèle dynamique du canal radio-mobile......................................................................................................... 76

ANNEXE B : LE CORE XFFT DE XILINX.................................................. 79

ANNEXE C : RAPPORTS DE SYNTHESE .................................................. 82


vii

LISTE DES FIGURES

FIGURE 1.1 : SCHEMA DE PRINCIPE DU MODULATEUR OFDM. ................................................ 6


FIGURE 1.2 : SPECTRE EN SORTIE DU MODULATEUR OFDM. ................................................... 7
FIGURE 1.3 : SCHEMA DE PRINCIPE DU DEMODULATEUR OFDM. ............................................ 8
FIGURE 1.4 : MODULATEUR OFDM NUMERIQUE. ................................................................... 9
FIGURE 1.5 : DEMODULATEUR OFDM NUMERIQUE. ............................................................. 10
FIGURE 1.6 : INTERVALLE DE GARDE POUR LES SYMBOLES OFDM. ...................................... 11
FIGURE 1.7 : EMETTEUR ET RECEPTEUR OFDM. ................................................................... 12
FIGURE 1.8 : SCHEMA BLOC EMETTEUR ET RECEPTEUR 802.11A. .......................................... 12
FIGURE 2.1 : L'EMETTEUR BFDM VU DE L'EXTERIEUR. ......................................................... 18
FIGURE 2.2 : SCHEMA BLOC DE LA CONCEPTION DE L'EMETTEUR. ......................................... 18
FIGURE 2.3 : SCHEMA EXPLICATIF DE L’OPERATION DE FILTRAGE A L’EMISSION................... 21
FIGURE 2.4 : CONCEPTION DU BLOC FILTRAGE A L'EMISSION................................................. 23
FIGURE 2.5: CONCEPTION DU BLOC SELECTION DE PORTEUSES ET INSERTION DES SP. .......... 25
FIGURE 2.6 : DISPOSITION DES SP ET DES PORTEUSES DESACTIVEES. .................................... 26
FIGURE 2.7 : CONSTELLATION DE LA MODULATION QAM16................................................. 27
FIGURE 2.8 : SCHEMA CONCEPTUEL DU BLOC MAPPING........................................................ 28
FIGURE 2.9 : SCHEMA CONCEPTUEL DU RECEPTEUR. ............................................................. 30
FIGURE 2.10 : SCHEMA CONCEPTUEL DU BLOC « FILTRAGE » A LA RECEPTION...................... 32
FIGURE 2.11 : SCHEMA CONCEPTUEL DU BLOC « DEMAPPING »............................................ 33
FIGURE 2.12 : CONCEPTION DE L’ETAGE « EXTRACTION DES SP ». ....................................... 34
FIGURE 3.1 : INTERFACE DE L’OUTIL XILINX CORE GENERATOR......................................... 39
FIGURE 3.2 : CONFIGURATION DU CORE XFFT, INTERFACE 1................................................ 40
FIGURE 3.3 : CONFIGURATION DU CORE XFFT, INTERFACE 2................................................ 41
FIGURE 3.4 : CONFIGURATION DU CORE XFFT, INTERFACE 3................................................ 42
FIGURE 3.5 : EXTRAIT DU CODE SOURCE DE « INDEX_CIRC_GEN.VHD »................................ 44
FIGURE 3.6 : DECLARATION DU COMPOSANT « BLOCKDRAM ». ............................................ 45
FIGURE 3.7 : DECLARATION DU COMPOSANT « CLK_GEN »................................................... 46
viii

FIGURE 3.8 : DECLARATION DU BLOC « ORGANIZER ».......................................................... 47


FIGURE 3.9 : DECLARATION DU BLOC « SELECTION DES PORTEUSES ET EXTRACTION DES SP ».
.............................................................................................................................................. 49
FIGURE 3.10 : EXTRAIT DU CODE DE L’ETAGE « DEMAPPING » ............................................. 49
FIGURE 4.1 : SIMULATION DE L’ETAGE « MAPPING »............................................................ 53
FIGURE 4.2 : SIMULATION DE L’ETAGE « DEMAPPING » ET VISUALISATION DU BITSTREAM.. 53
FIGURE 4.3 : SIMULATION DU BLOC « INSERTION DES SYMBOLES PILOTES ». ........................ 55
FIGURE 4.4 : SIMULATION DU BLOC « EXTRACTION DES SYMBOLES PILOTES ». .................... 55
FIGURE 4.5 : SIMULATION DU CORE XFFT EN MODE ‘FORWARD’ (I.E. FFT). ....................... 56
FIGURE 4.6 : ZOOM SUR LE DEBUT DE LA SORTIE DE L’FFT................................................... 56
FIGURE 4.7 : SUPERPOSITION DES COURBES DE FILTRAGE. .................................................... 57
FIGURE 4.8 : INTRODUCTION DE L’EFFET DE QUANTIFICATION SUR L’OPERATION DE FILTRAGE.
.............................................................................................................................................. 58
FIGURE 4.9 : OBSERVATION DU DEPHASAGE ENTRE LES SIGNAUX HORLOGES GENERES......... 59
FIGURE 4.10 : SIMULATION DU GENERATEUR D’HORLOGES. .................................................. 60
FIGURE 4.11 : SCHEMA RTL EXTERNE DU BLOC « MAPPING ».............................................. 61
FIGURE 4.12 : SCHEMA RTL INTERNE DU BLOC « MAPPING »............................................... 62
FIGURE 4.13 : SCHEMA RTL EXTERNE DU BLOC « DEMAPPING ».......................................... 63
FIGURE 4.14 : SCHEMA RTL INTERNE DU BLOC « DEMAPPING ». ......................................... 63
FIGURE 4.15 : SCHEMA RTL EXTERNE DU BLOC « SELECTION DES PORTEUSES ET INSERTION
DES SP »................................................................................................................................ 64
FIGURE 4.16 : SCHEMA RTL INTERNE DU COMPOSANT BLOCK_DRAM.................................. 65
FIGURE 4.17 : SCHEMA RTL EXTERNE DU BLOC « SELECTION DES PORTEUSES ET EXTRACTION
DES SP »................................................................................................................................ 66
FIGURE 4.18 : SCHEMA RTL EXTERNE DU BLOC « GENERATEUR D’HORLOGES ».................. 67
FIGURE 4.19 : SCHEMA RTL EXTERNE DU BLOC « FI_MUL_I ». ............................................ 69
ix

LISTE DES TABLEAUX

TABLEAU 2.1 : NOMBRE DES SP ET DES PORTEUSES DESACTIVEES DE L’IFFT. ..................... 26


TABLEAU 3.1 : MAPPING, CHOIX DE IOUT. .............................................................................. 37
TABLEAU 3.2 : MAPPING, CHOIX DE QOUT. ............................................................................. 38
TABLEAU 3.3 : DIFFERENCES DANS LE FONCTIONNEMENT DES ETAGES DE FILTRAGE ........... 47
TABLEAU 4.1 : VALEURS INITIALES DES COMPTEURS POUR LE GENERATEUR D’HORLOGES.... 59
TABLEAU 4.2 : RECAPITULATION DES RESULTATS DE SYNTHESE........................................... 69
TABLEAU B.1 : RESUME DES BROCHES DU CORE XFFT ........................................................ 81
TABLEAU C.1 : SYNTHESE DU BLOC « MAPPING » ................................................................ 82
TABLEAU C.2 : SYNTHESE DU BLOC « DEMAPPING » ............................................................ 83
TABLEAU C.3 : SYNTHESE DU BLOC « SELECTION DES PORTEUSES ET INSERTION DES SP » .. 84
TABLEAU C.4 : SYNTHESE DU BLOC « SELECTION DES PORTEUSES ET EXTRACTION DES SP »
.............................................................................................................................................. 85
TABLEAU C.5 : SYNTHESE DU BLOC « CLOCK GENERATOR » ................................................ 86
TABLEAU C.6 : SYNTHESE DU COMPOSANT « ADDRESS_GENERATOR »................................. 87
TABLEAU C.7 : SYNTHESE DU COMPOSANT « FI_MUL_I » ..................................................... 88
x

Liste des Acronymes

ADC : Analog to Digital Converter IP : intellectual Property

ADSL : Asymmetric Digital ISI : inter Symbols interferences


Subscriber Line
MAQ : Modulation
BFDM: Biorthogonal Frequency d’Amplitude en Quadrature
Division Multiplexing
OFDM : Orthogonal Frequency
CPOFDM : Cyclic Prefix OFDM Division Multiplexing

DAC : Digital to Analog Converter P/S, S/P : conversion Parallèle /Série,


Série/Parallèle
DVB-T : Digital Video Broadcast-
Terrestrial QAM : Quadrature
Amplitude Modulation
FEC : Forward Error Correction
RAM : Random Access
FFT : Fast Fourier Transform
memory
FPGA : Field Programmable Gate
ROM : Read Only Memory
Array
RTL : Register Transfer Level
ICI : Inter Carrier Interference
SP : Symboles Pilotes
IEEE : Institute of Electrical
and Electronics Engineers TFR : Transformée de Fourier
rapide
IES : Interférences Entre
Symboles VHDL : VHSIC hardware
description language
IFFT : Inverse Fast Fourier
Transform VHSIC : very high-speed Integrated
Circuit
Introduction 1

Introduction générale

Depuis quelques années, de plus en plus d’importance a été accordée à la technique de


modulation OFDM, les chercheurs voyaient dans cette technique la solution efficace et
pratique aux problèmes de sélectivité imposés par le canal (support de transmission) dans le
cas des systèmes de transmission haut débit. Par conséquent, des systèmes développés comme
le DVB-T et l’ADSL ont vu le jour grâce à l’adoption de cette technique de modulation.
Malheureusement, dans le cas d’un canal radio-mobile caractérisé par une grande sélectivité
temporelle, les performances de la modulation OFDM se dégradent. Ceci peut s’expliquer par
la délocalisation fréquentielle de la forme d’onde rectangulaire utilisée dans l’OFDM. Ainsi,
en modifiant la forme d’onde à l’émission et à la réception, nous pouvons corriger ce défaut.
Nous passons donc à la technique de modulation BFDM qui diffère à l’OFDM par le fait que
la forme d’onde à l’émission et celle à la réception sont différentes de la fonction rectangle
adoptée par les modulateur OFDM.

Pour implémenter un système de transmission multiporteuse, l’utilisation de l’FFT s’avère


très efficace et permet de réduire l’ordre de complexité de l’émetteur et du récepteur. C’est
d’ailleurs ça qui rend l’implémentation d’un émetteur BFDM possible sur une carte FPGA.

Nous avons choisit d’organiser ce mémoire en quatre chapitres. Le premier chapitre présente
les notions techniques des modulations OFDM et BFDM.

Le deuxième chapitre est consacré à l’élaboration de la conception de l’architecture de


l’émetteur/récepteur BFDM. Nous y verrons le schéma général de l’émetteur et du récepteur
et nous détaillerons ensuite la conception de chaque étage.
Introduction 2

La phase de l’implémentation est décrite au niveau du troisième chapitre et enfin dans le


dernier chapitre, nous exposons les résultats de simulation et de synthèse des composants de
l’émetteur et du récepteur BFDM implémentés.
3

Chapitre 1 : Principe des


systèmes BFDM
Chapitre 1 : Principe des systèmes 4

1.1. I NTRODUCTION

Un signal radiofréquences est émis sur un canal, qui constitue son support physique. Ainsi
toute transmission numérique est limitée par les contraintes physiques de son support.

Un canal est dit sélectif en fréquence lorsqu'il ne se comporte pas identiquement suivant la
fréquence du signal. Certaines fréquences seront atténuées plus que d'autres. Le signal sera
alors déformé lors de la transmission : les données seront dispersées dans le temps, pouvant
mener à des interférences entre symboles.

Du fait des nombreuses réflexions que le signal peut subir en environnement urbain, le
récepteur recevra une série d'échos d'amplitudes et de retards variables. Cette problématique
du canal à trajets multiples est critique dans le cas d'un canal radio-mobile, c'est-à-dire lorsque
le récepteur et l'émetteur ne sont pas fixes relativement. Les différents échos et amplitudes qui
varient dans l'espace, ils entraînent des variations dans le canal vu par le récepteur mobile.

Ces problématiques sont d'autant plus d'actualité que les débits transmis augmentent
exponentiellement, et donc la bande de fréquence nécessaire pour transporter ces informations
à haut débit. Or l'effet de la sélectivité en fréquence des canaux sur la dégradation des
performances augmente avec la largeur de bande de fréquence du signal transmis.

La famille des modulations multiporteuses dont fait partie l'OFDM permet de répondre à cet
enjeu en utilisant des sous-porteuses peu sensibles aux multitrajets et à la sélectivité en
fréquence, faciles à égaliser.

Dans ce chapitre, nous nous proposons de définir les systèmes OFDM ainsi que les moyens
d'implémenter les chaînes de transmission basées sur la modulation OFDM en utilisant la
transformée de fourrier rapide (TFR). Nous verrons ensuite les limites de cette technique et
les caractéristiques de la modulation BFDM.
Chapitre 1 : Principe des systèmes 5

1.2. L ES SYSTEMES OFDM

Les problèmes de multi-trajet et de sélectivité fréquentielle (Annexe A) sont d'autant plus


importants que le débit de transmission augmente, car la bande de fréquence nécessaire pour
transporter ces informations à haut débit augmente. Or l'effet de la sélectivité en fréquence
des canaux sur la dégradation des performances augmente avec la largeur de bande de
fréquence du signal transmis.

Dans le cas mono-porteuse, les processus d'égalisation censés compenser les effets des multi-
trajets et de la sélectivité en fréquence des canaux sont cependant d'une grande complexité
lorsque le canal varie beaucoup dans le temps. Ils nécessitent de plus la connaissance à tout
instant de la fonction de transfert du canal de transmission.

La famille des modulations multi-porteuses dont fait partie l'OFDM (Orthogonal Frequency
Division Multiplexing) permet de répondre à cet enjeu en utilisant des sous-porteuses peu
sensibles aux multi-trajets et à la sélectivité en fréquence, faciles à égaliser.

Cette technique de modulation consiste à répartir les symboles sur un grand nombre de
porteuses à bas débit, à l'opposé des systèmes mono-porteuses qui transmettent les symboles
en série, chaque symbole occupant alors toute la bande passante disponible.

Ainsi dans le cas de l'OFDM, pour un train de symboles initial de période TSi , les Symboles
seront répartis en N trains plus lents et auront alors une durée TS = N*TSi. Cette diminution du
rythme symbole entraîne une diminution des interférences entre symboles d'un rapport N.
Ainsi, dans le cas mono-porteuse, pour un débit symbole de 10 Msymboles/s transmis sur un
canal radio de distorsion maximale τm = 250 µs, un symbole interfère avec K=250 * 10 =
2500 Symboles. Le processus d'égalisation s'effectuant par bloc est très complexe. En
revanche, en répartissant ces symboles sur N = 2048 porteuses, moins de 2 symboles rentrent
en interférence, ce qui simplifie énormément l'égalisation du canal [1].
Chapitre 1 : Principe des systèmes 6

1.2.1. P RINCIPE DE LA MODULATION OFDM

Pour répartir les données à transmettre sur les N porteuses, on groupe les symboles ck par
paquets de N. Les ck sont des nombres complexes définis à partir des éléments binaires par
une constellation souvent de modulation MAQ à 4, 16, 64, 2q états.

La séquence de N symboles c0 , c1 , ..., cN-1 constitue un symbole OFDM. Le k-ième train de


symboles parmi les N trains module un signal de fréquence fk. Le signal modulé du train k
s'écrit sous forme complexe :

Le signal total s(t) correspondant à l'ensemble des N symboles réassemblés en un symbole


OFDM :

c0

c1

c2
b0, b1, … c0, c1 ,
MAQ 2q
Eléments
.
.
.
.
. Symbole
cN-1
s OFDM

Figure 1.1 : Schéma de principe du modulateur OFDM.


Chapitre 1 : Principe des systèmes 7

Les fréquences sont orthogonales si l'espace entre deux fréquences adjacentes fk et fk+1 est
1/Ts. En effet, chaque porteuse modulant un symbole pendant une fenêtre rectangulaire
temporelle de durée Ts, son spectre en fréquence est un sinus cardinal, qui est une fonction qui
s'annule tous les multiples de 1/Ts.

fk = f0 + k/Ts (1.2)

Figure 1.2 : Spectre en sortie du modulateur OFDM.

Ainsi, lorsque l'échantillonnage est effectué précisément à la fréquence fk d'une sous-porteuse,


il n'y a aucune interférence avec les autres sous-porteuses. C'est ce qui permet de recouvrir les
spectres des différentes porteuses et d'obtenir ainsi une occupation optimale du spectre. Le
nombre de sous-porteuses N est choisi de manière à remplir les deux conditions primordiales
Ts >> Tm afin de pouvoir considérer le canal plat et Ts << 1/Bd pour considérer le canal
statique pendant la transmission du symbole OFDM [1].
Chapitre 1 : Principe des systèmes 8

1.2.2. P RINCIPE DE LA DEMODULATION

Le signal parvenu au récepteur s'écrit sur une durée symbole Ts :

Où Hk (t) est la fonction de transfert du canal autour de la fréquence fk et à l'instant t. Cette


fonction varie lentement et on peut la supposer constante sur la période Ts (Ts<<1/Bd) .La
démodulation classique consisterait à démoduler le signal suivant les N sous-porteuses suivant
le schéma classique détaillé dans la figure 1.3.

Filtre

Filtre

y(t)

Filtre

Figure 1.3 : Schéma de principe du démodulateur OFDM.


Chapitre 1 : Principe des systèmes 9

1.2.3. T ECHNIQUES D ' IMPLEMENTATION DES MODULATEURS OFDM

L'analyse algébrique indique que le signal de sortie s(t) est sous la forme :

En discrétisant ce signal et en le ramenant en bande de base pour l'étude numérique, on


obtient une sortie s(n) sous la forme :

Les sn sont donc obtenus par une transformée de Fourier inverse discrète des ck. En
choisissant le nombre de porteuses N tel que N = 2n, le calcul de la transformée de Fourier
inverse se simplifie et peut se calculer par une simple IFFT [2] nous conduisant au schéma
numérique suivant :

C0(

C1(
C(
S/P IFFT P/S

CN-

Figure 1.4 : Modulateur OFDM numérique.


Chapitre 1 : Principe des systèmes 10

1.2.4. I MPLANTATION NUMERIQUE DU DEMODULATEUR

L'analyse théorique définit le signal discrétisé reçu au niveau du démodulateur sous la forme :

zn est la transformée de Fourier discrète inverse de ck Hk , la démodulation consiste donc à


effectuer une transformée de Fourier directe discrète. Le nombre de porteuses ayant été choisi
tel que N = 2n, on peut réaliser ce calcul à l'aide d'une FFT[2]. On obtient alors le schéma de
principe suivant :

C0(

nTs C1(
Zn
S/P FFT P/S

CN-

Figure 1.5 : Démodulateur OFDM numérique.

1.2.5. E GALISATION ET SEQUENCES D ' APPRENTISSAGE

La connaissance des Hk (t) qui caractérisent chaque canal est nécessaire à l'égalisation dans la
démodulation OFDM. Le processus visant à découvrir les paramètres du canal est appelé
estimation du canal. Il s'effectue par la transmission de séquences d'apprentissage sur
différentes fréquences et à différents instants. Le système de transmission devient dynamique
et beaucoup plus complexe à modéliser.
Chapitre 1 : Principe des systèmes 11

1.2.6. I NTERVALLE DE GARDE

Un des grands avantages de l’OFDM est sa robustesse vis-à-vis des canaux sélectifs en
fréquence. En divisant le flux de données en N sous-porteuses, la durée symbole est N fois
plus grande. Ainsi le rapport délai canal/durée symbole est réduit par le même facteur.

L’impact de l’interférence entre symboles (IES) est donc considérablement affaibli [2].

Cependant, il peut subsister une légère interférence entre les symboles OFDM. En effet, les
symboles subissent des échos et un symbole émis parvient au récepteur sous forme de
plusieurs symboles atténués et retardés. Un symbole émis lors d’une période iTs peut se
superposer à un écho provenant du symbole émis à la période (i+1)Ts. Pour résister contre ces
interférences, on ajoute un intervalle de garde d’une durée ∆ comme l’indique la figure (1.6).

Intervalle de

Symbole Symbole Symbole

Figure 1.6 : Intervalle de garde pour les symboles OFDM.

Afin que les interférences soient éliminées, il faut que l’intervalle de garde soit plus grand que
le plus grand des retards Tm qui apparaissent sur le canal. En pratique, on choisit l’intervalle
de garde de durée égale au quart du temps symbole OFDM, ce qui représente un bon
compromis entre la diminution des erreurs et la perte du débit utile.

Suite à l’introduction de l'intervalle de garde, on peut représenter les différentes étapes de la


modulation OFDM par le schéma bloc de la figure 1.7 [2] :
Chapitre 1 : Principe des systèmes 12

S1 … Sp Ajout préfixe Filtre


S/ IFFT P/S
cyclique d’émissio

Cana

1/T
1 … p Retrait Filtre de
P/ FFT P/S
préfixe réceptio

Figure 1.7 : Emetteur et récepteur OFDM.

La figure 1.8 illustre un exemple d'utilisation de la modulation OFDM dans une chaine de
transmission WIFI 802.11a [3].

Emetteur

Flux Modulation S/P P/S Sortie


FEC Sortie IFFT 64
d’entrée 16 QAM 48 bandes 64 DAC
à 48 points
à 36 Sortie 12 250 kBaud
bandes

Récepteur

P/S Démodulatio Flux de


S/P Sortie FFT 64 FEC Sortie
ADC 64 48 bandes n 16 QAM sortie à 36
points à 36
250 kBaud Sortie 48 MHz Mbit/s
bandes

Figure 1.8 : Schéma bloc émetteur et récepteur 802.11a.


Chapitre 1 : Principe des systèmes 13

1.3. F AIBLESSES DE LA FORME D ’ ONDE RECTANGULAIRE DE


L ’OFDM

Les systèmes OFDM utilisent des impulsions rectangulaires en racine de NYQUIST pour
permettre une transmission avec une efficacité spectrale optimale. Les impulsions
rectangulaires en temps ne sont pas bien localisées en fréquence. Cette mauvaise localisation
fréquentielle va largement influer sur l’orthogonalité entre les sous-porteuses surtout si le
canal présente des variations temporelles sévères dues à des décalages Doppler importants. De
plus, une mauvaise localisation en fréquence peut augmenter la sensibilité aux offsets
fréquentiels.

Pour combattre ces points faibles, plusieurs travaux [4],[5] [6] et [7] ont été réalisés pour
mettre en œuvre une forme d'onde optimale à l'émission et une autre forme d'onde optimale à
la réception offrant une bonne localisation dans le plan temps-fréquence en exploitant les
propriétés des bonnes concentrations des fonctions d’HERMITE. On parle ainsi de BFDM
(Biorthogonal Frequency Division Multiplexing) parce que la forme d'onde de l'émetteur est
différente de celle du récepteur.

Les interférences inter-porteuses dans la modulation OFDM sont engendrées par deux
principaux facteurs : l’offset fréquentiel et l’étalement Doppler.

1.3.1. O FFSET FREQUENTIEL

L’offset fréquentiel résulte de la différence entre l’oscillateur de l’émetteur et celui du


récepteur. Deux effets destructifs sont engendrés par un offset fréquentiel. L’un consiste en la
réduction de l’amplitude du signal puisque les fonctions sinus cardinal (transformée de
Fourier de la forme rectangulaire) sont décalées et ne sont plus donc échantillonnées aux pics.
L’autre effet est l’introduction d’interférences inter-porteuses résultant de la perte
d’orthogonalité entre les sous-canaux.

L’OFDM est très vulnérable à l’offset fréquentiel dus à des problèmes de synchronisation.

Cette sensibilité est affectée par la durée plus longue des symboles OFDM.
Chapitre 1 : Principe des systèmes 14

1.3.2. E FFET DE L ’ ETALEMENT D OPPLER

En utilisant l'intervalle de garde cyclique, les sous-porteuses individuelles retrouvent leurs


orthogonalités après suppression du préfixe. Cette orthogonalité est détruite quand le canal
varie temporellement et ses caractéristiques changent durant la durée d'un symbole d'OFDM.
Ces variations sont modélisées par l'étalement Doppler « Doppler Spread ». Ce dernier résulte
de la différence en fréquences Doppler entre les différents trajets du canal. Il décrit donc les
changements aléatoires dans le canal radio et peut être considéré comme résultat de
déplacement des usagers.

L'étalement Doppler réduit l'énergie utile dans chaque sous-porteuse et introduit de


l'interférence inter-canaux « Inter Carrier Interference » (ICI) due à une perte d’orthogonalité.
Ces deux effets réduisent le rapport signal à bruit SNR dans le récepteur.

La perte d’orthogonalité s’accentue avec l’utilisation d’une fonction d’enveloppe


rectangulaire pour mettre en forme les symboles OFDM. En effet, l’énergie s’étale sur tout
l’axe fréquentiel ce qui va générer de plus en plus d’interférences ICI sur les canaux dispersifs
en fréquence.

1.4.O PTIMISATION DE LA FORME D ' ONDE POUR LA


MODULATION BFDM

Pour réduire l’effet du Doppler, on doit remplacer la forme d’onde rectangulaire très étendue
en fréquence par une forme d’onde présentant une meilleure localisation en fréquence. On
doit recourir à une optimisation de la forme d’onde afin de réduire l’effet de l’étalement
Doppler. Cette optimisation a été effectuée sous forme de plusieurs projets qui ont eu lieu au
sein de la société Smart-Waves [4] et [5]. Le critère d'optimisation était de maximiser le
rapport signal sur interférence (SIR) et l'opération consistait à trouver la meilleure
combinaison linéaire des formes d'onde d'Hermite pour la construction de la forme d'onde
optimale à l'émission et à la réception. Le choix des Hermites comme base élémentaire se
justifie par la bonne localisation temp-fréquence qu'offraient ces formes d'onde. Les
simulations sous MATLAB effectués au sein de cette société ont validé l'optimisation réalisée
et ont montré un gain de 10 dB par rapport à la modulation OFDM conventionnelle à préfixe
cyclique (CPOFDM) pour un canal radio-mobile caractérisé par un Doppler important.
Chapitre 1 : Principe des systèmes 15

De ce fait, nous pouvons ainsi passer à l'implémentation hardware de cette solution de


transmission BFDM avec forme d'onde optimisée; ce qui constitue le sujet de ce projet de fin
d'étude.

1.5. C ONCLUSION

Dans ce chapitre, nous avons présenté la technique de modulation OFDM avec ses avantages
et ses limites. Nous avons ensuite enchaîné avec la présentation de la solution BFDM avec
forme d'onde optimisée qui présente le remède pour diminuer les interférences dans le cas
d'un canal variable dans le temps.

Dans ce qui suit, nous allons passer à la réalisation de la chaîne de transmission BFDM, à
savoir l'émetteur et le récepteur. Le chapitre suivant consiste donc à développer l'étape de
conception qui a été effectuée pour l'implémentation hardware de l'ensemble émetteur,
récepteur BFDM.
16

Chapitre 2 : Conception de
l’architecture de
l’émetteur/récepteur BFDM
Chapitre 2 : Conception de l’architecture de 17

2.1. I NTRODUCTION

L’implémentation de la modulation multiporteuse est une tache difficile puisqu’elle est


composée de plusieurs étages de modulation qui fonctionnent en parallèle. Mais l’utilisation
de l’FFT dans le récepteur et de l’IFFT dans l’émetteur permet de réduire l’ordre de
complexité du modulateur et du démodulateur. Ainsi l’implémentation d’un émetteur /
récepteur BFDM est désormais réalisable sur un FPGA. On se propose donc dans ce chapitre
d’élaborer la conception de l’architecture de cet émetteur / récepteur BFDM.

Pour cela, nous avons choisi d’organiser ce chapitre en deux parties. La première présentera la
conception de l'émetteur et la deuxième sera consacrée au récepteur.

2.2. C ONCEPTION DE L ' EMETTEUR BFDM

Tout d’abord, nous allons élaborer la conception générale de l'émetteur en réalisant son étude
fonctionnelle. Ensuite, nous détaillerons chaque élément complexe de cette conception.

2.2.1. E TUDE FONCTIONNELLE

Une première approche pour effectuer l’étude fonctionnelle de l’émetteur serait de


commencer par identifier ses entrées et ses sorties. Considérons donc la figure 2.1.
Chapitre 2 : Conception de l’architecture de 18

Figure 2.1 : L'émetteur BFDM vu de l'extérieur.

On a donc trois entrées dont une pour les données (Bitstream) et deux pour le contrôle (Reset
et clock).

Le signal de sortie étant complexe, on va donc lui réserver deux sorties qui sont Iout et Qout et
qui représentent respectivement la composante en phase et la composante en quadrature du
signal à la sortie de l'émetteur.

Avant d’être transmises, les données passent par trois phases principales qui sont le mapping,
l’IFFT et enfin le filtrage par projection sur la forme d’onde optimisée. La figure 2.2 présente
le schéma conceptuel de l’émetteur.

Figure 2.2 : Schéma bloc de la conception de l'émetteur.


Chapitre 2 : Conception de l’architecture de 19

Nous avons connecté l’entrée Reset à tous les composants de l'émetteur pour garantir
l'utilisation efficace du reset asynchrone qui permet à tout moment d'interrompre le
fonctionnement de l'émetteur et de le réinitialiser, c'est-à-dire de vider tous les registres
internes dans cet émetteur. Ensuite, en ce qui concerne le premier bloc à travers lequel passe
l'information et comme l'indique sont nom, le bloc « Mapping » est responsable de la
modulation numérique du signal. Il permet de passer de l'espace binaire à l'espace symbole
complexe. On pourra choisir la modulation QPSK, QAM16 ou QAM64… Ce choix
n'intervient pas au niveau de la conception générale de l'émetteur et n’affectera pas les autres
blocs de l’émetteur.

Passons maintenant au bloc « IFFT » sur lequel se base la modulation multi-porteuse. Pour
réaliser cet étage, nous allons utiliser l’IP XFFT de Xilinx [8] que nous avons généré avec
l’outil COREGenerator[9]. Ce bloc est normalement cascadé au bloc « mapping ». Mais pour
pouvoir estimer le canal de transmission, nous allons utiliser la technique des symboles
pilotes comme dans le cas des standards IEEE802.11a et IEEE802.16d [10]. Cette technique
consiste à émettre des symboles connus par le récepteur à des instants précis et des sous
porteuses bien définies. Ainsi, le récepteur pourra estimer le canal en identifiant son effet sur
les symboles pilotes. Pour mettre en œuvre cette technique, nous avons choisi d'ajouter un
bloc qui permet d'insérer les symboles pilotes et de sélectionner (ou activer) les sous porteuses
effectivement utilisée de l'IFFT.

Les symboles OFDM obtenus à la sortie du bloc « IFFT » seront donc transférés au bloc
« filtrage » qui réalisera la projection de ces symboles sur la forme d'onde optimisée dont
nous avons parlée dans le chapitre précédent.

Reste donc à préciser que ces différents blocs, que nous venons de citer, ne fonctionnent pas
tous avec la même fréquence d'horloge, d'où la nécessité d'ajouter un bloc « générateur
d'horloges » qui comme son nom l’indique, génère plusieurs horloges parfaitement
synchronisées à partir d'une seule horloge maître (Master Clock).
Chapitre 2 : Conception de l’architecture de 20

2.2.2. A RCHITECTURE INTERNE DE L ’ EMETTEUR

2.2.2.1. D E S C R I P T I O N D E L ’IP XFFT DE XILINX

Pour l’étage responsable de l’IFFT au niveau de l’émetteur, nous utiliserons l’IP XFFT de
Xilinx. Cet étage admet cinq entrées dont trois signaux de contrôle (Reset, Clock et Enbl) et
deux signaux de données (Iin et Qin). Ces sorties sont au nombre de trois (Iout, Qout et enbl).
Nous devons choisir le type « Pipelined, streaming I/O », parce que notre émetteur doit
garantir un fonctionnement continu à cause des données qui se présentent sous forme d’un
flux de bits (BitStream). Nous considérons un système BFDM composé de 1024 sous-
porteuses. Donc nous choisissons une FFT de taille 1024. Le tableau extrait du Datasheet [9]
de cet IP, présenté dans l’annexe B, résume les signaux d’entrée et de sortie de ce Core.

2.2.2.2. E T A G E DE FILTRAGE

Pour effectuer la conception du bloc « filtrage » à l’émission, nous considérons les


spécifications suivantes :

ƒ Le réseau temps fréquence sous-jacent au système BFDM étudié repose sur une
densité sous-critique. Ce qui se traduit par l’inégalité suivante : F*T > 1. Dans notre cas, on
prend : F*T = 1,25.
ƒ L’IFFT est calculée sur 1024 échantillons. Donc 1/F correspond à 1024 échantillons.
ƒ La durée de l’impulsion (forme d’onde), d’origine infinie, est tronquée sur 8T
(équivalent à 10/F soit 10240 échantillons)

L’entrée du bloc filtrage étant de taille 1/F = 1024 échantillons, la sortie sera de durée T =
1.25/F = 1.25*1024 = 1280 échantillons.

La figure 2.3 illustre le déroulement de l’opération de filtrage :


Chapitre 2 : Conception de l’architecture de 21

0 T 2T 3T 4T 5T 6T 7T 8T

Forme d’onde

sans décalage. S0

S1

S2

S3

S4

S5

S6

S7

RAM0 RAM1RAM2 RAM3 RAM4 RAM5RAM6 RAM7

Figure 2.3 : Schéma explicatif de l’opération de filtrage à l’émission.


Chapitre 2 : Conception de l’architecture de 22

• L’entrée correspond à la sortie du bloc « IFFT ». on admet que c’est un bloc de taille
1024 échantillons qui arrivent en série sous forme de flux de données.
• On duplique ce symbole 10 fois et on multiplie le résultat par la forme d’onde
optimisée enregistrée dans une mémoire ROM de taille 10240 échantillons.
• Le résultat de la multiplication est transféré à une mémoire RAM qui a pour rôle de
stocker la somme de 8 multiplications successives pour former le signal émis (1280
échantillons) qui correspond à une période temporelle.
• A chaque fois qu’un nouveau symbole (1024 échantillons) arrive, on le duplique 10
fois et on décale la forme d’onde d’une période T de façon circulaire (figure 2.3) avant
d’effectuer la multiplication. Ensuite, on accumule le résultat de la multiplication dans un
registre temporaire de longueur 10240 échantillons. Enfin, on transmet une partie de ce
registre qui correspond dans cette figure à l’une des RAMi que l’on vide après la transmission
de son contenu.
• Ceci nous mène à adopter la conception illustrée dans la figure 2.4.
Chapitre 2 : Conception de l’architecture de 23

Figure 2.4 : Conception du bloc filtrage à l'émission.


Chapitre 2 : Conception de l’architecture de 24

L’entrée du bloc « filtrage » correspond comme on a déjà dit à la sortie du bloc « IFFT », elle se
présente sous forme d’échantillons successifs (I et Q) que nous allons adresser par un compteur
(index), on duplique cet échantillon 10 fois (Ii avec i de 0 à 9) et on multiplie les échantillons
dupliqués par les échantillons pris de la forme d’onde (notée φ) et stockés dans la rom et dont l’adresse
correspond à index décalé (de façon circulaire) de i * 1/F et k * T avec k le numéro du symbole IFFT
(k allant de 0 à 7 ).

Le résultat de la multiplication sera transféré à un buffer qui a pour rôle d’accumuler 8 résultats
consécutifs pour former le signal à transmettre.

Nous avons ajouté un bloc parallèle au buffer et qui comprend 8 mémoires RAMouti pour réorganiser
la sortie du filtre pour des raisons de spécification car l’entrée est périodique de période 1/F = 1024
échantillons et la sortie est périodique mais de période T = 1280 échantillons. C’est aussi pour cette
raison que le bloc filtrage nécessite deux signaux d’horloge (clk2 et clk3 (voir figure 2.2)).

2.2.2.3. S E L E C T I O N D E S P O RT E U S E S A C T I V E S E T I N S E R T I O N D E S S Y M B O L E S

PILOTES

Nécessité de la sélection des porteuses actives :

Pour éviter le repliement de spectre, on ne doit pas émettre de l’information sur toutes les
porteuses de l’IFFT. On doit donc sélectionner certaines porteuses et désactiver les autres.
Autrement dit, on doit forcer intentionnellement l’entrée de certaines porteuses de l’IFFT à
zéro. Un autre problème que nous devons éviter consiste à la fréquence nulle de l’IFFT qui
entraîne un DC offset dans le cas des systèmes utilisant une conversion directe à cause des
courants de fuite (leakage). Donc la porteuse centrale sera aussi désactivée.

Utilité des symboles pilotes :

Pour pouvoir estimer le canal de transmission au niveau du récepteur, nous utiliserons la


technique des symboles pilotes qui consiste à insérer entre les données à transmettre un
certain nombre de symboles connus par l’émetteur et le récepteur à des fréquences bien
définies.

C’est de là que vient l’idée d’introduire un bloc dans l’émetteur entre l’IFFT et le bloc
« mapping » et qui sera responsable de la sélection des porteuses et de l’insertion des
symboles pilotes.
Chapitre 2 : Conception de l’architecture de 25

Afin de concevoir le bloc qui réalise ces taches, l’idée consisterait donc à imaginer que ce
bloc va lire l’entrée comme un flux de données qui arrivent en série avec un rythme clock_in
et introduire des zéros ainsi que des symboles pilotes à des endroits convenablement choisis
entre les symboles données pour enfin former la sortie de ce bloc. Cette sortie doit être
contrôlée par un rythme clock_out plus rapide que celui de clock_in pour garantir le
fonctionnement synchrone des blocs successifs.

Autrement dit, clock_in correspond au rythme de l’horloge de sortie du bloc précédent c'est-à-
dire le bloc « mapping » et clock_out correspond au rythme de l’horloge du bloc IFFT.

La figure 2.5 illustre le schéma conceptuel du bloc « Sélection des porteuses et insertion des
symboles pilotes ».

Figure 2.5: Conception du bloc sélection de porteuses et insertion des SP.

Pour choisir l’emplacement des porteuses nulles et des symboles pilotes, nous nous sommes
inspirés de l’exemple de la modulation OFDM pour le Standard IEEE802.11a. Le tableau 2.1
présente le nombre des symboles pilotes et des porteuses désactivées de l’IFFT dans le cas de
la modulation OFDM du standard IEEE802.11a ainsi que le système que nous avons
implémenté et la figure 2.6 détaille leurs positions. Il s’agit d’un choix personnel mais le code
sera générique et la modification des positions des symboles pilotes par l’utilisateur sera
simple.
Chapitre 2 : Conception de l’architecture de 26

IEEE802.11a Notre système

Nbre de porteuses de l’IFFT 64 1024

Nbre de porteuses désactivées 12 192

Nbre de symboles pilotes 4 64

Nbre de symboles data 48 768


Tableau 2.1 : Nombre des SP et des porteuses désactivées de l’IFFT.

76 83 89 96 102
79 80 86 86 92 92 99 99

60 64 68 72 76
62 62 66 66 70 70 74 74

25 29 33 37 41
27 27 31 31 35 35 39 39

0 63 12 19 25
31 34 94 9 15 16 22 22

0 25 51 76 102
41 60

Porteuses
Symboles pilotes

Figure 2.6 : Disposition des SP et des porteuses désactivées.


Chapitre 2 : Conception de l’architecture de 27

2.2.2.4. E T A G E D E MA P P I N G

Pour un choix de la modulation QAM16, l’entrée du bloc mapping étant le flux binaire, la
sortie sera séparée en deux signaux qui représentent la partie réelle et imaginaire des
symboles déduis à partir du flux binaire. La figure 2.7 présente la constellation de la
modulation QAM16, passons maintenant à la conception de ce bloc : dans l’opération de
mapping, nous identifions une partie qui réalise la sauvegarde de 4 bits successifs de l’entrée
et une partie qui en fonction de ces 4 bits choisit la valeur du symbole numérique. Ceci nous a
menés à adopté la conception illustrée par la figure 2.8 avec Iout et Qout sont respectivement la
partie réelle et imaginaire du symbole à la sortie de ce bloc.

Figure 2.7 : constellation de la modulation QAM16.


Chapitre 2 : Conception de l’architecture de 28

Figure 2.8 : Schéma conceptuel du bloc Mapping.

2.2.2.5. G E N E R A T E U R D ’ H O RL O G E S

Après avoir conçu les différents blocs de l’émetteur, il nous reste à garantir leur
fonctionnement synchrone en présentant à chaque bloc le signal horloge qui lui convient.

Pour énumérer les différents signaux que nous devons générer, nous avons analysé le
fonctionnement de chacun des autres blocs et cette analyse nous a mené à générer 4 signaux
de rythmes différents : clk1, clk2, clk3 et clk4 (figure 2.2).

Les périodes de ces horloges sont reliées entre elles par les équations suivantes :

T(clk4) = 0.8*T(clk3) équation 2.1

T(clk3) = 0.75*T(clk2) équation 2.2

T(clk2) = 4*T(clk1) équation 2.3

Cette dernière est propre à la modulation QAM16. Enfin, on ajoute l’équation suivante :

T(clk1) = α*T(clk) équation 2.4


Chapitre 2 : Conception de l’architecture de 29

L’importance de cette équation est de permettre de déduire les différentes périodes des clki
sous forme de multiple entier et pair de la période T(clk) qui constitue le signal d’entrée de ce
block.

Un choix convenable de α serait 10, ainsi on aura les relations suivantes entre les périodes des
clki.

T(clk1) = 10*T(clk) équation 2.5

T(clk2) = 40*T(clk) équation 2.6

T(clk3) = 30*T(clk) équation 2.7

T(clk4) = 24*T(clk) équation 2.8

Maintenant, après avoir dégagé les relations entre les périodes des différentes horloges, nous
pouvons passer à l’élaboration de la solution conceptuelle du bloc générateur d’horloge. Pour
cela, considérons l’exemple de clk1, nous avons un signal horloge clk à l’entrée et nous
voulons générer un signal horloge 10 fois plus lent, on considère donc un compteur modulo
10 qui s’incrémente à chaque front montant de l’horloge d’entrée. Finalement, nous mettons à
zéro le signal de sortie clk1 tant que le compteur est inférieur à 5 et nous le forçons à un
lorsque le compteur est entre 6 et 10. On voit ici la nécessité de choisir les périodes des
horloges sous forme de multiple pair de celle de l’horloge d’entrée.

Le même raisonnement s’applique pour générer les autres horloges.

2.3. C ONCEPTION DU RECEPTEUR BFDM

Tout comme le plan adopté pour l’émetteur, nous commencerons par élaborer la conception
générale du récepteur pour ensuite détailler les éléments qui le constituent.

2.3.1. E TUDE FONCTIONNELLE

L’architecture du récepteur est légèrement plus complexe que celle de l’émetteur. En effet,
d’un côté tous les blocs de l’émetteur sont reproduits au niveau du récepteur pour effectuer le
Chapitre 2 : Conception de l’architecture de 30

traitement inverse afin de reconstruire le signal de départ, et de l’autre côté, nous devons
ajouter des blocs supplémentaires qui seront responsables de la synchronisation, du calcul de
l’effet du canal sur la distorsion du signal et de la décision sur les symboles reçus.

De ce fait, nous avons mis en œuvre la conception illustrée par la figure suivante. Il reste à
noter que les blocs « Synchronisation » et « Estimation du canal » ne seront pas implémentés
dans le cadre de ce projet.

Bloc

Bloc non

Figure 2.9 : Schéma conceptuel du récepteur.

2.3.2. A RCHITECTURE INTERNE

Pour éviter la répétition, nous allons nous contenter par rédiger la conception détaillée du
bloc « Extraction des symboles pilotes », du boc « Démapping » et de l’étage « filtrage à la
réception ».

2.3.2.1. E T A G E D E F I L T R A G E A L A RE C E P T I O N

L’opération de filtrage du côté récepteur est semblable à celle de l’émetteur à quelques


différences près.
Chapitre 2 : Conception de l’architecture de 31

Tout d’abord l’entrée est reliée à la sortie du bloc synchronisation et la sortie du bloc
« filtrage » est reliée au bloc « FFT » , ce qui impose sur ce bloc le fonctionnement
suivant :
• Le signal à l’entrée est collecté par bloc de 1280 échantillons successifs qui
correspondent à des symboles notés Si.
• Chaque symbole Si est dupliqué 8 fois avant d’être multiplié par la forme d’onde
propre au récepteur.
• Le résultat de la multiplication est transféré sur une RAM de taille 10240 échantillons
qui réalisera l’accumulation de 10 produits successifs pour former la sortie du bloc
« filtrage » à la réception libéré par bloc de 1024 échantillons.
La figure 2.10 présente donc la conception du bloc « filtrage » à la réception.
Chapitre 2 : Conception de l’architecture de 32

Figure 2.10 : schéma conceptuel du bloc « filtrage » à la réception.


Chapitre 2 : Conception de l’architecture de 33

2.3.2.2. D E M A P P I N G

Le fonctionnement de ce bloc consiste à lire les deux entrées Iin et Qin, convertir ce symbole
en un mot binaire et passer ce mot à un process de sortie qui le libère bit par bit pour former le
bitStream. Entre temps, le premier composant de ce bloc va lire le symbole suivant et ainsi de
suite.

Figure 2.11 : Schéma conceptuel du bloc « Démapping ».

2.3.2.3. E X T R A C T I O N DES SYMBOLES PILOTES

Pour pouvoir extraire l’information et les symboles pilotes, nous avons choisit d’adopter la
conception illustrée dans la figure 2.12. L’utilisation de deux types de RAM est justifiée par le
besoin de récupérer à partir du symbole BFDM constitué par 1024 échantillons 768
échantillons de données et 64 échantillons correspondants aux symboles pilotes reçus. Donc,
nous devons enregistrer les échantillons de données dans une RAM de profondeur 768 et les
échantillons qui correspondent aux symboles pilotes dans une RAM de profondeur 64. Les
signaux wena1 et wena2 sont des signaux de contrôle de a RAM, ils permettent d’accéder à la
RAM en mode écriture (write enable).
Chapitre 2 : Conception de l’architecture de 34

En conséquence, nous utiliserons deux process de sortie : le premier servira à sortir les
échantillons de données à un rythme d’horloge clk2 et le deuxième passera les symboles
pilotes reçus au bloc « calculateur » à un rythme d’horloge clk_SP.

Reset

Clock_out

Clock_in

Data_out
Data_in data RAM1 : stocker
Process de data index1 les 768
Process de
lecture échantillons
Sortie 1
1024 échantillons Data
Mux wena1
index0

SP_out
SP
RAM 2 : stocker
index2 les 64 Symboles
Process de
Sortie 2
pilotes

wena2

Figure 2.12 : conception de l’étage « Extraction des SP ».

2.4. C ONCLUSION

Dans ce chapitre, nous avons exposé la conception générale de notre système de transmission
BFDM ainsi que son architecture interne en détaillant les différents blocs ou modules qui le
constituent. Le chapitre suivant présentera l’implémentation de ces différents modules et
quelques captures d’écrans expliquant la génération du Core XFFT de Xilinx.
35

Chapitre 3 : Implémentation
sur FPGA de
l’émetteur/récepteur BFDM
Chapitre 3 : Implémentation de 36

3.1. I NTRODUCTION

Après avoir achevé la phase de la conception de l’architecture de notre émetteur et récepteur


BFDM, nous pouvons passer à la mise en œuvre de cette conception en exposant
l’implémentation des différents étages qui forment cet émetteur/récepteur. Mais avant cela,
nous allons décrire l’environnement de travail et les outils qui nous ont permis de mettre en
œuvre la conception déjà citée :

Pour la réalisation de ce travail, nous avons utilisé un PC Sharp IQON Core Duo 2.8Ghz, 448
Mo de RAM.

L’environnement logiciel se compose de :

- ISE 8.1i de Xilinx.

- Xilinx Core Generator.

- ModelSim 6.0c.

- Matlab 7.0.

Avec cette configuration, et à l’aide de ces outils, nous avons réalisé l’implémentation
hardware de l’émetteur/récepteur BFDM que nous allons décrire dans ce chapitre. Nous avons
choisi de partager ce chapitre en deux sections. La première décrit l’implémentation de
l’émetteur BFDM et la deuxième évoquera celle du récepteur.
Chapitre 3 : Implémentation de 37

3.2. I MPLEMENTATION SUR FPGA DE L ’ EMETTEUR

3.2.1. E TAGE DE M APPING

Pour implémenter le bloc responsable de la modulation numérique QAM16, nous avons


réalisé les tâches suivantes :

• Déclarer un signal compteur modulo 4.


• Déclarer un buffer de taille 4 bits.
• Ecrire un Process qui à chaque front montant d’horloge lit la valeur à l’entrée du
BitStream et l’enregistre dans le nième bit du buffer où n est la valeur du compteur.
• Lorsque le compteur atteint trois, un Process détermine la valeur des outputs Iout et Qout
en fonction du contenu du buffer et de la valeur du BitStream. Les tableaux suivants
résument les valeurs des sorties Iout et Qout en fonction des 4 bits successifs A3, A2, A1
et A0 :

A0 A1 Iout

0 0 00

0 1 10

1 0 01

1 1 11

Tableau 3.1 : Mapping, choix de Iout.


Chapitre 3 : Implémentation de 38

A2 A3 Qout

0 0 11

0 1 01

1 0 10

1 1 00

Tableau 3.2 : Mapping, choix de Qout.

D’après ces deux tableaux, nous déduisons les équations qui relient Iout et Qout avec les Ai.

ƒ Iout = A1 & A0 équation (3.1).


ƒ Qout = Not (A3 & A2) équation (3.2).
Où l’opérateur ‘&’ est l’opérateur de concaténation binaire.

Finalement, on réalise une extension de signe pour Iout et Qout pour les écrire sur 8 bits car l’IP
XFFT de Xilinx exige que la taille des données à l’entrée soit égale à 8, 10, 12 ou 16 bits.

3.2.2. G ENERATION ET CONFIGURATION DE L ’IP XFFT DE X ILINX

En plus de l’environnement de développement ISE, Xilinx offre plusieurs outils comme Chip
Viewer, Timing Analyzer, Xpower et CORE Generator.
Nous avons utilisé ce dernier pour générer l’IP XFFT V3.1. Les étapes nécessaires pour
effectuer cette opération sont décrites par les figures 3.1, 3.2, 3.3 et 3.4.
Chapitre 3 : Implémentation de 39

Figure 3.1 : Interface de l’outil Xilinx CORE Generator.

Au démarrage de l’outil, nous devons créer un nouveau projet. Le nom complet du projet ne
doit pas contenir des espaces, si non l’outil ne va pas pouvoir générer de core. Ensuite, on
cherche le produit qu’on veut générer (dans notre cas « Fast Fourier Transform ») et sur le
volet de droit, on aperçoit une brève description du produit ainsi que des liens qui permettent
de personnaliser le core, consulter sa documentation et le rapport des erreurs… Avant de
commencer la personnalisation du core, on devrait bien consulter sa documentation (Data
Sheet [7]) pour faire le bon choix parmi les paramètres qui sont proposés. En cliquant sur le
lien « Customize », on passe à la phase « personnalisation du core » qui comprend trois
étapes.
Chapitre 3 : Implémentation de 40

Figure 3.2 : Configuration du core XFFT, interface 1.

Dans cette interface, nous observons le schéma logique du core avec ses différentes broches et
nous devons configurer la taille et le type de l’FFT ; le type Pipelined, Streaming I/O est celui
qui nous convient puisqu’il permet de calculer la transformée de Fourier sans arrêter le flux
des symboles à l’entrée. On passe maintenant à la deuxième interface en cliquant sur le
bouton « Next ».
Chapitre 3 : Implémentation de 41

Figure 3.3 : Configuration du core XFFT, interface 2.

La deuxième interface nous permet de choisir le nombre de bit sur lequel sont codés l’entrée
et le facteur de phase (incrément de phase entre 2 porteuses successives, il correspond à la
valeur de 2π/1024), nous activons la broche SCLR (Synchronous Clear) et nous choisissons
les options « Scaled » et « Truncation » pour que la sortie de l’FFT soit tronquée sur 8 bits. La
dernière interface de la configuration du core est illustrée par la figure 3.4.
Chapitre 3 : Implémentation de 42

Figure 3.4 : Configuration du core XFFT, interface 3.

Finalement, nous sélectionnons le nombre de stages qui utilisent des blocs Ram et nous
précisons que le core doit générer un output dans l’ordre naturel ou bien dans l’ordre bit
Reverse (voir annexe A), le choix « ordre naturel » consomme une Ram supplémentaire.
Arès avoir terminé la phase de configuration du core, nous cliquons sur le bouton
« Generate » et voilà, nous venons de générer le core XFFT de Xilinx. Reste maintenant à
créer le fichier « wrapper » qui permet d’instancier le core et de l’inclure dans notre projet en
affectant à ces broches les signaux convenables.
Chapitre 3 : Implémentation de 43

3.2.3. F ILTRAGE A L ’ EMISSION

Ce bloc constitue la partie la plus compliquée de l’émetteur. Pour l’implémenter, nous avons
créé ces fichiers :

• Index_gen.vhd : qui a pour rôle de générer l’adressage des entrées Iin et Qin.
• Index_circ_gen.vhd : qui a pour rôle de calculer l’adresse correspondant à celle des
entrées après un décalage circulaire pour l’utiliser au niveau de l’extraction de la
valeur de la forme d’onde.
• Rom_fi.vhd : c’est une Rom dans laquelle nous avons sauvegardé les valeurs des
échantillons de la forme d’onde, on lui donne l’adresse circulaire et elle nous fournie
la valeur de l’échantillon correspondant.
• Multiply_fi.vhd : permet de multiplier les entrées Iin et Qin par la valeur de
l’échantillon de la forme d’onde fi_val.
• Fi_mul_i.vhd : rassemble les composants index_circ_gen, rom_fi et multiply_fi.
• My_buffer.vhd : Ram de taille 10240 échantillons qui accumule les résultats de la
multiplication de la forme d’onde par les copies des entrées Iin et Qin, et qui envoie en
sortie deux blocs de taille 1024 échantillons.
• Organizer.vhd : récupère les deux blocs envoyés par la Ram et construit la sortie qui
correspond à un bloc de 1280 échantillons. Ce bloc fonctionne avec deux rythmes
d’horloge, un pour la lecture et un pour sortir les outputs Iout et Qout.
• Main_fi.vhd : le composant principal qui fait appel à tous les composants qu’on vient
de citer.

La figure 3.5 illustre la déclaration du composant index_circ_gen :


Chapitre 3 : Implémentation de 44

entity adress_circ is

Port ( reset : in STD_LOGIC;

clk : in STD_LOGIC;

iteration : in STD_LOGIC_VECTOR (3 downto 0);

offset : in STD_LOGIC_VECTOR (2 downto 0);

index : in STD_LOGIC_VECTOR (9 downto 0);

index_circ : out STD_LOGIC_VECTOR (13 downto 0));

end adress_circ;

Figure 3.5 : Extrait du code source de « index_circ_gen.vhd »

3.2.4. S ELECTION DES PORTEUSES ET INSERTION DES SYMBOLES

PILOTES

Pour réaliser cet étage, nous avons créé les deux fichiers :

• Block_dram.vhd : ce composant est une dram qui comprend un process de lecture et


un autre d’écriture avec forçage à zéro de la sortie pour les sous porteuses désactivées.
• Read_insert.vhd : ce composant comprend un process de lecture de l’entrée data_in au
rythme de clock_in, un process Mux qui translate l’adresse de lecture pour obtenir
l’adresse d’écriture dans la dram et enfin un process de sortie qui libère la sortie
formée par data_in, les symboles pilotes et les zéros.

La figure 3.6 présente la déclaration du comosant « block_dram.vhd ».


Chapitre 3 : Implémentation de 45

entity blockdram is

generic(

depth : integer := 1024;

Dwidth : integer := 8;

Awidth : integer := 10

);

port (

reset : IN std_logic;

addra : IN std_logic_VECTOR(Awidth-1 downto 0);

clk1 : IN std_logic; -- pour l'écriture dans le buffer

addrb : IN std_logic_VECTOR(Awidth-1 downto 0);

clk2 : IN std_logic;-- pour la lecture

data_in : IN std_logic_VECTOR(Dwidth-1 downto 0);

wea : IN std_logic;

renabl : IN std_logic;

data_out: OUT std_logic_VECTOR(Dwidth-1 downto 0)

);

end blockdram;

Figure 3.6 : Déclaration du composant « Blockdram ».

3.2.5. G ENERATEUR D ' HORLOGES

Le principe du générateur étant présenté dans le chapitre dédié à la conception, et étant donné
que la génération des différentes horloges est réalisée d’une façon identique, il suffit donc de
changer quelques paramètres pour obtenir un autre rythme d’horloge.
Chapitre 3 : Implémentation de 46

entity clk_gen is

Port ( reset : in STD_LOGIC;

start : in STD_LOGIC;

clk : in STD_LOGIC;

clk1 : out STD_LOGIC;

clk2 : out STD_LOGIC;

clk3 : out STD_LOGIC;

clk4 : out STD_LOGIC);

end clk_gen;

Figure 3.7 : Déclaration du composant « clk_gen ».

3.3. I MPLEMENTATION DU RECEPTEUR BFDM

Une fois l’implémentation de l’émetteur terminée, la mise en œuvre du récepteur devient plus
facile en raison de la ressemblance des codes de leurs composants. Pour l’étage FFT, nous
n’allons pas régénérer le core XFFT puisque parmi ces entrées il y a la broche « FWD_INV »
qui permet à cet IP de fonctionner en mode direct (FFT) ou inverse (IFFT). Il suffit donc de
copier le code du core généré pour l’émetteur et modifier dans le fichier « wrapper » la valeur
attribuée à la broche « FWD_INV ».

Nous allons donc commencer par exposer l’implémentation de l’étage de filtrage. Ensuite,
nous passerons à l’implémentation des blocs « Extraction des symboles pilotes » et
« Démapping ».
Chapitre 3 : Implémentation de 47

3.3.1. E TAGE DE FILTRAGE A LA RECEPTION

L’implémentation de l’étage qui réalise l’opération de filtrage à la réception est semblable à


celle de l’émetteur ; les différences entre ces deux blocs sont résumées dans le tableau 3.3.

Emission Réception

Nbre d’échantillons à l’entrée 1024 1280

Nbre d’échantillons à la sortie 1280 1024

Duplication du symbole à l’entrée 10 fois 8 fois

Tableau 3.3 : Différences dans le fonctionnement des étages de filtrage

En plus de ça, la forme d’onde à l’émission est différente de celle à la réception donc nous
devons créer une autre Rom pour sauvegarder les échantillons de la forme d’onde.

Pour implémenter l’étage de filtrage à la réception selon la conception illustrée dans la figure
2.10, nous avons tiré profit des codes sources de l’émetteur sur lesquels nous avons effectué
les changements nécessaires pour les adapter au fonctionnement du récepteur. La figure 3.8
expose la déclaration du composant « Organizer ».

entity organizer is

Port ( reset : in STD_LOGIC;

clk : in STD_LOGIC; -- horloge pour l'input

clk2 : in STD_LOGIC; -- horloge pour la sortie

add_in : in STD_LOGIC_VECTOR (10 downto 0) ;

decalage : in STD_LOGIC_VECTOR (3 downto 0) ;

I1 : in STD_LOGIC_VECTOR (19 downto 0) ;

I2 : in STD_LOGIC_VECTOR (19 downto 0) ;

Q1 : in STD_LOGIC_VECTOR (19 downto 0) ;

Q2 : in STD_LOGIC_VECTOR (19 downto 0) ;

start_trans : out STD_LOGIC;

data_out1 : out STD_LOGIC_VECTOR (19 downto 0) ;

data_out2 : out STD_LOGIC_VECTOR (19 downto 0));

end organizer;

Figure 3.8 : Déclaration du bloc « Organizer ».


Chapitre 3 : Implémentation de 48

Pour les autres composants, nous avons réalisé beaucoup de changements pour pouvoir les
adapter au contexte du filtrage à la réception.

3.3.2. E XTRACTION DES S YMBOLES P ILOTES

Pour mettre en œuvre l’étage de l’extraction des symboles pilotes, nous avons utilisé deux
RAM de tailles différentes, un multiplexeur, un process de lecture et deux process de sortie, le
premier est responsable des échantillons de données et le deuxième libère en sortie les
symboles pilotes.

Le multiplexeur permet de :

• Calculer en fonction de l’adresse d’entrée, l’adresse d’écriture dans la RAM des


données appelée addres_in1.
• Calculer en fonction de l’adresse d’entrée, l’adresse d’écriture dans la RAM des
symboles pilotes appelée addres_in2.
• Sélectionner et désélectionner les broches « write enable » des deux RAM que nous
avons appelées wena_1 et wena_2.

La figure 3.9 présente la déclaration du bloc « Sélection des porteuses et extraction des SP ».

entity read_extract is

generic(

Dwidth : integer := 8

);

Port (

reset : in STD_LOGIC;

start : in STD_LOGIC;

clk1 : in STD_LOGIC;

clk2 : in STD_LOGIC;

clk3 : in STD_LOGIC;

data_inI : in STD_LOGIC_VECTOR (Dwidth - 1 downto 0);

data_inQ : in STD_LOGIC_VECTOR (Dwidth - 1 downto 0);

data_out1_I : out STD_LOGIC_VECTOR (Dwidth - 1 downto 0);-- data

data_out1_Q : out STD_LOGIC_VECTOR (Dwidth - 1 downto 0);

data_out2_I : out STD_LOGIC_VECTOR (Dwidth - 1 downto 0);-- SP

data_out2_Q : out STD_LOGIC_VECTOR (Dwidth - 1 downto 0);


Chapitre 3 : Implémentation de 49

output_index1 : out STD_LOGIC_VECTOR (10 downto 0);-- index des data

output_index2 : out STD_LOGIC_VECTOR (6 downto 0);-- index des SP

sonde_cmp : out STD_LOGIC_VECTOR (9 downto 0);

enbl_next : out STD_LOGIC);

end read_extract;

Figure 3.9 : Déclaration du bloc « Sélection des porteuses et extraction des SP ».

3.3.3. D EMAPPING

Pour réaliser l’implémentation de l’étage responsable de la démodulation numérique, nous


avons choisi de créer deux process :

• Le premier est responsable de la lecture des entrées Iin et Qin à une fréquence de
l’horloge clk_in.
• Le deuxième convertie les symboles en un mot binaire composé de quatre bits et les
libère en série à un rythme d’horloge clk_out qui est quatre fois plus rapide que celui
de clk_in.

Nous présentons dans la figure 3.10 la déclaration du composant « Démapping ».

entity demapping is

Port (

reset : in STD_LOGIC;

start : in STD_LOGIC;

clk_in : in STD_LOGIC;

clk_out : in STD_LOGIC;

Iin : in STD_LOGIC_VECTOR (7 downto 0);

Qin : in STD_LOGIC_VECTOR (7 downto 0);

enbl_next : out STD_LOGIC;

bitstream : out STD_LOGIC);

end demapping;

Figure 3.10 : Extrait du code de l’étage « Demapping »

3.4. C ONCLUSION
Chapitre 3 : Implémentation de 50

Ainsi nous avons exposé dans ce chapitre la réalisation de l’émetteur/récepteur BFDM en


respectant la conception élaborée précédemment. Il ne nous reste que de faire les tests de
simulation afin de s’assurer de son bon fonctionnement, c’est ce qui sera l’objet du prochain
chapitre.
51

Chapitre 4 : Simulation et
Synthèse de
l’émetteur/récepteur BFDM
Conclusion et 52

4.1. Introduction

Après avoir achevé l’implémentation de l’émetteur/récepteur BFDM et pour valider le travail


effectué, nous commencerons la phase de vérification du code par simulation en isolant
chaque composant et en le stimulant par un testbench. La partie validation constitue le dernier
volet de ce rapport. Elle est organisée en deux sections. Nous présenterons dans la première
les résultats de simulation et dans la deuxième les résultats de synthèse de
l’émetteur/récepteur BFDM.

4.2. R ESULTATS DE SIMULATION DE L ' EMETTEUR / RECEPTEUR


BFDM

4.2.1. M APPING ET D EMAPPING

L’étage Mapping constitue le premier bloc que traverse l’information au niveau de l’émetteur.
Pour tester son fonctionnement, nous avons créé un testbench qui présente au niveau de
l’entrée « bitStream » la séquence binaire suivante « 1011100101001110 ». Appliquons le
principe de la modulation QAM16 :

1. Nous commençons par lire l’entrée par groupe de quatre bits, nous avons donc les
mots suivant : « 1011 », « 1001 », « 0100 » et « 1110 ».
2. La conversion de ces mots donne :

« 1011 » Î Iout = « 10 » et Qout = « 00 »

« 1001 » Î Iout = « 10 » et Qout = « 10 »

« 0100 » Î Iout = « 01 » et Qout = « 11 »

« 1110 » Î Iout = « 11 » et Qout = « 01 »

3. Après l’extension de signe nous obtiendrons les sorties successives suivantes :

i) Iout = « 11111110 » et Qout = « 00000000 »


Conclusion et 53

ii) Iout = « 11111110 » et Qout = « 11111110 »


iii) Iout = « 00000001 » et Qout = « 11111111 »
iv) Iout = « 11111111 » et Qout = « 00000001 »

Le résultat de simulation de l’étage « Mapping » présenté dans la figure 4.1 est identique au
résultat qu’on vient de calculer. Nous avons ajouté un signal à la sortie de ce bloc qui est
« enbl_next_load », son utilité est d’annoncer au bloc suivant le début du symbole avant un
cycle d’horloge.

Figure 4.1 : Simulation de l’étage « Mapping ».

Nous récupérons la sortie de ce testbench (Iout et Qout) et nous créons un autre testbench pour
simuler le fonctionnement du bloc « Démapping » et nous appliquons aux entrées Iin et Qin la
sortie qu’on vient de récupérer du premier testbench. Le résultat de cette simulation comme le
montre la figure 4.2 correspond bien à la séquence binaire initiale, c'est-à-dire :
« 1011100101001110 ».

Figure 4.2 : Simulation de l’étage « Démapping » et visualisation du bitStream.


Conclusion et 54

4.2.2. S ELECTION , INSERTION ET EXTRACTION DES SYMBOLES PILOTES

Avant d’exposer le résultat de simulation du code responsable de la sélection des sous-


porteuses et de l’insertion des symboles pilotes, nous rappelons le principe de fonctionnement
de ce bloc :

• L’entrée de ce bloc est un symbole de données constitué par 768 échantillons


successifs.
• Ce bloc insère 192 échantillons nuls au milieu du symbole de données.
• Il insère 64 échantillons correspondants aux symboles pilotes répartis dans les
positions définies dans la figure 2.6.
• La sortie de ce bloc est donc un symbole de taille 1024 échantillons composés de
données, d’échantillons nuls et de symboles pilotes.

Du côté du récepteur, le bloc « Extraction des symboles pilotes » réalise l’opération inverse. Il
permet d’éliminer les échantillons nuls et de récupérer les données et les observations
relatives aux symboles pilotes.

Pour simuler le fonctionnement de ces deux blocs, nous avons créé deux testbenchs, le
premier applique au bloc « insertion des symboles pilotes » un signal sinusoïdal et qui
récupère la sortie et l’enregistre dans un fichier texte. Le deuxième testbench lit les
échantillons data_ini à partir du fichier texte et les applique à l’entrée du bloc « Extraction des
symboles pilotes ». Les symboles pilotes et les données seront séparés et récupérés
respectivement dans les signaux data_out2i et data_out1i. Les figures 4.3 et 4.4 présentent le
résultat de simulation des deux testbenchs.
Conclusion et 55

Figure 4.3 : Simulation du bloc « insertion des symboles pilotes ».

Figure 4.4 : Simulation du bloc « Extraction des symboles pilotes ».


Conclusion et 56

4.2.3. S IMULATION DU C ORE XFFT :

Etant donné que nous n’avons pas implémenté l’étage responsable de la réalisation de la
transformée de Fourier et que nous avons utilisé l’IP XFFT de Xilinx, nous devons réaliser
plusieurs simulations pour être sûr qu’il fonctionne et qu’il fournit le bon résultat ; surtout que
dans le rapport de cet IP (Information Report), il est mentionné que ce core ne fournit pas le
bon résultat avec la famille Virtex4. Nous avons donc testé le core avec un signal entrée
constant {xn_re = « 01000000 » et xn_im = « 00000000 »} puis avec un signal sinus et enfin
avec un signal Rect. Les résultats de simulation concordent avec ceux des simulations
réalisées avec Matlab en présence de quelques erreurs de quantification. La figure 4.5
présente le résultat de la simulation de l’FFT d’un signal Rect et la figure 4.6 correspond à un
zoom sur la région de début de la sortie de l’FFT.

Figure 4.5 : Simulation du Core XFFT en mode ‘Forward’ (i.e. FFT).

Figure 4.6 : Zoom sur le début de la sortie de l’FFT.


Conclusion et 57

4.2.4. F ILTRAGE

Pour valider l’opération de filtrage, nous avons réalisé les tâches suivantes :

• Créer un testbench qui appelle le composant principale du bloc filtrage (main_fi) et lui
applique un signal constant de valeur 0.25 pour Iin et nul pour Qin.
• Récupérer la sortie du bloc filtrage dans un fichier texte à l’aide du testbench et grâce
à la bibliothèque Textio ; (nous avons testé avec des sorties sur 8, 12 et 18 bits).
• Visionner avec Matlab le résultat de filtrage en lisant les échantillons à partir du
fichier texte.
• Implémenter avec Matlab le bloc filtrage.
• Comparer les résultats des deux implémentations.

L’opération de vérification nous conduit à la figure 4.7 (dans le cas du résultat sur 18 bits).

Figure 4.7 : Superposition des courbes de filtrage.

Si dans le code de filtrage avec Matlab on introduit l’effet de quantification en quantifiant les
échantillons de la forme d’onde sur 10 bits, on obtient deux courbes presque superposées. En
Conclusion et 58

revanche, nous remarquons la présence de trois faux échantillons qui résulte du dépassement
(overflow) lors de l’addition sur un nombre de bits constant.

Figure 4.8 : introduction de l’effet de quantification sur l’opération de filtrage.

4.2.5. G ENERATEUR D ’ HORLOGES

Le bloc générateur d’horloges permet de construire des signaux horloges synchronisés à partir
d’un signal clock appliqué à son entrée. Le principe de la génération d’un rythme à partir d’un
autre est décrit dans le deuxième chapitre mais nous n’avons pas précisé l’importance de la
valeur initiale du compteur. Nous allons en premier lieu simuler le fonctionnement de ce bloc
en initialisant les compteurs de tous les process ‘1’. Ensuite nous allons calculer les bonnes
valeurs initiales de chaque compteur et enfin nous présenterons la simulation du bloc
« générateur d’horloges » avec les initialisations convenables.
Conclusion et 59

Figure 4.9 : observation du déphasage entre les signaux horloges générés.

D’après cette figure, nous constatons :

• Le premier signal horloge qui passe à l’état ‘1’ est le signal clk1. On rappelle que sa
période T1 vérifie l’équation suivante : T1 = 10 * T (clk).
• Le deuxième signal horloge, qui est clk4, présente un retard de 7 * T (clk) par rapport à
clk1.
• Le troisième signal horloge est clk3, il présente un retard de 10 * T (clk) par rapport à
clk1.
• Le dernier signal horloge est clk2, il présente un retard de 15 * T (clk) par rapport à clk1.

Pour corriger ce défaut, nous allons annuler les retards des signaux horloges en translatant la
valeur initiale du compteur de chaque process responsable de la génération d’un signal clki.
Par exemple, la valeur initiale du compteur de clk2 est : Vi2 = 1 + (retard de clk2) = 16.

Ainsi, les valeurs initiales des différents compteurs sont résumées dans le tableau 4.1.

Signal horloge Valeur de Demi-période Retard considéré Valeur initiale

Clk1 5 0 1

Clk2 20 15 16

Clk3 15 10 11

Clk4 12 7 8

Tableau 4.1 : valeurs initiales des compteurs pour le générateur d’horloges.


Conclusion et 60

Après la correction des valeurs initiales, nous obtenons des signaux horloges parfaitement
synchronisés et qui commencent tous en même temps. La nouvelle simulation du bloc
« générateur d’horloges » se présente dans la figure 4.10.

Figure 4.10 : simulation du générateur d’horloges.

4.3. R ESULTATS DE SYNTHESE DE L ' EMETTEUR / RECEPTEUR


BFDM

Nous avons effectué a synthèse en prenant en considération ce qui suit :

• D’abord notre système demande des ressources qui dépassent les capacités d’un circuit
Spartan3 et qui ne sont disponibles que dans le circuit Virtex4.
• Le Core XFFT ne fonctionne pas correctement pour Virtex4 et si on le génère pour une
carte Spartan3, sa simulation donne un résultat correct mais il n’est pas synthétisable
puisqu’il demande beaucoup plus de ressources que celles disponibles (le nombre de
Multiplieurs18x18 offert est 4 alors que le core demande 12 multiplieurs « voir la figure
3.4 »).

Nous allons donc réaliser la synthèse des composants de l’émetteur et du récepteur


séparément et nous exploiterons les rapports de consommation des ressources et le « Timing
Report » pour dégager les délais ou retard générés par notre code. Les tableaux générés par
l’ISE pour résumer la synthèse des composants ont été recopiés dans l’annexe C.
Conclusion et 61

4.3.1. S YNTHESE DE L ’ ETAGE M APPING

D’après le tableau C.1, le bloc « Mapping » occupe 7 Slices parmi les 6144 Slices offertes par
le circuit Virtex4 soit une occupation de 0.114%.

Le rapport de synthèse du bloc « Mapping » nous a permis de dégager la valeur de la période


minimale, elle est de 1.902 ns, ce qui fait que ce bloc peut fonctionner à la fréquence
maximale : fmax = 525.762 MHz.

La figure 4.11 illustre le schéma RTL du bloc « Mapping » vu de l’extérieur et la figure 4.12
présente le Netlist de ce bloc.

Figure 4.11 : Schéma RTL externe du bloc « Mapping ».


Conclusion et 62

Figure 4.12 : Schéma RTL interne du bloc « Mapping ».

4.3.2. S YNTHESE DE L ’ ETAGE D EMAPPING

Le bloc « Demapping » occupe 2 Slices parmi les 6144 Slices offertes par le circuit Virtex4
soit un pourcentage d’occupation de 0.0325% (voir tableau C.2). Pour ce bloc, la valeur de la
période minimale est de 1.692 ns, et donc la fréquence maximale est : fmax = 591.016 MHz.

Le schéma RTL externe du bloc « Demapping » est présenté dans la figure 4.13 et la figure
4.14 correspond au Netlist de ce bloc.
Conclusion et 63

Figure 4.13 : Schéma RTL externe du bloc « Demapping ».

Figure 4.14 : Schéma RTL interne du bloc « Démapping ».


Conclusion et 64

4.3.3. S YNTHESE DU BLOC « S ELECTION DES PORTEUSES ET INSERTION


DES SP »

La synthèse de l’étage responsable de la sélection des porteuses actives et de l’insertion des


symboles pilotes occupe 64 slices soit 1.042% des ressources de la virtex4 et elle consomme
aussi 2 FIFO16/RAMB16s parmi les 48 disponibles soit un pourcentage de 4.17%.

La valeur de la période minimale est de 5.181 ns, et donc la fréquence maximale est : fmax =
193.013 MHz.

La figure 4.15 illustre le schéma RTL externe du bloc « Sélection des porteuses et insertion
des SP » et la figure 4.16 présente le Netlist du composant block_dram qui est un composant
inclus dans l’architecture de l’étage de sélection et insertion des symboles pilotes.

Figure 4.15 : Schéma RTL externe du bloc « Sélection des porteuses et insertion des SP ».
Conclusion et 65

Figure 4.16 : Schéma RTL interne du composant Block_dram.

4.3.4.S YNTHESE DU BLOC « S ELECTION DES PORTEUSES ET


EXTRACTION DES SP »

Cet étage qui appartient au récepteur occupe 160 Slices parmi les 6144 donc 2.606% des
Slices disponibles et il réserve 4 FIFO16/RAMB16s parmi les 48 RAMB16s présentes dans la
Virtex4.
La valeur de la période minimale est de 4.492 ns, et donc la fréquence maximale est : fmax =
222.618 MHz.

Le schéma RTL externe de ce bloc est présenté dans la figure 4.17


Conclusion et 66

Figure 4.17 : Schéma RTL externe du bloc « Sélection des porteuses et extraction des SP ».

4.3.5. S YNTHESE DU BLOC « G ENERATEUR D ’ HORLOGES »

Après sa synthèse, le composant clock_generator consomme 21 Slices parmi les 6144


disponibles c'est-à-dire 0.342% des ressources du circuit. Sa période minimale de
fonctionnement étant 2.247 ns donc ce bloc peut fonctionner à une fréquence maximale : fmax
= 445.038 MHz.

Puisque ce composant est responsable de la génération des horloges nécessaires pour le


fonctionnement de l’émetteur et du récepteur, et le signal clk est plus rapide que tous les
autres signaux horloges (clk1, clk2, clk3 et clk4) donc sa fréquence de fonctionnement
maximale va décider de la valeur des fréquences de fonctionnement des autres blocs. D’après
les équations (2.5), (2.6), (2.7) et (2.8) nous déduisons les fréquences de fonctionnement des
blocs clk_generator (f), mapping (f1), Sélection des porteuses et insertion des SP (f2 et f3),
IFFT (f3) et filtrage (f3 et f4).
Conclusion et 67

Le schéma RTL externe de ce bloc est décrit dans la figure 4.18.

Figure 4.18 : Schéma RTL externe du bloc « Générateur d’horloges »


Conclusion et 68

4.3.6. S YNTHESE DU BLOC « F ILTRAGE »

Parmi les composants du bloc filtrage, nous avons deux qui ne sont pas synthétisables, il
s’agit de « mybuffer.vhd » et « organizer.vhd ». Le problème est que le compilateur n’arrive
pas à identifier les composants FIFO/RAM à l’intérieur du code vu sa complexité. Pour
corriger cette erreur, nous devrons simplifier le code de mybuffer et de l’organizer en séparant
les traitements d’adressage et d’accès à la partie RAM. Cette correction devrait rendre le code
synthétisable puisque les deux composants demandent ensemble 24 RAMs de taille 1024
échantillons et 2 RAMs de taille 1280 échantillons du côté de l’émetteur alors que le filtrage à
la réception demande 20 RAMs de taille 1280 échantillons et 2 RAMs de taille 1024
échantillons.

Nous avons donc réalisé la synthèse des composants :

• Addres_generator (tableau C.6)


• Fi_mul_i (tableau C.7) qui regroupe les composants :
o Addres_circ_gen.
o Import_fi : la ROM où sont stockés les échantillons de la forme d’onde.
o Multiply_fi : qui réalise la multiplication des entrées (Iin et Qin) par la forme
d’onde et tronque le résultat sur la taille de la sortie qu’on veut obtenir.

Le composant fi_mul_i consomme 1177 Slices parmi les 6144 disponibles c'est-à-dire
19.157% des ressources du circuit. Sa période minimale de fonctionnement étant 6.274 ns
donc ce bloc peut fonctionner à une fréquence maximale : fmax = 159.388 MHz.

Le schéma RTL externe de ce bloc est décrit dans la figure 4.19.


Conclusion et 69

Figure 4.19 : Schéma RTL externe du bloc « Fi_mul_i ».

Nous récapitulons dans le tableau 4.2 les résultats de synthèse des différents blocs de
l’émetteur/récepteur BFDM.

Désignation Occupation en termes Fréquence Fréquences de


de ressources maximale possible fonctionnement
Mapping 7 Slices 525.762 MHz 44.5 MHz
Démapping 2 Slices 591.016 MHz 11.3 MHz et 44.5 MHz
Insertion des SP 64 Slices et 2 RAMs 193.013 MHz 11.13 MHz et 14.83 MHz
Extraction des SP 160 Slices et 4 RAMs 222.618 MHz 11.13 MHz et 14.83 MHz
Générateur d’horloges 21 Slices 445.038 MHz 445 MHz
Filtrage \ addres_gen 83 Slices 159.388 MHz 14.83 MHz et 18.54 MHz
Filtrage \fi_mul_i 1177 Slices 159.388 MHz 14.83 MHz et 18.54 MHz
Tableau 4.2 : Récapitulation des résultats de synthèse
Conclusion et 70

4.4. C ONCLUSION

La phase de validation de l’implémentation est une phase importante et demande beaucoup


plus de temps que les autres phases du travail. Elle permet de détecter et de corriger les
erreurs grâce à la simulation RTL.

Dans ce dernier chapitre nous avons simulé le fonctionnement des blocs constituants
l’émetteur et le récepteur BFDM implémentés, cette simulation a permis de confirmer la
validité du code implémenté. En deuxième lieu, nous avons présenté le résultat de synthèse
des différents étages de l’émetteur/récepteur ; cela nous a mené à conclure qu’il reste encore à
optimiser le code de certains composants du bloc filtrage pour obtenir un émetteur BFDM
synthétisable sur FPGA et pareillement pour le récepteur.
Conclusion et 71

Conclusion et Perspectives

Dans le présent mémoire, nous avons commencé par étudier les techniques de modulation
OFDM/BFDM, leur principe, la méthode de leur implantation numérique et les limites de la
modulation OFDM conventionnelle. Nous avons ensuite élaboré dans le deuxième chapitre la
conception de notre système BFDM, à savoir l’émetteur et le récepteur, en détaillant les
différents étages qui les constituent. Le troisième chapitre a été consacré à la présentation de
l’implémentation réalisée. Enfin, grâce à la simulation RTL effectuée avec l’outil ModelSim,
nous avons observé le fonctionnement des composants de l’émetteur et du récepteur dans le
but de valider le code VHDL écrit. La synthèse de ces composants a révélé la présence de
défauts au niveau du code de deux composants du bloc filtrage. Ces codes restent donc à
optimiser pour pouvoir les synthétiser sur FPGA.

Le projet d’implantation du système BFDM ne s’arrête donc pas là. Les prochaines étapes
seraient d’optimiser le code de l’étage de filtrage et d’implémenter les blocs responsables de
l’estimation du canal, de l’égalisation fréquentielle et de la synchronisation temporelle. Ainsi
nous obtiendrons un système complet capable de concurrencer et de devancer les solutions de
télécommunication présents sur le marché actuel des TIC.
72

Bibliographie

[1] G. BAUDOIN, Radiocommunications numériques, Tome 1 : Principes, modélisation et


simulation, Dunod Electronique, 2002.

[2] J.H. STOTT, « The how and why of COFDM », EBU Technical Review, 1998.

[3] B. ESCRIG «Communications Numériques, cours», ENSEIRB, Septembre 2005.

[4] N.Debbabi, M.Siala and H.Boujemâa, « Optimization of the OFDM prototype waveform
for highly time and frequency dispersive channels through a maximization of the SIR. »,
Sup'Com, Tunis, 2005.

[5] I.NASRI, « Etude des performances des systèmes OFDM/BFDM avec formes d'onde
optimisées dans le cadre de canaux radio-mobiles sélectifs en temps et en fréquence. »,
Rapport de Mastère, Ecole Polytechnique de Tunisie, 2007.

[6] M. Siala, « Optimisation de la forme d'onde d'un système OFDM. », Rapport interne
Smart-Waves, Sup'Com, Tunis, 2005.
73

[7] D.SCHAFHUBER, G.MATZ et F.HLWATSCH, « Pulse-shaping OFDM/BFDM Systems


for Time-Varying Channels: ISI/ICI analysis, Optimal Pulse Design and Efficient
Implementation», IEEE PIMRC, 2002.

[8] Xilinx LogiCORE, « Fast Fourier Transform », Data Sheet of the CORE : XFFT V3.1,
2004.

[9] Référence web : Assistance en ligne, http://www.xilinx.com/.

[10] IEEE Std 802.16e, Amendment and Corrigendum to IEEE Std 802.16-2004/Cor-2005.

[11] A.Pedroni, « Circuit Design With VHDL », Volnei E-Book, 2004.


Annex 74

Annexe A : Caractérisation de
l’environnement Radio-
mobile

Généralement, la propagation en environnement radio-mobile est perturbée par trois types de


variations : grande, moyenne et petite échelle. Ces variations sont dues à des mécanismes de
base qui affectent la propagation du signal en environnement radio-mobile comme la
réflexion et la diffusion.

1. L ES VARIATIONS A GRANDE ET MOYENNE ECHELLE

Les variations à grande et moyenne échelle se manifestent par l’affaiblissement de parcours et


les fluctuations lentes du signal autour de la moyenne. Il est exprimé par l'équation a1.1

Où d > d0 et d0 est une distance de référence, sa valeur est variable en fonction du type de
l’environnement étudié : macro cellule, micro cellule, pico cellule, la valeur de n dépend de la
Annex 75

fréquence, de la hauteur de l’antenne et de l’environnement de propagation. Dans l’espace


libre, n est généralement égal à deux.

Et enfin, Xσ est une variable aléatoire gaussienne de moyenne nulle avec un écart type égal à
σ.

2. L ES VARIATIONS A PETITE ECHELLE

Les variations à petite échelle réfèrent aux changements de l’amplitude et de la phase du


signal reçu causés par des petites variations (de l’ordre de la longueur d'onde). Les variations
à petite échelle se manifestent de deux manières : la dispersion du signal dans le temps et
l’aspect changeant du canal au cours du temps. En ce qui concerne la dispersion du signal, on
distingue entre canal sélectif en fréquence et non sélectif en fréquence. Pour l’aspect
changeant du canal au cours du temps, on distingue entre fading rapide et fading lent.

3. M ODELE DE CANAL

Pour caractériser le canal radio-mobile, on peut utiliser deux modèles de canaux :

- canal invariant dans le temps Æ modèle statique.

- canal variable dans le temps Æ modèle dynamique.

3.1. M O D E L E STATIQUE DU CANAL RADIO-MOBILE

La réponse impulsionnelle d’un canal multi-trajets est donnée par l'équation a1.2

Où L est le nombre de trajets, τl est le délai du trajet l, αl son amplitude et θl sa phase.


Annex 76

On définit le délai maximum Tm : le retard que met le signal qui parcourt le chemin le plus
long par rapport à celui qui parcourt le chemin le plus court. En comparant Tm et le temps
symbole Ts, on pourra dire qu'il s'agit d'un canal sélectif en fréquence ou bien le canal est à
fading plat. Donc deux cas se présentent :

- Tm > Ts : le canal est dit sélectif en fréquence ce qui donne lieu à des interférences entre
symboles (IES).

- Tm < Ts : le canal est considéré dans ce cas à fading plat, c'est-à-dire que les copies d'un
symbole transmis et qui parcourent différents chemins arrivent tous durant la période
symbole. Dans ce cas là, on n'a pas d'IES.

On définit également la bande de cohérence Bc comme la bande de fréquence pour la quelle le


canal présente une réponse constante

Soit Bs = 1/Ts la bande occupée par le signal utile, on dit que :

• le canal est sélectif en fréquence si Bs << Bc .


• le canal est non sélectif en fréquence ou à fading plat (frequency non selective) si Bs>>
Bc.

Pour éviter l’IES induite par le canal, le canal doit montrer un évanouissement plat en
assurant que Bc << 1/Ts.

3.2. M O D E L E D Y N A MI Q U E D U C A N A L R A D I O - M O B I L E

Passons maintenant à une autre propriété du canal radio-mobile; à cause du mouvement du


récepteur par rapport à l’émetteur qui entraîne le changement des parcours de propagation du
signal, le canal est aperçu par le récepteur comme un canal variable au cours du temps. Ainsi,
la réponse impulsionnelle du canal sera modélisée par l’expression :
Annex 77

Afin de caractériser l'évolution temporelle du canal, on définira deux paramètres qui sont
l'étalement Doppler et le temps de cohérence.

Supposons qu'un signal est émis à la fréquence fe. A cause de la mobilité du récepteur, il sera
reçu à la fréquence fr = fe + fd, où fd est le décalage Doppler défini par :

Avec v, fe, c et θd sont respectivement la vitesse du mobile, la fréquence du signal émis, la


célérité de la lumière et l’angle d’arrivée entre l’onde incidente et le vecteur vitesse du
mobile.

Donc, l'étalement Doppler ou la bande Doppler est donné par l'équation (a1.5)

Un canal est considéré à fading rapide si la bande occupée par le signal Bs est inférieure à la
fréquence Doppler. Inversement, un canal est à fading lent si Bs> fd.

Tout comme la bande de cohérence, on définit le temps de cohérence Tc , qui caractérise la


dispersion fréquentielle du canal. Cette valeur est la durée pendant laquelle la réponse
impulsionnelle du canal peut être considérée comme constante ou stationnaire. Ce paramètre
est crucial dans la modélisation d’un système de communication radio-mobile. En effet, il
détermine la durée pendant laquelle l’estimation du canal est toujours acceptable. Si la durée
de la transmission dépasse le temps de cohérence, il est nécessaire de ré-éstimer le canal.

Le mécanisme de rapidité des évanouissements du canal induit une classification de canaux en


deux types: canaux à fading rapide et d’autres à fading lent. Le terme fading rapide est utilisé
pour qualifier les canaux pour lesquels Tc < Ts.

Un canal est à évanouissement lent lorsque Tc > Ts. Ici, la durée pendant laquelle le canal se
comporte de manière corrélée est longue en comparaison à la durée symbole. Dans ce cas, le
Annex 78

canal peut rester invariant durant la période de transmission d’un ou de plusieurs symboles
successifs.
Annex 79

Annexe B : Le CORE XFFT


de Xilinx
Annex 80

Figure : les broches du CORE XFFT

Nom Largeur Direction Description


XN_RE 8 In Données, partie réelle
XN_IM 8 In Données, partie imaginaire
START 1 In Début du calcul, actif niveau haut
UNLOAD 1 In Pas nécessaire dans le cas
Pipelined/Streaming IO
NFFT 5 In Nombre de porteuses en puissance de 2.
Dans notre cas c’est 10
NFFT_WE 1 In Validation de NFFT
FWD_INV 1 In Fonctionnement FFT ou IFFT
FWD_INV_WE 1 In Validation de FWD_INV
SCALE_SCH 2*E(NFFT/2) In Programme de troncature, la séquence
convenable pour l’FFT de taille 1024 est
[1010101011]
SCALE_SCH_WE 1 In Validation de SCALE_SCH
SCLR 1 In Reset synchrone
CE 1 In Validation de CLK
CLK 1 In Signal horloge
XK_RE[(B-1):0] 8 Out Sortie calculée, composante réelle
XK_IM[(B-1):0] 8 Out Sortie calculée, composante imaginaire
XN_INDEX 10 Out Index de l’entrée
XK_INDEX 10 Out Index de la sortie
RFD 1 Out Ready for data
Annex 81

BUSY 1 Out Indique que le core est entrain de calculer


la transformée
DV 1 Out Indique que la sortie est valide
EDONE 1 Out Précède DONE d’une période CLK.
DONE 1 Out Indique le début et la fin d’un bloc calculé
à la sortie du core
BLK_EXP 5 Out Lorsqu’on travaille avec virgule flottante
OVFLO 1 Out Indique la présence d’un dépassement
Tableau B.1 : Résumé des broches du core XFFT
Annex 82

Annexe C : Rapports de
synthèse

MAPPING Project Status


Project File: mapping.ise Current State: Programming File Generated
• Errors:
Module Name: mapping

• Warnings:
Target Device: xc4vlx15-12sf363
• Updated:
Product Version: ISE, 8.1i mar. 12. juin 12:28:54 2007

Device Utilization Summary


Logic Utilization Used Available Utilization Note(s)
Number of Slice Flip Flops 9 12,288 1%
Number of 4 input LUTs 12 12,288 1%
Logic Distribution
Number of occupied Slices 7 6,144 1%
Number of Slices containing only related logic 7 7 100%
Number of Slices containing unrelated logic 0 7 0%
Total Number of 4 input LUTs 12 12,288 1%
Number of bonded IOBs 22 240 9%
Number of BUFG/BUFGCTRLs 1 32 3%
Number used as BUFGs 1
Number used as BUFGCTRLs 0
Total equivalent gate count for design 160
Additional JTAG gate count for IOBs 1,056
Tableau C.1 : Synthèse du bloc « Mapping »
Annex 83

DEMAPPING Project Status


Project File: demapping.ise Current State: Placed and Routed
• Errors:
Module Name: demapping No Errors

• Warnings:
Target Device: xc4vlx15-12sf363 5 Warnings (5 new, 0 filtered)
• Updated:
Product Version: ISE, 8.1i mar. 12. juin 12:34:29 2007

Device Utilization Summary


Logic Utilization Used Available Utilization Note(s)
Number of Slice Flip Flops 2 12,288 1%
Number of 4 input LUTs 3 12,288 1%
Logic Distribution
Number of occupied Slices 2 6,144 1%
Number of Slices containing only related logic 2 2 100%
Number of Slices containing unrelated logic 0 2 0%
Total Number of 4 input LUTs 3 12,288 1%
Number of bonded IOBs 9 240 3%
Number of BUFG/BUFGCTRLs 1 32 3%
Number used as BUFGs 1
Number used as BUFGCTRLs 0
Total equivalent gate count for design 53
Additional JTAG gate count for IOBs 432
Tableau C.2 : Synthèse du bloc « Démapping »
Annex 84

INSERTION Project Status


Project File: insertion.ise Current State: Programming File Generated
• Errors:
Module Name: read_insert No Errors

• Warnings:
Target Device: xc4vlx15-12sf363 1 Warning

• Updated:
Product Version: ISE, 8.1i mer. 13. juin 00:58:17 2007

Device Utilization Summary


Logic Utilization Used Available Utilization Note(s)
Number of Slice Flip Flops 41 12,288 1%
Number of 4 input LUTs 100 12,288 1%
Logic Distribution
Number of occupied Slices 64 6,144 1%
Number of Slices containing only related logic 64 64 100%
Number of Slices containing unrelated logic 0 64 0%
Total Number 4 input LUTs 101 12,288 1%
Number used as logic 100
Number used as a route-thru 1
Number of bonded IOBs 47 240 19%
Number of BUFG/BUFGCTRLs 2 32 6%
Number used as BUFGs 2
Number used as BUFGCTRLs 0
Number of FIFO16/RAMB16s 2 48 4%
Number used as FIFO16s 0
Number used as RAMB16s 2
Total equivalent gate count for design 1,070
Additional JTAG gate count for IOBs 2,256
Tableau C.3 : Synthèse du bloc « Sélection des porteuses et insertion des SP »
Annex 85

EXTRACTION Project Status


Project File: extraction.ise Current State: Programming File Generated
• Errors:
Module Name: read_extract No Errors

• Warnings:
Target Device: xc4vlx15-12sf363 43 Warnings

• Updated:
Product Version: ISE, 8.1i mer. 13. juin 00:53:49 2007

Device Utilization Summary


Logic Utilization Used Available Utilization Note(s)
Number of Slice Flip Flops 61 12,288 1%
Number of 4 input LUTs 289 12,288 2%
Logic Distribution
Number of occupied Slices 160 6,144 2%
Number of Slices containing only related logic 160 160 100%
Number of Slices containing unrelated logic 0 160 0%
Total Number of 4 input LUTs 289 12,288 2%
Number of bonded IOBs 82 240 34%
Number of BUFG/BUFGCTRLs 3 32 9%
Number used as BUFGs 3
Number used as BUFGCTRLs 0
Number of FIFO16/RAMB16s 4 48 8%
Number used as FIFO16s 0
Number used as RAMB16s 4
Total equivalent gate count for design 2,520
Additional JTAG gate count for IOBs 3,936
Tableau C.4 : Synthèse du bloc « Sélection des porteuses et extraction des SP »
Annex 86

CLK_GENERATOR Project Status


Project File: clk_generator.ise Current State: Programming File Generated
• Errors:
Module Name: clk_gen No Errors

• Warnings:
Target Device: xc4vlx15-12sf363 2 Warnings
• Updated:
Product Version: ISE, 8.1i mar. 12. juin 12:27:59 2007

Device Utilization Summary


Logic Utilization Used Available Utilization Note(s)
Number of Slice Flip Flops 24 12,288 1%
Number of 4 input LUTs 39 12,288 1%
Logic Distribution
Number of occupied Slices 21 6,144 1%
Number of Slices containing only related logic 21 21 100%
Number of Slices containing unrelated logic 0 21 0%
Total Number of 4 input LUTs 39 12,288 1%
Number of bonded IOBs 6 240 2%
Number of BUFG/BUFGCTRLs 1 32 3%
Number used as BUFGs 1
Number used as BUFGCTRLs 0
Total equivalent gate count for design 432
Additional JTAG gate count for IOBs 288
Tableau C.5 : Synthèse du bloc « Clock generator »
Annex 87

SYNTHESE DES COMPOSANTS DU BLOC FILTRAGE (1)

FILTRAGE Project Status


Project File: filtrage.ise Current State: Programming File Generated
• Errors:
Module Name: adress_generator No Errors
• Warnings:
Target Device: xc4vlx15-12sf363 21 Warnings (0 new, 0 filtered)

• Updated:
Product Version: ISE, 8.1i mer. 13. juin 14:43:24 2007

Device Utilization Summary


Logic Utilization Used Available Utilization Note(s)
Number of Slice Flip Flops 63 12,288 1%
Number of 4 input LUTs 101 12,288 1%
Logic Distribution
Number of occupied Slices 83 6,144 1%
Number of Slices containing only related logic 83 83 100%
Number of Slices containing unrelated logic 0 83 0%
Total Number 4 input LUTs 134 12,288 1%
Number used as logic 101
Number used as a route-thru 33
Number of bonded IOBs 26 240 10%
Number of BUFG/BUFGCTRLs 1 32 3%
Number used as BUFGs 1
Number used as BUFGCTRLs 0
Total equivalent gate count for design 1,625
Additional JTAG gate count for IOBs 1,248
Tableau C.6 : Synthèse du composant « address_generator »
Annex 88

SYNTHESE DES COMPOSANTS DU BLOC FILTRAGE (2)

FILTRAGE Project Status


Project File: filtrage.ise Current State: Placed and Routed
• Errors:
Module Name: fi_mul_i No Errors

• Warnings:
Target Device: xc4vlx15-12sf363 2 Warnings (2 new, 0 filtered)
• Updated:
Product Version: ISE, 8.1i mer. 13. juin 16:11:10 2007

Device Utilization Summary


Logic Utilization Used Available Utilization Note(s)
Number of Slice Flip Flops 329 12,288 2%
Number of 4 input LUTs 1,686 12,288 13%
Logic Distribution
Number of occupied Slices 1,177 6,144 19%
Number of Slices containing only related logic 1,177 1,177 100%
Number of Slices containing unrelated logic 0 1,177 0%
Total Number 4 input LUTs 1,708 12,288 13%
Number used as logic 1,686
Number used as a route-thru 9
Number used as Shift registers 13
Number of bonded IOBs 84 240 35%
Number of BUFG/BUFGCTRLs 1 32 3%
Number used as BUFGs 1
Number used as BUFGCTRLs 0
Number of DSP48s 2 32 6%
Total equivalent gate count for design 14,914
Additional JTAG gate count for IOBs 4,032
Tableau C.7 : Synthèse du composant « fi_mul_i »