Vous êtes sur la page 1sur 60

Mohamed MASMOUDI 2013-2014 EPT 1

CONCEPTION
MICROÉLECTRONIQUE
CHAPITRE 2 – INITIATION VHDL
MOHAMED MASMOUDI
2ÈME ANNÉE - SISY
EPT - ECOLE POLYTECHNIQUE DE TUNISIE
MOHAMED.MASMOUDI@ACI.COM.TN

Mohamed MASMOUDI 2013-2014


EPT
Plan
 C’est quoi le VHDL

 Modélisation concurrente

 Modélisation séquentielle

 Les machines à états

 Exemple de synthèse
Le VHDL
3

Very High Speed Integrated Circuit


Hardware
Description
Langage
Langage : de description structurelle et comportementale de la conception des dispositifs
matériels en électronique numérique (ASICs, CPLD, FPGA, logique câblée)

Autres HDL : Verilog, UDL/1, Estérel, Hardware C


Pourquoi?
4

 Langage pour la spécification des systèmes digitaux, aussi bien au niveau


comportemental que structural
 Utilisation:
 description des systèmes
 simulation
 aide à la conception
 documentation
 Caractéristiques principales:
 description à plusieurs niveaux
 simulation activée par événements (event-driven)
 modularité
 extensibilité
 langage général, fortement typé
Historique
5
1994

Révision du standard

1987 IEEE 1164

Publication du standard
IEEE 1076
1986
Transfert des droits
1983 à l’IEEE

Développement des bases du langage


1981 par Intermetrics, IBM et TI
Initiation du langage
par le US - DoD
Concept
6

VHDL permet de coder une fonction d’une manière structurelle (comme un schéma) et/ou
comportementale (fonctionnelle)

Codage comportemental
S <= not ((A and B) or (C and D));
 plus proche de l’algorithme
 portabilité, maintenabilité, versatilité

Codage structurel A
B
 création d’une hiérarchie S
C
 emploi de macrofonctions
D
 format de la liste d’équipotentielle (netlist)
Niveau d’abstraction
7

Le codage en VHDL peut se faire selon 4 niveaux d’abstraction, ce


qui permet une conception descendante
Algorithme Architecture
Architecture Netlist
synthétisable

registres bibliothèque

S=fft(e,64) radix1 radix2 radix3

Synthèse
Niveau 1 Niveau 2 Niveau RTL netlist
logique
Niveau d’abstraction
8
Niveau d’abstraction
9

 Le niveau système : cette description regroupe l’ensemble


des spécification du circuit décrites sous la forme de
comportements vis-à-vis de l’environnement associé au
circuit, de performances à satisfaire, de contraintes
d’utilisation. Cette description est de nature purement
externe par rapport au circuit.

 Le niveau fonctionnel : la description au niveau fonctionnel


exprime le premier niveau interne de la solution, sous la
forme d’un ensemble de fonctions +/- interdépendantes
et de complexité variée. Cette description est orientée
application ou objectif à satisfaire.
Niveau d’abstraction
10

 Le niveau architectural : la description architecturale


exprime les modules exécutifs et les interconnections
nécessaires entre ceux-ci pour satisfaire la fonctionnalité
globale du niveau supérieur. Cette description est donc
orientée réalisation.
 Le niveau logique: la description représente un circuit par
un ensemble interconnecté de fonctions logiques de faible
complexité.
 Le niveau électrique : la description électrique représente
le circuit sous la forme d’éléments microélectroniques
(transistors essentiellement) interconnectés de façon à
assurer la fonctionnalité du circuit spécifiée par les
niveaux supérieurs.
Modèle de Gajski
11
Etapes
12

VHDL : spécification, conception et description matérielle en électronique numérique


Analyse du système et partitionnement des tâches

Écriture du code VHDL par bloc Écriture des « Test Bench » en VHDL

Simulation du code VHDL

Synthèse au niveau portes

Simulation au niveau portes

Implémentation matérielle
Apport
13

Pour les circuits intégrés


A2 + B2

Diminution du temps de développement


Diminution des erreurs conception à plus haut niveau
simulation à différents niveaux d’abstraction

Pour les systèmes

Anticipation de l’intégration Normalisation des échanges


modèles de composants simulable avant disponibilité langage universel et unique
Description matérielle
14

 VHDL : se base sur la paire ENTITY - ARCHITECTURE


ENTITY ARCHITECTURE
décrit les ports :
d’E/S du circuit
(brochage) décrit le contenu du
circuit (câblage
interne)

a a
d d
b b
Circuit
Boîte noire
f f
c c
Entity
15

Description externe du composant (Boîte noire)


 Définition des ports d’E/S : type, sens, taille, …
 Définition des paramètres
ENTITY <entity name> IS
<generic declaration>
<port declaration>
END [ENTITY] <entity name> ;

<generic declaration> : paramètres du composant


<port declaration> : interface avec l’environnement extérieur
Les ports:
16

PORT(
<port name> : <mode> <type> ;
.....
<port name> : <mode> <type>
);

Les modes:

IN : Données qui sont des entrées uniquement

OUT : Données qui sont des sorties uniquement

INOUT : Données bidirectionnelles (en entrée ou en sortie)

BUFFER : Données en sortie mais aussi en feed-back interne dans le circuit


Types des ports
17 BIT : valeurs possibles ‘0’ et ‘1’
BIT_VECTOR : un vecteur de bits
INTEGER : utilisés comme indices (boucles), constantes, …
BOOLEAN : prend deux valeurs ‘TRUE’ ou ‘FALSE’
CHARACTER : caractères ascii

Exemple :
SIGNAL a: BIT_VECTOR(0 TO 3); - - e.g... Sens ascendant
SIGNAL b: BIT_VECTOR(3 DOWNTO 0); - - e.g... Sens descendant
a <= "0111";
b <= "0101";
Ce qui signifie :
a(0) = '0' b(0) = '1'
a(1) = '1' b(1) = '0'
a(2) = '1' b(2) = '1'
a(3) = '1' b(3) = '0'
Types des ports (IEEE1164)
18
library IEEE; -- librairie
use IEEE.std_logic_1164.all;-- package
Valeurs des signaux
std_logic et std_logic_vector ENTITY exple1 IS PORT (
Valeur Interprétation
….
0 0 - Forcé
);
1 1 - Forcé
END exple1;
U Uninitialized (non-initialisé)
X Inconnu - Forcé
ARCHITECTURE archlogic OF exle1 IS
Z Haute impédance
BEGIN
W Inconnu - Faible
L 0 - Faible
…..
H 1 - Faible
- Don’t Care
END archlogic;
Déclarations d’une entité
Circuit 1
19

rst
q[N:0]
d[N:0]
co
clk

ENTITY circuit1 IS
GENERIC (N: INTEGER:=7);
PORT (
clk, rst: IN BIT;
d: IN BIT_VECTOR(7 DOWNTO 0);
q: OUT BIT_VECTOR(7 DOWNTO 0);
co: OUT BIT);
M. MASMOUDI Cours VHDL
END circuit1;
L’architecture
20

Objectif:
Description ”du câblage interne”
Modes de description:
 Structurelle
 Instanciations : placement de composants logiques et leur interconnexion

 Comportementale (aspect algorithmique)


 Description haut niveau (abstraite)
IF a = b THEN x<=a;
 Équations logiques
x <= (a OR b) AND c;
Paire entité-architecture
21 Entity décrit l’interface externe Library IEEE;
d’un module, elle contient : use IEEE.STD_1164.ALL;
 Nom du module (ex: AOI) entity AOI is
 Ports d ’entrée/sorties (Nom, direction:
in,out, inout, buffer,…) port (
 Type (BIT, BIT_VECTOR, BOOLEAN,
INTEGER,…) A, B, C, D: in STD_LOGIC;
 Paramètres
F: out STD_LOGIC
Architecture décrit le );
fonctionnement interne et
comporte : end AOI;
architecture Acrh1 of AOI is
 zone de déclarations
begin
 zone pour les instructions
 toujours associée à une entité F<=not((A and B)or(C and D));
 plusieurs architectures peuvent être end arch1;
associées à la même entité
-- fin du code VHDL
Paquetage
22

 Paquetage “Package” : collection d’objets


réutilisables : constantes, composants, types, fonction,
procédure, ...

 2 unités de compilation :
 déclaration de paquetage
 corps de paquetage
 Le contenu de la déclaration de paquetage est
“visible” depuis une autre unité de compilation si elle
en a déclaré l’utilisation
 Le contenu du corps de paquetage est “invisible” des
autres unités de compilation
Sémantique
23

Deux types d’expressions :


Séquentielles
 Expressions dans un PROCESS

Concurrentes
 Expressions à l’extérieur d’un PROCESS
 Les PROCESS sont évalués de manière concurrente
Bus d ’adresses
Bus de données Toutes les unités
sont concurrentes
Bus de contrôle et de commande entre elles
CPU

(Séquentiel) Interfaces
Mémoire d’E/S
(Séquentiel) (Séquentiel)

Cours VHDL M. MASMOUDI


Plan
 C’est quoi le VHDL

 Modélisation concurrente

 Modélisation séquentielle

 Les machines à états

 Exemple de synthèse
Codage des composants
25 in1
a cout
in2 Half adder
b sum carry

a cout
cin Half adder result
b sum

ENTITY half_adder IS ENTITY OR_2 IS


PORT (a,b: IN std_logic; PORT(a,b: IN std_logic;
sum,cout : OUT std_logic); c : OUT std_logic);
END half_adder; END OR_2;
ARCHITECTURE beh OF half_adder IS ARCHITECTURE beh OF OR_2 IS
begin begin
sum <= a XOR b; c <= a OR b;
cout <= a AND b; end beh;
end beh;
Instanciation Méthode 1
26
<inst label> : ENTITY <library>.<ent name>(<arch name>);
ENTITY full_adder IS
PORT(in1,in2,cin: IN std_logic; result,carry : OUT std_logic);
END full_adder;
ARCHITECTURE structural OF full_adder
SIGNAL s1,s2,s3 : std_logic;
BEGIN
H1 : entity work.half_adder(beh)
PORT MAP(a=>in1, b=>in2, sum=> s1, cout => s3);
H2 : entity work.half_adder(beh)
PORT MAP(a=> s1, b=> cin, sum => result, cout => s2);
O1 : entity work.OR_2(beh)
PORT MAP(a=>s2, b=> s3, c=> carry);
END structural;
Instanciation Méthode 2
27
ENTITY full_adder IS PORT(in1,in2,cin: IN std_logic; result,carry : OUT
std_logic);
END full_adder;
ARCHITECTURE structural OF full_adder IS
COMPONENT half_adder
PORT(a,b : IN std_logic; sum,cout : OUT std_logic);
END COMPONENT;
COMPONENT OR_2
PORT(a,b : IN std_logic; c : OUT std_logic);
END COMPONENT;
SIGNAL s1,s2,s3 : std_logic;
BEGIN
H1 : half_adder PORT MAP(a=>in1, b=>in2, sum=> s1, cout => s3);
H2 : half_adder PORT MAP(a=> s1, b=> cin, sum => result, cout =>
s2);
O1 : or_2 PORT MAP(a=>s2, b=> s3, c=> carry);
END structural;
Concurrentes
28

 Entre le BEGIN et le END de l’ARCHITECTURE on est


dans un contexte d’instructions concurrentes. Ce qui
les caractérisent :
 L’ordre des instructions concurrentes est indifférent,
 Pour le compilateur, chaque objet concurrent est en fait
un processus,
 Les objets concurrents (partie d’un circuit) sont reliés
entre eux par des signaux.

Cours VHDL M. MASMOUDI


Exemple équivaux à une instruction
29
concurrente
 Affectation conditionnelle
Neuf <= ‘1’ WHEN etat = ‘1001’ ELSE ´0´ ;
Le processus équivalent remplace le WHEN par une instruction IF :
P2: PROCESS
BEGIN
WAIT ON etat ;
IF etat = ’1001’ THEN
neuf <= ´1´ ;
ELSE
neuf <= ´0´ ;
END PROCESS;

Cours VHDL M. MASMOUDI


Plan
 C’est quoi le VHDL

 Modélisation concurrente

 Modélisation séquentielle

 Les machines à états


Les process
31

 Les processus constituent les éléments calculatoires de base du


simulateur. Au niveau descriptif, ils peuvent être explicites
(PROCESS) ou implicites (instructions concurrentes).
 Du point de vue de l’exécution, on peut affirmer que « tout est
processus ».
 Un processus vit toujours depuis le chargement du code exécutable
dans le simulateur. Il ne peut prendre fin qu’avec la simulation mais
peut par contre être endormi pour une durée plus ou moins longue.
L’instruction WAIT, obligatoire au moins une fois, synchronise le
processus. Elle possède trois formes pouvant être combinées :
 WAIT ON événement; WAIT FOR durée; WAIT UNTIL condition;
WAIT;
 Le processus s’exécute au moins une fois jusqu’à rencontrer le WAIT,
puis la condition de réveil une fois validée, l’exécution continue de
façon séquentielle et cyclique (après la fin, le début)
Cours VHDL M. MASMOUDI
Exemple process
32

En VHDL les instructions d’une architecture sont évaluées en permanence et toutes


simultanément. Pour avoir un fonctionnement séquentiel il faut définir un processus.
Library ieee;
Un processus (Process) est un groupe use ieee.std_logic_1164.all ;
délimité d’instructions caractérisé par : entity BASCULE_D is
 Exécution du processus à chaque port(D, CLK: in std_logic;
changement d’état d’un des signaux Q: OUT std_logic );
auxquels il est déclaré sensible end BASCULE_D;
 Exécution séquentielle des instructions du architecture ACH_BASCULE_D of
processus BASCULE_D is
begin
 Les modifications apportées aux valeurs
process (CLK)
de signaux par les instructions prennent
effet à la fin du processus begin
if (CLK=‘ 1 ’) then Q <= D ;
D
Q end if ;
CLK end process;
Cours VHDL M. MASMOUDI
end ACH_BASCULE_D;
Génération
33

Forme générale :
etiquette : for variable_de_boucle in val_debut to val_fin generate
{instruction concurrente};
end generate etiquette;
Il est possible d’imbriquer plusieurs instructions generate, chacune possédant
son étiquette et sa variable de boucle propres

Forme conditionnelle :
etiquette : for variable_de_boucle in val_debut to val_fin generate
{if instruction then generate
{instruction combinatoire}
end generate; }
end generate etiquette;

Cours VHDL M. MASMOUDI


Exemple registre à décalage
34
Library ieee; SI
use ieee.std_logic_1164.all ;
entity REG_SP is
CLK
port(CLK,RESET,SI: in std_logic;
PO: OUT std_logic_vector(0 to 31)); PO(0) PO(1) PO(31)
end REG_SP;
use work.RTLPKG.all ; -- accès aux comp. DFF est la déclaration d ’un composant
architecture ACRHREG_SP of REG_SP is
(bascule D) du paquetage RTLPKG

signal TEMP: std_logic_vector(0 to 31);


begin Génération du 1er étage du registre à
premier: DFF port map (SI, CLK, TEMP(0)); décalage
autres : for I in 0 to 30 generate
boucle: DFF port map Génération itérative des 31 étages
(TEMP(I),CLK,TEMP(I+1)); suivants
end generate;
PO <= TEMP;
Cours VHDL M. MASMOUDI
end ARCHREG_SP;
Sémantique Séquentiel
35

Instruction de boucle « for…loop » :


Instruction de test « if » :
[label:] for variable_boucle in intervalle
[label:] if condition then loop
instructions
{instructions}
{ elsif condition then
end loop [label];
instructions }
else
instructions Instruction de boucle « while…loop » :
end if [label] ; [label:] while condition loop {instructions}
end loop [label];
Instruction de sélection « case» :
[label:] case expression is
Instructions « next » et « exit » :
{ when choices} => {instructions }
[label:] next [loop_label] [when condition];
[ when others => {instructions }
[label:] exit [loop_label] [when condition];
end case [label] ;

Cours VHDL M. MASMOUDI


Exemples séquentiel
36

boucle1: -- étiquette optionnelle


IF a = ‘1’ THEN FOR i IN 0 TO 10 LOOP
s := ‘1’; b := 2**i; - - calcul des puissances de 2
ELSIF b = ‘1’ THEN WAIT FOR 10 ns; -- toutes les 10 ns
s := ‘1’; END LOOP;
ELSE
s := ‘0’; CASE entree IS
WHEN ’11’ => s:= ‘1’;
END IF;
WHEN ’01’ => s:= ‘1;
WHEN ‘10’ => s:= ‘1’;
WHEN OTHERS => s :=‘0’;
END CASE;

Cours VHDL M. MASMOUDI


Plan
 C’est quoi le VHDL

 Modélisation concurrente

 Modélisation séquentielle

 Les machines à états

 Exemple de synthèse
Contraintes pour l’écriture de VHDL
38

 Penser composant (objet) plutôt que fonctionnalité (procédure).


 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.
 Décomposer les composants sous forme d’automate à états finis
 On peut alors soit coder directement l’automate en VHDL soit
décomposer à nouveau cet automate en un contrôleur et un chemin
de donnée
 Pour les traitements hautement pipelinés (stream processing), on
utilisera plutôt une description des différents étages de pipeline
interconnectés.

Cours VHDL M. MASMOUDI


Notion d’automate
39

 Un automate est
systématiquement décomposé
en:
 Un état (ensemble de registre)
 Quatre fonctions:
 Transition: sensible aux entrée et
à l’état, met à jour l’état.
 Validation des états: Cas des
machine clocké.
 Moore: sensible à l’état, met à
jour des sorties
 Mealy: sensible aux entrée et à
l’état, met à jour des sorties

Cours VHDL M. MASMOUDI


Exemple
40
 Soit la machine de Moore suivante:

Cours VHDL M. MASMOUDI


Travail demandé
41

 Expliquer le fonctionnement de cette automate.


 Donner le rôle de cette automate
 Modéliser les différente partie de l’automate
suivant le modèle vu en cours en utilisant:

 Créer une modélisation de cette machine à état.


 Simuler cette machine à état avec un test bench.

Cours VHDL M. MASMOUDI


Solution 1/4
42

Cours VHDL M. MASMOUDI


Solution 2/4
43

Cours VHDL M. MASMOUDI


Solution 3/4
44

Cours VHDL M. MASMOUDI


Solution 4/4
45

Cours VHDL M. MASMOUDI


Test bench
46

library ieee; begin


use ieee.std_logic_1164.all; sm1:sm port
entity tb_sm is map(stb,lsb,done,cp,init,add,shift);
end entity; process
architecture tb_sm_arch of tb_sm is begin
component SM is cp<='1';
PORT( wait for 50 ns;
stb,lsb,done,cp: in cp<='0';
std_logic; wait for 50 ns;
init,add,shift: out end process;
std_logic
);
end component;
signal
stb,lsb,done,cp,init,add,shift:
std_logic;

Cours VHDL M. MASMOUDI


Test bench
47
end if;
process (cp) if (cnt = 5) then
variable cnt: integer :=0; lsb<='0';
begin end if;
if (cp='1') then if (cnt = 9) then
if (cnt = 1) then lsb<='1';
lsb<='0'; end if;
stb<='0'; if (cnt = 10) then
done<='0'; lsb<='0';
end if; end if;
if (cnt = 2) then if (cnt = 12) then
stb<='1'; done<='1';
end if; end if;
if (cnt = 3) then cnt:=cnt+1;
stb<='0'; end if;
end if; end process;
if (cnt = 4) then end tb_sm_arch;
lsb<='1';
Cours VHDL M. MASMOUDI
Plan
 C’est quoi le VHDL

 Modélisation concurrente

 Modélisation séquentielle

 Les machines à états

 Exemple de synthèse
La théorie
49

Cours VHDL M. MASMOUDI


DB15 connector
50

DAC !

RGB Color
000 black
001 blue
010 green
011 cyan
100 red
101 magenta
110 yellow
111 white

Cours VHDL M. MASMOUDI


Les signaux
51

A VGA video signal contains 5 active signals:


• horizontal sync: digital signal, used for synchronisation of the
video.
• vertical sync: digital signal, used for synchronisation of the
video.
• red (R): analog signal (0-0.7 v).
• green (G): analog signal (0-0.7 v).
• blue (B): analog signal (0-0.7 v).
By changing the analog levels of the three RGB signals all
other colors are produced
The electron beam must be scanned over the viewing screen in
a sequence of horizontal lines to generate an image. The RGB
color information in the video signal is used to control the
strength of the electron beam.

Cours VHDL M. MASMOUDI


Synchronisation
52

horizontal sync

vertical sync
Cours VHDL M. MASMOUDI
Synchronisation
53

Front porch Back porch


TFP TBP

640 Pulse width


TPW
660
756
800

Cours VHDL M. MASMOUDI


VGA Timing
54

Cours VHDL M. MASMOUDI


Les constantes
-- Horizontal Parameter ( Pixel )
constant H_SYNC_CYC : integer := 96;
constant H_SYNC_BACK : integer := 48;
constant H_SYNC_ACT : integer := 640;
constant H_SYNC_FRONT : integer := 16;
constant H_SYNC_TOTAL : integer := 800;
-- Virtical Parameter ( Line )
constant V_SYNC_CYC : integer := 2;
constant V_SYNC_BACK : integer := 32;
constant V_SYNC_ACT : integer := 480;
constant V_SYNC_FRONT : integer := 11;
constant V_SYNC_TOTAL : integer := 525;
-- Start Offset
constant X_START : integer := H_SYNC_CYC+H_SYNC_BACK;
constant Y_START : integer := V_SYNC_CYC+V_SYNC_BACK;

55 Cours VHDL M. MASMOUDI


Top Level entity
56

SW X,Y
VGA_SYNC
Pixel R, G, B
VGA_BLANK
generation
VGA_CLK
VGA VGA_VS
CLK25
VGA_HS
CLK50 CLK
CLOCK_50 DIV
reset
VGA_R,
VGA_G, VGA_B

Mohamed MASMOUDI 2013-2014 II3-SLE


Top Level entity
57

entity vga_DE2 is
port(
CLOCK_50 :IN std_logic; -- 50 MHz
reset:IN std_logic; -- reset key
SW: IN std_logic_vector (9 downto 0);-- switches
VGA_CLK:OUT std_logic; --
VGA_HS: OUT std_logic; -- VGA H_SYNC
VGA_VS:OUT std_logic; -- VGA V_SYNC
VGA_BLANK:OUT std_logic; -- VGA BLANK
VGA_SYNC:OUT std_logic; -- VGA SYNC
VGA_R: OUT std_logic_vector(9 downto 0);-- VGA Red[9:0]
VGA_G: OUT std_logic_vector(9 downto 0);-- VGA Green[9:0]
VGA_B: OUT std_logic_vector(9 downto 0) -- VGA Blue[9:0]
);
end entity;

Mohamed MASMOUDI 2013-2014 II3-SLE


Annexes
Opérateurs
59
CATEGORIE TYPE OPERANDES SIGNIFICATION
and et
nand non-et
or boolean ou
nor bit non-ou
xor bit_vector ou exclusif
xnor non ou-exlusif
not non

+ + unaire (signe +) ou addition


- integer - unaire (signe -) ou soustraction
* real multiplication
/ division
abs valeur absolue
** exponentiation
mod integer modulo
rem reste
Opérateurs
60
CATEGORIE TYPE OPERANDES SIGNIFICATION
Entrée Résultat
= égal
/= tout type non égal
< boolean inférieur
<= scalaire inférieur ou égal
> supérieur
>= supérieur ou égal

sll logique gauche


srl bit_vector logique droite
rol (amplitude : integer) circulaire gauche
ror circulaire droite
bit
& bit_vector concaténation

Vous aimerez peut-être aussi