You are on page 1of 53

Cours #6

Conception dunits de contrle

Conception et implmentation de s 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

Conception et implmentation des systmes numriques

Source: Wikipdia

33

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.

Entre des donnes

Chemin des donnes

Contrle

Entres de contrle

Conception et implmentation des systmes numriques

Sortie des donnes

tat

Unit de contrle

Sorties de contrle

Machine distributrice
Moteurs des plateaux

Clavier

M
M
M
M

Processeur

tat
Grer largent
Grer linventaire

actuateurs
pour rendre
la monnaie

senseur de
pices

affichages

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
sorties

entres

lments
mmoire
prochain tat

tat prsent

horloge

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

fonction de sortie (Moore)

sorties de Moore

entres
fonction de sortie (Mealy)

lments mmoire
tat prsent

horloge

Conception et implmentation des systmes numriques

calcul du prochain tat

sorties de Mealy

prochain tat

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. A et B
1.
identifier les variables dtats;
2.
crire les quations dtats et les quations de sortie; 2.
A+ = A xor B;
3.
dresser le tableau dtats; et,
B+ = B or X;
4.
dessiner le diagramme dtats.
Z = A nor B;
D

CLK
Q'
Z
X

CLK

CLK
Q'
Conception et implmentation des systmes numriques

Analyse dun circuit squentiel synchrone


(suite)
3. Tableau dtats:
tat prsent

4. Diagramme dtats:

entre

tat prochain

sortie

A+

B+

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
1
1
1
1
0
0

1
1
0
1
1
1
0
1

1
1
0
0
0
0
0
0

CLK

tat 0: AB = 00
tat 1: AB = 01
tat 2: AB = 10
tat 3: AB = 11
reset
(tat
initial)

CLK

CLK

Sortie: 1

Sortie: 0

1
1

tat 3
Sortie: 0
Z

tat 1

Q'
X

tat 0

Q'
Conception et implmentation des systmes numriques

tat 2
Sortie: 0

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 VHDL


1. 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 is
port (
reset : in STD_LOGIC;
CLK : in STD_LOGIC;
X : in STD_LOGIC;
Z : out STD_LOGIC
);
end cctsequentielex1;
architecture arch1 of cctsequentielex1 is
signal A : STD_LOGIC; -- bascule A (en haut)
signal B : STD_LOGIC; -- bascule B (en bas)
begin
process(CLK, reset) is
begin
if (reset = '0') then
A <= '0';
B <= '0';
elsif (rising_edge(CLK)) then
A <= A xor B;
B <= x or not(B);
end if;
end process;
-- signal de sortie
z <= not(A or B);
end arch1;

Conception et implmentation des systmes numriques

CLK

Q'
Z
X

CLK

CLK

Q'

Deux bascules dans un seul processus


Sortie dcrite par un nonc concurrent
lextrieur du processus (pas de registre).
Rinitialisation asynchrone.

Description dune machine tats en VHDL


2. 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
reset
plus lisible, robuste, facile maintenir
tat 0
(tat
initial)

architecture arch2 of cctsequentielex1 is


type type_etat is range 0 to 3;
signal etat : type_etat := 0;
Type
begin

spcial pour ltat.


Ici: encodage numrique.

process(CLK, reset) is
begin
if (reset = '0') then
etat <= 0;
elsif (rising_edge(CLK)) then
case etat is
when 0 =>
etat <= 1;
when 1 =>
if x = '0' then etat <= 2; else etat <= 3; end if;
when 2 =>
etat <= 3;
when 3 =>
if x = '0' then etat <= 0; else etat <= 1; end if;
end case;
end if;
end process;

Sortie: 1

Sortie: 0

1
1

tat 3
Sortie: 0
-

Processus avec nonc case pour les


transitions entre tats.

Signal de sortie lextrieur du processus.


Conception et implmentation des systmes numriques

tat 2
Sortie: 0

z <= '1' when etat = 0 else '0';


end arch2;

tat 1

Description dune machine tats en VHDL


Encodage symbolique des tats

Lors de la conception, on prfre souvent un encodage symbolique lencodage


numrique des tats.
X
architecture unprocessus of cctsequentielex2 is

reset

type type_etat is (S1, S2, S3, S4);


signal etat : type_etat := S1;
begin
process(CLK, reset) is
begin
if (reset = '0') then
etat <= S1;
sortie <= '1';
elsif (rising_edge(CLK)) then
case etat is
when S1 =>
if x = '0' then
etat <= S3;
sortie <= '0';
else
etat <= S2;
sortie <= '1';
end if;
when S2 | S3 =>
etat <= S4;
sortie <= '0';
when S4 =>
etat <= S1;
sortie <= '1';
end case;
end if;
end process;
end unprocessus;

Conception et implmentation des systmes numriques

S1
Sortie = 1

S3
Sortie = 0

S2
Sortie = 1

S4
Sortie = 0

Type spcial pour ltat.


Ici: encodage symbolique avec un type numr.

Description dune machine


tats en VHDL
tats

Autres observations:
machine de Moore (sortie dfinie seulement par ltat)
sortie spcifie dans la condition de rinitialisation
sortie avec registre

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

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.
circuit combinatoire

fonction de sortie (Moore)

sorties de Moore

entres
fonction de sortie (Mealy)

lments mmoire
tat prsent

horloge

Conception et implmentation des systmes numriques

calcul du prochain tat

sorties de Mealy

prochain tat

Trois styles de description dune machine tats en VHDL


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


unprocessus of cctsequentielex2 is
de Moore de cet tat chaque fois. architecture
type type_etat is (S1, S2, S3, S4);
X
reset

S1
Sortie = 1

S3
Sortie = 0

S2
Sortie = 1

S4
Sortie = 0

Conception et implmentation des systmes numriques

signal etat : type_etat := S1;


begin
process(CLK, reset) is
begin
if (reset = '0') then
etat <= S1;
sortie <= '1';
elsif (rising_edge(CLK)) then
case etat is
when S1 =>
if x = '0' then
etat <= S3;
sortie <= '0';
else
etat <= S2;
sortie <= '1';
end if;
when S2 | S3 =>
etat <= S4;
sortie <= '0';
when S4 =>
etat <= S1;
sortie <= '1';
end case;
end if;
end process;
end unprocessus;

Trois styles de description dune machine tats en VHDL


2a. 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 deuxprocessus of cctsequentielex2 is
type type_etat is (S1, S2, S3, S4);
signal etat : type_etat := S1;
begin
process(CLK, reset) is
begin
if (reset = '0') then
etat <= S1;
elsif (rising_edge(CLK)) then
case etat is
when S1 =>
if x = '0' then
etat <= S3;
else
etat <= S2;
end if;
when S2 | S3 =>
etat <= S4;
when S4 =>
etat <= S1;
end case;
end if;
end process;

Conception et implmentation des systmes numriques

process(etat)
Machine de Moore
begin
case etat is
when S1 | S2 => sortie <= '1';
when S3 | S4 => sortie <= '0';
end case;
end process;

end deuxprocessus;

X
reset

S1
Sortie = 1

S3
Sortie = 0

S2
Sortie = 1

S4
Sortie = 0

Trois styles de description dune machine tats en VHDL


2b. 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 is


type type_etat is range 0 to 3;
signal etat : type_etat := 0;
begin

reset
(tat
initial)

process(CLK, reset) is
begin
if (reset = '0') then
etat <= 0;
0
elsif (rising_edge(CLK)) then
case etat is
when 0 =>
etat <= 1;
when 1 =>
if x = '0' then etat <= 2; else etat <= 3; end if;
when 2 =>
etat <= 3;
when 3 =>
if x = '0' then etat <= 0; else etat <= 1; end if;
end case;
end if;
end process;
z <= '1' when etat = 0 else '0';
end arch2;
Conception et implmentation des systmes numriques

tat 0

tat 1

Sortie: 1

Sortie: 0

1
1

tat 3
Sortie: 0

tat 2
Sortie: 0

Trois styles de description dune machine tats en VHDL


3. 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 VHDL


3. Avec trois processus
architecture troisprocessus of cctsequentielex2 is
type type_etat is (S1, S2, S3, S4);
signal etat : type_etat := S1;
signal etat_prochain : type_etat := S1;
begin
-- processus pour garder l'tat actuel en mmoire
process(CLK, reset) is
begin
if (reset = '0') then
etat <= S1;
elsif (rising_edge(CLK)) then
etat <= etat_prochain;
end if;
end process;
-- processus pour les sorties
process(etat)
Machine de Moore
begin
case etat is
when S1 | S2 => sortie <= '1';
when S3 | S4 => sortie <= '0';
end case;
end process;

Conception et implmentation des systmes numriques

-- processus pour le calcul du prochain tat


process(etat, x) is
begin
case etat is
when S1 =>
if x = '0' then
etat_prochain <= S3;
else
etat_prochain <= S2;
end if;
when S2 | S3 =>
etat_prochain <= S4;
when S4 =>
etat_prochain<= S1;
end case;
end process;

end troisprocessus;

Trois styles de description dune machine tats en VHDL


Conclusion

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 diffrents


pour 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 sensitivit
X

process(CLK, A)
begin
if rising_edge(CLK) then
Z <= A;
end if;
end process;

Conception et implmentation des systmes numriques

process(A, B)
begin
T1 <= A and B;
T2 <= not(T1);
end process;

process (A, B, T1)


begin
T1 <= A and B;
T2 <= not(T1);
end process;

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 tats


Principes 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 tats


Procdure 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 obligatoire
peut 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 tats


Algorithmic State Machines

Cette approche nest plus vraiment utilise depuis ladoption des HDL.

Conception et implmentation des systmes numriques

Conception de machine tats


Btir 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 dtats


Exemple: 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 bascules
Les 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-232


code VHDL (1)
library IEEE;
use IEEE.STD_LOGIC_1164.all;

Lutilisation de paramtres (generic) rend le module plus flexible.

entity rs232txsimple is
generic (
nStartBits : positive := 1; -- nombre de bits de dpart
nDataBits : positive := 8; -- nombre de bits de donnes
nStopBits : positive := 1 -- nombre de bits d'arrt
);
port(
reset_n : in std_logic;
bitClk : in std_logic; -- horloge des bits
lecaractere : in std_logic_vector(nDataBits - 1 downto 0); -- caractre transmettre
load : in std_logic; -- signal de contrle pour lire le caractre et dbuter la transmission
ready : out std_logic; -- indique que le systme est prt transmettre un nouveau caractre
rs232_tx_data : out std_logic -- signal de transmission RS-232
);
end rs232txsimple;
architecture arch of rs232txsimple is
constant startBit : std_logic := '0';
constant stopBit : std_logic := '1';

Utiliser des constantes amliore la lisibilit du code.

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.

Conception et implmentation des systmes numriques

Transmetteur pour communications srielles RS-232


code VHDL (2)
begin
process(reset_n, bitClk)
constant compteurMax : natural := registreADecalage'length;
variable compteur : natural range 0 to compteurMax;
begin
if reset_n = '0' then
entransmission <= false;
elsif rising_edge(bitClk) then
il ny a que deux tats
case entransmission is
when false =>
if load = '1' then
compteur := compteurMax;
entransmission <= true;
Dbuter une nouvelle
registreADecalage <= stopBit & lecaractere & startBit;
end if;
transmission
when true =>
registreADecalage <= stopBit & registreADecalage(registreADecalage'left downto 1);
compteur := compteur - 1;
if (compteur = 0) then
entransmission <= false;
Grer une transmission en
end if;
end case;
cours
end if;
end process;
process(entransmission, registreADecalage)
begin
case entransmission is
when false =>
rs232_tx_data <= stopBit;
ready <= '1';
when true =>
rs232_tx_data <= registreADecalage(0);
ready <= '0';
end case;
end process;
end arch;

Conception et implmentation des systmes numriques

Deux processus:
-un pour les lments mmoire
-un pour la logique combinatoire pour les signaux
de sortie

Parenthse: gnration automatique de code VHDL


partir dun diagramme dtats dans VHDL

Conception et implmentation des systmes numriques

Conception de machine tats


Dcomposition de machines tats

Les circuits squentiels peuvent parfois tre dcomposs en blocs simples.


La dcomposition peut suivre une approche hirarchique. Les diffrentes sousmachines tats doivent pouvoir communiquer entre elles laide de signaux
de contrle et de donnes.
Sousmachine #1

Machine
principale

Go1

Fini1

sorties

entres
Go2

Fini2

Conception et implmentation des systmes numriques

Sousmachine #2

Conception de machine tats


Dcomposition 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 tats


Dcomposition 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 tats


Circuits 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.
EP0

EP1

EP

C-1
EC

module

EP

C0
SC

Epn-1

EC

module

C1
SC

EP

Cn-2
EC

module

SP

SP

SP

SP0

SP1

SPn-1

Conception et implmentation des systmes numriques

Cn-1
SC

Conception de machine tats


Circuits combinatoires itratifs et circuits squentiels - 2

Exemple de circuit itratif: circuit qui compare lgalit de deux nombres.


X0

Y0

X1

Y1

Xn-1

Yn-1

EGe comp1 EGs

EGe comp1 EGs

X Y

EGe comp1 EGs

comp1
EGs

EGe

Conception et implmentation des systmes numriques

Egalite

Conception de machine tats


Circuits 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 Y
comp1
D

CLK

CLK

set
init

Conception et implmentation des systmes numriques

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.

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 processeur


Multiplicateur 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 srie


Processus traditionnel
1101

1101

1101

1101

0110

0110

0110

0110

0000

00000

011010

1001110

+ 0000

+ 11010

+ 110100

+ 0000000

00000

011010

1001110

01001110

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 srie


Processus modifi

1101.

011[ 0].

1101.

001[1].

1101.

000[1].

1101.

000[ 0].

0000.
+ 0000.

0000.0
+ 1101.

0110.10
+ 1101.

1001.110
+ 0000.

00000.

01101.0

10011.10

01001.110

0000.0

0110.10

1001.110

0100.1110

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 srie


Ports dentre et de sortie
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity multiplicateur is
generic (
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

go: lancer la multiplication


fini: la multiplication est termine
chargeA, chargeB: signaux de contrle indiquant
quon doit charger chaque oprandes

Exemple: multiplicateur srie


Chemin des donnes: diagramme
/
W

entree

chargeMultiplicande

multiplicande

chargeFacteur
decaleFacteur

clk

facteur

clk

/W
facteur(0)
additioneur
/W+1
chargeProduit
decaleProduit
initProduit
clk

produit

/
W

Les signaux de contrle sont drivs des signaux


dentre et de ltat du processeur.
Conception et implmentation des systmes numriques

Exemple: multiplicateur srie


Chemin des donnes: code VHDL
cheminDonnees : process (clk)
begin
if rising_edge(clk) then
-- registre du multiplicande
if chargeMultiplicande = '1' then
multiplicande <= entree;
end if;
-- registre du facteur
if chargeFacteur = '1' then
facteur <= entree;
elsif decaleFacteur = '1' then
facteur <= shift_right(facteur, 1);
end if;
-- registre du produit
if initProduit = '1' then
produit <= (others => '0');
else
if chargeProduit = '1' then
produit(2 * W downto W) <= produit(2 * W downto W) + multiplicande;
elsif decaleProduit = '1' then
produit <= shift_right(produit, 1);
end if;
end if;
end if;
end process;

Conception et implmentation des systmes numriques

Exemple: multiplicateur srie


Machine tats
go

addition
fini <= 0

attente
compteur <= W 1
fini <= 1

compteur /= 0

reset

compteur = 0

dcalage
compteur <=
compteur 1
fini <= 0

Les signaux de contrle sont drivs des signaux


dentre et de ltat du processeur.
Conception et implmentation des systmes numriques

Exemple: multiplicateur srie


Machine tats: code VHDL
-- machine a tats de l'unit de contrle
controle : process (CLK, reset)
begin
if rising_edge(CLK) then
if reset = '1' then
etat <= attente;
else
case etat is
when attente =>
compteur <= compteurmax;
if go = '1' then
etat <= addition;
else
etat <= attente;
end if;
when addition =>
etat <= decalage;
when decalage =>
if (compteur = 0) then
etat <= attente;
else
etat <= addition;
compteur <= compteur - 1;
end if;
when others =>
etat <= attente;
end case;
end if;
end if;
end process;

-- signaux de sortie
F <= produit(2 * W - 1 downto 0);
fini <= '1' when etat = attente else '0';
-- signaux de contrle
chargeMultiplicande <= '1
when etat = attente and chargeA = '1' else '0';
chargeFacteur <= '1
when etat = attente and chargeB = '1' else '0';
decaleFacteur <= '1
when etat = decalage else '0';
chargeProduit <= '1
when etat = addition and facteur(0) = '1' else '0';
decaleProduit <= '1
when etat = decalage else '0';
initProduit <= '1
when etat = attente and go = '1' else '0';

Conception et implmentation des systmes numriques

Exemple: multiplicateur srie


Description combine en VHDL
architecture arch6 of multiplicateur is
signal 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) then
if reset = '1' then
etat <= attente;
else
case etat is
when attente =>
if chargeA = '1' then
multiplicande <= entree;
end if;
if chargeB = '1' then
facteur <= entree;
end if;
compteur <= compteurmax;
if go = '1' then
etat <= addition;
produit <= (others => '0');
else
etat <= attente;
end if;

when addition =>


if (facteur(0) = '1') then
produit(2 * W downto W) <=
produit(2 * W downto W)
+ multiplicande;
end if;
etat <= decalage;
when decalage =>
facteur <= shift_right(facteur, 1);
produit <= shift_right(produit, 1);
if (compteur = 0) then
etat <= attente;
else
etat <= addition;
compteur <= compteur - 1;
end if;
when others =>
etat <= attente;
end case;
end if;
end if;
end process;
-- signal de sortie
F <= produit(2 * W - 1 downto 0);
fini <= '1' when (etat = attente) else '0';
end arch6;

La description combine est plus compacte.


Les signaux de contrle sont implicites.
Conception et implmentation des systmes numriques

You might also like