Algebre booleane e progetto logico dei calcolatori digitali/Circuiti logici e di memoria
Rappresentazione di una informazione digitale
[modifica | modifica sorgente]Struttura fondamentale dei circuiti digitali
[modifica | modifica sorgente]Si distinguono nei circuiti digitali, tre tipi fondamentali:
- Circuiti di memorizzazione: cioè capaci di ricevere, conservare, restituire i segnali delle informazioni.
- Circuiti operatori: cioè capaci di realizzare le funzioni booleane a partire dai segnali delle informazioni.
- Circuiti di connessione: cioè capaci di trasferire i segnali.
![](http://upload.wikimedia.org/wikipedia/commons/0/00/Rappresentazione_di_una_informazione_digitale.png)
Nella forma più semplice la struttura unitaria è composta di:
- due circuiti di memorizzazione (A,B) in cui sono conservate delle informazioni (I1,I2) e capaci di emettere i corrispondenti segnali (i1,i2).
- un operatore capace di realizzare la funzione dei segnali tali che:
- un circuito di memorizzazione (C) che riceve il segnale (i3) emesso dall'operatore e capace di conservare l'informazione corrispondente I3.
- connessioni tra questi circuiti.
Un segnale i, rappresentativo di una informazione I, sarà una grandezza fisica suscettibile di assumere nel tempo due diversi valori determinati dai circuiti emettitori e operatori.
Si cercano in genere quei dispositivi, legati a grandezze fisiche, capaci di assumere due distinti stati di equilibrio stabile.
Una generica informazione sarà rappresentata da un insieme di segnali elementari. Nei calcolatori elettronici moderni i segnali rappresentativi delle informazioni sono generalmente costituiti da tensioni o correnti elettriche.
- -Segnali elettrici rappresentativi delle informazioni.
Precisiamo il senso booleano che si può attribuire ad un segnale trasmesso nell'insieme dei componenti di un calcolatore digitale. Consideriamo un segnale elettrico variabile nel tempo (ad esempio, una tensione): A=V(t).
Consideriamo due livelli di riferimento m0 e m1 con la seguente convenzione sulla informazione binaria contenuta in V(t):
Naturalmente le cifre binarie 0 ed 1 non implicano che l'informazione sia espressa nella base 2, ma solo che l'informazione è espressa in un linguaggio a due distinti valori che potrebbero essere rappresentati dagli elementi di una generica coppia (+,-), (0,-).
La differenza fra i due livelli è determinata dal potere risolutivo degli strumenti e determina a sua volta la differenza fra massima e minima ampiezza dei possibili segnali.
![](http://upload.wikimedia.org/wikipedia/commons/8/80/Segnale_elettrico_variabile_nel_tempo.png)
Considerando la figura 1.2 notiamo che, nel tempo, il segnale è:
- perfettamente definito in uno dei due possibili valori negli intervalli
- (t2,t3),(t6,t7),(t4,t5,t8),(t7),...
- indeterminato negli intervalli
- (t1,t2),(t3,t4),(t5,t6),(t7,t8),...
e di conseguenza il segnale deve essere utilizzato solo in istanti ben determinati dagli intervalli di ambiguità.
Strutture sequenziali
[modifica | modifica sorgente]L'analisi tecnica dell'andamento temporale del segnale, in funzione dei componenti del circuito e nelle condizioni più sfavorevoli, corrispondenti a zone di ambiguità di maggiore larghezza, permette di stabilire gli intervalli temporali entro i quali ha senso esaminare il valore dell'informazione.
Il succedersi, nel tempo, di questi intervalli, può essere regolare o irregolare. Nel secondo caso, si parla di circuiti asincroni ed è il funzionamento interno di ogni circuito che determina gli intervalli opportuni.
Più frequentemente si ha una ripetizione regolare nel tempo di tali intervalli (circuiti sincroni) con periodo Θ. Si può dire che, durante l'intervallo di tempo di un periodo binario, il segnale è atto a rappresentare una informazione binaria elementare. Oggi si superano valori di periodo corrispondenti ai 10 nano-secondi (=!0-9 sec).
Consideriamo adesso una informazione rappresentata da impulsi secondo la convenzione:
![](http://upload.wikimedia.org/wikipedia/commons/3/35/Temporizzatore.png)
- valore 1: presenza di impulso
- valore 0: assenza di impulso
cioè avendo sostituito alla nozione di livello rappresentativo quella di presenza o assenza di impulso.
Nella figura si è riportato un segnale ideale di impulso, cioè privo di zone di ambiguità, per mettere in evidenza che esistono altre cause per le quali il segnale è significativo solo in brevi intervalli di tempo, e cioè si deve escludere anche il tempo che il segnale impiega per ripristinare la condizione iniziale (eventuale ritorno a zero).
Gli intervalli di tempo significativi sono scanditi con un segnale di riferimento H, detto segnale di orologio. Si può aggiungere che il segnale di orologio è rappresentativo della tautologia.
Convenzioni della logica
[modifica | modifica sorgente]![](http://upload.wikimedia.org/wikipedia/commons/4/48/Livelli_logici.png)
La scelta che, nel caso appena visto, ha associato il valore 1 alla presenza di impulso è arbitraria. Distinguiamo una logica (intesa qui in pratica come metodo di realizzazione elettronica di operatori logici) positiva, relativa alla convenzione di associare il valore 1 al livello più alto (+) ed una logica negativa alla convenzione il valore 0al livello inferiore (-).
In generale, se con una convenzione si ha funzione booleana, con la convenzione opposta si ha la funzione duale, infatti:
![](http://upload.wikimedia.org/wikipedia/commons/5/54/Porte_logiche_DIN.png)
Porte e livelli
[modifica | modifica sorgente]Ai circuiti che realizzano i vari operatori logici si dà il nome di porte. Nella figura si hanno il simbolo in standard DIN (acronimo di Deutsches Institut fuer Normun) di complementazione e quelli, pure in standard DIN, di AND, OR, XOR, NOR, NAND a tre ingressi.
Si dà il nome di livelli ai successivi stadi determinati dagli operatori elementari, attraverso i quali passa il segnale prima di giungere alla realizzazione del segnale risultante.
Considerando le funzioni booleane si vede che ad ogni livello si ha un cambiamento di forma (disgiuntiva o congiuntiva).
![](http://upload.wikimedia.org/wikipedia/commons/4/40/Funzione_booleana.png)
- Esempio: consideriamo la funzione
Si hanno 4 livelli e 7 porte:
La nozione di livello è molto importante dal punto di vista tecnico, essendo il numero dei livelli pari al numero massimo di porte attraversate successivamente da un segnale fornisce una stima del tempo di propagazione del segnale.
Notiamo infine che non tutti i segnali devono necessariamente percorrere lo stesso numero di livelli. In una tecnica sincrona è necessario per tenerne conto compensare le differenze con opportuni ritardi.
Ogni forma booleana elementare richiede, per essere realizzata, almeno due livelli di operatori elementari.
Circuiti combinatori e circuiti sequenziali
[modifica | modifica sorgente]![](http://upload.wikimedia.org/wikipedia/commons/5/5c/Circuiti_logici_equivalenti.png)
![](http://upload.wikimedia.org/wikipedia/commons/6/65/Circuiti_logici_equivalenti_%283%29_e_%284%29.png)
Un circuito di commutazione è un circuito i cui segnali seguono una logica a due valori, come nel caso booleano. Distinguiamo due tipi di circuiti: combinatori e sequenziali.
Un circuito combinatorio è un circuito tale che ad ogni insieme di stati d'ingresso completamente specificato fa corrispondere un ben determinato insieme di stati d'uscita. Ad uno stesso insieme di stati in uscita possono corrispondere più insiemi di stati in ingresso.
Ad esempio, i circuiti in figura (1), (2), (3) e (4):
Un circuito sequenziale è un circuito per il quale delle variabili interne, associate ad elementi di memoria, intervengono nella funzione di uscita. L'insieme degli stati di uscita è quindi una funzione non solo delle variabili di ingresso, ma anche degli stati precedenti.
Circuiti di memoria
[modifica | modifica sorgente]Introduzione del tempo nelle funzioni booleane
[modifica | modifica sorgente]La nozione del tempo è indissociabile dalla formulazione delle funzioni in dipendenza dalla evoluzione temporale delle operazioni.
Notiamo che l'algebra di Boole non permette di introdurre il tempo come variabile indipendente nella formulazione delle funzioni.
Ciò costituisce un inconveniente soprattutto nello studio dei circuiti sequenziali; per lo più si cerca di ricondurre lo schema di un circuito sequenziale a quello di un circuito combinatorio in cui gli insiemi di stato delle variabili sono legati da un ordine logico dipendente dal tempo.
Per lo studio dei circuiti digitali si opera una discretizzazione del tempo in intervalli (regolari o non). L'insieme di questi intervalli costituisce la sequenza temporale fondamentale:
- è l'istante attuale
- sono gli istanti precedenti
- sono gli istanti successivi
Ritardo
[modifica | modifica sorgente]Come prima conseguenza dell'introduzione del tempo, bisogna determinare dei circuiti atti a restituire una informazione in un intervallo di tempo diverso da quello della sua formazione.
Un primo procedimento di spostamento nel tempo di una informazione consiste nel fare percorrere al segnale rappresentativo, un elemento di ritardo tale che il segnale risultante sia sempre rappresentativo della stessa informazione:
Esprimiamo la funzione di ritardo tramite un operatore Δ che agisce sulla sequenza temporale:
![](http://upload.wikimedia.org/wikipedia/commons/a/a5/Operatore_%27delta%27_ritardante.png)
(essendo X il ritardo scritto in numero di periodi Θ della sequenza temporale) si ha:
L'operatore Δ è commutativo e associativo.
Funzioni sequenziali elementari
[modifica | modifica sorgente]Combinando l'operatore Δ con una generica operazione booleana si realizza una funzione sequenziale elementare, cioè una funzione booleana in cui il tempo interviene come variabile indipendente.
![](http://upload.wikimedia.org/wikipedia/commons/2/26/Funzione_sequenziale_elementare.png)
![](http://upload.wikimedia.org/wikipedia/commons/1/13/Tabella_della_verit%C3%A0_di_una_funzione_sequenziale_elementare.png)
Ad esempio:
Circuiti chiusi (o ad anello)
[modifica | modifica sorgente]La combinazione dell'operatore Δ e di operatori booleani conducono alla realizzazione di particolari funzioni sequenziali, in cui una delle variabili di ingresso è la funzione di uscita. La realizzazione pratica consiste in un circuito comprendente un percorso chiuso o anello, in cui una connessione riporta fra gli ingressi un valore di uscita (feedback).
Esempio 1:
![](http://upload.wikimedia.org/wikipedia/commons/6/6a/Crcuito_chiusi_o_ad_anello.png)
![](http://upload.wikimedia.org/wikipedia/commons/4/40/Tabella_funzione_sequenziale_a_cirfcuito_chiuso.png)
Questo circuito funziona da memoria.
Esempio 2:
Questo circuiti fornisce risposta affermativa in funzione della disparità della sequenza binaria A.
Memorie elementari
[modifica | modifica sorgente]![](http://upload.wikimedia.org/wikipedia/commons/0/06/Operatore_memoria_elementare.png)
Un secondo procedimento (cfr. il ritardo) di spostamento nel tempo di una informazione booleana consiste nel registrarne opportunamente il valore conservandolo in memoria.
Nel caso delle informazioni binarie elementari, questa funzione è svolta da un operatore logico detto memoria elementare.
I due segnali esterni, S ed R, impongono all'uscita Z i valori:
Questo elemento di memoria registra il valore di un segnale S e conserva un segnale rappresentativo di tale valore finché un segnale R non lo riporta a zero.
L'operatore quindi è suscettibile di:
- ricevere un segnale
- conservare il segnale ricevuto
- essere azzerato
Si suddividono i circuiti di memoria in due categorie in funzione delle strutture tecniche richieste:
- a) memorie elementari statiche: la cui realizzazione tecnica più usuale è il flip-flop (ved,§ 1.3.3).
- b) memorie dinamiche elementari: sono basate sulla presenza o assenza di circolazione di un impulso in un circuito di ritardo. Quindi, al contrario per esempio della linea di ritardo costituita da elementi bipolari, una memoria dinamica necessita di un circuito chiuso o ad anello.
Flip-flop S-R
[modifica | modifica sorgente]Dal punto di vista funzionale il F/F S-R presenta due ingressi detti S (Set) e R (Reset), e due uscite complementari Z e . Il funzionamento è il seguente:
- un segnale su S mette o lascia il F/F nello stato 1 (iscrizione dell'1)
- un segnale su R mette o lascia il F/F nello stato 0 (iscrizione dell'0)
- un segnale nullo lascia invariato il F/F
- la combinazione 11 in ingresso è proibita
Lo stato interno della memoria è accessibile mediante l'esame della combinazione di uscita fra le due possibili (01 e 10). Si può introdurre anche una variabile di stato interno Q e si hanno le due possibili scelte:
Assumendo Q=Z il funzionamento di un F/F S-R è rappresentato nella tabella seguente:
![](http://upload.wikimedia.org/wikipedia/commons/9/9b/Flip-Flop_S-R.png)
Risulta:
Se inoltre la combinazione logica S_nR_n=1 (corrispondente alla combinazione 3 e 7 della tabella) è resa materialmente impossibile si può fare uso dei termini eliminati per minimizzare ulteriormente l'espressione, ottenendo:
Flip-flop J-K
[modifica | modifica sorgente]Si comporta come un F/F S-R con J ingresso di set. È però ammessa la combinazione 11 in ingresso e l'effetto è quello di far cambiare lo stato interno. Risulta quindi:
Flip-flop T
[modifica | modifica sorgente]![](http://upload.wikimedia.org/wikipedia/commons/6/60/Operatore_memoria_elementare_per_Flip_Flop_T.png)
![](http://upload.wikimedia.org/wikipedia/commons/1/18/Tavola_della_verit%C3%A0_per_Flip-Flop_tipo_T.png)
È un flip-flop a un solo ingresso T e tale da cambiare stato ad ogni segnale in ingresso.
Zn+1=Tn⊕Zn
Memorie elementari dinamiche
[modifica | modifica sorgente]Flip-flop dinamico di tipo S-R
[modifica | modifica sorgente]Consideriamo il circuito in figura . I segnali d'ingresso arrivano in S e in R, l'ingresso H è quello dell'orologio: il segnale applicate consiste in una successione regolare di impulsi. In uscita della porta OR si trova un ritardo δ pari al periodo dell'orologio.
![](http://upload.wikimedia.org/wikipedia/commons/1/18/Memoria_dinamica-Flip-Flop_S-R.png)
In tal modo il circuito funzione come un flip-flop a due stati caratterizzati dalla presenza o dall'assenza di una ricircolazione di un impulso nel percorso chiuso abcda.
Consideriamo per esempio uno stato iniziale caratterizzato dall'assenza di impulso in abcda.
Un impulso su S in sincronismo con H ricircola con periodo δ finché non arriva un impulso in R(con cui si blocca il rientro dell'impulso) e questo sia che si applichi o no degli impulsi in S. Viceversa, se si applica un impulso su R in sincronismo con H, l'impulso circolante che si trova in a non può rientrare nell'anello e la ricircolazione è interrotta. Si è così ritornati allo stato iniziale. Questo è il funzionamento del F/F di tipo S-R descritto prima, a parte il fatto che è permessa la combinazione di ingresso S=1, R=1 per Zn=0, 1 con Zn+1=1. Ciò permette di utilizzare la seconda espressione minimizzata trovata per il F/F S-R e, aggiungendo la variabile Hn rappresentativa dell'orologio si verifica che il circuito fornisce la:
Flip-flop dinamico tipo T
[modifica | modifica sorgente]![](http://upload.wikimedia.org/wikipedia/commons/e/ef/Memoria_dinamica-Flip-Flop_T.png)
Con la medesima convenzione fatta per il flip-flop SR si ha, per il circuito a lato,
![](http://upload.wikimedia.org/wikipedia/commons/6/66/Esempio_sequenza_di_ingresso_e_di_uscita_per_un_Flip-Flop.png)
che realizza un flip-flop di tipo T. L'uscita Z, quando si applica un impulso in T, vale 1 ogni due impulsi, realizza quindi un divisore per due:
sequenza d'ingresso e di uscita per un flip-flop di tipo T con stato interno inizialmente nullo.
Circuito dinamico di ritardo
[modifica | modifica sorgente]![](http://upload.wikimedia.org/wikipedia/commons/2/20/Ritardo_di_sequenza.png)
![](http://upload.wikimedia.org/wikipedia/commons/a/a1/Circuito_di_ritardo_dinamico.png)
Il circuito in figura fornisce in uscita una sequenza uguale a quella in ingresso, ma ritardata di un periodo di orologio.
Un impulso 1 in ingresso pone in 1 il flip-flop: l'impulso in uscita viene ritardato di un periodo e passa, in sincronia con l'impulso di orologio, per la porta di AND. L'uscita è l'impulso ritardato. Questo impulso di uscita viene rinviato tramite una porta di AND all'ingresso R solo se il nuovo impulso è zero. Se invece il nuovo impulso fosse stati 1 l'impulso di reset sarebbe stato inibito dalla relativa porta di AND. Si può verificare che il circuito, con , fornisce la:
Aspetti tecnologici
[modifica | modifica sorgente]Tecniche a semiconduttori
[modifica | modifica sorgente]La comparsa sul mercato di singoli componenti semi-conduttori ha rivoluzionato la teoria dei circuiti elettronici.
I semi conduttori sono conosciuti da tempo (primi rivelatori radio), ma solo dopo il 1950 la loro realizzazione industriale ha ottenuto i requisiti necessari per poter sostituire i tubi a vuoto.
Un semiconduttore intrinseco cioè allo stato puro è un conduttore cattivo in una vasta zona di temperatura. L'introduzione di impurità modifica profondamente le proprietà di conducibilità elettrica: sin hanno allora i semi-conduttori estrinseci. A seconda della natura della impurità il materiale semi-conduttore si comporta come donatore o come accettore di elettroni. Nel primo caso si dice di tipo N (negativo) e la conducibilità avviene per trasporto di elettroni, nel secondo caso si dice di tipo P (positivo) e la conducibilità viene descritta in termini di buche o lacune positive
Uno dei semi-conduttori più usati è il cristallo di germanio (Ge). I cristalli semi conduttori sono ottenuti, a partire dal cristallo puro, per introduzione di impurità: antimonio (Sb), bismuto (Bi) o arsenico (As) per il tipo N; alluminio (Al), boro (B), rame (Cu) per il tipo P. Oltre il germanio sono in uso anche il selenio ed il silicio.
Sono realizzati dal contatto di cristalli di tipo P e N: si forma una barriera di potenziale che contrasta il passaggio della corrente elettrica in una delle due direzioni.
![](http://upload.wikimedia.org/wikipedia/commons/9/9d/Grafico_i_funzione_di_V.png)
La curva caratteristica i in funzione della tensione V' ai capi è riportata nel grafico a latere.
Da quanto accennato sui diodi a proposito dei tubi a vuoto e dei semi-conduttori si può astrarre il comportamento del diodo ideale: elemento unidirezionale capace di far scorrere in un solo senso una corrente comunque elevata con resistenza interna Ri e differenza di tensione ai capi nulla; mentre presenta infinita resistenza interna al passaggio di corrente nel senso opposto. Il comportamento dipende dal segno della differenza di potenziale applicata (polarizzazione diretta e inversa, rispettivamente).
![](http://upload.wikimedia.org/wikipedia/commons/3/35/Comportamento_di_un_diodo_ideale.png)
- Sulla destra grafico del comportamento di un diodo ideale
Porte a diodi
[modifica | modifica sorgente]![](http://upload.wikimedia.org/wikipedia/commons/6/63/Porta_a_diodi.png)
La figura di fianco rappresenta una porta a diodi e resistori. Schematizzando i diodi come ideali si vede che se una o entrambe le tensioni di ingresso sono negative (-), inferiori alla tensione +, l'uscita avrà tensione -, viceversa se entrambi gli ingressi hanno tensione + l'uscita avrà tensione +. Nel primo caso si ha passaggio di corrente e nel secondo no. Con i diodi reali si avrà valore non nullo della resistenza nel primo caso e valore finito nel secondo.
Analogamente dalla figura qui affiancata segue la costruzione della funzione F2.
![](http://upload.wikimedia.org/wikipedia/commons/a/a2/Porta_a_diodi_funzione_F2.png)
In logica positiva (conf.par,1.1.3) il circuito attinente funzione F1 realizza una porta AND, mentre quello attinente funzione F2realizza una porta OR.
Con la convenzione logica negativa i due circuiti realizzano le funzioni duali e cioè OR e AND' rispettivamente.
L'inconveniente maggiore nell'uso del semi-conduttori risiede nelle condizioni di funzionamento. Nonostante i continui miglioramenti è sempre necessario, con precauzioni di condizionamento di aria, di refrigerazione ... mantenere il funzionamento in un ristretto intervallo di temperatura
Transistori
[modifica | modifica sorgente]![](http://upload.wikimedia.org/wikipedia/commons/3/32/Comportamento_ideale_di_un_transistor.png)
Notiamo che le porte AND e OR non sono sufficienti per la realizzazione di una funzione booleana; da un punto di vista logico è necessario aggiungere un circuito atto a realizzare la complementazione.
Questo tipo di circuito non si può ottenere con i componenti visti sinora, che erano tutti di tipo passivo. Infatti la complementazione di un segnale può richiedere che il segnale passi da un livello basso ad uno alto, cioè debba essere amplificato, e questo può essere ottenuto solo con componenti attivi. I componenti attivi sono necessari anche per la rigenerazione di un segnale che, a causa dell'attenuazione, rischi di essere inferiore del suo livello rappresentativo.
![](http://upload.wikimedia.org/wikipedia/commons/6/6b/Transistor_NPN.png)
Fra gli elementi attivi facciamo cenno ai transistori. Il transistor a giunzione comprende due giunzioni che separano tre regioni semi-conduttrici di cui le estreme dello stesso tipo e quella intermedia di tipo opposto. Si hanno quindi le due forme possibili PNP e NPN.
Una delle due estremità, l'emettitore, molto ricco di impurità, può emettere un gran numero di cariche che sono più o meno raccolte dall'altra estremità, il collettore, formato di cristalli meno ricchi di impurità.
![](http://upload.wikimedia.org/wikipedia/commons/3/32/Comportamento_ideale_di_un_transistor.png)
Il flusso di cariche è regolato dallo stato della regione intermedia, la base. Poiché devono rappresentare gli stati 0 e 1 in modo che risultino distinguibili senza ambiguità, i transistori vengono fatti lavorare esclusivamente nelle due opposte condizioni di interdizione e saturazione
Schematizziamo il comportamento ideale di un transistor: mandando alla base una corrente nulla, è nulla la corrente di collettore; il transistor si comporta come un contatto aperto (interdizione) e la tensione di collettore è uguale a quella di alimentazione, non essendo il resistore R percorso da corrente. Inversamente mandando alla base una debole corrente il transistor si comporta come un corto circuito (saturazione), la tensione di collettore va a zero e quindi ai capi del resistore R si ha una differenza di potenziale pari alla tensione di alimentazione.
Il comportamento reale di un transistore è rappresentato dalle seguenti caratteristiche:
![](http://upload.wikimedia.org/wikipedia/commons/d/df/Caratteristica_operativa_di_un_transistore.png)
Quindi con una debole corrente di base (dell'ordine delle decine di μA) si regola una corrente di collettore da valori molto bassi a valori dell'ordine di grandezza dei mA; e quindi, essendo la corrente di collettore maggiore di quella necessaria per controllarla, si parla di guadagno di corrente.
Corrispondentemente si ha, in interdizione, una differenza di tensione (ΔV)int non nulla ai capi del transistor e la tensione del collettore non è quella di alimentazione bensì quella di alimentazione diminuita di (ΔV)int: (VCE)int=VA-(ΔV)int essendo VA la tensione di alimentazione.
Nel caso di saturazione si ha ai capi del transistor una differenza di tensione non più pari alla tensione di alimentazione, ma leggermente inferiore, per cui la tensione di collettore assume un valore non nullo (VCE)=VA-(ΔV)sat.
I valori (VCE)sat e (VCE)int sono tali da essere considerati rappresentativi dei valori logici 0 e 1 in logica positiva.
Invertitore a transistor.
[modifica | modifica sorgente]![](http://upload.wikimedia.org/wikipedia/commons/9/97/Segnali_invertiti_e_tabella_della_verit%C3%A0.png)
Per quanto detto il transistor tipo PNC nel circuito aggregato realizza una funzione NOT: infatti lavorando nelle opposte zone di saturazione e interdizione è tale da fornire per un input in B come nel circuito l'output riportato in C, al limite per un transistor ideale con la tabella della verità in cui x è il valore di input e F(x) quello di output.
Circuiti NAND e NOR a transistor
[modifica | modifica sorgente]![](http://upload.wikimedia.org/wikipedia/commons/9/96/Cifrcuiti_NAND_e_NOR.png)
![](http://upload.wikimedia.org/wikipedia/commons/0/06/Tabella_della_verit%C3%A0_NAND_e_NOR.png)
![](http://upload.wikimedia.org/wikipedia/commons/5/59/Simboli_dei_circuiti_NAND_e_NOR.png)
L'interesse dei circuiti che realizzano gli operatori NAND e NOR consiste nel fatto che detti operatori costituiscono, singolarmente, degli insiemi funzionalmente completi (cfr. Parte 1a, Cap. VII).
In linea di principio gli elementi visti fin qui sono sufficienti per formare un circuito NAND o NOR. Infatti è sufficiente un circuito formato da una porta a diodi (paragrafo 1.3.2), e da un invertitore a transistor. Il circuito così formato appartiene alla famiglia dei D-T-L (Diodo-Transistor-Logic).
I circuiti affiancati fanno parte della famiglia D-C-T-L (Direct-Coupled-Transistor-Logic) e realizzano le funzioni NAND e NORtramite l'uso dei transistor in luogo dei diodi.
Consideriamo il circuito NAND: solo se entrambi i transistor conducono ci sarà una caduta di tensione ai capi del resistore ed il potenziale in G1 sarà basso. Invece considerando il circuito NOR risulta che è sufficiente che uno solo dei due transistor conduca perché il potenziale di G2 sia basso. Ne segue la tabella della verità mostrata.
Analogamente a quanto detto a proposito delle porte a diodi la funzione G1 e G2 in logica positiva realizzano le funzioni NAND e NOR rispettivamente, mentre in logica negativa realizzano le funzioni duali NOR e NAND rispettivamente.
In simboli i circuiti NAND e NOR oltre che come indicato al paragrafo 1.1.4 possono anche essere indicati con i simboli del codice DIN qui raffigurati.
Flip-flop
[modifica | modifica sorgente]Quanto visto finora è sufficiente per comprendere la struttura di un flip-flop, il cui funzionamento logico si è visto al paragrafo 1.2.4.
Limitiamoci a considerare il caso in cui la combinazione Sn=Rn=1 è proibita, riscriviamo la funzione di uscita Zn+1 ed il suo complemento in funzione degli ingressi Sn e Rn tramite l'operatore NOR:
![](http://upload.wikimedia.org/wikipedia/commons/f/f0/Flip-Flop_logic_circuit..png)
ed inoltre, considerando che in questo caso si ha si ha anche:
![](http://upload.wikimedia.org/wikipedia/commons/8/85/Simplified_circuit_diagram_of_Flip-Flop_S-R.png)
Queste due funzioni sono realizzate col circuito logico evidenziato a lato.
È ora sufficiente considerare due circuiti NOR, e connettere simmetricamente l'uscita di uno dei due circuiti ad uno dei due ingressi dell'altro per ottenere uno schema semplificato di flip-flop.
Pertanto, quando la coppia di transistor di ingresso S e Z conduce (caso di saturazione) il potenziale del comune collettore (segnale ) mantiene a livello basso quello di una delle basi dell'altra coppia di transistor che, per quanto detto, si trova in condizione di interdizione.
Vi sono pertanto due stati di equilibrio stabile, caratterizzati dal fatto che una delle due coppie di transistor è in saturazione e l'altra in interdizione.
Quando il circuito si trova in uno dei due stati, identificabili tramite le funzioni di uscita e , vi rimane indefinitamente, realizzando cioè la funzione di memoria. Tramite segnali di comando esterni si ottiene che il circuito commuti all'altro dei due possibili stati; questi segnali (S e R) vengono mandati a una delle basidi una coppia di transistor. Il passaggio di un flip-flop dallo stato 0 allo stato 1 si dice setting, quello dallo stato 1 allo stato 0 di resettig. Il comando che provoca la commutazione può essere o un livello di tensione (comando in continua) o impulso di tensione (comando in alternata).