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
[email protected]
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