# Flip-flop

In elettronica digitale, il flip-flop è uno dei più importanti circuiti logici sequenziali sincroni. Costituisce una delle possibili implementazioni della cella di memoria elementare, ed è un elemento essenziale alla realizzazione di tutte le reti logiche sequenziali. È importante non confondere il flip-flop con il latch: un circuito asincrono con la stessa funzione.
Il nome deriva dal rumore che facevano i primi circuiti elettronici di questo tipo, costruiti con dei relè che realizzavano il cambiamento di stato.
Per definizione il flip-flop rientra nella categoria dei multivibratori bistabili: è cioè un dispositivo caratterizzato da esattamente due stati stabili tra i quali può transire a comando. Questo lo rende adatto come cella di memoria, in quanto l'insieme delle configurazioni di output codifica esattamente 1 bit di informazione.
Diversamente dal latch, il flip-flop è un dispositivo sensibile unicamente allo stato del segnale di sincronizzazione, in particolare durante le sue fasi transitorie. In generale questo vuol dire che una transizione dello stato di uscita può essere innescata solamente mentre il segnale si trova a sua volta in uno stato di transizione. Questa caratteristica risulta altamente desiderabile poiché, previa accurata temporizzazione del circuito, consente di ignorare tutta una serie di stati indesiderati in cui potrebbero venirsi a trovare il resto degli ingressi durante la normale operazione. Questo rende i flip-flop un'alternativa quasi universalmente preferibile ai latch.
Oltre che come memoria il flip-flop trova applicazione come meccanismo per la mitigazione delle alee nelle reti logiche multi-stadio e come dispositivo anti-rimbalzo nei circuiti che comprendono componenti elettromeccanici come pulsanti, interruttori e commutatori.

## Storia

Il primo latch elettronico è stato inventato nel 1928 dai fisici britannici William Eccles e F. W. Jordan. Originariamente chiamato "circuito trigger Eccles-Jordan", consisteva in due elementi attivi (valvole termoioniche). Il dispositivo è stato usato nel 1943 come parte del computer decifratore britannico Colossus. Circuiti del genere e le loro versioni a transistor rimasero di uso comune nella progettazione dei computer anche dopo l'introduzione dei circuiti integrati, sebbene oggi siano comuni anche latch e flip-flop realizzati con porte logiche. I primi latch erano conosciuti anche come "circuiti trigger" o multivibratori.
Secondo P. L. Lindley, un ingegnere al Jet Propulsion Laboratory (USA), i tipi di flip-flop illustrati più avanti (SR, D, T, JK) erano stati discussi per la prima volta in un corso di progettazione dei calcolatori tenuto all'UCLA nel 1954 da Montgomery Phister e sono successivamente apparsi nel suo libro Logical Design of Digital Computers. Lindley al tempo lavorava alla Hughes Aircraft Company sotto la supervisione di Eldred Nelson, che aveva coniato il termine JK per un flip-flop che cambiava stato quando entrambi gli ingressi erano attivi. Gli altri nomi sono stati coniati da Phister. Essi differiscono leggermente da alcune delle definizioni date di seguito. Lindley spiega che ha sentito la storia del flip-flop JK da Eldred Nelson, che è responsabile per l'invenzione del termine mentre lavorava alla Hughes Aircraft. I flip-flop in uso alla Hughes al tempo erano tutti del tipo che sarebbe stato conosciuto come J-K. Nel progettare un sistema logico Nelson assegnava lettere agli ingressi dei flip-flop nel modo seguente: #1: A & B, #2: C & D, #3: E & F, #4: G & H, #5: J & K. Nelson ha usato le notazioni "j-input" e "k-input" in una richiesta di brevetto presentata nel 1953.

## Flip-flop SR

Il Flip-flop SR, è un'estensione di Latch SR sincronizzato da un segnale di Clock che, al contrario del Latch SR, permette di memorizzare uno stato.
Quando il circuito riceve un segnale di Clock: "0", qualsiasi siano i segnali S R, lo stato rimane invariato; invece quando, riceve un segnale di Clock: "1" il circuito segue la stessa logica del latch SR.

## Flip-flop JK

È caratterizzato da due ingressi, due uscite complementari e un ingresso di sincronizzazione. Ha funzioni di memoria, reset, set. A differenza dei Flip-flop SR non ha stati proibiti, ovvero le due entrate possono assumere qualsiasi valore (0-0,0-1,1-0,1-1).
Equazione caratteristica: Q+ = KnQ + JQn
Tabella di verità
| J | K | Q+ | Qn+ | Descrizione |
| 0 | 0 | Q | Qn | Memoria (nessun cambiamento) |
| 0 | 1 | 0 | 1 | Reset |
| 1 | 0 | 1 | 0 | Set |
| 1 | 1 | Qn | Q | Toggle (complemento) |
Quindi, quando J e K valgono entrambi 1, le uscite vengono completamente scambiate (ossia se erano 1 diventano 0 e viceversa), trasformandosi in un flip-flop T; quando valgono zero, vengono mantenute in memoria.

## Flip-flop T (toggle)

Ha un ingresso, due uscite complementari e un ingresso di sincronizzazione. Ha funzioni di memoria e toggle, che consiste nella negazione del valore precedentemente memorizzato. Può venir realizzato con un flip-flop JK, con i due ingressi J e K collegati assieme e formanti quindi l'ingresso T.
Equazione caratteristica: Q+ = TnQ + TQn = T ⊕ Q
Proprietà: Se T=1 l'uscita Q ha frequenza dimezzata rispetto al clock.
Applicazioni: È il componente base dei contatori, infatti collegando a cascata vari flip-flop T ad ogni uscita si ottiene un clock dimezzato rispetto al clock precedente.

## Flip-flop D

Ha un ingresso per il dato, un ingresso di sincronizzazione e un'uscita. In corrispondenza di un fronte di clock, trasferisce l'ingresso in uscita e ve lo mantiene fin quando non cambia il suddetto ingresso.

## Flip-flop MS

La realizzazione di questo tipo di flip-flop può essere effettuata ponendo in modalità master-slave due Latch D, negando l'ingresso E del primo flip-flop nel caso in cui si volesse un FF-D pilotato sul fronte di salita, mentre negando il secondo nel caso in cui si volesse realizzare un FF-D di tipo pilotato sul fronte di discesa.

## Circuiti integrati flip-flop

Sono disponibili circuiti integrati che contengono flip-flop singoli oppure multipli. Ad esempio il flip-flop di tipo D è disponibile come integrato con otto unità logiche ma con l'ingresso di clock in comune. Generalmente non sono disponibili in commercio flip-flop di tipo T, poiché sono facilmente realizzabili utilizzando un flip-flop JK con i due ingressi collegati tra di loro.