Architettura degli Elaboratori e delle Reti Lezione 9 Flip-flop, registri, la macchina a stati finiti Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell nformazione Università degli Studi di Milano L 9 /39 Sommario! Bistabili DT edge- sensitive: Flip-Flop! Registri e Register-File! Circuiti sequenziali (macchine a stati finiti) L 9 2/39
Sincronizzazione! cancelli devono disaccoppiare i diversi sottosistemi logici " raccogliere i segnali, senza farli passare, e rilanciarli ad un determinato istante " Cancello doppio: ingresso e uscita " Mai aperti contemporaneamente L 9 3/39 Latch: Bistabili level-sensitive! latch sono dispositivi trasparenti: " Per tutto il tempo in cui il clock è attivo (alto), il valore di D viene riportato in uscita: Q = D : uscita collegata all ingresso! A noi interessa memorizzare l informazione in un determinato istante "#$! % % if = then Q*=D else Q*=Q L 9 4/39
Problemi con i latch sincroni! Registro a scorrimento (shift register) " Un unico ingresso e un unica uscita U " n presenza di segnale attivo (clock alto), il contenuto deve essere spostato verso destra di una posizione! Realizzazione mediante bistabili LATCH: " Funziona? = D 2 Q 2 = D Q = D Q = U Q Q Q L 9 5/39 Shift register con i latch = D 2 Q 2 = D Q = D Q = U Q Q Q "#$ & % ' % ( % ) * +,!t!t!t L 9 6/39
Bistabili edge sensitive : i Flip-Flop! Dispositivi attivi sul fronte del clock (edge sensitive): " il loro stato (uscita) può commutare solo in corrispondenza del fronte di salita o di discesa del clock. Bistabile tipo DT Configurazione Master-Slave D D master Q master = D slave Q slave Q Q master Q Flip-Flop tipo DT L 9 7/39 Flip-flop: struttura master slave! -#&.: L ingresso D viene memorizzato nel latch MASTER " L uscita è bloccata! -#/.: l uscita stabile del latch MASTER viene propagato al latch SLAVE " L ingresso è bloccato, l uscita è stabile. Q m = D s Q D m D Q m = D s Q D m L 9 8/39
Funzionamento: FLP = Q m = D s Q D m D D m Flip Q m = D s Q Q m Q m D D t L 9 9/39 Funzionamento: FLOP = Q m = D s Q D m D D m Q m = D s Flop Q Q Q Q m Q m t L 9 /39
Funzionamento dei Flip-Flop! Fronte di SALTA FLP " Attivato lo stadio MASTER " Memorizzato il dato sull ingresso: D! STATO " Uscita invariata Cancello ingresso aperto, cancello uscita chiuso! Fronte di DSCESA FLOP " Attivato stadio SLAVE " Presenta il dato memorizzato in uscita: STATO! Q " ngresso isolato Cancello ingresso chiuso, cancello uscita aperto L 9 /39 Struttura di un circuito sequenziale Logica & D Q combinatoria D Q Out flip-flop flip-flop T T "#$ Cancello! Circuito combinatorio! Cancello! Sincronizzazione: la logica combinatoria deve terminare la propria commutazione in tempo utile L 9 2/39
Temporizzazione circuito sequenziale n D Q flip-flop T Logica combinatoria D Q flip-flop T Out! l clock arriva contemporaneamente a tutti i dispositivi sincronizzati! Dimensionamento del periodo di clock: " la commutazione del clock deve avvenire dopo che la logica combinatoria ha terminato tutte le commutazioni " l tempo necessario alla logica combinatoria per commutare dipende dal cammino critico L 9 3/39 Temporizzazione: problemi n D Q flip-flop T Logica combinatoria D Q flip-flop T Out! Tempo di set-up: è il tempo minimo per cui deve rimanere stabile l input D prima del fronte di clock.! Tempo di hold: è il tempo minimo per cui deve rimanere stabile l input D dopo il fronte di clock (solitamente trascurabile). Tempo di set-up Tempo di hold +! +"#$ t t setup t hold L 9 4/39
Dimensionamento del periodo di Clock n D Q flip-flop T Logica combinatoria D Q flip-flop T Out! Tempo di propagazione: è il tempo necessario per propagare il segnale dall uscita slave alla logica combinatoria: t p " maggiore del tempo di hold: t h! Tempo di skew: ritardo massimo del clock t w Tempo di set-up +! Tempo di propagazione: t p > t h +"#$ t t setup t hold T clock > k * (t p + t c + t s + t w ) L 9 5/39 Sommario! bistabili DT edge-sensitive: Flip-Flop! registri ed il register file! Circuiti sequenziali (macchine a stati finiti) L 9 6/39
Registri! Registro a N bit # N Flip-flop DT SCRTTURA: " L impulso di memorizza i dati sugli ingressi D LETTURA: " dati memorizzati sono presenti sulle uscite Q L 9 7/39 Register file (CPU MPS)! Register File: famiglia di CPU MPS : " 32 registri da 32 bit " linea di ingresso " 2 linee di uscita #Reg read 5 #Reg read 2 5 Contenuto #Reg write W Contenuto Write 5 32 Register File MPS: 32 registri da 32 bit 32 32 Contenuto 2 L 9 8/39
Register File! Banco di registri: 2 k registri da n bit ciascuno " Utilizzabile come memoria per i dati! SELEZONE: fornendo in ingresso il numero del registro (#reg)! LETTURA: non modifica il contenuto del registro selezionato! SCRTTURA: nserisce <ContenutoWrite> nel registro selezionato " Comando: segnale W #Reg read k #Reg read 2 k Contenuto #Reg write W Contenuto Write n k Register File: 2 k registri da n bit n n Contenuto 2 L 9 9/39 Register File MPS: Porta di LETTURA! 2 MUX di selezione registro " 2 registri possono essere letti contemporaneamente 5 32 5 L 9 2/39
Register file MPS: Porta di SCRTTURA! ngresso : (Selezione) AND W " Se no ad ogni scriverei nei registri! ngresso D: " Dato (32 bit) W #Reg Write 5 Dato 32 L 9 2/39 Sommario! bistabili DT edge-sensitive: Flip-Flop! registri ed il register file! Circuiti sequenziali (macchine a stati finiti) L 9 22/39
Macchine sequenziali! Macchina combinatoria: U = f ( ) " senza memoria, uscita dipende solo dagli ingressi! Macchina sequenziale: X* = f ( X, ) U = g( X ) " 2 funzioni: uscita e stato prossimo " esiste la memoria: lo STATO U U X combinatoria sequenziale L 9 23/39 Macchine sequenziali! Elemento necessario di ogni macchina sequenziale è la retroazione " Uscita riportata in ingresso " Bistabile: (macchina sequenziale elem.): 2 porte NOR +retroazione macchina sequenziale rete combinatoria retroazione 2 % %! Macchina sequenziale sincrona " mpiega bistabili sincroni " Es: Flip-Flop tipo DT "#$ &,! % 3 L 9 24/39
La macchina sequenziale di Huffman i o i i M! x* x y o y y N &7 89::; x K x* K,:<;49 4546 4546+=86::;> 6 L 9 25/39 Macchina a Stati Finiti - di Moore! Una Macchina a Stati Finiti (MSF) è definita dalla quintupla: < X,, Y, f( ), g( ) > X: insieme degli stati (in numero finito). : alfabeto di ingresso: l insieme dei simboli che si possono presentare in ingresso. Con n ingressi, avremo 2 n possibili configurazioni. Y: alfabeto di uscita: l insieme dei simboli che si possono generare in uscita. Con m uscite, avremo 2 m possibili configurazioni f( ): funzione stato prossimo: X* = f( X, ) Definisce l evoluzione della macchina nel tempo, in modo deterministico g( ): funzione di uscita: Y= g( X ) (macchina di Moore) Y= g( X, ) (macchina di Mealy) " Per il buon funzionamento della macchina è previsto uno stato iniziale, al quale la macchina può essere portata mediante un comando di reset. L 9 26/39
Macchina di Moore: STT! STT: State Transition Table (Tabella delle transizioni di stato) " Per ogni coppia: <stato attuale, ingresso> definisco uscita y e stato prossimo x* (x i?+x, i j?+) # y(x i ) ; x*( x i, i j )! Esempio: M stati (log 2 M bit di stato), N ingressi (log 2 M bit d ingresso): i i 2 i N Y x x*(x, i ) x*(x, i 2 ) x*(x, i N ) y(x ) x 2 x*(x 2, i ) x*(x 2, i 2 ) x*(x 2, i N ) y(x 2 ) x M x*(x M, i ) x*(x M, i 2 ) x*(x M, i N ) y(x M ) L 9 27/39 Macchina di Moore: STG! STG: State Transition Graph (Diagramma degli Stati o Grafo delle transizioni) " Ad ogni nodo è associato uno stato: x i? X " Ed un valore della funzione d uscita: y i? Y, y i =g(x i ) " Un arco orientato da uno stato x i ad uno stato x j, contrassegnato da un simbolo (di ingresso) i K, rappresenta una transizione che si verifica quando la macchina, essendo nello stato x i, riceve come ingresso i K i K? x? X x J? X x y = g(x ) J = f(x,i K ) y J = g(x J ) L 9 28/39
Controllore di un semaforo SEMAFORO:! ncrocio tra 2 strade: nord-sud (NS) ed est-ovest (EO) controllate da un semaforo (per semplicità consideriamo solamente rosso e verde)! l semaforo può commutare ogni 3 secondi " Macchina sincrona, clock con frequenza =?! E presente un sensore in grado di leggere, per ogni direttrice, se esiste almeno un auto in attesa, oppure un auto che si accinga ad attraversare (condizioni trattate allo stesso modo).! l semaforo deve cambiare colore (da rosso a verde) quando esiste un auto in attesa sulla sua direttrice.! Se ci sono auto in attesa sulle entrambe le direttrici il semaforo deve cambiare colore (al termine del tempo di commutazione) L 9 29/39 SEMAFORO: Stato, ngresso, Uscita STATO " Semaforo NS VERDE, semaforo EO ROSSO " Semaforo NS ROSSO, semaforo EO VERDE! bit di STATO ( flip-flop) NGRESS " Auto NS presente / non presente AutoNS=/ " Auto EO presente / non presente AutoEO = /! 2 bit di NGRESSO! 4 configurazioni d ingresso USCTE: = STATO " LuceEO verde (LuceNS rossa) " LuceNS verde (LuceEO rossa)! 2 configurazioni d uscita! bit di USCTA auto NS sì / no auto EO sì / no L 9 3/39
Funzionamento: stato prossimo! Per ogni valore dello stato dobbiamo prevederne l evoluzione in funzione degli ingressi X(t+) = X* = f( X(t), )! Stato: X(t) = X = {VerdeNS, VerdeEO}! X(t+) = X* = VerdeNS " Se X(t)= VerdeNS AND non ci sono auto sulla direttrice EO " Se X(t)= VerdeEO AND ci sono auto sulla direttrice NS! X(t+) = X* = VerdeEO " Se X(t)= VerdeEO AND non ci sono auto sulla direttrice NS " Se X(t)= VerdeNS AND ci sono auto sulla direttrice EO L 9 3/39 Funzionamento: uscita! Per ogni stato, definire l uscita della macchina! Uscita " STATO " VerdeNS! Verde sulla direttrice NS, rosso sulla direttrice EO " VerdeEO! Verde sulla direttrice EO, rosso sulla direttrice NS! Luce Verde NS = VerdeNS! Luce Verde EO = VerdeEO L 9 32/39
Sintesi funzioni: stato prossimo e uscita! Stato prossimo: X* = f(x, ) Per ogni variabile di stato, calcolare l evoluzione in funzione degli ingressi: " Se X = VerdeNS e AutoEO= " Se X = VerdeEO e AutoNS= " Se X = VerdeEO e AutoNS= " Se X = VerdeNS e AutoEO= VerdeNS = VerdeNS ~autoeo + VerdeEO autons VerdeEO = VerdeEO ~autons + VerdeNS autoeo! Uscita: Y = g(x) Per ogni stato, definire l uscita della macchina: " X = VerdeNS Y = Luce Verde NS " X = VerdeEO Y = Luce Verde EO $ X* = VerdeNS $ X* = VerdeEO L 9 33/39 STG del semaforo! Funzione stato prossimo: VerdeNS* = VerdeNS ~autoeo + VerdeEO autons VerdeEO* = VerdeEO ~autons + VerdeNS autoeo! Funzione uscita: Y = X AutoNS = AutoEO = AutoEO = VerdeEO VerdeNS LuceVerde EO AutoNS = LuceVerde NS L 9 34/39
STT del semaforo X ~autoeo ~autons ~autoeo autons autoeo ~autons autoeo autons Uscita VerdeNS VerdeNS VerdeNS VerdeEO VerdeEO Luce VerdeNS VerdeEO VerdeEO VerdeNS VerdeEO VerdeNS Luce VerdeEO Funzione stato prossimo: X* = f(x, ) Funzione uscita: Y = g(x) L 9 35/39 STT del semaforo: CODFCA binaria! Stato: " (VerdeNS/RossoEO, RossoNS/VerdeEO)! (, )! ngresso: " 2 Variabili: AutoNS, AutoEO! = presente, = assente " 4 Configurazioni: (,,, )! Uscita: " (Luce_VerdeNS, Luce_VerdeEO)! (, ) X Uscita Y L 9 36/39
Sintesi della MSF del semaforo! Struttura: macchina di MOORE " 2 stati (,)! flip-flop " 2 linee di ingresso " linea d uscita! SNTES: rete combinatoria " stato prossimo: f(x,) " uscita: g(x) i i 2 reti combinatorie: X* = f (X,) Y = g (X ) X X* % 3! clk Y L 9 37/39 Sintesi della MSF del semaforo! Mediante la STT codificata in binario, posso esprimere X* e Y come somma di prodotti: " cerco i mintermini: X* = X + X + X + X = Y = = X X + X X Y L 9 38/39
MSF del semaforo: sintesi del circuito X* = X + X + X + X = Y = = X X + X i i 2 reti combinatorie: X* = f (X,) Y = g (X ) Y i rete combinatoria Y X X* %! 3 clk X* i X T = 3 sec L 9 39/39