Académique Documents
Professionnel Documents
Culture Documents
SCHEMA
Logiciels :
ALTERA QUARTUS II et Mentor Graphic ModelSim :
https://www.altera.com/download/software/quartus-ii-we
https://www.altera.com/download/software/modelsim
a. Création du projet
Les outils de développement pour FPGA utilisent la notion de projet :
- Définition de l’environnement du projet (Cibles, outils, contraintes et…)
- Travail collaboratif, plusieurs développeurs peuvent intégrer leurs productions dans un même
environnement.
Cliquer sur «New project wizard ». Le wizard (assistant) va nous guider dans la construction du
projet.
Il est indispensable de structurer les projets dans des dossiers, l’outil QUARTUS générant un grand
nombre de fichiers.
« Top-level design entity » est le nom du fichier de définition (schéma, MAE ou VHDL ) de plus haut
niveau, dans cet exemple il n’y a qu’un fichier schéma.
Page 2/5, « Add Files » permet d’ajouter des fichiers sources (schéma,
MAE ou VHDL) au projet, ici il n’y en a pas. Cliquer « next » pour accéder à
la page 3/5 du Wizard.
Ci-dessous, un exemple de comparaison des « speed grade », le FPGA équipant le KIT DE2 permet
(entre autre) de synthétiser un multiplexeur 16 vers 1 fonctionnant à 259.87 MHz (le KIT DE2 est
équipé d’un oscillateur 50 MHz)
Cliquer puis choisir « primitives » «logic » et sélectionner une fonction NAND2. Placer quatre
fonctions NAND comme ci-dessous.
Cliquer et placer les entrées et sorties, nommer les (doubles clics pour éditer une connexion).
Nommer les signaux internes S1, S2, S3 (clic-droit sur le fil, puis properties)
Les « warnings » indiquent que le compilateur a dû prendre des décisions qui peuvent influer sur le
résultat attendu ou que la description (design) est peut être incomplète. Ici par exemple aucune
horloge n’est utilisée. Généralement ( !) les « warnings » peuvent être ignorés.
Le test du projet peut être effectué par le simulateur ModelSim.
c. Simulation
EDA : Electronic design automation (EDA or ECAD) ou Conception Assitée par Ordinateur en
électroniqueCAO electronique
Cliquer « Tools – Run EDA simulation tools – EDA Gate Level Simulation “ , choisir “slow model”
Ce qui va lancer le simulateur en mode “gate level”, dans ce mode les caractéristiques temporelles
du composant peuvent être prises en compte dans la simulation.
Si l’erreur "Can't launch the ModelSim-Altera software -- the path..." apparait, le chemin du
simulateur, n’est pas correctement renseigné.
Pour corriger le problème, fermer la boite de dialogue de l’erreur windows aller dans Tools puis
Option et choisir EDA Tool Options sous la catégorie General.
Dans l’espace ModelSim-Altera parcourir les fichiers pour pointer vers
C:/altera/10.0/modelsim_ase/win32aloem" Valider par OK
(Le mode RTL : register transfer level, permet une simulation fonctionnelle à partir du (des) fichier
VHDL de la description, ce mode ne prend pas en compte les temps de propagation dans le FPGA cible
et sera présenté dans le paragraphe suivant)
L’interface QUARTUS-ModelSim compile automatiquement la description avec les caractéristiques
temporelle du FPGA.
Dans ModelSim, Cliquer “Simulate – Start Simulation”
Il est possible de déplacer les signaux simplement avec la souris, afin de les visualiser dans un ordre
particulier
De nouveaux signaux ont été créés par Quartus lors de la synthèse, ils représentent toutes les
équipotentielles utiliseés par la description et synthétisées dans le FPGA. Le dessin d’origine n’est pas
forcément respecté, Quartus optimisant la conception en place et en vitesse. Les signaux internes
S1,S2 et S3 ne sont pas accessibles.
Ecrire 10us comme durée de simulation puis cliquer sur run le simulateur déroule
10us de simulation. Cliquer dans la fenêtre de simulation puis pour visualiser l’ensemble.
Commande Explication
restart -force Réinitialise toute la simulation
destroy .wave Ferme la fenêtre de simulation
add wave /* ou add wave -r /* Ajoute un signal à la simulation.
* ajoute tous les signaux (add horloge ajoute le signal « horloge »
-r est utilisé lorsque plusieurs blocs sont simulés en même temps et qu’il est utile d’ analyser tous
les signaux de chaque bloc.
view wave Ouvre la fenêtre de simulation graphique
force entree 0 Force un signal à un niveau logique. Ici entree est forcé à 0
force clk 0 0ns, 1 50ns -repeat 100ns Création d’un signal de type horloge.
0 0 met clk à 0 à l’instant 0ns
1 50ns met clk à 1 à l’instant 50ns
repeat 100ns répète la séquence précédente toutes les 100ns
#comment Un commentaire
run 100ns Lance le simulateur durant 100ns
Quitter ModelSim.
d. Simulation fonctionnelle
Il est souvent indispensable d’effectuer une simulation fonctionnelle du projet. ModelSim permet de
simuler une description en langage de haut niveau (VHDL). Il est donc nécessaire de créer un fichier
VHDL à partir du schéma (ou de tout autre moyen de description)
Génération du fichier VHDL à partir de la description par schéma.
Cliquer « File – Create/Update – Create HDL design from current file », choisir VHDL. Quartus crée
un fichier VHDL à partir du schéma. Ce fichier est maintenant accessible et éditable depuis
l’explorateur de projet de Quartus.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY work;
ENTITY ex1_pem IS
PORT
(
A : IN STD_LOGIC;
B : IN STD_LOGIC;
S : OUT STD_LOGIC
);
END ex1_pem;
Ce fichier peut lui-même être transformé en un nouveau composant qui pourra être inséré dans un
schéma, cela permet de conserver la possibilité de synthèse par schéma dans le FPGA.
Depuis la fenêtre d’édition du fichier VHDL :
Cliquer « File – Create/Update – Create symbol files for current file »
Le fichier ex1_pem.bsf est créé. (bsf est l’extension des symboles graphiques des composants)
Le projet ayant une description VHDL il est possible d’effectuer une simulation fonctionnelle.
La simulation fonctionnelle (RTL) sera effectuée par rapport au design du concepteur.
La simulation temporelle (GATE) sera effectué par rapport à la compilation et à l’optimisation des
phases d’analyse et de synthèse.
e. Schéma RTL
Ce schéma correspond à l’analyse RTL
Tools – Netlist Viewers - RTL Viewver.
Quartus crée le symbole correspondant à la description fonctionnelle.
sur le composant permet de voir la structure logique. (On retrouve celle du schéma), c’est cette
dernière qui sera utilisée pour la simulation fonctionnelle.
f. Schéma GATE :
sur le composant permet de voir les LOGIC_CELL utilisées (ici une seule)
sur le LOGIC_CELL permet de voir la structure logique après optimisation (Donc un XOR)
g. Simulation fonctionnelle
Cliquer « Tools – Run EDA simulation tools – EDA RTL Simulation “, ce qui va lancer le simulateur
en mode “RTL simulation fonctionnelle”.
Procéder ensuite comme précédemment mais en choisissant cette fois ci
WORK « bdf_type », et non plus GATE-WORK puis OK (pas de fichier sdf, le
matériel n’étant pas simulé)
On retrouve les trois signaux a,b,s, ainsi que les trois signaux internes du
schéma qui possèdent les même noms que dans la description VHDL.
Effectuer comme précédemment une simulation de 10uS en plaçant sur ‘a’ une horloge de période
1uS et sur ‘b’ une période de 1.6uS.
Quitter ModelSim
L’outil « PIN PLANER » permet d’attribuer des broches physiques à des entrées/sorties
Recompiler le projet.
Placer un câble entre l’USB Blaster Port du KIT DE2 sur un port USB du PC.
Alimenter le KIT et appuyer sur le bouton ON/OFF, (L’application par défaut du KIT teste les LEDs et
les afficheurs).
Cliquer Start, le FPGA est programmé. Tester alors la fonction XOR sur les interrupteurs SW0, SW1
et la LED0
i. Exercice 2, bascule RS
De la même manière, réaliser le projet, le schéma, la simulation et les essais d’une bascule RS.
2) Megafonctions
Le gestionnaire de parking met en œuvre un compteur/décompteur 12bits pour le comptage des
véhicules et une fonction monostable produisant une impulsion calibrée de 1s pour la commande de
la barrière.
Une documentation très complète est disponible sur le site WEB d’ALTERA pour chaque
megafonction.
Ressources consommées :
8 lookup table et 8 registres (type D)
Cliquer next/ next/ finish, le composant est terminé et peut être placé sur le schéma. Pour le
modifier il suffit de double-cliquer dessus.
Diviseur de 1s Compteur Q3
50Mhz
fréquence par binaire 4 bits Q2
50.000.000 Q1
Q0
Remise à
zéro (RAZ)
Les sorties d’un compteur étant en binaire, il est nécessaire de disposer d’une fonction « décodeur
binaire/ 7- segments ». Cette fonction sera ici écrite en langage VHDL. (le langage VHDL sera étudié
ultérieurement)
Remarque importante : L’horloge du compteur est ici asynchrone. Altera recommande de
développer une logique entièrement synchronisée sur l’horloge unique du composant (ici H). Cela
peut se faire en ajoutant une porte « ET » dont les entrées sont connectées à ‘H’ et à la sortie du
diviseur et la sortie au compteur.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity dec_7seg is
Port ( data : in STD_LOGIC_VECTOR (3 downto 0);
led : out STD_LOGIC_VECTOR (6 downto 0));
end dec_7seg;
Les afficheurs du KIT DE2 sont à anodes communes et cablés chacun sur un bus comme suit :
L’édition des connexions de 7 fois 4 afficheurs sera très longue et fastidieuse sur l’éditeur de schéma
de QUARTUS.
Le fichier DE2_pin_assignments.csv fourni sur le CDROM du KIT DE2 contient la description du
cablage de la carte DE2, il peut être importé dans QUARTUS, les broches du FPGA du KIT DE2 seront
alors nommées automatiquement.
Assignement – Assignment editor ouvre une fenetre permettant de voir les assignements de
broches.
Les interrupteurs s’appellent SW[0], SW[1] etc… les LEDs rouges LEDR[0], LEDR[1] etc… L’horloge
50MHz CLOCK_50…
Les afficheurs 7 segments sont nommés HEX0, HEX1, HEX 2…, et sont connectés à des bus HEX0[6..0],
HEX1[6..0], HEX2[6..0], ….
Les segments « a à g » des afficheurs sont respectivement les bits 0 à 6 des bus.
Nommer les connecteurs du schéma comme suit :
- L’horloge 50 MHz : CLOCK_50
- Le comptage/decomptage : SW[0]
- Les bus des afficheurs : HEX0[6..0] pour l’afficheur du bas du schéma jusqu’à HEX3[6..0] pour
l’afficheur du haut.
Pour éteindre les afficheurs inutiles (les quatre de gauche), il suffit de polariser les cathodes avec VCC.
Créer un nouveau schéma comme suit , nommer-le efface_aff7seg (VCC se trouve dans la
catégorie « other »):
http://books.google.fr/books?id=AKoIOwjcqnUC
entity binbcd is
port (
B: in STD_LOGIC_VECTOR (7 downto 0);
-- nombre en entrée sur 8 bits
P: out STD_LOGIC_VECTOR (11 downto 0)
-– nombre decimal en sortie sur 12 bits
);
end binbcd;
Fichiers de description
description graphique : .bdf
description vhdl : .vhd
description verilog : .vo
Fichiers de programmation
composants EEPROM : .pof
composants SRAM : .sof
Fichiers divers
rapport de compilation : .rpt
assignation des broches : .acf
symbole graphique d’une description : .sym