M. MASMOUDI Cours VHDL2
Le VHDL
Very High Speed Integrated
Circuit
Hardware
Description
Langage
Langage : de description structurelle et comportementale de la
conception des dispositifs matériels en électronique numérique
(ASICs, CPLD, FPGA, logique câblée)
Autres HDL : Verilog, UDL/1, Estérel, Hardware C
M. MASMOUDI Cours VHDL3
Pourquoi?
Langage pour la spécification des systèmes digitaux, aussi bien au niveau comportemental que structural
Utilisation: description des systèmes simulation aide à la conception documentation
Caractéristiques principales: description à plusieurs niveaux simulation activée par événements (event-driven) modularité extensibilité langage général, fortement typé
M. MASMOUDI Cours VHDL4
Historique
1994
1981
1986
1983
1987
Initiation du langage
par le US - DoD
Développement des bases du langage
par Intermetrics, IBM et TI
Transfert des droits
à l’IEEE
Publication du standard
IEEE 1076
Révision du standard
IEEE 1164
M. MASMOUDI Cours VHDL5
Concept
VHDL permet de coder une fonction d’une manière structurelle (comme un schéma) et/ou comportementale (fonctionnelle)
Codage comportemental plus proche de l’algorithme
portabilité, maintenabilité, versatilité
Codage structurel création d’une hiérarchie
emploi de macrofonctions
format de la liste d’équipotentielle (netlist)
S <= not ((A and B) or (C and D));
B S
D
C
A
M. MASMOUDI Cours VHDL6
Niveau d’abstractionLe codage en VHDL peut se faire selon 4 niveaux d’abstraction, ce qui permet une conception descendante
S=fft(e,64)S=fft(e,64) radix1radix1 radix2radix2 radix3radix3
Synthèselogique
Synthèselogique
Niveau 1Niveau 1 Niveau 2Niveau 2 Niveau RTLNiveau RTL netlistnetlist
registres
bibliothèque
Algorithme Architecture Architecturesynthétisable
Netlist
M. MASMOUDI Cours VHDL7
Niveau d’abstraction
M. MASMOUDI Cours VHDL8
Niveau d’abstraction Le niveau système : cette description regroupe
l’ensemble des spécification du circuit décrites sous la forme de comportements vis-à-vis de l’environnement associé au circuit, de performances à satisfaire, de contraintes d’utilisation. Cette description est de nature purement externe par rapport au circuit.
Le niveau fonctionnel : la description au niveau fonctionnel exprime le premier niveau interne de la solution, sous la forme d’un ensemble de fonctions +/- interdépendantes et de complexité variée. Cette description est orientée application ou objectif à satisfaire.
M. MASMOUDI Cours VHDL9
Niveau d’abstraction Le niveau architectural : la description architecturale
exprime les modules exécutifs et les interconnections nécessaires entre ceux-ci pour satisfaire la fonctionnalité globale du niveau supérieur. Cette description est donc orientée réalisation.
Le niveau logique: la description représente un circuit par un ensemble interconnecté de fonctions logiques de faible complexité.
Le niveau électrique : la description électrique représente le circuit sous la forme d’éléments microélectroniques (transistors essentiellement) interconnectés de façon à assurer la fonctionnalité du circuit spécifiée par les niveaux supérieurs.
M. MASMOUDI Cours VHDL10
Modèle de Gajski
M. MASMOUDI Cours VHDL11
Etapes
VHDL : spécification, conception et description matérielle en électronique numérique
Analyse du système et partitionnement des tâches
Écriture du code VHDL par bloc
Écriture des « Test Bench » en VHDL
Synthèse au niveau portes
Implémentation matérielle
Simulation au niveau portes
Simulation du code VHDL
M. MASMOUDI Cours VHDL12
Apport
Pour les circuits intégrés
Diminution des erreurs
simulation à différents niveaux d’abstraction
Diminution du temps de développement
conception à plus haut niveau
Pour les systèmes
Anticipation de l’intégration
modèles de composants simulable avant disponibilité
Normalisation des échanges
langage universel et unique
A2 + B2
M. MASMOUDI Cours VHDL13
Description matérielle VHDL : se base sur la paire ENTITY -
ARCHITECTURE
ab
c
d
f
CircuitBoîte noire
ENTITYdécrit les ports d’E/S du circuit (brochage)
ab
c
d
f
ARCHITECTURE : décrit le contenu du circuit (câblage interne)
M. MASMOUDI Cours VHDL14
EntityDescription externe du composant (Boîte
noire) Définition des ports d’E/S : type, sens, taille,
… Définition des paramètres
ENTITY <entity name> IS <generic declaration> <port declaration>END [ENTITY] <entity name> ;
<generic declaration> : paramètres du composant<port declaration> : interface avec l’environnement extérieur
M. MASMOUDI Cours VHDL15
Les ports:
Les modes:
IN : Données qui sont des entrées uniquement
OUT : Données qui sont des sorties uniquement
INOUT : Données bidirectionnelles (en entrée ou en
sortie)
BUFFER : Données en sortie mais aussi en feed-back
interne dans le circuit
PORT( <port name> : <mode> <type> ; ..... <port name> : <mode> <type>);
M. MASMOUDI Cours VHDL16
Types des portsBIT : valeurs possibles ‘0’ et ‘1’BIT_VECTOR : un vecteur de bitsINTEGER : utilisés comme indices (boucles), constantes,
…BOOLEAN : prend deux valeurs ‘TRUE’ ou ‘FALSE’CHARACTER : caractères ascii
Exemple :SIGNAL a: BIT_VECTOR(0 TO 3); - - e.g... Sens ascendantSIGNAL b: BIT_VECTOR(3 DOWNTO 0); - - e.g... Sens descendant
a <= "0111"; b <= "0101";
Ce qui signifie :a(0) = '0' b(0) = '1'a(1) = '1' b(1) = '0'a(2) = '1' b(2) = '1'a(3) = '1' b(3) = '0'
M. MASMOUDI Cours VHDL17
Types des ports (IEEE1164)
Valeur Interprétation0 0 - Forcé
1 1 - ForcéU Uninitialized (non-initialisé)
X Inconnu - Forcé
Z Haute impédance
W Inconnu - Faible
L 0 - Faible
H 1 - Faible
- Don’t Care
Valeurs des signaux
std_logic et std_logic_vector
library IEEE; -- librairieuse IEEE.std_logic_1164.all;--
package
ENTITY exple1 IS PORT (
….);END exple1;
ARCHITECTURE archlogic OF exle1 ISBEGIN
…..
END archlogic;
M. MASMOUDI Cours VHDL18
Déclarations d’une entité
ENTITY circuit1 IS
GENERIC (N: INTEGER:=7);
PORT (
clk, rst: IN BIT;
d: IN BIT_VECTOR(7 DOWNTO 0);
q: OUT BIT_VECTOR(7 DOWNTO 0);
co: OUT BIT);
END circuit1;
Circuit 1
rst
d[N:0]
clk
q[N:0]
co
M. MASMOUDI Cours VHDL19
L’architecture
Objectif:
Description ”du câblage interne”
Modes de description: Structurelle
Instanciations : placement de composants logiques et leur interconnexion
Comportementale (aspect algorithmique) Description haut niveau (abstraite)
IF a = b THEN x<=a; Équations logiques
x <= (a OR b) AND c;
M. MASMOUDI Cours VHDL20
Paire entité-architectureEntity décrit l’interface
externe d’un module, elle contient : Nom du module (ex: AOI) Ports d ’entrée/sorties (Nom,
direction: in,out, inout, buffer,…) Type (BIT, BIT_VECTOR, BOOLEAN,
INTEGER,…) Paramètres
Architecture décrit le fonctionnement interne et comporte : zone de déclarations
zone pour les instructions
Þ toujours associée à une entité
Þ plusieurs architectures peuvent être associées à la même entité
Library IEEE;
use IEEE.STD_1164.ALL;
architecture Acrh1 of AOI is
begin
F<=not((A and B)or(C and D));
end arch1;
-- fin du code VHDL
entity AOI is
port (
A, B, C, D: in STD_LOGIC;
F: out STD_LOGIC
);
end AOI;
M. MASMOUDI Cours VHDL21
Paquetage Paquetage “Package” : collection d’objets
réutilisables : constantes, composants, types, fonction, procédure, ...
2 unités de compilation : déclaration de paquetage corps de paquetage
Le contenu de la déclaration de paquetage est “visible” depuis une autre unité de compilation si elle en a déclaré l’utilisation
Le contenu du corps de paquetage est “invisible” des autres unités de compilation
M. MASMOUDI Cours VHDL22
Codage des composants
Half addersum
couta
b
Half addersum
couta
b
in1
in2
cin
carry
result
ENTITY half_adder IS PORT (a,b: IN std_logic; sum,cout : OUT std_logic); END half_adder;ARCHITECTURE beh OF half_adder ISbegin sum <= a XOR b; cout <= a AND b;end beh;
ENTITY OR_2 IS PORT(a,b: IN std_logic; c : OUT std_logic); END OR_2;ARCHITECTURE beh OF OR_2 ISbegin c <= a OR b;end beh;
M. MASMOUDI Cours VHDL23
Instanciation Méthode 1
<inst label> : ENTITY <library>.<ent name>(<arch name>);
ENTITY full_adder IS PORT(in1,in2,cin: IN std_logic; result,carry : OUT std_logic); END full_adder;
ARCHITECTURE structural OF full_adderSIGNAL s1,s2,s3 : std_logic;BEGIN
H1 : entity work.half_adder(beh) PORT MAP(a=>in1, b=>in2, sum=> s1, cout => s3);H2 : entity work.half_adder(beh) PORT MAP(a=> s1, b=> cin, sum => result, cout => s2);O1 : entity work.OR_2(beh)
PORT MAP(a=>s2, b=> s3, c=> carry);END structural;
M. MASMOUDI Cours VHDL24
Instanciation Méthode 2ENTITY full_adder IS PORT(in1,in2,cin: IN std_logic; result,carry : OUT std_logic); END full_adder;
ARCHITECTURE structural OF full_adder COMPONENT half_adder PORT(a,b : IN std_logic; sum,cout : OUT std_logic); END COMPONENT;
COMPONENT OR_2 PORT(a,b : IN std_logic; c : OUT std_logic); END COMPONENT;
SIGNAL s1,s2,s3 : std_logic;BEGIN H1 : half_adder PORT MAP(a=>in1, b=>in2, sum=> s1, cout => s3); H2 : half_adder PORT MAP(a=> s1, b=> cin, sum => result, cout => s2); O1 : or_2 PORT MAP(a=>s2, b=> s3, c=> carry);END structural;
M. MASMOUDI Cours VHDL25
Opérateurs
CATEGORIE
and
nand
or
nor
xor
xnor
not
+
-
*
/
abs
**
mod
rem
TYPE OPERANDES
boolean
bit
bit_vector
integer
real
integer
SIGNIFICATION
et
non-et
ou
non-ou
ou exclusif
non ou-exlusif
non
+ unaire (signe +) ou addition
- unaire (signe -) ou soustraction
multiplication
division
valeur absolue
exponentiation
modulo
reste
M. MASMOUDI Cours VHDL26
Opérateurs
CATEGORIE
=
/=
<
<=
>
>=
sll
srl
rol
ror
&
TYPE OPERANDES
Entrée Résultat
tout type
boolean
scalaire
bit_vector
(amplitude : integer)
bit
bit_vector
SIGNIFICATION
égal
non égal
inférieur
inférieur ou égal
supérieur
supérieur ou égal
logique gauche
logique droite
circulaire gauche
circulaire droite
concaténation
M. MASMOUDI Cours VHDL27