Académique Documents
Professionnel Documents
Culture Documents
Tanguy Risset
à Partir du cours de l’ENST http://comelec.enst.fr/hdl
- p. 1/44
Plan
■ Codage en VHDL
◆ Automate
◆ Règles d’écriture
■ Simulation VHDL
- p. 2/44
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/44
Technologie CMOS
y
(x+y)
x y
0
porte NOR
- p. 4/44
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/44
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/44
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/44
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/44
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/44
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/44
Qu’est ce que VHDL?
Rappel d’éléctronique ■ VHSIC (Very High Speed Integrated Circuit) Hardware Description
Le langage VHDL
● Intro
Langage.
● historique
● Syntaxe
■ Langage pour décrire la structure et le comportement de systèmes
● langage
● librairies électroniques, en particulier des circuits digitaux (ASIC, FPGA, . . . ).
● entité
● Architecture ■ Standard IEEE.
● Signal et Variable
● Types
● Operateurs
■ Indépendant de la technologie cible.
● Process
■ Indépendant de la méthodologie de conception.
Exemples VHDL
- p. 11/44
Historique
- p. 12/44
Convention lexicale
- p. 13/44
Structure du langage
- p. 14/44
Bibliothèques
Rappel d’éléctronique ■ Les bibliothèques sont déclarée avec le mot clé library,
Le langage VHDL
● Intro
elle dépendent des outils utilisés.
● historique
● Syntaxe
■ Elle contiennent des paquetages que l’on déclare vouloir
● langage
● librairies
utiliser avec le mot clé use:
● entité
● Architecture
use BIBLIOTHEQUE.PAQUETAGE.all;
● Signal et Variable
● Types
■ La bibliothèque par défaut est WORK. WORK est aussi le nom
● Operateurs
● Process
symbolique de la bibliothèque dans laquelle sont stockés les
Exemples VHDL
résultats.
Conception de circuits en VHDL
■ La bibliothèque STD est une bibliothèque standard fournie
Simulation en VHDL avec le langage , elle contient des définitions des types et
Synthèse de VHDL
des fonctions de base (integer, bit,...).
■ 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. 15/44
library ieee;
L’entité
- p. 16/44
L’architecture
- p. 17/44
Corps de l’architecture
Rappel d’éléctronique
begin
Le langage VHDL
● Intro -- process:
● historique
● Syntaxe p1 : process(SI, Cin)
● langage
■ Dans le corps de
● librairies begin
● entité
l’architecture se trouvent les 3
● Architecture
types d’instructions S <= SI xor Cin;
● Signal et Variable
● Types
concurrentes de VHDL end process;
● Operateurs
● Process
■ Elles peuvent être écrites
Exemples VHDL
dans n’importe quel ordre : -- Aff. Signal
Conception de circuits en VHDL
◆ Des processus avec le mot SI <= A xor B;
Simulation en VHDL
clé process
Synthèse de VHDL
◆ Des instructions -- Instanciation
concurrentes d’affectation inst_MAJ : MAJ port map (
de signaux (<=). X => A,
◆ Des instanciation de
Y => B,
composant avec le mot clé
Z => Cin,
port map
M => Cout);
end arch3; - p. 18/44
Signal et Variable
Simulation en VHDL
Synthèse de VHDL
- p. 19/44
Types
■ Autre exemple:
◆ type MOT is STD_LOGIC_VECTOR(7 downto 0);
◆ MOT’LEFT renvoie 7;
◆ MOT’LENGTH renvoie 8; MOT’RIGHT renvoie 0;
- p. 20/44
Type entier
Exemples VHDL
Simulation en VHDL
Synthèse de VHDL
- p. 21/44
Operateurs
Rappel d’éléctronique
Logiques and, or, nand,
Le langage VHDL
● Intro nor, xor, not
● historique
● Syntaxe Relationnels =, /=, < , <=,
● langage
● librairies > , <=
● entité
● Architecture
● Signal et Variable
Arithmétique *, / , mod, (A rem B) a le signe
● Types rem de A (A mod B) a le
● Operateurs
● Process signe de B
Exemples VHDL Divers **, abs, & ** : exponentiation
Conception de circuits en VHDL abs : valeur ab-
Simulation en VHDL solue & : concaté-
Synthèse de VHDL nation
- p. 22/44
Process
Simulation en VHDL
réveille le processus lors d’un changement d’un des signaux.
■ Le processus a des instructions d’arrêt wait dans sa
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
- p. 23/44
évaluées l’une après l’autre dans l’ordre d’écriture.
Exemple: AND3
Rappel d’éléctronique
entity AND_3 is
Le langage VHDL
port (
Exemples VHDL
● AND3 e1 : in bit;
● Full Adder
● Adder4
e2 : in bit;
● Registre
● Double Reg
e3 : in bit;
Conception de circuits en VHDL
s : out bit
Simulation en VHDL
);
Synthèse de VHDL
end entity
begin -- ARCH
end ARCH
- p. 24/44
Exemple: Full Adder
Rappel d’éléctronique
library IEEE;
Le langage VHDL
use IEEE.std_logic_1164.all;
Exemples VHDL
● AND3 use IEEE.numeric_std.all
● Full Adder
● Adder4
● Registre
● Double Reg
entity full_add1 is
Conception de circuits en VHDL
port (
Simulation en VHDL
a, b, cin : in std_logic;
Synthèse de VHDL
s, cout : out std_logic;
);
end entity;
Rappel d’éléctronique
[..librairies ..]
Le langage VHDL
entity adder4 is
Exemples VHDL
● AND3 port (
● Full Adder
● Adder4 a, b : in unigned(3 downto 0);
● Registre
● Double Reg s : out unigned(3 downto 0);
Conception de circuits en VHDL cout : out std_logic
Simulation en VHDL
);
Synthèse de VHDL
end entity;
Rappel d’éléctronique
[... suite et fin ...]
Le langage VHDL
architecture ARCH of adder4 is
Exemples VHDL
● AND3 signal c : unsigned (2 downto 0);
● Full Adder
● Adder4 Component full_add1 is
● Registre
● Double Reg port (
Conception de circuits en VHDL a, b, cin : in std_logic;
Simulation en VHDL
s, cout : out std_logic;
Synthèse de VHDL
);
end entity;
begin
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_2 : full_add1 port map(a(3),b(3),c(2),s(3),c(3));
end ARCH;
- p. 27/44
Exemple: un registre
Simulation en VHDL
BEGIN
Synthèse de VHDL
IF (ck = ’1’ AND ck’EVENT) CIn COut
THEN
IF CE=’1’ THEN Out <= In;
END IF;
END IF;
END PROCESS;
- p. 28/44
Exemple: double registre (declaration)
-- Declaration de signaux
-- 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. 29/44
Exemple: double registre (instanciation)
END behavioural;
- p. 30/44
Conception en VHDL
transitions de granularité ∆.
SystemC.CACHE_1_WORD.WRITEOK
● Automate SystemC.CLK
SystemC.CACHE_16_WORD.DATA 316 318 320 322 324 326 328 330 332 334 336 338 340 342
SystemC.CACHE_16_WORD.WRITEOK
● Synthèse de VHDL
- p. 31/44
Contraintes pour l’écriture de VHDL
- p. 32/44
Notion d’automate
Rappel d’éléctronique
inputs
Le langage VHDL ■ Un automate est
Exemples VHDL
systématiquement
Conception de circuits en VHDL
● conception
décomposé en:
● methodologie
● Automate
■ Un état (ensemble de
● Synthèse de VHDL
registre)
Simulation en VHDL
transition
■ Trois fonctions:
Synthèse de VHDL
◆ Transition: sensible aux
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. 33/44
Codage d’un automate en VHDL (exemple)
Rappel d’éléctronique ■ N’utiliser que des signaux // Gestion du registre d’état avec reset synchrone
PROCESS(clk)
Le langage VHDL
(pas de variables). Que BEGIN
Exemples VHDL
des types simples IF rising_edge(clk) THEN
IF reset = ’1’ THEN
Conception de circuits en VHDL
● conception
(STD_LOGIC_*), de state <= INIT;
ELSE state <= state_next;
● methodologie préférence non resolu. END IF;
● Automate
END PROCESS;
● Synthèse de VHDL ■ Décomposer le matériel
Simulation en VHDL
en l’état (tous les éléments //Fonction de transition
PROCESS (state, input1, input2)
Synthèse de VHDL
mémorisés entre deux BEGIN
CASE state IS
cycle d’horloge) et les WHEN IDLE =>
- p. 34/44
Codage d’un automate en VHDL (suite)
- p. 37/44
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
● niveaux description VHDL
● Principe de la simulation
■ N’est pas forcément du VHDL structurel.
événementielle
● Le temps symbolique ∆ ■ Ce sous ensemble de VHDL doit pouvoir être synthétisé par les
● Signal et variable
● Le temps physique outils commerciaux (Synopsis, Cadence, etc.) selon une
● 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. 38/44
Principe de la simulation événementielle
Synthèse de VHDL
quelconque.
◆ 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. 39/44
Le temps symbolique ∆
Synthèse de VHDL
- p. 40/44
Signal et variable
- p. 41/44
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
● niveaux description VHDL
instruction wait et after wait on A;
● Principe de la simulation
événementielle (points de synchronisation, point R:=S;
● Le temps symbolique ∆
● Signal et variable
d’arrêt): A<= R;
● Le temps physique wait 10 ns
Sig1 <= 25 after 100 s
● Principe du moteur de
simulation
B<= A;
wait until rising_edge(Clk)
Synthèse de VHDL wait until rising_edge(Clk);
■ 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. 42/44
Principe du moteur de simulation
Synthèse de VHDL
3. Pour chaque processus
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. 43/44
Compilation de Vhdl
- p. 44/44