28
Université de Savoie Module ETRS-511 FPGA & VHDL Travaux Dirigés FPGA & VHDL Sylvain MONTAGNY [email protected] Bâtiment chablais, bureau 13 04 79 75 86 86 TD1 : Environnement de développement QUARTUS II TD2 : Synthèse de systèmes logiques combinatoires TD3 : Synthèse de systèmes logiques séquentiels TD4 : Video Graphic Array (VGA) TD5 : Mémoires RAM Retrouver tous les documents de Cours/TD/TP sur le site www.master-electronique.com

Travaux dirigés FPGA & VHDL

Embed Size (px)

Citation preview

Page 1: Travaux dirigés FPGA & VHDL

Université de Savoie Module ETRS-511 FPGA & VHDL

Travaux Dirigés FPGA & VHDL

Sylvain MONTAGNY [email protected]

Bâtiment chablais, bureau 13 04 79 75 86 86

TD1 : Environnement de développement QUARTUS II TD2 : Synthèse de systèmes logiques combinatoires TD3 : Synthèse de systèmes logiques séquentiels TD4 : Video Graphic Array (VGA) TD5 : Mémoires RAM

Retrouver tous les documents de Cours/TD/TP sur le site www.master-electronique.com

Page 2: Travaux dirigés FPGA & VHDL

Université de Savoie Module ETRS-511 FPGA et VHDL

TD1

Environnement de développement QUARTUS II

1. Généralités sur la synthèse logique

La documentation fournie par ALTERA sur l’environnement de programmation Quartus II propose les différentes étapes pour l’organisation d’un projet. Dans le désordre, les étapes proposées sont : Functional Simulation – the synthesized circuit is tested to verify its functional correctness; the simulation does not take into account any timing issues. Programming and Configuration – the designed circuit is implemented in a physical FPGA chip by programming the configuration switches that configure the LEs and establish the required wiring connections. Fitting – the CAD Fitter tool determines the placement of the LEs defined in the netlist into the LEs in an actual FPGA chip; it also chooses routing wires in the chip to make the required connections between specific LEs. Synthesis – the CAD Synthesis tool synthesizes the circuit into a netlist that gives the logic elements (LEs) needed to realize the circuit and the connections between the LEs. Timing : Analysis and Simulation – propagation delays along the various paths in the fitted circuit are analyzed to provide an indication of the expected performance of the circuit. (Analysis). The fitted circuit is tested to verify both its functional correctness and timing. (Simulation) Design Entry – the desired circuit is specified either by using a hardware description language, such as Verilog or VHDL, or by means of a schematic diagram. Notes : LEs : Logic Elements CAD : Computer Aided Design

Q1. Donner pour chacune des étapes une explication / traduction claire.

1/8

Q2. Remplissez l’organigramme suivant représentant toutes les étapes.

Page 3: Travaux dirigés FPGA & VHDL

2/8

Page 4: Travaux dirigés FPGA & VHDL

2. Projet sur la platine DE1 ALTERA

La carte électronique sur laquelle nous allons travailler en TD/TP est la carte DE1 de chez ALTERA. Elle permet de mettre en œuvre toute une série d’applications de tests.

Figure 1 : Carte DE1 de chez ALTERA

2.1. Procédure d’installation La procédure implique au minimum l’installation de :

• QUARTUS II (Web Edition) + registration on ALTERA web Site for 150 days free Web Licence

• Drivers de la carte DE1 permettant de charger le code dans le FPGA. Après installation du kit de développement nous réalisons une application de test extrêmement simple.

Q1. Expliquer pourquoi les applications permettant de tester le bon fonctionnement de la chaîne de développement doivent être très simple ?

3/8

Page 5: Travaux dirigés FPGA & VHDL

2.2. Logique combinatoire Nous allons tester notre platine en réalisant une porte NOR.

• Les entrées A et B seront prises sur l’interrupteur SW0 et SW1 • La sortie S sera la LED LEDR[0]

La documentation de la carte DE1 précise une connexion de la LEDR[0] avec la broche nommée PIN_R20, SW0 avec la broche nommée PIN_L21, et SW1 avec la broche nommée PIN_L22.

Q2. Remettre dans l’ordre les actions à mener pour arriver à bout de cette petite application :

• Programmer la carte FPGA • Tester le fonctionnement de l’application sur la platine • Affecter les broches du composant aux entrées / sorties du système • Ouvrir un projet sous le logiciel QUARTUS II (Web Edition) • Coder le comportement du composant • Dessiner sur papier libre, la table de vérité, le schéma électronique, et/ou le

diagramme d’état du système. • Coder la partie ENTITY du système.

Q3. Faire les étapes précédentes que vous pouvez.

A la compilation du code que vous avez créé, on obtient le rapport de compilation suivant :

Figure 2 : Rapport de compilation du projet

4/8

Q4. D’après les caractéristiques du FPGA, quel serait selon vous l’ordre de prix d’un composant de ce type pour des faibles quantités.

Page 6: Travaux dirigés FPGA & VHDL

Q5. Expliquer les champs suivants du rapport de compilation :

• Met timing requirements • Total Logic Elements

La section « Timing Analyser » permet d’avoir des informations sur les différents temps de propagation à l’intérieur du composant. Dans notre cas simple, nous avons :

Figure 3 : Timing Analyser summary

Q6. A l’aide de la documentation de Quartus II ci-dessous, expliquer la signification de tpd ?

2.3. Logique séquentielle synchrone Nous allons rajouter la présence d’une horloge dans notre système. La sortie sera validée seulement sur la présence d’un front montant d’une horloge « clock ».

Q7. Donner le schéma logique global de cette application ?

5/8

Q8. Modifier l’architecture VHDL précédente afin de mettre en œuvre cette nouvelle application.

Page 7: Travaux dirigés FPGA & VHDL

Figure 4 : Rapport de compilation du projet en mode synchrone

Q9. Justifier les parties qui ont évoluées par rapport au mode combinatoire.

La présence de l’horloge nous donne aussi une autre version du « compilation Report ».

Figure 5 : Timing Analyser du projet en logique synchrone

Q10. Expliquer la 5ème ligne du tableau.

2.4. Timing Constraints : La compilation du circuit avec Quartus II nous a fourni une valeur maximale de cadencement du système (fmax). Cette valeur peut ne pas être en adéquation avec le cahier des charges du produit final. Il est alors possible de préciser au compilateur les contraintes de temps à optimiser. Par exemple, dans le système précédent, nous pourrions souhaiter un cadencement à 400 Mhz au lieu des 380,08 Mhz trouvé. La fréquence souhaitée peut être sélectionnée dans :

6/8

Assignment> Timing Analysis Settings >Classic Timing Analyser Settings

Page 8: Travaux dirigés FPGA & VHDL

Plusieurs méthodes sont alors utilisables pour le compilateur puisse trouver le chemin le plus favorable à la contrainte fixée. Elles sont sélectionnables dans : Assignements>Settings>Fitter Settings. (Ci-dessous)

Figure 6 : Fitter Effort

Figure 7 : Extrait de la documentation sur les possibilités d'optimisation

Q11. Expliquer chacune des 3 méthodes d’optimisation qui sont proposées.

A la compilation, nous avons ignoré un Warning couramment rencontré :

Q12. Expliquer ce Warning et préciser si celui-ci (load capacitance) possède une influence quelconque sur les analyses de temps du système.

2.5. RTL Viewer L’outil RTL Viewer (Tool>Netlist Viewers>RTL Viewer) permet d’afficher le schéma designer par Quartus II et qui sera implémenté dans le FPGA.

7/8

Dans notre cas, le schéma volontairement incomplet est le suivant :

Page 9: Travaux dirigés FPGA & VHDL

Figure 8 : Vue incomplète du schéma fourni par le RTL Viewer

8/8

Q13. Placer sur le schéma tous les éléments de la liste hiérarchique qu’il est possible de retrouver.

Page 10: Travaux dirigés FPGA & VHDL

Université de Savoie Module ETRS-511 FPGA et VHDL

TD2

Synthèse de systèmes logiques combinatoires

1. Différentes méthodes de descriptions VHDL

Nous allons étudier différentes façons de coder un projet VHDL. • L’entité du Top level sera toujours appelée appli. • L’architecture sera toujours appelée arch_appli.

Le schéma du système est le suivant :

1≥ 1

&

1

a

b

c

&

S

Figure 1 : Schéma d'une application

1.1. Description par flot de données Le système est décrit par les équations booléennes qu’il représente.

Q1. Faire la description VHDL de ce composant.

1.2. Description comportementale Cette description permet de décrire le comportement sans faire appel aux équations mais en passant par la table de vérité.

Q2. Réaliser la table de vérité de ce composant

Q3. Faire une description comportementale de ce composant sans utiliser de process.

1/3

Q4. Faire une description comportementale de ce composant en utilisant un process.

Page 11: Travaux dirigés FPGA & VHDL

1.3. Description structurelles La description structurelle décrit la fonction à partir de composants préexistants. Il suffit de définir :

• La liste des composant utilisés (composant déjà écrit en VHDL par ailleurs) • La liste des interconnexions entres ces composants

Q5. Réaliser le composant ET

Q6. Réaliser le composant NON

Q7. Réaliser le composant OU

Q8. Réaliser le composant globale en utilisant chacun des composants déjà réalisés.

2. Transcodeur

On souhaite réaliser un transcodeur qui prend en entrée un mot BCD (Binaire Codé Décimal) de 4 bits ABCD (D poids faible) et qui produit les sorties (a b c d e f g) de commande des leds de manière à afficher les symboles décimaux correspondants sur l'afficheur 7 segments.

a b c d e f g

A B C DTranscodeur c

b

a

f

e

d

g

Figure 2 : Schéma du composant et numérotation des segments de l'afficheur

Réaliser un décodeur BCD 7 segments en VHDL. Vous utiliserez un afficheur 7 segments pour lequel un niveau logique bas allume le segment et un niveau haut éteint le segment. Les segments seront commandés par les combinaisons de 4 entrées. Lorsque le code binaire ne représente pas un chiffre décimal, l’afficheur représentera un E symbolisant une erreur.

Q1. Réaliser le code VHDL entité et architecture en utilisant une structure WITH, SELECT, WHEN.

Q2. Réaliser le code VHDL entité et architecture en utilisant une structure avec CASE, WHEN.

2/3

Lorsque le composant est chargé dans le FPGA, le RTL Viewer nous donne l’implémentation matérielle suivante :

Page 12: Travaux dirigés FPGA & VHDL

Figure 3 : Schéma partiel du RTL Viewer

Note : Quel que soit la méthode de codage de l’architecture (process ou instructions concurrentes), la compilation donne le même schéma RTL Viewer.

3/3

Q3. Expliquer le schéma ci-dessus et préciser comment on arrive à allumer correctement chaque segment avec cette synthèse.

Page 13: Travaux dirigés FPGA & VHDL

Université de Savoie Module ETRS-511 FPGA et VHDL

TD3

Synthèse de systèmes logiques séquentiels

1. Jeu

On veut concevoir un jeu du type « Question pour un champion » (4 joueurs), à l’aide d’une maquette DE1. L’appui sur un bouton poussoir provoque un avertissement sonore (buzzer, commun à tous les joueurs) et le blocage du système. De plus, un signal lumineux (individuel à chaque joueur) spécifie le joueur ayant appuyé le premier parmi les quatre. Les autres joueurs ne peuvent alors plus intervenir car les autres boutons n’ont alors plus d’effet. Le système ne peut être remis à zéro que par l’animateur à l’aide d’une remise à zéro (Clear). Le buzzer et les 4 signaux lumineux s’éteignent.

Q1. Faite un schéma électronique du système en considérant que vous utiliser la carte DE1.

Q2. Donner le diagramme d’états du dispositif.

Q3. Ecrivez le programme permettant de réaliser cette fonction.

Dans cette version du système, le buzzer retenti pendant tout le temps, jusqu'à ce que le présentateur appuis sur Clear. Cela peut être contraignant.

Q4. Sachant que nous disposons d’une horloge à 10 kz pour piloter notre système séquentiel, trouver une réalisation permettant d’avoir un retentissement du buzzer uniquement pendant 0,5s. Implémenter votre nouveau système sans modifier le code des questions précédentes. (Simplement en rajoutant un nouveau composant au système).

2. Registre à décalage

2.1. Registre à décalage simple

1/4

Q1. Construire un système de registre à décalage 8 bits Parallèle>Série. C'est-à-dire que les bits du vecteur d’entrée (8 bits) sont transmis en sortie au rythme d’une horloge (front montant) lorsque la commande « send » est envoyée au système. Un reset (RAZ) asynchrone sera prévu.

Page 14: Travaux dirigés FPGA & VHDL

2.2. Registre à décalage liaison série Dans les liaison séries, l’octet transmis sur la ligne est encadré par un bit de start (niveau bas) au début, et un bit de parité + un bit de stop (niveau haut) à la fin (cf Figure 1).

Q2. Faire le nouveau codage VHDL de la liaison série.

Figure 1 : Diagramme temporelle de la liaison série

3. Conception d’un encodeur NRZI

On utilise en communications numériques sur ligne câblée (paire torsadée, câble coaxial) divers “codes de ligne” pour communiquer en bande de base, c’est à dire que le signal est transmis tel quel sur la ligne (sans modulation). Ces codes constituent tout simplement une façon de représenter les bits à transmettre. Ceci permet d’obtenir des caractéristiques spectrales intéressantes et/ou des propriétés qui faciliteront la synchronisation au récepteur. Le code en ligne que nous allons étudier est la code “NRZI” (Non Return to Zero Inverted) qui est utilisé dans le standard USB (Universal Serial Bus). Dans ce code, seuls les ’0’ génèrent une transition. Ainsi, pour transmettre le message : « 0 1 1 0 1 0 0 1 1 0 1 0 », on a la représentation suivante :

2/4

Page 15: Travaux dirigés FPGA & VHDL

Figure 2 : le code en ligne NRZI

Cet encodeur possède un désavantage majeur : si une trop longue séquence de bits ’1’ successifs est transmise, il n’y a aucune transition sur la ligne. Ceci rend la synchronisation entre le transmetteur et le récepteur impossible. Pour remédier à cela, le standard USB prévoit une opération d’intercalage de bits (“bit stuffing”). En effet, dès qu’une chaîne de six ’1’ est transmise, on intercale un ’0’ pour forcer une transition. Il est facile d’enlever ces ’0’ au récepteur pour recomposer le message original. Une portion de la chaîne de communication correspondante est illustrée sur la figure suivante :

Figure 3 : Schéma de fonctionnement général

La source : Elle génère les bits du message à transmettre sur le câble USB. Intercalage de bit: Il doit être capable de détecter une séquence de 6 ’1’ successifs et de transmettre un message avec les éventuels « bits de stuffing ». Si un « bit de stuffing » intervient, la ligne “maintien” est placée à ’1’ pour un coup d’horloge afin de signaler à la source qu’il faut attendre. Ce temps correspond au temps de mettre le bit supplémentaire dans le message. L’encodeur NRZI : Bloc réalisant la fonction NRZI de la Figure 2.

3/4

Page 16: Travaux dirigés FPGA & VHDL

3.1. Encodeur NRZI

Q1. Donner le graphe détaillé d’une machine d’état réalisant seulement le bloc de l’encodeur NRZI. On utilisera les variables du schéma de la Figure 3.

Note : Nous prendrons arbitrairement un état initiale associé a une valeur de Sortie=0 pour commencer le diagramme d’état.

Q2. Donner le code VHDL de l’encodeur NRZI avec une architecture codée en description comportementale.

Q3. Construire le tableau regroupant les états courants, les entrées, les états suivants et les sorties pour le bloc « encodeur NRZI ».

Q4. Déterminer l’équation des sorties : sortie et Etat Futur.

Q5. Réaliser le schéma logique de votre machine d’état.

Q6. Donner le code VHDL de l’encodeur NRZI avec une architecture codée en flot de donnée.

3.2. Intercalage de bits

Q7. Réaliser la description VHDL du module « intercalage de bits ».

4/4

Page 17: Travaux dirigés FPGA & VHDL

Université de Savoie Module ETRS-511 FPGA et VHDL

TD4

Video Graphic Array (VGA)

L’affichage vidéo VGA est un grand standard courant pour l’affichage graphique. Il est valable quelque soit la technologie de l’écran (cathodique ou LCD).

1. Objectifs :

Nous avons pour objectif de réaliser une carte graphique très simple. Elle permettra au moyen de trois interrupteurs de réaliser l’affichage des trois couleurs RGV (Red, Green and Blue) ou une combinaison des trois.

2. Le standard VGA

2.1. Présentation des signaux

1/7

Une image est représentée par des Pixels (Picture Elements). Chaque pixel contient 3 chromophores, un Rouge (Red), un Vert (Green) et un Bleu (Blue). La combinaison des chromophores RBG permet de réaliser une infinité de couleur.

Page 18: Travaux dirigés FPGA & VHDL

Figure 1 : Représentation d'une image à l'écran en 640x480

Un signal RGB contient 5 signaux : • Une synchronisation horizontale, permet de contrôler la position horizontale de

l’image dans la zone visible de l’écran • Une synchronisation verticale, permet de contrôler la position verticale de l’image

dans la zone visible de l’écran. • Un signal analogique pour le Rouge (0 > 0,7V) • Un signal analogique pour le Vert (0 > 0,7V) • Un signal analogique pour le bleu (0 > 0,7V)

Comme le montre la Figure 1, le rafraîchissement de l’image débute en haut à gauche et se termine en bas à droite. Chaque pixel est défini l’une après l’autre. A la fin de la première ligne, le compteur des colonnes est remis à zéro et le compteur de ligne passe à 1, etc…Jusqu’à que l’image soit complètement définie. La fréquence de l’image doit être de 60Hz afin de réduire la perception du scintillement de l’image.

2.2. Les timings du standard VGA En réalité, dans le mode VGA, le nombre total de ligne et de colonnes est de 800x524 mais seulement 640x480 sont affichées. Cela permet de laisser le temps pour revenir sur une nouvelle ligne ou de recommencer une nouvelle image. Pendant ce temps, (retour à la ligne ou recommencement d’une nouvelle image), les signaux RGB doivent être mis à zéro (couleur noire). Ces temps sont appelés : « front porch » et « back porch ».

2/7

Le tableau ci-dessous indique des exemples de timings pour les différents standards. Il est important de noter que ces timings ne sont pas critiques et surtout qu’ils ne sont pas des références ! Chaque constructeur peut fournir des temps sensiblement différents sans pour autant porter préjudice à l’affichage. En effet, dans une certaine plage, il est toujours possible d’ajuster l’image à droite, en haut, en bas ou à gauche grâce aux menus de l’écran.

Page 19: Travaux dirigés FPGA & VHDL

Horizontal (in Pixels) Vertical (in Lines) Format

Pixel Clock (MHz) Active

VideoFrontPorch

SyncPulse

BackPorch

ActiveVideo

Front Porch

Sync Pulse

BackPorch

640x480, 60Hz 640 16 96 48 480 11 2 31

640x480, 72Hz 31.500 640 24 40 128 480 9 3 28

640x480, 75Hz 31.500 640 16 96 48 480 11 2 32

640x480, 85Hz 36.000 640 32 48 112 480 1 3 25

800x600, 56Hz 38.100 800 32 128 128 600 1 4 14

800x600, 60Hz 40.000 800 40 128 88 600 1 4 23

800x600, 72Hz 50.000 800 56 120 64 600 37 6 23

800x600, 75Hz 49.500 800 16 80 160 600 1 2 21

800x600, 85Hz 56.250 800 32 64 152 600 1 3 27

1024x768, 60Hz 65.000 1024 24 136 160 768 3 6 29

1024x768, 70Hz 75.000 1024 24 136 144 768 3 6 29

1024x768, 75Hz 78.750 1024 16 96 176 768 1 3 28

1024x768, 85Hz 94.500 1024 48 96 208 768 1 3 36 Tableau 1 : Timing de l'ensemble des standards VGA

Dans la Figure 2, compt_h est le compteur des pixels horizontaux, permettant de savoir ou en est l’affichage et de générer convenablement le signal de synchronisation horizontale.

Figure 2 : Synchronisation horizontale

3/7

Q1. D’après le tableau des timings, compléter la variable compt_h de la Figure 2, sachant que nous travaillons en 640x480 à 60 Hz.

Page 20: Travaux dirigés FPGA & VHDL

Figure 3 : Synchronisation verticale

Q2. D’après le tableau des timings, compléter la variable compt_v de la Figure 3.

Q3. Compléter le Tableau 1 en retrouvant la fréquence d’affichage des pixels (pixels Clock).

Nous prendrons une fréquence de 25Mhz comme horloge de référence de notre système séquentiel.

Q4. Dans la figure ci-dessous, retrouver tous les temps du chronogramme.

Figure 4 : Signaux de synchronisation horizontal et RGB

Q5. Réaliser le même type de schéma pour la synchronisation verticale.

3. Réalisation en VHDL

Nous cherchons à implémenter le système de gestion des signaux VGA dans un FPGA. La carte DE1 de chez ALTERA possède en effet un connecteur VGA relié au FPGA. Le brochage de ce connecteur au FPGA est donné dans la documentation. La carte DE1 possède une horloge de 50 Mhz, à partir de laquelle nous allons cadencer l’ensemble du système.

4/7

Page 21: Travaux dirigés FPGA & VHDL

5/7

Q6. En annexes est présenté un exemple de schéma possible pour la réalisation de l’interface VGA. Pour chacun des blocs, expliquer son comportement.

Q7. Comment allez vous réaliser l’architecture du bloc div2 ?

Q8. Comment allez vous réaliser l’architecture des blocs compteurs ?

Q9. Donner le diagramme d’état des deux séquenceurs?

Page 22: Travaux dirigés FPGA & VHDL

6/7

Page 23: Travaux dirigés FPGA & VHDL

7/7

Page 24: Travaux dirigés FPGA & VHDL

Université de Savoie Module ETRS-511 FPGA et VHDL

TD5

Mémoires RAM

Dans un système numérique il est souvent nécessaire de fournir une certaine quantité de mémoire afin de stocker et manipuler des variables. Si ce système numérique est implémenté à base de FPGA, il est possible d’utiliser les ressources internes du composant du composant. Si des quantités de mémoire plus importante sont nécessaires, nous devons utiliser de la mémoire externe qui sera pilotée par le FPGA.

Q1. Quelle quantité de mémoire interne peut intégrer le FPGA de la carte DE1 Altera ?

Q2. A l’aide du User Manuel fournie avec la maquette DE1, démontrer la taille de 512 Ko pour la SRAM.

Q3. Localiser la mémoire SRAM et la mémoire SDRAM sur la carte DE1.

L’acronyme de SRAM est Static RAM. L’acronyme de SDRAM est Synchronous Dynamic RAM.

Q4. En comparant les spécifications des datasheets ci-dessous et des shcémas du User manual des deux mémoires RAM, indiquer les informations qui justifient les principales caractéristiques (Static, Synchronous, Dynamic…) de chacune des mémoires.

1/5

Figure 1 : Features of the SRAM memory

Page 25: Travaux dirigés FPGA & VHDL

Figure 2 : Features of the SDRAM memory

Nous nous proposons d’implémenter la mémoire suivante dans le FPGA.

Figure 3 : Mémoire RAM

2/5

Q5. Quelle est la capacité de cette mémoire RAM ?

Page 26: Travaux dirigés FPGA & VHDL

1.1. Utilisation de la mémoire interne du FPGA

Figure 4 : Implémentation de la mémoire RAM en interne avec un bloc M4K

Les FPGA Cyclone II comporte des blocs mémoires appelés M4K. Chaque bloc mémoire est composé de 4096 bits de mémoire qui peuvent être configurés pour implémenter de la mémoire de taille variables. Les M4K blocs comportent des registres sur les entrées et possèdent deux ports différents pour l’écriture et la lecture des données à destination, et en provenance de la mémoire. Lorsque nous souhaitons réaliser des applications complexes, les structures logiques telles que des additionneurs, des registres, des compteurs, des mémoires peuvent être implémentées en utilisant les modules LPM depuis les librairies paramétrables de Quartus II. Nous allons utiliser cette librairie pour implémenter la mémoire de la Figure 4. Créer un nouveau projet. Lancer l’outil de création de composant : Tool>MegaWizard Plug-In Mangage>Create a new custom MegaFunction variation

3/5

L’écran 1 se constitue comme suit (Figure 5):

Page 27: Travaux dirigés FPGA & VHDL

Figure 5 : Réalisation de la RAM interne en utilisant le Magawizard manager

Dans l’écran 2, sélectionner les blocs de mémoire M4K, et sélectionner single clock dans Wich cloking method do you like to use ? Dans l’écran 3, désélectionner ‘q’ output port dans la catégorie Wich port sould be registered ? Accepter les options par défaut des écrans suivants.

1.2. Simulation du composant Modifier le code VHDL produit pour faire correspondre les noms des entrées/sorties de notre système (Figure 4) Compiler le circuit. Vérifier dans le rapport de compilation que les bits ont bien été affectés. Simuler le circuit en essayant d’écrire et de lire dans la mémoire.

1.3. Test du composant Nous allons créer une application de test à l’aide d’afficheur à 7 segments afin de pouvoir visualiser les adresses, les données écrites et les données lues dans chaque emplacement mémoire.

4/5

Le code de la gestion de l’afficheur 7 segments est fourni.

Page 28: Travaux dirigés FPGA & VHDL

Créer un nouveau Top-level en schematic (New>Block Diagram/Schematic File) avec votre module RAM et vos afficheurs 7 segments. Pour obtenir un composant à partir des fichiers VHDL, vous devez les créer : Clic droit sur le composant (fichier VHDL) puis Create Symbol file for Current file. Réaliser un pin assignement qui vous permettra de tester le fonctionnement de la mémoire RAM à l’aide des éléments de la platine DE1 :

Entrée DE1 Signal Affichage SW0 à SW3 Datain HEX1 SW4 à SW7 Adress HEX3

SW9 Write LEDG0 KEY0 Clock

Dataout HEX0

5/5

Tester votre application sur la platine DE1.