Академический Документы
Профессиональный Документы
Культура Документы
Olivier BOURRION
BIBLIOGRAPHIE
1. Jacques WEBER, Maurice MEAUDRE
VHDL du langage au circuit, du circuit au langage Chez MASSON
2.
Philippe LARCHER
VHDL, Introduction la synthse logique Chez Eyrolles
3. http://www.acc-eda.com/vhdlref/
initiation VHDL
PLAN
Prsentation du langage Entits / architectures Exemples Prsentation des packages, fonctions et procdures Simulation et synthse
initiation VHDL
INTRODUCTION
VHDL = VHSIC Hardware description language. VHSIC = Very High Scale Integrated Circuit. Langage standardis par IEEE suivant les normes : 1076.1(vhdl87) et 1076.2(vhdl93) Intrt :
Description textuelle; Portabilit (normalis); Indpendance technologique (de la description); Description modulaire et hirarchique;
4
initiation VHDL
Utilisation du VHDL
Modlisation Simulation Synthse Spcification (netlist)
initiation VHDL
Vue physique
library
ST
component
signal
TI
Instance de composant
entity
initiation VHDL
architecture
6
Identificateurs :
composition alphanumrique (pas daccents!), caractre _ 1er caractre doit tre une lettre _ ne doit pas terminer le nom et figurer 2 fois conscutives Ne doit pas tre un mot rserv 1 ligne max
Une instruction peut stendre sur plusieurs lignes et doit se terminer par ;
initiation VHDL 7
initiation VHDL
Libraries (1)
Peut contenir :
Entity; Architecture; Configuration; Package; Fonction; Procdure; Types;
Libraries(2)
Utilisation (avant chaque entit)
Library nom_de_la_librairie; use nom_de_la_librairie.nom_du_package.nom_de_lobjet; use nom_de_la_librairie.nom_du_package.all; use nom_de_la_librairie.entit(architecture); Exemple: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; use work.pack_VME.all; use ieee.std_logic_textio.all; use std.textio.all;
initiation VHDL
10
PLAN
Prsentation du langage Entits / architectures Exemples Prsentation des packages, fonctions et procdures Simulation et synthse
initiation VHDL
11
Entit(1)
Vue externe, interface, donne uniquement :
les entres-sorties; Les paramtres de modularit;
Entity demonstration is Generic(taille : integer :=8); port( clk : in std_logic; nrst : in bit; entree : in bit_vector(1 to 5); sortie : out std_logic_vector ( taille-1 downto 0) ); End demonstration;
initiation VHDL
12
Entit(2)
Mode : in, inout, out, buffer;
Types (non exhaustif) :
integer (-5,0,1,5), natural (0,1,5), positive (1,5); Bit, bit_vector : (0,1); Std_ulogic, std_ulogic_vector : (U,X,0,1,Z,W,L,H,-); Std_logic, std_logic_vector : idem, mais avec rsolution; Boolean (true,false); Real; Time; Dfinis par lutilisateur (numr, tableau, record, subtype, );
initiation VHDL
13
Architecture
Partie dcrivant ce que contient lentit, une entit peut avoir plusieurs architectures. La description peut tre comportementale ou structurelle. Les 2 sont non exclusives.
Architecture comportementale of demonstrationbis is --partie dclarative Begin C<=1 when (A=B) else 0; End comportementale ; Architecture structurelle of demonstrationbis is --partie dclarative Begin C<=not(A xor B); End structurelle ;
initiation VHDL 14
Constantes
constant pipo : std_logic:=0;
Alias
Alias bus0 : std_logic is bus(0);
Fonctions et procdures
initiation VHDL 16
Configuration
Sert indiquer lassociation explicite entre entit et architecture (dans le cas o il y a plusieurs architectures)
configuration cfg_simul of test_max_epp is for simu_RTL for DUT : max_epp use configuration work.cfg_simul_max_epp; end for; for all : EPP_interf use entity end for; end for; end cfg_simul; work.EPP(RTL);
Peut aussi servir configurer les ports dentre sortie, fixer les generics.
initiation VHDL
17
Vue physique
library
ST
component
signal
TI
Instance de composant
entity
initiation VHDL
architecture
18
Oprateurs
Logiques
and, or, nand, nor, xor, xnor (1993), not
Relationnels
=, /=, <, <=, >, >=
Attributs
Servent obtenir des informations sur les objets. Il en existe des prdfinis:
signalevent, signalstable
Voir ref1 page 46
initiation VHDL
20
10
Affectation slective With sel select sortie<= e0 when un, e1 when deux, 0 when others; -- others couvre tous les cas restant
initiation VHDL 21
11
initiation VHDL
23
initiation VHDL
24
12
initiation VHDL
25
Liste de sensibilit
quivalente une instruction du type wait on place en fin de processus process process(a) begin begin s<=a; s<=a; wait on a; end process; end process; Il y a cependant une diffrence linitialisation
initiation VHDL 26
13
initiation VHDL
27
Case (tous les cas doivent tre couvert, others) case expression is when choices => instructions {when choices => instructions} end case; Instruction NULL, signifie pas dopration, donc mmorisation.
28
initiation VHDL
14
initiation VHDL
29
initiation VHDL
30
15
PLAN
Prsentation du langage Entits / architectures Exemples Prsentation des packages, fonctions et procdures Simulation et synthse
initiation VHDL
31
initiation VHDL
32
16
initiation VHDL
33
initiation VHDL
34
17
initiation VHDL
36
18
initiation VHDL
38
19
initiation VHDL
39
library ieee; use ieee.std_logic_1164.all; entity controleur_chargement is port( clk : in std_logic; nrst : in std_logic; W_present : in boolean; W_plein : in std_logic; charge : out boolean; evacue : out boolean ); end controleur_chargement;
attente
W_present
charge chargement
W_plein
pousse vacuation
Not(W_present)
initiation VHDL
40
20
Architecture 1 (FSM)
architecture sortie_synchrone of controleur_chargement is type def_state is (attente,chargement,evacuation); signal state : def_state; Begin process(clk,nrst) begin if nrst='0' then state<=attente; charge<=false; evacue<=false; elsif rising_edge(clk) then case state is when attente => if W_present then state<=chargement; end if; when chargement => if W_plein then state<=evacuation; charge<=false; else charge<=true; end if; when evacuation => if W_present then evacue<=true; else state<= attente; evacue<=false; end if; end case; end if; end process; end sortie_synchrone;
initiation VHDL
41
Architecture 2 (FSM)
architecture sortie_asynchrone of controleur_chargement is type def_state is (attente,chargement,evacuation); signal state : def_state; Begin evacue<=true when (state=evacuation) else false; charge<=true when (state=chargement) else false; process(clk,nrst) begin if nrst='0' then state<=attente; elsif rising_edge(clk) then case state is when attente => if W_present then state<=chargement; end if; when chargement => if W_plein then state<=evacuation; end if; when evacuation => if not(W_present) then state<=evacuation; end if; end case; end if; end process; end sortie_asynchrone;
initiation VHDL
42
21
PLAN
Prsentation du langage Entits / architectures Exemples Prsentation des packages, fonctions et procdures Simulation et synthse
initiation VHDL
43
Programmation modulaire
Librairies, package, fonction, procdures
22
Fonction
Na quune seule sortie, mais peut avoir plusieurs entres. Ses paramtres peuvent tre exclusivement :
Signaux; Constantes; Fichiers;
Procdure
Peut avoir plusieurs sorties et plusieurs entres. Ses paramtres peuvent tre exclusivement :
Signaux; Variables; Constantes; Fichiers;
a b c
in out inout
initiation VHDL
45
Fonction
Function nom[(liste de paramtre)] return type is zone declarative (comme dans process) Begin zone dinstruction squentielles End nom; Exemple: function to_unsigned (a: std_ulogic_vector) return integer is alias av: std_ulogic_vector (1 to a'length) is a; variable ret,d: integer; begin d := 1; ret := 0; for i in a'length downto 1 loop if (av(i) = '1') then ret := ret + d; end if; d := d * 2; end loop; return ret; end to_unsigned;
initiation VHDL 46
23
Procdure
procedure nom[(liste de paramtre)] is zone declarative (comme dans process) Begin zone dinstruction squentielles End nom; Exemple : procedure dff (signal Clk,Rst,D: in std_ulogic; signal Q: out std_ulogic) is begin if Rst <= 1 then Q <= 0; elsif rising_edge(Clk) then Q <= D; end if; end dff;
initiation VHDL
47
Utilisation
3 mthodes (comme pour les composants)
Dclare et dcrite la zone dclarative dune architecture; Dclare et dcrite dans un package, on appelle le package; Dcrite dans un fichier (dans une librairie quelconque), on la dclare dans la zone dclarative de larchitecture;
initiation VHDL
48
24
Paquetage (package)
Cest une boite outil. Permet de dcrire et dclarer une fois pour tous les outils couramment utiliss. Syntaxe : Package identificateur is dclaration de type, fonction, procdure, composants, attributs End identificateur; Package body identificateur is - - nexiste pas forcement corps des sous programmes dclars End identificateur;
initiation VHDL 49
Paquetage, exemple
package conversions is function to_unsigned (a: std_ulogic_vector) return integer; function to_vector (size: integer; num: integer) return std_ulogic_vector end conversions; package body conversions is function to_unsigned (a: std_ulogic_vector) return integer is ... Begin ... end to_unsigned; function to_vector (size: integer; num: integer) return std_ulogic_vector is ... begin ... end to_vector; end conversions;
initiation VHDL 50
25
PLAN
Prsentation du langage Entits / architectures Exemples Prsentation des packages, fonctions et procdures Simulation et synthse
initiation VHDL
51
Simulation et synthse
Ce qui est synthtisable est simulable Ce qui est simulable nest pas ncessairement synthtisable
26
Nud dinterconnexion
LUT D
Vers nud
initiation VHDL
53
Description RTL du hard criture ou rcupration modles annexes criture testbenches *.vhd simulation non oui
OK *.vhd
OK *.vqm *.edf
OK
non
54
oui
27
simulation
Un testbench contient
La gnration des stimulis; Linstanciation du circuit simuler; (si possible) la vrification des sorties;
Un testbench ne contient pas forcement dentre sortie (dclaration dentit vide). On peut par exemple simuler le RTL, puis le modle aprs synthse, puis le modle aprs PAR. Dans un soucis de vrification fonctionnelle haut niveau, il a t introduit la notion de testbench en C++ (plutt pour tlcoms et processeurs) Difficile : attention la rsistance psychologique, se placer au plus haut niveau possible
initiation VHDL 55
Gnration de stimulis
Affectation de signaux
R<='0','1' after 20 ns, '0' after 30 ns;
process begin R<='0'; wait for 20 ns; R<='1'; wait for 10 ns; R<='0'; wait; end process;
On peut aussi lors de la dclaration des signaux faire des initialisations (fortement dconseille si lobjectif est la synthse)
signal send_data : boolean :=false;
initiation VHDL
56
28
Packages :
textio (STD) (use std.textio.all;) std_logic_textio (IEEE), manipulation des std_logic
(use ieee.std_logic_textio.all;)
initiation VHDL
57
initiation VHDL
58
29
Outils
Endfile(identifieur_fichier), retourne un boolean et indique la fin de fichier; String(kjhkhkj) , pour convertir en string une suite de caractres.
initiation VHDL
59
initiation VHDL
60
30
initiation VHDL
61
Le temps
Le temps peut tre manipul par des objets de type time. Le temps simulateur peut accd grce la fonction now.
variable vector_time : time; vector_time:=now; --le temps courant est sauvegarde
On peut grce la manipulation de fichier et du temps, lire les vecteurs de stimulation partir dun fichier (utile si lon veut utiliser des fichiers issus de mesures) :
initiation VHDL
62
31
Messages
Au cours de la simulation, on peut faire des vrifications en direct avec :
assert condition {report message} {severity niveau};
O :
Condition : un test qui retourne un boolean; Message : une chane de caractres; Niveau : il en existe 4 (note,warning,error,failure);
initiation VHDL
63
De plus les outils sont plus rapides lors de lutilisation (built in) de ces fonctions. Le modle peut ainsi tre crit en 2 parties totalement distinctes :
Vrifications des timings; Partie fonctionnelle (sans vrification des timings, on part du principe que tout est bon);
initiation VHDL
64
32
Synthse
Cette tape consiste interprter le langage VHDL et convertir la description en une netlist utilisant les cellules de base de la technologie utilise (logic Element, standart cells). Etape critique, car on a pas toujours dcrit ce que lon croit. Toujours rflchir larchitecture avant de coder, on manipule des cellules, pas des cases mmoires. Penser au pipelining.
initiation VHDL 65
Exemple
process(A,B,C,S) begin if(S='1') then X<=A+B; else X<=A+C; end if; end process; B A C
Au sens synthse
process(A,B,C,S) variable OPb : integer; begin if(S='1') then OPb:=B; else OPb:=C; end if; X<=A+Opb; end process; B C
+
S
S A
+
X
initiation VHDL
66
33
FSM
Lors de la description, bien faire le choix entre :
Sorties synchrones; Sorties asynchrones;
Lors de la synthse, suivant la performance de loutil les tats peuvent tre cods en :
Squentiel; ( 00 , 01 , 10 , 11 ) Gray; ( 00 , 01 , 11 , 10 ) One hot; ( 0001 , 0010 , 0100 , 1000 ) Suivant le mode de codage, les ressources de dcodage sont plus ou moins importantes, par exemple pour un epld, le codage squentiel est prfrable.
initiation VHDL
67
34