Vous êtes sur la page 1sur 204

IUT Saint-Etienne

Dpartement GEII

ENSL lectronique Numrique et


Synthse Logique

V. Fischer, F. Bernard
Septembre 2011

Informations de base sur le cours (1/2)


Responsable :

Viktor Fischer
Professeur lUniversit de Saint-Etienne

Contact :

IUT, GEII
fischer@univ-st-etienne.fr

Consultations :

Lundi aprs-midi

Structure du cours :

4 h CMs
26 x 1,5 h TDs
2 x 3 h TPs

Examen :

Compos dun QCM (partie thorique) et des


exercices (langage VHDL) pour la partie
pratique

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Informations de base sur le cours (2/2)


Objectifs :

- Connatre les fonctions de base de


llectronique numrique,
- Familiariser les tudiants avec les diffrentes
mthodes de conception des systmes
numriques simples.

Comptences minimales :
- Savoir dcomposer une fonction en blocs
combinatoires et squentiels,
- Savoir choisir et mettre en oeuvre un circuit
numrique conventionnel ou programmable,
- Savoir utiliser une chane de dveloppement
(simulation et synthse),
- Savoir concevoir, simuler et tester un circuit
logique programmable.

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Table des matires


Introduction (CM1)
Chapitre 1 Algbre de Boole fonctions logiques et leur
ralisation dans le matriel (TD)
Chapitre 2 Systmes de numration (TD)
Chapitre 3 Oprations arithmtiques sur des nombres exprims
en systme binaire (TD)
Chapitre 4 Conception de circuits logiques (CM1)
Chapitre 5 Introduction au langage VHDL (CM1 + TD)
Chapitre 6 Logique combinatoire et sa ralisation (TD)
Chapitre 7 Logique squentielle et sa ralisation (TD)
Chapitre 8 Machines dtats (TD)
Chapitre 9 Modularit et conception hirarchique du design (TD)
Chapitre 10 Familles technologiques de circ. intgrs logiques (CM2)
Chapitre 11 Familles fonctionnelles de circ. intgrs logiques (CM3)
Chapitre 12 Circuits logiques configurables (CM4)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Rfrences bibliographiques pour VHDL


VHDL du langage la modlisation, R.AIRIAU, J.M.BERGE, V.OLIVE,
R.ROUILLARD, Presses Polytechniques et Universitaires Romandes
VHDL Modeling for Digital Design Synthesis, YU.CHIN HSU,
KEVIN.F.TSAI, JESSIE.T.LIU, ERIC.S.LIN, Kluwer Academic
Publishers
A guide to VHDL, STANLEY MAZOR, PATRICIA LANGSTRAAT,
Kluwer Academic Publishers
VHDL : mthodologie de design et techniques avances, T.
SCHNEIDER, Dunod
VHDL Introduction la synthse logique, P. LARCHER, Eyrolles
VHDL Du langage au circuit, du circuit au langage, J. WEBER, M.
MEAUDRE, Masson
Avril 2011

V. Fischer, F. Bernard: ENSL1

http://www.enseirb.fr/~nouel
http://www.eda.org/

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Chapitre 4
Mthodes de conception
de circuits logiques

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Mthodes de conception de circuits logiques


Synthse logique
Procdure de la conception de systmes logiques : de la
spcification jusqu' l'implantation du systme dans le matriel

Outil classique de llectronicien pour la conception dun


circuit logique : le schma lectrique
Utilise des portes ou des circuits lmentaires
Peut comporter plusieurs niveaux hirarchiques: peu performant
dans le cas de systmes complexes
Difficile dboguer sans raliser de prototype

Les langages de description (HDL Hardware Description


Language) - outils de type textuel offrant :
Une plus grande souplesse demploi
Une plus grande diversit des techniques de description (niveaux
dabstraction)
La simulation permet de simuler la logique avant de limplanter
dans le matriel gain de temps considrable
Septembre 2011

V. Fischer, F. Bernard: ENSL1

Implantation de fonctions logiques dans le matriel


Implantations bases sur la logique cble
tapes de la conception :
Spcification de la fonction raliser
Comportement (par exemple par le tableau de vrit)
Nombre d'entres/sorties
Vitesse, surface (cot) et consommation, etc.

En TP

Construction de tableaux de Karnaugh


Minimisation de fonctions en utilisant les tableaux de
Karnaugh
Conversion ventuelle de la fonction en logique NAND, NOR,

Choix de la technologie (CMOS ou TTL) et du type de circuits


Ralisation du prototype (cblage)
Dbogage du prototype
Ralisation dune carte imprime

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Implantation de fonctions logiques dans le matriel


(suite)

Implantations bases sur les circuits logiques configurables


tapes de la conception :
Spcification de la fonction raliser
Description de la logique en schma ou en HDL
Simulation fonctionnelle
En TD,
TP et
Choix de la technologie et de la famille
TR
Synthse logique
Placement routage
Simulation temporelle (ventuelle)
En TP
Ralisation dune carte imprime
et TR
Configuration du circuit

Septembre 2011

V. Fischer, F. Bernard: ENSL1

10

Langage VHDL
Langage VHDL

VHDL = VSIC HDL (VSIC = Very High Speed Integrated Circuits)


Conu pour le DoD (Department of Defence) aux USA par Intermetrics, IBM,
Texas Instruments
Normalis par IEEE
norme IEEE 1076 en 1987, puis 1993
Trs rpandu, surtout en Europe et dans le milieu universitaire
Langage complexe avec haut niveau d'abstraction, inspir par lADA
(destin la programmation de systmes parallles)
Utilis pour :
Problme : Les systmes qui
Spcification
peuvent tre modliss, ne sont
Modlisation
pas forcment synthtisables !
Synthse

Concurrent : Langage Verilog HDL

Plus proche du matriel, tendu aux USA

Septembre 2011

V. Fischer, F. Bernard: ENSL1

11

Modlisation = Description + simulation


Changements importants des mthodes de travail des
lectroniciens lis lvolution de la complexit des
systmes :
tapes classiques de prototypage - remplaces par des tapes de
simulation permettant de diminuer notablement les cots et les
dlais de dveloppement
La simulation est prsente dans toutes les phases de la conception
dun systme logique

Rle de la simulation : simuler le modle avant de le synthtiser


Deux types de simulation : simulation fonctionnelle et simulation
physique (temporelle)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

12

Type de simulation
Simulation fonctionnelle :
Beaucoup plus rapide, moins prcise
Objectif - la preuve formelle du fonctionnement pour chaque
lment du systme
Aucun dlai de propagation n'est pris en compte, le systme
physique est considr comme parfait

Simulation physique (simulation temporelle) :


Beaucoup plus prcise, beaucoup plus lente
Objectif - obtenir une simulation la plus proche possible du systme
physique rel
Prend en compte des dlais physiques de propagation lintrieur
du systme (circuit)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

13

Flot de conception dun circuit logique en HDL


Spcification du circuit
concevoir

Banc de test
pour la simulation

Description comportementale
en HDL
Dcomposition hirarchique
en blocs fonctionnels

Simulation
fonctionnelle

Description structurelle
en HDL
Synthse logique
et optimisation

Simulation
fonctionnelle

Librairie cible
de primitives

Netliste structurelle (en HDL)

Placement & routage de primitives


dans une cible ASIC ou FPGA

Simulation
fonctionnelle

Netliste structurelle comportementale


(en HDL)
Simulation
Fabrication ou programmation/configuration
temporelle
du circuit
Septembre 2011

V. Fischer, F. Bernard: ENSL1

14

Chapitre 5
Langage VHDL
- Introduction

Septembre 2011

V. Fischer, F. Bernard: ENSL1

15

Prambule
Caractristiques du langage VHDL :

Un vocabulaire trs volumineux


Des contextes dutilisation diffrents (spcification, modlisation,
synthse)

Deux aspects importants du langage VHDL :

VHDL est un langage de description des structures matrielles et non


pas un langage de programmation classique de linformatique
scientifique (attention aux rflexes dinformaticien)
Certains lments de ce langage ne sont pas utilisables dans tous les
contextes dapplication

A noter :
Dans les chapitres suivants nous allons utiliser un sous-ensemble du
langage VHDL structures de base utilises pour la synthse logique !
Septembre 2011

V. Fischer, F. Bernard: ENSL1

16

Units de conception
Une description VHDL comporte un certain nombre dunits de
conception. Une unit de conception constitue un sous ensemble de la
structure logique pouvant tre compil sparment, stock dans un
fichier indpendant et sauvegard dans une librairie. Une unit de
conception peut se trouver :
Dans un fichier *.vhd (une ou plusieurs units dans un fichier)
Dans un rpertoire (de travail), dans plusieurs fichiers *.vhd
Dans une librairie (un paquetage)
Mthode applique

Units de conception :

en ENSL1

Entit lment de base (composant, module) dfinie par la :


spcification dentit (= interface externe symbole)
architecture (= structure interne schma)

Paquet regroupement dlments dfini par la


spcification de paquet
corps de paquet

Non utilis
en ENSL1

Configuration association architecture - entit


Septembre 2011

V. Fischer, F. Bernard: ENSL1

17

Entit de conception

Entit de conception lment


de base de construction :

entit de conception

dclaration
de lentit
architecture

Vue de lextrieur par


lintermdiaire de signaux
dentres/sorties (boite noire)
A lintrieur spcifie par
larchitecture

Dclaration de l'entit
Nom
Paramtres (optionnels)
Entres/sorties

Architecture
Structure interne de l'entit

Septembre 2011

V. Fischer, F. Bernard: ENSL1

18

Dclaration dentit
Dcrit le nom et linterface du composant
(signaux dentres et sorties)
Nom dentit

Types de ports
Noms de ports

ENTITY and2_op IS
PORT(
a, b: IN STD_LOGIC;
z
: OUT STD_LOGIC
);
END and2_op;

Point-virgule, sauf
la dernire ligne
Sans point-virgule

Modes de ports (directions de flots de donnes)


Mots rservs

Notre convention : crire les mots rservs en majuscules


But : Lisibilit du code (mme en noir et blanc)

A noter :
Nous n'utiliserons pas les possibilits de paramtrer des modules.
Septembre 2011

V. Fischer, F. Bernard: ENSL1

19

Description darchitecture
Architecture - dcrit la structure ou le comportement du
composant
Plusieurs architectures pour la mme entit (module) peuvent
exister. Ce cas est similaire la possibilit d'implanter une fonction
logique soit en utilisant des portes NAND ou en utilisant des portes
NOR ou d'autres portes logiques.
Nom darchitecture

Nom dentit

ARCHITECTURE flot_don OF and2_op IS


BEGIN
z <= a AND b;
END flot_don;

Mots rservs
pour le dbut
et la fin du corps
de larchitecture
Septembre 2011

Espace de dclaration
pour l'architecture
Corps de
l'architecture
(Ici : Affectation du
signal de sortie)

Notre convention : crire les mots rservs en majuscules


But : Lisibilit du code (mme en noire et blanc)

V. Fischer, F. Bernard: ENSL1

20

Vue densemble : dclaration dentit et architecture


Code VHDL complet d'une entit
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

Dclaration
de l'entit

Description de
l'architecture

Septembre 2011

ENTITY and2_op IS
PORT(
a, b: IN STD_LOGIC;
z
: OUT STD_LOGIC);
END and2_op;

Dclaration de la
bibliothque IEEE ncessaire pour des
signaux logiques
standards

ARCHITECTURE flot_don OF and2_op IS


BEGIN
z <= a AND b;
END flot_don;

V. Fischer, F. Bernard: ENSL1

21

Modes de ports
Ils spcifient la direction du transfert des donnes
vis--vis du composant
IN : port dentre (unidirectionnel) - les donnes arrivant sur ce port
peuvent tre lus lintrieur du composant, elles peuvent donc se
trouver seulement droite dans lexpression daffectation dun signal
ou dune variable.
OUT : port de sortie (unidirectionnel) - les donnes sortant peuvent tre
seulement mises jour (et non pas lus) lintrieur du composant,
elles peuvent se trouver seulement gauche de lexpression
daffectation.
INOUT : port dentre/sortie (bi-directionnel) les donnes peuvent
tre mises jour et lus lintrieur du composant, elles peuvent se
trouver gauche ou droite de lexpression daffectation.
A noter : Il existe un autre mode (Buffer) que nous n'utiliserons pas
Septembre 2011

V. Fischer, F. Bernard: ENSL1

22

Classes, types et composition de donnes


Classes de donnes

Signaux (SIGNAL)
Variables (VARIABLE)
Constantes (CONSTANT)

Types de donnes

Entiers (INTEGER)
Bits (BIT)
Boolens (BOOLEAN)
Caractres (CHARACTER)
Rels (REAL)
Physiques (TIME)
numrs (ENUMERATED)
Logique standard (STD_LOGIC)

Bibliothque standard

Bibliothque IEEE

Composition de donnes

Scalaires - donne compose d'un seul lment


Composites - donne compose de plusieurs lments (VECTOR)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

23

Modles de conception en VHDL


Modles de conception
en VHDL

flot de
donnes
Expressions
concurrentes

structurel
Composants et
interconnexions

Sous-ensemble le plus appropri


pour la synthse

Septembre 2011

V. Fischer, F. Bernard: ENSL1

comportemental
Expressions
squentielles
Registres
Machines dtats
Bancs de test

24

Exemple : XOR3
U1

U2

a
b

ENTITY xor3
PORT(
a
:
b
:
c
:
resul :
);
END xor3;

Septembre 2011

resul

IS
IN STD_LOGIC;
IN STD_LOGIC;
IN STD_LOGIC;
OUT STD_LOGIC

V. Fischer, F. Bernard: ENSL1

25

Architecture Flot de donnes (Dataflow)


U1

U2

u1_out

a
b

resul

Nom darchitecture

Nom dentit

ARCHITECTURE xor3_flotdon OF xor3 IS


SIGNAL u1_out: STD_LOGIC;
BEGIN

Dclaration
du signal interne

u1_out <= a XOR b;


resul

<= u1_out XOR c;

END xor3_flotdon;

Septembre 2011

V. Fischer, F. Bernard: ENSL1

26

Description darchitecture par un Flot de donnes

Le modle Flot de donnes dcrit les relations internes


entre les donnes dans le module.
La description de larchitecture base sur ce modle utilise
les expressions concurrentes pour raliser la logique. Ces
expressions sont values en mme temps (en parallle),
donc leur ordre nest pas important !
Le modle Flot de donnes est le plus utile, si la logique
peut tre reprsente par des fonctions boolennes.

Septembre 2011

V. Fischer, F. Bernard: ENSL1

27

Architecture utilisant le modle structurel


ARCHITECTURE xor3_struct OF xor3 IS
SIGNAL u1_out: STD_LOGIC;
COMPONENT xor2
PORT(
i1 : IN STD_LOGIC;
i2 : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END COMPONENT;
BEGIN
u1: xor2 PORT MAP (i1 => a,
i2 => b,
y => u1_out);

Dclaration du signal interne


Dclaration du composant
(qui est dfini ailleurs)
Instanciations du composant

i1
i2

y
XOR2

u1_out

resul

i1

u2: xor2 PORT MAP (i1 => u1_out,


i2 => C,
Y => resul);
END xor3_struct;
Septembre 2011

y
i2

V. Fischer, F. Bernard: ENSL1

u1

i1

c
XOR3

y
i2

u2
28

Architecture utilisant le modle structurel (suite)

Le modle structurel est le plus simple comprendre. Il est


le plus proche la saisie du schma : il utilise les blocs
simples pour composer des fonctions logiques.
Les composants peuvent tre interconnects dune manire
hirarchique.
Dans le modle structurel nous pouvons connecter les
ports simples ou les composants complexes et abstrait.
Le modle structurel de larchitecture est utile pour la
ralisation dune conception o les sous-blocs sont
connects dune manire naturelle.

Septembre 2011

V. Fischer, F. Bernard: ENSL1

29

Dclaration et instanciation du composant


Association des connexions par leur noms (recommande)

COMPONENT xor2 IS
PORT(
i1 : IN STD_LOGIC;
i2 : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END COMPONENT;
u1: xor2 PORT MAP (i1 => a,
i2 => b,
y => u1_out);

Nom de linstanciation
Septembre 2011

Dclaration du composant
(dans la partie dclarations
de larchitecture)

Instanciation du composant
(dans le corps de larchitecture)

Nom du composant
V. Fischer, F. Bernard: ENSL1

30

Architecture utilisant le modle comportemental


ARCHITECTURE xor3_comp OF xor3 IS
BEGIN
xor3_proc: PROCESS (a, b, c)
BEGIN
IF ((a XOR b XOR c) = '1') THEN
resul <= '1';
ELSE
resul <= '0';
END IF;
END PROCESS xor3_proc;
END xor3_comp;

Le modle comportemental dcrit ce qui se passe la sortie


du module (en fonction des entres) sans prciser la structure
interne du module (qui reprsente une bote noire).
Ce modle utilise une structure VHDL appele PROCESS
Si possible, ne pas utiliser pour synthtiser la logique
combinatoire
Septembre 2011

V. Fischer, F. Bernard: ENSL1

31

Chapitre 6
Ralisation de fonctions
logiques combinatoires
dans le matriel

Septembre 2011

V. Fischer, F. Bernard: ENSL1

32

Fonctions logiques combinatoires


Fonction logique combinatoire - dfinition
La valeur la sortie dune fonction logique combinatoire ne
dpend que des valeurs de signaux des entres (leur
combinaison) et (contrairement la logique squentielle) ne
dpend pas de ltat interne de la fonction
Exemple : Y = f(A, B, C) = A + B + C
Y dpend que de A, B, et C

Fonctions combinatoires de base

Fonctions logiques simples


Gnrateurs de parit
Multiplexeurs, dmultiplexeurs
Codeurs, dcodeurs
Fonctions arithmtiques simples (addition, soustraction, etc.)
Comparateurs
Fonctions dentres/sorties avec la logique trois tats

Septembre 2011

V. Fischer, F. Bernard: ENSL1

33

Implantation des fonctions logiques combinatoires


en VHDL - structures concurrentes
Instructions concurrentes

Affectation inconditionnelle dun signal


signal <= expression (avec les signaux et/ou avec les constantes);
Affectation conditionnelle dun signal
signal <= expression1 WHEN condition ELSE expression2;
Affectation slective dun signal
WITH selecteur SELECT
signal <= expression1 WHEN valeur_selecteur, ;

Instanciation de composant
Duplication du matriel
tiquette : FOR variable_de_boucle IN intervalle GENERATE
{instruction(s) concurrente(s)}
END GENERATE tiquette;

Duplication conditionnelle du matriel


tiquette : IF condition GENERATE
{instruction(s) concurrente(s)}
END GENERATE tiquette;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

34

Instructions concurrentes Exemple


ENTITY multiplexeurs IS
PORT (a, b, sel : IN bit;
x, y, z
: OUT bit);
END multiplexeurs;

Entit multiplexeurs
Architecture rtl
a

ARCHITECTURE rtl OF multiplexeurs IS


BEGIN
-- affectation inconditionnelle
x <= (a AND NOT sel) OR (b AND sel);
-- affectation conditionnelle
y <= a WHEN sel='0' ELSE
b;
-- affectation slective
WITH sel SELECT
z <= a WHEN '0',
b WHEN '1',
'0' WHEN OTHERS;
END rtl;
Septembre 2011

sel
a
b

b
sel
a
b

sel

V. Fischer, F. Bernard: ENSL1

sel

35

Instructions concurrentes Exemple (suite)

a
x

Puisque les trois descriptions


dcrivent la mme structure
logique, larchitecture rtl sera
implant dans le matriel de la
faon suivante - deux structures
redondantes seront supprimes

y
b

z
sel

Septembre 2011

V. Fischer, F. Bernard: ENSL1

36

Instructions concurrentes (suite)


Assignation conditionnelle
signal_cible <= valeur1 WHEN condition1 ELSE
valeur2 WHEN condition2 ELSE
. . .
valeurN-1 WHEN conditionN-1 ELSE
valeurN;
valeurN
valeurN-1

...

signal_cible
valeur2

conditionN-1

valeur1

condition2

condition1

Conclusion : Codage par priorit prudence !


Septembre 2011

V. Fischer, F. Bernard: ENSL1

37

Instructions concurrentes (suite)


Codage par priorit dune
affectation conditionnelle :
Logique
obtenue

sel1

-- affectation conditionnelle
y <= a WHEN sel1 = '1' ELSE
b WHEN sel2 = '1 ELSE
c;

sel2
a
y

La slection du signal a
avec le signal sel1 est
prioritaire
devant b et c !

q = (sel1 AND a)
OR ((NOT sel1) AND sel2 AND b)
OR ((NOT sel1) AND (NOT sel2) AND c)
Septembre 2011

V. Fischer, F. Bernard: ENSL1

38

Instructions concurrentes (suite)


Affectation slective
WITH selecteur SELECT
signal_cible <= valeur1 WHEN valeur_selecteur,
valeur2 WHEN valeur_selecteur,
...
valeurN WHEN OTHERS;

Exemple dapplication : multiplexeur


valeur1
valeur2
valeur3
valeur4

signal_cible
MUX

selecteur
Septembre 2011

V. Fischer, F. Bernard: ENSL1

39

Instructions concurrentes (suite)


LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY multiplexeur IS
PORT (a, b, c, d : IN std_logic;
sel
: IN std_logic_vector(1 DOWNTO 0);
y
: OUT std_logic);
END multiplexeur;
ARCHITECTURE rtl OF multiplexeur IS
BEGIN
-- assignation slectionne
WITH sel SELECT
y <= a WHEN "00",
b WHEN "01",
Slection
c WHEN "10",
d WHEN OTHERS;
END rtl;

y = (a AND
OR (b
OR (c
OR (d
Septembre 2011

sans priorit !

(NOT sel(1)) AND (NOT sel(0)))


AND (NOT sel(1)) AND sel(0))
AND sel(1) AND (NOT sel(0)))
AND sel(1) AND sel(0))
V. Fischer, F. Bernard: ENSL1

40

Implantation des fonction logiques simples


Implantation base sur lutilisation doprateurs de base
AND, OR, NOT, XOR, NAND, NOR
Quelques exemples dimplantation de la fonction ET logique en
VHDL

Ver 1 :

y <= a AND b;

Ver 2 :

y <= 1 WHEN (a=1 AND b=1) ELSE 0;

Ver 3 :

y <= 0 WHEN (a=0 OR b=0) ELSE 1;

Ver 4 :

Concatnation
s <= a & b;
de a et b
WITH s SELECT
Noubliez pas les
y <= 1 WHEN "11"
branches alternatives !!!
0 WHEN OTHERS;

Septembre 2011

V. Fischer, F. Bernard: ENSL1

41

Implantation des fonction logiques volues


Utilisation de laffectation conditionnelle si certains signaux
sont prioritaires (slecteurs avec priorit)
Ex. :

y <= a WHEN sel(0)=1 ELSE


b WHEN sel(1)=1 ELSE
c;
Utilisation de laffectation slective pour obtenir une
structure rgulire sans priorit (multiplexeurs)
Ex. :

WITH sel SELECT


y <= a WHEN "00"
b WHEN "01";
c WHEN OTHERS;
Septembre 2011

Noubliez pas les


branches alternatives !!!

V. Fischer, F. Bernard: ENSL1

42

Fonctions combinatoires :
Gnrateurs de parit
Gnrateur de parit gnrent le bit de parit qui permet de
dtecter les erreurs survenues pendant la transmission ou la
sauvegarde (dans la mmoire) de donnes
Principe le bit de parit est gal un si le nombre de uns dans la
donne est impaire pour une donne de N bits on peut le raliser
avec une fonction logique OU EXCLUSIF N entres
A noter : le nombre paire derreurs nest pas dtect
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY parity IS
PORT (a
: IN std_logic_vector(7 DOWNTO 0);
par_out : OUT std_logic);
END parity;
ARCHITECTURE rtl OF parity IS
BEGIN
-- assignation inconditionnelle
par_out <= a(7) XOR a(6) XOR a(5) XOR a(4)
XOR a(3) XOR a(2) XOR a(1) XOR a(0);
END rtl;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

43

Fonctions combinatoires :
Gnrateur de parit paramtrable
Fonction gnrique fonction universelle, adaptable aux besoins
la largeur du gnrateur peut tre dfinie par le paramtre N

Exemple de la ralisation structure FOR GENERATE :


tiquette : FOR variable_de_boucle IN intervalle GENERATE
[dclarations]
Optionnelles
BEGIN
{assignation(s) concurrente(s)}
END GENERATE tiquette;
tiquette
obligatoire

Structure raliser pour N = 8 :


data(0)

data(1)

Septembre 2011

data(2)

par_out
data(3)

data(4)

data(5)

V. Fischer, F. Bernard: ENSL1

data(6)

data(7)

44

Fonctions combinatoires :
Gnrateur de parit paramtrable (suite)
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

On peut modifier la largeur


du gnrateur en modifiant
le paramtre WIDTH

ENTITY parity IS
GENERIC (WIDTH : INTEGER := 8);
PORT (data
: IN std_logic_vector(WIDTH-1 DOWNTO 0);
par_out : OUT std_logic);
END parite;
ARCHITECTURE rtl OF parite IS
SIGNAL par_int : std_logic_vector(WIDTH-1 DOWNTO 0);

Nous pouvons utiliser le signal


BEGIN
par_int(0) <= data(0);
par_int(WIDTH-1) avant quil soit
par_out <= par_int(WIDTH-1);
affect (structure concurrente)
Parity_gen:
FOR i IN 1 TO (WIDTH-1) GENERATE
par_int(i) <= data(i) XOR par_int(i-1);
END GENERATE Parity_gen;
END rtl;

par_out = data(0) XOR data(1) XOR data(2) XOR data(3)


XOR data(4) XOR data(5) XOR data(6) XOR data(7)
Septembre 2011

V. Fischer, F. Bernard: ENSL1

45

Fonctions combinatoires :
Multiplexeurs et dmultiplexeurs
Multiplexeurs permettent de slectionner un parmi plusieurs
signaux dentre
Dmultiplexeurs permettent de rediriger la valeur prsente
lentre vers une parmi plusieurs sorties
Schma du principe :
Multiplexeur

Dmultiplexeur

Symbole :
a
b
c
d

a
b
c
d

.
.
.

MUX

sel
a b

c d a b

c d

Exemple dutilisation transfert de plusieurs donnes (4 dans notre


cas) par une liaison srie une tranche de temps est attribue
priodiquement chaque canal
Septembre 2011

V. Fischer, F. Bernard: ENSL1

46

Fonctions combinatoires :
Implantation dun multiplexeur 4 entres
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY multiplexer
PORT (a, b, c, d :
sel
:
y
:
END multiplexer;

IS
IN std_logic;
IN std_logic_vector(1 DOWNTO 0);
OUT std_logic);

ARCHITECTURE rtl OF multiplexer IS


BEGIN
-- assignation slective
WITH sel SELECT
y <= a WHEN "00",
b WHEN "01",
Slection
c WHEN "10",
d WHEN OTHERS;
END rtl;

y = (a AND
OR (b
OR (c
OR (d
Septembre 2011

sans priorit !

(NOT sel(1)) AND (NOT sel(0)))


AND (NOT sel(1)) AND sel(0))
AND sel(1) AND (NOT sel(0)))
AND sel(1) AND sel(0))
V. Fischer, F. Bernard: ENSL1

47

Fonctions combinatoires :
Codeurs et dcodeurs
Codeurs permettent de coder une donne (binaire) dune
manire plus efficace ou dune manire plus avantageuse
Dcodeurs ralisent une opration inverse par rapport au
codage et permettent de reprsenter une information dune
manire mieux comprhensible ou plus facile utiliser
Exemple : Codeur 1 sur N binaire
Codeur

1 sur 8 binaire
b(7)=0
b(6)=0
b(5)=1
b(4)=0
b(3)=0
b(2)=0
b(1)=0
b(0)=0

Valeur 1 sur 8
Septembre 2011

Dcodeur

binaire 1 sur 8

bin(2) = 1
bin(1) = 0
bin(0) = 1

5
Valeur binaire

b(7)=0
b(6)=0
b(5)=1
b(4)=0
b(3)=0
b(2)=0
b(1)=0
b(0)=0

Bit 5 gale un
( chaque instant
donn, seulement
un bit peut tre gal
un)

Valeur 1 sur 8

V. Fischer, F. Bernard: ENSL1

48

Fonctions combinatoires :
Codeurs et dcodeurs (suite)
Codeur avec priorit donne le numro (en binaire) du canal
gal un ; si plusieurs canaux sont gaux un, cest le
numro du canal prioritaire, qui est donn la sortie
Exemple Codeur 1 sur 3 binaire avec priorit
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY priority_encod IS
PORT (a, b, c : IN std_logic;
bin_out : OUT std_logic_vector(1 DOWNTO 0));
END priority_encod;
ARCHITECTURE rtl OF priority_encod IS
BEGIN
-- assignation conditionnelle
bin_out <= "01" WHEN a = '1' ELSE
"10" WHEN b = '1' ELSE
"11" WHEN c = '1' ELSE
"00";
END rtl;

Septembre 2011

V. Fischer, F. Bernard: ENSL1

a est prioritaire
devant b, qui
est prioritaire
devant c

49

Fonctions combinatoires :
Codeurs et dcodeurs (suite)
Dcodeur code binaire code afficheur sept segments
permet dafficher une valeur binaire de 4 bits en hexadcimal
sur un afficheur (avec les diodes LED) de sept segments
Schma dinterconnexion :

Codage de segments :
VCC

Afficheur 7 segments
anode commune

a
f

Rsistances pour limiter


le courrant 2-10mA
bin(3)
bin(2)
bin(1)
bin(0)

a
b
c
d
e
f
g

c
d

Sorties collecteur ouvert

Affichage de caractres hexadcimaux :

Septembre 2011

V. Fischer, F. Bernard: ENSL1

50

Fonctions combinatoires :
Blocs arithmtiques
Oprations arithmtiques peuvent tre ralises en VHDL

Au niveau bits (niveau bas dabstraction)


Au niveau doprateurs arithmtiques (seulement les oprateurs
daddition et de soustraction sont supports pour la synthse)

Oprateur daddition bit par bit additionneur complet Full Adder - FA


Symbole

Tableau de vrit

x
y

FA

cout

cin

cout

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
0
1
0
1
1
1

0
1
1
0
1
0
0
1

cin
Somme :
s = x XOR y XOR cin
Retenue :
cout = (x AND y) OR (cin AND X)
OR (cin AND Y)
Septembre 2011

V. Fischer, F. Bernard: ENSL1

51

Fonctions combinatoires :
Blocs arithmtiques (suite)
Ralisation dun additionneur de quatre bits
bas sur un additionneur complet
b3 a3

c4 = cout

FA
s3

b2 a2

c3

FA
s2

b1 a1

c2

FA

Chemin
critique

b0 a0

c1

s1

FA

c0 = cin

s0

Chemin critique le chemin le plus long dans le flot de donnes


(entre une entre et une sortie quelconque) il correspond la
fonction logique du bloc la plus complexe

Ici nous avons 5 sorties, donc 5 fonctions logiques (cout, s0, s1, s2, s3),
les fonctions les plus complexes sont cout et s3. elles reprsentent les
chemins critiques du bloc

Septembre 2011

V. Fischer, F. Bernard: ENSL1

52

Fonctions combinatoires :
Blocs arithmtiques (suite)
Ralisation dun additionneur de quatre bits en utilisant un oprateur
arithmtique (haut niveau dabstraction)
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY addition
PORT (a, b
:
s
:
c_out
:
END addition;

Paquetage ncessaire pour


les oprations arithmtiques

IS
IN std_logic_vector(3 DOWNTO 0);
OUT std_logic_vector(3 DOWNTO 0);
OUT std_logic);

ARCHITECTURE rtl OF addition IS


SIGNAL s_int : std_logic_vector(4 DOWNTO 0);
BEGIN
s_int <= ('0' & a) + ('0' & b);
Extension du a et b sur 5 bits
s
<= s_int (3 DOWNTO 0);
(le cinquime bit sera la retenue)
c_out <= s_int(4);
END rtl;
A noter :
En ralit, le compilateur traduit la description de haut niveau dabstraction (abstrait du
matriel) en une structure daddition bit par bit (probablement en utilisant ladditionneur
complet), qui correspond la structure logique disponible dans le matriel
Septembre 2011

V. Fischer, F. Bernard: ENSL1

53

Fonctions combinatoires :
Blocs arithmtiques (suite)
Unit arithmtique et logique

C_out
Op1 Op0 Opration

A
R
B

R=A+B

R=A-B

R = A and B

R = A or B

Op1 Op0

Septembre 2011

V. Fischer, F. Bernard: ENSL1

54

Fonctions combinatoires :
Blocs arithmtiques (suite)
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_signed.ALL;
ENTITY alu IS
PORT (a, b
op1, op0
r
c_out
END alu;

:
:
:
:

Paquetage ncessaire pour les


oprations arithmtiques signes

IN std_logic_vector(7 DOWNTO 0);


IN std_logic;
OUT std_logic_vector(7 DOWNTO 0);
OUT std_logic);

ARCHITECTURE rtl OF alu IS


SIGNAL oper
: std_logic_vector(1 DOWNTO 0);
SIGNAL int
: std_logic_vector(8 DOWNTO 0);

BEGIN
oper
<= op1 & op0; -- code operation
c_out <= int(8);
r
<= int(7 DOWNTO 0);
WITH oper SELECT
int <= (('0'& a) + ('0'& b)) WHEN "00",
(('0'& a) - ('0'& b)) WHEN "01",
('0' & (a AND b))
WHEN "10",
('0' & (a OR b))
WHEN OTHERS;
END rtl;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

55

Fonctions combinatoires :
Sorties commandes
Sorties trois tats
oe

-- assignation conditionnelle
y <= a WHEN oe = '1' ELSE
'Z';

Septembre 2011

oe

y doit tre dclar comme un


signal de la logique standard et
non pas comme un bit !

V. Fischer, F. Bernard: ENSL1

56

Fonctions combinatoires :
Sorties commandes (suite)
Collecteur ouvert
seulement deux tats la sortie sont possibles : Z et 0
oe

oe

-- assignation conditionnelle
y <= '0' WHEN oe = '1' ELSE
'Z';

Septembre 2011

oe

V. Fischer, F. Bernard: ENSL1

57

Fonctions combinatoires :
Sorties commandes (suite)
Entre sortie bidirectionnelle
oe
a_out

a_in = y

y_out
y
bus
externe

a_out et a_in peuvent avoir des


valeurs diffrentes
( deux signaux ncessaires
pour la simulation)

Conflits sur le bus !


Septembre 2011

oe

a_out

y
a_in

y_out

V. Fischer, F. Bernard: ENSL1

58

Fonctions combinatoires :
Sorties commandes (suite)
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY es_bidir IS
PORT (y
: INOUT std_logic;
oe
: IN std_logic;
a_log2bus : IN std_logic;
a_bus2log : OUT std_logic);
END es_bidir;

oe
a_log2bus
a_bus2log

ARCHITECTURE rtl OF es_bidir IS


BEGIN
y <= a_log2bus WHEN oe = '1' ELSE
'Z';
Haute
a_bus2log <= y;
impdance
END rtl;
Stimulateur

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Conflits sur le bus

59

Chapitre 7
Fonctions de base
de la logique squentielle

Septembre 2011

V. Fischer, F. Bernard: ENSL1

60

Fonctions logiques squentielles


Fonction logique squentielle - dfinition
La valeur la sortie dune fonction logique squentielle
dpend de ltat actuel des entres ET des tats passs ceci
implique lutilisation dun lment de mmorisation

Deux types principaux de logique squentielle


Logique asynchrone ltat de la logique peut changer tout
instant
Logique synchrone ltat de la logique peut changer quaux
instants donns front montant ou front descendant dun
signal dhorloge

Fonctions squentielles de base

Bascules asynchrones RS, D verrouillage (D latch)


Bascules synchrones - D, T, RS, JK
Compteurs asynchrones et compteurs synchrones
Registres, registres dcalage
Machines dtats

Septembre 2011

V. Fischer, F. Bernard: ENSL1

61

Blocs squentiels lmentaires


Bascules asynchrones
Bascule circuit bi-stable, capable de mmoriser un bit

Llment de mmorisation est souvent ralis par une contre-raction


(la sortie de la fonction est redirige vers les entres)

Bascule RS asynchrone bascule constituant la base de toutes les


autres bascules (S = Set = mise un, R = Reset = remise zro)
Bascule RS avec les portes NAND
S

Septembre 2011

Q
_
Q

Tableau de vrit
S

Q+

nQ+

tat suivant

-Q

-nQ

tat prcdent

Mise zro

Mise un

V. Fischer, F. Bernard: ENSL1

Ambigut

Interdit

62

Blocs squentiels lmentaires


Bascules asynchrones (suite)
Bascule RS verrouillage
Si lentre Ena = 0, la bascule est
verrouille

Verrouillage
S
Q
Ena
_
Q
R

Septembre 2011

Tableau de vrit
Ena

Q+

nQ+

-Q

-nQ

-Q

-nQ

-Q

-nQ

-Q

-nQ

-Q

-nQ

Ambigut

V. Fischer, F. Bernard: ENSL1

63

Blocs squentiels lmentaires


Bascules asynchrones (suite)
Bascule D verrouillage D Latch
D
Q
Ena
_
Q

Tableau de vrit
Ena

Q+

nQ+

-Q

-nQ

Ena

-Q

-nQ

Q
Verrou

Septembre 2011

Passante Verrou

Passante

V. Fischer, F. Bernard: ENSL1

64

Blocs squentiels lmentaires


Bascules asynchrones (suite)
Bascule D verrouillage D Latch en flot de donnes
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY d_latch IS
PORT ( d
: IN std_logic;
ena : IN std_logic;
q : OUT std_logic
);
END d_latch;
ARCHITECTURE data_flow OF d_latch IS
SIGNAL n_s, n_r
: std_logic;
SIGNAL q_int, n_q_int : std_logic;
BEGIN
n_s
<= NOT (d AND ena);
n_r
<= NOT ((NOT d) AND ena);
-n_q_int <= NOT (q_int AND n_r);
q_int
<= NOT (n_q_int AND n_s);
-q
<= q_int;
END data_flow;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

Description flot de
donnes base sur
la figure prcdente,
difficile destimer
son comportement
Solution :
Description
comportementale,
voir la suite
65

Structures VHDL squentielles de base


Utilises seulement lintrieur dun processus (PROCESS),
fonction (FUNCTION) et procdure (PROCEDURE) !
Quatre structures squentielles de base :
Affectation dun signal
signal <= expression (avec les signaux);

Structure conditionnelle
IF condition THEN
{instruction(s) squentielle(s)}
[ELSIF
{instruction(s) squentielle(s)}]
[ELSE
{Instruction(s) squentielle(s)}]
...
END IF;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

Parties
optionnelles

66

Structures VHDL squentielles de base (suite)


Structure slective
CASE selecteur IS
WHEN valeur_selecteur1 =>
{instruction(s) squentielle(s)}
WHEN valeur_selecteur2 =>
{instruction(s) squentielle(s)}
WHEN valeur_selecteur3 =>
{instruction(s) squentielle(s)}
...
[WHEN OTHERS =>
{instruction(s) squentielle(s)}]
END CASE;

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Partie optionnelle,
mais conseille

67

PROCESS
Suite dinstructions VHDL avec un comportement squentiel
Ordre dinstructions lintrieur du PROCESS - important !
Trois phases du PROCESS :
Repos, activation, excution

Syntaxe :
[tiquette:] PROCESS [(liste de sensibilit)]
[partie dclarative]
BEGIN
{instruction(s) squentielle(s)}
END PROCESS [tiquette];

Optionnelles

Optionnelles

Septembre 2011

V. Fischer, F. Bernard: ENSL1

68

Dclenchement du PROCESS et mise jour des


valeur des signaux
Deux possibilits de dclenchement :
A chaque changement dtat dun de ses signaux dactivation
donns dans la liste de sensibilit (plusieurs signaux dactivation
peuvent tre suivis), ce type de dclenchement est utilis plutt
pour raliser les :
Latches,
Registres
Machines dtats
Aprs un temps dattente limit par un vnement (WAIT UNTIL)
ou par la dure spcifi - WAIT FOR (un seul paramtre peut tre
suivi), ce type de dclenchement est utilis plutt dans les :
Bancs de test

Les signaux sont valus pendant le PROCESS, mais miss


jour la fin de PROCESS
Les variables sont values et mises jour immdiatement
Septembre 2011

V. Fischer, F. Bernard: ENSL1

69

Utilisation de plusieurs PROCESS


Une architecture peut contenir plusieurs PROCESS
Les PROCESS sont excuts en parallle ils se trouvent
dans la partie concurrente de larchitecture
A lintrieur du PROCESS les instructions sont excuts
squentiellement
La rduction du nombre de PROCESS amliore la lisibilit
Architecture
Process 1
Structures
concurrentes

.
.
.

Signaux

L'ordre nest
pas important

Process 2
Septembre 2011

V. Fischer, F. Bernard: ENSL1

70

Blocs lmentaires de la logique squentielle


Bascules asynchrones (suite)
Bascule D verrouillage D Latch en description
comportementale
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY d_latch IS
PORT ( d
: IN std_logic;
ena : IN std_logic;
q
: OUT std_logic
);
END d_latch;
ARCHITECTURE behavior OF d_latch IS
BEGIN
PROCESS (ena, d)
La liste de sensibilit contient
BEGIN
les deux entres
IF ena = '1' THEN
q <= d;
END IF;
END PROCESS;
END behavior;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

71

Blocs squentiels lmentaires


Bascules synchrones (suite)
Bascule synchrone circuit bi-stable, capable de changer son tat
sur le front montant (ou descendant) dun signal dhorloge
Types de base

Bascule D
Bascule JK
Bascule T
Bascule RS

A part les entres de donnes synchrones, une ou deux entres


asynchrones de contrle peuvent tre employes

Remise zro asynchrone


Mise un asynchrone

zones denregistrement

horloge
donnes
sortie
Septembre 2011

parasite
V. Fischer, F. Bernard: ENSL1

sortie sans parasite


72

Blocs squentiels lmentaires


Bascules synchrones (suite)
Bascule D synchrone la valeur qui se trouve lentre D
pendant le front montant du signal dhorloge est recopie
la sortie, puis mmorise jusquau prochain front montant
D

Tableau de vrit

clk _
Q
sensibilit au front montant

clk
D

clk

Q+

nQ+

-Q

-nQ

-Q

-nQ

-Q

-nQ

Q
Septembre 2011

V. Fischer, F. Bernard: ENSL1

73

Blocs squentiels lmentaires


Bascules synchrones (suite)
Bascule D synchrone en description comportementale
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY d_ff IS
PORT ( d
: IN std_logic;
clk : IN std_logic;
q
: OUT std_logic
);
END d_ff;

La bibliothque std_logic est


ncessaire pour utiliser la
fonction rising_edge ou
falling_edge

ARCHITECTURE behavior OF d_ff IS


BEGIN
PROCESS (clk)
BEGIN
IF rising_edge(clk) THEN
q <= d;
END IF;
END PROCESS;
END behavior;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

Laffectation dans la
partie synchrone du
PROCESS implique la
cration dune bascule

74

Blocs squentiels lmentaires


Bascules synchrones (suite)
Bascule JK synchrone comportement similaire la
bascule RS (l'entre J fonctionne comme S et K comme R),
sauf si J et K sont gaux un, la sortie est inverse
J

Tableau de vrit

clk _
Q
K
sensibilit au front montant

sensibilit au front descendant

Septembre 2011

clk

Q+

nQ+

tat suivant

-Q

-nQ

tat prcdent

-Q

-nQ

tat prcdent

-Q

-nQ

tat prcdent

-Q

-nQ

tat prcdent

Mise un

Mise zro

-nQ

-Q

Inversion

V. Fischer, F. Bernard: ENSL1

75

Blocs squentiels lmentaires


Bascules synchrones (suite)
Bascule JK synchrone en description comportementale
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY jk_ff IS
PORT ( j, k, clk : IN std_logic;
q
: OUT std_logic
);
END jk_ff;
ARCHITECTURE behavior OF jk_ff IS
SIGNAL sel
: std_logic_vector(1 DOWNTO 0);
SIGNAL q_int : std_logic;
BEGIN
sel <= j & k;
PROCESS (clk)
BEGIN
mise un
IF rising_edge(clk) THEN
CASE sel IS
mise zro
WHEN "10"
=> q_int <= '1';
WHEN "01"
=> q_int <= '0';
inversion
WHEN "11"
=> q_int <= NOT q_int;
WHEN OTHERS => q_int <= q_int;
END CASE;
mmorisation
END IF;
END PROCESS;
q <= q_int;
END behavior;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

76

Blocs squentiels lmentaires


Bascules synchrones (suite)
Entres asynchrones dune bascule synchrone ces entres sont
prioritaires par rapport au signal dhorloge
Deux types dentres asynchrones optionnelles

Remise zro asynchrone


Remise un asynchrone

Deux niveau actifs possibles

Niveau actif zro


Niveau actif un

CLR

clk

Q+

nQ+

-Q

-nQ

-Q

-nQ

-Q

-nQ

clk _
Q

Exemple bascule D avec RAZ


asynchrone
D

CLR

Septembre 2011

Tableau de vrit

V. Fischer, F. Bernard: ENSL1

77

Blocs squentiels lmentaires


Bascules synchrones (suite)
Bascule D synchrone avec remise zro asynchrone
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY d_ff IS
PORT ( d, clk : IN std_logic;
clr
: IN std_logic;
q
: OUT std_logic
);
END d_ff;
ARCHITECTURE behavior OF d_ff IS
BEGIN
PROCESS (clk, clr)
BEGIN
IF (clr = '0') THEN
q <= '0';
ELSIF rising_edge(clk) THEN
q <= d;
END IF;
END PROCESS;
END behavior;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

Codage avec priorit


la remise zro est
prioritaire par rapport
au signal dhorloge

78

Blocs squentiels de base


Compteurs
Compteurs blocs logiques permettant de changer son tat
(incrmenter ou dcrmenter la valeur binaire de ltat)
suite aux vnements externes fronts du signal dhorloge

Ralisation dun compteur


Un jeu de bascules est utilis pour mmoriser ltat actuel N
bascules doivent tre utilises pour un compteur de 2N tats
Les bascules sont prcdes par les blocs combinatoires
dterminant ltat suivant (incrmentation, dcrmentation,
pr-chargement, etc.)

Types de compteurs
Compteurs asynchrones les bascules ne basculent pas en
mme temps
Compteurs synchrones toutes les bascules basculent au
mme moment
Septembre 2011

V. Fischer, F. Bernard: ENSL1

79

Blocs squentiels de base


Compteurs asynchrones
Caractristiques
Les bascules ne changent pas leur tat en mme temps ltat
du compteur est indtermin pendant le basculement des
bascules
Le bloc combinatoire est rduit (dans lexemple suivant en une
simple connexion entre la sortie de la bascule et son entre)
Compteur asynchrone sur 4 bits bas sur les bascules D
D

clk

Clk Q

Clk Q

cnt(0)

Clk Q

cnt(1)

Clk Q

cnt(2)

cnt(3)

clk
cnt(3..0)

n+1

n+2

n+3

tat indtermin
Septembre 2011

V. Fischer, F. Bernard: ENSL1

80

Blocs squentiels de base


Compteurs synchrones
Caractristiques
Les bascules changent d'tat en mme temps sur le front
montant ou le front descendant du signal dhorloge
Les blocs combinatoires devant les bascules sont plus complexes
clk
D

C0

Clk Q

C1

Compteur synchrone
sur 4 bits
bas sur les bascules D

cnt(1)

Clk Q

C2

cnt(0)

cnt(2)

Clk Q

cnt(3)

Clk Q

C3

Septembre 2011

V. Fischer, F. Bernard: ENSL1

81

Blocs squentiels de base


Compteur synchrone bi-directionnel avec RAZ
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY count_a IS
PORT (clk, rst, updn : IN std_logic;
q : OUT std_logic_vector(15 DOWNTO 0));
END count_a;

updn

clk
rst

CMPT

ARCHITECTURE logic OF compt_sim IS


SIGNAL int_q : std_logic_vector(15 DOWNTO 0);
BEGIN
PROCESS(rst, clk)
La remise zro asynchrone
BEGIN
du compteur est prioritaire par
IF rst = '0' THEN
rapport au signal dhorloge
int_q <= (OTHERS => '0');
ELSIF rising_edge(clk) THEN
IF updn = '1' THEN
Logique synchrone le signal
int_q <= int_q + 1;
updn est valu et ltat du
ELSE
compteur est chang sur le
int_q <= int_q - 1;
END IF;
front montant de lhorloge
END IF;
END PROCESS;
q <= int_q;
Affectation du signal de la sortie
END logic;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

82

Blocs squentiels de base


Compteur unidirectionnel, prchargeable, avec RAZ
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY compt_charg IS
PORT (clk, rst, load : IN std_logic;
d : IN std_logic_vector(15 DOWNTO 0);
q : OUT std_logic_vector(15 DOWNTO 0));
END compt_charg;

d
load

clk
rst

CMPT

ARCHITECTURE logic OF compt_charg IS


SIGNAL int_q : std_logic_vector(15 DOWNTO 0);
BEGIN
Partie asynchrone (la remise zro)
PROCESS(rst, clk)
BEGIN
se trouve avant la structure sensible
IF rst = '0' THEN
au signal dhorloge
int_q <= (OTHERS => '0');
ELSIF rising_edge(clk) THEN
IF load = '1' THEN
Partie synchrone :
int_q <= d;
- prchargement
ELSE
int_q <= int_q + 1;
- incrmentation
END IF;
END IF;
END PROCESS;
q <= int_q;
END logic;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

83

Blocs squentiels de base


Compteur prchargeable avec autorisation
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY compt_charg IS
PORT (clk, rst, load, en : IN std_logic;
d : IN std_logic_vector(15 DOWNTO 0);
q : OUT std_logic_vector(15 DOWNTO 0));
END compt_charg;

d
en
load

clk

rst
ARCHITECTURE logic OF compt_charg IS
CMPT
SIGNAL int_q : std_logic_vector(15 DOWNTO 0);
BEGIN
PROCESS(rst, clk)
BEGIN
IF rst = '0' THEN
int_q <= (OTHERS => '0');
ELSIF rising_edge(clk) THEN
IF load = '1' THEN int_q <= d;
ELSIF en = '1' THEN int_q <= int_q + 1;
END IF;
END IF;
Il manque ELSE, donc il sagit dune
END PROCESS;
mmorisation implicite du signal int_q
q <= int_q;
END logic;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

84

Blocs squentiels de base


Registres et registres dcalage
Registres blocs logiques permettant de mmoriser la
valeur binaire sur un ou plusieurs bits
Registre dcalage une suite de bascules connectes en
srie, utilise pour dcaler les bits gauche ou droite
chaque coup dhorloge
Exemple dune application :
Convertisseur du code parallle/srie et srie/parallle
Entre parallle
On sort le bit le moins significatif dabord
par_in(3)

par_in(2) par_in(1)

par_in(0)

load

Sortie
srie
D

Entre
srie

Convertisseur srie/parallle
D

clk
Convertisseur parallle/srie
par_out(3) par_out(2) par_out(1) par_out(0)

A noter : Quatre coups dhorloge seront ncessaires pour


sortir/entrer linformation bit par bit

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Sortie parallle

85

Blocs squentiels de base


Convertisseur parallle/srie
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY par2ser IS
PORT (clk, load : IN std_logic;
par_in
: IN std_logic_vector(7 DOWNTO 0);
ser_out
: OUT std_logic);
END par2ser;
ARCHITECTURE rtl OF par2ser IS
SIGNAL int_q : std_logic_vector(7 DOWNTO 0);
BEGIN
PROCESS(clk)
Prchargement du registre
BEGIN
IF rising_edge(clk) THEN
IF load = '1' THEN
int_q <= par_in;
ELSE
int_q(7)
<= '0';
int_q(6 DOWNTO 0) <= int_q(7 DOWNTO 1);
END IF;
END IF;
Dcalage droite (vers les
END PROCESS;
bits moins significatifs)
ser_out <= int_q(0);
END rtl;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

86

Chapitre 8

Machines dtats

Septembre 2011

V. Fischer, F. Bernard: ENSL1

87

Machines dtats
Machine dtat automate squentiel cadenc par un signal
dhorloge et spcifi par :
un jeu dtats possibles
un jeu de transitions (orientes) entre ces tats
un jeu de conditions (expressions logiques bases sur les
entres de la machine) lies ces transitions
un jeu dquations spcifiant les valeur la sortie
Diagramme tats - transitions
n_rd n_wr

raz

n_rd n_wr

lec1
ecr1
adr = 1
wr =1

(n_rd n_wr)
+
(n_rd n_wr)

repos

adr = 2
rd = 1

adr = 0
rd = 0
wr = 0

lec2
ecr2
adr = 1
wr = 0
Septembre 2011

adr = 2
rd = 0
V. Fischer, F. Bernard: ENSL1

Entres :
- clk
- raz
- n_wr
- n_rd
Sorties :
- adr(1..0)
- rd
- wr
88

criture du code VHDL pour les machines dtats (1/5)


tats de la machine dtats type de donnes numr :
TYPE mes_etats IS (repos, ecr1, ecr2, lec1, lec2);
L'objet qui va mmoriser ltat courant doit tre un SIGNAL
dun type dfini par lutilisateur, le nom de ce signal
reprsentera le nom de la machine
SIGNAL ma_machine : mes_etats;
Pour dterminer ltat suivant, utilisez la structure CASE
(rappelez-vous que la machine est une structure squentielle)
lintrieur de la structure IF THEN sensible au signal
dhorloge
Pour dterminer les sorties utilisez lassignation
conditionnelle, lassignation slectionne ou la structure CASE
Septembre 2011

V. Fischer, F. Bernard: ENSL1

89

criture du code VHDL pour les machines dtats

(2/4)

tats de la machine
n_rd n_wr

raz n_rd n_wr

lec1
ecr1

repos

adr = 1
wr =1

adr = 0
rd = 0
wr = 0

ecr2
adr = 1
wr = 0

adr = 2
rd = 1

lec2
adr = 2
rd = 0

USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY machine IS
PORT (clk, raz, n_rd, n_wr : IN std_logic;
adr : OUT std_logic_vector(1 DOWNTO 0);
rd, wr : OUT std_logic);
END machine;

Type numr

ARCHITECTURE comport OF machine IS


TYPE mes_etats IS (repos, ecr1, ecr2, lec1, lec2);
SIGNAL ma_machine : mes_etats;
suivre
Septembre 2011

V. Fischer, F. Bernard: ENSL1

90

criture du code VHDL pour les machines dtats

(3/4)

BEGIN
Spcification de transitions
PROCESS(raz, clk)
BEGIN
dans un PROCESS
IF raz = '1' THEN
ma_machine <= repos;
Remise zro
ELSIF risig_edge(clk) THEN
CASE ma_machine IS
asynchrone
WHEN repos =>
IF n_wr = '0' AND n_rd = '1' THEN
ma_machine <= ecr1;
END IF;
IF n_wr = '1' AND n_rd = '0' THEN
ma_machine <= lec1;
END IF;
raz n_rd n_wr
n_rd n_wr
WHEN ecr1 =>
lec1
adr = 2
ma_machine <= ecr2;
ecr1
rd = 1
repos
adr = 1
WHEN ecr2 =>
adr = 0
wr =1
rd = 0
ma_machine <= repos;
wr = 0
lec2
WHEN lec1 =>
ecr2
adr = 2
ma_machine <= lec2;
adr = 1
rd = 0
WHEN lec2 =>
wr = 0
ma_machine <= repos;
WHEN OTHERS =>
ma_machine <= repos;
END CASE;
END IF;
2
suivre
END PROCESS;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

91

criture du code VHDL pour les machines dtats

(3/4)

Spcification de sorties
(structures concurrentes)
wr <= '1' WHEN ma_machine = ecr1
ELSE '0';

Structures conditionnelles

rd <= '1' WHEN ma_machine = lec1


ELSE '0';
WITH ma_machine SELECT
adr <= "01" WHEN ecr1,
"10" WHEN lec1,
"00" WHEN OTHERS;
END comport;

n_rd n_wr

repos

adr = 1
wr =1

adr = 2
rd = 1

adr = 0
rd = 0
wr = 0

ecr2
adr = 1
wr = 0

Septembre 2011

n_rd n_wr

lec1

ecr1
Structure slective

raz

V. Fischer, F. Bernard: ENSL1

lec2
adr = 2
rd = 0

92

Implantation de la machine dtats dans le matriel (1/3)


tat actuel

Chemin critique !
n_rd
Comb
Next1

Comb
Next2

clk

Comb
Next3

adr(0)

Comb
Out3

rd

DFF3

raz
Septembre 2011

Comb
Out2
q

DFF2
Passage
ltat
suivant

adr(1)

DFF1

n_wr

Comb
Out1

Comb
Out4

wr
Sorties

V. Fischer, F. Bernard: ENSL1

93

Implantation de la machine dtats dans le matriel (2/3)


Si le passage par le chemin critique est plus long que la
priode du signal dhorloge, la machine peut entrer dans un
tat non dtermin o elle restera bloque pour toujours !
Solutions :
Rduire la frquence dhorloge
Simplifier la logique combinatoire pour dterminer ltat suivant
(voir machines tat dcod)

La machine peut tre bloque si les signaux dentres


changent de valeur prs du front montant du signal
dhorloge (violation de paramtres Setup & Hold de la
bascule)
Solution :
Synchroniser les entres avec le signal dhorloge en ajoutant
des bascules aux entres indispensable !
Septembre 2011

V. Fischer, F. Bernard: ENSL1

94

Implantation de la machine dtats dans le matriel (3/3)


Entres synchronises
adr(1)
n_rd

Comb
Out1
Comb
Next1

DFF

adr(0)

n_wr

Comb
Out2

DFF1

Comb
Next2

DFF

rd
Comb
Out3

DFF2
Comb
Next3

clk

wr
DFF3

raz

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Comb
Out4

95

Machines tat cod et dcod


Machine tat cod
3

3
1

Logique
dtat
Suivant

Registres
dtat
011

Logique
de Sortie

Code dtat minimum sur 3 bits, puisque 23 5

Machine tat dcod (One-hot State Machine)


5

3
1

0
2

Logique
dtat
Suivant

Registres
dtat

Logique
de Sortie
01000

Code dtat sur 5 bits (un bit par tat)


Septembre 2011

V. Fischer, F. Bernard: ENSL1

96

Machines avec tats dcods


Inconvnients
Un registre par tat
Donc plus de registres que pour les machines avec tats
cods

Avantages
Le nombre dentres dans la partie combinatoire est rduit
Quantit rduite de signaux rends le routage plus simple
La partie combinatoire (pour la logique dtat suivant et pour
la logique de sortie) est rduite
Rduction de la partie combinatoire raccourcie le chemin
critique et augmente donc la vitesse de la machine
A noter : Le choix (machine avec tats cods/dcods) se fait au
niveau du compilateur pendant la synthse
Septembre 2011

V. Fischer, F. Bernard: ENSL1

97

Types de machines dtats


Machine de Moore

Entres

tat actuel

Logique
dtat
Suivant

Registres
dtat

Logique
de Sortie

Sorties

Logique
de Sortie

Sorties

tat suivant

Machine de Mealy
Entres

Logique
dtat
Suivant

Machine avec ltat suivant


enregistr machine RNS
(Registered Next State)

Septembre 2011

Entres

Registres
dtat

Logique
dtat
Suivant

Registres
dtat

Logique
de Sortie

Registres Sorties
de Sortie

V. Fischer, F. Bernard: ENSL1

98

Machine de Moore
Caractristique principale

Les sorties sont dcodes seulement partir de ltat actuel

Avantages

Facile dcrire en VHDL (une seule structure CASE)


Les sorties sont valables pendant ltat actuel
Les quations pour les sorties sont simplifies cause de leur
dpendance seulement de ltat actuel
Le routage est plus simple, parce que les entres ont seulement une
destination (la logique combinatoire pour ltat suivant)

Inconvnients

Les sorties combinatoires peuvent comporter les glitches


(perturbations artificielles causes par des retards diffrents de
signaux du code dtat lentre dune porte logique plus de deux
entres)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

99

Machine de Moore (suite)


Exemple
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;

wr <= '1' WHEN ma_machine = ecr1 ELSE


'0';
rd <= '1' WHEN ma_machine = lec1 ELSE
'0';

ENTITY machine IS
PORT (clk, raz, n_rd, n_wr : IN std_logic;
adr : OUT std_logic_vector(1 DOWNTO 0);
rd, wr : OUT std_logic);
END machine;
ARCHITECTURE comport OF machine IS
TYPE mes_etats IS (repos, ecr1, ecr2, lec1, lec2);
SIGNAL ma_machine : mes_etats;
BEGIN
PROCESS(raz, clk)
BEGIN
IF raz = '1' THEN
ma_machine <= repos;
ELSIF rising_edge(clk) THEN
CASE ma_machine IS
WHEN repos =>
IF n_wr = '0' AND n_rd = '1' THEN
ma_machine <= ecr1;
END IF;
IF n_wr = '1' AND n_rd = '0' THEN
ma_machine <= lec1;
END IF;
WHEN ecr1 =>
clk
ma_machine <= ecr2;
raz
WHEN ecr2 =>
ma_machine <= repos;
n_rd
WHEN lec1 =>
ma_machine <= lec2;
n_wr
WHEN lec2 =>
ma_m
ma_machine <= repos;
WHEN OTHERS =>
adr
ma_machine <= repos;
END CASE;
rd
END IF;
wr
END PROCESS;

Septembre 2011

WITH ma_machine SELECT


adr <= "01" WHEN ecr1,
"01" WHEN ecr2,
"10" WHEN lec1,
"10" WHEN lec2,
"00" WHEN OTHERS;
END comport;

Les sorties (lgrement retardes)


sont en relation avec ltat actuel

V. Fischer, F. Bernard: ENSL1

Glitches !

100

Machine de Mealy
Caractristique principale

Les sorties sont dcodes la fois partir de ltat actuel et des


entres

Avantages

Facile dcrire en VHDL (une seule structure CASE)


La raction de sorties aux changement dentres est plus rapide
Moins dtats ncessaires

Inconvnients

Les quations pour les sorties sont plus complexes cause de leur
dpendance de ltat actuel et dentres
Le routage est plus complexe, parce que les entres ont deux
destinations (la logique combinatoire pour ltat suivant et pour les
sorties)
Sorties combinatoires peuvent comporter les glitches
(perturbations artificielles causes par des retards diffrents de
signaux du code dtat lentre dune porte logique plus de deux
entres)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

101

Machine de Mealy (suite)


Exemple
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY machine IS
PORT (clk, raz, n_rd, n_wr : IN std_logic;
adr : OUT std_logic_vector(1 DOWNTO 0);
rd, wr : OUT std_logic);
END machine;
ARCHITECTURE comport OF machine IS
TYPE mes_etats IS (repos, ecr, lec);
SIGNAL ma_machine : mes_etats;
BEGIN
PROCESS(raz, clk)
BEGIN
IF raz = '1' THEN
ma_machine <= repos;
ELSIF rising_edge(clk) THEN
CASE ma_machine IS
WHEN repos =>
IF n_wr = '0' AND n_rd = '1' THEN
ma_machine <= ecr;
END IF;
IF n_wr = '1' AND n_rd = '0' THEN
ma_machine <= lec;
END IF;
WHEN ecr =>
clk
ma_machine <= repos;
raz
WHEN lec =>
ma_machine <= repos;
n_rd
WHEN OTHERS =>
ma_machine <= repos;
n_wr
END CASE;
ma_m
END IF;
END PROCESS;
adr

wr <= '1' WHEN ((ma_machine = ecr)


AND (n_wr = '0'))
'0';

ELSE

rd <= '1' WHEN ((ma_machine = lec)


AND (n_rd = '0')) ELSE
'0';
WITH ma_machine SELECT
adr <= "01" WHEN ecr,
"10" WHEN lec,
"00" WHEN OTHERS;
END comport;

La sortie est change


avant que ltat change

Glitches !

rd
wr

Septembre 2011

V. Fischer, F. Bernard: ENSL1

102

Suppression de glitches
dans les machines de Moore et de Mealy
Solution

Enregistrement de signaux combinatoires la sortie de la machine


dans des registres

Avantages

Sans glitches

Inconvnients

Les sorties sont retardes par une priode dhorloge

Exemple (avec une machine de Moore)

Entres

Septembre 2011

Logique
dtat
Suivant

Registres
dtat

Logique
de Sortie

V. Fischer, F. Bernard: ENSL1

Registres Sorties
de Sortie

103

Suppression de glitches dans les machines de


Moore et de Mealy (suite)
Exemple
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY machine IS
PORT (clk, raz, n_rd, n_wr : IN std_logic;
adr : OUT std_logic_vector(1 DOWNTO 0);
rd, wr : OUT std_logic);
END machine;
ARCHITECTURE comport OF machine IS
TYPE mes_etats IS (repos, ecr1, ecr2, lec1, lec2);
SIGNAL ma_machine : mes_etats;
BEGIN
PROCESS(raz, clk) -- Machine d'etats
BEGIN
IF raz = '1' THEN
ma_machine <= repos;
ELSIF rising_edge(clk) THEN
CASE ma_machine IS
WHEN repos =>
IF n_wr = '0' AND n_rd = '1' THEN
ma_machine <= ecr1;
END IF;
IF n_wr = '1' AND n_rd = '0' THEN
ma_machine <= lec1;
END IF;
WHEN ecr1 =>
clk
ma_machine <= ecr2;
WHEN ecr2 =>
raz
ma_machine <= repos;
WHEN lec1 =>
n_rd
ma_machine <= lec2;
n_wr
WHEN lec2 =>
ma_machine <= repos;
ma_m
WHEN OTHERS =>
ma_machine <= repos;
adr
END CASE;
rd
END IF;
END PROCESS;
wr
PROCESS(clk) -- Registres de sortie
BEGIN

Septembre 2011

IF rising_edge(clk) THEN
CASE ma_machine IS
WHEN ecr1 =>
adr <= "01";
WHEN ecr2 =>
adr <= "01";
WHEN lec1 =>
adr <= "10";
WHEN lec2 =>
adr <= "10";
WHEN OTHERS =>
adr <= "00";
END CASE;
IF ma_machine = ecr1 THEN
wr <= '1';
ELSE
wr <= '0';
END IF;
IF ma_machine = lec1 THEN
rd <= '1';
ELSE
rd <= '0'; Les sorties sont retardes par
END IF;
priode dhorloge, mais sans
END IF;
END PROCESS;
glitches !
END comport;

V. Fischer, F. Bernard: ENSL1

une

104

Machine RNS
Caractristique principale

Les sorties sont dcodes (puis enregistres) partir de ltat suivant

Avantages

Facile dcrire en VHDL (une seule structure CASE)


Les glitches la sortie sont supprims
Les sorties ne sont pas retardes par rapport ltat actuel (la latence
est limine)

Inconvnients

Pour ltat suivant on utilise une variable la place dun signal


Pour la mme fonction, on peut avoir besoin plus de bits dtat (par
rapport la machine Mealy)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

105

Machine RNS (suite)


Exemple
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY machine IS
PORT (clk, raz, n_rd, n_wr : IN std_logic;
adr : OUT std_logic_vector(1 DOWNTO 0);
rd, wr : OUT std_logic);
END machine;
ARCHITECTURE comport OF machine IS
TYPE mes_etats IS (repos, ecr1, ecr2, lec1, lec2);
SIGNAL etat_act : mes_etats;
BEGIN
PROCESS(raz, clk)
VARIABLE etat_suivant : mes_etats;
BEGIN
etat_act <= etat_suivant;
IF raz = '1' THEN
etat_suivant := repos;
ELSIF rising_edge(clk) THEN
CASE etat_act IS
WHEN repos =>
IF n_wr = '0' AND n_rd = '1' THEN
etat_suivant := ecr1;
END IF;
IF n_wr = '1' AND n_rd = '0' THEN
etat_suivant := lec1;
END IF;
clk
WHEN ecr1 =>
etat_suivant := ecr2;
raz
WHEN ecr2 =>
n_rd
etat_suivant := repos;
WHEN lec1 =>
n_wr
etat_suivant := lec2;
WHEN lec2 =>
ma_m
etat_suivant := repos;
adr
WHEN OTHERS =>
etat_suivant := repos;
rd
END CASE;

IF etat_suivant = ecr1 THEN


wr <= '1';
ELSE
wr <= '0';
END IF;
IF etat_suivant = lec1 THEN
rd <= '1';
ELSE
rd <= '0';
END IF;
CASE etat_suivant IS
WHEN ecr1 =>
adr <= "01";
WHEN ecr2 =>
adr <= "01";
WHEN lec1 =>
adr <= "10";
WHEN lec2 =>
adr <= "10";
WHEN OTHERS =>
adr <= "00";
END CASE;
La sortie change en mme
END IF;
END PROCESS;
temps que ltat et il ny a

END comport;

pas les glitches !

wr

Septembre 2011

V. Fischer, F. Bernard: ENSL1

106

Chapitre 9
Conception hirarchique
de systmes logiques

Septembre 2011

V. Fischer, F. Bernard: ENSL1

107

Conception hirarchique en VHDL


Ncessite la dclaration et linstanciation des composants
Exemple :

haut.vhd
entit-architecture haut
composant moyen_a
composant moyen_b

moyen_a.vhd
entit-architecture moyen_a
component bas_a
component bas_b

bas_a.vhd
entit-architecture bas_a

Septembre 2011

moyen_b.vhd
entit-architecture moyen_b
component bas_b

bas_b.vhd
entit-architecture bas_b

V. Fischer, F. Bernard: ENSL1

108

Dclaration et instanciation du composant


Dclaration du composant

Utilise pour dclarer les types de ports et de donnes dun lment de


conception de niveau plus bas
COMPONENT <nom_du_composant_niveau_plus_bas> IS
PORT (<nom_port> : <type_port> <type_donne>;
.
.
<nom_port> : <type_port> <type_donne>
);
END COMPONENT;

Point-virgule
Sans point-virgule

Instanciation du composant

Utilise pour associer les ports du composant du niveau plus bas


dhirarchie aux signaux du niveau actuel
Virgule

<nom_instance> : <nom_du_composant_niveau_plus_bas>
PORT MAP (<nom_port_niveau_bas> => <nom_signal_niveau_actuel>,
.
Obligatoire
.
<nom_port_niveau_bas> => <nom_signal_niveau_actuel>
);
Sans virgule

Septembre 2011

V. Fischer, F. Bernard: ENSL1

109

Avantages dune conception hirarchique


Chaque membre de lquipe peut crer les modules (composants)
dans des fichiers spars

Ces composants peuvent tre partags par dautres collaborateurs


ou rutiliss ultrieurement
Conception hirarchique amliore la modularit et la portabilit des
projet
Conception hirarchique facilite la possibilit dimplanter et de tester
plusieurs versions dun module

Les options de compilation (pour amliorer la performance) peuvent


tre appliques seulement par les modules !
Plus de niveaux de hirarchie signifie plus de souplesse !
Septembre 2011

V. Fischer, F. Bernard: ENSL1

110

Paramtrage de modules
Permet daugmenter la portabilit de diffrents modules
Apporte une grande flexibilit aux description de composants
Constitue le principe dutilisation de la bibliothque LPM (Library of
Parameterized Modules) utilise pour proposer les fonctions adaptes
au matriel par les fabricants doutils CAO
Ralis par la structure GENERIC, exemple :
Valeur par dfaut
ENTITY multiplexeur IS
GENERIC (LARGEUR : integer := 4);
PORT(sel : IN bit;
a, b : IN bit_vector(LARGEUR-1 DOWNTO 0);
c : OUT bit_vector(LARGEUR-1 DOWNTO 0));
END multiplexeur;
ARCHITECTURE a_mux OF multiplexeur IS
BEGIN
Valeur actuelle
c <= a WHEN sel = 0 ELSE b;
END a_mux;

Instanciation du composant :
mux_inst: multiplexeur GENERIC MAP (LARGEUR => 8)
PORT MAP(sel => selh, a => ah, b => bh, c => ch);
Septembre 2011

V. Fischer, F. Bernard: ENSL1

111

Chapitre 10
Familles technologiques
de circuits intgrs logiques

Septembre 2011

V. Fischer : ENSL1

112

Familles technologiques de circuits logiques


Technologie TTL (Transistor-Transistor-Logic)

Base sur les transistors bipolaires du type NPN et PNP en mode


commutation
Technologie la plus utilise il y a 20 ans environ (circuits logiques
standards de la srie Intel 74 xxx)
Alimente en 5 V (TTL classique)

Technologie CMOS (Complementary Metal Oxyd Semiconductor)

Base sur les transistors unipolaires du type NMOS et PMOS


Technologie la plus utilise actuellement (circuits logiques standards
srie Motorola 4000, puis 74xx, processeurs, circuits logiques
spcifiques lapplication, circuits logiques configurables, )
Alimente en 5 V (CMOS de la srie 74) ou en 3,3 V (LV CMOS)

Technologie ECL (Emitor-Coupled Logic)

Base sur les transistor bipolaires travaillant dans un rgime actif


Technologie la plus rapide, mais trs gourmande
Alimente en 5,2 V

Septembre 2011

V. Fischer : ENSL1

113

Famille TTL (1/4)


Tension dalimentation
VCC = 5 V 10 %

Niveaux logiques
Niveau "1" = 5 V
Niveau "0" = 0 V

Niveaux des tensions


dE/S

5V
Niveau "1"

VOLMax = 0,4 V
VOHMin = 2,7 V
VILMax = 0,8 V
VIHMin = 2,0 V

Niveau "1"

VOHMin
VNH

VIHMin

VILMax

VNL = 0,4 V
VNH = 0,7 V
Septembre 2011

0V

Niveau "0"

Sorties

V. Fischer : ENSL1

VOLMax

VNL
Niveau "0"

Entres
114

Famille TTL (2/4)


Immunit aux bruits
A ltat bas :
A ltat haut :

VNL = VILMax VOLMax = 0,4 V


VNH = VOHMin VIHMin = 0,7 V

Courants dentre et de sortie

IOLMax = + 8 mA (consommation)
IOHMin = - 0,4 mA (production)
IILMax = -0,4 mA
IIHMin = + 20 uA

Si une sortie commande


plusieurs entres :

VOL

IOL

Commande

VOH

IOH

Commande

IOL = IIL

IIL
Charge

IIH
Charge

IOH = IIH

Sortance (Fan out)


Nombre maximal dentres qui peuvent tre connectes une
sortie - 20
Septembre 2011

V. Fischer : ENSL1

115

Famille TTL (3/4)


Temps de propagation
tr rising time
tf falling time
tPHL

tPLH

Consommation
Courant consomm pour les sorties au niveau haut : ICCH
Courant consomm pour les sorties au niveau bas : ICCL
Puissance moyenne : PMOY = VCC (ICCH + ICCL )/2
74 N XXX
Standard

74 S XXX
Schottky

74 LS XXX
Low Power
Schottky

74 ALS XXX
Advanced
LS

74 F XXX
Fast

Retard de propagation tP (ns)

10

10

Consommation (mW)

10

20

Frquence maximale (MHz)

35

80

40

70

150

Sries

Septembre 2011

V. Fischer : ENSL1

116

Famille TTL (4/4)


Phnomnes transitoires la commutation des sorties
Totem ple la sortie cause des impulsions de courant
Il faut filtrer lalimentation de chaque circuit

Cblage des entres inutilises


Il est fortement dconseill de laisser en lair une entre non
utilise
Solution : la connecter la masse, VCC ou une autre entre

Septembre 2011

V. Fischer : ENSL1

117

Famille CMOS (1/4)


Tension dalimentation

CMOS :
VCC = 5 V (2-6 V)
LVCMOS : VCC = 3,3 V (2-3,6 V)

Niveaux logiques

Niveau "1" = 5 V (3,3 V)


Niveau "0" = 0 V

Niveaux des tensions


dE/S

VOLMax = 0,33 V (0,4 V)


VOHMin = 4,4 V (2,4 V)
VILMax = 1,5 V (0,8 V)
VIHMin = 3,5 V (2,0 V)

VNL = 1,17 V (0,4 V)


VNH = 0,9 V (0,4 V)

Niveau "1"
VNH

VIHMin

VILMax
Niveau "0"

Sorties
Septembre 2011

Niveau "1"

VOHMin

V. Fischer : ENSL1

VOLMax

VNL
Niveau "0"

Entres
118

Famille CMOS (2/4)


Courants dentre et de sortie
Courant dentre trs faible (uA)
Courants de sortie relativement
grands (mA)

Sortance (Fan out)


Nest pas limite par le courant, mais par la vitesse (lie au
dchargement de la somme de capacits parasites dentres
connectes la sortie)

Septembre 2011

V. Fischer : ENSL1

119

Famille CMOS (3/4)


Temps de propagation
tr rising time
tf falling time
tPHL

tPLH

4000

74 HC XXX

74 AC XXX

74 AHC
XXX

74 LVC
XXX

74 ALVC
XXX

Retard de propagation tP
(ns)

100

Frquence maximale (MHz)

12

50

160

170

100

150

Sries

Consommation
Puissance : PD = (CL + CPD ) * f * VCC
CL capacit de charge en sortie
CPD capacit interne de dissipation de lordre de 25 pF
Septembre 2011

V. Fischer : ENSL1

120

Famille CMOS (4/4)


Phnomnes transitoires la commutation des sorties
Dchargement de la capacit cause des impulsions de courant
Il faut filtrer lalimentation de chaque circuit

Prcautions demplois des circuits CMOS


Les circuits CMOS sont trs sensibles aux dcharges
lectrostatiques attention la manipulation !
Il est interdite de laisser en lair une entre non utilise
(destruction du circuit) !

Septembre 2011

V. Fischer : ENSL1

121

Chapitre 11
Familles fonctionnelles
de circuits intgrs logiques

Septembre 2011

V. Fischer, F. Bernard: ENSL1

122

Familles fonctionnelles de circuits logiques


Circuits numriques standards (Standard Logic Devices)

Circuits logiques gnriques pour raliser des fonctions logiques de


base (porte logiques, compteurs, multiplexeurs, pilots du bus, )
Processeurs gnriques (8-bit, 16-bit, 32-bit, 64-bit)
Mmoires semi-conducteur (SRAM, DRAM, ROM, EEPROM, FLASH)

ASSPs (Application Specific Standard Products)

Circuits standards produits pour une application spcifique et pour un


groupe quasi-illimit de clients (ex. : circuit interface USB)

ASICs (Application Specific Integrated Circuits)

Circuits logiques spcifiques lapplication - produits pour une


application spcifique et habituellement pour un seul client ou un
group restreint de clients (ex. : processeur dune carte puce)

Circuits logiques configurables (Programmable Logic Devices)

Circuits logiques de grande capacit avec la structure logique interne


configurable et donc le fonctionnement modifiable et adaptable aux
besoins (ex. : FPGA)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

123

volution de circuits logiques


Annes 80
Circuits logiques gnriques de base, processeurs simples,
mmoires semiconducteur de faible capacit
Niveau d'intgration faible (SSI, MSI, LSI)

Annes 90
Circuits logiques gnriques et processeurs plus performants,
ASICs et Circuits Logiques Programmables de la premire
gnration (PLA, PLD)
Circuits LSI et VLSI

Aujourd'hui

Circuits logiques configurables (FPGAs)


ASSPs
ASICs (Full Custom, Pr-caractriss, Pr-diffuss, Structurels)
Circuits VLSI

SSI, MSI, LSI, VLSI - Small-, Middle-, Large-, Very Large-Scale Integration
Septembre 2011

V. Fischer, F. Bernard: ENSL1

124

Circuits logiques standards


Avantages
Faible prix par unit
Bonne disponibilit
Fiabilit prouve (circuit compltement test)

Inconvnients
Fonction logique du circuit relativement simple un grand
nombre de circuits est ncessaire pour concevoir les systme
complexes
Fiabilit relativement faible du systme bas sur des circuits
standards (circuit imprim soudures)
volution (modification) du systme difficile
Mauvaise utilisation de la surface de circuit imprim
Vitesse relativement faible

Septembre 2011

V. Fischer, F. Bernard: ENSL1

125

Circuits (logiques) spcifiques lapplication - ASICs


Avantages
Potentiellement trs faible prix par lunit (pour une grande
production)
Fiabilit leve (circuit compltement test, souvent avec les
tests internes effectus en temps rel)
Vitesse trs leve
Faible surface utilise
Structure logique interne peut tre trs complexe

Inconvnients
volution (modification) pratiquement impossible
Conception trs chre

Septembre 2011

V. Fischer, F. Bernard: ENSL1

126

Circuits logiques configurables (programmables)


Avantages
Fiabilit leve (circuit compltement test dans la dernire
phase de fabrication)
Faible surface utilise
Structure logique interne peut tre trs complexe
Flexibles volution facile
Conception rapide et peu chre

Inconvnients
Piratage plus facile
Vitesse leve, mais plus base que pour les ASICs
Plus chers que les ASICs pour une grande quantit, mais moins
chers pour faibles quantits

Septembre 2011

V. Fischer, F. Bernard: ENSL1

127

Chapitre 12
Circuits logiques
configurables

Septembre 2011

V. Fischer, F. Bernard: ENSL1

128

Circuits logiques configurables - CLC


CLC - structure deux niveaux :

Structure logique configurable - un ensemble


d'lments logiques (cellules logiques)
d'interconnexions
d'entres/sorties
de modules embarqus additionnels
Procd de configuration reprsentant l'ensemble des ressources
utilises pour configurer le circuit

Chaque lment configurable est associ un bit mmoire


(mmoire morte ou mmoire vive) dans le circuit

Conception : validation des diffrents lments de configuration du


circuit

Programmation : chargement de la configuration dans la mmoire


rassemblant l'ensemble des bits de configuration

Septembre 2011

V. Fischer, F. Bernard: ENSL1

129

Circuits logiques configurables


FPGA Field Programmable Gate Devices
Bloc logique

I/O

Cellules logiques configurables


constituant les blocs logiques
Pour implmenter la logique
squentielle et combinatoire

I/O

I/O

Interconnexions segmentes
configurables
Pour interconnecter la
logique et les E/S

Commutateurs d'interconnexions

Blocs d'entres sorties


configurables
Pour les connexions externes

I/O
Septembre 2011

V. Fischer, F. Bernard: ENSL1

130

Circuits logiques configurables


FPGA Field Programmable Gate Devices
Cellule logique :

Ensemble fig de signaux d'entre


Bloc combinatoire configurable
Bloc squentiel (qui peut tre ventuellement court-circuit)

Bloc combinatoire configurable peut tre ralis avec

Termes de produits
Tableaux de vrit (LUT Look-up Tables)
Multiplexeurs

Septembre 2011

V. Fischer, F. Bernard: ENSL1

131

Cellules base de termes de produits - PTERMs


Fonction logique dfinie en utilisant la somme de produits
Matrice de portes ET logiques programmables (plan produits)
suivi par des portes logiques OU cbles
A

C
Terme de produit
f1 = A B C + A B C

f2 = A B + A B C

Commutateur programmable
Plan produits
Septembre 2011

V. Fischer, F. Bernard: ENSL1

132

Macrocellule Altera
Famille CPLD (Complex Programmable Logic Device) MAX 7000

Inverseur programmable

Partie combinatoire
Septembre 2011

Partie squentielle

V. Fischer, F. Bernard: ENSL1

133

Cellules base de tableaux de vrit - LUTs

LUT (Look-Up Table) - structure logique implante dans une


mmoire, contenant un tableau de vrit
A

0
0
0
0
0
0
0
0
1
1
1

0
0
0
0
1
1
1
1
0
0
0

0
0
1
1
0
0
1
1
0
0
1

0
1
0
1
0
1
0
1
0
1
0

0
1
1
1
0
1
1
1
0
1
1

1
1
1
1

0
1
1
1

1
0
0
1

1
0
1
0

1
0
0
0

Tableau de vrit
Septembre 2011

A
B
C
D

LUT

Implantation dans un LUT


A
B

Z
C
D

Implantation avec les portes logiques

V. Fischer, F. Bernard: ENSL1

134

Bloc logique configurable Xilinx


Famille FPGA (Field Programmable Gate Array) XC 4000
Partie combinatoire
Max 9 entres
pour une
fonction
combinatoire

Partie squentielle
Sorties

Sq.

Combin.

LUTs
Sq.

Multiplexeurs
configurables

Septembre 2011

V. Fischer, F. Bernard: ENSL1

135

Interconnexions configurables
Trois niveaux hirarchiques d'interconnexions

Interconnexions globales
Signaux accessibles partout dans le circuit
Nombre trs limit
Vitesse relativement faible (grande longueur)

Interconnexions rgionales
Signaux accessible localement (colonnes et lignes, quadrants)
Nombre important
Vitesse moyenne

Interconnexions locales
Signaux accessibles sur un voisinage (~ 8 cellules)
Nombre globalement trs important (mais localement limit)
Grande vitesse

Septembre 2011

V. Fischer, F. Bernard: ENSL1

136

Entres/sorties configurables
Caractristiques de type

Support de multiples normes d'E/S (simples ou diffrentielles)


LVTTL, LVCMOS, LVDS,
Support du BST (Boundary-Scan Test) de l'interface JTAG (Joined
Test Action Group)
Rglage de la force (du courant) de sortie
Rglage de la pente/descente (slew-rate) du signal la sortie
Implantation de buffers trois-tats
Fonction "Bus-hold" (maintien du niveau du bus)
Rsistances "Pull-up", "Pull-down" programmables
Dlais d'entres et sorties programmables
Sorties collecteur ouvert
Support pour DDRAMs

Septembre 2011

V. Fischer, F. Bernard: ENSL1

137

lment dentre/sortie configurable


Structure logique (simplifie)
Logique interne

Registre OE

OE

Broche E/S

Registre de sortie

Sortie

Entre

Registre d'entre

lment E/S
Septembre 2011

V. Fischer, F. Bernard: ENSL1

138

Normes actuelles pour les E/S


LVTTL (Low Voltage TTL) - 1.8, 2.5, 3.3 V (single ended)
LVCMOS (Low Voltage CMOS) - 1.5, 1.8, 2.5, 3.3 V (single ended)
3.3 V PCI -

quivalente 3.3 V LVCMOS avec une diode de clamping

LVDS (Low Voltage Differential Signaling)


SSTL-2 (Stub-Series Terminated Logic for 2.5 V) -

ncessite une tension de

rfrence (1.25 V), norme utilise pour SDRAMs

SSTL-3 (Stub-Series Terminated Logic for 3.3 V) -

ncessite une tension de

rfrence (1.5 V), norme utilise pour SDRAMs

Septembre 2011

V. Fischer, F. Bernard: ENSL1

139

Outils et mthodes de conception de CLCs


Outils de base

Simulation (fonctionnelle, temporelle)


Synthse/compilation (traduction, optimisation)
Placement/routage (fitter)
Analyse temporelle
Outils de configuration

Outils (mthodes) complmentaires :

Scripting - automatisation du travail avec le langage TCL (Tool


Command Language)
Vrification formelle (techniques mathmatiques de vrification)
Estimation de consommation (ex. Power calculator)
Floorplanner
Chip editor
Analyseur logique enfoui

Septembre 2011

V. Fischer, F. Bernard: ENSL1

140

Technologies de configuration de CLCs


Configurations non volatiles

PROM (fusibles), antifusibles - configurables une fois


lment de configuration mtallique petit, faible rsistance,
donc rapide

EPROM, EEPROM, FLASH - reconfigurables


lment de configuration semi-conducteur grande surface,
relativement grande rsistance, donc lent

Configurations volatiles

CMOS RAM - reconfigurables (aussi dynamiquement et localement)


lment de configuration semi-conducteur grande surface,
relativement grande rsistance, relativement rapide

Septembre 2011

V. Fischer, F. Bernard: ENSL1

141

Processus de configuration de CLCs


technologie volatile
Dcompos en trois phases

Transmission
Transmission srie
Plus lente
Moins de broches utilises

Transmission parallle
Plus rapide
Plus de broches utilises

Configuration
Dchiffrement de donnes de configuration (optionnel)
Dcompression de donnes de configuration (optionnelle)
Calcul et vrification de la valeur condense (Checksum - CRC)
Enregistrement de donnes de configuration dans la mmoire

Initialisation
Mise l'tat initial de toutes le bascules et de toutes les entres
sorties

Septembre 2011

V. Fischer, F. Bernard: ENSL1

142

Annexes
Langage VHDL

Septembre 2011

V. Fischer, F. Bernard: ENSL1

143

Prambule
Caractristiques du langage VHDL :

Un vocabulaire trs volumineux


Des contextes dutilisation diffrents (spcification, modlisation,
synthse)

Deux aspects importants du langage VHDL :

VHDL est un langage de description des structures matrielles et non


pas un langage de programmation classique de linformatique
scientifique (attention aux rflexes dinformaticien)
Certains lments de ce langage ne sont pas utilisables dans tous les
contextes dapplication

A noter :
Dans les chapitres suivants nous allons utiliser un sous-ensemble du
langage VHDL structures de base utilises pour la synthse logique !
Septembre 2011

V. Fischer, F. Bernard: ENSL1

144

Units de conception
Une description VHDL comporte un certain nombre dunits de
conception. Une unit de conception constitue un sous ensemble de la
structure logique pouvant tre compil sparment, stock dans un
fichier indpendant et sauvegard dans une librairie. Une unit de
conception peut se trouver :
Dans un fichier *.vhd (une ou plusieurs units dans un fichier)
Dans un rpertoire (de travail), dans plusieurs fichiers *.vhd
Dans une librairie (un paquetage)
Mthode applique

Units de conception :

en ENSL1

Entit lment de base (composant, module) dfinie par la :


spcification dentit (= interface externe symbole)
architecture (= structure interne schma)

Paquet regroupement dlments dfini par la


spcification de paquet
corps de paquet

Non utilis
en ENSL1

Configuration association architecture - entit


Septembre 2011

V. Fischer, F. Bernard: ENSL1

145

Entit de conception

Entit de conception lment


de base de construction :

entit de conception

dclaration
de lentit
architecture

Vue de lextrieur par


lintermdiaire de signaux
dentres/sorties (boite noire)
A lintrieur spcifie par
larchitecture

Dclaration de l'entit
Nom
Paramtres (optionnels)
Entres/sorties

Architecture
Structure interne de l'entit

Septembre 2011

V. Fischer, F. Bernard: ENSL1

146

Dclaration dentit
Dcrit le nom et linterface du composant
(signaux dentres et sorties)
Nom dentit

Types de ports
Noms de ports

ENTITY and2_op IS
PORT(
a, b: IN STD_LOGIC;
z
: OUT STD_LOGIC
);
END and2_op;

Point-virgule, sauf
la dernire ligne
Sans point-virgule

Modes de ports (directions de flots de donnes)


Mots rservs

Notre convention : crire les mots rservs en majuscules


But : Lisibilit du code (mme en noir et blanc)

A noter :
Nous n'utiliserons pas les possibilits de paramtrer des modules.
Septembre 2011

V. Fischer, F. Bernard: ENSL1

147

Description darchitecture
Architecture - dcrit la structure ou le comportement du
composant
Plusieurs architectures pour la mme entit (module) peuvent
exister. Ce cas est similaire la possibilit d'implanter une fonction
logique soit en utilisant des portes NAND ou en utilisant des portes
NOR ou d'autres portes logiques.
Nom darchitecture

Nom dentit

ARCHITECTURE flot_don OF and2_op IS


BEGIN
z <= a AND b;
END flot_don;

Mots rservs
pour le dbut
et la fin du corps
de larchitecture
Septembre 2011

Espace de dclaration
pour l'architecture
Corps de
l'architecture
(Ici : Affectation du
signal de sortie)

Notre convention : crire les mots rservs en majuscules


But : Lisibilit du code (mme en noire et blanc)

V. Fischer, F. Bernard: ENSL1

148

Vue densemble : dclaration dentit et architecture


Code VHDL complet d'une entit
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

Dclaration
de l'entit

Description de
l'architecture

Septembre 2011

ENTITY and2_op IS
PORT(
a, b: IN STD_LOGIC;
z
: OUT STD_LOGIC);
END and2_op;

Dclaration de la
bibliothque IEEE ncessaire pour des
signaux logiques
standards

ARCHITECTURE flot_don OF and2_op IS


BEGIN
z <= a AND b;
END flot_don;

V. Fischer, F. Bernard: ENSL1

149

Modes de ports
Ils spcifient la direction du transfert des donnes
vis--vis du composant
IN : port dentre (unidirectionnel) - les donnes arrivant sur ce port
peuvent tre lus lintrieur du composant, elles peuvent donc se
trouver seulement droite dans lexpression daffectation dun signal
ou dune variable.
OUT : port de sortie (unidirectionnel) - les donnes sortant peuvent tre
seulement mises jour (et non pas lus) lintrieur du composant,
elles peuvent se trouver seulement gauche de lexpression
daffectation.
INOUT : port dentre/sortie (bi-directionnel) les donnes peuvent
tre mises jour et lus lintrieur du composant, elles peuvent se
trouver gauche ou droite de lexpression daffectation.
A noter : Il existe un autre mode (Buffer) que nous n'utiliserons pas
Septembre 2011

V. Fischer, F. Bernard: ENSL1

150

Mode de port IN

Signal du port
en mode IN

Le signal est gnr


lextrieur de lentit

Entit

Ex. :

C <= A;

Signal interne

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Entre

151

Exemple du mode de port IN


LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

u1:ex_mode_in

ENTITY ex_mode_in IS
PORT(
a, b: IN STD_LOGIC;
v, y: OUT STD_LOGIC);
END ex_mode_in;

d=a
c

b
ARCHITECTURE a1 OF ex_mode_in IS
SIGNAL c, d : STD_LOGIC;
BEGIN
d <= a;
c <= d AND b;
v <= c;
y <= a AND b;
END a1;

Septembre 2011

Signaux d'entre a et b
peuvent se trouver
seulement droite (ils
reprsentent la source)

V. Fischer, F. Bernard: ENSL1

152

Mode de port OUT


Entit
Signal du port en mode OUT

Sortie Signal interne

B <= A;
Le signal est gnr
lintrieur de lentit

C <= B;
Signal interne

Problme : Le signal en mode OUT (ici le signal B) ne peut pas tre


lu (rfrenc) lintrieur de lentit.
Septembre 2011

V. Fischer, F. Bernard: ENSL1

153

Exemple du mode de port OUT


LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

u1:ex_mode_in

ENTITY ex_mode_in IS
PORT(
a, b: IN STD_LOGIC;
v, y: OUT STD_LOGIC);
END ex_mode_in;

Septembre 2011

d=a
c

b
ARCHITECTURE a1 OF ex_mode_in IS
SIGNAL c, d : STD_LOGIC;
BEGIN
d <= a;
c <= d AND b;
v <= c;
y <= a AND b;
END a1;

Signaux de sortie v et y
peuvent se trouver
seulement gauche (ils
reprsentent la destination)

V. Fischer, F. Bernard: ENSL1

154

Mode de port OUT avec un signal interne


Entit
Signal interne supplmentaire
Signal du port en mode OUT

Int B

Le signal Int est gnr


lintrieur de lentit

Le signal interne (ici Int) peut


tre rfrenc lintrieur de
lentit

Sortie
en mode OUT
Signal interne

Septembre 2011

Int <= A;
B
<= Int;
C
<= Int;

V. Fischer, F. Bernard: ENSL1

155

Exemple avec les signaux internes


LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY ex_mode_in IS
PORT(
a, b: IN STD_LOGIC;
v, y: OUT STD_LOGIC);
END ex_mode_in;

u1:ex_mode_in
a

d=a
c

ARCHITECTURE a1 OF ex_mode_in IS
SIGNAL c, d : STD_LOGIC;
BEGIN
Signaux internes c et y
d <= a;
peuvent se trouver
c <= d AND b;
gauche ou droite
v <= c;
y <= a AND b;
A noter : Signaux internes ne sont pas ici
END a1;

les
signaux supplmentaires (mais peuvent l'tre)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

156

Mode de port INOUT (bidirectionnel)


Entit
Gnrateur
externe du
signal

Signal du bus
externe

Affectations :
B <= A;
A <= C;

Si I est ferm :
A est gnr
par l'entit

B
Si I est ouvert :
A est gnr
par le bus

Signal lu
l'extrieur
Le signal peut tre gnr
lintrieur ou lextrieur de lentit

Le signal peut tre rfrenc


(lu) lintrieur de lentit

Danger : Les sorties de deux gnrateurs ne doivent pas tre base


impdance en mme temps ! Solution : Voir plus loin.
Septembre 2011

V. Fischer, F. Bernard: ENSL1

157

Classes, types et composition de donnes


Classes de donnes

Signaux (SIGNAL)
Variables (VARIABLE)
Constantes (CONSTANT)

Types de donnes

Entiers (INTEGER)
Bits (BIT)
Boolens (BOOLEAN)
Caractres (CHARACTER)
Rels (REAL)
Physiques (TIME)
numrs (ENUMERATED)
Logique standard (STD_LOGIC)

Bibliothque standard

Bibliothque IEEE

Composition de donnes

Scalaires - donne compose d'un seul lment


Composites - donne compose de plusieurs lments (VECTOR)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

158

Conversions et visibilit de donnes


Conversion de donnes

Le VHDL est un langage fortement typ toutes les donnes ont un type
qui doit tre dclar et aucune conversion de type automatique nest
effectue.

Les donnes de classes diffrentes, mais de mme type, peuvent changer


linformation sans conversion.

Visibilit de donnes

Seulement les entres/sorties de l'entit sont visibles l'extrieur de cette


entit
Les donnes internes telles que les signaux et constantes, dclares
lintrieur dune entit sont visibles seulement dans cette entit

A noter : Pour faire des calculs, nous utiliserons seulement un type de


donnes - STD_LOGIC_VECTOR. La conversion ne sera pas
ncessaire

Septembre 2011

V. Fischer, F. Bernard: ENSL1

159

Signaux et constantes (1/3)


Nature de signaux

Signaux - donnes physiques changes entre les blocs logiques


(ils reprsentent le plus souvent les fils dinterconnexion)

Lieu dutilisation de signaux

Signaux dentres sorties (avec direction) de diffrentes entits


Signaux internes (sans direction) lintrieure dune entit
A noter :
1. Les signaux internes peuvent se trouver gauche ou droite dune
affectation.
2. Les signaux internes peuvent tre limins dans la phase doptimisation
de la synthse logique !
Partie optionnelle

Syntaxe de dclaration d'un signal interne


SIGNAL nom1 : type [:= valeur_par_dfaut];
A noter : La dclaration se situe dans la zone dclaration de larchitecture.

Affectation dune valeur un signal


nom1 <= valeur_compatible_avec_le_type;
A noter : Elle s'effectue dans le corps de larchitecture ou dans un processus.
Septembre 2011

V. Fischer, F. Bernard: ENSL1

160

Signaux et constantes (2/3)


Exemples de dclaration de signaux internes
SIGNAL
SIGNAL
SIGNAL
SIGNAL

Signal initialis

flag
: std_logic := '0';
Signal non initialis
zero, c : std_logic;
cnt1
: std_logic_vector(0 TO 3) := "1100";
cnt2
: std_logic_vector(15 DOWNTO 0);
Types de signaux

Liste de signaux spars par la virgule

Exemples daffectation de signaux


zero
cnt1
cnt2
c

<=
<=
<=
<=

'0';
"1111";
X"C12F";
zero;

Apostrophe pour un signal dun bit


Guillemets pour un vecteur
X pour la reprsentation hexadcimale
(version VHDL93 seulement)

A noter :
Dans une architecture ( lextrieur dun processus) toutes les affectations de signaux sont
concurrentes, cest donc une erreur (smantique) daffecter plus dune valeur un signal !
Septembre 2011

V. Fischer, F. Bernard: ENSL1

161

Signaux et constantes (3/3)


Rle de constants

Les constantes sont utilises pour associer une valeur fixe un signal

Visibilit de constants

Les constantes sont visibles localement ( lintrieur dune entit)

Syntaxe de dclaration

CONSTANT nom1, nom2 : type := valeur_constante;

Exemples de dclaration de constantes


CONSTANT init: integer
:= 123;
CONSTANT vcc: std_logic
:= '1';
CONSTANT zero: std_logic_vector(0 TO 7) := "00000000";
Une autre forme de la dernire dclaration :
CONSTANT zero: std_logic_vector(0 TO 7) := (OTHERS => '0');

Avantage : On peut facilement changer le nombre de bits sans changer la valeur


du vecteur.
Septembre 2011

V. Fischer, F. Bernard: ENSL1

162

Types de donnes dans la bibliothque standard


Types de donnes utilises pour la synthse

Entiers (INTEGER)
Valeurs entires de 32 bits max. (-2147483648 +2147483647)
numrs (ENUMERATED)
Une liste explicite de valeurs est donne
Bits (BIT)
Valeurs '0' ou '1, il sagit en fait dun type numr
Boolens (BOOLEAN)
Valeurs logiques 'vrais' (TRUE) ou 'faux' (FALSE), type numr
Caractres (CHARACTER)
Type numr : lettres + chiffres + caractres de contrle (tableau ASCII)

A noter : Le type std_logic utilis souvent par les lectroniciens ncessite


lutilisation de la bibliothque IEEE (paquetage std_logic_1164)

Autres types de donnes (non directement synthtisables)

Rels (REAL)
Utilisables pour la simulation, mais pas pour la synthse
Physiques (TIME)
Valeurs physiques utilises pour gnrer un temps dattente

Septembre 2011

V. Fischer, F. Bernard: ENSL1

163

Types de donnes cres par lutilisateur


Types numrs

Utiliss le plus souvent pour la description dune machine dtats


Ex. : TYPE etat IS (attente, marche, arret, erreur);

Sous-types

Sous-ensemble dun type, obtenus en prcisant (limitant) le domaine de dfinition


Ex. : SUBTYPE natural IS INTEGER RANGE 0 TO INTEGERHIGH;
SUBTYPE positive IS INTEGER RANGE 1 TO INTEGERHIGH;

Types composs

Tableaux (ARRAY) groupes dobjets du mme type


Ex. : TYPE string IS ARRAY (positive RANGE <>) OF CHARACTER;
TYPE bit_vector IS ARRAY (natural RANGE <>) OF BIT;
TYPE my_table IS ARRAY(0 to 2, 0 to 7) OF BIT;

Enregistrements (RECORD) groupes dobjets de types diffrentes (simulation)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

164

Types de donnes dfinies dans la bibliothque IEEE


Signaux de la logique standard
Neuf niveaux standards possibles (explications, voir les fiches suivantes) :
Valeur

Signification

Simul.

Synth.

Unknown non initialis

Forcing unknown niveau inconnu, forage fort

Forcing 0 niveau 0, forage fort

Forcing 1 niveau 1, forage fort

High Impedance haute impdance

Weak Unknown niveau inconnu, forage faible

Weak 0 niveau 0, forage faible

Weak 1 niveau 1, forage faible

Don't care niveau quelconque

Septembre 2011

V. Fischer, F. Bernard: ENSL1

165

Signification de niveaux en "logique standard"


'U'
Non initialis - valeur de tous les signaux au dbut de la simulation
Valeur de tous les signaux qui ne sont pas gnrs (actualiss)
pendant la simulation

'X'
Forage fort un niveau inconnu
Ex. : Le signal est gnr par deux gnrateurs qui donnent deux
valeurs diffrentes
'1'
X

Conflit sur le bus !


(= Logic contention)

'0'

Septembre 2011

V. Fischer, F. Bernard: ENSL1

166

Signification de niveaux en logique standard(suite)


Rsolution du conflit

La logique trois tats : pour viter le conflit, au moins une sortie doit tre
haute impdance Z

Bus
A
'Z'

'1'

'0'
'0'

Septembre 2011

'0'

A
Z
Z
Z
1
0
1
0
0
1

B
Z
1
0
Z
Z
1
0
1
0

V. Fischer, F. Bernard: ENSL1

Bus
Z
1
0
1
0
1
0
X
X

Commentaire
Sans conflit
Sans conflit
Sans conflit
Sans conflit
Sans conflit
Conflit potentiel
Conflit potentiel
Conflit sur le bus !
Conflit sur le bus !
167

Signification de niveaux en logique standard(suite)


Reprsentation lectronique de niveaux logiques

'1', '0', 'H', 'L', 'W', 'Z'


VDD

VDD

VDD

'1'

'H'
'W'

'Z'
(non connect)

'0'

Septembre 2011

'L'

V. Fischer, F. Bernard: ENSL1

168

Signification de niveaux en logique standard(suite)


Collecteur ouvert

Tableau de vrit
du collecteur ouvert :
VDD

In Out
0
Z
1
0

X Y A B Bus
0 0 Z Z H
0 1 Z 0
0
1 0 0 Z
0
1 1 0 0
0

Commentaire
Sans conflit
Sans conflit
Sans conflit
Sans conflit

Inconvnient :
Vitesse de commutation rduite cause de la rsistance externe relativement lev !
Septembre 2011

V. Fischer, F. Bernard: ENSL1

169

Signification de niveaux en logique standard(suite)


-
Niveau quelconque
Peut tre assign la sortie dans le cas o le signal correspondant ne
dpend pas des signaux dentre (ceci peut amliorer le rsultat de la
synthse surface utilise)
A utiliser avec prcaution, le rsultat de la comparaison :
1 = - est toujours faux (FALSE)

Septembre 2011

V. Fischer, F. Bernard: ENSL1

170

Rsum - types de donnes


Types prdfinis (librairie STD)
Types scalaires

sim

syn

character (num)

bit (num)

boolean (num)

real (flott)

integer (entier)

time (physique)

Types composs (tableaux)

sim

syn

string

bit_vector

array of integer

sim

syn

Types dfinis dans la librairie IEEE


Types scalaires

sim

syn

Types composs (tableaux)

std_ulogic

std_ulogic_vector

std_logic (signaux)

std_logic_vector (vecteurs de signaux)

Types dfinis par utilisateur


Sous-types, types numrs,
Septembre 2011

V. Fischer, F. Bernard: ENSL1

171

Logique non rsolue versus logique rsolue


Logique non rsolue (unresolved logic) std_ulogic
Signaux mono-source un seul gnrateur peut gnrer le signal
Permet dviter que le mme signal soit affect deux fois deux
endroits diffrents
Impossible de crer un bus trois tats

Logique rsolue std_logic


Signaux multi-source plusieurs gnrateurs peuvent gnrer un
signal
Utilis pour connecter plusieurs units au mme signal ( un bus)
Un tableau donnant la rsolution de conflits est spcifi dans la
bibliothque (ex. : '0' et '1' donnent 'X', 'Z' et '1' donnent '1', etc.)
Attention aux multiples affectations dun signal en logique rsolue dans la
mme architecture cette erreur ne sera pas forcement signale par le
compilateur et elle peut avoir des consquences dramatiques !
Septembre 2011

V. Fischer, F. Bernard: ENSL1

172

Oprateurs logiques et relationnels


Oprateurs logiques
and

or

nand

nor

xor

not

xnor

Oprateurs relationnels
=

/=

<

<=

>

>=

Priorit des oprateurs logiques et relationnels


=
and

Septembre 2011

/=
or

not
<
<=
nand
nor

V. Fischer, F. Bernard: ENSL1

>
xor

>=
xnor

173

Oprateurs logiques et relationnels (suite)


Priorits des oprateurs logiques et relationnels exemple :
Opration recherche (fonction logique) :
x = ab + cd
Affectation incorrecte :
x <= a AND b OR c AND d;
quivalente :
x <= ((a AND b) OR c) AND d;
Version correcte :
x <= (a AND b) OR (c AND d);

Septembre 2011

V. Fischer, F. Bernard: ENSL1

174

Oprateurs arithmtiques
Oprateurs additifs
+
- addition
- soustraction
&
- concatnation de deux vecteurs et non pas ET logique !
Oprateurs multiplicatifs - viter pour la synthse
*
- multiplication
/
- division
mod - division modulo
rem - reste de la division

Oprateurs divers - viter pour la synthse


**
- lvation au carr
abs - valeur absolu
Les opration additifs + et sont dfinis seulement pour les entiers et les
rels ! Pour additionner (soustraire) les signaux du type std_logic
(std_logic_vector), il faut utiliser la bibliothque arithmtique !!!
Septembre 2011

V. Fischer, F. Bernard: ENSL1

175

Oprateurs arithmtiques (suite)


Vecteurs de signaux et leur concatnation
SIGNAL a
: std_logic_vector(3 DOWNTO 0);
SIGNAL b
: std_logic_vector(3 DOWNTO 0);
SIGNAL c, d, e, f: std_logic_vector(7 DOWNTO 0);
Les chanes de caractres (chiffres)
sont entre les guillemets

a <= "0000";
b <= "1111";

Un caractre (chiffre) est entre les


apostrophes

c <= a & b;

-- c <= "00001111"

d <= '0' & "0001111";

-- d <= "00001111"

e <= '0' & '0' & '0' & '0' & '1' & '1' & '1' & '1';
-- e <= "00001111
f <= "0000" & (OTHERS => '1');
-- f <= "00001111
Septembre 2011

V. Fischer, F. Bernard: ENSL1

176

Oprateurs lmentaires (suite)


Oprateurs en VHDL - rcapitulatif
Oprateur

Types doprandes

Rsultat

and or nand nor xor

bits ou boolens

bit ou boolen

= /= < <= > >=

tous types

boolen

Additifs

+ &

entiers ou rels
tableaux (concatnation)

entier ou rel
tableau

Signe

+ -

entier ou rel

entier ou rel

* /
mod rem

entiers ou rels
entiers

entier ou rel
entier

** abs
not

entiers ou rels
bit ou boolen

entier ou rel
bit ou boolen

Classe
Logiques
Relationnels

Multiplicatifs
Divers

Septembre 2011

V. Fischer, F. Bernard: ENSL1

177

Modles de conception en VHDL


Modles de conception
en VHDL

flot de
donnes
Expressions
concurrentes

structurel
Composants et
interconnexions

Sous-ensemble le plus appropri


pour la synthse

Septembre 2011

V. Fischer, F. Bernard: ENSL1

comportemental
Expressions
squentielles
Registres
Machines dtats
Bancs de test

178

Exemple : XOR3
U1

U2

a
b

ENTITY xor3
PORT(
a
:
b
:
c
:
resul :
);
END xor3;

Septembre 2011

resul

IS
IN STD_LOGIC;
IN STD_LOGIC;
IN STD_LOGIC;
OUT STD_LOGIC

V. Fischer, F. Bernard: ENSL1

179

Architecture Flot de donnes (Dataflow)


U1

U2

u1_out

a
b

resul

Nom darchitecture

Nom dentit

ARCHITECTURE xor3_flotdon OF xor3 IS


SIGNAL u1_out: STD_LOGIC;
BEGIN

Dclaration
du signal interne

u1_out <= a XOR b;


resul

<= u1_out XOR c;

END xor3_flotdon;

Septembre 2011

V. Fischer, F. Bernard: ENSL1

180

Description darchitecture par un Flot de donnes

Le modle Flot de donnes dcrit les relations internes


entre les donnes dans le module.
La description de larchitecture base sur ce modle utilise
les expressions concurrentes pour raliser la logique. Ces
expressions sont values en mme temps (en parallle),
donc leur ordre nest pas important !
Le modle Flot de donnes est le plus utile, si la logique
peut tre reprsente par des fonctions boolennes.

Septembre 2011

V. Fischer, F. Bernard: ENSL1

181

Architecture utilisant le modle structurel


ARCHITECTURE xor3_struct OF xor3 IS
SIGNAL u1_out: STD_LOGIC;
COMPONENT xor2
PORT(
i1 : IN STD_LOGIC;
i2 : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END COMPONENT;
BEGIN
u1: xor2 PORT MAP (i1 => a,
i2 => b,
y => u1_out);

Dclaration du signal interne


Dclaration du composant
(qui est dfini ailleurs)
Instanciations du composant

i1
i2

y
XOR2

u1_out

resul

i1

u2: xor2 PORT MAP (i1 => u1_out,


i2 => C,
Y => resul);
END xor3_struct;
Septembre 2011

y
i2

V. Fischer, F. Bernard: ENSL1

u1

i1

c
XOR3

y
i2

u2
182

Architecture utilisant le modle structurel (suite)

Le modle structurel est le plus simple comprendre. Il est


le plus proche la saisie du schma : il utilise les blocs
simples pour composer des fonctions logiques.
Les composants peuvent tre interconnects dune manire
hirarchique.
Dans le modle structurel nous pouvons connecter les
ports simples ou les composants complexes et abstrait.
Le modle structurel de larchitecture est utile pour la
ralisation dune conception o les sous-blocs sont
connects dune manire naturelle.

Septembre 2011

V. Fischer, F. Bernard: ENSL1

183

Dclaration et instanciation du composant


Association des connexions par leur noms (recommande)

COMPONENT xor2 IS
PORT(
i1 : IN STD_LOGIC;
i2 : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END COMPONENT;
u1: xor2 PORT MAP (i1 => a,
i2 => b,
y => u1_out);

Nom de linstanciation
Septembre 2011

Dclaration du composant
(dans la partie dclarations
de larchitecture)

Instanciation du composant
(dans le corps de larchitecture)

Nom du composant
V. Fischer, F. Bernard: ENSL1

184

Dclaration et instanciation du composant (suite)


Association des connexions par leur position
(non recommande !)
COMPONENT xor2 IS
PORT(
i1 : IN STD_LOGIC;
i2 : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END COMPONENT;
u1: xor2 PORT MAP (a, b, u1_out);

Septembre 2011

V. Fischer, F. Bernard: ENSL1

185

Architecture utilisant le modle comportemental


ARCHITECTURE xor3_comp OF xor3 IS
BEGIN
xor3_proc: PROCESS (a, b, c)
BEGIN
IF ((a XOR b XOR c) = '1') THEN
resul <= '1';
ELSE
resul <= '0';
END IF;
END PROCESS xor3_proc;
END xor3_comp;

Le modle comportemental dcrit ce qui se passe la sortie


du module (en fonction des entres) sans prciser la structure
interne du module (qui reprsente une bote noire).
Ce modle utilise une structure VHDL appele PROCESS
Si possible, ne pas utiliser pour synthtiser la logique
combinatoire
Septembre 2011

V. Fischer, F. Bernard: ENSL1

186

Structures concurrentes
Instructions concurrentes

Affectation inconditionnelle dun signal


signal <= expression (avec les signaux et/ou avec les constantes);
Affectation conditionnelle dun signal
signal <= expression1 WHEN condition ELSE expression2;
Affectation slective dun signal
WITH selecteur SELECT
signal <= expression1 WHEN valeur_selecteur, ;

Instanciation de composant
Duplication du matriel
tiquette : FOR variable_de_boucle IN intervalle GENERATE
{instruction(s) concurrente(s)}
END GENERATE tiquette;

Duplication conditionnelle du matriel


tiquette : IF condition GENERATE
{instruction(s) concurrente(s)}
END GENERATE tiquette;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

187

Instructions concurrentes Exemple


ENTITY multiplexeurs IS
PORT (a, b, sel : IN bit;
x, y, z
: OUT bit);
END multiplexeurs;

Entit multiplexeurs
Architecture rtl
a

ARCHITECTURE rtl OF multiplexeurs IS


BEGIN
-- affectation inconditionnelle
x <= (a AND NOT sel) OR (b AND sel);
-- affectation conditionnelle
y <= a WHEN sel='0' ELSE
b;
-- affectation slective
WITH sel SELECT
z <= a WHEN '0',
b WHEN '1',
'0' WHEN OTHERS;
END rtl;
Septembre 2011

sel
a
b

b
sel
a
b

sel

V. Fischer, F. Bernard: ENSL1

sel

188

Instructions concurrentes Exemple (suite)

a
x

Puisque les trois descriptions


dcrivent la mme structure
logique, larchitecture rtl sera
implant dans le matriel de la
faon suivante - deux structures
redondantes seront supprimes

y
b

z
sel

Septembre 2011

V. Fischer, F. Bernard: ENSL1

189

Instructions concurrentes (suite)


Assignation conditionnelle
signal_cible <= valeur1 WHEN condition1 ELSE
valeur2 WHEN condition2 ELSE
. . .
valeurN-1 WHEN conditionN-1 ELSE
valeurN;
valeurN
valeurN-1

...

signal_cible
valeur2

conditionN-1

valeur1

condition2

condition1

Conclusion : Codage par priorit prudence !


Septembre 2011

V. Fischer, F. Bernard: ENSL1

190

Instructions concurrentes (suite)


Codage par priorit dune
affectation conditionnelle :
Logique
obtenue

sel1

-- affectation conditionnelle
y <= a WHEN sel1 = '1' ELSE
b WHEN sel2 = '1 ELSE
c;

sel2
a
y

La slection du signal a
avec le signal sel1 est
prioritaire
devant b et c !

q = (sel1 AND a)
OR ((NOT sel1) AND sel2 AND b)
OR ((NOT sel1) AND (NOT sel2) AND c)
Septembre 2011

V. Fischer, F. Bernard: ENSL1

191

Instructions concurrentes (suite)


Affectation slective
WITH selecteur SELECT
signal_cible <= valeur1 WHEN valeur_selecteur,
valeur2 WHEN valeur_selecteur,
...
valeurN WHEN OTHERS;

Exemple dapplication : multiplexeur


valeur1
valeur2
valeur3
valeur4

signal_cible
MUX

selecteur
Septembre 2011

V. Fischer, F. Bernard: ENSL1

192

Instructions concurrentes (suite)


LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY multiplexeur IS
PORT (a, b, c, d : IN std_logic;
sel
: IN std_logic_vector(1 DOWNTO 0);
y
: OUT std_logic);
END multiplexeur;
ARCHITECTURE rtl OF multiplexeur IS
BEGIN
-- assignation slectionne
WITH sel SELECT
y <= a WHEN "00",
b WHEN "01",
Slection
c WHEN "10",
d WHEN OTHERS;
END rtl;

y = (a AND
OR (b
OR (c
OR (d
Septembre 2011

sans priorit !

(NOT sel(1)) AND (NOT sel(0)))


AND (NOT sel(1)) AND sel(0))
AND sel(1) AND (NOT sel(0)))
AND sel(1) AND sel(0))
V. Fischer, F. Bernard: ENSL1

193

Structures squentielles de base


Utilises seulement lintrieur dun processus (PROCESS),
fonction (FUNCTION) et procdure (PROCEDURE) !
Quatre structures squentielles de base :
Affectation dun signal
signal <= expression (avec les signaux);

Structure conditionnelle
IF condition THEN
{instruction(s) squentielle(s)}
[ELSIF
{instruction(s) squentielle(s)}]
[ELSE
{Instruction(s) squentielle(s)}]
...
END IF;
Septembre 2011

V. Fischer, F. Bernard: ENSL1

Parties
optionnelles

194

Structures squentielles de base (suite)


Structure slective
CASE selecteur IS
WHEN valeur_selecteur1 =>
{instruction(s) squentielle(s)}
WHEN valeur_selecteur2 =>
{instruction(s) squentielle(s)}
WHEN valeur_selecteur3 =>
{instruction(s) squentielle(s)}
...
[WHEN OTHERS =>
{instruction(s) squentielle(s)}]
END CASE;

Septembre 2011

V. Fischer, F. Bernard: ENSL1

Partie optionnelle,
mais conseille

195

PROCESS
Suite dinstructions VHDL avec un comportement squentiel
Ordre dinstructions lintrieur du PROCESS - important !
Trois phases du PROCESS :
Repos, activation, excution

Syntaxe :
[tiquette:] PROCESS [(liste de sensibilit)]
[partie dclarative]
BEGIN
{instruction(s) squentielle(s)}
END PROCESS [tiquette];

Optionnelles

Optionnelles

Septembre 2011

V. Fischer, F. Bernard: ENSL1

196

Dclenchement du PROCESS et mise jour des


valeur des signaux
Deux possibilits de dclenchement :
A chaque changement dtat dun de ses signaux dactivation
donns dans la liste de sensibilit (plusieurs signaux dactivation
peuvent tre suivis), ce type de dclenchement est utilis plutt
pour raliser les :
Latches,
Registres
Machines dtats
Aprs un temps dattente limit par un vnement (WAIT UNTIL)
ou par la dure spcifi - WAIT FOR (un seul paramtre peut tre
suivi), ce type de dclenchement est utilis plutt dans les :
Bancs de test

Les signaux sont valus pendant le PROCESS, mais miss


jour la fin de PROCESS
Les variables sont values et mises jour immdiatement
Septembre 2011

V. Fischer, F. Bernard: ENSL1

197

Types de PROCESS
PROCESS asynchrone
Sensible tous les signaux qui sont
valus (tests) dans le PROCESS
Exemple
PROCESS(a, b, sel)

d
ena

ENA

La liste de sensibilit contient tous


les signaux rfrencs dans le PROCESS

PROCESS synchrone
Sensible au signal dhorloge et ventuellement aux autres signaux (asynchrones)
Exemple
PROCESS(clr, clk)

clk
CLRN

clr
La liste de sensibilit ne contient pas lentre D,
seulement lhorloge et les signaux asynchrones
Septembre 2011

V. Fischer, F. Bernard: ENSL1

198

Types de PROCESS (suite)


PROCESS combinatoire
TOUTES les combinaisons possibles dune
affectation sont traites dans le PROCESS
Exemple
IF (sel = 1) THEN c <= a;
ELSE c <= '0';

sel

Le signal est affect quand sel = 1,


mais aussi quand sel = 0 !

PROCESS squentiel
Une condition daffectation nest pas
traite
Exemple
IF (ena = 1) THEN q <= d;

d
ena

ENA

En omettant la branche pour ena = 0 on suppose implicitement que dans ce


cas q <= q (on garde la mme valeur, donc on la mmorise).
Septembre 2011

V. Fischer, F. Bernard: ENSL1

199

Utilisation de plusieurs PROCESS


Une architecture peut contenir plusieurs PROCESS
Les PROCESS sont excuts en parallle ils se trouvent
dans la partie concurrente de larchitecture
A lintrieur du PROCESS les instructions sont excuts
squentiellement
La rduction du nombre de PROCESS amliore la lisibilit
Architecture
Process 1
Structures
concurrentes

.
.
.

Signaux

L'ordre nest
pas important

Process 2
Septembre 2011

V. Fischer, F. Bernard: ENSL1

200

Exemple de deux structures quivalentes


LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY simp IS
PORT(a, b : IN std_logic;
x : OUT std_logic);
END simp;
ARCHITECTURE exem OF simp IS
SIGNAL c : std_logic;
BEGIN
c <= a AND b;
x <= c;
END exem;
c et x sont mis jour en
parallle la fin de PROCESS
Septembre 2011

LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY simp_prc IS
PORT(a,b : IN std_logic;
x : OUT std_logic);
END simp_prc;
ARCHITECTURE exem OF simp_prc IS
SIGNAL c : STD_LOGIC;

BEGIN
process1: PROCESS(a, b)
BEGIN
c <= a and b;
END PROCESS process1;
process2: PROCESS(c)
BEGIN
x <= c;
END PROCESS process2;
END exem;

V. Fischer, F. Bernard: ENSL1

201

Deux structures qui sont quivalentes en synthse


mais diffrentes en simulation
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY simp IS
PORT(a, b : IN std_logic;
x : OUT std_logic);
END simp;
ARCHITECTURE exem OF simp IS
SIGNAL c : std_logic;
BEGIN
c <= a AND b;
x <= c;
END exem;
Simulation avant et
aprs la synthse du A

a
b
c
x

Simulation aprs la synthse du B


Septembre 2011

LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY simp_prc IS
PORT(a,b : IN std_logic;
x : OUT std_logic);
END simp_prc;
ARCHITECTURE exem OF simp_prc IS
SIGNAL c : STD_LOGIC;
BEGIN
PROCESS(a, b)
BEGIN
c <= a and b;
x <= c;
END PROCESS;
END exem;
Simulation
fonctionnelle du B

a
b
c
x

V. Fischer, F. Bernard: ENSL1

202

Deux structures qui sont quivalentes en synthse


mais diffrentes en simulation (suite)
Conclusions :
vitez lutilisation de PROCESS pour raliser la logique
combinatoire, sinon, prudence
Utilisez les PROCESS surtout pour raliser la logique squentielle
(contenant les lments de mmorisation)
Latches (bloqueurs)
Registres
Machines dtats
Utiliser les PROCESS librement pour raliser les bancs de test

Septembre 2011

V. Fischer, F. Bernard: ENSL1

203

Instructions concurrentes et squentielles rcapitulatif


Instructions
Concurrentes

Instructions
Squentielles

Affectation concurrente
<=

Affectation squentielle
<=

Affectation conditionnelle
<= WHEN ELSE

Structure conditionnelle
IF THEN ELSE END IF

Affectation slective
WITH SELECT
<= WHEN

Structure slective
CASE IS
WHEN =>
END CASE

Structures GENERATE
FOR GENERATE
IF GENERATE

Boucles LOOP
FOR LOOP
WHILE LOOP

Septembre 2011

V. Fischer, F. Bernard: ENSL1

204