Sintesi di circuiti sequenziali Circuito sequenziale sincrono
Sintesi di circuiti sequenziali Circuito sequenziale sincrono
Sintesi di circuiti sequenziali Circuito sequenziale sincrono
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
I 0<br />
I n-1<br />
<strong>Sintesi</strong> <strong>di</strong> <strong>circuiti</strong> <strong>sequenziali</strong><br />
Salvatore Orlando<br />
<strong>Circuito</strong> <strong>sequenziale</strong> <strong>sincrono</strong><br />
Circuiti<br />
combinatori<br />
R<br />
e<br />
g<br />
Arch. Elab. - S. Orlando 1<br />
• Per determinare il comportamento del circuito <strong>sequenziale</strong> <strong>di</strong> sopra, dobbiamo<br />
determinare la funzione che i <strong>circuiti</strong> combinatori devono calcolare sulla base<br />
– del valore dello stato contenuto in Reg<br />
– del valore degli n input I0 … In-1 • Dobbiamo quin<strong>di</strong> poter specificare gli output del circuito (OUTPUTS &<br />
NEXT_STATE) per tutte le combinazioni significative dello stato e dell’input<br />
O 0<br />
O m-1<br />
Arch. Elab. - S. Orlando 2
Automi per la specifica <strong>di</strong> <strong>circuiti</strong> <strong>di</strong> Moore<br />
• <strong>Circuito</strong> <strong>sequenziale</strong> <strong>di</strong> Moore<br />
– OUTPUTS(ti ) = δ(STATE(ti ))<br />
– NEXT_STATE(ti+1 ) = λ(INPUTS(ti ), STATE(ti ))<br />
• Usiamo un Automa a stati finiti, rappresentato come un grafo <strong>di</strong>retto<br />
– i no<strong>di</strong> del grafo (in numero finito) corrispondono ai vari stati<br />
(configurazioni) assunti dagli elementi <strong>di</strong> memoria del circuito<br />
– gli archi del grafo (anch’essi in numero finito) corrispondono alle varie<br />
transizioni <strong>di</strong> stato<br />
Etichetta che in<strong>di</strong>vidua una<br />
specifica configurazione<br />
del registro <strong>di</strong> stato<br />
S 0<br />
S 3<br />
Automi per la specifica <strong>di</strong> <strong>circuiti</strong> <strong>di</strong> Moore<br />
• <strong>Circuito</strong> <strong>sequenziale</strong> <strong>di</strong> Moore<br />
– OUTPUTS(ti ) =<br />
δ( STATE(ti ) )<br />
– NEXT_STATE(ti+1 ) =<br />
λ( INPUTS(ti ), STATE(ti ) )<br />
• l’etichetta all’interno <strong>di</strong> ogni<br />
nodo definisce l’output del<br />
circuito come funzione dello<br />
stato corrispondente al nodo<br />
– Nodo:<br />
Stato al tempo t i<br />
– Etichetta (OUTPUTS):<br />
Output al tempo t i<br />
S 0<br />
S 3<br />
01<br />
S 1<br />
S 2<br />
00 00 10<br />
11<br />
01<br />
S 1<br />
11<br />
11<br />
10<br />
10<br />
S 2<br />
10<br />
Arch. Elab. - S. Orlando 3<br />
10<br />
00<br />
• l’etichetta <strong>di</strong> ogni arco rappresenta<br />
una particolare configurazione degli<br />
input, e permette la specifica della<br />
funzione NEXT_STATE<br />
– Nodo <strong>di</strong> partenza:<br />
Stato al tempo t i<br />
– Etichetta:<br />
Input al tempo t i<br />
– Nodo <strong>di</strong> arrivo (NEXT_STATE):<br />
Stato al tempo t i+1<br />
Arch. Elab. - S. Orlando 4
I0 I1 S 0<br />
S 3<br />
S 0<br />
S 3<br />
01<br />
01<br />
Esempio <strong>di</strong> circuito <strong>di</strong> Moore<br />
<strong>Circuito</strong><br />
combinatorio<br />
s1 s0 00 00 10<br />
11<br />
01<br />
S 1<br />
11<br />
11 10 10<br />
S 2<br />
10<br />
10<br />
00<br />
O0 O1 • 2 input e 2 output<br />
• 4 stati possibili (Reg = 2 bit)<br />
• Automa a stati finiti con 4 no<strong>di</strong><br />
(stati)<br />
• Al più 4 archi uscenti da ogni nodo<br />
– perché 4 archi ?<br />
• perché ogni arco rappresenta<br />
una transizione <strong>di</strong> stato, che<br />
avviene in conseguenza <strong>di</strong> una<br />
certa configurazione<br />
(significativa) dei 2 input<br />
• Nota le etichette degli archi, e<br />
quelle all’interno dei no<strong>di</strong><br />
• Le etichette esterne ai no<strong>di</strong><br />
servono solo per nominare i 4 stati<br />
Automa <strong>di</strong> Moore e Tabelle <strong>di</strong> verità<br />
00 00 10<br />
11<br />
01<br />
S 1<br />
11<br />
11 10 10<br />
S 2<br />
Stato s 1 s 0<br />
S 0 0 0<br />
S 1 0 1<br />
S 2 1 0<br />
S 3 1 1<br />
10<br />
10<br />
00<br />
S 0<br />
S 1<br />
S 2<br />
S 3<br />
NEXT_STATE<br />
s1 s0 I1 I0 s1 0 0 0 0<br />
0 0 0 1<br />
0 0 1 0<br />
0 0 1 1<br />
0 1 0 0<br />
0 1 0 1<br />
0 1 1 0<br />
0 1 1 1<br />
1 0 0 0<br />
1 0 0 1<br />
1 0 1 0<br />
1 0 1 1<br />
1 1 0 0<br />
1 1 0 1<br />
1 1 1 0<br />
1 1 1 1<br />
Arch. Elab. - S. Orlando 5<br />
• I valori dello stato in output non specificati nella tabella NEXT_STATE<br />
(s1 s0 = X X) corrispondono a transizioni che non dovrebbero mai verificarsi<br />
– ovvero, le corrispondenti configurazioni degli input non dovrebbe mai<br />
verificarsi<br />
0<br />
1<br />
X<br />
1<br />
X<br />
X<br />
0<br />
1<br />
1<br />
X<br />
0<br />
X<br />
X<br />
0<br />
1<br />
X<br />
s 0<br />
1<br />
0<br />
X<br />
1<br />
X<br />
X<br />
1<br />
0<br />
0<br />
X<br />
1<br />
X<br />
X<br />
0<br />
0<br />
X<br />
S 1<br />
S 2<br />
-<br />
S 3<br />
-<br />
-<br />
S 1<br />
S 2<br />
S2 -<br />
S1 -<br />
-<br />
S0 S2 -<br />
S 0<br />
S 1<br />
S 2<br />
S 3<br />
OUTPUTS<br />
s 1 s 0<br />
O 1 O 0<br />
0 0 0 0<br />
0 1 1 0<br />
1 0 1 0<br />
1 1 1 1<br />
Arch. Elab. - S. Orlando 6
<strong>Sintesi</strong> <strong>di</strong> un circuito <strong>di</strong> Moore<br />
• Deriviamo mappe <strong>di</strong> Karnaugh che generano NEXT_STATE<br />
– due mappe, una per ognuna delle 2 variabili s 0 e s 1<br />
– equazione logica in forma SP ottimizzata, e circuito logico (STATE) a 2 livelli<br />
• Deriviamo le mappe <strong>di</strong> Karnaugh che generano OUTPUTS<br />
– due mappe, una per ognuna delle 2 variabili O 0 e O 1<br />
– equazione logica in forma SP ottimizzata, e circuito logico (OUT) a 2 livelli<br />
I 0<br />
I 1<br />
OUT<br />
STATE<br />
s 1<br />
s 0<br />
Automi per la specifica <strong>di</strong> <strong>circuiti</strong> <strong>di</strong> Mealy<br />
O 0<br />
O 1<br />
Arch. Elab. - S. Orlando 7<br />
• <strong>Circuito</strong> <strong>sequenziale</strong> <strong>di</strong> Mealy<br />
– OUTPUTS(ti ) = δ(INPUTS(ti ), STATE(ti ))<br />
– NEXT_STATE(ti+1 ) = λ(INPUTS(ti ), STATE(ti ))<br />
• Usiamo ancora un Automa a stati finiti, rappresentato graficamente come un<br />
grafo <strong>di</strong>retto<br />
• Rispetto all’automa <strong>di</strong> Moore le <strong>di</strong>fferenze solo le seguenti<br />
– le etichette all’interno dei vari no<strong>di</strong>, che modellavano l’output del circuito,<br />
devono essere eliminati<br />
– nei <strong>circuiti</strong> <strong>di</strong> Mealy gli output <strong>di</strong>pendono infatti non solo dallo stato ma<br />
anche dall’input<br />
– nelle etichette sugli archi possiamo <strong>di</strong>stinguere 2 componenti <strong>di</strong>stinte<br />
• INP / OUT<br />
– INP corrisponde ad una specifica configurazione dell’input al tempo ti – OUT corrisponde ad una specifica configurazione dell’output del circuito<br />
al tempo ti Arch. Elab. - S. Orlando 8
Automi per la specifica <strong>di</strong> <strong>circuiti</strong> <strong>di</strong> Mealy<br />
• <strong>Circuito</strong> <strong>sequenziale</strong> <strong>di</strong> Mealy<br />
– OUTPUTS(ti ) =<br />
δ(INPUTS(ti ), STATE(ti ) )<br />
– NEXT_STATE(ti+1 ) =<br />
λ( INPUTS(ti ), STATE(ti ) )<br />
• la componente INP dell’etichetta <strong>di</strong><br />
ogni arco rappresenta una particolare<br />
configurazione degli input, e<br />
permette la specifica della funzione<br />
NEXT_STATE<br />
– Nodo <strong>di</strong> partenza:<br />
Stato al tempo ti – Etichetta INP:<br />
Input al tempo ti – Nodo <strong>di</strong> arrivo (NEXT_STATE):<br />
Stato al tempo ti+1 S 0<br />
01/10<br />
00/00<br />
S 1<br />
S 2<br />
Stato s 1 s 0<br />
S 0 0 0<br />
S 1 0 1<br />
S 2 1 0<br />
S 3 1 1<br />
S 0<br />
01/10<br />
00/00<br />
S 1<br />
S 2<br />
10/00<br />
10/00<br />
00/11<br />
• la componente OUT dell’etichetta <strong>di</strong><br />
ogni arco rappresenta una<br />
particolare configurazione degli<br />
output, e permette la specifica della<br />
funzione OUTPUTS<br />
– Nodo <strong>di</strong> partenza:<br />
Stato al tempo ti – Etichetta INP:<br />
Input al tempo ti – Etichetta OUT (OUTPUTS):<br />
Output al tempo ti Automa <strong>di</strong> Mealy e Tabelle <strong>di</strong> verità<br />
10/00<br />
10/00<br />
00/11<br />
S 0<br />
S 1<br />
S 2<br />
S 3<br />
NEXT_STATE<br />
s1 s0 I1 I0 s1 0 0 0 0<br />
0 0 0 1<br />
0 0 1 0<br />
0 0 1 1<br />
0 1 0 0<br />
0 1 0 1<br />
0 1 1 0<br />
0 1 1 1<br />
1 0 0 0<br />
1 0 0 1<br />
1 0 1 0<br />
1 0 1 1<br />
1 1 X X<br />
Arch. Elab. - S. Orlando 9<br />
• Lo stato S3 non è significativo<br />
– nelle tabelle NEXT_STATE e OUTPUTS, la configurazione (s1 s0 = 1 1) può<br />
essere combinata con qualsiasi altro valore in input (DON’T CARE), per<br />
produrre qualsiasi valore in output<br />
0<br />
1<br />
X<br />
X<br />
X<br />
X<br />
0<br />
X<br />
1<br />
X<br />
0<br />
X<br />
X<br />
s 0<br />
1<br />
0<br />
X<br />
X<br />
X<br />
X<br />
1<br />
X<br />
0<br />
X<br />
1<br />
X<br />
X<br />
S1 S2 -<br />
-<br />
-<br />
-<br />
S1 -<br />
S2 -<br />
S1 -<br />
-<br />
S 0<br />
S 1<br />
S 2<br />
S 3<br />
OUTPUTS<br />
s1 s0 I1 I0 O1 0 0 0 0<br />
0 0 0 1<br />
0 0 1 0<br />
0 0 1 1<br />
0 1 0 0<br />
0 1 0 1<br />
0 1 1 0<br />
0 1 1 1<br />
1 0 0 0<br />
1 0 0 1<br />
1 0 1 0<br />
1 0 1 1<br />
1 1 X X<br />
0<br />
1<br />
X<br />
X<br />
X<br />
X<br />
0<br />
X<br />
1<br />
X<br />
0<br />
X<br />
X<br />
O 0<br />
0<br />
0<br />
X<br />
X<br />
X<br />
X<br />
0<br />
X<br />
1<br />
X<br />
0<br />
X<br />
X<br />
Arch. Elab. - S. Orlando 10
<strong>Sintesi</strong> <strong>di</strong> un circuito <strong>di</strong> Mealy<br />
• Deriviamo mappe <strong>di</strong> Karnaugh che generano NEXT_STATE<br />
– due mappe, una per ognuna delle 2 variabili s 0 e s 1<br />
– equazione logica in forma SP ottimizzata, e circuito logico (STATE) a 2 livelli<br />
• Deriviamo le mappe <strong>di</strong> Karnaugh che generano OUTPUTS<br />
– due mappe, una per ognuna delle 2 variabili O 0 e O 1<br />
– equazione logica in forma SP ottimizzata, e circuito logico (OUT) a 2 livelli<br />
I 0<br />
I 1<br />
OUT<br />
STATE<br />
s 1<br />
s 0<br />
Esempio <strong>di</strong> circuito <strong>di</strong> Moore<br />
• <strong>Circuito</strong> molto semplificato che controlla i semafori <strong>di</strong> un incrocio<br />
O 0<br />
O 1<br />
Arch. Elab. - S. Orlando 11<br />
– input: sensori sull’asfalto che controllano se sono presenti macchine in attesa<br />
– output: segnali che determinano l’accensione (rosso/verde) dei semafori<br />
• Incrocio con strade poste a Nord/Sud e Est/West<br />
• 2 bit in input che sono collegati ai sensori, e segnalano l’arrivo delle macchine<br />
– NScar e EWcar, che quando affermati segnalano al circuito la presenza <strong>di</strong> macchine<br />
nella <strong>di</strong>rezione Nord/Sud e viceversa, e nella <strong>di</strong>rezione Est/West e viceversa<br />
• 2 bit in output<br />
– NSlite e EWlite, che quando affermati in<strong>di</strong>cano che i corrispondenti semafori sono<br />
ver<strong>di</strong><br />
NSlite<br />
W<br />
N<br />
S<br />
E<br />
NScar<br />
Arch. Elab. - S. Orlando 12
• 2 soli stati:<br />
– NSgreen<br />
Automi a stati finiti<br />
• modella il caso in cui passano solo le macchine in <strong>di</strong>rezione NS e viceversa<br />
– EWgreen<br />
• modella il caso in cui passano solo le macchine in <strong>di</strong>rezione EW e viceversa<br />
• Le etichette all’interno dei no<strong>di</strong> contengono solo le variabili in output da<br />
affermare<br />
– NSlite in<strong>di</strong>ca che: (NSlite, EWlite) = (1, 0)<br />
• Le etichette sugli archi in<strong>di</strong>cano solo le combinazioni <strong>di</strong> variabili in input<br />
importanti, ovvero le variabili DON’T CARE non sono mostrate<br />
– ∼ NScar in<strong>di</strong>ca che: (NScar, EWcar) = (0, X)<br />
Stato s<br />
NSgreen 0<br />
EWgreen 1<br />
Tabelle <strong>di</strong> verità<br />
NSgreen<br />
EWgreen<br />
NEXT_STATE<br />
s NScar EWcar s<br />
0 X 0<br />
0 X 1<br />
1 0 X<br />
1 1 X<br />
NScar EWcar<br />
s<br />
00 01 11 10<br />
0 1 1<br />
1 1 1<br />
s new = ∼s EWcar + s ∼NScar<br />
Arch. Elab. - S. Orlando 13<br />
0<br />
1<br />
1<br />
0<br />
NSgreen<br />
EWgreen<br />
EWgreen<br />
NSgreen<br />
Arch. Elab. - S. Orlando 14
EWgreen 0<br />
Stato s<br />
NSgreen<br />
1<br />
• NEXT_STATE<br />
– snew = ∼s EWcar + s ∼Nscar<br />
• OUTPUTS<br />
– NSlite = ∼s<br />
– EWlite = s<br />
EWcar<br />
NScar<br />
Tabelle <strong>di</strong> verità<br />
NSgreen<br />
EWgreen<br />
<strong>Circuito</strong> <strong>sequenziale</strong><br />
s<br />
s<br />
OUTPUTS<br />
NSlite EWlite<br />
0 1 0<br />
1 0 1<br />
NSlite = ∼s<br />
EWlite = s<br />
EWlite<br />
NSlite<br />
Arch. Elab. - S. Orlando 15<br />
Arch. Elab. - S. Orlando 16
Commenti<br />
• La frequenza del clock determina il momento in cui il valore del prossimo stato<br />
viene memorizzato<br />
• Durante il periodo ti del clock, OUTPUTS non può cambiare<br />
– <strong>di</strong>pende solo dallo stato<br />
• Durante il periodo ti del clock, NEXT_STATE può cambiare man mano che<br />
cambiano gli input<br />
– ma il nuovo stato viene memorizzato solo sul fronte <strong>di</strong> salita (<strong>di</strong>scesa) del<br />
segnale <strong>di</strong> clock<br />
• Nel circuito precedente, se vogliamo controllare una volta al minuto se<br />
dobbiamo (o meno) invertire i colori dei 2 semafori<br />
– basta fissare un segnale <strong>di</strong> clock il cui ciclo (periodo) è <strong>di</strong> 60 s.<br />
– Frequenza del clock = 1/60 Hz = 0,17 Hz<br />
Parte Controllo = <strong>Circuito</strong> <strong>sequenziale</strong><br />
• Nel seguito vedremo che la Parte controllo (Control)<br />
della CPU non è altro che uno specifico circuito<br />
<strong>sequenziale</strong><br />
– istruzioni macchina eseguite in più cicli <strong>di</strong> clock<br />
• ad ogni ciclo, si esegue uno micropasso<br />
(microistruzione)<br />
• lo stato interno al circuito <strong>sequenziale</strong> determina lo<br />
specifico micropasso da eseguire<br />
– gli output della parte controllo sono inviati alla<br />
parte operativa (Datapath), che li interpreta come<br />
coman<strong>di</strong><br />
• es.: controlli dei multiplexer, controlli per le ALU,<br />
segnali per abilitare la scrittura in registri, ecc.<br />
– gli input della parte controllo giungono dal<br />
Datapath<br />
• es.: campi del registro che contiene l’istruzione<br />
corrente (IR), risultati <strong>di</strong> operazioni <strong>di</strong> confronto,<br />
ecc.<br />
Arch. Elab. - S. Orlando 17<br />
Controllo<br />
Stato<br />
Datapath<br />
CPU<br />
Arch. Elab. - S. Orlando 18
Automi vs Microistruzioni<br />
• Gli automi a stati finiti costituiscono un metodo grafico per descrivere il<br />
comportamento, passo per passo, <strong>di</strong> un circuito <strong>sequenziale</strong><br />
• Se gli stati sono in numero considerevole =><br />
– <strong>di</strong>venta <strong>di</strong>fficile <strong>di</strong>segnare l’automa<br />
• Utile quin<strong>di</strong> usare un programma (microprogramma) scritto con un linguaggio<br />
testuale, composto da un set definito <strong>di</strong> istruzioni (microistruzioni)<br />
• Sintassi <strong>di</strong> una microistruzione <strong>di</strong> tipo TS (Transizione <strong>di</strong> Stato), usata per<br />
modellare <strong>circuiti</strong> <strong>di</strong> Moore:<br />
S i : O i (c i1) Next i1; (c i2) Next i2; …. (c im) Next im<br />
Etichetta che<br />
in<strong>di</strong>vidua lo stato<br />
corrente<br />
Salto a molte vie<br />
Valori in output<br />
da affermare sulla<br />
base dello stato<br />
corrente<br />
(Operazione da<br />
comandare all’esterno)<br />
Automa vs Microprogramma<br />
Con<strong>di</strong>zione sui<br />
valori delle<br />
variabili in input Etichetta dello stato<br />
su cui transire (a cui<br />
saltare)<br />
NSgreen: NSlite←1, EWlite ←0 case (NScar, EWcar) of<br />
(_,0) NSgreen ;<br />
(_,1) EWgreen<br />
EWgreen: NSlite←0, EWlite ←1 case (NScar, EWcar) of<br />
(0,_) EWgreen ;<br />
(1,_) NSgreen<br />
Arch. Elab. - S. Orlando 19<br />
Arch. Elab. - S. Orlando 20
Mo<strong>di</strong> alternativi per implementare i <strong>circuiti</strong><br />
• La notazione introdotta con i microprogrammi<br />
suggerisce un’implementazione <strong>di</strong>fferente dei<br />
<strong>circuiti</strong> <strong>sequenziali</strong><br />
• Abbiamo già visto la tecnica cosiddetta cablata,<br />
che richiede la definizione del circuito logico a 2<br />
livelli (PLA) che determina<br />
– le funzioni NEXT_STATE e OUTPUTS<br />
• La tecnica alternativa prevede <strong>di</strong>:<br />
– memorizzare le varie microistruzioni (con<br />
formato ben definito) in una ROM<br />
– usare un registro (Stato del circuito),<br />
chiamato <strong>sequenziali</strong>zzatore (micro Program<br />
Counter), per in<strong>di</strong>rizzare la microistruzione<br />
corrente<br />
– è necessaria una rete per determinare il<br />
prossimo valore del <strong>sequenziali</strong>zzatore<br />
(logica <strong>di</strong> selezione o <strong>sequenziali</strong>zzazione),<br />
che a sua volta può far uso <strong>di</strong> ROM per<br />
l’implementazione<br />
ROM<br />
Stato<br />
Logica <strong>di</strong><br />
selezione<br />
inputs<br />
outputs<br />
Arch. Elab. - S. Orlando 21