Gireuits FPGA_ Programmation VHDL
Les concepts de base du langage VHDL.
Chapitre 1
1. Description générale
Prenons comme exemple le circuit intégré 7400 (Figure 1.1(a)). Ce demier est constitué de quatre
portes logiques NAND a deux entrées (Figure 1.1(0)).
of Vee
>] 13)
ab 7a] ¢
(a)
Figure 1.1 : Circuit intégré 7400 (Vue exteme (a) et vue interne (6)).
La description du circuit intégré 7400 en langage VHDL est donnée par le listing 1.1
eornueenn
Library ieee?
use ieee.std_logic_1164.a11;
entity CI_7400 is
port (a, b, c, d, e, f, g, h: in std logic;
81, 82, 83, 84: out std logic
ie
end CI_7400;
architecture behavioral of CI_7400 is
begin
si <= a nand b;
82 <= c nand d:
83 <= e nand f;
34 <= g nand h:
end behavioral:
Listing 1.1 : Description VHDL du circuit intégré 7400.Gireuits FPGA_ Programmation VHDL
1.1. Les régles de base du VHDL
Les deux premiéres lignes définissent les bibliothéques et les paquetages dont nous avons besoin
pour la conception de notre circuit. Dans notre code, on fait appel au paquetage std_logic_1164 qui
se trouve dans la bibliothéque ZEEE.
2 library ieee;
2 use icee.std logic 1164.all:
Les bibliothéques et les paquetages nous permettent d’utiliser les types et les opérateurs disponibles
en VHDL.
1.2. La déclaration de l’entité :
@ entity CI_7400 is
5 port (a, b, c, 4, e, f, g, h : in std_logic;
6 31, s2, 33, s4 : out std logic
a de
8 end CI_7400;
L’entité corespond au circuit vu de Dextérieur (Figure 1.1/a)), et comprend essentiellement les
entiées-sorties du citeuit, La premiére ligne d’une entité (ligne 4 du code) indique le nom du cireuit,
“CI_7400°*dans notre exemple. Les entrées - sorties du circuit sont des ports qui doivent avoir le
format suivant :
NOM_DU_PORT : MODE TYPE;
Le mode d’un port peut étre :
s'ils’agit d'une entrée
- OUT s'il s agit d’une sortie
~ INOUT s'il s’agit d’une entrée - sortie (port bidirectiomnel)
- BUFFER s'il s’agit d°une sortie rebouclée en entrée
Pour le TYPE du port, il fant savoir que le langage VHDL. est un langage typé, c’esti-dire que
chaque objet manipnlé doit avoir un type de données. Dans le listing 1.1, le type du port utilisé est
STD_LOGIC. Hest défini dans le paquetage STD_LOGIC_1164, et posséde neuf étatsGireuits FPGA_ Programmation VHDL
Etat | Définition
0 Niveau logique 0, forgage fort
1 Niveau logique 1, forgage fort
Z Haute impédance
U__| Niveau non initialisé
X | Niveau inconnn, forgage fort
- Niveau queleonque
Niveau logique 0, forgage faible
H_ _| Niveau logique 1, forgage faible
‘Niveau inconm, forgage faible
Si le type du signal utilisé est un bus de données, on utilise alors le type STD_LOGIC_VECTOR
qui est défini comme étant un tableau unidimensionnel d’éléments de type STD_LOGIC.
Exemple
Soit le signal d’entré A de 8 bits, on le déclareraen VHDL comme suit
A: in std_logic_vector (7 downto 0) ;
Ou bien
Atin std_logic vector (0 to 7);
La différence entre les deux expressions est l'indice du MSB et du LSB. Dans la premiére
expression, ’indice du MSB est A(7), celui du LSB est A(0). Dans la deuxiéme expression, indice
du MSB est A(0), celui du LSB est A(7)
Remargue :
On pent utiliser le type bit a la place de std_logic, et le type bit_vector a la place de
std_logic_veetor, la différence eutre eux est que le type bit ue posséde que deux état : 0° et 1’ ce
quiest trés limité car il faut prendre en considération les autres états, c’est pourquoi on préfére le type
std_logie an type bit.Gireuits FPGA_ Programmation VHDL
1.3. La déclaration de architecture :
10 architecture behavioral of CI_7400 is
11 begin
12 si <= a nand b;
13 s2 <= c nand 4;
14 53 <= e nand f;
15 s4 <= g nand h;
16 end behavioral;
L’architecture du circuit comespond an circuit vu de Pintérieur (Figure 1.1 (6)), et comprend
essentiellement la description des opérations du circuit. Nous pouvons associer plusieurs
architectures a une entité, mais pas le contraire. La différence des architectures réside dans leurs
noms :
Architecture NOM_DE_L’ARCHITECTURE of NOM_DE_L’ENTITE is
Dans notre exemple, le nom de I’architecture est behavioral. La description principale d’une
architecture comprend toujours les deux mots réservés “BEGIN” et “END” (ligne 11 et 16
successivement). Les expressions des opérations du circuit se trouvent entre elles. Ces expressions
sont des instructions qui s’exécutent en concurrence contrairement 4 un langage informatique comme
le langage C, oi les instructions s’exécutent séquentiellement.
Exemple 1: Comparateur 1 bit
Les entrées du comparateur sont : A, B, les sorties du comparateur sont : EG (égale), PG (plus
grand), PP (plus petit)
Table de vérité et équations booléennes du comparateur :
AB] [EG | PG] PP EG=AB+AB
ofo[{[i]fofo =
ofi[fofol4 PG=AB
Tlo;[o|[it|o —
th1{[1 [oo PP=ABGireuits FPGA_ Programmation VHDL
Le schéma du circuit du comparateur :
Figure 1.2 Schéma du comparateur.
La description du comparateur en langage VHDL :
aaa?
library ieee;
use ieee.std logic 1164.al1;
entity comparateur is
port (A, B: in std_logic:
EG, PG, PP : out std logic
”
end comparateur;
architecture behavioral of comparateur is
begin
EG <= (not(A) and not B) or (A and B);
PG <= A and not B;
PP <= not A and B;
end behavioral;
Listing 1.2 : Description VHDL du comparateur.Gireuits FPGA_ Programmation VHDL
Exemple 2 - Additionneur complet 1 bit
Les entrées de ladditionneur sont : A, B, Ri
Les sorties de l’additionneur sont : § (somme), Rout (reteme)
Table de vérité et équations booléennes de l’additionneur :
A[B|Ri| | S| Rout
ofolol fol o
ofol1{|a[o S=(A@B)@R;
2 1 “ + “ Rout = A-B+Rj-(A@B)
tfofo[|1[ o
1/0|1 0 1
1|1|0 0 1
tifa fy
Le schéma du circuit de Padditionneur :
A
Rout
8
Ri s
instance 2
Figure 1.3 : Schéma de l'additionneur complet 1 bit a partir de deux demi-additionneurs,Gireuits FPGA_ Programmation VHDL
Le code VHDL de l’additionneur :
2 library icce;
2 use ieee.std_logic_1164.all;
3
4 entity full_adder is
5 port (A, B, Ri: in std_logic;
6 S, Rout : out std logic
7 dv:
8 end full_adder;
9
10 architecture behavioral of full_adder is
11 begin
12 S <= A xor B xor Ri;
13 Rout <= (A and B) or Ri and(A xor B) ;
14 _end behavioral;
Listing 1.3 : Description VHDL dun additionneur complet 1 bit.
Simulation :
Ons 200 ns \400 ns
asig
bsig
risig I L J J
sig J l
routsig} tes = ==
2. Les signaux intermédiaires :
Les signaux intermédiaires correspondent aux connexions qui se trouvent 4 lintérieur d'un circuit.
Pour bien comprendre 1a notion et l'utilisation de ces signaux, prenons l'exemple de notre
additiomeur complet 1 bit de la figure 1.3. On peut le concevoir a partir de deux demi-
additionneurs et une porte logique OR (figure 1.4).Circuits FRGA_ Programmation VHDL
a+ \ signal_]
Be
.
xOR2 | 5]
signal_2 /
} XOR2
Ant ] signal 3
Ri —+ >—