cours 6 unité de controle(vhdl)
DESCRIPTION
cours de VHDLTRANSCRIPT
-
Conception et implmentation de s systmes numriques
Cours #6Conception dunits de contrle
-
Conception et implmentation des systmes numriques
Plan
Rappel circuits squentiels: Analyse dun circuit squentiel synchrone: Machines tats en VHDL: Conception de machines tats: Conception de processeurs: Exemples
Modle de producteur/consommateur Multiplicateur srie:
-
Conception et implmentation des systmes numriques
Rappel: exemple de la machine distributrice
33Source: Wikipdia
-
Conception et implmentation des systmes numriques
Parties dun processeur
Un processeur est compos de deux parties: Le chemin des donnes (datapath) traite les donnes. Il inclut:
des registres; des units fonctionnelles (comme une unit arithmtique et logique) un mcanisme de commutation pour transfrer et manipuler les donnes.
Lunit de contrle (control unit) est responsable du squenage des oprations excuter par le chemin de donnes selon des entres externes et le rsultat des oprations.
Chemin des donnes
Unit de contrle
Contrle tat
Sortie des donnes
Sorties de contrle
Entre des donnes
Entres de contrle
-
Conception et implmentation des systmes numriques
Machine distributrice
ProcesseurClavier
senseur de pices
MM
MM
Moteurs des plateaux
actuateurs pour rendre la monnaie
affichages
tatGrer largentGrer linventaire
Lunit de contrle dtermine dans quel ordre les diffrentes actions doivent se produire, et gnre les signaux de contrle correspondants pour les chemin des donnes et pour les sorties.
-
Conception et implmentation des systmes numriques
Circuits squentiels synchrones
Un circuit squentiel comporte: une partie combinatoire; et des lments mmoire.
Les lments mmoire entreposent ltat prsent du circuit. La partie combinatoire calcule le prochain tat du systme ainsi que ses sorties. Un circuit squentiel a normalement des entres et des sorties. Un circuit squentiel est men par un signal dhorloge et devrait avoir un signal
de rinitialisation. Ces signaux sont des entres spciales.circuit combinatoire
prochain tat tat prsent
horloge
entres sorties
lments mmoire
-
Conception et implmentation des systmes numriques
Circuits squentiels synchrones
Il y a deux types de circuits squentiels: les circuits de Moore et de Mealy. Dans une machine de Moore, les sorties ne sont fonctions que de ltat
prsent. Dans une machine de Mealy, les sorties sont fonctions de ltat prsent ainsi
que des entres.circuit combinatoire
prochain tattat prsent
horloge
entres
sorties de Moore
sorties de Mealy
fonction de sortie (Moore)
fonction de sortie (Mealy)
calcul du prochain tatlments mmoire
-
Conception et implmentation des systmes numriques
Plan
Rappel circuits squentiels: Analyse dun circuit squentiel synchrone: Machines tats en VHDL: Conception de machines tats: Conception de processeurs: Exemples
Modle de producteur/consommateur Multiplicateur srie:
-
Conception et implmentation des systmes numriques
Analyse dun circuit squentiel synchrone
On analyse un circuit pour en comprendre le fonctionnement. Analyser un circuit squentiel synchroneen quatre tapes:
1. identifier les variables dtats;2. crire les quations dtats et les quations de sortie;3. dresser le tableau dtats; et,4. dessiner le diagramme dtats.
D
CLK
Q'
Q
ZX D
CLK
Q'
QCLK
A
B
2.A+ = A xor B;B+ = B or X;Z = A nor B;
1. A et B
-
Conception et implmentation des systmes numriques
Analyse dun circuit squentiel synchrone(suite)
D
CLK
Q'
Q
ZX D
CLK
Q'
QCLK
A
B
3. Tableau dtats: 4. Diagramme dtats:
tat 0: AB = 00tat 1: AB = 01tat 2: AB = 10tat 3: AB = 11
tat 3
Sortie: 0
tat 2
Sortie: 0
tat 1
Sortie: 0
tat 0
Sortie: 1
-
0 0
1
-
reset(tat
initial)
1
tat prsent entre tat prochain sortie
A B X A+ B+ Z
0 0 0 0 1 10 0 1 0 1 10 1 0 1 0 00 1 1 1 1 01 0 0 1 1 01 0 1 1 1 01 1 0 0 0 01 1 1 0 1 0
tat prsent entre tat prochain sortie
A B X A+ B+ Z
0 0 0 0 1 10 0 1 0 1 10 1 0 1 0 00 1 1 1 1 01 0 0 1 1 01 0 1 1 1 01 1 0 0 0 01 1 1 0 1 0
-
Conception et implmentation des systmes numriques
Plan
Rappel circuits squentiels: Analyse dun circuit squentiel synchrone: Machines tats en VHDL: Conception de machines tats: Conception de processeurs: Exemples
Modle de producteur/consommateur Multiplicateur srie:
-
Conception et implmentation des systmes numriques
Description dune machine tats en VHDL1. partir dun schma
Approche adquate: quand on dsire modliser un circuit pour lequel on a le schma quand on a les quations dtats et de sortie
library IEEE;use IEEE.std_logic_1164.all;
entity cctsequentielex1 isport (
reset : in STD_LOGIC;CLK : in STD_LOGIC;X : in STD_LOGIC;Z : out STD_LOGIC
);end cctsequentielex1;
architecture arch1 of cctsequentielex1 issignal A : STD_LOGIC; -- bascule A (en haut)signal B : STD_LOGIC; -- bascule B (en bas)begin
process(CLK, reset) isbegin if (reset = '0') then
A
-
Conception et implmentation des systmes numriques
Description dune machine tats en VHDL2. partir dun diagramme dtats
Approche beaucoup plus puissante: identifier les tats, les conditions de transition et les sorties pour chaque tat pas besoin dquations dtats plus lisible, robuste, facile maintenir
architecture arch2 of cctsequentielex1 istype type_etat is range 0 to 3; signal etat : type_etat := 0;begin
process(CLK, reset) isbegin
if (reset = '0') thenetat etat if x = '0' then etat
-
Conception et implmentation des systmes numriques
Description dune machine tats en VHDLEncodage symbolique des tats
Lors de la conception, on prfre souvent un encodage symbolique lencodage numrique des tats.
Type spcial pour ltat.Ici: encodage symbolique avec un type numr.
Autres observations:machine de Moore (sortie dfinie seulement par ltat)sortie spcifie dans la condition de rinitialisationsortie avec registre
S2Sortie = 1
S4Sortie = 0
S3Sortie = 0
S1Sortie = 1
X
X
resetarchitecture unprocessus of cctsequentielex2 is
type type_etat is (S1, S2, S3, S4);signal etat : type_etat := S1;
beginprocess(CLK, reset) isbegin if (reset = '0') then
etat
-
Conception et implmentation des systmes numriques
Parenthse: types numrs en VHDL
Un type peut tre dfini avec une numration dlments dans une liste. Lordre dnumration dfinit un indice pour chaque lment partir de 0. Les
oprateurs relationnels sappliquent entre les lments selon cet ordre. Exemples: dfinitions dans le package standard, disponible dans le manuel de
rfrence du langage VHDL, norme 1076-2002 http://www.ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1003477
package STANDARD is
type BOOLEAN is (FALSE, TRUE);
type BIT is ('0', '1');
type CHARACTER is (NUL, SOH, STX, ETX, EOT, ENQ, ACK, BEL, BS, HT, LF, VT, FF, CR, SO, SI, DLE, DC1, DC2, DC3, DC4, NAK, SYN, ETB, CAN, EM, SUB, ESC, FSP, GSP, RSP, USP, ' ', '!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '', '?', --- etc.
-
Conception et implmentation des systmes numriques
circuit combinatoire
prochain tattat prsent
horloge
entres
sorties de Moore
sorties de Mealy
fonction de sortie (Moore)
fonction de sortie (Mealy)
calcul du prochain tatlments mmoire
Trois styles de description dune machine tats en VHDL
Les trois parties dune machine tatssont : les lments mmoire qui conservent ltat prsent de la machine; un circuit combinatoire qui calcule le prochain tat; et, un circuit combinatoire qui calcule les sorties de Moore et de Mealy.
Il y a trois styles principaux de description selon la rpartition des trois parties de la machine sur un ou plusieurs processus.
-
Conception et implmentation des systmes numriques
Trois styles de description dune machine tats en VHDL1. Avec un seul processus
Attention aux sorties: infrence de registres pour les sorties spcifier la sortie du prochain tat tant donns un tat et une entre
prsentes. si plusieurs conditions rsultent en un tat donn, il faut spcifier la sortie
de Moore de cet tat chaque fois. architecture unprocessus of cctsequentielex2 istype type_etat is (S1, S2, S3, S4);signal etat : type_etat := S1;begin
process(CLK, reset) isbegin if (reset = '0') then
etat
-
Conception et implmentation des systmes numriques
process(etat)begin
case etat iswhen S1 | S2 => sortie sortie
-
Conception et implmentation des systmes numriques
Trois styles de description dune machine tats en VHDL2b. Avec deux processus
Bon compromis entre la flexibilit et la lisibilit du code. Deux processus:
un pour le calcul et lentreposage de ltat un pour les sorties (peut tre remplac par des noncs concurrents)
architecture arch2 of cctsequentielex1 istype type_etat is range 0 to 3; signal etat : type_etat := 0;begin
process(CLK, reset) isbegin
if (reset = '0') thenetat etat if x = '0' then etat
-
Conception et implmentation des systmes numriques
Trois styles de description dune machine tats en VHDL3. Avec trois processus
Style qui correspondre exactement au modle. Code est trs lisible mais moins compact que la version deux processus. La liste de sensibilit du processus qui calcule le prochain tat inclut le signal qui
entrepose ltat courant ainsi que toutes les entres. Le mme principe sapplique au processus qui calcule les sorties (pour une
machine de Mealy).
-
Conception et implmentation des systmes numriques
Trois styles de description dune machine tats en VHDL3. Avec trois processus
-- processus pour le calcul du prochain tatprocess(etat, x) isbegin
case etat iswhen S1 =>
if x = '0' thenetat_prochain
-
Conception et implmentation des systmes numriques
Trois styles de description dune machine tats en VHDLConclusion
Les trois styles ont chacun leurs mrites et inconvnients. Cette varit doptions illustre nouveau la trs grande richesse de VHDL. Cette richesse cause cependant beaucoup de difficults parce quil nexiste pas
une norme unique pour la description de machines tats. Il est donc plus difficile de concevoir un synthtiseur qui puisse reconnatre de
faon satisfaisante les intentions du concepteur. Il est ncessaire de consulter le manuel dutilisation du synthtiseur utilis afin
de connatre les styles dencodage de machines tats reconnus.
-
Conception et implmentation des systmes numriques
Parenthse: rsultats diffrentspour la synthse et la simulation: comment les viter
Attention la liste de sensitivit labsence dun signal dans la liste de sensitivit est importante pour le
simulateur le synthtiseur suppose (en gnral) que le concepteur a fait une erreur:
noncs wait: pas tenus en compte par le synthtiseur Quoi faire?
Surveiller les avertissements du synthtiseur Pour les processus dcrivant des bascules: placer seulement clk et reset
dans la liste de sensitivit Pour les processus dcrivant de la logique combinatoire: placer tous les
signaux faisant partie dexpressions dans la liste de sensitivitprocess(A, B)begin
T1
-
Conception et implmentation des systmes numriques
Plan
Rappel circuits squentiels: Analyse dun circuit squentiel synchrone: Machines tats en VHDL: Conception de machines tats: Conception de processeurs: Exemples
Modle de producteur/consommateur Multiplicateur srie:
-
Conception et implmentation des systmes numriques
Conception de machine tatsPrincipes de base
La conception dune machine tats est un processus cratif similaire la description dun algorithme dans un langage de programmation:
dbuter avec une description de la relation dsire entre les entres et les sorties;
faire des choix en faisant un compromis entre des contraintes qui ne peuvent toutes tre satisfaites simultanment: performance, prcision, complexit, lisibilit, la testabilit et la consommation de puissance;
considrer les cas spciaux sparment; pendant le processus de conception, on ralise souvent que la spcification
est incomplte, ambige ou mal comprise; le systme une fois conu se comporte exactement tel quil a t dcrit,
mais pas ncessairement comme on voudrait quil se comporte; utiliser un processus itratif ,rien ne marche la premire fois; bien documenter toutes les tapes.
-
Conception et implmentation des systmes numriques
Conception de machine tatsProcdure traditionnelle et avec un VHDL
tape Procdure traditionnelle Procdure avec un HDL(VHDL)
Btir un diagramme dtats partir des donnes du problme. oui oui
Btir le tableau dtats partir du diagramme dtats, en identifiant les tats par des symboles. oui non
Rduire le nombre dtats ncessaires en liminant les tats quivalents. oui
pas obligatoirepeut simplifier la documentation
et la clart du code
Assigner un code binaire chaque tat, et ajouter cette information au tableau dtat. oui par loutil de synthse
partir du tableau dtat complet, obtenir les quations boolennes dentre des bascules du type choisi ainsi que les quations boolennes des sorties du systme, en simplifiant si possible.
oui par loutil de synthse
Donner le diagramme et/ou construire le circuit. oui par loutil de synthse
Vrifier, vrifier, vrifier. oui oui
-
Conception et implmentation des systmes numriques
Conception de machine tatsAlgorithmic State Machines
Cette approche nest plus vraiment utilise depuis ladoption des HDL.
-
Conception et implmentation des systmes numriques
Conception de machine tatsBtir le diagramme dtats
La reprsentation graphique offerte par un diagramme dtats est trs avantageuse. Certains outils de conception produisent automatiquement du code VHDL partir dun diagramme dtats.
Les principes suivants peuvent grandement aider obtenir le diagramme dtat. partir des donnes du problme, simuler certaines combinaisons dentre
et de sortie pour bien comprendre la nature du problme. Construire un diagramme partiel menant une sortie dsire du systme. Ajouter au diagramme les autres chemins menant aux sorties dsires du
systme. Vrifier le diagramme pour viter les tats quivalents (deux tats qui
mnent aux mmes prochains tats et qui ont les mmes sorties pour les mmes entres).
Complter le diagramme en ajoutant des transitions pour toutes les entres possibles partir de chaque tat.
Identifier toute condition o le circuit doit tre rinitialis un tat de dpart, et annoter le diagramme avec cette information.
-
Conception et implmentation des systmes numriques
Btir un diagramme dtatsExemple: reconnatre une squence
Donnez un diagramme dtats pour une machine de Mealy qui doit reconnatre la squence 1101
-
Conception et implmentation des systmes numriques
Btir un diagramme dtats Exemple: reconnatre une squence
Donnez un circuit qui doit reconnatre la squence 1101 laide dun registre dcalage.
Solution :Registre dcalage - 4 basculesLes squences imbriques sont correctement dtectes.
-
Conception et implmentation des systmes numriques
Btir un diagramme dtats Exemple: communications entre deux modules
Donner le diagramme dtats dun transmetteur RS-232. Indiquer la valeur des signaux de contrle et les actions prendre sur le chemin
des donnes.
-
Conception et implmentation des systmes numriques
Btir un diagramme dtats Exemple: communications entre deux modules
condition pour la transition /actions prendre lors de la transition
-
Conception et implmentation des systmes numriques
Transmetteur pour communications srielles RS-232code VHDL (1)
library IEEE;use IEEE.STD_LOGIC_1164.all;entity rs232txsimple is
generic (nStartBits : positive := 1; -- nombre de bits de dpartnDataBits : positive := 8; -- nombre de bits de donnesnStopBits : positive := 1 -- nombre de bits d'arrt
);port(
reset_n : in std_logic;bitClk : in std_logic; -- horloge des bitslecaractere : in std_logic_vector(nDataBits - 1 downto 0); -- caractre transmettreload : in std_logic; -- signal de contrle pour lire le caractre et dbuter la transmissionready : out std_logic; -- indique que le systme est prt transmettre un nouveau caractrers232_tx_data : out std_logic -- signal de transmission RS-232
);end rs232txsimple;architecture arch of rs232txsimple isconstant startBit : std_logic := '0';constant stopBit : std_logic := '1';signal registreADecalage : std_logic_vector(nStartBits + nDataBits + nStopBits - 1 downto 0);signal entransmission : boolean;
Type boolean pour le signal entransmission: on aurait pu prendre std_logic.
Lutilisation de paramtres (generic) rend le module plus flexible.
Utiliser des constantes amliore la lisibilit du code.
-
Conception et implmentation des systmes numriques
Transmetteur pour communications srielles RS-232code VHDL (2)
begin
process(reset_n, bitClk)constant compteurMax : natural := registreADecalage'length;variable compteur : natural range 0 to compteurMax;begin
if reset_n = '0' thenentransmission if load = '1' then
compteur := compteurMax;entransmission
-
Conception et implmentation des systmes numriques
Parenthse: gnration automatique de code VHDL partir dun diagramme dtats dans VHDL
-
Conception et implmentation des systmes numriques
Conception de machine tatsDcomposition de machines tats
Les circuits squentiels peuvent parfois tre dcomposs en blocs simples. La dcomposition peut suivre une approche hirarchique. Les diffrentes sous-
machines tats doivent pouvoir communiquer entre elles laide de signaux de contrle et de donnes.
Machineprincipale
Sous-machine #1
Go1
Sous-machine #2
Go2
Fini1
Fini2
entressorties
-
Conception et implmentation des systmes numriques
Conception de machine tatsDcomposition de machines tats
Exemple : donner un diagramme dtats pour un circuit dont la sortie est 1 quand au moins deux 0 et deux 1 ont t reus, dans nimporte quel ordre.
Solution 1:Une seule machine
-
Conception et implmentation des systmes numriques
Conception de machine tatsDcomposition de machines tats
Exemple : donner un diagramme dtats pour un circuit dont la sortie est 1 quand au moins deux 0 et deux 1 ont t reus, dans nimporte quel ordre.
Solution 2:Dcomposition en trois machines
-
Conception et implmentation des systmes numriques
Conception de machine tatsCircuits combinatoires itratifs et circuits squentiels
Un circuit combinatoire itratif est un circuit compos de n modules identiques connects en cascade.
Les modules ont des entres principales EP, des sorties principales SP, des entres de connexion en cascade EC et des sorties de connexion en cascade SC.
moduleEP
SP
EC SC moduleEP
SP
EC SC moduleEP
SP
EC SC
EP0 EP1 Epn-1
C-1 C0 C1 Cn-2 Cn-1
SP0 SPn-1SP1
-
Conception et implmentation des systmes numriques
Conception de machine tatsCircuits combinatoires itratifs et circuits squentiels - 2
Exemple de circuit itratif: circuit qui compare lgalit de deux nombres.
Egalitecomp1
X
EGe EGs
X0
1 Y
Y0
comp1X
EGe EGs
X1
Y
Y1
comp1X
EGe EGs
Xn-1
Y
Yn-1
EGe
YX
EGs
comp1
-
Conception et implmentation des systmes numriques
Conception de machine tatsCircuits combinatoires itratifs et circuits squentiels - 3
Si les entres sont disponibles en format srie et que lon est prt accepter les sorties principales en format srie aussi, alors il existe une version squentielle du mme circuit qui est trs simple et qui ncessite trs peu de matriel.
Exemple pour un comparateur itratif: Les entres X et Y sont des entres srie synchronises avec le signal dhorloge
CLK. Lentre init doit tre active au dbut pour fixer le contenu de la bascule la valeur 1, tel que montr la Figure :
X et Y sont des entres srie synchronises avec CLK.
Lentre init doit tre active au dbut pour fixer le contenu de la bascule la valeur 1.
YX
comp1
D
CLK
Q
CLK
set
init
-
Conception et implmentation des systmes numriques
Plan
Rappel circuits squentiels: Analyse dun circuit squentiel synchrone: Machines tats en VHDL: Conception de machines tats: Conception de processeurs: Exemples:
Modle de producteur/consommateur Multiplicateur srie:
-
Conception et implmentation des systmes numriques
Exemple: modle de consommateur/producteur
-
Conception et implmentation des systmes numriques
Conception de processeursavec lapproche RTL - rappel
Dans lapproche RTL, le concepteur spcifie les registres du processeur, les transferts de donnes entre ces registres, les oprations effectuer et les signaux de contrle pour grer ces activits.
Lapproche RTL peut tre dcompose en quatre tapes:1. Analyse du problme afin de comprendre le flot des donnes travers le
processeur.2. Conception du chemin des donnes, identification des signaux de contrle
et dtat.3. Conception de lunit de contrle du processeur laide dune machine
tats gnrant des signaux de contrle.4. Vrification que le processeur rsultant rencontre les spcifications.
-
Conception et implmentation des systmes numriques
Exemple de conception dun processeurMultiplicateur srie
Faire la conception dun processeur qui multiplie un multiplicande et un facteur pour donner un produit.
Le processeur doit minimiser les ressources utilises on spcifie que le traitement doit tre fait en srie.
Il faut garder la largeur des oprandes variables. Donner le chemin des donnes sous la forme dun schma et de code VHDL. Donner la machine tats de lunit de contrle sous la forme dun diagramme
et de code VHDL.
-
Conception et implmentation des systmes numriques
Exemple: multiplicateur srieProcessus traditionnel
000000000000001101101
+
011010110100000001101101
+
100111011010001101001101101
+
0100111000000001001110
01101101
+
Processus traditionnel de multiplication de nombre non signs.Le nombre dtapes correspond au nombre de bits du multiplicateur.On considre les bits du multiplicateur un la fois.On additionne le multiplicande dcal quand le bit du multiplicateur considr est gal 1.Laddition gnre toujours un bit supplmentaire.
-
Conception et implmentation des systmes numriques
Exemple: multiplicateur srieProcessus modifi
[ ]
0.0000.00000.0000.0000
.0011
.1101
+
[ ]
10.01100.01101.11010.0000
.1001
.1101
+
[ ]
110.100110.10011.110110.0110
.1000
.1101
+
[ ]
1110.0100110.01001.0000110.1001
.0000
.1101
+
Laddition ne se fait toujours que sur quatre bits.On peut dcaler laccumulateur vers la droite au lieu du multiplicande vers la gauche.Le multiplicateur aussi est dcal vers la droite, son bit le moins significatif est considr.
-
Conception et implmentation des systmes numriques
Exemple: multiplicateur sriePorts dentre et de sortie
go: lancer la multiplicationfini: la multiplication est termine
chargeA, chargeB: signaux de contrle indiquant quon doit charger chaque oprandes
library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;
entity multiplicateur isgeneric (
W : integer := 4 -- nombre de bits des oprandes);port(
reset : in std_logic;CLK : in std_logic;go : in std_logic;entree : in unsigned(W - 1 downto 0);chargeA : in std_logic;chargeB : in std_logic;F : out unsigned(2 * W - 1 downto 0);fini : out std_logic
);end multiplicateur;
-
Conception et implmentation des systmes numriques
Exemple: multiplicateur srieChemin des donnes: diagramme
Les signaux de contrle sont drivs des signaux dentre et de ltat du processeur.
multiplicande
/ W
produit
facteur
additioneur
/ W + 1
/W
chargeFacteurchargeMultiplicande
clkinitProduit
clk clk
decaleFacteur
decaleProduit
entree /W
facteur(0)
chargeProduit
-
Conception et implmentation des systmes numriques
cheminDonnees : process (clk)begin
if rising_edge(clk) then-- registre du multiplicandeif chargeMultiplicande = '1' then
multiplicande
-
Conception et implmentation des systmes numriques
Exemple: multiplicateur srieMachine tats
Les signaux de contrle sont drivs des signaux dentre et de ltat du processeur.
dcalage
addition
compteur = 0reset
compteur /= 0
attente
go
compteur
-
Conception et implmentation des systmes numriques
Exemple: multiplicateur srieMachine tats: code VHDL
-- machine a tats de l'unit de contrlecontrole : process (CLK, reset)begin
if rising_edge(CLK) thenif reset = '1' then
etat
compteur
-
Conception et implmentation des systmes numriques
Exemple: multiplicateur srieDescription combine en VHDL
architecture arch6 of multiplicateur issignal multiplicande : unsigned(W - 1 downto 0);signal facteur : unsigned(W - 1 downto 0);signal produit : unsigned(2 * W downto 0);constant compteurmax : positive := W - 1;signal compteur : natural range 0 to compteurmax;type type_etat is (attente, addition, decalage);signal etat : type_etat;begin
process (CLK, reset)begin
if rising_edge(CLK) thenif reset = '1' then
etat
if chargeA = '1' thenmultiplicande