Vous êtes sur la page 1sur 18

Université Grenoble Alpes

Grenoble INP Phelma

Compte Rendu TP ÉLECTRONIQUE NUMÉRIQUE

Conception et implantation sur


FPGA d’un filtre numérique à
Réponse Impulsionnelle Finie (RIF)

Élaboré par :

ALOUINI Ranim
ZOUITER Siraj

2ème Année SICOM A

Année universitaire : 2020/2021


Table des matières

Table des figures 2

1 Prise en main de ModelSim sur le composant alu_reg vu en TD 3

2 Présentation et spécification du filtre numérique 3

3 Réalisation du filtre sur FPGA 7

4 Test du filtre sur cible FPGA 8

A Chronogramme de la FSM 10

B Code VHDL de fsm.vhd 11

C Code VHDL de adc_interface.vhd 15


Table des figures

1 Architecture séquentielle du filtre . . . . . . . . . . . . . . . . . . . . . . . 3

2 Chronogramme de la FSM . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Comportement du composant adc_interface . . . . . . . . . . . . . . . . . 5

4 Machine à états de l’interface de conversion analogique numérique . . . . . 5

5 machine à états de la FSM . . . . . . . . . . . . . . . . . . . . . . . . . . 6

6 simulation du filtre avec un signal sinusoïdal à une fréquence croissante . . 7

7 Schéma en portes logiques du filtre . . . . . . . . . . . . . . . . . . . . . . 7

8 Signal jaune en entrée du filtre et signal bleu en sortie du filtre . . . . . . 8

9 Signal jaune en entrée du filtre et signal bleu en sortie du filtre . . . . . . 9


TP ÉLECTRONIQUE NUMÉRIQUE

L’objectif de ce TP est de mettre en évidence l’utilisation du FPGA pour la


réalisation d’un filtre numérique à réponse impulsionnelle finie. En premier lieu, nous allons
programmer ce filtre en langage VHDL à l’aide de la machine à états. En second lieu , nous
essayons d’implanter le filtre sur la carte FPGA.

1 Prise en main de ModelSim sur le composant alu_reg


vu en TD

Dans un premier temps, nous avons simulé le fonctionnement de l’unité arithmé-


tique logique vu en TD et nous avons pu valider le bon fonctionnement du code proposé
pour le full_adder, ainsi nous avons réussi à prendre en main le logiciel ModelSim

2 Présentation et spécification du filtre numérique

Ce TP nous propose d’étudier et de réaliser sur cible FPGA un filtre numérique à


Réponse Impulsionnelle Finie (RIF) à 32 coefficients. Ceci nous permettra la prise en main
de toutes les étapes de la conception et la validation de circuits numériques.
L’architecture séquentielle de ce filtre que nous ciblons est détaillée sur la figure suivante :

Figure 1: Architecture séquentielle du filtre

3
TP ÉLECTRONIQUE NUMÉRIQUE

Le chronogramme suivant permet de spécifier le fonctionnement du composant


fsm.

Figure 2: Chronogramme de la FSM

le composant Fsm fonctionne de la manière suivante :


1) Quand le reset est activé, toutes les sorties de la fsm sont à 0.
2) Sinon, la fsm envoi une demande de données à l’adc_interface pour mettre sa sortie
adc_data_request à 1, alors la conversion analogique numérique commence et
quand les données sont prêtes l’entrée adc_data_ready de la fsm se met à 1 , la
fsm lit la sortie de la conversion .
3) Au prochain front montant de l’horloge, la fsm met la sortie delay_line_simple_shift
à 1 pour provoquer un décalage des valeurs stockées dans le tableau delay_line.
4) Ensuite, la multiplication commence après un autre front montant, les valeurs du
tableau delay_line seront multipliés par les coefficients du filtre numérique stockés
dans rom, puis on additionne les résultat de chaque multiplication comme le montre
la formule suivante.
N
X −1
Outn = ai Inn−i
i=0

5) Quand le filtrage est fait, la fsm envoi la valeur au convertisseur numérique analogique
afin que ce dernier la convertit en une valeur analogique.
6) Enfin on met la sortie adc_data_request à 1 afin de relancer le processus de
conversion une autre fois.

4
TP ÉLECTRONIQUE NUMÉRIQUE

Figure 3: Comportement du composant adc_interface

Figure 4: Machine à états de l’interface de conversion analogique numérique

5
TP ÉLECTRONIQUE NUMÉRIQUE

Figure 5: machine à états de la FSM

Nous avons écrirs en VHDL l’architecture associée à l’entité fsm du contrôleur du


filtre. Le code qui correspond à cette dernière est illustré dans l’annexe.

Nous simulons le fonctionnement du convertisseur et générons le signal filter_in


dans le processus p_stim. Notre signal d’entrée dans le filtre est un signal sinusoïdale
d’amplitude 127 et d’offset 127 donc notre plage de valeurs est entre 0 et 254. Afin de
vérifier le bon enchaînement des calculs dans le filtre, nous avons commenté le contenu du
process p_stim.
Pour vérifier le bon fonctionnement, nous avons simulé le filtre complet dans l’environnement
de test développé.
Nous avons pu considérer le bon fonctionnement du filtre. D’une part en gérant les états
de la fsm, la simulation sur ModelSim correspond bien à la machine d’états finis. D’autre
part, en visualisant le signal filter_out, on remarque le comportement d’un filtre passe
bas puisque la variation de l’amplitude d’un signal sinusoïdal en entrée est lissé en sortie et
on voit bien l’atténuation pour les hautes fréquences provoqué par ce filtre.

6
TP ÉLECTRONIQUE NUMÉRIQUE

La figure suivante montre le bon fonctionnement de notre filtre :

Figure 6: simulation du filtre avec un signal sinusoïdal à une fréquence croissante

3 Réalisation du filtre sur FPGA

Nous avons fait la synthèse du programme a l’aide de l’outil "Precision" afin


d’avoir accès au RTL illustré dans la figure ci-dessous qui est constitué des portes logiques
constituant notre filtre.

Figure 7: Schéma en portes logiques du filtre

7
TP ÉLECTRONIQUE NUMÉRIQUE

L’opération compile consiste à traduire le programme en langage machine.


Lors de la phase "Synthesize", l’outil précision permet de relier les différents composants
logiques pour créer le filtre.
Lors de la phase "Optimize", l’outil Precision permet d’optimiser le schéma précèdent en
temps.
le fichier ucf est généré lors de phase de synthèse.
Le paquetage VITAL (VHDL Initiative Towards ASIC Libraries) est un ensemble de libraires
standard pour la description VHDL. il permet de simuler notre filtre sans prendre compte
des delais.

4 Test du filtre sur cible FPGA

Dans cette partie on s’intéresse à effectuer la validation de notre filtre sur la


carte de test en chargeant le fichier de configuration "fichier .bit" dans le circuit Xilinx. En
visualisant sur l’oscilloscope les résultats nous avons obtenu les courbes suivantes.

Figure 8: Signal jaune en entrée du filtre et signal bleu en sortie du filtre

8
TP ÉLECTRONIQUE NUMÉRIQUE

Figure 9: Signal jaune en entrée du filtre et signal bleu en sortie du filtre

Les deux figures ci-dessus montrent bien que la sinusoïde en entrée du filtre
subit une atténuation en augmentant la fréquence. On a constaté qu’il y a une coupure à
partir de la fréquence F=29kHz. Fréquence maximale d’échantillonnage à la fréquence de
fonctionnement 50MHz. Calcul théorique de la fréquence d’échantillonnage :
— La fréquence maximale pour assurer le bon fonctionnement est fmax =50MHz et
d’après le théorème de Schannon on a :
femin > 2fmax

Conclusion

En conclusion, nous avons pu a travers ce TP faire la conception, le codage et


la synthèse sur FPGA d’un Filtre à réponse impulsionnelle finie. De plus, Ce TP nous
a permis de mieux appréhender la mise en place de machine à états et l’interpréter des
chronogrammes ainsi qu’améliorer nos compétences en langage VHDL.

9
TP ÉLECTRONIQUE NUMÉRIQUE

A Chronogramme de la FSM

10
TP ÉLECTRONIQUE NUMÉRIQUE

B Code VHDL de fsm.vhd

11
TP ÉLECTRONIQUE NUMÉRIQUE

12
TP ÉLECTRONIQUE NUMÉRIQUE

13
TP ÉLECTRONIQUE NUMÉRIQUE

14
TP ÉLECTRONIQUE NUMÉRIQUE

C Code VHDL de adc_interface.vhd

15
TP ÉLECTRONIQUE NUMÉRIQUE

16
TP ÉLECTRONIQUE NUMÉRIQUE

17

Vous aimerez peut-être aussi