Académique Documents
Professionnel Documents
Culture Documents
Prélab : installez Quartus, ModelSim et SystemBuilder en suivant les instructions du document Installation de Quartus, Modelsim et SystemBuilder . Lisez 1)
Organisation de fichiers recommandée sur la page Web, et 2) Document Verilog 1 : Présentation et Verilog 2 : Notions de base axées sur l' instruction d'affectation .
Ressources : la page Web Terasic pour la carte DE10Lite contient des liens vers des informations et des ressources pour la carte. Ces ressources comprennent :
System Builder est un utilitaire Windows inclus sur le CDROM DE10Lite et décrit au chapitre 4 du manuel de l'utilisateur. Cet outil génère des fichiers de projet Quartus
Prime et effectue le mappage d'affectation des broches pour les broches d'E/S sur la carte DE10Lite.
1) Exécutez DE10_Lite_SystemBuilder.exe
2) Spécifiez le nom du projet et les périphériques d'E/S que vous utiliserez dans votre projet.
Par exemple, pour ce didacticiel, spécifiez le nom du projet comme étant majoritaire et sélectionnez les périphériques d'E/S LED, bouton, commutateur et 7
segments, comme indiqué dans la figure 1. Cliquez ensuite sur le bouton Générer pour enregistrer les fichiers du projet dans votre dossier de projet. . Une fois que tu as
généré avec succès vos fichiers de projet Quartus Prime, quittez System Builder.
1
Machine Translated by Google
System Builder créera un ensemble de fichiers dans le répertoire de votre projet, comme le montre la figure 2. Seuls quelquesuns de ces fichiers sont pertinents pour
ce laboratoire.
Le fichier majority.v est le modèle de votre fichier de conception Verilog de niveau supérieur. Le modèle généré par System Builder est illustré à la figure 3. System
Builder mappe les périphériques d'E/S avec les affectations de broches appropriées qui sont câblées sur la carte DE10Lite. C'est une grande commodité d'utiliser System
Builder pour créer votre fichier de projet et votre fichier modèle Verilog afin que vous n'ayez pas besoin d'effectuer manuellement le mappage des broches. Les
sections de déclarations et de codage structurel sont laissées vides pour que vous puissiez les compléter.
//================================================= =======
// Ce code est généré par Terasic System Builder
//================================================= =======
//////////// SW //////////
saisir [9:0] Logiciel
);
//================================================= =======
// Déclarations REG/WIRE
//================================================= =======
//================================================= =======
// Codage structurel
//================================================= =======
module final
Dans cet exemple, nous illustrerons la conception d'un portail majoritaire, comme décrit dans la section 3.6 de notre manuel, Digital Design – A.
Approche systémique. Nous utiliserons des interrupteurs pour les entrées et une LED pour la sortie.
2
Machine Translated by Google
• Exécutez Quartus Prime et ouvrez le fichier de projet que vous venez de créer à l'aide de System Builder.
• Sélectionnez Fichier > Ouvrir le projet et accédez au dossier dans lequel vous avez stocké vos fichiers. Sélectionnez le fichier majority.qpf.
• Doublecliquez sur l'instance d'entité majoritaire dans le volet Navigateur de projet afin d'ouvrir le modèle créé par System Builder pour votre conception de niveau
supérieur.
• Ajoutez la ligne de code suivante dans la section Codage structurel du fichier majority.v :
Comme décrit dans votre texte (p. 50) et dans d'autres documents, Verilog utilise les symboles &, |, ^ et ~ pour représenter les opérations logiques AND, OR, XOR et
NOT, respectivement. Le motclé assign est utilisé pour décrire une fonction logique combinatoire. Dans ce cas, LEDR[1] sera affirmé (logique haut) lorsqu'au moins 2
des 3 entrées de commutateur, SW[0]SW[2], sont hautes.
Les LED « LEDR » sont actives au niveau haut, comme le montre la figure 4.
• Une fois que vous avez entré votre code Verilog, cliquez sur Traitement > Démarrer la compilation. La conception doit être compilée avec 0 erreur.
• Sélectionnez Outils > Programmeur. Connectez votre carte DE10Lite à votre ordinateur hôte avec le câble USB. La configuration matérielle doit être définie sur
USBBlaster [USB0], comme indiqué dans la figure 5. Assurezvous que le fichier majoritaire.sof est répertorié et que la case Programme/Configurer est
cochée comme indiqué dans la figure 5. Cliquez ensuite sur Démarrer.
3
Machine Translated by Google
Vous pouvez maintenant tester la conception de la porte majoritaire sur la carte DE10Lite en utilisant SW[0], SW[1] et SW[2] comme entrées. Lorsqu'au moins 2 des 3
entrées du commutateur sont hautes, alors la sortie LEDR[1] doit être allumée ; sinon, il devrait être éteint.
Une technique de débogage très puissante consiste à simuler une conception à l’aide d’une simulation fonctionnelle ou temporelle. C'est une bien meilleure façon de déboguer
une conception que de télécharger et de tester sur une carte FPGA car : 1) dans une simulation fonctionnelle, vous pouvez voir les signaux internes ainsi que les signaux
d'E/S ; et 2) l'utilisation d'un banc de test évite le temps nécessaire au téléchargement répété d'une conception sur la carte FPGA.
Nous commencerons par faire une simulation fonctionnelle de la conception de la porte majoritaire à l'aide d'un banc de test. Bien qu'il soit possible de donner manuellement
des commandes de stimulation ou de dessiner des formes d'onde, la meilleure approche consiste à écrire un programme de test dans Verilog pour générer les entrées
de stimulation et surveiller les sorties.
Un exemple de banc de test pour le module de porte majoritaire est présenté dans la figure 6. Ce code de banc de test a été légèrement adapté du code donné dans la
figure 3.8 (p. 50) dans votre texte uniquement parce que les noms des signaux d'E/S sont différents pour le module de porte majoritaire. Carte DE10Lite que les signaux
utilisés dans le texte.
module tb_majorité ;
Le code de Testbench Verilog n’est pas synthétisé dans le matériel réel ; c'est uniquement à des fins de simulation. Par conséquent, il peut utiliser des constructions
Verilog non synthétisables telles que le délai (#) et les instructions initiale et $display . Le banc de test instancie le module à tester, en l'occurrence le module majoritaire
avec une instance spécifique appelée maj1, et il fournit des stimuli pour les entrées et surveille les sorties. Dans ModelSim, le visualiseur de forme d'onde est un outil pratique
pour vérifier le bon fonctionnement de un circuit.
4
Machine Translated by Google
Pour effectuer une simulation fonctionnelle à l'aide de ModelSim Intel, procédez comme suit :
1) Entrez le tb_majority.v dans un fichier dans le même répertoire de projet que majority.v.
2) Dans le répertoire de votre projet Quartus Prime, créez un nouveau sousrépertoire pour votre projet de simulation. A titre d'exemple, vous pourriez
appelez le sousrépertoire simulation.
3) Exécutez ModelSimIntel FPGA à partir du menu Démarrer ou d'une icône du bureau. (Ne le lancez pas depuis Quartus Prime car le
testbench ne fera pas partie d'un tel projet.)
4) Sélectionnez Fichier > Nouveau > Projet pour ouvrir la boîte de dialogue Créer un projet. Donnez un nom au projet et spécifiez l'emplacement du projet comme sous
répertoire que vous avez créé cidessus. Laissez les autres paramètres dans l'état par défaut. (c'estàdire Nom de la bibliothèque par défaut = travail, Copier
les paramètres depuis = Copier les mappages de bibliothèque). Cliquez sur OK.
5) Ensuite, une fenêtre Ajouter des éléments au projet s'ouvre. Ajoutez à la fois votre tb_majority.v et votre majority.v. Laissez le jeu ouvert sur « Référence à partir
de l'emplacement actuel ».
6) Sélectionnez Compiler > Tout compiler. Votre projet doit être compilé sans erreur.
7) Cliquez sur Simuler > Démarrer la simulation. Sélectionnez Conception > travail > tb_majority
8) Pour afficher une forme d'onde de simulation, cliquez sur Affichage > Vague. Ensuite dans la fenêtre Objets, sélectionnez le nombre, faites un clic droit dessus et
sélectionnez Ajouter une vague. Cela ajoutera le signal de comptage à votre fenêtre Wave. Développez ensuite le signal LEDR, sélectionnez LEDR[1] et ajoutez
le à la fenêtre Wave. De cette façon, vous pouvez voir la forme d'onde des signaux d'entrée et de sortie de la porte majoritaire.
9) Vous pouvez exécuter la simulation en sélectionnant Simuler > Exécuter > Exécuter 100 ou en tapant simplement exécuter dans la fenêtre de commande.
Cela exécutera votre simulation pendant 100 unités de temps, soit 100 ps par défaut. Voir la figure 7 pour une capture d'écran de la fenêtre Wave après une
simulation de 800 ps.
Vous devriez également voir la sortie dans la fenêtre de la console ModelSim à partir de la commande $display dans le banc de test. La sortie de la console doit être une
version texte de la sortie de forme d'onde et doit être la même que dans la figure 3.9 de votre texte et illustrée dans la figure 8.
5
Machine Translated by Google
En suivant l'exemple donné dans la partie 0, créez un nouveau projet et implémentez quelques portes logiques de votre choix à l'aide des commutateurs, boutons,
LED et affichages à 7 segments de la carte DE10Lite. Téléchargez votre conception et vérifiez le bon fonctionnement. Il existe de nombreuses options de
conception possibles. Quelques exemples sont les portes AND, NAND, OR, NOR à 2, 3 ou 4 entrées. Vous pouvez également utiliser un boutonpoussoir
pour contrôler directement une LED ou un segment d'un afficheur à 7 segments. Notez que les segments de l'affichage à 7 segments sont actifsbas, comme le
montre la figure 9, et que le bit 7 correspond au point décimal. Par exemple, afin de désactiver tous les segments de l'affichage à 7 segments HEX0 et de les
conserver, vous pouvez utiliser l'instruction assign suivante :
Vous pouvez vérifier expérimentalement ou à partir du schéma de la carte DE10Lite que les interrupteurs à boutonpoussoir sont actifsbas.
Concevez un module Verilog « testbench » qui instancie une copie de votre module, exerce le circuit à travers toutes les combinaisons d'entrées possibles et
imprime les entrées et les sorties les unes à côté des autres dans un format facile à lire.
Figure 9. Extrait du schéma DE10Lite montrant un affichage à 7 segments actifbas. Un fonctionnement actif faible est visible car les nœuds communs sur les
broches 1 et 6 sont liés à Vcc.
Une fois que votre conception fonctionne sur la carte DE10Lite, démontrezla à votre TA pour votre vérification.
Partie 2. Implémentation d'un affichage décimal logique combinatoire à 7 segments pour les entrées de commutateur 4 bits
Dans cette partie, concevez un circuit combinatoire simple afin que la valeur de l'entrée du commutateur 4 bits, SW[3] – SW[0], soit affichée en décimal sur
HEX[1] et HEX[0]. Ainsi, votre écran affichera les valeurs 00, 01, 02, … 09, 10, 11, 12, 13, 14, 15 en fonction des positions de SW[3]–SW[0]. Les autres affichages
à 7 segments (HEX5–HEX2) doivent être éteints.
1) Écrivez une table de vérité pour les sorties (c'estàdire les segments sur les écrans HEX1 et HEX0) basée sur l'entrée 4 bits
(SW[3]–SW[0]).
3) Utilisez la carte de Karnaugh pour générer des équations logiques pour chaque sortie.
5) Concevoir et mettre en œuvre un banc de test pour tester les 16 cas d'entrée.
Plus tard, vous apprendrez d'autres façons de décrire la logique combinatoire dans Verilog, par exemple en utilisant une instruction case pour implémenter directement une table
de vérité sans résoudre les équations logiques.
Démontrez votre conception fonctionnelle sur la carte DE10Lite à votre TA pour vérification.
[25 pts] Démontrer la mise en œuvre de la première partie des portes logiques de base à l'aide de commutateurs et de LED
[35 pts] Démontrer la mise en œuvre de la partie II de l'affichage décimal des nombres de 00 à 15
2) [10 pts] Code source Verilog complet pour les deux exercices de laboratoire (partie I et partie II).
3) [10 pts] Table de vérité, cartes de Karnaugh et équations de sortie pour votre conception de la partie II.
4) [20 pts] Résultats imprimés des bancs de test montrant les entrées aux côtés des sorties pour les parties I et II.
2021/04/01 Publié