Elementi di memoria Ing. Ivan Blunno 21 aprile 2005 1 Introduzione In questa dispensa verrà introdotta una particolare categoria di circuiti digitali: i circuiti sequenziali o circuiti con memoria. A differenza dei circuiti combinatori, il valore delle uscite in un certo istante dipende, oltre che dal valore degli ingressi allo stesso istante, anche dai valori assunti dagli ingressi e dalle uscite nei tempi passati. I circuiti sequenziali devono cioè essere in grado di mantenere memoria della storia passata dei propri segnali di ingresso e di uscita. La trattazione completa di questa categoria di circuiti è piuttosto complessa e, non essendo oggetto di questa dispensa, verrà trattata solo relativamente ad un sottoinsieme di circuiti: i flip-flop. 2 Il flip-flop Nei prossimi paragrafi verranno presentati alcuni dei più comuni tipi di flip-flop. Vale comunque la pena di analizzare un aspetto comune a tutti quanti (in realtà lo stesso concetto è comune a tutti i circuiti sequenziali): la retroazione. Per retroazione si intende un insieme di collegamenti che riportano dei segnali di uscita di una rete logica al suo ingresso. È proprio questo aspetto che permette ad un circuito digitale di mantenere memoria della propria storia passata. I flipflop sono particolari circuiti sequenziali che possiedono un insieme di ingressi ed una sola uscita (in realtà è generalmente disponibile anche la sua negata). uesti circuiti possono quindi essere utilizzati per memorizzare un informazione da un bit. Il flip-flop può quindi essere considerato il più elementare elemento di memoria. Si consideri per esempio il circuito di figura 1. In questo circuito la retroazione è particolarmente evidente. Ciscuno dei 2 inverter ha infatti il segnale di uscita che, attraverso l altro inverter, rientra come ingresso. Analogamente al caso di circuiti analogici con retroazione, anche nei circuiti digitali, la retroazione può portare ad instabilità (oscillazioni). È pertanto necessario verificare che gli stati in cui può trovarsi il circuito siano stabili. 1
1 A B 2 Figura 1: Circuito di memoria elementare Si supponga che il segnale in A sia ad 1 logico. Il segnale in B sarà a 0 e pertanto l inverter 2 provvederà a mantenere il valore di A ad 1. uesto stato è dunque stabile. Un analisi del tutto analoga può essere fatta nel caso di segnale in A a 0 logico. Oltre a questi due stati stabili ne esiste in realtà anche uno instabile che è quello corrispondente a V A = V B = V /2. uesto stato è detto metastabile in quanto tende ad evolvere verso uno dei due stati stabili, ma non è possibile sapere ne verso quale ne quando. La metastabilità è un fenomeno piuttosto complesso che non verrà trattato in queste dispense. È dunque chiaro che il circuito di figura 1 tende a mantenere il proprio stato anche in assenza di segnali di ingresso. Nasce dunque il problema di come fare ad imporre dall esterno un determinato stato. Supponiamo di avere A = 1 e quindi B = 0. Se volessimo imporre uno 0 logico in A ci troveremmo ad avere un conflitto con l ucita dell inverter 2 che invece tende a mantenere il punto A a valore logico alto. uesto conflitto può causare non pochi problemi. Per questa ragione, al circuito di figura 1 se ne preferisono altri che oltre a risolvere questo problema offrono anche altri vantaggi (permettendo ad esempio di avere più ingressi che implementano funzionalità più complesse). 3 Filp-flop set-reset (SR latch) Consideriamo come prima variante del circuito analizzato al paragrafo 2 il circuito di figura 2. Si ricorda che la porta logica NAN ha uscita a 0 logico quando entrambi gli ingressi sono a 1 logico, uscita a 0 logico in tutti gli altri casi. Supponaimo uno stato iniziale con S = 1, R = 1, = 0, = 1 Un analisi simile a quella condotta nel paragrafo precedente mostra che questo è uno stato stabile. Se l ingresso S viene portato a 0, la porta NAN 1 si troverà con un ingresso a 0 e di conseguenza porterà la propria uscita a 1. A questo punto la porta NAN 2 si troverà con entrambi gli ingressi a 1 logico e porterà quindi la propria uscita a 0. Il nuovo stato stabile sarà allora 2
S 1 2 R Figura 2: flip-flop set-reset: schema circuitale S R SR latch Figura 3: flip-flop set-reset: simbolo S = 0, R = 1, = 1, = 0 Se adesso S ritorna a 1 le uscite non cambiano valore e si entra nel nuovo stato stabile S = 1, R = 1, = 1, = 0 È importante notare come gli ingressi abbiano gli stessi valori dello stato iniziale, mentre le uscite hanno i valori scambiati. È dunque evidente che il valore delle uscite non dipende solo dal valore corrente degli ingressi ma anche dal loro valore passato. In questo caso, evidentemente, le uscite ricordano che l ingresso S ha avuto valore 0 anche se ora è ritornato ad 1. Facendo scendere R a 0 le uscite torneranno ad avere il valore iniziale. Un successivo ritorno ad 1 di R non avrà effetto sulle uscite. Un circuito di questo tipo è detto flip-flop set reset. Il suo simbolo circuitale è riportato in figura 3 mentre la sua tavola di verità e mostrata in figura 4. L ingresso S è detto ingresso di set, mentre l ingresso R è detto ingresso di reset. Il significato della tabella di figura 4 è il seguente: uando gli ingressi set e reset sono ad 1 logico l uscita mantiene in memoria l ultimo valore prodotto ( ovviamente manterrà il valore negato). uando l ingresso di set viene portato a 0 l uscita viene settata ad 1 ( = 0). 3
S R 1 1 0 1 1 0 0 0 M M 1 0 0 1 N.P. Figura 4: flip-flop set-reset: tavola di verità uando l ingresso di reset viene portato a 0 l uscita viene resettata a 0 ( = 1). La configurazione con set e reset entrambi a 0 non è permessa in quanto porterebbe e ad avere lo stesso valore 1 (si perderebbe il significato di negazione) ed inoltre il valore delle uscite dipenderebbe dall ordine in cui gli ingressi tornerebbero a zero. Poiché il valore logico a cui gli ingressi sono sensibili è lo 0, spesso il simbolo di questi flip-flop compare con dei pallini sugli ingressi uguali a quelli posti sulle uscite delle porte invertenti (NOT, NAN, NOR, etc...). Analogamente nella tavola di verità i segnali di set e reset possono essere indicati come S e R. Un implementazione alternativa del latch set-reset si può ottenere utilizzando porte logiche NOR al posto delle NAN. L analisi del dispositivo così ottenuto può essere un esercizio utile. 4 ata latch (-latch) Un altra variante al circuito del paragrafo 2 è mostrata in figura 5.a. Per evitare di complicare troppo la figura, è stato utilizzato un simbolo semplificativo per gli interruttori digitali, rappresentato da un rettangolo, il cui funzionamento è esemplificato in figura 5.b. La loro implementazione, nella realtà, avviene attraverso transmission gate. L analisi di questo circuito è piuttosto semplice. È innanzi tutto importante osservare che, per effetto dell inverter presente sull ingresso di controllo dell interruttore 2, i due iterruttori conducono alternativamente: quando uno conduce l altro è aperto. Analizziamo i due casi separatamente: = 1. In questo caso l interruttore 1 conduce e l interruttore 2 è aperto. L uscita risulterà pertanto uguale a mentre l uscita risulterà uguale a, cioè. In queste condizioni il latch è trasparente (uscita uguale all ingresso). 4
1 A B 2 S S=0 A B S=1 A B a) b) Figura 5: latch: schema circuitale latch Figura 6: latch: simbolo = 0. In questo caso l interruttore 2 conduce e l interruttore 1 è aperto. Il circuito risulterà pertanto analogo a quello esaminato nel paragrafo 2 e, come già detto manterrà lo stato che aveva nel momento in cui i segnale è passato dal valore logico alto al valore logico basso. In queste condizioni il latch è in condizione di memoria. L ingresso è l ingresso di dato (è il dato che si vuole memorizzare nel latch) mentre l ingresso è l ingresso di clo. Un -latch come quello descritto sopra è detto positive-level-sensitive -latch (-latch sensibile al livello positivo). Ovviamente se l inverter presente sull ingresso di controllo dell interruttore 2 viene spostato sull ingresso dell interruttore 1 il comportamento del circuito rispetto al segnale di clo sarà opposto (memoria col clo a 1 e trasparenza con clo a 0). Nelle figure 6 e 7 sono riportati rispettivamente il simbolo e la tavola di verità per il -latch. 5 ata flip-flop (-flip-flop) Connettendo due -latch in cascata con i due segnali di clo sfasati tra loro come mostrato in figura 8 si ottiene l elemento di memoria più ampiamente 5
1 0 M M Figura 7: latch: tavola di verità M M S Figura 8: flip-flop: schema circuitale utilizzato nei circuiti digitali: il data flip-flop o flip-flop master-slave (spesso ci si riferisce a questo flip-flop senza specificare alcun attributo). Analizziamo il funzionamento di queso circuito. I due latch sono identificati dalle letter M ed S che stanno per master (dall inglese padrone ) e slave (dall inglese schiavo ). Consideriamo anche in questo caso i due possibili valori dell ingresso di clo. = 0. Il latch M è trasparente e di conseguenza M =. Il latch S viceversa è in memoria. Ciò significa che sull uscita sarà memorizzato il dato che era all ingresso del latch S al ciclo precedente. = 1. Il latch M è in memoria e quindi M sarà uguale all ultimo valore che aveva nel momento in cui il segnale di clo è salito a 1. uesta volta è il latch S ad essere trasparente permettendo così al segnale M (che non è altro che il dato memorizzato) di raggiungere l uscita. In definitiva, il -flip-flop memorizza il valore del dato sul fronte di salita del clo e lo mantiene in memoria fino al fronte di salita successivo. Un flip-flop di questo tipo è detto positive-edge-triggered -flip-flop (flip-flop sensibile al fronte di salita). Il suo simbolo circuitale e la sua tavola di verità sono riportati rispettivamente in figura 9 e 10. Spesso i -flip-flop vengono raggruppati per formare degli elementi di memoria di capacità superiore detti registri. i norma i registri sono composti di un numero di flip-flop multiplo di 8. Per esempio un registro composto da 8 flip-flop sarà in grado di memorizzare 8 bit per volta (1 byte). 6
FF Figura 9: flip-flop: simbolo M M Figura 10: flip-flop: tavola di verità 6 Togle flip-flop (T-flip-flop) Il togle flip-flop si ottiene dal -flip-flop semplicemente riportando l uscita all ingresso come mostrato in figura 11. L ingresso di clo è stato rinominato T (togle), anche se la sua funzione è la stessa. Il funzionamento di questo circuito è molto semplice. Ogni volta che l ingresso di togle ha un fronte di salita, il flip-flop memorizza il valore di, cioè il valore negato rispetto all ultimo valore memorizzato. Ciò significa che ad ogni transizione di T da 0 a 1 l uscita cambia il proprio valore. ispositivi di questo tipo vengono comunemente utilizzati come divisori di frequenza. Infatti, se all ingresso T viene inviato un segnale ad onda quadra, all uscita si otterrà ancora un segnale ad onda quadra, ma di periodo doppio (e frequenza dimezzata) come mostrato in figura 12. T Figura 11: T flip-flop: schema circuitale 7
T Figura 12: T flip-flop: diagramma temporale ingresso/uscita 8