Flip flop
Da Hacknowledge.
La tecnologia CMOS vista finora ci consente di creare gate logici in grado di svolgere un gran numero di operazioni logico-aritmetiche di qualsiasi complessità, ma i gate che abbiamo esaminato sono sempre di tipo combinatorio, ovvero nei quali lo stato delle uscite è sempre e solo espresso in funzione dello stato degli ingressi e non dello stato degli ingressi in istanti precedenti. Sono i cosiddetti gate "senza memoria", usati ad esempio nelle ALU delle CPU o in tutti i circuiti che richiedono una logica combinatoria pura. Ma un sistema elettronico digitale relativamente più complesso richiede la presenza anche di elementi sequenziali, o "con memoria", usati sia per costruire le memorie del sistema, sia per eseguire operazioni logico-aritmetiche più complesse e dipendenti anche dallo stato degli ingressi agli istanti precedenti. La memoria si ottiene integrando ad una logica combinatoria simile a quelle esaminate finora un elemento in grado di memorizzare un certo stato elettrico e mantenerlo, detto generalmente registro. Il registro va generalmente posto in retroazione alla logica combinatoria, in modo tale che riporti in ingresso lo stato delle uscite.

Il tipo più elementare di entità elettronica in grado di mantenere memoria degli stati precedenti è il flip flop. Un elementare flip flop può essere implementato semplicemente attraverso due inverter CMOS in cascata e in retroazione:

La memoria viene preservata grazie alla retroazione (la tensione all'uscita del secondo inverter, vo2, è pari alla tensione in ingresso al primo inverter, vi1, quindi il valore logico in uscita è sempre mantenuto pari a quello in ingresso). Tale circuito, molto elementare, è il fondamento su cui ogni circuito di memorizzazione si basa per immagazzinare un bit. Per un'analisi dinamica consideriamo la sovrapposizione delle curve caratteristiche dei due inverter, considerando per il primo la tensione di uscita vo1 in funzione di quella di ingresso vi1, e per il secondo la tensione di ingresso vi2 in funzione della tensione di uscita vo2. Come abbiamo già visto quando abbiamo preso in esame gli inverter CMOS, la sovrapposizione delle curve caratteristiche sarà qualcosa del genere:

I punti di lavoro del circuito sono i punti di intersezione fra le due curve. Tuttavia, come già sappiamo dall'esame degli inverter CMOS, il punto C è un punto in realtà semi-stabile, in quanto appartiene alla zona di transizione dei due inverter. Ciò vuol dire che la tensione di uscita del circuito rimane in teoria stabile per un valore della tensione di ingresso esattamente pari a quella del punto C, ma una variazione anche minima della tensione di ingresso provoca ampi scostamenti della tensione di uscita del punto C, e uno spostamento verso i punti A e B. Ciò è dovuto, come è noto dall'analisi dell'inverter CMOS, dall'elevato guadagno (>> 1), ovvero del rapporto fra la tensione di uscita e quella di ingresso, dell'inverter nella sua zona di transizione, che porta un qualsiasi punto di lavoro all'interno di tale regione a "scivolare" verso i punti stabili A e B (con guadagno < 1). Gli unici punti stabili del sistema sono quindi A e B, e qualsiasi piccolo scostamento del punto di lavoro da tali punti riporta il punto a "scivolare" verso A o B. Il sistema esaminato è quindi bistabile e con memoria.
[modifica] Flip-flop SR
Un flip-flop di tipo SR è un circuito molto utilizzato in elettronica digitale per memorizzare lo stato corrente. Si tratta fondamentalmente di un circuito con due ingressi (segnali di Set e Reset) e due uscite (l'uscita Q e la sua negata versione #Q). Quando il segnale S è attivo, l'uscita Q viene "settata" a 1 (e di conseguenza #Q a 0), mentre quando il segnale R è attivo l'uscita Q viene "resettata" a 0 (e di conseguenza #Q a 1), mentre invece quando sono entrambi nulli il circuito è in fase di memorizzazione, mantenendo lo stato di Q e #Q ottenuto in precedenza. La sua implementazione, attraverso dei gate NOR, è la seguente:

Ovviamente la configurazione in cui sia il segnale di set che di reset sono alti non ha senso e non conduce a uno stato delle uscite consistente.
Il circuito è risolto dalle seguenti relazioni logiche:
Q = #Q NOR R
#Q = Q NOR S
L'operatore NOR ritorna 1 solo se entrambi i suoi ingressi sono settati a 0. Per la prima relazione vediamo quindi che Q = 1 solo quando il segnale di reset è settato a 0 e quando #Q allo stato precedente è settato a 0. Allo stesso modo, dalla seconda relazione ricaviamo che #Q è settato a 1 solo quando il segnale di set è disattivo e Q è al livello logico basso. Se dovesse capitare che entrambi i segnali (set e reset) fossero settati a 1, allora dalle due relazioni logiche di sopra avremmo che Q=0 e #Q=0, e questo è logicamente assurdo, e potrebbe causare problemi di consistenza ai dispositivi logici connessi a valle del circuito. È quindi compito del progettista assicurarsi che a monte del circuito i segnali S ed R non arrivino entrambi settati a 1.

