Reti Sincrone
Le reti sequenziali sincrone memorizzano il proprio stato in dei FF-D Le variabili di stato future sono quelle all ingresso dei FF-D mentre le variabili di stato presente sono le uscite dei FF-D. Lo stato cambia al fronte del clock. Il clock deve quindi essere tale che lo stato futuro sia stabile prima dell arrivo del fronte Il metodo di sintesi ed analisi di una rete sincrona è analogo a quello delle reti asincrone, ma ci sono meno restrizioni, ad esempio le configurazioni di stati fra cui esistono transizioni non devono essere necessariamente adiacenti. Gli stati non devono essere necessariamente stabili per le configurazioni di ingresso che li hanno generati (vedi fine blocco sulle reti sequenziali) Il Flip Flop assume quindi una grande importanza in quanto blocco elementare di memorizzazione di un bit
Componenti sincroni di largo impiego Registri Semplice Con write enable (WE) Con output enable (OE) Universal Shift register (USR) => Quattro modalità Contatori Riconoscitore di sequenza Generatore di forme d onda
Reti sincrone: come realizzare il ritardo T 0 Ingressi Uscite Stato presente s 1 Rete combinatoria ideale s f1 Stato futuro s k s fk Q D F.F.-D ts max = max(ts 1,,ts k ) Q D F.F.-D REGISTRO Q F.F.-D D T 0 4 t Rmax : tempo di risposta ; t SUmin : tempo di set-up Clock di periodo T 0. T 0 deve essere tale che tutti I segnali s fi e le uscite siano stabili prima del fronte e rispettando inoltre il t setup
Registri in cascata e tempo di HOLD ATTENZIONE: Se l uscita di un registro risulta essere l ingresso di un altro registro, occorre che il tempo di risposta (T R ) sia sufficientemente elevato in modo tale che sia rispettato il tempo di hold (T H ) del registro a valle, quindi: T R > T H I O Clock R1 R2 T SU T H Clock Ingresso di R1 I tn T R Se T R < T H non viene rispettato il tempo di hold!! 5 Uscita di R1 = Ingresso di R2 I t(n-1) I t(n-1) I tn
Sincronizzazione di segnali asincroni Se le condizioni espresse nel lucido precedente sono soddisfatte, la cascata di 2 registri può essere utilizzata per sincronizzare degli ingressi asincroni Segnali asincroni Segnali sincroni Sistema esterno asincrono Rete sincrona R1 R2 Rete di sincronizzazione Clock I segnali sincroni arrivano subito dopo il fronte del clock o comunque con anticipo rispetto al fronte successivo I segnali asincroni possono arrivare in qualsiasi momento, siccome c è il rischio che essi pervengano durante un tempo di setup, è talvolta necessario sincronizzarli tramite lo schema sopra 6
Il procedimento di sintesi delle reti sincrone Specifiche Grafo degli stati Tabella di flusso Codifica dello stato (arbitraria) Sintesi MINIMA di F e G Tabella delle transizioni SCHEMA LOGICO i(t n ) F (rete combinatoria) G (rete combinatoria) u(t n ) T 0 REGISTRO s(t n +T 0 ) s*(t n ) 7
Registro D 0 Q 0 R Registro con OE OE OE D 0 R Q 0 CLK > D n-1 Q n-1 Qui, cioè nella rete a monte, viene calcolato, durante il periodo di clock, il valore futuro del registro nel clock successivo CLK > D n-1 Q n-1 SE OE (Output Enable) attivo, allora l uscita vale come in un normale registro. Se OE non è attivo l uscita va in alta impedenza. Si usa in schemi dove l uscita può essere controllata da più reti di cui è garantito che una sola abbia OE attivo OE D i CLK D > FF-D Q Q i All interno n FF-D che condividono il clock D i CLK D > FF-D Q Q i OE si usa allo stesso modo per tutti i FF componenti ed ha effetto immediato, cioè non agisce sullo stato futuro, ma direttamente sulle uscite
Registro con WE WE WE D 0 R Q 0 > D n-1 Q n-1 Se Write Enable è non attivo, allora lo stato futuro del registro sarà uguale a quello presente. Se WE è attivo il registro funziona normalmente, cioè campiona gli ingressi sul fronte. 0 1 A MUX D i CLK Questo schema ci consente di scegliere lo stato futuro in base alla configurazione degli ingressi di controllo del registro D > FF-D Q Q i Quando WE è non attivo il registro è in memorizzazione (HOLD) e gli ingressi non vengono campionati
Contatore binario x4 3 0 2 Grafo degli stati 1 Stato presente Stato futuro 0 1 1 2 2 3 3 0 Tabella di flusso Q 1 Q 0 Q 1f Q 0f 00 01 01 10 10 11 11 00 Tabella delle transizioni Andamento temporale Clock Q 1 \ Q 0 0 1 0 0 1 1 1 0 Q 1f Q 1 \Q 0 0 1 0 1 0 1 1 0 Q 0f Q 0 Q 1 Q 1 Q 1f = Q 1 Q 0 + Q 1 Q 0 Q 0f =Q 0 Q 0 10
Contatore binario x16: funzionamento Q 3 Q 2 Q 1 Q 0 L uscita è un numero binario a 4 bit. Ad Contatore x 16 ogni impulso di clock l uscita viene incrementata di 1 (modulo 16). Non è presente alcun ingresso. Clock Grafo degli stati Tabella delle transizioni 15 0 1 Q 3 Q 2 Q 1 Q 0 Q 3f Q 2f Q 1f Q 0f 0000 0001 0001 0010 2 1110 1111 1111 0000 16 stati 4 bit per la codifica dello stato 11
Contatore binario x16: realizzazione 1 0 0 0 0 CI 4 BIT a 0 ADDER a 1 a 2 a 3 s 0 s 1 s 2 s 3 b 0 b 1 b 2 b 3 CO D 0 D 1 D 2 D 3 Q 0 Q 1 Q 2 Q 3 Q 0 Q 1 Q 2 Q 3 12
Contatore: Reset, Load, Up/Down, Enable + Prioritario Reset*: il conteggio viene portato a 0 Load*: carica un valore imposto dall esterno L 3 L 2 L 1 L 0 Enable: abilita il conteggio - Prioritario U_D: incremento del conteggio o decremento Reset* Load* Enable U_D L[3..0] 13 4 N.B. Sono tutti comandi sincroni
Load & Reset Load* Reset* S i L i 1 0 Di Espressione degli ingressi del registro (i=0..3) D i = Reset* (Load*. S i + Load. L i ) Reset* = 0 D i = 0 Reset* = 1 D i = Load*. S i + Load. L i Load* = 0 D i = L i (caricamento) Load* = 1 D i = S i (conteggio) 14
Up/Down & Enable U_D Enable CI a 0 a n-1 Espressione degli ingressi a i (i=0..3) e CI CI = Enable U_D a i = Enable U_D Enable = 0 viene sommato, al valore corrente dello stato, 0 il contatore è fermo Enable = 1 bisogna considerare il valore del segnale U_D Se U_D = 1 si torna alla configurazione di figura: conteggio in avanti Se U_D = 0 si somma al valore corrente -1 (1111): conteggio all indietro 15
Contatore: comandi sincroni e funzionamento Clock Q[2..0] Q*[2..0] 0 0 1 2 3 0 0 1 2 3 2 1 2 3 1 2 6 4 5 6 0 1 2 3 0 0 1 2 3 2 1 2 3 1 2 6 4 5 6 7 Enable Reset* U_D Load* L[2..0] x x x x x x x x x x x x x 1 x 6 4 x x x 16
Contatore: riduzione della base di conteggio x16? x10 RESET* Q 3 Q 2 Q 1 Q 0 9 x16 Ipotesi: U_D = 1 (conta in avanti) Cosa cambia se si vuole comunque disporre anche di un segnale RESET esterno? 1001 9 L 3 L 2 L 1 L 0 LOAD* Q 3 Q 2 Q 1 Q 0 x16 Ipotesi: U_D = 0 (conta indietro) Cosa cambia se si vuole comunque disporre anche di un segnale LOAD esterno? 0 Esercizio: a partire da un contatore binario x16 realizzare un contatore BCD, prevedendo i comandi di Enable, Load*, Reset* e U_D 17
Clock Divisore di frequenza: esempio con un contatore x 8 Q[2..0] 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0... Q 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 Q 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 Q 2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 Osservando le uscite del contatore si nota che: frequenza(q 0 ) = f CLOCK /2 frequenza(q 1 ) = f CLOCK /4 frequenza(q 2 ) = f CLOCK /8 18
Riconoscitore di sequenze: grafo degli stati Riconoscitore di sequenze di 3 bit: 011. L uscita si porta ad 1 appena la sequenza viene riconosciuta e a 0 appena la sequenza di ingresso è fuori sequenza i: 00011011011110101011010 U: 00001111111000000001110 i,u 1,0 0,0 0,0 0,0 I 0,0 A 1,0 0,0 B 1,1 C 0,1 D 1,1 E 1,1 F 1,0 0,1 1,0 19
Diagramma dei tempi Clock Ingresso (i) 1 1 0 1 1 0 1 1 1 1 0 1 1 0 0 Stato Presente I I I A B C D E F I I A B C D A Stato futuro I I A B C D E F I I A B C D A Uscita(U) 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 Sulla base dell ingresso presente e dello stato presente la rete calcola lo stato futuro e l uscita. Lo stato futuro diventerà stato presente a seguito del prossimo fronte del clock. 20
i,u Riconoscitore di sequenze: grafo degli stati 1,0 0,0 0,0 0,0 I 0,0 A 1,0 B 1,1 C 0,1 D 1,1 E 1,1 F 0,0 Mealy 1,0 1,0 0,1 i 0 Come risulta l uscita utilizzando Moore? 1 0 0 I,0 0 A,0 1 B,0 1 C,1 0 D,1 1 E,1 1 F,1 0 1 0 Moore 1 21
Riconoscitore di sequenze: tabella delle transizioni Stato presente i 0 1 I A I A A B B A C C D I D A E E A F F D I Tabella di flusso dello stato futuro Codifica dello stato I: 000 A: 001 B: 010 C: 011 D: 100 E: 101 F: 110 S 0 S 1 S 2 i 0 1 000 001 000 001 001 010 010 001 011 011 100 000 100 001 101 101 001 110 110 100 000 Tabella delle transizioni dello stato futuro Nota: non occorre preoccuparsi di come codificare lo stato interno per evitare problemi di alea. 22
Riconoscitore di sequenze: mappa di Karnaugh Tabella delle transizioni Mappa di Karnaugh i 0 1 S 2 i 00 01 11 10 S 0 S 1 S 2 000 001 000 001 001 010 010 001 011 011 100 000 100 001 101 101 001 110 S 0 S 1 00 001 000 010 001 01 001 011 000 100 11 100 000 --- --- 10 001 101 110 001 S 0f S 1f S 2f 110 100 000 S 0f S 1f S 2f 23
Riconoscitore di sequenze: reti minima di aggiornamento dello stato S 0 S 1 S 2 i 00 01 11 10 Mappe di Karnaugh 00 01 11 10 Nota: non occorre preoccuparsi del problema dell alea statica! 00 001 000 010 001 01 001 011 000 100 11 100 000 --- --- 10 001 101 110 001 S 0f S 1f S 2f S 2 i 00 01 11 10 00 1 0 0 1 S 0 S 1 01 1 1 0 0 S 0 S 1 11 0 0 - - 10 1 1 0 1 S 0 S 1 S 2 i 00 0 0 0 0 01 0 0 0 1 11 1 0 - - 10 0 1 1 0 S 0f = S 0 S 1 i + S 1 S 2 i + S 0 S 1 i S 2 i 00 01 11 10 00 0 0 1 0 01 0 1 0 0 11 0 0 - - 10 0 0 1 0 S 2f = S 1 i + S 0 S 1 S 2 + S 0 S 1 S 2 24 S 1f = S 0 S 1 S 2 i + S 1 S 2 i
Riconoscitore di sequenze: la funzione di uscita S 0 S 1 S 2 U 000 0 001 0 010 0 011 1 100 1 101 1 110 1 111 - Tabella della verità della funzione di uscita (Modello di Moore) S 0 S 1 Mappa di Karnaugh S 2 0 1 00 0 0 01 0 1 11 1-10 1 1 U U =S 0 + S 1 S 2 Alea? 25
Riconoscitore di sequenze: stati equivalenti 1,0 i,u 0,0 0,0 0,0 I 0,0 A 1,0 0,0 B 1,1 C 0,1 D 1,1 0,1 E 1,1 F 1,0 1,0 1,1 Osservando il grafo degli stati è possibile notare che sia C che F vengono raggiunti con la stessa configurazione di ingresso (1) e presentano la stessa uscita (1). Per le due configurazioni di ingresso transitano negli stessi stati con la stessa uscita: con ingresso 0 in D con uscita 1 e con ingresso 1 in I con uscita 0. E possibile quindi non aggiungere lo stato F: da E con ingresso 1 si ha uscita 1 e stato fututo C. 26
Generatore di forme d onda: una prima soluzione Clock Uscita X Y 0 0 1 0 1 1 0 1 0 0 1 0 0 1 0 1 1 0 X 0 0 1 0 1 1 0 1 Y 0 1 0 0 1 0 1 1 x8 Q 0 Q 1 Q 2 A0 A1 A2 0 1 2 3 4 5 6 7 La forma d onda generata è affetta dal problema dell alea? E ovvio che in questo particolare caso, siccome stiamo generando una forma d onda, vorremmo che essa non sia 27 affetta da alea Uscita Versione ai morsetti di principio possono essere aggiunti ingressi per configurare la forma d onda o per abilitare e disabilitare la generazione U
Generatore di forme d onda Una forma d onda è un segnale che assume il valore alto o basso in precisi istanti temporali e che poi, una volta terminata la sequenza, solitamente ricomincia ciclicamente. Un generatore di forme d onda è una rete sequenziale con un uscita che rappresenta la forma d onda stessa. Essendo l uscita la forma d onda si preferisce che non sia affetta da alee per non confondere le alee con la forma d onda generata. Per progettare un generatore di forme d onda c è una rete che tiene conto dell istante al quale siamo (tipicamente un contatore) Ed una rete che, a partire dallo stato presente (le uscite del contatore) genera in modo combinatorio l uscita. Nel lucido precedente tale rete era un multiplexer Per avere un generatore di forma d onda programmabile (cioè avere la possibilità di modificare la forma d onda generata) servono degli ingressi aggiuntivi che consentono la configurazione della forma d onda da generare (nel lucido precedente veniva usato un registro) Per essere sicuri che la forma d onda non sia affetta da alee ci sono due condizioni: lo stato deve variare fra configurazioni adiacenti (il conteggio binario non va bene in questo caso). Inoltre la rete F deve essere ottenuta con coperture tali da non ammettere alee statiche sulla variazioni dell ingresso singolo Esistono diversi tipi di contatori non binari, in essi la sequenza degli stati è diversa dall ordine dei numeri binari Contatore johnson : conto fino a 2n Contatore gray: conto fino a 2 n
Contatore Johnson (configurazioni di stato adiacenti) 000 100 110 001 011 111 (y 2 y 1 y 0 ) Unico bit che cambia y 2 y 1 y 0 00 01 11 10 0 100 000 001-1 110-011 111 (Y 2 Y 1 Y 0 ) y 1 y 0 y 1 y 0 y 1 y 0 y 2 00 01 11 10 y 2 00 01 11 10 y 2 00 01 11 10 0 1 0 0-0 0 0 0-0 0 0 1-1 1-0 1 1 1-1 1 1 0-1 1 Y 2 Y 1 Y 0 Y 2 = /y 0 Y 1 = y 2 Y 0 = y 1 29
Generazione di forme d onda: con contatore Johnson D Q y 2 D Q y 1 D Q y 0 /Q Equazioni di stato: Y 2 =y 0 Y 1 = y 2 Y 0 = y 1 Struttura di un contatore Johnson a 3 bit R.C. U Clock Stato (y 2 y 1 y 0 ) 0 4 6 7 3 1 0 4 6 7 Valore decimale dello stato 0 0 1 1 0 0 0 0 1 1 F 0 0 0 1 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 30