Master 1
Electronique
Energie lectrique
Automatique
Conception des syst mes Num riques
CSN
Samuel CRAND
B t 6 ISTIC
T l : 02 23 23 65 04
Partie 2
2
VHDL
De la Sp cification Haut Niveau au Circuit
Samuel CRAND
B t 6 ISTIC
T l : 02 23 23 65 04
0
www.istic.univ-rennes1.fr
Objectifs de ce module
3
. Pr sentation du langage VHDL
. Principes g n raux
. Syntaxe
. Exemples
. VHDL pour la Synth se
. Utilisation du VHDL pour la conception de syst mes num riques
?
Code VHDL
Source : www. altera.com
0
www.istic.univ-rennes1.fr
4
VHDL
Langage de mod lisation de circuits num riques
. VHDL : VHSIC Hardware Description Language
. VHSIC : Very High Speed Integrated Circuit
0
www.istic.univ-rennes1.fr
Plan 5
1. Introduction
2. El ments de base
3. Types
4. Objets
5. Attributs
6. Ex cution parall le et s quentielle
7. Instructions
8. Op rateurs standards
9. Description hi rarchique
10. VHDL et simulation
11. VHDL et synth se
12. Conclusion
13. R f rences bibliographiques
0
www.istic.univ-rennes1.fr
1. Introduction 6
- Pourquoi le VHDL ?
. Langage non propri taire
. Standardisation pr coce
. Langage adopt par de nombreux outils
. Autre langage : VERILOG
- Initialement : Le VHDL a t d velopp pour la mod lisation et la simulation
- Synth se VHDL (synth se logique) li e lessor des CLP
(Circuits Logiques Programmables)
- Mod lisation et synth se : 2 concepts diff rents
. Mod lisation
. Synth se
-> Le r sultat de la simulation
-> Le r sultat ET la difficult pour y aboutir
0
www.istic.univ-rennes1.fr
1. Introduction 7
- Les circuits/syst mes concevoir : Taille et complexit
- Cons quence
. La description au niveau porte devient rapidement difficile g rer
- N cessit d'une description plus abstraite
. Niveau d'abstraction plus lev D marche descendante
- Les HDL assimilables aux langages logiciels de haut niveau
. Langage C Assembleur
. HDL
Equations logiques
- Objectifs des HDL
. Description de l'application au niveau appropri
. Simulation et v rification
. Conception et validation
0
www.istic.univ-rennes1.fr
1. Introduction 8
- Fin des ann es 70 : lancement du programme VHSIC par
le minist re de la d fense am ricaine
- 1981 : Premi res r flexions sur le VHDL
- 1987 : IEEE 1076 : D finition d un langage unique pour
. La description
. La mod lisation
. La simulation
. La synth se
. La documentation
- 1993 : IEEE 1164 : Normalisation des signaux logiques multivaleurs
- 1996 : IEEE 1076.3 : Normalisation pour la synth se
. Implantation d un nombre sign
0
www.istic.univ-rennes1.fr
2. Elements de base
9
- Entity/Architecture : Brique de base de complexit tr s variable
Fonctionnement et/ou structure interne
Interface externe
- Configuration : Possibilit dassocier plusieurs architectures une seule entit
- Ex : Une architecture d di e la simulation et une pour la synth se
- Package :
- Faciliter une conception modulaire et hi rarchique
- Faciliter la r utilisation
- Ex : les entit s/architectures r utiliser : dans des packages
- Library :
- Possibilit dutiliser le concept de biblioth ques
- Biblioth que work : biblioth que de travail
- Certaines biblioth ques sont implicites , par ex : work et std
0
www.istic.univ-rennes1.fr
2. Elements de base : Entit et Architecture
10
Vue externe : D finition de l'entit
In 1
In 2
In 3
Bloc A
Out 1
Out 2
Vue interne : D finition de l'architecture
Bloc A
In 1
In 2
Bloc B
Bloc C
Out 1
In 3
Bloc D
Bloc E
Out 2
0
www.istic.univ-rennes1.fr
2.1 Entit (Entity)
11
. Port :
. Signal d interface entre lentit et lext rieur
. Chaque port est associ un nom, un mode et un type
. Ordre de la d claration des diff rents signaux : aucune importance
. Ordre conserv lors dune utilisation un plus haut niveau de cette entit
- Instanciation d'un composant (component)
. Mode :
. D finition du sens du signal
. 4 modes sont d finis
- in : Signal dentr e monodirectionnel
- out : Signal de sortie monodirectionnel
- inout : Signal dentr e/sortie bidirectionnel
- buffer : Signal de sortie/entr e monodirectionnel
. Utile pour le rebouclage" (sortie consid r e comme une entr e)
. Peu utilis (remplac par une sortie associ e un signal interne)
0
www.istic.univ-rennes1.fr
. Mode : 4 modes de ports
CS
R/W
Adresse
Donn es
M moire
2.1 Entit (Entity)
12
. In
. Out
. Inout
. Buffer
Busy
Erreur
0
www.istic.univ-rennes1.fr
2.1 Entit (Entity)
13
D claration :
ENTITY nom_entite IS
GENERIC (parametres_generiques : type := valeur_par_defaut);
PORT ( entrees : IN type_entrees;
sorties : OUT type_sorties;
entreessorties : INOUT type_entreessorties;
entreessorties_buffer : BUFFER type_entreessorties_buffer);
END nom_entite;
0
www.istic.univ-rennes1.fr
2.1 Entit (Entity)
14
. Exemple : Un additionneur 8 bits synchrone une horloge
ENTITY adder_pip IS
PORT( clk : IN bit;
a,b : IN bit_vector(7 DOWNTO 0);
cin : IN bit;
s : OUT bit_vector(7 DOWNTO 0);
cout : OUT bit);
END adder_pip;
0
www.istic.univ-rennes1.fr
2.2 Architecture
15
. Sp cification de la fonctionnalit
. Plusieurs architectures peuvent tre d finies pour le m me mod le
D claration :
ARCHITECTURE nomdelarchitecture OF nomdelentit IS
d clarations de proc dures, de types, de constantes,
de composants, de signaux
BEGIN
d finiton de processus
et/ou
d'instances de composants, ...
END nomdelarchitecture;
0
www.istic.univ-rennes1.fr
2.2 Architecture
16
. Exemple
ARCHITECTURE comportementale OF adder_pip IS
BEGIN
PROCESS(clk)
VARIABLE carry : bit;
VARIABLE sum : bit_vector (7 DOWNTO 0);
BEGIN
IF (CLK = '1') THEN
carry := cin;
FOR i IN 0 TO a'length-1 LOOP
sum(i) := a(i) XOR b(i) XOR carry;
carry := (a(i) AND b(i)) OR (a(i) AND carry) OR (b(i) AND carry);
END LOOP;
cout <= carry;
s <= sum;
END IF;
END PROCESS;
END comportementale;
0
www.istic.univ-rennes1.fr
2.2. Architecture
17
. 3 Types de description :
. Description comportementale (behavioural)
- Description purement fonctionnelle du circuit
- Description algorithmique
. Description flot de donn es (data flow)
- Association dop rateurs logiques (Register Transfert Level)
- Description des signaux (entr es et sorties de ces modules)
- Traduction dune table de v rit
Publicité
. Description structurelle
- Traduction dune repr sentation sch matique
- Utilisation de composants disponibles
- Description des signaux permettant dassurer les connexions
Remarque : Au sein dune m me architecture, il est possible d utiliser des modules d crits de
mani re comportementale, flot de donn es ou structurelle
0
www.istic.univ-rennes1.fr
2.2.1 Architecture : Description comportementale
18
. Description haut niveau
ARCHITECTURE haut_niveau OF adder IS
BEGIN
S <= A + B;
END haut_niveau;
. Description haut niveau : une bascule D active sur front montant
ENTITY basculed IS
PORT(d,clk : IN bit;
q: OUT bit);
END basculed;
ARCHITECTURE comportementale OF basculed IS
BEGIN
PROCESS(clk)
BEGIN
IF (clk='1') THEN q<=d;END IF;
END PROCESS;
END comportementale;
0
www.istic.univ-rennes1.fr
2.2.2 Architecture : Description flot de donn es
19
. Description flot de donn es (niveau quations logiques)
ARCHITECTURE niveau_equations_logiques OF adder IS
BEGIN
S(0) <= A(0) XOR B(0);
S(1) <= A(0) AND B(0) XOR A(1) XOR B(1);
END niveau_equations_logiques;
. Description flot de donn es (bas niveau)
ARCHITECTURE bas_niveau OF adder IS
BEGIN
S(0) <= '1' WHEN A(0) /= B(0) ELSE '0';
S(1) <= '1' WHEN (
(A(0)/=B(0) AND A(1)/=B(1)) OR
(A(1) =B(1) AND (A(0)='1') AND (B(0)='1') ) OR
(A(1)/=B(1) AND (A(0)='0') AND (B(0)='0') )
) ELSE '0';
END bas_niveau;
0
www.istic.univ-rennes1.fr
2.2.3 Architecture : Description structurelle
20
. Traduction d'une repr sentation sch matique
A(0)
B(0)
A(1)
B(1)
A(0)
B(0)
S(0)
VHDL
S(1)
ARCHITECTURE structurelle OF adder IS
COMPONENT xor2
port(e1,e2 : in bit; s : out bit); end COMPONENT
COMPONENT and2
port(e1,e2 : in bit; s : out bit); end COMPONENT
SIGNAL inter1,inter2 :bit;
BEGIN
u1 : xor2 PORT MAP (e1=>A(0),e2=>B(0),s=>S(0));
u2 : xor2 PORT MAP (e1=>A(1),e2=>B(1),s=>inter1);
u3 : and2 PORT MAP (e1=>A(0),e2=>B(0),s=>inter2);
u4 : xor2 PORT MAP (e1=>inter1,e2=>inter2,s=>S(1));
0
end structurelle;
www.istic.univ-rennes1.fr
2.2.3 Architecture : Description mixte
. Au sein d'une m me architecture, il est possible d'utiliser
du comportemental et du structurel
21
reset
D
S_inter
clk
b
a
Adder
s
ENTITY integration IS PORT(
a : IN bit_vector(0 to 1);
reset, clk : IN bit;
s : OUT bit_vector(0 to 1));
END integration;
ARCHITECTURE mixte OF integration IS
SIGNAL b,s_inter :bit_vector(0 to 1);
COMPONENT adder
PORT(a,b : IN bit_vector(0 to 1);
s : OUT bit_vector(0 to 1)); END COMPONENT;
VHDL
BEGIN
PROCESS(clk)
BEGIN
IF clk = '1' THEN
IF reset = '1' THEN b <= ''00'';
ELSE b <= s_inter;
END IF;
END IF;
END PROCESS;
u1 : adder PORT MAP (a=>a,b=>b,s=>s_inter);
s <= s_inter;
0
END mixte;
www.istic.univ-rennes1.fr
3. Types
22
. Types :
. VHDL interdit lassociation de 2 signaux de type diff rent
. Types disponibles
- Scalaires (Scalar)
. Entiers (integer)
. Flottants (Real)
. Enum r s (Enumerated)
. Physiques (Physical)
- Compos s (Composite)
. Tableaux (Array)
- Collection dobjets de m me type
. Enregistrements (Record)
- Collection dobjets de type diff rent
- Access et File
. Types pour la manipulation de fichiers ou sur les pointeurs
0
www.istic.univ-rennes1.fr
3. Types
23
. Sous-types :
. Restrictions :
SUBTYPE chiffre IS integer RANGE 0 TO 9;
SUBTYPE octet IS bit_vector(0 TO 7);
. 2 sous-types pr d finis
SUBTYPE natural IS integer RANGE 0 TO higher_integer;
SUBTYPE positive IS integer RANGE 1 TO higher_integer;
. Association dun sous-type au type partir duquel il a t d fini : autoris
. Association entre 2 sous-types diff rents issus du m me type : autoris
0
www.istic.univ-rennes1.fr
3.1 Types : Scalaires
24
. Types entiers (INTEGER)
-231 + 1 entier 231 - 1
TYPE chiffre_ascendant IS RANGE 0 TO 9;
TYPE chiffre_descendant IS RANGE 9 DOWNTO 0;
Notations de valeurs
-154
147
2#01010111# (binaire)
16#3FFF# hexad cimal
. Types flottants (REAL)
Approximation discr te de l'ensemble des r els dans un intervalle donn
TYPE real IS RANGE -1.0E38 TO 1.0E+38;
0
www.istic.univ-rennes1.fr
3.1 Types : Scalaires
25
. Types num r s :
Ensemble de valeurs d sign es par des identificateurs ou des caract res
TYPE boolean IS (false, true);
TYPE bit IS ('0','1');
TYPE std_logic IS ('U', X', O', 1' Z', W', L', H' , -');
TYPE jour IS (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche);
Remarques :
. Chaque caract re ou cha ne de caract res au sein d'un m me type
doit tre distinct
. Possibilit d'utiliser le m me caract re dans 2 types distincts
0
www.istic.univ-rennes1.fr
3.1 Types : Scalaires
26
. Types physiques :
Valeurs num riques de quantit s physiques
TYPE time IS RANGE -2 147 483 647 TO 2 147 483 647
UNITS
ps = 1000 fs;
ns = 1000 ps;
us = 1000 ns;
ms = 1000 us;
sec = 1000 ms;
min = 60 s;
hr = 60 min;
END UNITS;
0
www.istic.univ-rennes1.fr
3.2 Types : Compos s
27
. Types tableaux
. Bornes fix es la d finition du type
TYPE octet IS ARRAY (7 DOWNTO 0) OF bit;
TYPE memoire IS ARRAY (0 TO 255) OF octet;
. Bornes fix es chaque d claration d'un objet de type tableau
TYPE vecteur IS ARRAY (integer RANGE <>) OF std_logic;
SIGNAL mon_vecteur : vecteur(1 TO 20)
. L'indice peut- tre un type entier d fini par d claration
TYPE adresse IS RANGE 0 TO 255;
TYPE memoire IS ARRAY (adresse) OF octet;
. Tableaux pr d finis
TYPE std_logic_vector IS ARRAY (natural RANGE <>) OF std_logic;
TYPE string IS ARRAY (positive RANGE <>) OF character;
0
www.istic.univ-rennes1.fr
3.2 Types : Compos s
28
. Types enregistrements
. Ensemble d' l ments nomm s avec des types pouvant tre diff rents
TYPE instruction IS
RECORD
code_operatoire : operation;
addresse : octet;
operande1, operande2 : integer RANGE 0 TO 15;
END RECORD;
. Acc s un champ particulier
instruction.code_operatoire <= soustraction;
0
www.istic.univ-rennes1.fr
3.3 Types : Classes
29
. Types et sous-types :
. 3 classes
- Types pr d finis
. Standard VHDL initial IEEE.1076
- Types compl mentaires
. Standard VHDL initial IEEE.1164
- Types d finis par lutilisateur
0
www.istic.univ-rennes1.fr
3.3 Types : Classe - les Pr d finis
30
Pr d finis
Integer
bit
Boolean
Real
Time
Natural
Positive
Bit_vector
Publicité
Remarque : Synth se logique
- time : non
- real : non
- integer : Favoriser les entiers born s
0
www.istic.univ-rennes1.fr
3.3 Types : Classe - les compl mentaires
31
. Standard IEEE 1164 - les signaux multivaleurs (package std_logic_1164)
- std_ulogic et std_ulogic_vector
. Std_ulogic se caract rise par 9 valeurs
- U : non initialis
- X : niveau inconnu (conflit fort)
- 0 : niveau bas
- 1 : niveau haut
- Z : haute imp dance
- W : niveau inconnu (conflit faible)
- L : niveau bas
- H : niveau haut
- - : niveau quelconque
. Std_logic : SUBTYPE std_logic IS RESOLVED std_ulogic;
- VHDL interdit la connexion de 2 sorties entre elles
- Introduction des signaux "r solus" (Resolved Signal)
- Possibilit d'interconnecter plusieurs sorties ensemble
0
. IEEE 1076.3 - la synth se logique et les traitements arithm tiques
www.istic.univ-rennes1.fr
- signed et unsigned
32
X 0
1 Z W L
TYPE stdlogic_table IS ARRAY(std_ulogic, std_ulogic) OF std_ulogic;
-------------------------------------------------------------------
-- resolution function
-------------------------------------------------------------------
CONSTANT resolution_table : stdlogic_table := (
---------------------------------------------------------
--
| U
--
---------------------------------------------------------
--
'U',
( 'U',
'X',
( 'U ,
'X',
( 'U',
'X',
( 'U',
'X',
( 'U',
'X',
( 'U',
'X',
( 'U',
( 'U',
'X',
( 'U', X',
'U' ),
'U',
'X' ),
'X',
'X' ),
'0',
'X' ),
'1',
'X' ),
'H',
'X' ),
'W',
'W',
'X' ),
'H', X' ),
'X' ));
'X',
'U',
'X',
'X',
'1',
'1',
'1',
'1',
'1',
'X',
'U',
'X',
'0',
'1',
'L',
W',
'L',
'W',
'X',
'U',
'X',
'0',
'1',
'W',
'W',
'W,
'W,
'X',
'U',
'X',
'0',
'1',
'Z',
'W',
'L',
'H',
'X',
'U',
'X',
'0',
'X',
'0',
'0',
'0',
'0',
'X',
- |
H
-- | U |
-- | X |
-- | 0 |
-- | 1 |
-- | Z |
-- | W |
-- | L |
-- | H |
-- | - |
FUNCTION resolved(s : std_ulogic_vector ) RETURN std_ulogic IS
VARIABLE result : std_ulogic := 'Z'; -- weakest state default
BEGIN
IF (s'LENGTH = 1) THEN RETURN s(s'LOW);
ELSE
FOR i IN s'RANGE LOOP
result := resolution_table(result, s(i));
END LOOP;
END IF;
RETURN result;
END resolved;
0
www.istic.univ-rennes1.fr
3.3 Types : Classe - les d finis par l'utilisateur
33
. Types d finis une application dun type ou dun sous-type
TYPE memoire IS ARRAY (integer RANGE<> ) OF octet;
VARIABLE ma_memoire : memoire (15 DOWNTO 0);
. Types d finis une application dun sous-type
SUBTYPE octet IS std_logic_vector (7 DOWNTO 0 );
SIGNAL adresse : octet;
0
www.istic.univ-rennes1.fr
4. Objets : Constantes, Variables, Signaux
34
. Utilisation des constantes et des variables : proche des langages traditionnels
. Utilisation des signaux : sp cification au langage de description du mat riel
. Constantes (Constant)
. Objets internes valeurs fixes et d finitives
. Synth se : Mise VCC ou au GND Surface nulle
. D claration : constant nom : type := valeur;
. Exemple :
CONSTANT modulo : integer := 17 ;
. Variables (Variable)
. Objets permettant de conserver une valeur pendant un certain temps
. Utilisable qu'au sein d'un processus (d finition dans le process)
. Exemple:
VARIABLE octet1 : std_logic_vector(0 TO 7) := "00000001";
0
www.istic.univ-rennes1.fr
4. Objets : Constantes, Variables, Signaux
35
. Variable
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity synthese_var is
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
c : in STD_LOGIC;
clk : in STD_LOGIC;
y : out STD_LOGIC);
end synthese_var;
architecture Behavioral of synthese_var is
BEGIN
PROCESS(clk)
VARIABLE tmp : STD_LOGIC;
BEGIN
if rising_edge(clk) then
tmp := a and b;
y <= tmp or c;
end if;
END PROCESS;
end Behavioral;
a
b
c
clk
Synth se
y
0
www.istic.univ-rennes1.fr
4. Objets : Constantes, Variables, Signaux
36
. Signaux (signal)
. Utilisation en mode concurrent et s quentiel
. D claration dans une "zone" concurrente
. Signaux internes, temporaires
. Synth se (repr sentation mat rielle : un fil ou une m moire)
. Absence de mode
. Synth se d'une VARIABLE Synth se d'un SIGNAL
. Une valeur courante
. Une valeur future
0
www.istic.univ-rennes1.fr
4. Objets : Constantes, Variables, Signaux
37
. Signaux (signal)
. Synth se d'une VARIABLE Synth se d'un SIGNAL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity synthese_signal is
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
c : in STD_LOGIC;
clk : in STD_LOGIC;
y : out STD_LOGIC);
end synthese_signal;
architecture Behavioral of synthese_signal is
SIGNAL tmp : STD_LOGIC;
BEGIN
PROCESS(clk)
BEGIN
if rising_edge(clk) then
tmp <= a and b;
y <= tmp or c;
end if;
END PROCESS;
end Behavioral;
a
b
clk
c
Synth se
tmp
y
Synth se
www.istic.univ-rennes1.fr
0
5. Attributs
38
. Informations suppl mentaires sur les types et objets
. Utilisation : T'att avec T un objet ou un type et att un attribut
. Attributs d'un scalaire
Publicité
T'left
T'right
T'low
T'high
-> Limite gauche de T
-> Limite droite de T
-> Limite basse de T
-> Limite haute de T
. Attributs d'un ensemble discret
-> Num ro de la position de X dans T
T'pos(X)
T'val(N)-> Valeur la position N dans T
T'leftof(X)
T'rightof(X)
T'pred(X)
-> Valeur une position gauche de X dans T
-> Valeur une position droite de X dans T
-> Valeur une position au dessous de X dans T
T'succ(X)
-> Valeur une position au dessus de X dans T
0
www.istic.univ-rennes1.fr
5. Attributs
39
. Exemples - Attributs d'un type scalaire
Type adr is integer range 7 downto 0;
adr'left = 7
adr'right = 0
adr'low = 0
adr'high = 7
. Exemples - Attributs d'un type ensemble discret
Type MVL4 is ('U', '0', '1', 'Z');
MVL4'pos('1') = 2
MVL4'val(0) = 'U'
MVL4'rightof('1') = 'Z'
MVL4'leftof('1') = '0'
MVL4'succ(2) = 'Z'
MVL4'prec(2) = '0'
0
www.istic.univ-rennes1.fr
5. Attributs
40
. Attributs d'un tableau
Limite gauche de l'intervalle des indices de la dim. N de A
Limite droite de l'intervalle des indices de la dim. N de A
Limite basse de l'intervalle des indices de la dim. N de A
Limite haute de l'intervalle des indices de la dim. N de A
Intervalle des indices de la dim. N de A
A'left(N)
A'right(N)
A'low(N)
A'highof(N)
A'range(N)
A'reverse_range(N) Intervalle inverse des indices de la dim. N de A
Longueur de l'intervalle des indices de la dim. N de A
A'length(N)
. Attributs d'un signal
S'stable(t) Renvoie une valeur bool enne true si S est constant
depuis au moins t
S'event Renvoie une valeur bool enne true si S a chang depuis
le dernier cycle de simulation
0
www.istic.univ-rennes1.fr
5. Attributs
41
. Exemples : Attributs d'un tableau
type word is bit_vector(31 downto 0);
type memory is array(7 downto 0) of word;
variable mem : memory;
mem'left = 7
mem'left(3) = 31
mem'right = 0
mem'low = 0
mem'high = 7
mem'high(5) = 31
mem'range = 7 downto 0
mem'range(3) = 31 downto 0
mem'reverse_range = 0 to 7
mem'length = 8
mem'length(3) = 32
0
www.istic.univ-rennes1.fr
6. Ex cution parall le et s quentielle
42
. Particularisme du VHDL : Ex cution parall le ou s quentielle
. Ex cution parall le
. Ex cution par d faut
. Les instructions au sein d'une architecture sont ex cut es en
parall le ou de mani re concurrente
. Ex cution concurrente = Ex cution combinatoire
. Chaque op ration dans une architecture est ex cut e chaque instant
. Ex cution s quentielle
. N cessit d'utiliser un PROCESS
. Le process est activ chaque fois qu'un signal d clar dans
sa liste de sensibilit change de valeur.
. Les instructions sont ex cut es s quentiellement
. Les modifications des signaux (signal) sont effectives la fin du process
0
www.istic.univ-rennes1.fr
6. Ex cution parall le et s quentielle
43
. Ex cution mixte
. Possibilit d'associer dans une m me architecture des modules
ex cution parall le et s quentielle
. Exemple : Comparateur synchrone une horloge clk
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY comp_synch IS PORT (
a, b, clk, reset : IN bit;
qs : OUT bit);
END comp_synch;
ARCHITECTURE archi_mixte OF comp_synch IS
SIGNAL q : bit;
BEGIN
q<='1 WHEN a=b ELSE '0';
PROCESS(clk, reset)
BEGIN
Synth se
a
b
Comparateur
qs
q
clk
Reset
IF reset='0' THEN qs<='0';
ELSIF (clk'event AND clk='1') THEN qs <= q;
END IF;
END PROCESS;
END archi_mixte;
www.istic.univ-rennes1.fr
0
7. Instructions
44
. Deux types d'ex cution : Deux familles d'instructions
. Instructions r serv es au mode d'ex cution parall le ou concurrente
- Toutes les op rations sont ex cut es simultan ment
- L'ordre d' criture n'a aucune importance
I1
I2
I3
. Instructions r serv es au mode d'ex cution s quentielle
- Chaque op ration est effectu e l'une apr s l'autre
- L'ordre d' criture a une grande importance
0
www.istic.univ-rennes1.fr
I1
I2
I3
7.1 Instructions de type parall le
45
. Assignation inconditionnelle
. Assignation conditionnelle
signal <= {expression WHEN condition} ELSE expression
ARCHITECTURE flot_de_donnees OF xor IS
BEGIN
c <= '0' WHEN a = '0' AND b = '0' ELSE
'1' WHEN a = '0' AND b = '1' ELSE
'1' WHEN a = '1' AND b = '0' ELSE
'0' WHEN a = '1' AND b = '1' ELSE
'0';
END flot_de_donnees;
0
www.istic.univ-rennes1.fr
7.1 Instructions de type parall le
46
. Assignation s lective
WITH s lecteur SELECT
signal <= {expression WHEN valeur_s lecteur,
expression WHEN OTHERS};
ARCHITECTURE flot_de_donnees OF mux IS
SIGNAL selection : std_logic_vector(0 TO 1);
SIGNAL a,b,c,d,s : std_logic_vector(0 TO 7);
BEGIN
WITH selection SELECT
s <= a WHEN "00";
b WHEN "01";
c WHEN "10";
d WHEN OTHERS;
END flot_de_donnees;
0
www.istic.univ-rennes1.fr
7.1 Instructions de type parall le
47
. Assignation d'un composant
label : nom_du_composant PORT MAP (association des ports)
ARCHITECTURE arch_full OF full_adder IS
SIGNAL inter : bit;
COMPONENT half_adder PORT (a,b,cin : IN bit;
cout,s : OUT bit);
END COMPONENT;
BEGIN
u1 : half_adder PORT MAP (a=>a(0),b=>b(0),cin=>cin,cout=>inter,s=>s(0));
u2 : half_adder PORT MAP (a=>a(1),b=>b(1),cin=>inter,cout=>cout,s=>s(1));
END arch_full;
. Instruction GENERATE
label : FOR variable_boucle IN val_iniale TO val_finale GENERATE
{instructions parall les}
END GENERATE label
0
www.istic.univ-rennes1.fr
48
7.1 Instructions de type parall le
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY mod_gen IS
GENERIC(N : integer := 4);
PORT(
a,b : IN std_logic_vector(N DOWNTO 1);
cin : IN std_logic;
s : OUT std_logic_vector(N DOWNTO 1);
cout : OUT std_logic);
END mod_gen
ARCHITECTURE structurel OF mod_gen IS
COMPONENT ADDER PORT(a,b,cin : IN std_logic;s,cout : OUT std_logic); END COMPONENT
SIGNAL carry : std_logic_vector(N-1 DOWNTO 1);
BEGIN
gene : FOR I IN 1 TO N GENERATE
ls_bit : IF i=1 GENERATE
ls_cell : adder PORT MAP(a(1),b(1),cin,s(1), carry(1));
END GENERATE ls_bit;
middle_bit : IF i>1 and i<N GENERATE
middle_cell : adder PORT MAP(a(i),b(i),carry(i-1),s(i), carry(i));
END GENERATE middle_bit;
ms_bit : IF i=N GENERATE
ms_cell : adder PORT MAP(a(N),b(N),carry(N-1),s(N), cout);
END GENERATE ms_bit;
END GENERATE gene;
END structurel;
0
www.istic.univ-rennes1.fr
7.1 Instructions de type parall le
49
. Instruction PROCESS
- Toutes les instructions comprises dans le PROCESS sont ex cut es
s quentiellement
- Instruction concurrente : possibilit d'en utiliser plusieurs
- Tous les PROCESS sont ex cut s en parall le
- Activation d'un PROCESS : 2 possibilit s
: PROCESS(liste_signaux)
: PROCESS
-- Partie d clarative du process
-- Partie d clarative du process
BEGIN
-- Corps du process
Publicité
END PROCESS
BEGIN
WAIT UNTIL (liste_signaux)
-- Corps du process
END PROCESS
0
www.istic.univ-rennes1.fr
7.1 Instructions de type parall le
50
. Instruction PROCESS : Attribut event
. But : Savoir si le signal auquel il est associ a t modifi
. Tr s utile dans un PROCESS d clenchable par plusieurs signaux distincts
. Exemples :
IF CLK'event THEN ex cution; END IF;
- Ex cution si CLK passe 0 ou 1
IF CLK'event AND CLK='1' THEN ex cution; END IF;
- D clenchement sur front montant
. Standard IEEE 1164 : D finition de deux fonctions
rising_edge(CLK) et falling_edge(CLK)
0
www.istic.univ-rennes1.fr
7.2. Instructions de type s quentiel
51
. Ces instructions sont uniquement utilis es dans un Process
. Assignation inconditionnelle de variables et de signaux
M me traitement que pour le mode parall le
SIGNAL sig : integer;
PROCESS(clk)
VARIABLE var : integer := 0;
BEGIN
sig <= sig + 1;
var := var + 1;
END PROCESS;
. Instruction IF
IF expresssion_booleenne THEN
instructions_sequentielles
END IF;
IF up_down = '1' THEN
s <= s + 1;
ELSE
END IF;
s <= s - 1;
0
www.istic.univ-rennes1.fr
7.2. Instructions de type s quentiel
52
. Instruction CASE
CASE expresssion is
{WHEN valeur_expression => instructions_sequentielles};
{WHEN OTHERS => instructions_sequentielles};
END CASE;
CASE selection IS
WHEN '0' => s <= a;
WHEN '1' => s <= b;
WHEN OTHERS => NULL;
END CASE;
. Instruction LOOP
instruction_pour_iteration LOOP
instructions_sequentielles
END LOOP;
VARIABLE indice,resultat : INTEGER := 0;
Boucle1 : WHILE indice < 10 LOOP
indice := indice + 1;
resultat := resultat + adresse(indice);
END LOOP boucle1;
VARIABLE indice,resultat : INTEGER;
Boucle2 : FOR indice IN 0 TO 9 LOOP
resultat := resultat + adresse(indice);
0
END LOOP boucle2;
www.istic.univ-rennes1.fr
7.2. Instructions de type s quentiel
53
. Instruction NEXT
NEXT label_boucle WHEN condition
VARIABLE indice,resultat : integer := 0;
Boucle1 : WHILE indice < 10 LOOP
indice := indice + 1;
NEXT boucle1 WHEN indice = 5;
resultat := resultat + adresse(indice);
END LOOP boucle1;
VARIABLE indice,resultat : integer;
Boucle2 : FOR indice IN 0 TO 9 LOOP
NEXT boucle2 WHEN indice = 5;
resultat := resultat + adresse(indice);
END LOOP boucle2;
. Instruction EXIT
EXIT label_boucle WHEN condition
VARIABLE indice,resultat : integer := 0;
Boucle1 : WHILE indice < 10 loop
indice := indice1 + 1;
EXIT boucle1 WHEN indice = 5;
resultat := resultat + adresse(indice);
END LOOP boucle1;
VARIABLE indice,resultat : integer;
Boucle2 : FOR indice IN 0 to 9 LOOP
EXIT boucle2 WHEN indice = 5;
resultat := resultat + adresse(indice);
END LOOP boucle2;
0
www.istic.univ-rennes1.fr
7.2. Instructions de type s quentiel
54
. Instruction NULL
Instruction sans aucun effet
CASE commande_moteur IS
WHEN avant => marche_avant;
WHEN arriere => marche_arriere;
WHEN statuquo => NULL;
END CASE;
. Instruction ASSERT
V rification d'une condition sp cifique
Information d'une ventuelle violation de cette condition
ASSERT condition REPORT message SEVERITY {note/warning/error/Failure}
PROCESS(clk)
BEGIN IF clk='1' THEN
ASSERT d'STABLE(15 ns);
REPORT "setup non respect " SEVERITY warning;
&
END IF;
END PROCESS;
www.istic.univ-rennes1.fr
0
7.3. Instructions : Exemple
55
. Multiplexeur 8 bits : 4 vers 1
1 re phase : d finition des entr e/sorties (ENTITY)
Entr es
Multiplexeur 8 bits
4 vers 1
Sorties
Entree1
Entree2
Entree3
Entree4
8
8
8
8
Multiplexeur 8 bits
4 vers 1
8
Sortie
Sel
0
www.istic.univ-rennes1.fr
7.3. Instructions : Exemple
56
. Multiplexeur 8 bits : 4 vers 1
2 me phase : d finition du fonctionnement ou de la structure
(ARCHITECTURE)
- Solution 1 : Instruction IF
- Solution 2 : Instruction CASE
0
www.istic.univ-rennes1.fr
7.3. Instructions : Exemple
57
. Multiplexeur 8 bits : 4 vers 1
- Solution 1 : Instruction IF
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY mux41 IS
PORT(entree1,entree2,entree3,entree4: IN std_logic_vector(0 TO 7);
sel: IN std_logic_vector(0 to 1);
sortie : OUT std_logic_vector(7 DOWNTO 0));
END mux41;
ARCHITECTURE comportementale OF mux41 IS
BEGIN
PROCESS(sel)
BEGIN
IF (sel="00") THEN sortie<=entree1;
ELSIF (sel="01") THEN sortie<=entree2;
ELSIF (sel="10") THEN sortie<=entree3;
ELSE sortie<=entree4;END IF;
END PROCESS;
END comportementale;
www.istic.univ-rennes1.fr
0
7.3. Instructions : Exemple
58
. Multiplexeur 8 bits : 4 vers 1
- Solution 2 : Instruction CASE
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY mux41 IS
PORT(entree1,entree2,entree3,entree4: IN std_logic_vector(0 TO 7);
sel: IN std_logic_vector(0 to 1);
sortie : OUT std_logic_vector(7 DOWNTO 0));
END mux41;
ARCHITECTURE comportementale OF mux41 IS
BEGIN
PROCESS(sel)
BEGIN
CASE sel IS
WHEN "00" => sortie<=entree1;
WHEN "01" => sortie<=entree2;
WHEN "10" => sortie<=entree3;
WHEN OTHERS => sortie<=entree4;
END CASE;
END PROCESS;
END comportementale;
0
www.istic.univ-rennes1.fr
8. Op rateurs standards
59
. Remarque : Le VHDL est un langage d velopp initialement pour la
mod lisation et la simulation, par cons quent certains op rateurs sont
d conseiller en synth se
. Op rateurs logiques
Nom
Type op randes
Signification
And
Nand
Or
Nor
Xor
Xnor
Not
Boolean
Bit ou Bit_vector
Et
Non et
Ou
Non ou
Ou exculsif
Egal
Non
0
www.istic.univ-rennes1.fr
8. Op rateurs standards
60
. Op rateurs logiques
. Exemple 1
SIGNAL a,b,c : bit_vector(0 TO 1);
c <= a AND b;
Synth se
. Exemple 2
SIGNAL d, e, f, g : bit;
g <...