Beruflich Dokumente
Kultur Dokumente
Tanguy Risset
à Partir du cours de l’ENST http://comelec.enst.fr/hdl
- p. 1/54
Plan
■ 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
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
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
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
Simulation en VHDL
◆ Calcul sur des flots de données
Synthèse de VHDL
◆ Circuits multi-horloge
◆ Paradigme synchrone
◆ Circuits assynchrone
- 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
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
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
- p. 14/54
Structure du langage
- 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é
- p. 17/54
L’architecture
- 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
Simulation en VHDL
Synthèse de VHDL
- p. 20/54
Types
- p. 21/54
Type entier
Exemples 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
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
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;
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
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
- 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
- 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
Le langage VHDL
Exemples VHDL
Simulation en VHDL
Synthèse de VHDL
- p. 38/54
Conception en VHDL
● 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
- 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
Le langage VHDL
Exemples 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
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
- p. 48/54
Le temps symbolique ∆
Synthèse de VHDL
- p. 49/54
Signal et variable
- 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
- p. 52/54
Rappel d’éléctronique
Le langage VHDL
Exemples VHDL
- p. 53/54
Compilation de Vhdl
- p. 54/54