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

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...

Plus en détail