02.06.2013 Views

Sintesi di circuiti sequenziali Circuito sequenziale sincrono

Sintesi di circuiti sequenziali Circuito sequenziale sincrono

Sintesi di circuiti sequenziali Circuito sequenziale sincrono

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!