SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la...

19
TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO FPGA ET GESTION DES HORLOGES MODULE ALTERA DE0-NANO Objectif : Au cours de ce TP, nous allons étudier la gestion des horloges disponibles sur la carte électronique embarquant un FPGA de la société ALTERA DE0-NANO. I. ELABORATION DU PROJET 1. Présentation du projet Nous voulons réaliser un projet qui permet de faire clignoter les LED de la carte, avec une fréquence de clignotement différente pour chacune d’elles : - La LED0 clignotera à la fréquence de 1 Hz (soit 1 seconde de période) ; - La LED1 clignotera à la fréquence de 10 Hz (soit 1/10 ème de seconde) ; - La LED3 clignotera à la fréquence de 100 Hz (soit 1/100 ème de secondes) ; 2. Présentation de la fonction PLL (Phase Lock Loops) Pour cela, il est nécessaire de mettre en œuvre une base de temps (horloge) : C’est la fonction PLL (Phase Lock Loops). Elle permet, à partir de l’oscillateur de 50 MHz placé sur la carte DE0-NANO, d’extraire une horloge de fréquence de son choix et très précise : 3. D esign du projet Créer un nouveau projet en utilisant le Projet Wizard avec le logiciel Quartus II que vous nommerez TP_NANO2. Ajoutez-y un fichier de type Block Diagram /Schématic. Depuis votre schéma, ajouter un nouveau symbole (clic droit > Insert > Symbol …). Cliquer ensuite sur « MegaWizard Plugin Manager » afin d’utiliser les fonctions disponibles avec le logiciel Quartus II : LYCEE LA FAYETTE 1/19

Transcript of SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la...

Page 1: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

FPGA ET GESTION DES HORLOGESMODULE ALTERA DE0-NANO

Objectif : Au cours de ce TP, nous allons étudier la gestion des horloges disponibles sur la carte électronique embarquant un FPGA de la société ALTERA DE0-NANO.

I. ELABORATION DU PROJET

1. Présentation du projet

Nous voulons réaliser un projet qui permet de faire clignoter les LED de la carte, avec une fréquence de clignotement différente pour chacune d’elles :

- La LED0 clignotera à la fréquence de 1 Hz (soit 1 seconde de période) ;- La LED1 clignotera à la fréquence de 10 Hz (soit 1/10ème de seconde) ;- La LED3 clignotera à la fréquence de 100 Hz (soit 1/100ème de secondes) ;

 2. Présentation de la fonction PLL (Phase Lock Loops)

Pour cela, il est nécessaire de mettre en œuvre une base de temps (horloge) : C’est la fonction PLL (Phase Lock Loops). Elle permet, à partir de l’oscillateur de 50 MHz placé sur la carte DE0-NANO, d’extraire une horloge de fréquence de son choix et très précise :

3. D

e

sign du projet

Créer un nouveau projet en utilisant le Projet Wizard avec le logiciel Quartus II que vous nommerez TP_NANO2. Ajoutez-y un fichier de type 

Depuis votre schéma, ajouter un nouveau symbole (clic droit > Insert > Symbol …). Cliquer ensuite sur « MegaWizard Plugin Manager » afin d’utiliser les fonctions disponibles avec le logiciel Quartus II :

Les fonctions disponibles dans le « MegaWizard Plugin Manager » sont des fonctions gratuites (ou payantes) fournies par Altéra dans son logiciel Quartus II. Il en existe des plus ou moins sophistiquées (traitement du signal, des images, du son, …)

Dans la fenêtre qui s’ouvre, nous avons la possibilité de créer, d’éditer ou de copier ces fonctions. Nous allons en créer une nouvelle à partir d’une préexistante.

LYCEE LA FAYETTE 1/15

Page 2: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

Sélectionner ensuite la fonction « ALTPLL » puis la famille FPGA « Cyclone IV E », et le type de langage VHDL. Donner également le nom « pll » au fichier VHDL qui va être créé.

La fonction ALTPLL va nous permette de créer une horloge de notre choix.

Une première fenêtre de configuration de la fonction PLL apparaît. Elle nous permet de préciser la fréquence utilisée par le FPGA.

Question : Quelle est la fréquence du quartz présent sur la carte DE0-NANO qui sert de référence à la PLL ?

Compléter les informations en précisant la fréquence adéquate. 

L’information « device speed grade » donne la performance en vitesse du circuit FPGA utilisé. Ici, nous utilisons un circuit EP4CE22F17C6 (soit de grade 6).

Cliquer sur « Suivant » afin de valider les informations.La fenêtre suivante nous permet, si nous le souhaitons, d’ajouter des fonctionnalités de remise à zéro synchrone de la PLL (broche « areset »). Sélectionner uniquement cette option  et cliquer sur « Suivant ».

LYCEE LA FAYETTE 2/15

Page 3: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

Cliquer ensuite quatre fois sur suivant afin de laisser les autres paramètres par défaut.

Vous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie.

Question : Sachant que nous souhaitons avoir une période maximale de 1/100ème de secondes, calculer la valeur de la période (en ns, 1 ns = 10-9 s) qu’il faut entrer :

1/100ème de seconde = 1 seconde100  = ……….. s = …………. 10-3 s = ……….10-6 s = ………. 10-9 s 

Question : Lorsque vous essayez d’entrer cette valeur dans le logiciel, pour quelle raison celui-ci ne veut pas la prendre en compte ?

Paramétrer la PLL avec une fréquence de 10 KHz (0.01 MHz) et appuyer sur le bouton « Finish » deux fois.Si une fenêtre vous demandant si vous souhaitez ajouter automatiquement les fichiers créés par le « MegaFunction Wizard », cliquer sur « OUI ».

Placer ensuite le composant sur votre schéma. 

LYCEE LA FAYETTE 3/15

Page 4: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

Le composant possède deux entrées et une sortie :. L’entrée « inclk0 » devra être reliée à l’horloge de 50Mhz de la carte DE0-NANO ;

. L’entrée « areset » permet de faire une remise à zéro de l’horloge ;

. La sortie « c0 » est l’horloge de 10 KHz.

Ajouter sur votre schéma une broche d’entrée (primitive de type input) que vous relierez à la broche « inclk0 » de la PLL. Editer son nom et la nommer « CLK ». Faire de même en ajoutant une broche d’entrée sur l’entrée « areset » de la PLL que vous nommerez « RESET ».

La fréquence du signal « c0 » étant de 10 KHz, nous allons utiliser un composant permettant de diviser la fréquence de ce signal afin d’obtenir la période de 1/100ème de secondes voulue. Ce composant est une fonction logique de l’électronique : Le compteur.

Question : Nous souhaitons obtenir une période de signal de 1/100ème de secondes. A quelle fréquence correspond cette période ?

T = 1f   avec T : Période (en s) ; f : Fréquence (en Hz)

f= 1

……………  = ………. Hz

Question : Sachant que la fréquence de la broche « c0 » est de 10 KHz, par quelle valeur doit-on la diviser afin d’obtenir le signal de 1/100ème de secondes ?

Valeur de la division = Fréquencedu signalc 0

Fréquence que l ' onsouhaiteobtenir=………………….………………….  = ………………

Question : Combien de bits faut-il pour coder cette valeur de division ?

Il faut 1 bit pour aller de 0 à 1 ; Il faut 2 bits pour aller de 0 à 4 ;Il faut 3 bits pour aller de 0 à 8 ;……Il faut n bits pour aller de 0 à 2n ;

LYCEE LA FAYETTE 4/15

Page 5: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

Il faudra donc ………….. bits pour coder la valeur de la division 

Créer un nouveau composant avec le « MegaWizard Function »  de type LPM_COUNTER (librairie Arithmetics) au format VHDL, que vous nommerez « counter ».

Renseigner ensuite le nombre de bits utiles que vous souhaitez et choisir l’option de comptage vers le haut (up counter) :

Dans la fenêtre suivante, indiquer la valeur par laquelle vous souhaitez diviser le signal d’entrée :

Le compteur va compter « modulo 100 », c’est-à-dire s’arrêter à 100 et recommencer. Ainsi, le signal d’horloge sera divisé par 100.

Si nous avions laissé « plain binary », il aurait compté jusqu’à 27 = 128. Le signal aurait donc été divisé par 128.

Laisser les autres options par défaut et cliquer sur « Finish ».Ajouter ensuite un fil sur la sortie du diviseur. Editer les propriétés du fil (clic droit > properties) afin de lui donner le nom Q[6..0].

Q[6..0] est ce qu’on appelle un bus. C’est un ensemble comprenant 7 fils (Q0, Q1, Q2, …, Q6). Chaque fil possède un coefficient de division spécifique. Le fil sur lequel le signal est divisé par 100 est le fil Q6.

LYCEE LA FAYETTE 5/15

Page 6: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

Nous voulons que le signal sur Q6 soit relié à la LED0. Pour cela, ajouter une sortie à votre schéma que vous nommerez LED0, puis ajouter un fil nommé Q[6] à cette broche :

Nous avons terminé de la création du signal permettant de faire clignoter la LED0 avec une période de 1/100ème de secondes. Il nous reste à créer les signaux au 1/10ème et 1 seconde.

Question : Nous souhaitons maintenant obtenir une période de signal de 1/10ème de secondes. A quelle fréquence correspond cette période ?

T = 1f   avec T : Période (en s) ; f : Fréquence (en Hz)

f= 1

……………  = ………. Hz

Question : Quelle doit être la valeur du diviseur qui permettra de créer le signal de 1/10ème de secondes à partir du signal « c0 » de 10 KHz ?

Valeur de la division = Fréquencedu signalc 0

Fréquence que l ' onsouhaiteobtenir=………………….………………….  = ………………

Question : Combien de bits faut-il pour coder cette valeur de division ?

Il faudra donc ………….. bits pour coder la valeur de la division 

Créer ce second compteur et ajoutez-le à votre schéma de la manière suivante. Le signal Q2[9] correspond maintenant au signal avec une période de 1/10ème de secondes.

LYCEE LA FAYETTE 6/15

Page 7: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

Enfin, compléter le schéma en ajoutant les fonctions nécessaires pour obtenir le signal de 1 seconde. Vous relierez ce signal sur une broche de sortie LED2.

Procéder maintenant à l’analyse et l’élaboration du schéma (Start > Analysis and elaboration) et vérifier qu’il n’y a pas d’erreurs.

Il faut maintenant attribuer les numéros de broches aux broches de notre schéma.

Question : En vous aidant du manuel de la carte DE0-NANO en page 14, indiquer quels sont le noms des broches LED[0], LED[1] et LED[2] ?

FPGA Pin No. (LED[0]) = …………………..FPGA Pin No. (LED[1]) = …………………..FPGA Pin No. (LED[2]) = …………………..

Question : En vous aidant du manuel en page 14, indiquer le nom de la broche correspondant au bouton poussoir KEY[0].

FPGA Pin No. (KEY[0]) = …………………..

Question : En vous aidant du manuel en page 24, indiquer le nom de la broche correspondant au signal CLOCK_50.

FPGA Pin No. (CLOCK_50) = …………………..

En utilisant les informations précédentes, attribuer les broches du FPGA correctement en allant dans le menu « Assignment > Pin Planner ».

Compiler le projet est le tester afin de vérifier qu’il fonctionne.

Appeler le professeur pour lui montrer les résultatsQuestion : Proposer une solution permettant de faire en sorte que l’appui sur le bouton poussoir arrête le clignotement des LED au lieu de le démarrer.

LYCEE LA FAYETTE 7/15

Page 8: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

Effectuer cette modification et vérifier le bon fonctionnement.

Appeler le professeur pour lui montrer les résultats

On remarque que lors de l’appui sur le bouton poussoir, les LED restent quelques fois allumées. Afin de corriger ce problème, éditer les compteurs de votre schéma (double cliquer dessus) et ajouter à chacun d’entre eux une broche de remise à zéro synchrone (Asynchronous clear) :

Question : A quel composant peut-on relier ces broches afin que la sortie des compteurs soient nulle lors de l’appui sur le bouton poussoir ?

Effectuer ces modifications et testez-les. 

Appeler le professeur pour lui montrer les résultats

4. Simulation du projet

La simulation est une étape permettant de tester virtuellement le bon fonctionnement du projet. 

LYCEE LA FAYETTE 8/15

Page 9: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

a. Synthèse du projet

Pour commencer, effectuer l’analyse et la synthèse du projet en exécutant la fonction dans le menu « Processing > Start > Analysis and Synthesis ».

Le schéma correspondant à la synthèse du projet qui sera utilisé pour la simulation peut être visualisé en allant dans « Tools > Netlist Viewers > RTL Viewer » :

b. Configuration de la simulation

Aller maintenant dans le menu « Assignments > Settings » puis sélectionner « EDA Tools Settings > Simulation » sur la gauche. Utiliser le format VHDL pour le netlist et cliquer sur « More EDA Netlist Viewer Settings » :

Activer la fonction « Generate Netlist for Functionnal simulation only » et valider.

c. Conversion du schéma en code VHDL pour la simulation

Le schéma étant ouvert, aller dans le menu « File > Create / Update > Create HDL Design File from the Current File… ».

LYCEE LA FAYETTE 9/15

Page 10: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

Dans la fenêtre qui s’affiche, sélectionner le format VHDL et cliquer sur « OK ».

Le fichier VHDL correspondant au schéma est créé et un message indiquant que le processus s’est correctement déroulé apparait :

d. Ajout du fichier VHDL au projet et compilation

Ouvrir le fichier VHDL précédemment créé en allant dans « File > Open ». Le programme correspondant au schéma apparait à l’écran :

Ajouter ensuite ce fichier en allant dans « Project > Add Current File to Project ».Supprimer le fichier « .BDF » du projet afin d’éviter d’avoir deux fichiers équivalents. Pour cela, aller dans « Project > Add / Remove Files in Project » et sélectionner le fichier TP_NANO2.BDF :

LYCEE LA FAYETTE 10/15

Page 11: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

Compiler le circuit pour réaliser une simulation fonctionnelle en allant dans « Processing > Start > Analysis and Elaboration ».

e. Lancement du simulateur

Aller dans le menu « Tools > Run simulation Tools > RTL Simulation ». Le simulateur ModelSim s’exécute.

Dans le logiciel ModelSim, exécuter la fonction « Simulate > Start simulation »  pour placer le logiciel en mode simulation. Dans l’onglet « Design », cliquer sur « Work » et sélectionner le projet en cours à simuler : « TP_NANO2 » puis valider avec « Ok ».

Sur la partie gauche de l’écran (dans la partie SIM) sont répertoriés les composants qui ont été créés :

LYCEE LA FAYETTE 11/15

Page 12: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

Aller dans le menu « View » et cliquer sur «  Objects » afin de visualiser les signaux correspondant aux composants.

Lorsqu’on sélectionne un composant sur la gauche, les signaux de ce composant s’affichent :

f. Sélection des signaux à visualiser

Pour sélectionner les signaux à visualiser et les ajouter aux chronogrammes, sélectionner les composants à gauche de l’écran, puis faire un clic droit sur le signal voulu et « Add > Add to Wave > Selected Signal ». Par exemple, pour visualiser le signal CLK, sélectionner le composant PLL et faire un clic droit sur le signal inclk0 et sélectionner « Add to > Wave > Selected signal » :

Faire cela pour les signaux CLK, RESET, LED0, LED1 et LED2 :- CLK correspond au signal inclk0 du composant pll ;- RESET correspond au signal areset de la pll ;- LED0 correspond au signal Q[6] du compteur 1 ; - …

LYCEE LA FAYETTE 12/15

Page 13: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

g. Création des signaux de tests

Lorsque tous les signaux sont sur le chronogramme, il est possible d’agrandir la fenêtre en cliquant sur cette icone :

Pour simuler notre projet, nous allons ajouter un signal d’horloge sur l’entrée CLK et placer l’entrée RESET au niveau bas.

Pour cela, sélectionner le signal « inclk0 » avec le bouton droit de la souris puis sélectionner « Clock » :

Entrer ensuite une période de 0.02us ce qui correspond à une fréquence de 50 MHz :

Editer ensuite le signal « areset » et sélectionner « Force » :

Entrer la valeur « 0 » pour le mettre au niveau bas :

LYCEE LA FAYETTE 13/15

Page 14: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

h. Configuration de la base de temps de la simulation

Par défaut, l’unité de la base de temps du chronogramme est en pico-secondes (1 ps = 10-12s). Pour mettre la base de temps en us, cliquer droit dans la zone des timing (en bas de la page) et sélectionner l’option « Grid & Timeline Properties… ».

Entrer ensuite comme unité de temps le « us » puis cliquer sur « Auto Period ».

Entrer également un pas d’analyse de 0.02 us en haut de la fenêtre. A chaque calcul, la simulation fera une analyse sur 0.02us ce qui correspond à une période d’horloge :

Appuyer sur le bouton « RUN » : La simulation se lancera sur une période : On observe que le signal clkin0 est bien un signal d’horloge carré, de période 0.02 us et que le signal areset est bien au niveau bas :

Pour lancer la simulation en mode continu, appuyer sur le bouton « RUN ALL » :

En bas de la fenêtre s’affiche le temps courant de calcul :

Appeler le professeur pour lui montrer les résultatsQuestion : Donner la période du signal en sortie de la PLL (signal c0) :

LYCEE LA FAYETTE 14/15

Page 15: SN - Bretagnedocuments.sn-bretagne.net/files/Hericy-Lafayette... · Web viewVous arrivez sur la fenêtre nous permettant de choisir notre fréquence de sortie. Question : Sachant

TP : FPGA ET GESTION DES HORLOGES – MODULE DE0-NANO

T (signal c0) = …………….. ms

Question : Configurer le pas de simulation afin qu’il soit égal à la période du signal c0.

Relancer ensuite la simulation en cliquant sur le bouton « restart » puis reconfigurer les signaux en mettant une horloge de 0.02 us sur clkin0 et le signal areset à l’état bas. Effectuer quelques simulations et visualiser les signaux :

Le signal c0 en sortie de la PLL est bien un signal d’horloge.

Question : A l’aide des curseurs, mesurer la période du signal c0 en sortie de la PLL. Cette période correspond-t-elle bien à celle attendue ?

T (signal c0) = …………….. ms

Appeler le professeur pour lui montrer les résultats

LYCEE LA FAYETTE 15/15