Salta al contenuto
Note per Studenti Elementi di memoria - latch SR, latch D e flip-flop D

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 …tN−1,tN,tN+1…\dots t_{N-1},t_N,t_{N+1}\dots. 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 TT, un fronte di salita (0→\to1), un fronte di discesa (1→\to0), 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 tGt_G: un dato presentato all'ingresso al tempo tt appare in uscita a t+tGt+t_G. Se si collega l'uscita all'ingresso e l'ingresso è tenuto costante per tGt_G, l'uscita resta a quel valore: l'elemento memorizza. Il modo più comodo è collegare due inverter in cascata (ciascuno con ritardo tG/2t_G/2) 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: Q=R+Q‾‾Q=\overline{R+\overline Q} e Q‾=S+Q‾\overline Q=\overline{S+Q}.

SS RR Q(t+1)Q(t+1) funzione
0 0 Q(t)Q(t) memoria: mantiene lo stato
0 1 0 reset
1 0 1 set
1 1 non definito proibito: Q=Q‾=0Q=\overline Q=0

Con S=1,R=0S=1,R=0 l'uscita va a Q=1Q=1 (Q‾=0\overline Q=0): set. Con S=0,R=1S=0,R=1 va a Q=0Q=0 (Q‾=1\overline Q=1): reset. Con S=R=0S=R=0 il latch conserva lo stato precedente. Nel funzionamento normale QQ e Q‾\overline Q sono uno il complemento dell'altro.

La combinazione S=R=1S=R=1 è proibita: porta entrambe le uscite a 00, violando il requisito che Q‾\overline Q sia il complemento di QQ; e il vero problema è che, passando da (1,1)(1,1) a (0,0)(0,0), non si può prevedere il valore delle uscite (dipende dall'ordine in cui commutano SS e RR 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 Q=0Q=0):

(S,R)(S,R) (1,0)(1,0) (0,0)(0,0) (0,1)(0,1) (0,0)(0,0) (1,0)(1,0) (0,1)(0,1)
QQ 1 1 0 0 1 0
azione set memoria reset memoria set reset

Latch S‾ R‾\overline S\,\overline R (con NAND). Sostituendo le NOR con NAND si ottiene un latch con ingressi attivi bassi: S‾=0,R‾=1\overline S=0,\overline R=1 pone Q=1Q=1 (set); S‾=1,R‾=0\overline S=1,\overline R=0 pone Q=0Q=0 (reset); S‾=R‾=1\overline S=\overline R=1 mantiene lo stato; S‾=R‾=0\overline S=\overline R=0 è proibito (entrambe le uscite a 1; nel passaggio a (1,1)(1,1) l'uscita è imprevedibile).

Latch SR con ingresso di controllo. Aggiungendo un ingresso di controllo CC (enable): con C=0C=0 il latch mantiene lo stato qualunque siano SS e RR; con C=1C=1 funziona come SR. Per C=1C=1: S=R=0S=R=0 memoria, S=0,R=1S=0,R=1 reset, S=1,R=0S=1,R=0 set, S=R=1S=R=1 proibito (entrambe le uscite a 1).

Latch D

Il latch D elimina lo stato proibito con un solo ingresso dato DD (e il controllo CC): internamente S=DS=D e R=D‾R=\overline D, quindi SS e RR non possono valere 1 insieme.

CC DD Q(t+1)Q(t+1)
0 X Q(t)Q(t) (memoria)
1 0 0 (reset)
1 1 1 (set)

Con C=1C=1 il latch è trasparente: l'uscita copia ogni cambiamento di DD (con il ritardo della porta). È sensibile al livello del controllo: finché C=1C=1 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 C‾\overline C (abilitato quando C=0C=0), slave con controllo CC (abilitato quando C=1C=1):

  • con C=0C=0 il master è trasparente e copia DD; lo slave è disabilitato e mantiene QQ;
  • sul fronte di salita il master si chiude (conserva l'ultimo valore di DD) e lo slave si apre: l'ultimo valore di DD campionato dal master viene trasferito a QQ;
  • con C=1C=1 il master è chiuso e QQ non cambia anche se DD varia.

Flip-flop D negative-edge-triggered (NET): al contrario, master abilitato con C=1C=1 e slave con C=0C=0: QQ 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: Q(t+1)=D(t)Q(t+1)=D(t), valutata sul fronte attivo.

Latch e flip-flop a confronto

Clock con periodo 1010 ns, alto in [5,10),[15,20),[25,30)[5,10),[15,20),[25,30) ns; DD vale 0 fino a 22, 1 in [2,8)[2,8), 0 in [8,12)[8,12), 1 in [12,22)[12,22), 0 dopo 2222; uscite inizialmente 00.

intervallo (ns) [0,5)[0,5) [5,8)[5,8) [8,15)[8,15) [15,25)[15,25) [25,… )[25,\dots)
QQ del latch D (CC come controllo) 0 1 0 1 0
QQ del flip-flop PET 0 1 1 1 0

Il latch segue DD finché C=1C=1: a 88 ns DD torna a 0 e QQ lo segue; il flip-flop campiona DD solo sui fronti di salita (55, 1515, 2525 ns: valori 11, 11, 00) e tra i fronti ignora DD.

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 S=R=1S=R=1 "azzera" il latch: è una combinazione proibita, e l'uscita dopo il passaggio a 0000 è imprevedibile.
  • Confondere trasparenza del latch con campionamento del flip-flop: il latch D segue DD per tutto il livello di CC, 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

Esercizi su questo argomento

Teoria collegata