Introduction à VHDL

Programming, Math, etc. · course

Voir tous les documents en électronique et automatique

Introduction à VHDL

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

- p. 1/44

Plan

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

n Rappel d’électronique n Introduction à VHDL

u Historique u Structure du langage u Types, expressions. u Exemples

n Codage en VHDL

u Automate u Règles d’écriture

n Simulation VHDL

- p. 2/44

Le transistor

n Composant électronique de base n Portes logiques ON/OFF

Oxyde

Drain

Grille

(cid:1)(cid:1) (cid:0)(cid:0) (cid:0)(cid:0) (cid:1)(cid:1) (cid:0)(cid:0) (cid:1)(cid:1)

(cid:1)(cid:1) (cid:0)(cid:0) (cid:0)(cid:0) (cid:1)(cid:1)

Métal

Source

Canal semi−conducteur

Rappel d’éléctronique l Le transistor l Portes élémentaires l Conception de circuits

combinatoires

l Logique séquentielle l Composants séquentiels

fréquents

l Conception de circuits

séquentiels

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 3/44

Technologie CMOS

Rappel d’éléctronique l Le transistor l Portes élémentaires l Conception de circuits

combinatoires

l Logique séquentielle l Composants séquentiels

fréquents

l Conception de circuits

séquentiels

Le langage VHDL

Exemples VHDL

n Complementary Metal Oxide

Semiconductor

n Niveaux logiques : 0 = 0V et 1 = 3V n Deux types de portes

u nMOS : conducteur si la grille=1 u pMOS : conducteur si la grille=0 n Réalisation de quelques portes de

Conception de circuits en VHDL

base

Simulation en VHDL

Synthèse de VHDL

Inverseur, NAND, NOR

source

source

grille

g=1

grille

g=0

drain

pMOS

y

(xy)

drain

mMOS

x

1

0

x

x

x

y

1

0

Inverseur

porte NAND

x

y

x

1

0

(x+y) y

porte NOR

- p. 4/44

Portes élémentaires

Rappel d’éléctronique l Le transistor l Portes élémentaires l Conception de circuits

combinatoires

l Logique séquentielle l Composants séquentiels

fréquents

l Conception de circuits

séquentiels

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

x

F

Amplificateur: F = x

x

F

y ET: F = x y

x F 0 0 1 1

x 0 0 1 1

y F 0 0 0 1 0 0 1 1

x

F

Inverseur: F = x

x F 1 0 0 1

x

F

y NON ET: F = (x y)

x 0 0 1 1

y F 1 0 1 1 1 0 0 1

- p. 5/44

Conception de circuits combinatoires

Rappel d’éléctronique l Le transistor l Portes élémentaires l Conception de circuits

combinatoires

l Logique séquentielle l Composants séquentiels

fréquents

l Conception de circuits

séquentiels

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

1. Description du problème:

y vaut 1 si a vaut 1 ou b et c

entrées

sorties

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 vérité → 3. Équations logiques

y = abc + abc + abc + abc + abc z = abc + abc + abc + abc + abc

4. Equations optimisées y = a + bc z = ab + bc + bc

5. Portes logiques →

b

0

0

1

1

0

0

1

1

c

0

1

0

1

0

1

0

1

a

0

0

0

0

1

1

1

1

a

b

c

z

0

1

1

0

0

1

1

1

y

0

0

0

1

1

1

1

1

y

z

- p. 6/44

Composants combinatoires fréquents

n Multiplexeur à n entrées n Décodeur log(n) → n n Additionneur n bits n Comparateur n bits n ALU n bits n etc.

Rappel d’éléctronique l Le transistor l Portes élémentaires l Conception de circuits

combinatoires

l Logique séquentielle l Composants séquentiels

fréquents

l Conception de circuits

séquentiels

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 7/44

Logique séquentielle

Rappel d’éléctronique l Le transistor l Portes élémentaires l Conception de circuits

combinatoires

l Logique séquentielle l Composants séquentiels

fréquents

l Conception de circuits

séquentiels

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

n Bascule RS: lorsque R et S passe à 0, Q et Q conservent

leur valeur antérieure.

R

Q

Q

S

Bascule RS

S

0

1

1

0

R

1

1

0

0

Q

0

Q

1

interdit

interdit

1

0

Qn−1

Qn−1

Publicité

n Bascule D: permet d’échantillonner la valeur de la donnée

lorsque l’horloge passe à 1 (front montant de l’horloge) et de conserver cette valeur lorsque l’horloge passe à 0.

Horloge

(cid:1) (cid:0) (cid:0) (cid:1)

Donnée

(cid:0)(cid:0)(cid:1)(cid:1)

Valeur

(cid:0)(cid:1)

Valeur

(cid:0)(cid:1)

- p. 8/44

Composants séquentiels fréquents

n Registre n bits (avec reset et eventuellement

load/ClockEnable)

n Registre à décalage n bits n Compteur n bits n Machine à états

Rappel d’éléctronique l Le transistor l Portes élémentaires l Conception de circuits

combinatoires

l Logique séquentielle l Composants séquentiels

fréquents

l Conception de circuits

séquentiels

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 9/44

Conception de circuits séquentiels

Rappel d’éléctronique l Le transistor l Portes élémentaires l Conception de circuits

combinatoires

l Logique séquentielle l Composants séquentiels

fréquents

l Conception de circuits

séquentiels

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

n Extrêmement complexe en général. n De nombreux modèles de calculs:

u Séquentiel

Machine à états Contrôleur + chemin de données

u Parallélisme de tâches

Processus communicants

u Parallélisme de données u Calcul sur des flots de données u Circuits multi-horloge u Paradigme synchrone u Circuits assynchrone

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

- p. 10/44

Qu’est ce que VHDL?

Rappel d’éléctronique

n VHSIC (Very High Speed Integrated Circuit) Hardware Description

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

Exemples VHDL

Langage.

n Langage pour décrire la structure et le comportement de systèmes électroniques, en particulier des circuits digitaux (ASIC, FPGA, . . . ).

n Standard IEEE.

n Indépendant de la technologie cible.

n Indépendant de la méthodologie de conception.

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

n Indépendant des outils de conception. n Langage très général → très complexe (→ dépendent de tout!)

n VHDL n’est pas un langage de programmation

c’est un langage de description (specification) de système.

- p. 11/44

Historique

Rappel d’éléctronique

n 1980: le département de défense américain lance un appel d’offre

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

Exemples VHDL

pour un langage qui permettrait de décrire tous les systèmes électroniques utilisés. Motivation affichée: réutilisabilité et réduction des coûts de conception.

n 1983 trois compagnies (Intermetics, IBM, Texas Instruments)

commencent le développement.

n 1985: première version officielle de VHDL (version 7.2).

n 1986: VHDL est donné à IEEE pour en faire un standard.

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

n 1987: Standard IEEE 1076-1987.

n 1993: Standard IEEE 1076-1993.

n 1999: Standard IEEE 1076.6-1999

- p. 12/44

Convention lexicale

Rappel d’éléctronique

n Comme en C, un code vhdl est composé d’une suite

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

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

d’éléments : u commentaires u délimiteurs u identificateurs, u expressions (terminées par un point-virgule), u mots-clefs u littéraux(constantes), par exemple:

n 67 est un entier n ’0’ est un bit n "001", O"562", X"FF1" sont vecteurs de bits n "chaine" est une chaine de caractères

n VHDL est insensible à la casse. On écrit souvent les mots reservé du langage en majuscule, le reste en minuscule.

n Les commentaires commencent par deux tirets (- -)

- p. 13/44

Structure du langage

Rappel d’éléctronique

n Il existe "5 unités de compilation" permettant de décrire des

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

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

composants. u L’entité: description de l’interface du composant: le nom et

ses ports d’entrée/sortie

u L’architecture décrit l’intérieur du composant. Il peut y avoir plusieurs architectures pour le même composant (ex: une pour la simulation efficace, une pour la synthèse). L’architecture contient les processus.

u La déclaration de paquetage. Un paquetage est une collection d’objets réutilisables (constantes, types, composants, procédures)

u Le corps de paquetage u La configuration indiquant quelle architecture utiliser pour

chaque entité

- p. 14/44

Bibliothèques

Rappel d’éléctronique

n Les bibliothèques sont déclarée avec le mot clé library,

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

Exemples VHDL

elle dépendent des outils utilisés.

n Elle contiennent des paquetages que l’on déclare vouloir

utiliser avec le mot clé use: use BIBLIOTHEQUE.PAQUETAGE.all;

n La bibliothèque par défaut est WORK. WORK est aussi le nom

symbolique de la bibliothèque dans laquelle sont stockés les résultats.

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

n La bibliothèque STD est une bibliothèque standard fournie avec le langage , elle contient des définitions des types et des fonctions de base (integer, bit,...).

n 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;

n En général, on utilise la librairie suivante IEEE qui définit le

type std_logic: library ieee; use ieee.std_logic_1164.all;

- p. 15/44

L’entité

Rappel d’éléctronique

n L’entité est la description de l’interface du circuit . Elle

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

Exemples VHDL

correspond au symbole dans les représentations schématiques.

A

B

CIn

FA

S

COut

library ieee; use ieee.std_logic_1164.all;

Conception de circuits en VHDL

ENTITY FA IS

Simulation en VHDL

Synthèse de VHDL

port(A, B, Cin: in STD_LOGIC;

S, COut: out STD_LOGIC);

END ENTITY FA;

- p. 16/44

L’architecture

Rappel d’éléctronique

n L’architecture est la description interne du circuit.

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

Exemples VHDL

n Elle est toujours associée à une entité, une entité peut avoir

plusieurs architectures:

architecture arch1 of fa is

signal resultat :

STD_LOGIC_VECTOR(1 downto 0);

begin

architecture arch2 of fa is begin

Conception de circuits en VHDL

resultat <= (’0’ & a) +

Simulation en VHDL

Synthèse de VHDL

(’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 cin);

end arch1;

end arch2;

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

- p. 17/44

Corps de l’architecture

Rappel d’éléctronique

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

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

n Dans le corps de

l’architecture se trouvent les 3 types d’instructions concurrentes de VHDL n Elles peuvent être écrites

dans n’importe quel ordre : u Des processus avec le mot

clé process u Des instructions

concurrentes d’affectation de signaux (<=). u 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 d’éléctronique

n Dans un process, on peut trouver des affectations de

signaux ou de variables.

n Contrairement aux variables, l’affectation du signal n’a pas

un effet immédiat.

n Ainsi, dans un process, après cinq instructions A <= A+1;, le signal A n’est pas augmenté de 5 mais seulement de 1.

n Il faut lire A.futur <= A.présent +1; de sorte que

A.présent n’est jamais modifié.

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

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 19/44

Types

Rappel d’éléctronique

n Il existe des types:

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

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

u scalaire (entier, réel, physique, énuméré), u composite (tableaux, enregistrement), u fichier et pointeur.

n Les types possède des attibut de type, Ils sont représentés

de cette façon < OBJET >′< AT T RIBU T >

n Par exemple:

u type COULEUR is (BLEU, ROUGE, VERT); u COULEUR’left renvoie BLEU u COULEUR’right renvoie VERT u COULEUR’pos(BLEU) renvoie 0

n Autre exemple:

u type MOT is STD_LOGIC_VECTOR(7 downto 0); u MOT’LEFT renvoie 7; u MOT’LENGTH renvoie 8; MOT’RIGHT renvoie 0;

- p. 20/44

Type entier

Rappel d’éléctronique

n Types entier:

u Le type entier integer prédéfini dans le paquetage

standard STD permet de définir des nombres signés sur 32 bits entre −231 et 231.

u En général, on spécifie le range d’un entier pour qu’il soit

stocké sur un nombre de bit adéquat: signal my_natural is integer range 0 to 256

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

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

- p. 21/44

Operateurs

Logiques

Relationnels

Arithmétique

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

Publicité

Divers

**, abs, &

Rappel d’éléctronique

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

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

(A rem B) a le signe de A (A mod B) a le signe de B ** : exponentiation abs : valeur ab- solue & : concaté- nation

- p. 22/44

Process

Rappel d’éléctronique

n Les différents process d’un programme vhdl s’exécutent en

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

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

parallèle les uns des autres.

n Un processus peut avoir des variables locales. Le fonctionnement

du processus est régi par les règles suivantes : u Un processus est une boucle infinie , lorsqu’il arrive à la fin du

code, il reprend automatiquement au début

u Un processus doit être sensible des points d’arrêt, il existe 2

types de points d’arrêts : n Le processus est associé à une "liste de sensibilité" qui

réveille le processus lors d’un changement d’un des signaux.

n Le processus a des instructions d’arrêt wait dans sa

description interne.

n 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

n 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. 23/44

Exemple: AND3

Rappel d’éléctronique

entity AND_3 is

Le langage VHDL

Exemples VHDL l AND3 l Full Adder l Adder4 l Registre l Double Reg

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

port (

e1 : in bit; e2 : in bit; e3 : in bit; : out bit s

);

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 d’éléctronique

Le langage VHDL

Exemples VHDL l AND3 l Full Adder l Adder4 l Registre l Double Reg

Conception de circuits en VHDL

Simulation en VHDL

Synthèse 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 cout

<= resultat(0); <= resultat(1);

- p. 25/44

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL l AND3 l Full Adder l Adder4 l Registre l Double Reg

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

Exemple: Additionneur 4 bits

[..librairies ..] entity adder4 is

port (

a, b : in unigned(3 downto 0); s cout : out std_logic

: out unigned(3 downto 0);

);

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; [... a suivre]

- p. 26/44

Exemple: Additionneur 4 bits

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL l AND3 l Full Adder l Adder4 l Registre l Double Reg

Conception de circuits en VHDL

Simulation en VHDL

Synthèse 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 : 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

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL l AND3 l Full Adder l Adder4 l Registre l Double Reg

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL

n Un registre avec clock enable. n Le processus est réveillé lors d’une transition sur Ck n Les If internes permettent d’exprimer la condition: front

montant de l’horloge avec CE à 1.

PROCESS(ck) BEGIN IF (ck = ’1’ AND ck’EVENT) 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 d’éléctronique

Le langage VHDL

Exemples VHDL l AND3 l Full Adder l Adder4 l Registre l Double Reg

Conception de circuits en 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

Ck

CE

Simulation en VHDL

BEGIN

Synthèse de VHDL

PROCESS(ck)

Variable CTemp: STD_LOGIC; -- 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;

CIn

Ctemp

COut

Double_reg

- p. 29/44

Exemple: double registre (instanciation)

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL l AND3 l Full Adder l Adder4 l Registre l Double Reg

Conception de circuits en VHDL

Simulation en VHDL

Synthèse 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;

ARCHITECTURE behavioural OF QUATRE_REG IS

Ck

CE

CIn1

Ctemp

COut1

Double_reg

Double_reg

Quatre_reg

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;

- p. 30/44

Conception en VHDL

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

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

Simulation en VHDL

Synthèse de VHDL

n Le mécanisme du temps symbolique rend extrêmement

délicat le débugage de VHDL

n 95% du temps de développement se fait en simulation. n On utilise les waveforms qui ne permettent pas de voir les

transitions de granularité ∆.

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

SystemC.CLK SystemC.CACHE_16_WORD.DATA SystemC.CACHE_16_WORD.WRITEOK

308

310

312

314

316

318

316 318 320

322

324 326 328 330 332 334 336 338

340 342

n VHDL permet énormément de constructions difficiles à

comprendre (circuits asynchrones, simulation, synthèse, etc...).

n 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.

n ⇒ Se contraindre fortement lors de l’écriture de programmes VHDL

- p. 31/44

Contraintes pour l’écriture de VHDL

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

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

Simulation en VHDL

Synthèse de VHDL

n Penser composant (objet) plutôt que fonctionnalité

(procédure).

n Distinguer les éléments de mémorisation (mémoire, bancs

de registre) et les composants standards (opérations arithmétiques, filtres numériques) pour prévoir l’utilisation de bibliothèques.

n Décomposer les composants sous forme d’automate à états

finis

n 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

n Pour les traitements hautement pipelinés (stream

processing), on utilisera plutôt une description des différents étages de pipeline interconnectés.

- p. 32/44

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

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

Simulation en VHDL

Synthèse de VHDL

Notion d’automate

n Un automate est

systématiquement décomposé en:

n Un état (ensemble de

registre)

n Trois fonctions:

u Transition: sensible aux

entrée et à l’état, met à jour l’état.

u Moore: sensible à l’état, met à jour des sorties

u Mealy: sensible aux entrée et à l’état, met à jour des sorties

inputs

transition

mealy

Publicité

State

moore

outputs

- p. 33/44

Codage d’un automate en VHDL (exemple)

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

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

Simulation en VHDL

Synthèse de VHDL

n N’utiliser que des signaux (pas de variables). Que des types simples (STD_LOGIC_*), de préférence non resolu. n Décomposer le matériel

en l’état (tous les éléments mémorisés entre deux cycle d’horloge) et les autres signaux.

n Écrire un processus

sensible à l’horloge qui met à jour les registres d’état

n C’est la fonction de

// Gestion du registre d’état avec reset synchrone PROCESS(clk) BEGIN IF rising_edge(clk) THEN IF reset = ’1’ THEN

state state

ELSE END IF; END PROCESS;

<= INIT; <= state_next;

//Fonction de transition PROCESS (state, input1, input2) BEGIN CASE state IS

WHEN IDLE =>

IF

i1 = ’1’

state_next <= WRITE;

state_next <= IDLE;

ELSE

END IF;

WHEN

READ =>

state_next <= IDLE;

WHEN

OTHER =>

state_next <= IDLE;

transition de l’automate.

END CASE;

- p. 34/44

Codage d’un automate en VHDL (suite)

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

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

Simulation en VHDL

Synthèse de VHDL

n Pour la fonction de Moore

de l’automate (c’est similaire pour la fonction de Mealy): Écrire un processus sensible à l’état qui calcule les sorties. n La manière la plus propre:

Décrire le data-path comme des affectations entre signaux en dehors des processus (inférence systématique du matériel pour le calcul sur les données)

Décrire l’affectation 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

Synthèse de VHDL

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

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

Simulation en VHDL

Synthèse de VHDL

n La plaie: l’inférence accidentelle de registres. n dès qu’un signal n’est pas affecté dans tous les chemin de

contrôle.

PROCESS(S1,state)

BEGIN

IF state = ’INIT’ THEN

Out1 <= S1;

END IF;

END;

PROCESS(S1,state)

BEGIN

IF state = ’INIT’ THEN

Out1 <= S1;

ELSE

Out1 <= ’0’;

END IF;

END;

⇒ Compter les registres n Boucle à contrôle constant acceptée (déroulées à la

compilation).

n Clause Wait acceptée uniquement pour l’horloge. n 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.

n Principaux outils de synthèse pour les Asics: Mentor

Graphics, Synopsys, Cadence.

- p. 36/44

niveaux description VHDL

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

n Description structurelle.

u Proche des schématiques traditionnelles des concepteurs u Blocs inter-connectés.

Conception de circuits en VHDL

n Description comportementale.

Simulation en VHDL l niveaux description VHDL l Principe de la simulation

événementielle

l Le temps symbolique ∆ l Signal et variable l Le temps physique l Principe du moteur de

simulation

Synthèse de VHDL

u Proche de la programmation traditionnelle u exécution séquentielle d’instructions

n Cette classification ne correspond pas exactement à notre

décomposition intuitive: description algorithmique/description architecturale

- p. 37/44

VHDL de niveau transfert de registre

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL l niveaux description VHDL l Principe de la simulation

événementielle

l Le temps symbolique ∆ l Signal et variable l Le temps physique l Principe du moteur de

simulation

Synthèse de VHDL

n Une description de niveau transfert de registre est une description

de la structure du circuit, mais qui abstrait les opérateurs.

n On peut parler de “registre” (sans dire exactement quel type),

d’additionneur, etc.

n N’est pas forcément du VHDL structurel.

n Ce sous ensemble de VHDL doit pouvoir être synthétisé par les

outils commerciaux (Synopsis, Cadence, etc.) selon une sémantique définie par le standard.

→ C’est une plate forme solide pour la synthèse haut niveau.

- p. 38/44

Principe de la simulation événementielle

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

n Le système est représenté comme un ensemble de processus (process) qui s’exécutent en parallèle

n On veut simuler des processus parallèles sur une machine

Conception de circuits en VHDL

séquentielle.

Simulation en VHDL l niveaux description VHDL l Principe de la simulation

événementielle

l Le temps symbolique ∆ l Signal et variable l Le temps physique l Principe du moteur de

simulation

Synthèse de VHDL

n Nouvel objet pour communiquer entre programmes

séquentiels: le signal n Moteur de simulation:

u Le simulateur exécute tous les processus dans un ordre

quelconque.

u Lorsqu’un signal partagé par plusieurs processus est modifié, on enregistre sa nouvelle valeur, le signal conservant temporairement sa valeur.

u Lorsque tous les processus ont été exécutés, on modifie

les valeurs des signaux partagés

u on incrément le temps symbolique (+1∆) et on

recommence jusqu’à convergence

- p. 39/44

Le temps symbolique ∆

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

n Le temps symbolique permet d’ordonner des événements

simultanés à partir de leurs dépendances.

n 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 ∆

n Un "événement" possède donc une date complète

composée d’une date physique (ex: 1h 04m 17s) et d’une date symbolique (ex: 4∆)

Simulation en VHDL l niveaux description VHDL l Principe de la simulation

événementielle

l Le temps symbolique ∆ l Signal et variable l Le temps physique l Principe du moteur de

simulation

Synthèse de VHDL

- p. 40/44

Signal et variable

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

n Du fait de sa sémantique spécifique, le signal se comporte

très différemment d’une variable

n 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 l niveaux description VHDL l Principe de la simulation

événementielle

l Le temps symbolique ∆ l Signal et variable l Le temps physique l Principe du moteur de

simulation

Synthèse de VHDL

n Pour qu’un signal conserve une valeur d’un cycle à un autre

il faut mettre en place explicitement un mécanisme de mémorisation qui sera interprété comme un registre. n Pour faciliter la simulation on peut aussi introduire des

variables dans les processus.

n 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; Sig3 <= 3;

V ar1 := V ar2; V ar3 := 3;

- p. 41/44

Le temps physique

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL l niveaux description VHDL l Principe de la simulation

événementielle

l Le temps symbolique ∆ l Signal et variable l Le temps physique l Principe du moteur de

simulation

Synthèse de VHDL

n Le temps physique permet de simuler l’écoulement du temps réel

n Il ne peut avancer qu’avec les instruction wait et after (points de synchronisation, point d’arrêt):

wait 10 ns Sig1 <= 25 after 100 s

wait until rising_edge(Clk)

n Entre deux points de

synchronisation, le temps physique n’avance pas (l’affectation des signaux est différée).

n Le processus est (implicitement) une boucle infinie avec au moins un point d’arrêt.

process ...

... begin S <= A+B; wait on A; R:=S; A<= R; B<= A; wait until rising_edge(Clk); if (R > 1023) then Counter <= 127

else

COUNTER <=Counter-1;

end if; wait until rising_edge(Clk); ISO <=COUNTER * 7

end process;

- p. 42/44

Principe du moteur de simulation

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL l niveaux description VHDL l Principe de la simulation

événementielle

l Le temps symbolique ∆ l Signal et variable l Le temps physique l Principe du moteur de

simulation

Synthèse de VHDL

n Chaque processus possède une liste de sensibilité qui

indique si il doit être "réveillé" ou pas.

Changement d’une valeur d’un signal utilisé Changement du temps physique

n Le moteur effectue de manière répétitive les tâches

suivantes: 1. Choisit la date courante 2. Positionne les signaux à leurs nouvelles valeurs 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

Rappel d’éléctronique

Le langage VHDL

Exemples VHDL

Conception de circuits en VHDL

Simulation en VHDL

Synthèse de VHDL l Compilation de Vhdl

n Pour être simulé, un programme VHDL est

u Compilé u "Élaboré" (≃édition de liens). Lors de l’élaboration les

opérations élémentaires utilisées sont implémentées par des librairies fournies par l’outil de simulation, leur implémentation peut poser problème.

u Simulé. Pour cela il nécessite un "test bench" qui fournit les entrées et l’horloge au composant simulé (stimuli).

n Si il est écrit de manière synthétisable, il peut être:

u synthétisé (synthèse logique) u simulé après synthèse u placé (placement-routage) u simulé après placement routage.

n 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. 44/44