Professional Documents
Culture Documents
Cours N2
Variables boolennes
quivalent
numrique
1
0
ex. : lampe
ex : tension
ex : alarme
allume
teinte
leve
basse
active
dsactive
Plusieurs fonctions peuvent tre drives de ces trois fonctions de base, comme
le NON-OU, le NON-ET, le OU-exclusif et lquivalence.
Un exemple de design
vote1 (A)
vote2 (B)
vote3 (C)
vote4 (D)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
amendement
approuv (F)
0
0
0
0
0
0
0
1
0
0
0
1
0
1
1
1
Les deux HDL de loin les plus populaires sont Verilog et VHDL.
Verilog ressemble un peu C, et VHDL ressemble ADA.
Les deux langages sont relativement faciles apprendre, mais difficiles
matriser.
VHDL est plus vaste, bien que plusieurs des particularits pour lesquelles Verilog
na pas dquivalent soient rarement utilises.
Quand on connat lun des deux langages, il est relativement ais de passer
lautre.
Un troisime langage, SystemC, est populaire pour la modlisation plus haut
niveau.
8
VHDL
Lacronyme VHDL signifie Very High Speed Integrated Circuit (VHSIC) Hardware
Description Language (HDL).
VHDL est un langage de programmation complet. Le langage a t dvelopp
pour le compte du gouvernement amricain pour documenter la conception
dASIC. Il est fortement inspir du langage ADA.
Rapidement, des simulateurs de VHDL sont apparus, puis des synthtiseurs
capables de traduire un programme VHDL en une liste dinterconnexions entre
des portes logiques (netlist) pouvant tre ralise sur un ASIC.
Le langage VHDL est normalis par lIEEE. La premire norme remonte 1987.
Des mises jour ont eu lieu en 1993, 2000, 2002 et 2008. La norme plus rcente
est prsentement mal supporte par les outils de conception.
10
noncs concurrents
Assignations de signaux concurrentes, choisies et conditionnelles
Instanciations de composantes
Processus
11
Le modle dun circuit numrique par flot de donnes dcrit sa fonction sans ncessairement dfinir
sa structure. En gnral, cela signifie que les valeurs des signaux et ports du circuit sont tablies par
des assignation concurrentes de valeurs (concurrent signal assignment).
Pour les circuits combinatoires, les assignations concurrentes des signaux utilisent souvent des
oprateurs logiques qui sont des mots cls du langage: and, or, nand, nor, xor, xnor, not. On peut
utiliser des parenthses pour faire respecter la prsance requise dans les expressions.
12
13
Description structurale
14
Description structurale
library ieee;
use ieee.std_logic_1164.all;
entity combinatoire1 is
port (
A : in std_logic;
B : in std_logic;
C : in std_logic;
F : out std_logic
);
end combinatoire1;
architecture structurale of combinatoire1 is
component INV -- inverseur
port (I : in std_logic; O : out std_logic);
end component;
component NAND2
port (I0, I1 : in std_logic; O : out std_logic);
end component;
component XOR2
port (I0 : in std_logic; I1 : in std_logic; O : out std_logic);
end component;
entity INV is
port (I : in std_logic; O : out std_logic);
end INV;
architecture arch of INV is
begin
O <= not I;
end arch;
entity NAND2 is
entity XOR2 is
15
Description comportementale
library ieee;
use ieee.std_logic_1164.all;
entity porteET4 is
port (
I : in std_logic_vector(3 downto 0);
F : out std_logic
);
end porteET4;
architecture flotDeDonnees of porteET4 is
begin
F <= I(3) and I(2) and I(1) and I(0);
end flotDeDonnees;
17
18
Tout texte plac aprs deux tirets et jusqu la fin dune ligne est un
commentaire, ce qui est semblable au // de C. Il ny a pas de commentaires en
bloc (/* */) en VHDL.
19
Ici, objet na pas le mme sens que dans un langage orient objet.
Il y a quatre catgories dobjets en VHDL :
constant (et generic) : peut contenir une valeur unique qui ne change pas; un objet
generic est une constante spciale permettant dappliquer un paramtre une
entit lors de son instanciation;
variable: peut contenir une valeur temporaire; les objets variable sont utiles pour
stocker des valeurs intrimaires dans les calculs;
signal (et port) : peut contenir une liste de valeurs dans le temps; un objet signal
correspond en gnral un fil dun circuit; un port dune entit est implicitement un
signal pour cette entit;
file: un objet dans lequel on peut crire et lire des valeurs, et qui correspond un
fichier du systme dexploitation.
20
21
scalaires
type
ou sous-type
boolean
bit
source
de la dfinition
type prdfini
type prdfini
character
type prdfini
integer
natural
positive
type prdfini
sous-type prdfini
sous-type prdfini
real
type prdfini
valeurs
FALSE et TRUE
0 et 1
256 caractres de la norme ISO 88591, avec des abrviations reconnues et
certaines qui sont propres VHDL
Les 128 premiers sont les caractres
ASCII.
plage minimale de 231 + 1 231 1
0 231 1
1 231 1
typiquement
1.7014111E308 1.7014111E308
U : valeur inconnue, pas initialise
X : valeur inconnue force
0 : 0 forc
std_logic
Package
std_logic_1164
1 : 1 forc
Z : haute impdance (pas connect)
W : inconnu faible
L : 0 faible
H : 1 faible
bit_vector
string
std_logic_vector
composs
unsigned
signed
type prdfini
type prdfini
Package
std_logic_1164
Package
numeric_std
Package
numeric_std
22
oprateurs
logique
relation
dcalage
arithmtique
+, -, *, /,
abs (valeur absolue),
mod (modulo),
rem (reste)
** (exponentiation)
concatnation
&
type de
loprande de
gauche
type de
loprande de
droite
type de
lexpression
bit, boolean
scalaire ou tableau
tableau de bit
ou boolean
type
numrique
integer
type
numrique
boolean
comme
loprande de
gauche
type
numrique
integer
tableau ou type numr
tableau
23
Un exemple de design
24
vote1 (A)
vote2 (B)
vote3 (C)
vote4 (D)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
amendement
approuv (F)
0
0
0
0
0
0
0
1
0
0
0
1
0
1
1
1
25
Code VHDL
une solution possible
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity vote is
port (
lesvotes: in std_logic_vector(3 downto 0);
approbation : out std_logic
);
end vote;
-- table de vrit rduite
architecture flotdonnees1 of vote is
begin
with lesvotes select
approbation <=
'1' when "0111",
'1' when "1011",
'1' when "1101",
'1' when "1110",
'1' when "1111",
'0' when others;
end flotdonnees1;
26
Code VHDL
une Bascule D
loquet D (D-latch)
while
while ( condition de rptition ) loop
noncs;
end loop;
lnonc next interrompt le flot de la boucle et passe litration suivante, et
l nonc exit termine la boucle compltement .