ELABORATORI ELEMENTARI A UNO E DUE BIT
Un elaboratore elementare ad un singolo bit può essere così schematizzato:


Si definisce elaboratore elementare un qualsiasi dispositivo (anche una persona) che ricevuta un'informazione elementare la CONFERMA o la NEGA.

CONFERMA
Segnale in Ingresso Segnale Elaborato
0 0 (FALSO)
1 1 (VERO)
NEGAZIONE
Segnale in Ingresso Segnale Elaborato
0 1 (VERO)
1 0 (FALSO)

Se i bit in ingresso in un elaboratore elementare fossero 2 avremmo il seguente schema

con le seguenti 16 possibilità:

a b 1 2
Nand
3
Imp
4 5 6 7
Xnor
8
Nor
9
Or
10
Xor
11 12 13 14 15
And
16
0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

Alcuni degli elaboratori elementari a due bit sono del tutto inutili come il primo e l'ultimo (l'uscita è indipendente dall'ingresso) Altri invece ricoprono un ruolo importante nella progettazione dei circuiti logici che stanno alla base del funzionamento di un elaboratore. Vediamoli in dettaglio:
 
PORTA NOT
I circuiti più semplici che si possono costruire sono composti da una pila, una lampadina ed un interruttore. Esistono due tipi di circuiti semplici: i circuiti di conferma e i circuiti di negazione. Il circuito di conferma è molto semplice: quando l'interruttore è sollevato (posizione zero) la lampadina è spenta (valore 0), quando l'interruttore è abbassato la lampadina è accesa (valore 1). Vediamo ora la negazione (porta NOT), che è detta anche inversione o complementazione.
La lampadina si accende quando  l'interruttore sollevato (posizione 0), ma si spegne se si abbassa l’interruttore poichè si cortocircuita la lampadina (posizione 1). La resistenza a destra della pila è necessaria per proteggere la pila, quando si abbassa l'interruttore.
Un semplice circuito NOT può essere implementato, nella sua forma più semplice, tramite un relè che è costituito da una bobina e da una barretta metallica. Se si fa passare la corrente attraverso la bobina, questa attrae la barretta provocando così l'apertura dell'interruttore. Il tempo necessario al relè per scattare da una una posizione all'altra è dell'ordine del centesimo di secondo. Le macchine di tipo elettromeccanico (come quelle a schede perforate) impiegano come elemento base il relè.
E' possibile implementare un circuito NOT con un transistor: se non c'è un segnale sulla base b (input) del transistor, la corrente va in uscita c (output) non potendo attraversare il transistor, altrimenti la corrente passa tra c ed e, dal collettore all'emettitore e il segnale non va in uscita c (output)
-+ No
+- Si
Un diodo è un dispositivo elettronico che può far scorrere la corrente in una direzione (Si) e bloccarla nella direzione opposta (No), secondo lo schema a fianco



Inverter, o Porta NOT
Tavola della Verità
A Not A
0 1
1 0


PORTA OR e NOR (NOT OR)
La porta A OR B realizza l'unione logica ovvero risulta vera se una delle due premesse è vera.
 
Due interruttori in parallelo bastano per realizzare un circuito OR (+ e - sono i collegamenti alla pila che non è disegnata)
Ecco l'animazione del circuito NOR
Con due transistor dipende da dove si preleva il segnale in uscita per ottenere una porta OR oppure una porta NOR.:


2-input OR gate
Tavola della Verità
A B A OR B A NOR B
0 0 0 1
0 1 1 0
1 0 1 0
1 1 1 0


2-input NOR gate

 

PORTA AND e NAND (NOT AND)
La porta A AND B realizza la congiunzione logica ovvero risulta vera se tutte e due le premesse sono vere.
 
Due interruttori in serie bastano per realizzare un circuito AND (+ e - sono i collegamenti alla pila non disegnata)
 
Ecco l'animazione del circuito NAND

 


2-input AND gate
Tavola della Verità
A B A AND B A NAND B
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 0


2-input NAND gate


PORTA IMP
L'implicazione è falsa solo se da una premessa vera consegue il falso. A => B va letto "A implica B", oppure "se A ... allora B".
Ecco ora l'animazione del circuito IMP


2-input impl gate
Tavola della Verità
A B A IMP B
0 0 1
0 1 1
1 0 0
1 1 1


PORTA XOR e XNOR (o EQUIV)
La porta logica di equivalenza: "A equivale a B" restituisce vero solo se entrambe le proposizioni sono vere o entrambe false. In matematica ha il significato di: "se e solo se", "solo nel caso che", "condizione necessaria e sufficiente". Il circuito che realizza l'equivalenza logica è EQUIV o XNOR detto anche circuito di parità, cioè se i bit in ingresso sono in numero pari, il risultato è 1 logico, se dispari 0. La sua negazione rappresenta l'alternativa logica: o uno o l'altro ma non tutti e due ne nessuno dei due. Il circuito che la realizza si chiama XOR, che è un'abbreviazione di eXlusiveOR. L'equivalenza naturalmente è a la negazione dell'alternativa perciò il circuito che la realizza è detto XNOR. La porta logica XOR risulta importante poiché è utilizzata per implementare il circuito sommatore.

Questo circuito elettrico rappresenta l'XOR


XOR gate
Tavola della Verità
A B A XOR B A XNOR B
0 0 0 1
0 1 1 0
1 0 1 0
1 1 0 1


XNOR gate


PORTA NAND O UNIVERSALE
La porta NAND è detta universale poiché è possibile implementare tutte le altre porte logiche utilizzando circuiti composti solo da porte NAND




Porta NOT con Nand
Porta NOT





XOR basata su porte NAND
Porta XOR





OR basata su porte NAND
Porta OR





IMP basata su porte NAND
Porta IMP
Porta XNOR
Porta AND
Porta NOR

CONVERTITORE DECIMALE/BINARIO
Ecco ora un circuito che permette di convertire un numero decimale in binario, più o meno simile ai circuiti inseriti nella tastiera di un computer. I tasti s1, s2 ... puoi immaginarli come i tasti numerici della tastiera. Bastano 4 porte NAND per fare la conversione con l'aiuto di qualche diodo. I diodi sono un po' come le valvole della camera d'aria della tua bicicletta che fanno entrare l'aria ma non la fanno uscire.
ADDIZIONATORE
Un circuito che serva per addizionare due soli bit è detto semiaddizionatore (half adder). Per poter costruire un semiaddizionatore dovremo procurarci degli interruttori speciali di tipo a contatti multipli (vedi figura in basso). Quando la levetta del primo è sollevata (posizione 0 logico), si apre il circuito in alto, si chiude il circuito centrale e si apre il circuito in basso; abbassandola (posizione 1 logico) si chiude il circuito in alto ed in basso e si apre il circuito al centro.
Oppure utilizzando le porte logiche AND e XOR precedentemente analizzate. Il circuito logico sottostante è detto half adder.





Half Adder Circuit
Tavola della Verità Half Adder
A B Sum Curry
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

 

Per sommare due numeri binari A e B occorre sommare i singoli bit Ai e Bi con dispositivi di tipo half adder tenendo presente anche gli eventuali riporti Ri. Il riporto deve essere addizionato ai due bit Ai+1 e Bi+1 in ingresso situati nella posizione immediatamente successiva. Perciò solo il primo addizionatore è composto da un half adder, gli altri sono composti da due half adder collegati da una porta logica OR:
che corrisponde al seguente circuito. Tale circuito è detto Full Adder







Full Adder Circuit
che ha la seguente tavola della Verità:
 
Tavola della Verità Full Adder
Ai Bi Curryi-1 Sumi Curryi
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
 
Per sommare due numeri binari A e B di 4 bit il circuito avrà la seguente fisionomia:
 
MEMORIZZARE DEI DATI
Il più semplice dispositivo di memoria è il flip-flop Set-Reset. Esso possiede due ingressi denominati Set e Reset ed una uscita indicata con Q. 
I circuiti digitali che realizzano il flip flop sono dotati, spesso, anche dell’uscita Q . 
Occorre precisare, inoltre, che in un dispositivo di memoria, l’uscita dipende non solo dalla particolare combinazione assunta dalle variabili di ingresso ma anche dallo stato precedente assunto dall’uscita Q. Tale stato precedente verrà indicato con Qo.
Flip-flop SR con porte NOR
Alla luce di quanto detto si mostra in figura 1 il simbolo logico, la tabella della verità e la soluzione circuitale a porte logiche NOR di un flip-flop S-R.

Vediamo ora come un calcolatore può memorizzare dei dati.
Il flip-flop è un circuito che costituisce una memoria elementare. Ha due ingressi detti: Set e Reset e due uscite Q e Q negato. Un impulso su Set mette il flip-flop nello stato caratterizzato da Q=1 e  Q=0. Tale stato permane finché non viene dato un impulso su Reset lo porta allo stato con Q=0 e Q=1. Lo schematizziamo in questo modo:


Combinazione SR=00.
Essa è nota come combinazione di riposo poiché l’uscita conserva lo stato precedente (Q=Qo).

Combinazione SR=01.
Ponendo R=1, l’uscita Q si porta a 0 indipendentemente dallo stato precedente.

Combinazione SR=10.
Ponendo S=1, l’uscita Q si porta a 1 indipendentemente dallo stato precedente.

Combinazione SR=11.
Tale combinazione va evitata poiché da un punto di vista logico è una incongruenza: infatti non ha senso comandare il flip-flop per memorizzare lo 0 (R=1) oppure l’1 (S=1).

Tale flip-flop viene spesso utilizzato per funzionare nel modo seguente.
Se si vuole memorizzare 1 si pone: S=1 e R=0. Successivamente si torna nello stato di riposo: S=0 e R=0. In tal caso l’uscita conserva lo stato precedente: Q=Qo=1.
Se si vuole memorizzare 0 si pone: S=0 e R=1. Successivamente si torna nello stato di riposo: S=0 e R=0. In tal caso l’uscita conserva lo stato precedente: Q=Qo=0.

Verifichiamo, infine, che il circuito realizzato con le porte NOR in figura 1 si comporta da flip-flop S-R.
Dobbiamo ricordare, a tal fine, la tabella della verità della porta NOR (somma logica negata).

Ponendo S=0 e R=1 si deve verificare che Q=0. Infatti l’uscita Q della porta 2 va a 0 poiché l’ingresso R=1.
La porta 1 risulta pilotata con gli ingressi uguali a 0 per cui la sua uscita va a 1. Si noti che le due uscite sono complementari tra loro.
Torniamo nella combinazione di riposo portando R=0 e lasciando S=0.
Poiché l’uscita Q precedentemente era stata portata a 0 (Qo=0), l’uscita della porta 1 rimane a 1 e di conseguenza l’uscita della porta 2 rimane a 0 (Q=0).

Poniamo, ora: S=1 e R=0. L’uscita della porta 1 va a 0 e di conseguenza, poiché R=0, l’uscita della porta 2 si porta a 1: Q=1.
Torniamo nella combinazione di riposo portando S=0 e lasciando R=0.
Poiché l’uscita Q precedentemente era stata portata a 1 (Qo=1), l’uscita della porta 1 rimane a 0 e di conseguenza l’uscita della porta 2 rimane a 1 (Q=1).

Se, infine applichiamo S=1 e R=1, le uscite di entrambe le porte andranno a 0. Conseguenze: le due uscite, in questo caso, non sono più l’una il complemento dell’altra, ed inoltre portando contemporaneamente S ed R a 0 entrambe le uscite si porteranno ad 1 e poi a 0 e così via. In realtà, a causa dei diversi tempi di ritardo di propagazione del segnale elettrico in ciascuna porta, uno dei due NOR propagherà l’1 in uscita prima dell’altra porta. In conclusione diventa aleatorio il valore dell’uscita Q che, pertanto, potrà trovarsi o a 0 o a 1. Anche per questo motivo è bene evitare l’applicazione dell’ultima combinazione della tabella della verità: S=1 e R=1.

Flip-flop a porte NAND

Qui gli ingressi si comportano come gli ingressi S ed R del precedente flip-flop a porte NOR con la differenza che gli ingressi sono attivi in logica negativa. In altre parole i flip-flop di fig.1 e di fig.2 coincidono nella funzione logica purché si ponga:

A = S , B = R
Per realizzarlo occorrono due transistor, anche se è possibile realizzarlo con due porte NAND.





Flip-Flop Circuit
Tavola della Verità Flip-Flop SR con porte NAND
S R Q Descr.
1 1 Q hold
0 1 1 set
1 0 0 reset
0 0 ? proibito

Il circuito evolve in accordo con le seguenti specifiche:
1) quando lo stato d'ingresso è S=0 e R=1 il flip-flop si setta, cioè porta a 1 il valore della variabile d'uscita Q;
2) quando lo stato d'ingresso è S=1 e R=0 il flip-flop si resetta cioè porta a 0 il valore della variabile d'uscita Q;
3) quando lo stato d'ingresso è S=1 e R=1 il flip-flop conserva, cioè mantiene inalterato il valore di entrambe le variabili d'uscita. Quindi quando entrambi i valori R e S sono alti, il flip-flop si trova nello stato neutro e mantiene il valore delle uscite, ovvero si dice che "fa memoria" (mantiene cioè in uscita il dato precedente memorizzato).
4) Quando invece entrambi gli ingressi hanno valore 0, si ha Q e Q entrambe a 1. Tale combinazione è considerata proibita nel Flip-Flop RS.
La condizione Set significa che viene disposto l'output Q a 1. In modo analogo, la condizione reset significa ridisporre (cancellando) l'output Q a 0
Il circuito evolve in accordo con le seguenti specifiche:
1) quando lo stato d'ingresso è S=0 e R=1 il flip-flop si setta, cioè porta a 1 il valore della variabile d'uscita Q;
2) quando lo stato d'ingresso è S=1 e R=0 il flip-flop si resetta cioè porta a 0 il valore della variabile d'uscita Q;
3) quando lo stato d'ingresso è S=1 e R=1 il flip-flop conserva, cioè mantiene inalterato il valore di entrambe le variabili d'uscita. Quindi quando entrambi i valori R e S sono alti, il flip-flop si trova nello stato neutro e mantiene il valore delle uscite, ovvero si dice che "fa memoria" (mantiene cioè in uscita il dato precedente memorizzato).
4) Quando invece entrambi gli ingressi hanno valore 0, si ha Q e Q entrambe a 1. Tale combinazione è considerata proibita nel Flip-Flop RS.
La condizione Set significa che viene disposto l'output Q a 1. In modo analogo, la condizione reset significa ridisporre (cancellando) l'output Q a 0

Flip-flop sincronizzati

Spesso l’eventuale cambiamento di stato di un flip-flop non si fa coincidere con l’istante in cui si modificano i valori dei bit di ingresso ma con l’istante in cui un ulteriore ingresso, detto ingresso di sincronismo o ingresso di clock e denominato con la sigla CK, va da 1 a 0 oppure da 0 a 1.
Un flip-flop che funziona col clock prende il nome di flip-flop sincronizzato.
I flip-flop esaminati nelle figure 1e 2, invece, essendo privi di ingresso di clock, sono denominati flip-flop Set Reset asincroni.

Il flip-flop si dice attivo sul livello quando il clock è caratterizzato da un livello logico (0 o 1) applicato all'omonimo ingresso.
Il flip-flop si dice attivo su fronti (edge triggered) quando l'eventuale modifica dello stato di uscita dipende dal fronte positivo o di salita (PET = Positive Edge Triggered) o dal fronte negativo o di discesa (NET = Negative Edge Triggered).
Sui dice, anche, che l'uscita si aggiorna nel:

PET quando il clock passa da 0 a 1;

NET quando il clock passa da 1 a 0.
 
Fig.3 - Flip-flop sensibili ai livelli ed alle transizioni. 
Il flip-flop "a" è sensibile al livello logico 1 e funziona nell'intervallo di tempo t. 
Il flip-flop "b" è sensibile al livello logico 0 durante il tempo t. 
Il flip-flop "c" è di tipo PET e funziona solo nell'istante t1. 
Il flip-flop "d", infine, è di tipo NET e funziona solo nell'istante t1.


Flip-flop S-R sincronizzato
In fig.4 si mostra lo schema logico del flip-flop Set Reset sincronizzato. Esso è costituito da due porte logiche NAND, dette porte pilota, e da altre due porte NAND che realizzano il flip-flop S R vero e proprio del tipo mostrato nella precedente fig.2.

Se il clock CK è al livello logico 1 le porte pilota si comportano da NOT e quindi gli ingressi S ed R sono effettivamente coincidenti con gli omonimi ingressi del generico flip-flop Set Reset.

Se, invece, il clock CK è al livello logico basso, le uscite delle due porte pilota sono al livello logico 1 indipendentemente dai valori applicati agli ingressi S e R. Per tale combinazione la "latch" a porte NAND conserva lo stato precedente e quindi il flip flop è insensibile ai comandi esterni applicati.

Nella tabella della verità si riporta l'uscita futura Qn+1 in funzione del clock, degli ingressi S ed R e dallo stato presente Qn.

X rappresenta indifferentemente sia lo stato logico 0 che lo stato logico 1.

 

CK S R Qn Qn+1
0 X X 0 0
0 X X 1 1
1 0 0 0 0
1 0 0 1 1
1 0 1 0 0
1 0 1 1 0
1 1 0 0 1
1 1 0 1 1
1 1 1 da evitare
 

Fig.4. - Flip-flop SR sincronizzato con porte NAND. 
U1A e U1B costituiscono le porte pilota. 
Le porte U1C e U1D rappresentano il flip-flop vero e proprio. 
Con Qbar si indica l'uscita Q (Q barrata).

Flip-flop JK

Il flip-flop JK è un dispositivo a due entrate denominate J e K che operano in modo analogo alle entrate S ed R di un flip-flip Set Reset con la differenza che se : J=1 e K=1 l’uscita commuta, cioè se lo stato presente è 0, lo stato futuro è 1 e viceversa.
Per evitare commutazioni multiple, nel caso si lasci a lungo la combinazione J=1 e K=1, tale flip-flop deve essere necessariamente sincronizzato.

 

J K Qn Qn+1
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0

Flip-flop JK e tabelle della verità. A destra si mostra la tabella della verità che prescinde dalla presenza del clock e che mostra l'uscita futura in presenza degli ingressi esterni J e K e dallo stato presente Qn.

In fig.5 si mostrano due flip-flop JK sincronizzati. Il primo adegua le uscite quando al clock si applica un segnale digitale che passa da 0 a 1 (transizione positiva indicata con una freccia verso l’alto nella tabella della verità). Il secondo adegua le uscite quando al clock si applica un segnale digitale che passa da 1 a 0 (transizione negativa indicata con una freccia verso il basso nella tabella della verità).

Il primo flip flop JK si dice di tipo PET (Positive Edge Triggered), il secondo, invece, si dice di tipo NET (Negative Edge Triggered).

I flip-flop JK si realizzano con una soluzione circuitale costituita da porte logiche secondo uno schema interno più complesso rispetto a quello visto per il flip-flop SR realizzato a porte NOR e a porte NAND.

Si mostrano, in fig.6, i simboli logici e le tabelle della verità di due diversi flip-flop JK, il primo di tipo PET ed il secondo di tipo NET, con ingressi asincroni di preset (PRE) e di clear (CLR).

Fig.6 - Simbolo del flip-flop JK PET e relativa tabella della verità ( a sinistra); 
simbolo del flip-flop JK NET e relativa tabella della verità ( a destra). 
Si noti il simbolo del clock nei due casi. 
La maggior parte dei flip-flop integrati presentano, inoltre, ingressi asincroni di preassegnazione a 1 (PRE) e/o di azzeramento (CLR clear). 
Quelli indicati in figura sono attivi bassi: se, ad esempio, si applica un livello logico basso sulla linea PRE, il flip-flop memorizza 1 indipendentemente dal clock; se, invece, si applica un livello logico basso sulla linea CLR, il flip-flop memorizza 0 indipendentemente dal clock.

Flip-flop D

Presenta un solo ingresso denominato D. Spesso è di tipo sincronizzato e funziona nel seguente modo: quando è attivo l’ingresso di clock l’uscita assume lo stesso valore applicato all’ingresso D. In assenza di comando di clock l’uscita conserva lo stato precedente indipendentemente dal valore applicato all’ingresso D.
In fig.7 si mostra il simbolo logico e la tabella della verità del flip –flop D.
Il flip-flop D rappresenta l’elemento fondamentale delle memorie centrali degli elaboratori ( almeno a livello concettuale).

Flip-flop T
E' un flip-flop avente una sola entrata denominata T e le solite due uscite: Q e la sua complementata Q.
L'uscita Q conserva lo stato precedente se T=0 e commuta se T=1 quando si applica il segnale di clock.
I flip-flop T, al contrario dei JK, D e SR, non sono disponibili commercialmente in forma integrata poiché si possono ottenere direttamente dai flip-flop JK semplicemente collegando tra loro gli ingressi J e K.
E' utilizzato come dispositivo divisore di frequenza di clock per due e nei contatori digitali.
Si mostra in fig.8 il collegamento di un flip-flop NET di tipo JK per ottenere un flip-flop di tipo T e la relativa tabella della verità.

Fig.8 -   Simbolo del flip-flop T e relativa tabella della verità. 
Dalla tabella si nota che solo quando il clock passa dal livello logico alto al livello logico basso si ha:
 Qn+1=Qn se T=0 e Qn+1=Qn  se T=1.


per approfondire vedere: http://digilander.libero.it/panetti/digitale/flip_flop.htm