Sie sind auf Seite 1von 54

Introduction à VHDL

Tanguy Risset
à Partir du cours de l’ENST http://comelec.enst.fr/hdl

- p. 1/54
Plan

Rappel d’éléctronique ■ Rappel d’électronique


Le langage VHDL
■ Introduction à VHDL
Exemples VHDL
◆ Historique
Conception de circuits en VHDL
◆ Structure du langage
Simulation en VHDL
◆ Types, expressions.
Synthèse de VHDL
◆ Exemples

■ Codage en VHDL
◆ Automate
◆ Règles d’écriture

■ Simulation VHDL

- p. 2/54
Le transistor

Rappel d’éléctronique
● Le transistor
■ Composant électronique de base
● Portes élémentaires
● Conception de circuits
■ Portes logiques ON/OFF
combinatoires
● Logique séquentielle Oxyde Drain
● Composants séquentiels

11
00
fréquents
● Conception de circuits
séquentiels
00
11
Le langage VHDL
00
11
Grille Canal
Exemples VHDL
semi−conducteur
11
00
Conception de circuits en VHDL
00
11
Simulation en VHDL

Synthèse de VHDL
Métal Source

- p. 3/54
Technologie CMOS

Rappel d’éléctronique ■ Complementary Metal Oxide source source


● Le transistor
● Portes élémentaires Semiconductor grille grille g=0
g=1
● Conception de circuits
combinatoires
● Logique séquentielle
■ Niveaux logiques : 0 = 0V et 1 = 3V drain drain
● Composants séquentiels
fréquents ■ Deux types de portes pMOS
● Conception de circuits mMOS
séquentiels ◆ nMOS : conducteur si la grille=1 1
Le langage VHDL ◆ pMOS : conducteur si la grille=0 x y
1
(xy)
Exemples VHDL
■ Réalisation de quelques portes de x
x x
Conception de circuits en VHDL
base y
Simulation en VHDL
Inverseur, NAND, NOR 0 0
Synthèse de VHDL
Inverseur porte NAND
1
x

y
(x+y)
x y
0
porte NOR

- p. 4/54
Portes élémentaires

Rappel d’éléctronique
● Le transistor
x F x F x F x F
● Portes élémentaires
● Conception de circuits 0 0 0 1
combinatoires
● Logique séquentielle Amplificateur: Inverseur:
● Composants séquentiels 1 1 F =x 1 0
fréquents F =x
● Conception de circuits
séquentiels

Le langage VHDL x y F x y F
x x
Exemples VHDL
F 0 0 0 F 0 0 1
Conception de circuits en VHDL y
y 0 1 0 0 1 1
Simulation en VHDL NON ET:
ET: F = x y 1 0 0 1 0 1
Synthèse de VHDL F = (x y)
1 1 1 1 1 0

- p. 5/54
Conception de circuits combinatoires

Rappel d’éléctronique
● Le transistor
1. Description du problème:
● Portes élémentaires
● Conception de circuits
y vaut 1 si a vaut 1 ou b et c entrées sorties

combinatoires
● Logique séquentielle
valent 1. a b c y z
0 0 0 0 0
● Composants séquentiels
fréquents
z vaut 1 si b ou c valent 1 (mais 0 0 1 0 1
● Conception de circuits
séquentiels
pas les deux) ou si a, b et c valent 1. 0 1 0 0 1
0 1 1 1 0
Le langage VHDL 2. Table de vérité → 1 0 0 1 0
Exemples VHDL 3. Équations logiques 1 0 1 1 1
1 1 0 1 1
Conception de circuits en VHDL y = abc + abc + abc + abc + abc 1 1 1 1 1
Simulation en VHDL
z = abc + abc + abc + abc + abc a

b
y

Synthèse de VHDL
4. Equations optimisées
y = a + bc z

z = ab + bc + bc
5. Portes logiques →

- p. 6/54
Composants combinatoires fréquents

Rappel d’éléctronique
● Le transistor
■ Multiplexeur à n entrées
● Portes élémentaires
● Conception de circuits
■ Décodeur log(n) → n
combinatoires
● Logique séquentielle ■ Additionneur n bits
● Composants séquentiels
fréquents
● Conception de circuits
■ Comparateur n bits
séquentiels
■ ALU n bits
Le langage VHDL

Exemples VHDL
■ etc.
Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 7/54
Logique séquentielle

Rappel d’éléctronique
● Le transistor
■ Bascule RS: lorsque R et S passe à 0, Q et Q conservent
● Portes élémentaires
● Conception de circuits
leur valeur antérieure.
R
combinatoires Q
● Logique séquentielle S R Q Q
● Composants séquentiels
0 1 0 1
fréquents
● Conception de circuits 1 1 interdit interdit
séquentiels Q 1 0 1 0
S
Le langage VHDL 0 0 Qn−1 Qn−1
Bascule RS
Exemples VHDL

Conception de circuits en VHDL


■ Bascule D: permet d’échantillonner la valeur de la donnée
Simulation en VHDL
lorsque l’horloge passe à 1 (front montant de l’horloge) et de
Synthèse de VHDL
conserver cette valeur lorsque l’horloge passe à 0.
Horloge 1
0
0
1 Valeur
1
0

Valeur
Donnée 1
0
11
00

- p. 8/54
Composants séquentiels fréquents

Rappel d’éléctronique
● Le transistor
■ Registre n bits (avec reset et eventuellement
● Portes élémentaires
● Conception de circuits
load/ClockEnable)
combinatoires
● Logique séquentielle
■ Registre à décalage n bits
● Composants séquentiels
fréquents ■ Compteur n bits
● Conception de circuits
séquentiels
■ Machine à états
Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 9/54
Conception de circuits séquentiels

Rappel d’éléctronique
● Le transistor
■ Extrêmement complexe en général.
● Portes élémentaires
● Conception de circuits
■ De nombreux modèles de calculs:
combinatoires
● Logique séquentielle
◆ Séquentiel
● Composants séquentiels
fréquents
Machine à états
● Conception de circuits
séquentiels
Contrôleur + chemin de données
Le langage VHDL
◆ Parallélisme de tâches

Exemples VHDL Processus communicants


Conception de circuits en VHDL
◆ Parallélisme de données

Simulation en VHDL
◆ Calcul sur des flots de données

Synthèse de VHDL
◆ Circuits multi-horloge
◆ Paradigme synchrone
◆ Circuits assynchrone

■ Notion sous-jacente très utilisée: automate à états finit

- p. 10/54
Rappel d’éléctronique

Le langage VHDL
● Le langage VHDL
● Intro
● historique
● Syntaxe
● langage
● librairies
Le langage VHDL
● entité
● Architecture
● Signal et Variable
● Types
● Operateurs
● Process

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 11/54
Qu’est ce que VHDL?

Rappel d’éléctronique ■ VHSIC (Very High Speed Integrated Circuit) Hardware Description
Le langage VHDL
● Le langage VHDL
Langage.
● Intro
● historique
■ Langage pour décrire la structure et le comportement de systèmes
● Syntaxe
● langage électroniques, en particulier des circuits digitaux (ASIC, FPGA, . . . ).
● librairies
● entité ■ Standard IEEE.
● Architecture
● Signal et Variable
● Types
■ Indépendant de la technologie cible.
● Operateurs
● Process ■ Indépendant de la méthodologie de conception.
Exemples VHDL
■ Indépendant des outils de conception.
Conception de circuits en VHDL
■ Langage très général → très complexe (→ dépendent de tout!)
Simulation en VHDL

Synthèse de VHDL
■ VHDL n’est pas un langage de programmation
c’est un langage de description (specification) de système.

- p. 12/54
Historique

Rappel d’éléctronique ■ 1980: le département de défense américain lance un appel d’offre


Le langage VHDL
● Le langage VHDL
pour un langage qui permettrait de décrire tous les systèmes
● Intro
● historique
électroniques utilisés. Motivation affichée: réutilisabilité et réduction
● Syntaxe
● langage
des coûts de conception.
● librairies
● entité ■ 1983 trois compagnies (Intermetics, IBM, Texas Instruments)
● Architecture
● Signal et Variable commencent le développement.
● Types
● Operateurs ■ 1985: première version officielle de VHDL (version 7.2).
● Process

Exemples VHDL
■ 1986: VHDL est donné à IEEE pour en faire un standard.
Conception de circuits en VHDL ■ 1987: Standard IEEE 1076-1987.
Simulation en VHDL
■ 1993: Standard IEEE 1076-1993.
Synthèse de VHDL
■ 1999: Standard IEEE 1076.6-1999 (Register Transfer Level (RTL)
Synthesis)

- p. 13/54
Convention lexicale

Rappel d’éléctronique ■ Comme en C, un code vhdl est composé d’une suite


Le langage VHDL
● Le langage VHDL
d’éléments :
● Intro ◆ commentaires
● historique
● Syntaxe ◆ délimiteurs
● langage
● librairies ◆ identificateurs,
● entité
● Architecture
◆ expressions (terminées par un point-virgule),
● Signal et Variable
◆ mots-clefs
● Types
● Operateurs ◆ littéraux(constantes), par exemple:
● Process
■ 67 est un entier
Exemples VHDL
■ ’0’ est un bit
Conception de circuits en VHDL
■ "001", O"562", X"FF1" sont vecteurs de bits
Simulation en VHDL
■ "chaine" est une chaine de caractères
Synthèse de VHDL

■ VHDL est insensible à la casse. On écrit souvent les mots


réservé du langage en majuscule, le reste en minuscule.
■ Les commentaires commencent par deux tirets (- -)

- p. 14/54
Structure du langage

Rappel d’éléctronique ■ Il existe "5 unités de compilation" permettant de décrire des


Le langage VHDL
● Le langage VHDL
composants.
● Intro ◆ L’entité: description de l’interface du composant: le nom et
● historique
● Syntaxe ses ports d’entrée/sortie
● langage
● librairies ◆ L’architecture décrit l’intérieur du composant. Il peut y avoir
● entité
● Architecture plusieurs architectures pour le même composant (ex: une
● Signal et Variable
● Types
pour la simulation efficace, une pour la synthèse).
● Operateurs
● Process
L’architecture contient les processus.
◆ La déclaration de paquetage. Un paquetage est une
Exemples VHDL

Conception de circuits en VHDL


collection d’objets réutilisables (constantes, types,
Simulation en VHDL
composants, procédures)
◆ Le corps de paquetage
Synthèse de VHDL
◆ La configuration indiquant quelle architecture utiliser pour
chaque entité

- p. 15/54
Bibliothèques

Rappel d’éléctronique ■ Les bibliothèques sont déclarée avec le mot clé library,
Le langage VHDL
● Le langage VHDL
elle dépendent des outils utilisés.
● Intro
● historique
■ Elle contiennent des paquetages que l’on déclare vouloir
● Syntaxe
● langage
utiliser avec le mot clé use:
● librairies
● entité
use BIBLIOTHEQUE.PAQUETAGE.all;
● Architecture
● Signal et Variable
■ La bibliothèque par défaut est WORK. WORK est aussi le nom
● Types
● Operateurs
symbolique de la bibliothèque dans laquelle sont stockés les
● Process résultats.
Exemples VHDL
■ La bibliothèque STD est une bibliothèque standard fournie
Conception de circuits en VHDL
avec le langage , elle contient des définitions des types et
Simulation en VHDL
des fonctions de base (integer, bit,...).
Synthèse de VHDL
■ Par défaut, les outils considère que l’on utilise les
bibliothèques STD et WORK, il y a donc implicitement:
library STD;
library WORK;
■ En général, on utilise la librairie suivante IEEE qui définit le
type std_logic:
- p. 16/54
library ieee;
L’entité

Rappel d’éléctronique ■ L’entité est la description de l’interface du circuit . Elle


Le langage VHDL
● Le langage VHDL
correspond au symbole dans les représentations
● Intro schématiques.
● historique
A
● Syntaxe
● langage B FA S
● librairies
● entité CIn COut
● Architecture
● Signal et Variable
● Types library ieee;
● Operateurs
● Process use ieee.std_logic_1164.all;
Exemples VHDL

Conception de circuits en VHDL ENTITY FA IS


Simulation en VHDL port(A, B, Cin: in STD_LOGIC;
Synthèse de VHDL S, COut: out STD_LOGIC);
END ENTITY FA;

- p. 17/54
L’architecture

Rappel d’éléctronique ■ L’architecture est la description interne du circuit.


Le langage VHDL
● Le langage VHDL ■ Elle est toujours associée à une entité, une entité peut avoir
● Intro
● historique plusieurs architectures:
● Syntaxe
● langage architecture arch1 of fa is
● librairies
● entité signal resultat :
● Architecture
● Signal et Variable STD_LOGIC_VECTOR(1 downto 0);
● Types
● Operateurs begin architecture arch2 of fa is
● Process
begin
Exemples VHDL

Conception de circuits en VHDL


resultat <= (’0’ & a) +
(’0’ & b) + (’0’ & cin); s <= a xor b xor cin;
Simulation en VHDL

s <= resultat(0); cout <= (a and b) or


Synthèse de VHDL

cout <= resultat(1); ((a xor b) and cin);

end arch1; end arch2;


(& est l’opérateur de concaténation de vecteurs de bit)

- p. 18/54
Corps de l’architecture

Rappel d’éléctronique
begin
Le langage VHDL
■ Dans le corps de l’architecture se -- process:
● Le langage VHDL
● Intro
● historique
trouvent les 3 types d’instructions p1 : process(SI, Cin)
● Syntaxe
● langage
concurrentes de VHDL begin
● librairies
● entité ■ Elles peuvent être écrites dans S <= SI xor Cin;
● Architecture
● Signal et Variable n’importe quel ordre : end process;
● Types
● Operateurs ◆ Des processus avec le mot clé
● Process
process -- Aff. Signal
Exemples VHDL
◆ Des instructions concurrentes SI <= A xor B;
Conception de circuits en VHDL

Simulation en VHDL
d’affectation de signaux (<=).
Synthèse de VHDL
◆ A <= B ne se lit pas “A reçoit -- Instanciation
B” mais correspond à une inst_MAJ : MAJ port map (
connexion permanente du X => A,
signal B vers le signal A. Y => B,
◆ Des instanciations de Z => Cin,
composant avec le mot clé M => Cout);
port map end arch3; - p. 19/54
Signal et Variable

Rappel d’éléctronique ■ Dans un process, on peut trouver des affectations de


Le langage VHDL
● Le langage VHDL
signaux ou de variables.
● Intro
● historique
■ Contrairement aux variables, l’affectation du signal n’a pas
● Syntaxe
● langage
un effet immédiat.
● librairies
● entité
■ Ainsi, dans un process, après cinq instructions A <= A+1;,
● Architecture
● Signal et Variable
le signal A n’est pas augmenté de 5 mais seulement de 1.
● Types
● Operateurs
■ Il faut lire A.futur <= A.présent +1; de sorte que
● Process
A.présent n’est jamais modifié.
Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 20/54
Types

Rappel d’éléctronique ■ Il existe des types:


Le langage VHDL ◆ scalaire (entier, réel, physique, énuméré),
● Le langage VHDL
● Intro ◆ composite (tableaux, enregistrement),
● historique
● Syntaxe ◆ fichier et pointeur.
● langage
● librairies
● entité
■ Les types possède des attribut de type, Ils sont représentés
● Architecture de cette façon < OBJET >′ < AT T RIBU T >
● Signal et Variable
● Types
● Operateurs
■ Par exemple:
● Process ◆ type COULEUR is (BLEU, ROUGE, VERT);
Exemples VHDL ◆ COULEUR’left renvoie BLEU
Conception de circuits en VHDL ◆ COULEUR’right renvoie VERT
Simulation en VHDL ◆ COULEUR’pos(BLEU) renvoie 0
Synthèse de VHDL
■ Autre exemple:
◆ type MOT is STD_LOGIC_VECTOR(7 downto 0);
◆ MOT’LEFT renvoie 7;
◆ MOT’LENGTH renvoie 8; MOT’RIGHT renvoie 0;

- p. 21/54
Type entier

Rappel d’éléctronique ■ Types entier:


Le langage VHDL ◆ Le type entier integer prédéfini dans le paquetage
● Le langage VHDL
● Intro standard STD permet de définir des nombres signés sur
● historique
● Syntaxe 32 bits entre −231 et 231 .
● langage
● librairies ◆ En général, on spécifie le range d’un entier pour qu’il soit
● entité
● Architecture stocké sur un nombre de bit adéquat:
● Signal et Variable
● Types
signal my_natural is integer range 0 to 256
● Operateurs
● Process

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 22/54
Operateurs

Rappel d’éléctronique
Logiques and, or, nand,
Le langage VHDL
● Le langage VHDL nor, xor, not
● Intro
● historique Relationnels =, /=, < , <=,
● Syntaxe
● langage > , <=
● librairies
● entité
● Architecture
Arithmétique *, / , mod, (A rem B) a le signe
● Signal et Variable rem de A (A mod B) a le
● Types
● Operateurs signe de B
● Process

Exemples VHDL
Divers **, abs, & ** : exponentiation
Conception de circuits en VHDL
abs : valeur ab-
Simulation en VHDL
solue & : concaté-
nation
Synthèse de VHDL

- p. 23/54
Process

Rappel d’éléctronique ■ Les différents process d’un programme vhdl s’exécutent en


Le langage VHDL
● Le langage VHDL
parallèle les uns des autres.
● Intro
● historique
■ Un processus peut avoir des variables locales. Le fonctionnement
● Syntaxe
● langage du processus est régi par les règles suivantes :
● librairies
● entité ◆ Un processus est une boucle infinie , lorsqu’il arrive à la fin du
● Architecture
● Signal et Variable code, il reprend automatiquement au début
● Types
● Operateurs ◆ il existe deux méthode pour synchroniser les processus :
● Process
■ Le processus est associé à une "liste de sensibilité" qui
Exemples VHDL
réveille le processus lors d’un changement d’un des signaux.
Conception de circuits en VHDL
■ Le processus a des instructions d’arrêt wait dans sa
Simulation en VHDL

Synthèse de VHDL
description interne.
■ Les variables sont internes au processus et sont affectées
immédiatement, contrairement aux signaux qui eux ne sont pas
affectés directement mais en fin de processus
■ Un processus est séquentiel dans le sens ou les instructions sont
évaluées l’une après l’autre dans l’ordre d’écriture.
- p. 24/54
Rappel d’éléctronique

Le langage VHDL

Exemples VHDL
● Exemples VHDL
● AND3
● Full Adder
● test bench Exemples VHDL
● Waveform
● Adder4
● Registre
● Double Reg

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 25/54
AND3

Rappel d’éléctronique
entity AND_3 is
Le langage VHDL
port (
Exemples VHDL e1 : in bit;
● Exemples VHDL
● AND3
e2 : in bit;
● Full Adder e3 : in bit;
● test bench s : out bit
● Waveform
● Adder4
);
● Registre end entity
● Double Reg
architecture ARCH of AND_3 is
Conception de circuits en VHDL
begin -- ARCH
Simulation en VHDL

Synthèse de VHDL
s <= e1 and e2 and e3;
end ARCH

- p. 26/54
Full Adder

Rappel d’éléctronique
library IEEE;
Le langage VHDL
use IEEE.std_logic_1164.all;
Exemples VHDL
● Exemples VHDL use IEEE.numeric_std.all
● AND3
● Full Adder
● test bench
● Waveform
entity full_add1 is
● Adder4 port (
● Registre
● Double Reg a, b, cin : in std_logic;
Conception de circuits en VHDL s, cout : out std_logic;
Simulation en VHDL );
Synthèse de VHDL end entity;

architecture ARCH of full_add1 is


signal resultat : unsigned (1 downto 0);
begin

result <= (’0’ & a) + (’0’ & b) + (’0’ & c);


s <= resultat(0);
cout <= resultat(1);
- p. 27/54
Notion de Test Bench

Rappel d’éléctronique ■ Un test bench est un module VHDL comme un autre, mais
Le langage VHDL
qui n’a ni entrées ni sorties, il est autonome.
Exemples VHDL
● Exemples VHDL
■ Il sert à tester le comportement d’un autre module.
● AND3
● Full Adder ■ Il produit lui même les signaux à envoyer au circuit à tester
● test bench
● Waveform et vérifie que les sorties du circuit sont correctes.
● Adder4
● Registre
● Double Reg Test Bench
Conception de circuits en VHDL

Simulation en VHDL
a s
Synthèse de VHDL

b full_add1 cout

cin

- p. 28/54
test bench du Full Adder

Rappel d’éléctronique
[libraries...]
Le langage VHDL entity full_add1_tb is
Exemples VHDL
end entity;
● Exemples VHDL
● AND3
architecture BEH of full_add1_tb is
● Full Adder
● test bench
signal w_a, w_b, w_cin, w_s, w_cout : std_logic;
● Waveform
● Adder4
component full_add1 is
● Registre port (a, b, cin : in std_logic;
● Double Reg s, cout : out std_logic);
Conception de circuits en VHDL
end component;
Simulation en VHDL
begin
Synthèse de VHDL dut : full_add1 port map(
a => w_a,
b => w_b,
cin => w_cin,
s => w_s,
cout => w_cout
)
[... a suivre]

- p. 29/54
test bench du Full Adder (suite)

Rappel d’éléctronique
begin
Le langage VHDL w_a <= ’0’;
Exemples VHDL
w_b <= ’0’;
● Exemples VHDL w_cin <= ’0’;
● AND3 wait for 5 ns;
● Full Adder
● test bench
w_a <= ’1’;
● Waveform w_b <= ’0’;
● Adder4 w_cin <= ’0’;
● Registre
● Double Reg
wait for 5 ns;
w_a <= ’1’;
Conception de circuits en VHDL w_b <= ’1’;
Simulation en VHDL
w_cin <= ’0’;
wait for 5 ns;
Synthèse de VHDL w_a <= ’1’;
w_b <= ’1’;
w_cin <= ’1’;
end process;
end BEH;

- p. 30/54
Debuggage VHDL

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL
● Exemples VHDL
● AND3
● Full Adder
● test bench
● Waveform
● Adder4
● Registre
● Double Reg

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 31/54
Additionneur 4 bits

Rappel d’éléctronique
[..librairies ..]
Le langage VHDL entity adder4 is
Exemples VHDL
port (
● Exemples VHDL a, b : in unsigned(3 downto 0);
● AND3 s : out unsigned(3 downto 0);
● Full Adder
● test bench
cout : out std_logic
● Waveform );
● Adder4 end entity;
● Registre
● Double Reg
architecture ARCH of adder4 is
Conception de circuits en VHDL signal c : unsigned (2 downto 0);
Component full_add1 is
Simulation en VHDL
port (
Synthèse de VHDL a, b, cin : in std_logic;
s, cout : out std_logic
);
end entity;
[... a suivre]

- p. 32/54
Additionneur 4 bits

Rappel d’éléctronique
[... suite et fin ...]
Le langage VHDL architecture ARCH of adder4 is
Exemples VHDL
● Exemples VHDL
Component full_add1 is
● AND3 port (
● Full Adder a, b, cin : in std_logic;
● test bench
● Waveform
s, cout : out std_logic
● Adder4 );
● Registre end component;
● Double Reg

Conception de circuits en VHDL signal c : unsigned (2 downto 0);


Simulation en VHDL begin
Synthèse de VHDL inst_FA_1 : full_add1 port map(a(0),b(0),’0’,s(0),c(0));
inst_FA_2 : full_add1 port map(a(1),b(1),c(0),s(1),c(1));
inst_FA_3 : full_add1 port map(a(2),b(2),c(1),s(2),c(2));
inst_FA_4 : full_add1 port map(a(3),b(3),c(2),s(3),cout);
end ARCH;

- p. 33/54
utilisation du GENERATE

Rappel d’éléctronique
[... corps du composant ...]
Le langage VHDL

Exemples VHDL
signal r_c,r_cout : unsigned (3 downto 0);
● Exemples VHDL
● AND3 begin
● Full Adder
● test bench r_c(0) <= ’0’;
● Waveform
● Adder4
cout <= r_cout(3);
● Registre
● Double Reg retenue: for i in 1 to 3 generate
r_c(i) <= r_cout(i-1);
Conception de circuits en VHDL
end generate;
Simulation en VHDL
chain: for i in 0 to 3 generate
Synthèse de VHDL
one_add : full_add1
port map (
a => a(i),
b => b(i),
cin => r_c(i),
s => s(i),
cout => r_cout(i)
);
end generate;
end ARCH;
- p. 34/54
un registre

Rappel d’éléctronique ■ Un registre avec clock enable.


Le langage VHDL
■ Le processus est réveillé lors d’une transition sur Ck
Exemples VHDL
● Exemples VHDL ■ Les If internes permettent d’exprimer la condition: front
● AND3
● Full Adder montant de l’horloge avec CE à 1.
● test bench Ck
CE
● Waveform
● Adder4
● Registre PROCESS(ck) COut
● Double Reg
BEGIN CIn

Conception de circuits en VHDL


IF (ck = ’1’ AND ck’EVENT)
THEN
Simulation en VHDL IF CE=’1’ THEN Out <= In;
END IF;
Synthèse de VHDL END IF;
END PROCESS;

- p. 35/54
Exemple: double registre (declaration)

Rappel d’éléctronique
library IEEE;
Le langage VHDL use IEEE.std_logic_1164.all;
Exemples VHDL ENTITY DOUBLE_REG IS
● Exemples VHDL port(CIn, Ck, CE: IN STD_LOGIC;
● AND3
● Full Adder
COut: out STD_LOGIC); Ck

● test bench
END ENTITY DOUBLE_REG; CE

● Waveform
● Adder4
ARCHITECTURE behavioural OF DOUBLE_REG IS
● Registre -- Declaration de signaux du composant CIn Ctemp COut

● Double Reg
BEGIN
Conception de circuits en VHDL PROCESS(ck)
Variable CTemp: STD_LOGIC; Double_reg
Simulation en VHDL
-- Declaration de signaux
Synthèse de VHDL -- ou variables du process
BEGIN
IF (ck = ’1’ AND ck’EVENT)
THEN
IF CE=’1’ THEN
COut <= CTemp;
CTemp := CIn;
END IF;
END IF;
END PROCESS;
END behavioural;

- p. 36/54
Exemple: double registre (instanciation)

Rappel d’éléctronique
library IEEE;
Le langage VHDL use IEEE.std_logic_1164.all;
Exemples VHDL ENTITY QUATRE_REG IS
● Exemples VHDL port(CIn1, Ck, CE: IN STD_LOGIC;
● AND3
● Full Adder
COut1: out STD_LOGIC);
● test bench
END ENTITY QUATRE_REG; Ck
CE
● Waveform
● Adder4
ARCHITECTURE behavioural OF QUATRE_REG IS
● Registre Signal CTemp: STD_LOGIC;
● Double Reg COMPONENT DOUBLE_REG IS CIn1 Ctemp COut1

Conception de circuits en VHDL


port(CIn, Ck, CE: IN STD_LOGIC;
COut: out STD_LOGIC); Double_reg Double_reg

Simulation en VHDL END COMPONENT; Quatre_reg


Begin
Synthèse de VHDL
I0: DOUBLE_REG port map
(Cin => Cin1,
Ck => Ck,
CE => CE,
Cout => CTemp);
I1: DOUBLE_REG port map
(Cin => CTemp,
Ck => Ck,
CE => CE,
Cout => COut1);
END behavioural;
- p. 37/54
Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL


● Conception de circuits en
VHDL
● conception
Conception de circuits en VHDL
● methodologie
● Automate
● Synthèse de VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 38/54
Conception en VHDL

Rappel d’éléctronique ■ Le mécanisme du temps symbolique rend extrêmement


Le langage VHDL
délicat le débugage de VHDL
Exemples VHDL
■ 95% du temps de développement se fait en simulation.
Conception de circuits en VHDL
● Conception de circuits en ■ On utilise les waveforms qui ne permettent pas de voir les
VHDL SystemC.CLK
SystemC.CACHE_1_WORD.DATA

● conception
308 310 312 314 316 318

transitions de granularité ∆.
SystemC.CACHE_1_WORD.WRITEOK

SystemC.CLK
SystemC.CACHE_16_WORD.DATA 316 318 320 322 324 326 328 330 332 334 336 338 340 342

● methodologie SystemC.CACHE_16_WORD.WRITEOK

● Automate
● Synthèse de VHDL ■ VHDL permet énormément de constructions difficiles à
Simulation en VHDL comprendre (circuits asynchrones, simulation, synthèse,
Synthèse de VHDL etc...).
■ Aujourd’hui il existe des langages plus rapides pour la
simulation (SystemC, etc.), VHDL est donc essentiellement
utilisé pour la synthèse et la simulation bas niveau.
■ ⇒ Se contraindre fortement lors de l’écriture de programmes VHDL

- p. 39/54
Contraintes pour l’écriture de VHDL

Rappel d’éléctronique ■ Penser composant (objet) plutôt que fonctionnalité


Le langage VHDL
(procédure).
Exemples VHDL
■ Distinguer les éléments de mémorisation (mémoire, bancs
Conception de circuits en VHDL
● Conception de circuits en de registre) et les composants standards (opérations
VHDL
● conception arithmétiques, filtres numériques) pour prévoir l’utilisation de
● methodologie
● Automate bibliothèques.
● Synthèse de VHDL
■ Décomposer les composants sous forme d’automate à états
Simulation en VHDL
finis
Synthèse de VHDL
■ On peut alors soit coder directement l’automate en VHDL
soit décomposer à nouveau cet automate en un contrôleur et
un chemin de donnée
■ Pour les traitements hautement pipelinés (stream
processing), on utilisera plutôt une description des différents
étages de pipeline interconnectés.

- p. 40/54
Notion d’automate

Rappel d’éléctronique
inputs
Le langage VHDL ■ Un automate est
Exemples VHDL
systématiquement
Conception de circuits en VHDL
● Conception de circuits en
décomposé en:
VHDL
● conception ■ Un état (ensemble de
● methodologie
● Automate registre)
● Synthèse de VHDL
transition
■ Trois fonctions:
Simulation en VHDL
◆ Transition: sensible aux
Synthèse de VHDL
entrée et à l’état, met à jour mealy State
l’état.
◆ Moore: sensible à l’état,
met à jour des sorties moore
◆ Mealy: sensible aux entrée
et à l’état, met à jour des
sorties
outputs

- p. 41/54
Codage d’un automate en VHDL (exemple)

Rappel d’éléctronique
■ N’utiliser que des signaux // Registre d’état avec reset synchro
Le langage VHDL PROCESS(clk)
Exemples VHDL
(pas de variables). Que BEGIN
des types simples IF rising_edge(clk) THEN
Conception de circuits en VHDL IF reset = ’1’ THEN
● Conception de circuits en (STD_LOGIC_*), de state <= INIT;
VHDL
ELSE state <= state_next;
● conception
● methodologie
préférence non resolu. END IF;
● Automate
■ Décomposer le matériel END PROCESS;
● Synthèse de VHDL

en l’état (tous les éléments //Fonction de transition


Simulation en VHDL
PROCESS (state, input1, input2)
Synthèse de VHDL
mémorisés entre deux BEGIN
cycle d’horloge) et les CASE state IS
WHEN IDLE =>
autres signaux. IF i1 = ’1’
state_next <= WRITE;
■ Écrire un processus ELSE
state_next <= IDLE;
sensible à l’horloge qui END IF;
met à jour les registres WHEN READ =>
state_next <= IDLE;
d’état
WHEN OTHER =>
■ C’est la fonction de state_next <= IDLE;
END CASE;
transition de l’automate. [...]
- p. 42/54
Codage d’un automate en VHDL (suite)

Rappel d’éléctronique ■ Pour la fonction de Moore


Le langage VHDL
de l’automate (c’est
Exemples VHDL
similaire pour la fonction [...]
Conception de circuits en VHDL
● Conception de circuits en
de Mealy): Écrire un //Equation concurrente (data-flow)
VHDL
processus sensible à l’état S1 <= a + b * C;
● conception
S2 <= a - b;
● methodologie
qui calcule les sorties.
● Automate
● Synthèse de VHDL
// Fonction de Moore
■ La manière la plus propre: PROCESS (STATE)
Simulation en VHDL BEGIN
Décrire le data-path CASE state IS
Synthèse de VHDL
comme des affectations WHEN IDLE =>
out1 <= S1;
entre signaux en dehors out2 <= S2;
des processus (inférence WHEN READ =>
systématique du matériel out1 <= S1;
out2 <= S1;
pour le calcul sur les WHEN OTHER =>
out1 <= S2;
données) out2 <= S2;
Décrire l’affectation END CASE;
END;
des sorties comme une
simple affectation entre
signaux. - p. 43/54
Synthèse de VHDL

Rappel d’éléctronique ■ La plaie: l’inférence accidentelle de registres.


Le langage VHDL
■ dès qu’un signal n’est pas affecté dans tous les chemin de
Exemples VHDL
contrôle. PROCESS(S1,state)
Conception de circuits en VHDL
● Conception de circuits en PROCESS(S1,state) BEGIN
VHDL BEGIN IF state = ’INIT’ THEN
● conception Out1 <= S1;
IF state = ’INIT’ THEN
● methodologie
Out1 <= S1; ELSE
● Automate
END IF; Out1 <= ’0’;
● Synthèse de VHDL
END; END IF;
Simulation en VHDL END;

Synthèse de VHDL ⇒ Compter les registres


■ Boucle à contrôle constant acceptée (déroulées à la
compilation).
■ Clause Wait acceptée uniquement pour l’horloge.

■ En principe, il existe un standard IEEE pour le VHDL


synthétisable. En pratique, chaque outil synthetise des
sous-ensembles légèrement différents.
■ Principaux outils de synthèse pour les Asics: Mentor
Graphics, Synopsys, Cadence.
- p. 44/54
Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL
● Simulation en VHDL
Simulation en VHDL
● niveaux description VHDL
● Principe de la simulation
événementielle
● Le temps symbolique ∆
● Signal et variable
● Le temps physique
● Principe du moteur de
simulation

Synthèse de VHDL

- p. 45/54
niveaux description VHDL

Rappel d’éléctronique ■ Description structurelle.


Le langage VHDL ◆ Proche des schématiques traditionnelles des concepteurs
Exemples VHDL
◆ Blocs inter-connectés.
Conception de circuits en VHDL
■ Description comportementale.
Simulation en VHDL
● Simulation en VHDL ◆ Proche de la programmation traditionnelle
● niveaux description VHDL
● Principe de la simulation ◆ exécution séquentielle d’instructions
événementielle
● Le temps symbolique ∆
● Signal et variable ■ Cette classification ne correspond pas exactement à notre
● Le temps physique
● Principe du moteur de décomposition intuitive: description algorithmique/description
simulation

Synthèse de VHDL
architecturale

- p. 46/54
VHDL de niveau transfert de registre

Rappel d’éléctronique ■ Une description de niveau transfert de registre est une description
Le langage VHDL
de la structure du circuit, mais qui abstrait les opérateurs.
Exemples VHDL
■ On peut parler de “registre” (sans dire exactement quel type),
Conception de circuits en VHDL
d’additionneur, etc.
Simulation en VHDL
● Simulation en VHDL
● niveaux description VHDL
■ N’est pas forcément du VHDL structurel.
● Principe de la simulation
événementielle ■ Ce sous ensemble de VHDL doit pouvoir être synthétisé par les
● Le temps symbolique ∆
● Signal et variable outils commerciaux (Synopsis, Cadence, etc.) selon une
● Le temps physique
● Principe du moteur de
simulation
sémantique définie par le standard.
Synthèse de VHDL → C’est une plate forme solide pour la synthèse haut niveau.

- p. 47/54
Principe de la simulation événementielle

Rappel d’éléctronique ■ Le système est représenté comme un ensemble de


Le langage VHDL
processus (process) qui s’exécutent en parallèle
Exemples VHDL
■ On veut simuler des processus parallèles sur une machine
Conception de circuits en VHDL
séquentielle.
Simulation en VHDL
● Simulation en VHDL ■ Nouvel objet pour communiquer entre programmes
● niveaux description VHDL
● Principe de la simulation séquentiels: le signal
événementielle
● Le temps symbolique ∆
● Signal et variable
■ Moteur de simulation:
● Le temps physique ◆ Le simulateur exécute tous les processus dans un ordre
● Principe du moteur de
simulation quelconque.
Synthèse de VHDL ◆ Lorsqu’un signal partagé par plusieurs processus est
modifié, on enregistre sa nouvelle valeur, le signal
conservant temporairement sa valeur.
◆ Lorsque tous les processus ont été exécutés, on modifie
les valeurs des signaux partagés
◆ on incrément le temps symbolique (+1∆) et on
recommence jusqu’à convergence

- p. 48/54
Le temps symbolique ∆

Rappel d’éléctronique ■ Le temps symbolique permet d’ordonner des événements


Le langage VHDL
simultanés à partir de leurs dépendances.
Exemples VHDL
■ Une affectation à un signal: Sig1 <= Sig2 est instantanée
Conception de circuits en VHDL
mais la valeur de Sig1 est modifiée après 1 ∆
Simulation en VHDL
● Simulation en VHDL ■ Un "événement" possède donc une date complète
● niveaux description VHDL
● Principe de la simulation composée d’une date physique (ex: 1h 04m 17s) et d’une
événementielle
● Le temps symbolique ∆ date symbolique (ex: 4∆)
● Signal et variable
● Le temps physique
● Principe du moteur de
simulation

Synthèse de VHDL

- p. 49/54
Signal et variable

Rappel d’éléctronique ■ Du fait de sa sémantique spécifique, le signal se comporte


Le langage VHDL
très différemment d’une variable
Exemples VHDL
■ On peut en avoir une vision intuitive comme representant la
Conception de circuits en VHDL
"valeur d’un fil physique au cours du temps"
Simulation en VHDL
● Simulation en VHDL ■ Pour qu’un signal conserve une valeur d’un cycle à un autre
● niveaux description VHDL
● Principe de la simulation il faut mettre en place explicitement un mécanisme de
événementielle
● Le temps symbolique ∆ mémorisation qui sera interprété comme un registre.
● Signal et variable
● Le temps physique
● Principe du moteur de
■ Pour faciliter la simulation on peut aussi introduire des
simulation variables dans les processus.
Synthèse de VHDL
■ Les variables sont locales aux processus, leur affectation est
instantanée, elles conservent leur valeur au cours du temps
comme dans un langage de programmation
Sig1 <= Sig2 ; V ar1 := V ar2 ;
Sig3 <= 3; V ar3 := 3;

- p. 50/54
Le temps physique

Rappel d’éléctronique
process ...
Le langage VHDL ■ Le temps physique permet de ...
Exemples VHDL simuler l’écoulement du temps begin
Conception de circuits en VHDL réel S <= A+B;
Simulation en VHDL ■ Il ne peut avancer qu’avec les
● Simulation en VHDL
instruction wait et after wait on A;
● niveaux description VHDL
● Principe de la simulation (points de synchronisation, point R:=S;
événementielle
● Le temps symbolique ∆
d’arrêt): A<= R;
● Signal et variable wait 10 ns
Sig1 <= 25 after 100 s
● Le temps physique B<= A;
● Principe du moteur de
wait until rising_edge(Clk)
simulation
wait until rising_edge(Clk);
Synthèse de VHDL ■ Entre deux points de if (R > 1023) then
synchronisation, le temps Counter <= 127
physique n’avance pas else
(l’affectation des signaux est
COUNTER <=Counter-1;
différée).
end if;
■ Le processus est (implicitement)
wait until rising_edge(Clk);
une boucle infinie avec au moins
ISO <=COUNTER * 7
un point d’arrêt.
end process; - p. 51/54
Principe du moteur de simulation

Rappel d’éléctronique ■ Chaque processus possède une liste de sensibilité qui


Le langage VHDL
indique si il doit être "réveillé" ou pas.
Exemples VHDL
Changement d’une valeur d’un signal utilisé
Conception de circuits en VHDL Changement du temps physique
Simulation en VHDL
● Simulation en VHDL
■ Le moteur effectue de manière répétitive les tâches
● niveaux description VHDL
● Principe de la simulation
suivantes:
événementielle
● Le temps symbolique ∆
1. Choisit la date courante
● Signal et variable
● Le temps physique 2. Positionne les signaux à leurs nouvelles valeurs
● Principe du moteur de
simulation 3. Pour chaque processus
Synthèse de VHDL
teste la condition de reprise du point d’arrêt
Si elle est vérifiée, le processus est réveillé et
exécuté jusqu’au prochain point d’arret

- p. 52/54
Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL Synthèse de VHDL


Synthèse de VHDL
● Synthèse de VHDL
● Compilation de Vhdl

- p. 53/54
Compilation de Vhdl

Rappel d’éléctronique ■ Pour être simulé, un programme VHDL est


Le langage VHDL ◆ Compilé
Exemples VHDL
◆ "Élaboré" (≃édition de liens). Lors de l’élaboration les
Conception de circuits en VHDL
opérations élémentaires utilisées sont implémentées par
Simulation en VHDL
des librairies fournies par l’outil de simulation, leur
Synthèse de VHDL
● Synthèse de VHDL
implémentation peut poser problème.
● Compilation de Vhdl ◆ Simulé. Pour cela il nécessite un "test bench" qui fournit
les entrées et l’horloge au composant simulé (stimuli).
■ Si il est écrit de manière synthétisable, il peut être:
◆ synthétisé (synthèse logique)
◆ simulé après synthèse
◆ placé (placement-routage)
◆ simulé après placement routage.

■ Une description destinée à la simulation efficace d’un circuit


est très différente d’une description destinée à la réalisation.
VHDL synthétisable propose un compromis entre les deux.

- p. 54/54

Das könnte Ihnen auch gefallen