Design of Embedded Hardware and Firmware Titre - Moodle
Transcription
Design of Embedded Hardware and Firmware Titre - Moodle
Cours VHDL Tools Altera QuartusII ModelSim-Altera René Beuchat Laboratoire d'Architecture des Processeurs [email protected] RB - P2013 5 QuartusII RB - P2013 6 Création Projet • File New Project Wizard • !!! Pas d’espace dans les noms de dossiers et de fichiers !!! RB - P2013 7 Création projet • • • • RB - P2013 Spécifier un dossier de projet Donner un nom au projet Donner un nom au fichier « TOP » du projet Les noms peuvent être identiques ou différents 8 Création Projet • Il est possible de récupérer des fichiers de projets précédents RB - P2013 9 Création Projet • Sélection FPGA Pour DE0-nano EP4C22F17C6 RB - P2013 10 Création Projet • Sélection Outils supplémentaires Simulation ModelSim-Altera RB - P2013 11 Création Projet • Résumé des paramètres du projet Finish RB - P2013 12 Path ModelSim-Altera • Définir le chemin pour outil de simulation ModelSim-Altera: • Tools Options… General EDA Tools Options ModelSim-Altera: Selon version et installation RB - P2013 Fixe: \modelsim_ae\win32aloem 13 Nouveau Fichier VHDL • File New… Design Files VHDL File • OK RB - P2013 14 1er programme • Réalisation d’un compteur en BCD 4 bits: Compte de 0 à 9 "0000" à "1001" Et recommence Autrement retourne à "0000" A faire en VHDL RB - P2013 15 Test1_VHDL: CntBCD • Programme de base pour créer un compteur simple BCD 4 digits: • Entrées: Mise à Zéro: nReset Horloge: Clk actif à ‘0’ sur flanc montant • Sorties: Sortie du compteur: RB - P2013 Q[3 ..0] 16 Test1_VHDL • Librairies de base et arithmétiques: • library ieee; • Use ieee.std_logic_1164.all; • Use ieee.numeric.std; • Le détail sera étudié plus tard RB - P2013 17 Test1_VHDL library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; -- compteur 4 bits BCD -- remise à 0 par nReset -- compte sur flanc montant del'horloge -- utilise facilité de la librairie numeric_std entity CntBCD is port( Clk: in std_logic; nReset: in std_logic; Q: out std_logic_vector(3 downto 0) ); end entity CntBCD; RB - P2013 18 Test1_VHDL • • architecture bhv of CntBCD is signal iCntBCD: unsigned(3 downto 0); -- Signaux pour calculs internes • begin • Q <= std_logic_vector(iCntBCD); • • • • • • • • • • • • pCntBCD: process( Clk, nReset) begin if nReset = '0' then -- nReset actif à '0' et asynchrone iCntBCD <= (others => '0'); elsif rising_edge(Clk) then -- sur flanc montant de Clk if iCntBCD < 9 then iCntBCD <= iCntBCD + 1; -- si CntBCD est <9, il est incrémenté else iCntBCD <= (others => '0'); -- autrement remis à 0 end if; end if; end process pCntBCD; • end architecture bhv; RB - P2013 -- Sortie: Compteur avec cast du type 19 Compilation et simulation • Le fichier vhdl est sauvé dans Quartus II • Puis Compilé • Le simulateur ModelSim est appelé Tools Run EDA Simulation Tool EDA RTL Simulation EDA Gate Level Simulation RB - P2013 20 (fonctionnelle) (temporelle) ModelSim Simulate Start Simulation… Design, choix du code à simuler RB - P2013 21 ModelSim, contraintes temporelle générées par Quartus • Fichier post routage avec timing *.sdo • OK RB - P2013 22 ModelSim Sélect et transfert RB - P2013 23 Script de simulation: fichier *.do • • • • • • • • restart force -freeze sim:/cntbcd/clk 1 0, 0 {50000 ps} -r {100 ns} force -freeze sim:/cntbcd/nreset 1 0 run 100 ns force -freeze sim:/cntbcd/nreset 0 0 run 100 ns force -freeze sim:/cntbcd/nreset 1 0 run 2000 ns Depuis fenêtre de commande: do RB - P2013 24 sim.do ModelSim, résultat de simulation fonctionnelle RB - P2013 25 ModelSim, résultat de simulation temporelle délais RB - P2013 26 ModelSim, résultat de simulation temporelle délais RB - P2013 27 Chip Planner RB - P2013 28 Netlist Viewers RTL Viewer DFF: if rising_edge(Clk) RB - P2013 29 Netlist Viewers Technology Map Viewer (Post Mapping) RB - P2013 30 Netlist Viewers Technology Map Viewer différentes représentations RB - P2013 31 Nouvelle version: initialisation du compteur • Le compteur est initialisé à 0000 • Compte en BCD 0..9 en boucle Exercice: • Rajouter des entrées pour initialiser le compteur à une valeur initiale fournie sur D(3 downto 0) en synchronisme avec l’horloge si l’entrée Load activée. RB - P2013 32 Créér un symbole pour Quartus • File Create/Update • Create Symbol File for Current File RB - P2013 33 Fichier schéma • File New • Design File • Block Diagram/Schematic File RB - P2013 34 Schéma, prendre symbole • Prendre symbole créé • <clic><clic> gauche ou RB - P2013 35 Schéma, mettre les entrées sorties • Spécifier les pins des entréessorties pour aller sur la carte DE0 • Puis sélectionner la librairie pin RB - P2013 36 Pins d'entrées-sorties • Ou sélectionner symbole <clic> droite RB - P2013 37 Affectation des pins • Sauver le schéma Top_CntBCD.bdf • Affectation des numéros de pins Dépend du matériel utilisé. DE0-nano RB - P2013 38 Pins pour CntBCD Signal nom FPGA pin Conn. Pin Nom ExtDE0_LedSw Clk R9 GPIO_1_IN1 JoystikE_n nReset B3 GPIO_04 Button_n3 Q[3..0] A12, D11, D12, B12 GPIO_030..33 Sw_LedA[3..0] Load A8 GPIO_0_IN0 Button_n0 D[3..0] F9, E9, C9,D9 GPIO_022..25 Sw_LedB[3..0] RB - P2013 39 Assignement des pins • Assignement Assignement Editor RB - P2013 40 Affectation des pins • Résultat sur schéma après compilation: RB - P2013 41 Chargement sur la carte FPGA DE0-nano • Branchez la carte sur USB • Bouton programmer RB - P2013 42 Chargement sur la carte FPGA DE0-nano Nom fichier à programmer (.sof) RB - P2013 43 ExtDE0LedSw Top (Dessus) Q[3..0] nReset Clock Est RB-2013 44 Essai sur carte • Joystick sur la droite Compte • Bouton haut à gauche nReset • Affichage haut droite sur LEDs binaire RB - P2013 45 Carte DE0 Terasic RB - P2013 46 RB - P2013 47 RB - P2013 48 RB - P2013 49 RB - P2013 50 • Connecteurs d'extensions DE0 RB - P2013 51 • Connecteur dessous • 8 entrées analogiques RB - P2013 52 ExtDE0LedSw Top (Dessus) RB-2013 53 ExtDE0LedSw Bottom (Dessous) RB-2013 54
Documents pareils
QuartusII design
Au final une horloge HH :MM :SS est assemblée. Pour les plus rapides, elle peut facilement être
complétée par les dixièmes, centièmes et millièmes de seconde.
Une horloge de base à 24MHz est fourni...