Elementi di memoria - latch SR, latch D e flip-flop D
In questa pagina 6
Finora tutti i circuiti avevano uscite che dipendono solo dagli ingressi presenti. Per costruire un calcolatore serve la memoria: elementi che conservano un'informazione tra due operazioni successive. Qui si introducono i circuiti sequenziali e i loro mattoni elementari, latch e flip-flop. (Versione più sintetica: Latch e flip-flopReti sequenziali e retroazione; latch SR con porte NOR e stato proibito; latch SR e D abilitati dal clock; flip-flop D master-slave sensibile al fronte; flip-flop JK e T; tempi di setup e hold; clock e periodo minimo.Latch e flip-flop →.)
Circuiti sequenziali
In un circuito sequenziale le uscite dipendono dagli ingressi presenti e dalla storia passata, riassunta dallo stato. Si realizza collegando ingressi e uscite di una rete combinatoria con uno o più elementi di memoria (per noi i flip-flop), con un percorso di retroazione (feedback): le uscite degli elementi di memoria tornano agli ingressi della rete combinatoria. I circuiti combinatori sono aciclici, quelli sequenziali ciclici.
- Stato presente: insieme dei valori in uscita dagli elementi di memoria.
- Stato futuro: insieme dei valori in ingresso agli elementi di memoria; al successivo evento di clock diventa lo stato presente.
- La rete combinatoria calcola uscite e stato futuro a partire da ingressi e stato presente.
Sincrono e asincrono. Un circuito sequenziale è sincrono se gli ingressi sono valutati e lo stato e le uscite si aggiornano solo in sincronia con un segnale periodico, il clock; il suo comportamento è determinato da ciò che accade a istanti discreti e periodici . Un circuito sincrono è anche detto macchina a stati finiti (FSM, finite state machine, Analisi delle reti sequenziali - tabella e diagramma degli stati, Mealy e MooreAnalizzare una rete sequenziale sincrona significa ricavare, dal circuito, le equazioni di ingresso dei flip-flop (stato futuro) e dell'uscita, la tabella degli stati ($2^{m+n}$ righe per $m$ FF e $n$ ingressi), il diagramma degli stati (cerchi = stati, frecce = transizioni con ingresso/uscita) e la simulazione temporale. Mealy: uscita funzione di stato e ingresso (scritta sulle frecce, può cambiare tra due fronti di clock); Moore: uscita funzione del solo stato (scritta nel cerchio, cambia solo al fronte). Due stati sono equivalenti se danno le stesse uscite e portano a stati equivalenti: si fondono per ridurre i FF.Analisi delle reti sequenziali - tabella e diagramma degli stati, Mealy e Moore →). Un circuito asincrono non ha clock: lo stato cambia quando cambiano gli ingressi e le uscite possono cambiare in qualsiasi istante. Quasi tutti i sistemi digitali moderni sono sincroni: più semplici da progettare e più robusti.
Clock. È un'onda quadra periodica (il duty cycle non è necessariamente 50%) distribuita a tutti gli elementi di memoria: ha un periodo , un fronte di salita (01), un fronte di discesa (10), un livello alto e un livello basso. Gli elementi di memoria si aggiornano solo in corrispondenza di certi eventi del clock (per esempio il fronte di salita). Ad ogni periodo lo stato è aggiornato (ma non necessariamente cambia).
Come si memorizza un bit
Un buffer ha ritardo : un dato presentato all'ingresso al tempo appare in uscita a . Se si collega l'uscita all'ingresso e l'ingresso è tenuto costante per , l'uscita resta a quel valore: l'elemento memorizza. Il modo più comodo è collegare due inverter in cascata (ciascuno con ritardo ) ad anello: negando due volte si riottiene il valore. Questo è il principio della cella di memoria SRAM (Memorie ROM e RAM - SRAM, DRAM e organizzazione dei chipUna memoria è un insieme di celle (word da più bit) con circuiteria di controllo. Classificazioni: sola lettura (ROM) o lettura/scrittura; ad accesso casuale (RAM), seriale (SAM) o ibrido (Flash); volatile (SRAM, DRAM) o non volatile. Una RAM $2^k\times n$ ha $k$ bit di indirizzo (indipendenti da $n$), $n$ bit dati, read/write e chip select. SRAM: cella bistabile (latch), veloce, senza refresh; DRAM: condensatore, più densa, con refresh. Organizzazione: decoder di riga e colonna (coincident selection), uscite tri-state, array di chip (più chip per più parole, più bit per più linee dati).Memorie ROM e RAM - SRAM, DRAM e organizzazione dei chip →). Servono ingressi aggiuntivi per imporre il valore: i latch.
Latch SR (con porte NOR)
Il latch è l'elemento di base: un circuito bistabile (due stati stabili) che memorizza un bit e non è regolato dal clock (è sensibile al livello dei segnali). Il latch SR (Set-Reset) si ottiene dai due inverter sostituendoli con due porte NOR: e .
| funzione | |||
|---|---|---|---|
| 0 | 0 | memoria: mantiene lo stato | |
| 0 | 1 | 0 | reset |
| 1 | 0 | 1 | set |
| 1 | 1 | non definito | proibito: |
Con l'uscita va a (): set. Con va a (): reset. Con il latch conserva lo stato precedente. Nel funzionamento normale e sono uno il complemento dell'altro.
La combinazione è proibita: porta entrambe le uscite a , violando il requisito che sia il complemento di ; e il vero problema è che, passando da a , non si può prevedere il valore delle uscite (dipende dall'ordine in cui commutano e e dai ritardi delle porte). Nella simulazione ideale con commutazioni simultanee e ritardi uguali l'uscita finirebbe a un valore intermedio tra 0 e 1, non realistico.
Esempio di evoluzione (si parte con ):
| 1 | 1 | 0 | 0 | 1 | 0 | |
| azione | set | memoria | reset | memoria | set | reset |
Latch (con NAND). Sostituendo le NOR con NAND si ottiene un latch con ingressi attivi bassi: pone (set); pone (reset); mantiene lo stato; è proibito (entrambe le uscite a 1; nel passaggio a l'uscita è imprevedibile).
Latch SR con ingresso di controllo. Aggiungendo un ingresso di controllo (enable): con il latch mantiene lo stato qualunque siano e ; con funziona come SR. Per : memoria, reset, set, proibito (entrambe le uscite a 1).
Latch D
Il latch D elimina lo stato proibito con un solo ingresso dato (e il controllo ): internamente e , quindi e non possono valere 1 insieme.
| 0 | X | (memoria) |
| 1 | 0 | 0 (reset) |
| 1 | 1 | 1 (set) |
Con il latch è trasparente: l'uscita copia ogni cambiamento di (con il ritardo della porta). È sensibile al livello del controllo: finché l'uscita può cambiare più volte.
Il flip-flop e la non-trasparenza
In un circuito sincrono l'ingresso di un elemento di memoria dipende in parte dalla sua uscita (retroazione). Se l'elemento fosse trasparente un cambiamento in ingresso potrebbe propagarsi all'uscita e tornare indietro più volte nello stesso periodo di clock, con cambiamenti multipli indesiderati. Un flip-flop (FF) è quindi un elemento di memoria binario, temporizzato dal clock, che non è trasparente: i cambiamenti dell'ingresso si propagano all'uscita solo tra due periodi di clock successivi, in corrispondenza di un evento del clock. Tra due fronti consecutivi lo stato del FF è insensibile agli ingressi, e il nuovo stato dipende solo dallo stato immediatamente precedente.
Un flip-flop si costruisce con due latch D in cascata (master e slave, o primario e secondario) comandati da segnali di controllo opposti: il primo è abilitato quando il clock vale un livello, il secondo quando vale l'altro. Il trigger è il cambiamento che abilita le variazioni dell'uscita.
Flip-flop D positive-edge-triggered (PET). Master con controllo (abilitato quando ), slave con controllo (abilitato quando ):
- con il master è trasparente e copia ; lo slave è disabilitato e mantiene ;
- sul fronte di salita il master si chiude (conserva l'ultimo valore di ) e lo slave si apre: l'ultimo valore di campionato dal master viene trasferito a ;
- con il master è chiuso e non cambia anche se varia.
Flip-flop D negative-edge-triggered (NET): al contrario, master abilitato con e slave con : cambia sul fronte di discesa. I FF edge-triggered, più veloci e semplici da progettare, sono più usati di quelli sensibili al livello. Da qui in avanti si assume sempre un D flip-flop positive-edge-triggered; tutti i FF di un circuito dovrebbero essere dello stesso tipo, per reagire allo stesso modo alle variazioni del clock.
Equazione caratteristica: , valutata sul fronte attivo.
Latch e flip-flop a confronto
Clock con periodo ns, alto in ns; vale 0 fino a , 1 in , 0 in , 1 in , 0 dopo ; uscite inizialmente .
| intervallo (ns) | |||||
|---|---|---|---|---|---|
| del latch D ( come controllo) | 0 | 1 | 0 | 1 | 0 |
| del flip-flop PET | 0 | 1 | 1 | 1 | 0 |
Il latch segue finché : a ns torna a 0 e lo segue; il flip-flop campiona solo sui fronti di salita (, , ns: valori , , ) e tra i fronti ignora .
Nota di terminologia: "master" e "slave" sono termini in progressiva sostituzione (per esempio con primario/secondario); il significato resta quello di sopra.
Errori comuni
- Dire che "azzera" il latch: è una combinazione proibita, e l'uscita dopo il passaggio a è imprevedibile.
- Confondere trasparenza del latch con campionamento del flip-flop: il latch D segue per tutto il livello di , il FF solo sul fronte.
- Dimenticare che nel NAND-latch gli ingressi sono attivi bassi.
- Pensare che il flip-flop "memorizzi sul fronte di discesa": dipende dal tipo (PET o NET); noi usiamo PET.
- Confondere i circuiti sincroni con quelli asincroni: in uno sincrono il clock regola gli aggiornamenti.
Versione ripasso
- Sequenziale: uscite da ingressi + storia (stato); rete combinatoria + elementi di memoria + retroazione. Stato presente = uscite FF; stato futuro = ingressi FF. Sincrono (clock, macchina a stati finiti) vs asincrono.
- Latch SR (NOR): memoria, reset (), set (), proibito (, uscita imprevedibile dopo ). NAND: ingressi attivi bassi; proibito. Con controllo : memoria.
- Latch D: memoria, (trasparente, sensibile al livello).
- Flip-flop = non trasparente; D PET = due latch D con clock opposti (master aperto con , slave con ): sul fronte di salita. NET: fronte di discesa. Si assume PET.
- Latch vs FF: il latch segue per tutto ; il FF campiona solo sul fronte (es. valori ai fronti ns) (Temporizzazione dei flip-flop - setup, hold e frequenza massima di clockUn flip-flop memorizza il dato corretto solo se l'ingresso è stabile per $t_s$ (setup) prima e $t_h$ (hold) dopo il fronte di clock; l'uscita cambia dopo il tempo di propagazione $t_{pd,FF}$ dal fronte. In un circuito sincrono il periodo deve soddisfare $T\ge t_{pd,FF}+t_{COMB}+t_{s,FF}+t_{slack}$, quindi $f_{max}=1/T_{min}$; abbassare la frequenza risolve le violazioni di setup. Il vincolo di hold $t_{pd,FF,min}+t_{COMB,min}\ge t_h$ non dipende dal clock (e non si risolve rallentandolo). Il clock skew modifica i vincoli.Temporizzazione dei flip-flop - setup, hold e frequenza massima di clock →).
- Errori: come reset; latch FF; NAND-latch attivo alto.
Esercizi su questo argomento
Teoria collegata
- Analisi delle reti sequenziali - tabella e diagramma degli stati, Mealy e Moore
- Memorie ROM e RAM - SRAM, DRAM e organizzazione dei chip
- Progettazione di una rete combinatoria - approccio gerarchico e porte NAND-NOR
- Temporizzazione dei flip-flop - setup, hold e frequenza massima di clock
- VHDL - latch, flip-flop e reset sincrono e asincrono