Vous êtes sur la page 1sur 44

Introduction VHDL

Tanguy Risset Partir du cours de lENST http://comelec.enst.fr/hdl

- p. 1/44

Plan

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

s s

Rappel dlectronique Introduction VHDL x Historique x Structure du langage x Types, expressions. x Exemples Codage en VHDL x Automate x Rgles dcriture Simulation VHDL

- p. 2/44

Le transistor

Rappel dlctronique q Le transistor q Portes lmentaires q Conception de circuits combinatoires q Logique squentielle q Composants squentiels frquents q Conception de circuits squentiels Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

s s

Composant lectronique de base Portes logiques ON/OFF


Oxyde Drain

11 00 11 00 11 00
Grille

11 00 11 00
Source

Canal semiconducteur

Mtal

- p. 3/44

Technologie CMOS

Rappel dlctronique q Le transistor q Portes lmentaires q Conception de circuits combinatoires q Logique squentielle q Composants squentiels frquents q Conception de circuits squentiels Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

s s

Complementary Metal Oxide Semiconductor Niveaux logiques : 0 = 0V et 1 = 3V Deux types de portes x nMOS : conducteur si la grille=1 x pMOS : conducteur si la grille=0 Ralisation de quelques portes de base Inverseur, NAND, NOR

source grille drain mMOS 1 1 x 0 Inverseur 1 x y x (x+y) y 0 porte NOR x x x y g=1 grille

source

g=0 drain pMOS y (xy)

0 porte NAND

- p. 4/44

Portes lmentaires

Rappel dlctronique q Le transistor q Portes lmentaires q Conception de circuits combinatoires q Logique squentielle q Composants squentiels frquents q Conception de circuits squentiels Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Amplicateur: F =x x 0 0 1 1

x 0 1 y 0 1 0 1

F 0 1 F 0 0 0 1

Inverseur: F =x

x 0 1 x 0 0 1 1

F 1 0 y 0 1 0 1 F 1 1 1 0

x y

x y

ET: F = x y

NON ET: F = (x y)

- p. 5/44

Conception de circuits combinatoires

Rappel dlctronique q Le transistor q Portes lmentaires q Conception de circuits combinatoires q Logique squentielle q Composants squentiels frquents q Conception de circuits squentiels Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

1. Description du problme: y vaut 1 si a vaut 1 ou b et c valent 1. z vaut 1 si b ou c valent 1 (mais pas les deux) ou si a, b et c valent 1. 2. Table de vrit 3. quations logiques y = abc + abc + abc + abc + abc z = abc + abc + abc + abc + abc 4. Equations optimises y = a + bc z = ab + bc + bc 5. Portes logiques

entres a 0 0 0 0 1 1 1 1
a b c

sorties c 0 1 0 1 0 1 0 1 y 0 0 0 1 1 1 1 1
y

b 0 0 1 1 0 0 1 1

z 0 1 1 0 0 1 1 1

- p. 6/44

Composants combinatoires frquents

Rappel dlctronique q Le transistor q Portes lmentaires q Conception de circuits combinatoires q Logique squentielle q Composants squentiels frquents q Conception de circuits squentiels Le langage VHDL

s s s s s s

Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Multiplexeur n entres Dcodeur log(n) n Additionneur n bits Comparateur n bits ALU n bits etc.

- p. 7/44

Logique squentielle

Rappel dlctronique q Le transistor q Portes lmentaires q Conception de circuits combinatoires q Logique squentielle q Composants squentiels frquents q Conception de circuits squentiels

Bascule RS: lorsque R et S passe 0, Q et Q conservent leur valeur antrieure.


R Q

S 0 1

R 1 1 0 0

Q 0 interdit 1 Qn1

Q 1 interdit 0 Qn1

Q S

1 0

Le langage VHDL Exemples VHDL


Bascule RS

s
Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Bascule D: permet dchantillonner la valeur de la donne lorsque lhorloge passe 1 (front montant de lhorloge) et de conserver cette valeur lorsque lhorloge passe 0.
Horloge

1 0 1 0

1 0 1 0

Valeur

Valeur

Donne

11 00

- p. 8/44

Composants squentiels frquents

Rappel dlctronique q Le transistor q Portes lmentaires q Conception de circuits combinatoires q Logique squentielle q Composants squentiels frquents q Conception de circuits squentiels Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

s s s

Registre n bits (avec reset et eventuellement load/ClockEnable) Registre dcalage n bits Compteur n bits Machine tats

- p. 9/44

Conception de circuits squentiels

Rappel dlctronique q Le transistor q Portes lmentaires q Conception de circuits combinatoires q Logique squentielle q Composants squentiels frquents q Conception de circuits squentiels Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

s s

Extrmement complexe en gnral. De nombreux modles de calculs: x Squentiel Machine tats Contrleur + chemin de donnes x Paralllisme de tches Processus communicants x Paralllisme de donnes x Calcul sur des ots de donnes x Circuits multi-horloge x Paradigme synchrone x Circuits assynchrone Notion sous-jacente trs utilise: automate tats nit

- p. 10/44

Quest ce que VHDL?

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

VHSIC (Very High Speed Integrated Circuit) Hardware Description Langage. Langage pour dcrire la structure et le comportement de systmes lectroniques, en particulier des circuits digitaux (ASIC, FPGA, . . . ). Standard IEEE. Indpendant de la technologie cible. Indpendant de la mthodologie de conception. Indpendant des outils de conception. Langage trs gnral trs complexe ( dpendent de tout!) VHDL nest pas un langage de programmation cest un langage de description (specication) de systme.

s s s s s s

- p. 11/44

Historique

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL

1980: le dpartement de dfense amricain lance un appel doffre pour un langage qui permettrait de dcrire tous les systmes lectroniques utiliss. Motivation afche: rutilisabilit et rduction des cots de conception. 1983 trois compagnies (Intermetics, IBM, Texas Instruments) commencent le dveloppement. 1985: premire version ofcielle de VHDL (version 7.2). 1986: VHDL est donn IEEE pour en faire un standard. 1987: Standard IEEE 1076-1987. 1993: Standard IEEE 1076-1993. 1999: Standard IEEE 1076.6-1999

s s s

Simulation en VHDL Synthse de VHDL

s s

- p. 12/44

Convention lexicale

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Comme en C, un code vhdl est compos dune suite dlments : x commentaires x dlimiteurs x identicateurs, x expressions (termines par un point-virgule), x mots-clefs x littraux(constantes), par exemple: s 67 est un entier s 0 est un bit s "001", O"562", X"FF1" sont vecteurs de bits s "chaine" est une chaine de caractres VHDL est insensible la casse. On crit souvent les mots reserv du langage en majuscule, le reste en minuscule. Les commentaires commencent par deux tirets (- -)

- p. 13/44

Structure du langage

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Il existe "5 units de compilation" permettant de dcrire des composants. x Lentit: description de linterface du composant: le nom et ses ports dentre/sortie x Larchitecture dcrit lintrieur du composant. Il peut y avoir plusieurs architectures pour le mme composant (ex: une pour la simulation efcace, une pour la synthse). Larchitecture contient les processus. x La dclaration de paquetage. Un paquetage est une collection dobjets rutilisables (constantes, types, composants, procdures) x Le corps de paquetage x La conguration indiquant quelle architecture utiliser pour chaque entit

- p. 14/44

Bibliothques

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Les bibliothques sont dclare avec le mot cl library, elle dpendent des outils utiliss. Elle contiennent des paquetages que lon dclare vouloir utiliser avec le mot cl use: use BIBLIOTHEQUE.PAQUETAGE.all; La bibliothque par dfaut est WORK. WORK est aussi le nom symbolique de la bibliothque dans laquelle sont stocks les rsultats. La bibliothque STD est une bibliothque standard fournie avec le langage , elle contient des dnitions des types et des fonctions de base (integer, bit,...). Par dfaut, les outils considre que lon utilise les bibliothques STD et WORK, il y a donc implicitement: library STD; library WORK; En gnral, on utilise la librairie suivante IEEE qui dnit le type std_logic: library ieee;

- p. 15/44

Lentit

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Lentit est la description de linterface du circuit . Elle correspond au symbole dans les reprsentations schmatiques.
A B CIn FA S COut

library ieee; use ieee.std_logic_1164.all; ENTITY FA IS port(A, B, Cin: in STD_LOGIC; S, COut: out STD_LOGIC); END ENTITY FA;

- p. 16/44

Larchitecture

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

s s

Larchitecture est la description interne du circuit. Elle est toujours associe une entit, une entit peut avoir plusieurs architectures:

architecture arch1 of fa is signal resultat : STD_LOGIC_VECTOR(1 downto 0); architecture arch2 of f begin begin resultat <= (0 & a) + (0 & b) + (0 & cin); s <= resultat(0); cout <= resultat(1);

s <= a xor b xor cin; cout <= (a and b) or ((a xor b) and c

end arch2; end arch1; (& est loprateur de concatnation de vecteurs de bit)
- p. 17/44

Corps de larchitecture

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Dans le corps de larchitecture se trouvent les 3 types dinstructions concurrentes de VHDL Elles peuvent tre crites dans nimporte quel ordre : x Des processus avec le mot cl process x Des instructions concurrentes daffectation de signaux (<=). x Des instanciation de composant avec le mot cl port map

begin -- process: p1 : process(SI, Cin) begin S <= SI xor Cin; end process; -- Aff. Signal SI <= A xor B; -- Instanciation inst_MAJ : MAJ port map ( X => A, Y => B, Z => Cin, M => Cout); end arch3; - p. 18/44

Signal et Variable

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Dans un process, on peut trouver des affectations de signaux ou de variables. Contrairement aux variables, laffectation du signal na pas un effet immdiat. Ainsi, dans un process, aprs cinq instructions A <= A+1;, le signal A nest pas augment de 5 mais seulement de 1. Il faut lire A.futur <= A.prsent +1; de sorte que A.prsent nest jamais modi.

- p. 19/44

Types

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Il existe des types: x scalaire (entier, rel, physique, numr), x composite (tableaux, enregistrement), x chier et pointeur. Les types possde des attibut de type, Ils sont reprsents de cette faon < OBJET > < AT T RIBU T > Par exemple: x type COULEUR is (BLEU, ROUGE, VERT); x COULEURleft renvoie BLEU x COULEURright renvoie VERT x COULEURpos(BLEU) renvoie 0 Autre exemple: x type MOT is STD_LOGIC_VECTOR(7 downto 0); x MOTLEFT renvoie 7; x MOTLENGTH renvoie 8; MOTRIGHT renvoie 0;

- p. 20/44

Type entier

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Types entier: x Le type entier integer prdni dans le paquetage standard STD permet de dnir des nombres signs sur 32 bits entre 231 et 231 . x En gnral, on spcie le range dun entier pour quil soit stock sur un nombre de bit adquat: signal my_natural is integer range 0 to 256

- p. 21/44

Operateurs

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Logiques Relationnels Arithmtique

and, or, nand, nor, xor, not =, /=, < , <=, > , <= *, / , mod, rem **, abs, &

Divers

(A rem B) a le signe de A (A mod B) a le signe de B ** : exponentiation abs : valeur absolue & : concatnation

- p. 22/44

Process

Rappel dlctronique Le langage VHDL q Intro q historique q Syntaxe q langage q librairies q entit q Architecture q Signal et Variable q Types q Operateurs q Process Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

Les diffrents process dun programme vhdl sexcutent en parallle les uns des autres. Un processus peut avoir des variables locales. Le fonctionnement du processus est rgi par les rgles suivantes : x Un processus est une boucle innie , lorsquil arrive la n du code, il reprend automatiquement au dbut x Un processus doit tre sensible des points darrt, il existe 2 types de points darrts : s Le processus est associ une "liste de sensibilit" qui rveille le processus lors dun changement dun des signaux. s Le processus a des instructions darrt wait dans sa description interne. Les variables sont internes au processus et sont affectes immdiatement, contrairement aux signaux qui eux ne sont pas affects directement mais en n de processus Un processus est squentiel dans le sens ou les instructions sont values lune aprs lautre dans lordre dcriture.
- p. 23/44

Exemple: AND3

Rappel dlctronique Le langage VHDL Exemples VHDL q AND3 q Full Adder q Adder4 q Registre q Double Reg Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

entity AND_3 is port ( e1 : in bit; e2 : in bit; e3 : in bit; s : out bit ); end entity architecture ARCH of AND_3 is begin -- ARCH s <= e1 and e2 and e3; end ARCH

- p. 24/44

Exemple: Full Adder

Rappel dlctronique Le langage VHDL Exemples VHDL q AND3 q Full Adder q Adder4 q Registre q Double Reg Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all entity full_add1 is port ( a, b, cin : in std_logic; s, cout : out std_logic; ); 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. 25/44

Exemple: Additionneur 4 bits

Rappel dlctronique Le langage VHDL Exemples VHDL q AND3 q Full Adder q Adder4 q Registre q Double Reg Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

[..librairies ..] entity adder4 is port ( a, b : in unigned(3 downto 0); s : out unigned(3 downto 0); cout : out std_logic ); end entity; architecture ARCH of adder4 is signal c : unsigned (2 downto 0); Component full_add1 is port ( a, b, cin : in std_logic; s, cout : out std_logic; ); end entity;

- p. 26/44

Exemple: Additionneur 4 bits

Rappel dlctronique Le langage VHDL Exemples VHDL q AND3 q Full Adder q Adder4 q Registre q Double Reg Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

[... suite et fin ...] architecture ARCH of adder4 is signal c : unsigned (2 downto 0); Component full_add1 is port ( a, b, cin : in std_logic; s, cout : out std_logic; ); end entity; begin inst_FA_1 inst_FA_2 inst_FA_3 inst_FA_2 end ARCH;

: : : :

full_add1 full_add1 full_add1 full_add1

port port port port

map(a(0),b(0),0,s(0),c(0)); map(a(1),b(1),c(0),s(1),c(1)); map(a(2),b(2),c(1),s(2),c(2)); map(a(3),b(3),c(2),s(3),c(3));


- p. 27/44

Exemple: un registre

Rappel dlctronique Le langage VHDL Exemples VHDL q AND3 q Full Adder q Adder4 q Registre q Double Reg Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

s s s

Un registre avec clock enable. Le processus est rveill lors dune transition sur Ck Les If internes permettent dexprimer la condition: front montant de lhorloge avec CE 1.
PROCESS(ck) BEGIN IF (ck = 1 AND ckEVENT) THEN IF CE=1 THEN Out <= In; END IF; END IF; END PROCESS;
CE Ck

CIn

COut

- p. 28/44

Exemple: double registre (declaration)

Rappel dlctronique Le langage VHDL Exemples VHDL q AND3 q Full Adder q Adder4 q Registre q Double Reg Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

library IEEE; use IEEE.std_logic_1164.all; ENTITY DOUBLE_REG IS port(CIn, Ck, CE: IN STD_LOGIC; COut: out STD_LOGIC); END ENTITY DOUBLE_REG; ARCHITECTURE behavioural OF DOUBLE_REG IS -- Declaration de signaux du composant BEGIN PROCESS(ck) Variable CTemp: STD_LOGIC; -- Declaration de signaux -- ou variables du process BEGIN IF (ck = 1 AND ckEVENT) THEN IF CE=1 THEN COut <= CTemp; CTemp := CIn; END IF; END IF; END PROCESS; END behavioural;
Ck CE

CIn

Ctemp

COut

Double_reg

- p. 29/44

Exemple: double registre (instanciation)

Rappel dlctronique Le langage VHDL Exemples VHDL q AND3 q Full Adder q Adder4 q Registre q Double Reg Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL

library IEEE; use IEEE.std_logic_1164.all; ENTITY QUATRE_REG IS port(CIn1, Ck, CE: IN STD_LOGIC; COut1: out STD_LOGIC); END ENTITY QUATRE_REG;
Ck

ARCHITECTURE behavioural OF QUATRE_REG IS Signal CTemp: STD_LOGIC; COMPONENT DOUBLE_REG IS port(CIn, Ck, CE: IN STD_LOGIC; COut: out STD_LOGIC); END COMPONENT; Begin 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;

CE

CIn1

Ctemp

COut1

Double_reg

Double_reg Quatre_reg

- p. 30/44

Conception en VHDL

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL q conception q methodologie q Automate q Synthse de VHDL Simulation en VHDL Synthse de VHDL

s s

Le mcanisme du temps symbolique rend extrmement dlicat le dbugage de VHDL 95% du temps de dveloppement se fait en simulation. On utilise les waveforms qui ne permettent pas de voir les transitions de granularit . VHDL permet normment de constructions difciles comprendre (circuits asynchrones, simulation, synthse, etc...). Aujourdhui il existe des langages plus rapides pour la simulation (SystemC, etc.), VHDL est donc essentiellement utilis pour la synthse et la simulation bas niveau. Se contraindre fortement lors de lcriture de programmes VHDL
SystemC.CLK

SystemC.CLK SystemC.CACHE_1_WORD.DATA SystemC.CACHE_1_WORD.WRITEOK

308

310

312

314

316

318

SystemC.CACHE_16_WORD.DATA SystemC.CACHE_16_WORD.WRITEOK

316

318

320

322

324

326

328

330

332

334

336

338

340

342

- p. 31/44

Contraintes pour lcriture de VHDL

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL q conception q methodologie q Automate q Synthse de VHDL Simulation en VHDL Synthse de VHDL

Penser composant (objet) plutt que fonctionnalit (procdure). Distinguer les lments de mmorisation (mmoire, bancs de registre) et les composants standards (oprations arithmtiques, ltres numriques) pour prvoir lutilisation de bibliothques. Dcomposer les composants sous forme dautomate tats nis On peut alors soit coder directement lautomate en VHDL soit dcomposer nouveau cet automate en un contrleur et un chemin de donne Pour les traitements hautement pipelins (stream processing), on utilisera plutt une description des diffrents tages de pipeline interconnects.

- p. 32/44

Notion dautomate

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL q conception q methodologie q Automate q Synthse de VHDL Simulation en VHDL Synthse de VHDL

inputs
s

Un automate est systmatiquement dcompos en: Un tat (ensemble de registre) Trois fonctions: x Transition: sensible aux entre et ltat, met jour ltat. x Moore: sensible ltat, met jour des sorties x Mealy: sensible aux entre et ltat, met jour des sorties

transition mealy State

moore

outputs
- p. 33/44

Codage dun automate en VHDL (exemple)

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL q conception q methodologie q Automate q Synthse de VHDL Simulation en VHDL Synthse de VHDL

Nutiliser que des signaux (pas de variables). Que des types simples (STD_LOGIC_*), de prfrence non resolu. Dcomposer le matriel en ltat (tous les lments mmoriss entre deux cycle dhorloge) et les autres signaux. crire un processus sensible lhorloge qui met jour les registres dtat Cest la fonction de transition de lautomate.

// Gestion du registre dtat avec reset synchrone PROCESS(clk) BEGIN IF rising_edge(clk) THEN IF reset = 1 THEN state <= INIT; ELSE state <= state_next; END IF; END PROCESS; //Fonction de transition PROCESS (state, input1, input2) BEGIN CASE state IS WHEN IDLE => IF i1 = 1 state_next <= WRITE; ELSE state_next <= IDLE; END IF; WHEN READ => state_next <= IDLE;

OTHER => state_next <= IDLE; END CASE;

WHEN

- p. 34/44

Codage dun automate en VHDL (suite)

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL q conception q methodologie q Automate q Synthse de VHDL Simulation en VHDL Synthse de VHDL

Pour la fonction de Moore de lautomate (cest similaire pour la fonction de Mealy): crire un processus sensible ltat qui calcule les sorties. La manire la plus propre: Dcrire le data-path comme des affectations entre signaux en dehors des processus (infrence systmatique du matriel pour le calcul sur les donnes) Dcrire laffectation des sorties comme une simple affectation entre signaux.

[...] //Equation concurrente (data-flow) S1 <= a + b * C; S2 <= a - b; // Fonction de Moore PROCESS (STATE) BEGIN CASE state IS WHEN IDLE => out1 <= S1; out2 <= S2; WHEN READ => out1 <= S1; out2 <= S1; WHEN OTHER => out1 <= S2; out2 <= S2; END CASE; END;

- p. 35/44

Synthse de VHDL

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL q conception q methodologie q Automate q Synthse de VHDL Simulation en VHDL Synthse de VHDL

s s

La plaie: linfrence accidentelle de registres. ds quun signal nest pas affect dans tous les chemin de contrle. PROCESS(S1,state)
PROCESS(S1,state) BEGIN IF state = INIT THEN Out1 <= S1; END IF; END; BEGIN IF state = INIT THEN Out1 <= S1; ELSE Out1 <= 0; END IF; END;

Compter les registres s Boucle contrle constant accepte (droules la compilation). s Clause Wait accepte uniquement pour lhorloge. s En principe, il existe un standard IEEE pour le VHDL synthtisable. En pratique, chaque outil synthetise des sous-ensembles lgrement diffrents. s Principaux outils de synthse pour les Asics: Mentor Graphics, Synopsys, Cadence.
- p. 36/44

niveaux description VHDL

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL q niveaux description VHDL q Principe de la simulation vnementielle q Le temps symbolique q Signal et variable q Le temps physique q Principe du moteur de simulation Synthse de VHDL

Description structurelle. x Proche des schmatiques traditionnelles des concepteurs x Blocs inter-connects. Description comportementale. x Proche de la programmation traditionnelle x excution squentielle dinstructions Cette classication ne correspond pas exactement notre dcomposition intuitive: description algorithmique/description architecturale

- p. 37/44

VHDL de niveau transfert de registre

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL q niveaux description VHDL q Principe de la simulation vnementielle q Le temps symbolique q Signal et variable q Le temps physique q Principe du moteur de simulation Synthse de VHDL

Une description de niveau transfert de registre est une description de la structure du circuit, mais qui abstrait les oprateurs. On peut parler de registre (sans dire exactement quel type), dadditionneur, etc. Nest pas forcment du VHDL structurel. Ce sous ensemble de VHDL doit pouvoir tre synthtis par les outils commerciaux (Synopsis, Cadence, etc.) selon une smantique dnie par le standard.

s s

Cest une plate forme solide pour la synthse haut niveau.

- p. 38/44

Principe de la simulation vnementielle

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL q niveaux description VHDL q Principe de la simulation vnementielle q Le temps symbolique q Signal et variable q Le temps physique q Principe du moteur de simulation Synthse de VHDL

Le systme est reprsent comme un ensemble de processus (process) qui sexcutent en parallle On veut simuler des processus parallles sur une machine squentielle. Nouvel objet pour communiquer entre programmes squentiels: le signal Moteur de simulation: x Le simulateur excute tous les processus dans un ordre quelconque. x Lorsquun signal partag par plusieurs processus est modi, on enregistre sa nouvelle valeur, le signal conservant temporairement sa valeur. x Lorsque tous les processus ont t excuts, on modie les valeurs des signaux partags x on incrment le temps symbolique (+1) et on recommence jusqu convergence
- p. 39/44

Le temps symbolique
s

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL q niveaux description VHDL q Principe de la simulation vnementielle q Le temps symbolique q Signal et variable q Le temps physique q Principe du moteur de simulation Synthse de VHDL

Le temps symbolique permet dordonner des vnements simultans partir de leurs dpendances. Une affectation un signal: Sig1 <= Sig2 est instantane mais la valeur de Sig1 est modie aprs 1 Un "vnement" possde donc une date complte compose dune date physique (ex: 1h 04m 17s) et dune date symbolique (ex: 4)

- p. 40/44

Signal et variable

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL q niveaux description VHDL q Principe de la simulation vnementielle q Le temps symbolique q Signal et variable q Le temps physique q Principe du moteur de simulation Synthse de VHDL

Du fait de sa smantique spcique, le signal se comporte trs diffremment dune variable On peut en avoir une vision intuitive comme representant la "valeur dun l physique au cours du temps" Pour quun signal conserve une valeur dun cycle un autre il faut mettre en place explicitement un mcanisme de mmorisation qui sera interprt comme un registre. Pour faciliter la simulation on peut aussi introduire des variables dans les processus. Les variables sont locales aux processus, leur affectation est instantane, elles conservent leur valeur au cours du temps comme dans un langage de programmation Sig1 <= Sig2 ; Sig3 <= 3; V ar1 := V ar2 ; V ar3 := 3;

- p. 41/44

Le temps physique

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL q niveaux description VHDL q Principe de la simulation vnementielle q Le temps symbolique q Signal et variable q Le temps physique q Principe du moteur de simulation Synthse de VHDL

Le temps physique permet de simuler lcoulement du temps rel Il ne peut avancer quavec les instruction wait et after (points de synchronisation, point darrt):
wait 10 ns Sig1 <= 25 after 100 s wait until rising_edge(Clk)

Entre deux points de synchronisation, le temps physique navance pas (laffectation des signaux est diffre). Le processus est (implicitement) une boucle innie avec au moins un point darrt.

process ... ... begin S <= A+B; wait on A; R:=S; A<= R; B<= A; wait until rising_edge( if (R > 1023) then Counter <= 127 else COUNTER <=Counter-1; end if; wait until rising_edge( ISO <=COUNTER * 7 end process; - p. 42/44

Principe du moteur de simulation

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL q niveaux description VHDL q Principe de la simulation vnementielle q Le temps symbolique q Signal et variable q Le temps physique q Principe du moteur de simulation Synthse de VHDL

Chaque processus possde une liste de sensibilit qui indique si il doit tre "rveill" ou pas. Changement dune valeur dun signal utilis Changement du temps physique Le moteur effectue de manire rptitive les tches suivantes: 1. Choisit la date courante 2. Positionne les signaux leurs nouvelles valeurs 3. Pour chaque processus teste la condition de reprise du point darrt Si elle est vrie, le processus est rveill et excut jusquau prochain point darret

- p. 43/44

Compilation de Vhdl

Rappel dlctronique Le langage VHDL Exemples VHDL Conception de circuits en VHDL Simulation en VHDL Synthse de VHDL q Compilation de Vhdl

Pour tre simul, un programme VHDL est x Compil x "labor" (dition de liens). Lors de llaboration les oprations lmentaires utilises sont implmentes par des librairies fournies par loutil de simulation, leur implmentation peut poser problme. x Simul. Pour cela il ncessite un "test bench" qui fournit les entres et lhorloge au composant simul (stimuli). Si il est crit de manire synthtisable, il peut tre: x synthtis (synthse logique) x simul aprs synthse x plac (placement-routage) x simul aprs placement routage. Une description destine la simulation efcace dun circuit est trs diffrente dune description destine la ralisation. VHDL synthtisable propose un compromis entre les deux.
- p. 44/44

Vous aimerez peut-être aussi