0% ont trouvé ce document utile (0 vote)
221 vues123 pages

Introduction au VHDL en Génie Électrique

Ce document décrit le langage VHDL utilisé pour la conception des circuits intégrés. Il présente les avantages du VHDL, les concepts de base, les différents types de modélisation et les éléments du langage.

Transféré par

Amina ElOuali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
221 vues123 pages

Introduction au VHDL en Génie Électrique

Ce document décrit le langage VHDL utilisé pour la conception des circuits intégrés. Il présente les avantages du VHDL, les concepts de base, les différents types de modélisation et les éléments du langage.

Transféré par

Amina ElOuali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Filière Génie Electrique

Conception des systèmes VLSI

Le langage VHDL

B. HAJJI

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 1


Sommaire
 Introduction
 Avantages du VHDL?
 Flot de conception d’un ASIC
 Concepts de base en VHDL
 3 types de modélisation en VHDL:
Filière Génie Electrique

• Description comportementale
• Description structurelle
• Description de flot de données
 Instructions concurrentes & séquentielles
 Test
 Objets et leurs types
 Eléments de langages
 Les attributs
 Testbench

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 2


Introduction - Historique
 VHDL - VHSIC Hardware Description Language

 VHSIC - Very High Speed integrated Circuit)


 Langage de Description de Haut-niveau pour [circuits à grande échelle d’intégration)

 VHDL : langage de description matérielle, décrit la structure et le comportement d’un circuit numérique
Filière Génie Electrique

 Originalement développé pour le département de la défense américain (DoD)


 Utilisé pour la modélisation et la synthèse de circuits logiques
 Il est fortement inspiré du langage ADA
 Rapidement, des simulateurs de VHDL sont apparus, puis des synthétiseurs capables de traduire un
programme VHDL en une liste d’interconnexions entre des portes logiques (netlist) pouvant être réalisée
sur un ASIC
 Il est normalisé par la norme IEEE (Institut of Electrical and Electronics Enginners)
 Objectif : unifier et standardisé la conception
 La première norme remonte à 1987
 Des mises à jours ont eu lieu en 1993, 2000, 2002 et 2008.

 Autres langages proches:


 Verilog est plus anciens. La syntaxe est proche de celle du langage C. Très utilisé aux USA
 VHDL-AMS langage de modélisation mixte numérique-analogique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 3


Introduction
 Le VHDL est un langage de description de systèmes matériels
 Qu’est ce qu’un système matériel?
 Un ensemble de blocs regroupant plusieurs fonctionnalités
 Ces blocs communiquent entre eux via des connexions
Filière Génie Electrique

bloc1 bloc2

bloc3

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 4


Introduction -Niveaux de description
 Les blocs matériels peuvent être décrits à plusieurs niveaux de descriptions
• Du niveau système
• Au niveau transistor
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 5


Exemples des niveaux de description
 Niveau portes
 Niveau transfert de registres (RTL : Register Transfer Level)
 Niveau système
 Description au niveau
 Description au niveau système
Filière Génie Electrique

RTL

 Description au niveau
logique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 6


Avantages du VHDL?
 Augmentation de la productivité
 Réduction des temps de conception. En effet: il permet aux designers de concevoir des
circuits intégrés complexes (plusieurs millions de portes logiques) dans un délais très court
 Indépendance de la technologie cible
 Indépendance vis-à-vis des fournisseurs
 Standard commun
Filière Génie Electrique

 Augmentation de la qualité des designs


 VHDL est un langage anticipatif
• Il est possible de concevoir un système alors que ses composants ne sont pas
encore disponibles
 Un langage a plusieurs usages
• Modélisation (simulation) des circuits ou systèmes
• Synthèse(génération automatique) de circuit numérique
• Description de programme de test (banc de test)
• Description de type hiérarchique (netlist)
 Langage portable pour la modélisation des circuits numériques

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 7


VHDL- Flot de conception d’un ASIC

Description Simulateur
VHDL physique

Synthèse logique Masque

Listes des portes


Netlist
Filière Génie Electrique

et de leurs interconnexions Fabrication


de
Simulation prototypes

Placement-
routage Test des
prototypes

Analyse de
timing Fabrication
en série
15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 8
Vérification /Synthèse (RTL)
 La vérification du système est faite pour valider le code de description en
fonction de spécifications
 On utilise généralement la simulation

 Faites à plusieurs moments


Filière Génie Electrique

 Avant-synthèse (vérification fonctionnelle)


 Après-synthèse (vérification temporelle)
 Après placement-routage (vérification physique)
 La synthèse est l’étape qui transforme la description VHDL en porte logiques
(Netlist)
 Elle est guidée par des contraintes imposées par l’utilisateur (vitesse et
superficie)

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 9


Analyse temporelle statique & placement
 Vérifier si le circuit obtenu respecte les contraintes temporelles

 Utilise les délais des portes et les délais dans les interconnexions pour
calculer la vitesse maximale
Filière Génie Electrique

 Placement
 divise et place les gros blocs de la puce
 Forme des rangées pour placer les cellules
 Laisse un espace pour le routage
 Ajuste l’espace, la forme, la densité, etc

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 10


placement, routage et dessin de masques
 Place les cellules en accord avec le floorplan

 Crée des lignes d’alimentation de puissance

 Crée des lignes de distribution d’horloge


Filière Génie Electrique

 Connecte les cellules entre elles

 Génération finale du dessin des masques


 Dernières vérifications

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 11


Fonderie, mise en boîtier et test
 Le dessin des masques est envoyé à la fonderie pour la fabrication

 Le dé est fabriqué est mis en boîtier

 Test:
Filière Génie Electrique

 Structurel:
 Vérification de défauts physique ( de fabrication)
 Ex: une connexion de métal défectueuse

 Fonctionnel:
 Validation des spécification
 Le circuit rencontre les spécifications?
 Ex: fréquence d’horloge maximale

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 12


Structure d’un module VHDL
 Une ou plusieurs bibliothèques
• Paquetage
 Unité de conception
• Une entité (entity)
• Une architecture ( architecture)
Filière Génie Electrique

 Une configuration

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 13


Bibliothèques

Library IEEE;
Use IEEE.std_logic_1164.all;
Use IEEE.std_logic_arith.all;

 IEEE : librairie principale


Filière Génie Electrique

 Use : indique quelle package de la librairie nous allons utiliser, après cela le
nom du package
 Le .all : signifie que l’on souhaite utiliser tout ce qui se trouve dans ce package.
 Les librairies principales sont:
• [Link]
• IEEE.std_logic_1164

 Contient les types Std_logic et Std_logic_vector ainsi que les opérateurs logiques:
and, nand, or, nor, xor, xnor, not

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 14


Bibliothèques

 IEEE.std_logic_arith
 Contient un groupe d’opérateurs arithmétiques : "+", "-", "abs", "*", "<",
">", "<=", ">=", "/=", "=", shr, shl, conv_integer etc..
 std_logic_signed :
 contient des opérateurs sur nombres entiers signés.
Filière Génie Electrique

 std_logic_unsigned :
 contient des opérateurs sur nombres entiers non signés.
 IEEE.numeric_std

 Attention: il ne faut pas utiliser les librairies numeric_std et std_logic_arith en même


temps:
• La librairie std_logic_arith est une version améliorée de la numeric_std, développé
par synopsys
• Le fait d’utiliser les 2 librairies en même temps causera un conflit lors de
l’utilisation de certaines fonctions

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 15


Opérateurs de bases
Vaste choix d’opérateurs:
 Logiques: types BIT, BIT_VECTOR, BOOLEAN
 AND, OR, NAND, NOR, XOR, etc
 Exemple :
Signal A, B , C : bit_vector(3 downto 0);
C <= A or B
 Opérations équivalents :
Filière Génie Electrique

 C(3) <= A(3or B(3);


 C(2) <= A(2) or B(2);
 C(1) <= A(1) or B(1);
 C(0) <= A(0) or B(0);

 Test : types BIT, BIT_VECTOR, INTEGER


 = (égal), /= (différent) , < (strictement inférieur) , > (strictement supérieur), 
(supérieur ou égal) , (inférieur ou égal), etc
 Le résultat de la comparaison est un booléen : True ou False
 Arithmétique:
 + (addition) , - (soustraction) , / (division) , * (multiplication),  (concaténation)
 Décalage:
 Sll (décalage logique à gauche) , srl (décalage logique à droite), sla(décalage
arithmétique à gauche) , sra (décalage arithmétique à droite), rol (rotation à
gauche), et ror (rotation à droite)

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 16


BIT versus STD_LOGIC

 En VHDL, le type BIT ne peut contenir que deux valeurs


0 •
• 1
 Le types Bit ne sont jamais utilisés en pratique
Filière Génie Electrique

 Il ne permettent pas de représenter tous les états réels d’un signal, en plus des
états ‘0 et ‘1’ :

• État haute impédance


• État indéfini
– État pour indiquer des conflits, un signal non initialisé, …

 STD_LOGIC et STD_LOGIC_VECTOR sont utilisés au lieu des BIT et BIT_VECTOR


pour un système logique à plusieurs états

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 17


Le Type

 Le TYPT utilisé pour les signaux d’entrées/sorties est:


 Std_logic pour un signal
 Std_logic_vector : pour un bus composé de plusieurs signaux

 Les valeurs que peuvent prendre un signal de type std_logic sont:


Filière Génie Electrique

 ‘U’ - - non initialisé


 ‘X’ - - inconnu
 ‘0’ ou ‘L’ -- pour un niveau bas
 ‘1’ ou ‘H’ -- pour niveau haut
 ‘Z’ -- pour état haute impédance
 ‘-’ -- quelconque, c’est à dire pour n’importe quelle valeur
 ‘W’ -- Faible inconnu

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 18


Le couple : entité/architecture

 Un modèle VHDL est toujours défini par une spécification d’entité (ENTITY ) et
une ou plusieurs architectures (ARCHITECTURE)

 L’entité(ENTITY) définit la vue externe:


• Nom
Filière Génie Electrique

• Entrées sorties (I/O) du module


• Paramètres génériques

 L’architecture (ARCHITECTURE) :
• décrit le fonctionnement du modèle
• Elle contient des instructions concurrentes, des instructions séquentielles
et des instanciations de composants

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 19


Ports d’accès

 Ports sont les points de communications avec le monde


extérieur
• Généralement sont les pins du composant
 A chaque ports sont attachés un nom, un mode et un type.
Entity
Filière Génie Electrique

 Modes des ports:


• IN Pour un signal en entrée

• OUT Pour un signal en sortie

• INOUT Pour un signal bidirectionnel

• BUFFER Pour un signal en sortie mais utilisé


comme entrée dans la description

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 20


Exemple déclaration Entité

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY black_box IS PORT (
clk, rst: IN std_logic;
d: IN std_logic_vector(7 DOWNTO 0);
Filière Génie Electrique

q: OUT std_logic_vector(7 DOWNTO 0);


co: OUT std_logic);
END black_box;

MODE
TYPE BLACK_BOX
rst
q[7:0]
d[7:0]
co
clk

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 21


Exemple : Additionneur 1 bit

entity adder is
port(
A: in std-logic;
B: in std_logic;
Filière Génie Electrique

sum : out std_logic;


carry : out std_logic);
end adder;

type
mode

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 22


Entité

Entité

Architecture1 Architecture2 Architecture n


Filière Génie Electrique

1ère Description du 2ème Description du nème Description du


fonctionnement fonctionnement fonctionnement

 Une entité peut être associée à plusieurs architectures correspondant à


différents niveaux de description

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 23


Architecture

 C’est la vue interne de la boite noire (Entity)

 IL peut y en avoir plusieurs par entité

 Il décrit le fonctionnement de l’entité de conception


• C’est-à-dire la détermination des sorties en fonction des entrées
Filière Génie Electrique

 En VHDL, en définit plusieurs niveaux de description (modélisation):


• Description comportementale (algorithmique)
• Description structurelle
• Description flot de données : data-flow

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 24


Description comportementale (behavioral)

 Elle décrit le fonctionnement du module en définissant les relations entre les


entrées et les sorties
 Elle se présente sous la forme d’algorithmes séquentiels exécutés par des
process indépendants.
 Elle peut traduire un fonctionnement séquentiel ou combinatoire
Filière Génie Electrique

 Elle est définie à l’intérieur d’un process


 Elle fait appel à des instructions séquentielles
 Des structures conditionnelles ( if , case et while)
 Elle est la plus proche d’un langage de programmation classique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 25


Exemple1 : Description comportementale
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 26


Exemple2 : Multiplexeur 2 vers 1

architecture comportementale of
mux2_1 is
entree1
begin
Filière Génie Electrique

sortie
process(entree1,entree2,sel)
begin
entree2 if sel=‘0’ then
sortie<=entree1;
else
sortie<=entree2;
sel end if;

Spécifications: end process;


Si sel=0 alors sortie<=entree1
Si sel=1 alors sortie<=entree2 end comportementale;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 27


Description structurelle

 Elle utilise des composants définis à l’intérieur d’une bibliothèque de travail


 Elle décrit les interconnexions de ces modules à l’aide des signaux
 Elle est semblable à une description schématique

 Déclaration des composants:


Filière Génie Electrique

• Les composants (components) son des modèles déjà développés et


réutilisés dans le nouveau modèle
• Le composant doit être déclaré au niveau du modèle:
 Dans la partie déclarative de l’architecture
 Ou dans package auquel l’architecture doit faire référence

 Instanciation des composants:


• Chaque instance est une copie unique du composant avec un nom et
une liste de ports
• L’instanciation se fait à l’aide de la commande : port map (nom_port
=>Nom_signal)

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 28


Description structurelle: Exemple1
architecture struct of mux2_1 is

component et
sel nonsel
port(a,b : in bit; s:out bit);
end component;

component OU
port(a,b : in bit; s:out bit); sele1
entree1 &
Filière Génie Electrique

end component;
sortie
component NON >=1
port(a: in bit; s: out bit);
end component;

signal nonsel, sele1, sele2 : entree2 & sele2


bit;
begin
result : ou port map(sele1,sele2,
sortie);
complem : non port map(sel,
nonsel);
choix0 : et port map(nonsel,
entree1, sele1);
choix1: et port map(sel,entree2,
sele2);
end struct;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 29


Description structurelle: Exemple2
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 30


Description de flot de données (data flow)
 Elle utilise les instructions concurrentes d’affectations d’affectation de
signal.
 Elle spécifie comment la donnée est transférée de signal à signal sans
utiliser d’affectations séquentielles (comme dans la description
comportementale)
 Cette description ne nécessite pas de déclaration de process
Filière Génie Electrique

 Toutes les déclarations s’exécutent en même temps


 Les expressions sont basées sur des équations booléennes (logiques).
 Exemple 1:
architecture flot of mux2_1 is
signal sel0, sel1 : bit;

begin
sortie<= sel0 or sel1;
sel0<=entree0 and not sel;
sel1<=entree1 and sel;
end flot;
15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 31
Exemple 2: Description de flot de données

 Exemple: Comparateur
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 32


Quelques exemples
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 33


Exemple 1: Bascule D
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 34


Exemple 2: Multiplexeur 4 vers 1
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 35


Exemple 3: Décodeur 2:4
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 36


Exemple 4: compteur binaire
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 37


Exemple 5: Additionneur 8 bit
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 38


Les instructions concurrents
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 39


Quelques exemples
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 40


Les instructions concurrents
 L’instruction d’affectation
• L’affectation simple : …<= …
• L’affectation conditionnelle whene … else
• L’affectation sélectionnée with …select
 L’instruction assert
 L’instruction block
Filière Génie Electrique

 L’instruction component, port map, generic map


 L’instruction generate
 Le process

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 41


L’instruction d’affectation simple
Filière Génie Electrique

 L’ordre dans lequel sont écrites les instructions n’a aucune importance.
 Toutes les instructions sont évaluées et affectent les signaux de sortie en même
temps
 C’est la différence majeur avec un langage informatique
L’architecture ci-dessous est équivalente:

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 42


L’instruction conditionnelle When-else
 Syntaxe
• nom_signal <= expression1 when cond_bool else expression2;

 Exemple 1

signal sel0,sel1:bit;
Filière Génie Electrique

signal z,d0,d1,d2,d3: bit_vector(7 downto 0);

z<= d0 when sel1='0' and sel0='0' else


d1 when sel1='0' and sel0='1' else
d2 when sel1='1' and sel0='0' else
d3 when sel1='1' and sel0='1';

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 43


L’instruction When-else: Exemple 2

 Exemple d’un multiplexeur 4 envers 1:

s
x <= a when (s = “00”) else
2
b when (s = “01”) else
c when (s = “10”) else a
Filière Génie Electrique

d; b x
mux
c
d

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 44


Instruction d’affectation sélective: WITH-SELECT
 Syntaxe

with sel select signal<= expression when choix;

 Exemple 1
Filière Génie Electrique

with alu_function select

result<= a+b when alu_add,


a-b when alu_sub,
a and b when alu_and,
a or b when alu_or;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 45


Instruction WITH-SELECT: Exemple 2

 Exemple : Multiplexeur 4-1

WITH s SELECT
x <= a WHEN “00”, -- means when s=“00”
b WHEN “01”,
Filière Génie Electrique

c WHEN “10”,
d WHEN OTHERS;
s
2

a
b x
mux
c
d

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 46


Instruction assert
 Assert : permet d’écrire des messages à l’écran
 Syntaxe :

ASSERT condition REPORT message SEVERITY


{note/warning/error/failure}
Filière Génie Electrique

 Forcer un message:
 Assert false report Toujours à l’ écran Severity note:
 Report Toujours à l’ écran Severity note:
 Test en contecte séquentiel
 Assert s = ‘1’ Report  la sortie vaut ‘0’ et ce n’est pas normal  Severity
warning; -- mentionne un warning
 Assert s = ‘1’ Report  la sortie vaut ‘0’ et ce n’est pas normal  Severity failure; --
mentionne une erreur et arrête l’exécution

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 47


Instruction block
 L’instruction block est un moyen de regrouper les instructions concurrentes et
éventuellement de les hiérarchiser.
 Cette instruction est souvent associée à « guarded »
 Syntaxe:
Nom_de_bloc: block(CONDITION_BOOLEENNE)
begin
-- instructions d’affectation concurrentes
Filière Génie Electrique

end block Nom_de_bloc;


 Exemple:

entity latch
port(D, clk : in bit:
Q: out bit:=‘0’;
Qb: out bit:=‘1’;
end latch;
architecture data_flow of latch is
constant TP:time:=10ns;
begin
Bloc:block(CLK=‘1’)
begin
Q<=guarded D after TP;
QB<=guarded (not D) after TP;
end block bloc;
15/10/2010 end data_flow ECOLE NATIONALE DES SCIENCES APPLIQUEES 48
L’instruction Generic

 Cette instruction permet de paramétrer le code VHDL afin d’augmenter la


flexibilité
 Elle se situe dans l'entité (avant le mot clé port)
 Exemple additionneur N bits
Filière Génie Electrique

entity N_adder is
generic(N: integer);
port(a,b:in bit_vector(N-1 downto 0);
Cin: in bit;
s: out bit_vector(N-1 downto 0);
cout:out bit);
end N_adder;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 49


L’instruction: Component, port map

 Un composant est l'utilisation d'un couple entité/architecture au sein d'une


nouvelle architecture.

 Les composants sont déclarés dans le code principal (zone déclarative) de


l'architecture
• avant le mot clé begin
Filière Génie Electrique

 Les instanciations et les port maps sont également dans le code principal
• après le mot clé begin

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 50


L’instruction : Component, port map

ARCHITECTURE structural OF xor3 IS


SIGNAL U1_OUT: BIT;
COMPONENT xor2 IS A
PORT( B XOR3 Result
I1 : IN BIT;
I2 : IN BIT; C
Filière Génie Electrique

Y : OUT BIT
);
END COMPONENT; I1
Y
BEGIN
I2
U1: xor2 PORT MAP ( I1 => A, XOR2
I2 => B,
Y => U1_OUT);
U1_OUT
U2: xor2 PORT MAP ( I1 => U1_OUT,
I2 => C, A
Y => Result); B RESULT
END structural; C

XOR3
15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 51
L’instruction Generate
 Cette instruction peut être utilisée sous deux formes
• La forme itérative
 Exemple
Label: for variable_boucle IN valeur_initiale TO
valeur_finale
GENERATE{instructions parallèles}
End GENERATE label;
Filière Génie Electrique

• La forme conditionnelle
Exemple:
Label: if condition_booléenne GENERATE
{instructions concurrentes;}
end GENERATE label;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 52


L’instruction Generic : Exemple
 Permet de définir des constantes
 Permet de paramétrer le code VHDL afin d’augmenter la flexibilité
 Elle se situe dans l’entité (avant le mot clé port)
 Exemple: additionneur N bits C(0)

A(0)
S(0)
B(0)
Filière Génie Electrique

entity N_adder is C(1)


generic (N:integer); A(1) S(1)
Port(A,B: in bit_vector(N-1 downto B(1)
0);
cin: in bit; A(2) S(2)
B(2)
s: out bit_vector(N-1 downto 0);
cout: out bit;
end N_adder;
C(N-1)
A(N-1) S(N-1)
B(N-1)
C(N)

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 53


L’instruction Generate
 Parfois utilise d’instancier un composant plusieurs fois
 Travail répétitif qui peut être remplacé par une boucle GENERATE
 Défini à l’intérieur de l’architecture
 Cette instruction peut être utilisée sous deux formes
• La forme itérative
 Exemple
Filière Génie Electrique

Label: for variable_boucle IN valeur_initiale TO


valeur_finale
GENERATE{instructions parallèles}
End GENERATE label;

• La forme conditionnelle
Exemple:
Label: if condition_booléenne GENERATE
{instructions concurrentes;}
end GENERATE label;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 54


L’instruction Generate : Exemple
 Exemple: additionneur N bits

entity N_adder is
generic (N:integer);
Port(A,B: in bit_vector(N-1 downto 0); C(0)
cin: in bit;
s: out bit_vector(N-1 downto 0);
A(0)
cout: out bit; S(0)
B(0)
Filière Génie Electrique

end N_adder;
C(1)
architecture structurelle of n_adder is A(1)
component adder S(1)
(a,b,cin:out bit; B(1)
s, cout: out bit);
end component; A(2) S(2)
signal c: bit_vector(N downto 0); B(2)
begin
label1: for i in 0 to N-1 generate
instance: adder port map (a(i),b(i),c(i),S(i),c(i+1));
end generate;
cout<=c(N); C(N-1)
end structurelle;
A(N-1) S(N-1)
B(N-1)
C(N)

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 55


Signal versus Variable
 Un signal est toujours global à une architecture donnée.
 La mise à jour se fait à la fin d’un cycle de smulation
 Il est utilisé pour connecter les différents composants d’un système
 Les signaux sont équivalent des fils ou câbles d’interconnexions dans le monde
réal
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 56


Exemples avec des Signaux
Filière Génie Electrique

 Si trigger change à t = 10, tous les signaux sont mis à jour t = 10 + : sig1 = 5, sig2 =
1, sig3 = 2 et sum = 6

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 57


Signal versus Variable

 Les variables existent uniquement à l’intérieur d’un process.


 Elles sont locaux : Il n’y a pas de variables globales
 Contrairement aux signaux, la mise à jour des variables se fait instantanément,
au moment de l’affectation, sans retard possible.
 Un signal à l’intérieur d’un process n’est mis à jour qu’à la fin.
 Pour sortir la valeur d’une variable en dehors du process, il faut utiliser un
Filière Génie Electrique

signal.

 Opérateurs d’affection
─ := variables
─ <= signaux

 Les variables sont typées; std_logic_vector, signed, unsigned, integer, etc.

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 58


Exemple avec des Variables
Filière Génie Electrique

 Si trigger change à t = 10, alors var1 = 5, var2 = 5, var3 = 5 et à t = 10 + , sum = 15

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 59


Les process
 Il permet de décrire de manière algorithmique le fonctionnement d’un système
 Il est indispensable pour décrire des éléments mémoires (bascules)
 Ils sont définis par
• un label (optionnel)
• une liste de sensibilité (signaux auxquels il est sensible)
 Lorsqu’un signal dans la liste de sensibilité change de valeur, le ‘processus’
Filière Génie Electrique

s’active et tous les instructions séquentielles s’exécutent


 une suite d'instructions exécutées séquentiellement
 Un processus ne se termine jamais
 Il peut éventuellement s'endormir (wait) en attendant de se réveiller
 Structure d’un process:

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 60


Process : partie exécutive
Partie déclarative (optionnelle)
 Liste les variables du process; les signaux sont déclarés dans l’architecture

Partie exécutive
 Contient les instructions séquentielles à exécuter à chaque fois que le process
est lancé
Filière Génie Electrique

 Semblable aux langages de programmation traditionnels


 A l’intérieur d’un process, les instructions s’exécutent séquentiellement

process (liste de sensibilité)


partie déclarative
begin
partie exécutive
end process;
 Un process ne peut pas pas être déclaré à l’intérieur d’un autre process

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 61


Process

 Les processus sont utilisés avec 3 approches différentes:


1. Pour décrire un circuit combinatoire avec des instructions évolué de la
programmation structuré: if, case, while, etc …
2. Pour décrire un circuit synchrone qui comporte une ou plusieurs
cellules de mémorisation (bascules Df)
Filière Génie Electrique

3. Pour décrire une fonction synthétisable tel qu’un banc de test ou un


modèle
 Attention !
 Les instructions if, case et while n’existent et ne peuvent exister que
dans un process

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 62


Process
 Les processes décrivent un comportement séquentiel
 Les processes en VHDL représentent un intérêt majeur du langage
•Permettent de définir un comportement difficilement implantable sous forme
d’un circuit physique
• Tous les processes ne sont pas synthétisables
 Utiliser les processes avec grande précaution lorsqu’une implantation matérielle est
Filière Génie Electrique

visée
 Utiliser les processes librement dans les autres cas (testbench notamment)
 Il est également possible de se passer de la liste de sensibilité
• Dans ce cas, il faut obligatoirement une instruction WAIT

process(A,B) process
begin begin
C<=A and B; C<=A and B;
D<=A and C; D<=A and C;
end process; wait on A,B;
end process;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 63


Process
 Une architecture peut contenir plusieurs processes
 Les processes s’exécutent en parallèles
 A l’intérieur d’un process, les instructions sont exécutés séquentiellement

P1: process()
begin
Filière Génie Electrique

end process P1;

P2: process()
begin
end process P2;

P3: process()
begin
end process P3;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 64


Process combinatoire: Exemple 1

mux: PROCESS (a, b, s)


BEGIN
IF s = '0' THEN s
x <= a;
a(3 DOWNTO 0)
ELSE x(3 DOWNTO 0)
Filière Génie Electrique

x <= b; b(3 DOWNTO 0)


END IF;
END PROCESS mux;

 Le ‘Process’ mux est sensible aux signaux a, b, et s. Chaque fois l’un des signaux
change de valeurs, le processus se met en état de veille, les états séquentielles
s’exécutent et l’output x est mise à jour
 L’ordre des signaux dans la liste de sensibilité n’a pas d’importance

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 65


Process: Exemple 2
modélisation d’une bascule D
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 66


Filière Génie Electrique

Les instructions séquentielles

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 67


Les instructions séquentielles
 L’instructions séquentielle : IF-THEN-ELSE
 L’instruction séquentielle : CASE-WHEN
 Instruction For Loop
 Instruction while
 Instruction wait
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 68


Les instructions séquentielles
 Elles s’exécutent en en séries, les unes à la suites des autres.
 Elles sont nécessaires pour modéliser des fonctions complexes
• En utilisant des “ algorithms “
 L’ORDER de ces instructions est important
 Elles sont évaluées dans le corps des PROCESS
Filière Génie Electrique

 Elles peuvent également utilisées dans des procédures et des fonctions

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 69


Instruction IF-THEN-ELSE
 Elles s’exécutent en en séries, les unes à la suites des autres.
 L’instructions IF reposent sur le test d’une condition qui génère un
booléen. Si celui ci est “ TRUE” l’instruction qui suit est exécutée
 Syntaxe du IF :
Filière Génie Electrique

if condition1 then instruction;


[elsif conditione then instruction;
...
[else instruction;]
end if;

 Pour coder un processus combinatoire, l’utilisation du ELSE est obligatoire


de façon à traiter toutes les combinaisons.
 L’instruction if ne peut être utilisée que dans un process

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 70


Instruction IF-THEN-ELSE : Exemple
 Exemple : Multiplexeur 4 vers 1

mux4_1: PROCESS (a, b, c, d, s)


BEGIN
IF s = “00” THEN x <= a ;
ELSIF s = “01” THEN x <= b ;
ELSIF s = “10” THEN x <= c ;
Filière Génie Electrique

ELSE x <= d ;
END IF;
END PROCESS mux4_1 ;

 Anytime you want to use IF-THEN-ELSE, then you MUST use a process,
because it is a sequential statement

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 71


Instruction séquentielle: CASE-WHEN
 L’instructions CASE reposent sur le test d’un signal ou d’une variable. En
fonction de la valeur, une instruction spécifique est exécutée
 Syntaxe CASE :

CASE S IS
WHEN "00" => x <= a;
Filière Génie Electrique

WHEN "01" => x <= b;


WHEN "10” => x <= c;
WHEN OTHERS => x <= d;
END CASE;

 Choix doit couvrir toutes les valeurs de la condition


 L’utilisation du When Others est obligatoire de façon à traiter toutes les
combinaisons.
 L’instruction CASE ne peut être utilisée que dans un process

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 72


Instruction CASE-WHEN : exemple
 Exemple 1 : mux 4 vers 1:

mux4_1: PROCESS (a,b,c,d,s)


BEGIN
CASE s IS
WHEN "00" => x <= a;
WHEN "01" => x <= b;
Filière Génie Electrique

WHEN "10” => x <= c;


WHEN OTHERS => x <= d;
END CASE;
END PROCESS mux4_1;

 Exemple 2:

case a&b is
when "00" => s_and<='0';
when "01" => s_and<='0';
when "10' => s_and<='0';
when others => s_and<='1';
END case;
15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 73
Process synchrone

 Un process synchrone est exécuté à


chaque front montant de l’horloge
 Façon couramment utilisée pour
générer une bascule flip-flop
(registre)
 Pour tester le front montant de
Filière Génie Electrique

l’horloge, on utilise la fonction


rising_edge() qui est définit dans le
package STD_LOGIC_1164

 RISING_EDGE est vrai lorsque


l’horloge passe de l’état ‘0’ à l’état ‘1’
 Utile pour décrire une bascule D flip-
flop (Dff)

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 74


Rest Asynchrone
 Le reset asynchrone est testé avant le front montant de l’horloge
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 75


Reset Synchrone
 Le reset synchrone est testé après le front montant de l’horloge
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 76


Transfert par registre (RTL): Synthèse d’un registre
 Dans un process synchrone, à chaque affectation, une bascule est
crée.
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 77


Exemple 1
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 78


Exemple 2
Filière Génie Electrique

 Une variable ne garde pas sa valeur entre deux exécutions d’un


processus. Comme, dans cet exemple, les variables sont utilisées
avant d’avoir reçu une valeur, il faut chercher leurs valeurs
précédentes dans des bascules

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 79


Exemple 3
Filière Génie Electrique

 Ici, les variables sont des simples fils: elles ne génèrent aucun
élément.

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 80


Règles des process synchrones

 Liste de sensibilité doit inclure le Clock et le Rest et rien d’autre.


 Tout les signaux assignés dans le process doivent être initialisés par
un reset.
 Respectes la structure if rest = ‘1’ elsif rising_edge(clk) … pour la
description d’un process synchrone
Filière Génie Electrique

 Attention les signaux prennet leurs nouvelles valeurs qu’à la fin du


process

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 81


Process non-synthétisable

 Les process non synthétisable sont utilisé pour:


 Écrire des bancs de test (test bench)
 Les process non synthétisable ne possèdent pas de liste de sensibilité
et ce sont des instructions WAIT qui synchronise le process.
 Trois formes de WAIT peut être combinées:
Filière Génie Electrique

 WAIT ON événement; Exemple: wait on A, B, C, D


 Remplce la liste de sensibilité d’un process clasisique
 WAIT FOR durée; Exemple: wait for 100 ns
 Permet de créer un délais
 WAIT UNTIL condition; Exemple: wait until rest =‘1’
 Condition bloquante
 Wait:
 Boucle infini, comme while ()

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 82


Exemple des Process non-synthétisable
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 83


Instruction For Loop
 L’instruction For Loop

[label:] for i in range loop


instructions
end loop [label];
 Répète une section de code VHDL séquentiellement.
Filière Génie Electrique

 Différent de l’instruction generate qui est une instruction concurrente

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 84


Instruction while
 La boucle while

[label:] while condition loop


instructions
end loop [label];
Filière Génie Electrique

 Répète une section de code VHDL séquentiellement.


 Vérifie la condition avant l’exécution

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 85


Exemple de boucle
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 86


Instruction wait
 Cette instruction sert à suspendre l'exécution d'un processus
 WAIT : suspension jusqu'à la fin de la simulation
 WAIT FOR: suspension pendant une durée déterminée
 Exemple :
WAIT FOR 20ns;
Filière Génie Electrique

 WAIT on : L'exécution reprend dès qu'un des signaux précisés change d'état.
• Exemple :
WAIT on A,B,Cin;
 WAIT until : La suspension a lieu jusqu'à ce que la condition devienne VRAIE
• Exemple
UNTIL CLK='1';
WAIT UNTIL CLK='1' FOR 10 ms;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 87


Filière Génie Electrique

Objets et leurs types

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 88


Objets
 VHDL permet de manipuler des objets typés
 IL existe 3 classes d’objets:
• Constante: objet possédant une valeur fixe
• Variable:
• Peut stocker un résultat intermédiaire et sa valeur évolue
pendant la simulation
Filière Génie Electrique

• Elle ne peut être déclarée que dans un process, une procédure ou


une fonction
• Signal:
• Il est synthétisé par une équipotentielle et éventuellement une
bascule s’il faut conserver sa valeur
• Un signal ne peut être déclaré que dans une architecture

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 89


Objets
 Constantes:
• Objet possédant une valeurs fixes après initialisation
• Exemple :
constant number_of_bytes:integer:=4;
constant e:real:=2.718281828;
constant count_limit:integer:=255;
Filière Génie Electrique

 Variables:
• Les variables s’utilisent exclusivement au sein des processes.
• Elle est mise à jour instantanément.
• Elles ont une utilisation semblable aux variables dans un langage de
programmation classique
• Exemple :

variable index: integer :=0;


variable start,finish: time :=0 ns;
Affectation de variables (:=)
index :=3;
start :=15 ns;
15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 90
Objets
 signaux:
• Les signaux représentent les données physiques échangées entre les modules
• Chaque signal sera matérialisé dans le circuit final par une équipotentielle.
 Affectation de signaux:
d <= d after delay;
s est le signal
Filière Génie Electrique

d est le driver
delay est le délai
 Les signaux peuvent être utilisés dans les process et en dehors
 En synthèse, il sont apparentés à des fils

signal

X
+

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 91


Objets
 Un signal se déclare dans l’environnement concurrent
• zone déclarative d'une architecture
• dans la partie port d'une entité
• avant le mot clé begin

 Affectation de signaux:
Filière Génie Electrique

entity mon_entite is …

end mon_entite;

architecture archi of mon_entite is

begin
… Zone déclarative de l'architecture
end archi;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 92


Objets
 Exemple de signal: compteur 16 bits

ARCHITECTURE mixte of counter_16 is


SIGNAL int_cnt : BIT_VECTOR(15 downto 0);
SIGNAL next_cnt: BIT_VECTOR(15 downto 0);
begin
next_cnt<=int_cnt+'1';
Filière Génie Electrique

process(clk)
begin
if clk'event and clk='1' then
int_cnt<=next_cnt;
end if;
end process;
cnt<=int_cnt;
END mixte;
Déclaré dans l'entité

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 93


Les types
 Le langage VHDL est fortement typé
 Tout objet (ou donnée) manipulé dans le langage doit être déclaré avant
utilisation en indiquant son type.
 Un type définit
• Le format des données
• l'ensemble des opérations légales sur les données
Filière Génie Electrique

 Il existe différentes familles de types


• Type scalaire:
 entier
 réel
 énuméré
 physique
• Type composés:
 Tableau
 enregistrement
• Type pointeurs: access
• Type File: séquence de valeurs d’un type donné
15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 94
Types prédéfinis dans le package std

Types

Types Types Types Types


scalaires pointeurs fichiers composites
Filière Génie Electrique

Types Types Types Type Type


discrets flottants physiques tableaux enregi-
strements

type type real time


entier énuméré types contraints types non
contraints
severity_level
integer
character bit_vector

boolean string
15/10/2010
bit ECOLE NATIONALE DES SCIENCES APPLIQUEES 95
Types scalaires
 Types
• Discrets
• Flottants
• Physiques
 Ils sont définis :
• Par une liste de valeurs
Filière Génie Electrique

• Par un domaine de définition


 Un domaine de définition (range) est spécifié
• Par des bornes
• Par un sens de parcours (to ou downto)
 Exemple
• Type octet is range 0 to 255
• type adress is range 1024 downto 0

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 96


Types scalaires
 Types discrets: énumérés
• Ensemble de valeurs désignés par des caractères ou des indicateurs
 type bit is (‘0’, ‘1’) ;
 type boolean is (false, true) ;
 type character is (NUL, ..., ‘ ‘, ‘ !’, ..., ‘@’, ‘A’, ... , ‘a’, ...) ;
 type etat is (init, attente, lecture, ecriture) ;
Filière Génie Electrique

 type ensemble_couleur is (noir,marron, rouge,orange,vert,bleu);


 Les types flottants
• type real is range -1.0E38 to 1.0E38
• Type codé sur 32 bits (Norme IEEE754)

S exposant mantisse
1 8 23

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 97


Les types tableaux
 Tableau
• collection d'éléments de même type
 Syntaxe
• type Nom_Tableau is array(intervalle) of type_de_base
 Utilisation
• modélisation de nappes de connexions.
Filière Génie Electrique

• modélisation des mémoires


 Synthèse
• Tableau à 1 dimension
 Exemples
• types non contraints
 type bit_vector is array (natural range<>) of bit;
 type string is array(positive range<>) of character;
• types contraints
 signal memoire is array (0 to 1023) of octet ;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 98


Les tableaux (suites)
 On peut manipuler les données d’un tableau
• Collectivement
signal tab1: bit_vector(0 to 4);
signal tab2: bit_vector(0 to 4);
tab1<=tab2;
• individuellement
signal tab1: bit_vector(0 to 4);
Filière Génie Electrique

signal tab2: bit_vector(1 to 2);


signal sortie:bit;

tab2<=tab1(0 to 1);
sortie<=tab1(3);
 Repérage des indices dans une chaîne (to et downto)

signal data: bit_vector(0 to 4); --tableau de 5 bits


data<="10110";
data(0)<=‘1’;data(1)<=‘0 ’;data(2)<=‘1’;data(3)<=‘1’;
data(4)<=‘0’;

signal data: bit_vector(4 downto 0);


data<="10110";
data(4)<=‘1’;data(3)<=‘0’;data(2)<=‘1’;data(1)<=‘1’;
data(0)<=‘0’;
15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 99
Types et sous types

 Un sous-type d’un type donné est un type avec étendue restreinte


 Exemple
• SUBTYPE octet is integer range 0 to 255
 Ce type ne représentera les nombres codés sur un octet
 Il existe deux sous-types prédéfinis
Filière Génie Electrique

• SUBTYPE NATURAL is integer range 0 to integer’HIGH


• SUBTYPE POSITIVE is integer range 1 to integer’HIGH

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 100


Filière Génie Electrique

Eléments du langage

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 101


Eléments du langage
 VHDL n’est pas sensible aux majuscules/minuscules
Exemple:
Noms ou labels
databus
Databus
DataBus
DATABUS
Filière Génie Electrique

sont tous équivalents


 Noms et labels: Règles d’écriture (selon VHDL-87)
1. Tous les noms doivent commencer par un
caractère alphabétique (a-z or A-Z)
2. Utiliser uniquement des caractères
alphabétiques (a-z ou A-Z), les chifres (0-9)
et l’underscore (_)
3. Ne pas utiliser de caractères de ponctuation
à l’intérieur d’un nom (!, ?, ., &, +, -, etc.)
4. Ne pas utiliser plus de deux caractères _
consécutifs
5. (Par exemple Sel__A n’est pas valable)
6. Tous les noms et labels définis dans une
architecture doivent être uniques
15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 102
Eléments du langage
 Formatage libre:
• VHDL n’a pas de format

 Le caractère espace ou le
retour chariot sont traités de la
même façon
Filière Génie Electrique

Exemple:
if (a=b) then
ou
if (a=b) then
ou
if (a =
b) then
sont équivalents

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 103


Eléments du langage
 Commentaires:
• Les commentaires en VHDL sont indiqués par deux signes moins
consécutifs “--”.
 Les commentaires sont placés n’importe où sur la ligne
 Tout le texte qui suit est pris comme commentaire
 Un RC termine un commentaire
Filière Génie Electrique

 Il n’existe pas de méthode pour mettre plusieurs lignes entre


commentaires
Exemples:
-- main subcircuit
Data_in <= Data_bus; -- reading data from the input FIFO

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 104


Filière Génie Electrique

Les attributs

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 105


Les attributs
 Comment détecter le changement d'un signal lors de la simulation ?
 Comment passer au synthétiseur des informations sur la conception du circuit ?
 Définition
• Un attribut est une caractéristique associée à un type ou un signal
 Il est placé juste après l’identificateur du type ou du signal mais séparé du caractère ‘.
 Les attributs sont modifiables par l’utilisateur
Filière Génie Electrique

 Ils "décorent" l'objet associé


 Soit A un scalaire
• A’left :limite gauche de A
• A’right :limite droite de A
• A’low :limite basse de A
• A’high :limite haute de A
 Exemple:
• Type adr is integer range 15 downto 0;
 Adr’left vaut 15
 Adr’right vaut 0
 Adr’low vaut 0
 Adr’high vaut 15
15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 106
Les attributs
 Attributs d’un scalaire énuméré
• Soit T un scalaire énuméré
 T’pos(X) :Numéro de la position de x dans T
 T’val(N) :Valeur à la position N dans T
 T’leftof(x) :Valeur à la position à gauche de x dans T
 T’rightof(x) :Valeur à la position à droite de x dans T
Filière Génie Electrique

 T’prec(x) :Valeur à une position au dessous de x dans T


 T’succ(x) :Valeur à une position au dessus de x dans T
 Exemple :

Type valeur_bus is (‘U’,’0’,’1’,’Z’);

Valeur_bus’pos(‘1’)vaut 2
Valeur_bus’val(0) vaut ‘U’
Valeur_bus’rightof(‘1’) vaut ‘Z’
Valeur_bus’leftof(‘1’) vaut ‘0’
Valeur_bus’succ(2) vaut ‘Z’
Valeur_bus’prec(2) vaut ‘0’

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 107


Les attributs des signaux

s’delayed(t) copie du signal s retardé de t


s’stable(t) signal booléen vrai si s est stable depuis t
s’event valeur booléenne vraie si s a changé dans le cycle courant
s’last_event valeur de type time indiquant la durée depuis la dernière
Filière Génie Electrique

variation de s
s’last_value valeur précédente de s
s’quiet(t) signal booléen vrai s’il n’y a pas eu de transaction sur s depuis t
s’active valeur booléenne s’il y a eu une transaction sur s dans le cycle
courant
s’last_active durée depuis la dernière transaction sur s
s’transaction signal de type bit qui change à chaque transaction sur s

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 108


Structure du testbenc

Sorties observées
Testbench
Générateurs
Design Under
de Test (DUT)
Filière Génie Electrique

stimuli

 Un testbench applique des stimuli sur les entrées du DUT (Design Under Test)
et récupère la valeur des sorties pour validation
 Les résultats sont visualisés sous forme de chronogrammes ou dans un fichier.
 Comme le testbench est écrit en VHDL, il est très portable et ne dépend pas
de l’outil de simulation (portabilité)
 Le même testbench peut être utilisé pour tester le fonctionnement d’un
module ayant plusieurs architectures

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 109


Structure du testbenc
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 110


Structure du testbenc
ENTITY tb IS
--L’entité TB ne possède pas de port
END tb;

ARCHITECTURE arch_tb OF tb IS

--Signaux locaux et constantes


Filière Génie Electrique

COMPONENT TestComp – Déclaration du composant à tester


PORT ( );
END COMPONENT;
-----------------------------------------------------
BEGIN
DUT:TestComp PORT MAP( -- Instanciation du DUT
);

testSequence: PROCESS
-- Stimuli d’entrée
END PROCESS;

END arch_tb;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 111


Testbench pour le XOR3
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY xor3_tb IS
END xor3_tb;

ARCHITECTURE xor3_tb_architecture OF xor3_tb IS


-- Component declaration of the tested unit
COMPONENT xor3
Filière Génie Electrique

PORT(
A : IN STD_LOGIC;
B : IN STD_LOGIC;
C : IN STD_LOGIC;
Result : OUT STD_LOGIC );
END COMPONENT;

-- Stimulus signals - signals mapped to the ports of tested entity


SIGNAL test_vector: STD_LOGIC_VECTOR(2 DOWNTO 0);
SIGNAL test_result : STD_LOGIC;
BEGIN
DUT : xor3
PORT MAP (
A => test_vector(0),
B => test_vector(1),
C => test_vector(2),
Result => test_result);
);

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 112


Testbench pour le XOR3 (suite)
Testing: PROCESS
BEGIN
test_vector <= "000";
WAIT FOR 10 ns;
test_vector <= "001";
WAIT FOR 10 ns;
test_vector <= "010";
WAIT FOR 10 ns;
Filière Génie Electrique

test_vector <= "011";


WAIT FOR 10 ns;
test_vector <= "100";
WAIT FOR 10 ns;
test_vector <= "101";
WAIT FOR 10 ns;
test_vector <= "110";
WAIT FOR 10 ns;
test_vector <= "111";
WAIT FOR 10 ns;
END PROCESS;
END xor3_tb_architecture;

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 113


Testbench pour le Hald-Adder
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 114


Testbench pour le Hald-Adder
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 115


Testbench pour le Hald-Adder
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 116


Full-Adder
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 117


Testbench pour le Full-Adder
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 118


Testbench (suite) pour le Full-Adder
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 119


Diviseur de fréquence
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 120


Testbench pour le Diviseur de fréquence
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 121


Testbench (suite) pour le Diviseur de fréquence
Filière Génie Electrique

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 122


Partie 2 : State machines
Filière Génie Electrique

State Machines

15/10/2010 ECOLE NATIONALE DES SCIENCES APPLIQUEES 123

Vous aimerez peut-être aussi