CAPITOLO 12 CIRCUITI LOGICI - dieet.unipa.it 12.pdf · CIRCUITI LOGICI Con questo capitolo iniziamo...

21
222 CAPITOLO 12 CIRCUITI LOGICI Con questo capitolo iniziamo lo studio dell’elettronica digitale, partendo dalle porte logiche che costituiscono i circuiti digitali più elementari. In altre parole, un circuito digitale, per quanto complesso, può essere ricondotto ad un insieme di porte logiche elementari variamente connesse tra loro. L’insieme di tali porte logiche e delle loro connessioni prende il nome di circuito logico. Per affrontare l’analisi delle porte logiche ed intraprendere lo studio dell’elettronica digitale, sarà bene introdurre preliminarmente alcune nozioni di aritmetica binaria, fondamentale dato che essa costituisce il “linguaggio” dell’elettronica digitale, e dell’algebra di Boole, che invece rappresenta la “sintassi” di tale linguaggio, dato che essa fornisce uno strumento matematico per l’analisi del funzionamento dei circuiti digitali. 12.1 Sistema binario Un sistema di numerazione si basa su un numero finito di simboli. Tale numero prende il nome di base. Per questo motivo il sistema decimale, che utilizza dieci cifre diverse (da 0 a 9), è noto come sistema di numerazione in base 10. Il sistema di numerazione decimale, inventato dagli arabi, si è diffuso ampiamente perché il numero delle cifre coincide con il numero delle dita delle mani. Esso è un sistema di numerazione posizionale, vale a dire che il valore assunto da una cifra in un numero dipende dalla sua posizione nel numero stesso. Ad esempio, la cifra 1 nel numero 172 ha un significato diverso nel numero 591. La cifra più a sinistra di un numero prende il nome di cifra più significativa, mentre quella più a destra è la cifra meno significativa. Un numero espresso in base 10 si può scomporre in forma polinomiale, cioè come somma di prodotti tra le cifre e una potenza di 10. Ad esempio il numero 591 è costituito da 5 centinaia, 9 decine ed 1 unità perciò si può così scomporre: 591 = 5 · 10 2 + 9 · 10 1 + 1 · 10 0 . È possibile scomporre anche i numeri non interi; in questo caso, la parte decimale dopo il punto è costituita da cifre che nella scomposizione vengono moltiplicate per le potenze di 10 ad esponente

Transcript of CAPITOLO 12 CIRCUITI LOGICI - dieet.unipa.it 12.pdf · CIRCUITI LOGICI Con questo capitolo iniziamo...

222

CAPITOLO 12

CIRCUITI LOGICI

Con questo capitolo iniziamo lo studio dell’elettronica digitale, partendo dalle porte logiche che

costituiscono i circuiti digitali più elementari. In altre parole, un circuito digitale, per quanto

complesso, può essere ricondotto ad un insieme di porte logiche elementari variamente connesse tra

loro. L’insieme di tali porte logiche e delle loro connessioni prende il nome di circuito logico.

Per affrontare l’analisi delle porte logiche ed intraprendere lo studio dell’elettronica digitale,

sarà bene introdurre preliminarmente alcune nozioni di aritmetica binaria, fondamentale dato che

essa costituisce il “linguaggio” dell’elettronica digitale, e dell’algebra di Boole, che invece

rappresenta la “sintassi” di tale linguaggio, dato che essa fornisce uno strumento matematico per

l’analisi del funzionamento dei circuiti digitali.

12.1 Sistema binario

Un sistema di numerazione si basa su un numero finito di simboli. Tale numero prende il nome

di base. Per questo motivo il sistema decimale, che utilizza dieci cifre diverse (da 0 a 9), è noto

come sistema di numerazione in base 10. Il sistema di numerazione decimale, inventato dagli arabi,

si è diffuso ampiamente perché il numero delle cifre coincide con il numero delle dita delle mani.

Esso è un sistema di numerazione posizionale, vale a dire che il valore assunto da una cifra in un

numero dipende dalla sua posizione nel numero stesso. Ad esempio, la cifra 1 nel numero 172 ha un

significato diverso nel numero 591. La cifra più a sinistra di un numero prende il nome di cifra più

significativa, mentre quella più a destra è la cifra meno significativa.

Un numero espresso in base 10 si può scomporre in forma polinomiale, cioè come somma di

prodotti tra le cifre e una potenza di 10. Ad esempio il numero 591 è costituito da 5 centinaia, 9

decine ed 1 unità perciò si può così scomporre:

591 = 5 · 102 + 9 · 101 + 1 · 100 .

È possibile scomporre anche i numeri non interi; in questo caso, la parte decimale dopo il punto

è costituita da cifre che nella scomposizione vengono moltiplicate per le potenze di 10 ad esponente

223

negativo. Ad esempio il numero 591,37 presenta 3 decimi e 7 centesimi perciò si può così

scomporre:

591,37 = 5 · 102 + 9 · 101 + 1 · 100 + 3 · 10–1 + 7 · 10–2 .

Anche il sistema di numerazione binario è di tipo posizionale, ma esso si basa su due sole cifre:

0 e 1. La cifra del sistema binario prende il nome di bit (binary digit). Il bit più a sinistra di un

numero binario rappresenta il bit più significativo e si indica con MSB (most significant bit) mentre

il bit più a destra rappresenta il bit meno significativo e si indica con LSB (least significant bit).

Anche i numeri binari sono scomponibili come somma di prodotti tra i bit e le potenze di due. Ad

esempio il numero binario 1101 si scompone così:

(1101)2 = 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20 = 8 + 4 + 1 = 13 .

La scomposizione polinomiale rappresenta un metodo per la conversione di un numero dal

sistema binario al decimale. Si noti che il numero binario assegnato è stato racchiuso in parentesi

tonda ed è stato messo un due dopo la parentesi chiusa per specificare che quel numero è espresso

in base due (si legge: UNO UNO ZERO UNO). Il MSB dell’esempio precedente ha peso 23 = 8,

mentre LSB ha peso 20 = 1.

Nella rappresentazione dei numeri binari gli zeri non significativi posti a sinistra del numero

possono essere soppressi. Ad esempio il numero (6)10 si esprime, in base 2, semplicemente con

(110)2.

Si fa notare che i numeri potenza di due (1, 2, 4, 8, 16, ecc.) si rappresentano in binario con 1,

seguito da tanti zeri quanto è l’esponente da dare al due per ottenere tale potenza. Ad esempio:

(16 = 24)10 = (10000)2 ,

oppure

(4 = 22)10 = (100)2 .

Anche i numeri binari possono essere non interi. Ad esempio il numero 110,101 si può

scomporre come:

(110,101)2 = 1 · 22 + 1 · 21 + 0 · 20 + 1 · 2–1 + 0 · 2–2 + 1 · 2–3 = 4 + 2 + 0,5 + 0,125 = 6,625 .

Quanto finora asserito per i numeri decimali e binari vale anche per numeri espressi in una base

diversa. Nel caso di una base maggiore di 9, le cifre mancanti vengono rimpiazzate da lettere. Ad

esempio, nel caso della base 16 (utilizzata anch’essa sovente in elettronica digitale), le cifre sono: 0,

1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

In Tab. 12.1 si mostrano le configurazioni dei primi 32 numeri binari.

224

Tab. 12.1 – Primi 32 numeri binari

Perché siamo così interessati alla rappresentazione dei numeri in forma binaria? Il motivo è che

qualunque tipo d’informazione espressa da un segnale elettrico numerico può assumere due soli

livelli di tensione: alto (indicato con “1”) e basso (indicato con “0”). Queste informazioni, sia

numeriche che alfanumeriche, vengono normalmente trattate ed elaborate da calcolatori elettronici

e conservate nella loro memoria centrale. Quest’ultima è costituita da circuiti integrati che

memorizzano i dati in forma binaria.

La memoria centrale della maggior parte degli elaboratori elettronici è organizzata in byte. Un

byte è un insieme di 8 bit. Un byte, pertanto, può assumere 28 = 256 configurazioni possibili.

I numeri interi in semplice precisione vengono rappresentati nella memoria del calcolatore in

una voce (o word). Una voce è costituita da 16 bit e quindi da due byte. Con 16 bit si possono

rappresentare 216 = 65536 numeri tra positivi e negativi.

n B4 B3 B2 B1 B0

0 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 1 0 3 0 0 0 1 1 4 0 0 1 0 0 5 0 0 1 0 1 6 0 0 1 1 0 7 0 0 1 1 1 8 0 1 0 0 0 9 0 1 0 0 1

10 0 1 0 1 0 11 0 1 0 1 1 12 0 1 1 0 0 13 0 1 1 0 1 14 0 1 1 1 0 15 0 1 1 1 1 16 1 0 0 0 0 17 1 0 0 0 1 18 1 0 0 1 0 19 1 0 0 1 1 20 1 0 1 0 0 21 1 0 1 0 1 22 1 0 1 1 0 23 1 0 1 1 1 24 1 1 0 0 0 25 1 1 0 0 1 26 1 1 0 1 0 27 1 1 0 1 1 28 1 1 1 0 0 29 1 1 1 0 1 30 1 1 1 1 0 31 1 1 1 1 1

225

Per i numeri positivi si pone il bit più significativo uguale a 0 e per quelli negativi uguale a 1;

con i restanti 15 bit si possono rappresentare tutti gli interi compresi tra 0 e 215 – 1 = 32767 (e tutti i

negativi compresi tra –32768 e –1, con una tecnica di rappresentazione, detta complemento a 2)

Se, invece, si vuole utilizzare un numero intero maggiore di 32767 (o minore di –32768), una

sola word non basta: se ne utilizzano due e si dice che si sta lavorando in doppia precisione; i bit

disponibili sono 32 con i quali si rappresentano i numeri positivi da 0 a 231 – 1 = 2.147.483.647 (ed

i numeri negativi da –231 a –1).

I numeri non interi vengono invece memorizzati in forma esponenziale: vengono cioè

memorizzati in due voci da 16 bit separatamente la mantissa e la caratteristica (l’esponente).

Tipicamente, un bit serve per il segno, i restanti 15 bit della prima voce più gli ultimi 8 della

seconda voce sono i bit destinati alla mantissa; infine i primi 7 bit della seconda voce memorizzano

la caratteristica.

12.2 Codici

Nei calcolatori possono essere rappresentati non solo caratteri numerici ma anche alfanumerici,

costituiti cioè da caratteri alfabetici maiuscoli e minuscoli, numeri, punteggiatura e caratteri speciali

di controllo (return, escape, ecc.). Ovviamente, in senso lato, questa situazione si presenta non solo

nei computer, ma ogniqualvolta si voglia leggere, elaborare o trasmettere un’informazione

attraverso dei sistemi digitali. Dato che questi ultimi lavorano soltanto con due livelli di tensione, ai

quali – come già detto – possono essere associate le due cifre del sistema binario, deve essere

possibile codificare le informazioni in modo che queste possano essere interpretate correttamente

dai circuiti. In altre parole, sorge la necessità di adottare dei codici che permettano di associare ad

un testo alfanumerico o a delle istruzioni o comandi particolari da svolgere, una precisa sequenza di

bit 0 e 1.

II codice senza dubbio molto diffuso nei personal e home computer è il codice ASCII (American

Standard Code for Information Interchange) che si basa su 7 bit, quindi permette la codifica di

27 = 128 caratteri. La codifica di ciascun carattere ASCII in realtà non avviene in 7 bit ma in 8, e

l’ultimo bit – detto di parità – viene adoperato per il controllo degli errori di trasmissione(♣).

I codici da 0 a 32 e il codice 127 sono caratteri speciali di comando alle periferiche del tipo

stampanti e telescriventi. Infatti, il codice ASCII fu elaborato per le trasmissioni dati con

telescriventi. In Tab. 12.2 si riportano i codici decimali, esadecimali ed i significati di tali linee.

(♣) Il bit di parità viene posizionato a 0 oppure a 1 in modo che il numero di 1 che costituisce il byte sia pari (parità pari). Quando si esegue la trasmissione di un carattere in codice ASCII da un dispositivo ad un altro, il dispositivo ricevitore possiede un circuito per il controllo di parità. Se una non corretta trasmissione provoca la commutazione di un solo bit: ciò cambia la parità del byte e il controllore di parità rileva, così, l'errore di trasmissione.

226

Spesso i computer utilizzano il codice ASCII esteso a 8 bit per il quale sono disponibili ben 256

configurazioni. Le prime 128 hanno lo stesso significato del codice ASCII originale, mentre le altre

sono utilizzate per la definizione di caratteri semigrafici e di controllo per la stampante. In Tab. 12.3

si riporta il codice ASCII esteso utilizzato dall’IBM sui suoi PC.

Tab. 12.2 – Significato dei caratteri di controllo del codice ASCII

DEC ESA CODICE SIGNIFICATO

0 0 NUL Nullo 1 1 SOM Start of Heading = Inizio testata 2 2 STX Start of text = Inizio testo 3 3 ETX End of text = Fine del testo 4 4 EOI End of trasmission = Fine trasmissione

5 5 ENQ Enquiry = Richiesta 6 6 ACK Acknowledge = Conferma

7 7 BEL Bell = Segnale acustico

8 8 BS Backspace = Ritorna indietro di 1 9 9 HT Horizontal tab = Tabulazione orizzontale

10 A LF Line feed = Avanzamento di una linea 11 B VT Vertical tab = Tabulazione verticale

12 C FF Form feed = Avanzamento carta 13 D CR Carriage return = Rit. car. con accettaz.

14 E SO Shift out = Shift disinserito

15 F SI Shift in = Shift inserito 16 10 OLE Data link escape = Uscita trasmissione

17 11 DC1 Direct control 1 = Controllo periferica 18 12 DC2 Direct control 2 = Controllo periferica 2

19 13 DC3 Direct control 3 = Controllo periferica 3

20 14 DC4 Direct control 4 = Controllo periferica 4 21 15 NAK Negative acknowledge = Conferma

22 16 SYN Synchronous idle = Attesa sincronizzata 23 17 ETB End trasmission block = Fine trasm.

24 18 CAN Cancel = Annulla 25 19 EM End of medium = Fine supporto

26 1A SUB Substitute= Sostituzione

27 1B ESC Escape = Uscita dal codice 28 1C FS Form separator = Separazione file

29 1D GS Group separator = Separatore di gruppo 30 1E RS Record separator = Separazione record

31 1F US Unit separator = Separazione unità

32 20 SP Space = Spazio 127 7F DEL Delete = Cancellazione del carattere

Vi sono altri codici, per lo più numerici, formulati per soddisfare esigenze particolari.

Il codice Gray (o codice riflesso) gode delle proprietà che passando da una configurazione alla

successiva cambia il valore di un solo bit. Con due bit si ha:

DEC GRAY 0 00 1 01 2 11 3 10

227

Tab. 12.3 – Codice ASCII esteso

228

Per codificare in Gray con tre bit si fanno precedere da 0 le 4 configurazioni viste sopra mentre le

ultime 4 configurazioni, ottenute per “riflessione” attorno ad un immaginario asse di simmetria

posto tra la quarta e la quinta configurazione, si fanno precedere da 1.

Un altro codice spesso utilizzato per codificare le 10 cifre decimali da 0 a 9 è il codice BCD

(Binary Coded Decimal). La codifica di un numero decimale in BCD avviene componendolo nelle

sue cifre costituenti e codificando ciascuna cifra in binario naturale. Ad esempio, il numero 1209

viene così codificato

0001 0010 0000 1001

1 2 0 9

Il codice BCD richiede pertanto 4 bit per ogni cifra decimale codificata.

12.3 Algebra di Boole. Porte logiche

L’algebra di Boole (1815-1864) o algebra binaria, storicamente introdotta nello studio della

logica, cioè della scienza che studia le regole del ragionamento, fu ripresa e utilizzata dagli

scienziati intorno al 1940, per la costruzione dei calcolatori elettronici e per i sistemi di trasmissione

dati. Essa si fonda sul fatto che le variabili logiche possono assumere solo due stati che, come si è

detto, si indicano con 0 e 1 oppure con L o H, ove L indica il livello logico basso (L = Low) ed H

quello alto (H = High).

In matematica una funzione è rappresentata sia dalla sua espressione algebrica sia da una tabella

che elenca i valori della variabile indipendente e dei corrispondenti valori della funzione. Ad

esempio l’equazione di una retta può essere rappresentata sia dall’equazione y = mx + q, sia

mediante una tabella nella quale ad ogni valore di x corrisponde un determinato valore di y.

Nell’algebra booleana la tabella che rappresenta la funzione logica è detta tabella della verità.

In Fig. 12.1 è indicato un esempio di tabella della verità nel caso di un sistema digitale a due entrate

e tre uscite.

DEC GRAY 0 000 1 001 2 011 3 010 4 110 5 111 6 101 7 100

229

a) b)

Fig. 12.1 – a) Tabella della verità e b) schema a blocchi di un sistema digitale

combinatorio a due entrate e tre uscite

In essa E1 ed E2 rappresentano le variabili di entrata e nelle prime due colonne sono indicate le

possibili combinazioni binarie di tali variabili. In corrispondenza di ciascuna riga sono posti i

particolari valori assunti dalle variabili di uscita. Ad esempio la prima riga ci informa che se le

entrate sono entrambe nello stato logico 0 le corrispondenti uscite assumono i valori U1 = 0, U2 = 1,

U3 = 0, e così via per le altre combinazioni. Se il sistema digitale è ad n entrate ed m uscite, la

tabella della verità è costituita da 2n righe in corrispondenza delle quali si deve scrivere il valore

assunto dalle uscite. In generale, con n variabili d’entrata si hanno 2n combinazioni che a loro volta

possono dare origine a 22n funzioni d’uscita. Il numero delle possibili funzioni d’uscita cresce,

quindi, in modo esponenziale. Ad esempio, in Tab. 12.4 si riportano le sedici possibili combinazioni

nel caso di due variabili d’entrata A e B.

Tab. 12.4 – Funzioni digitali di una rete a due ingressi

In tutti i casi, fissato il numero delle variabili d’entrata, sono noti sia il numero delle righe che

compone la tabella della verità sia il numero delle possibili uscite; ciò indica che i problemi digitali

sono rappresentati da tabelle il cui numero di stati è finito (nel caso di funzioni analitiche il numero

di stati possibili (x, y) è invece infinito). Assegnato quindi, un problema di natura digitale è sempre

possibile compilare la tabella della verità dalla quale dedurre i circuiti logici necessari alla

realizzazione della rete richiesta.

Analizziamo adesso le operazioni logiche fondamentali dell’algebra booleana. Tali operazioni

fondamentali sono realizzate da dispositivi integrati denominati porte logiche (o GATE).

230

12.3.1 Somma logica OR

L’operazione di somma logica OR si esegue su due o più variabili e l’uscita assume lo stato 1 se

almeno una variabile d’ingresso è allo stato 1. Nel caso di due variabili A e B, detta Y l’uscita, si

scrive:

Y = A + B , (12.1)

e si legge “A OR B”. È d’uso, in ogni modo, leggere semplicemente “A più B”.

In Fig. 12.2 si mostra la tabella della verità e il simbolo elettrico relativo ad una porta OR a due

ingressi.

a) b)

Fig. 12.2 – a) Tabella della verità e b) simbolo elettrico di una porta OR a due ingressi

Il funzionamento di una porta OR nella logica ad interruttori è invece schematizzato in

Fig. 12.3. Si assegna alle variabili A e B la posizione dei due interruttori (0 = aperto, 1 = chiuso)

mentre si assume Y = 1 se la lampada è accesa; è facile verificare che il circuito di Fig. 12.3 realizza

la funzione dell’operatore OR.

Fig. 12.3 – Porta logica OR realizzata mediante due interruttori in parallelo

Infatti, la lampada sarà accesa (Y = 1) se uno o entrambi gli interruttori sono chiusi, viceversa la

lampada rimane spenta (Y = 0).

Il termine OR, in italiano «o», corrisponde ad affermare che l’uscita è vera (Y = 1) se è

verificata «o» la condizione A = 1 «o» la condizione B = 1, «o» entrambe (logica dei postulati).

Un’ultima interpretazione logica che ci permette d’interpretare il funzionamento della porta OR

è quella degli insiemi. L’operatore OR applicato a due variabili A e B corrisponde all’unione (∪) tra

231

due insiemi A e B. Si suppone che gli insiemi appartengano ad uno spazio di area unitaria, per cui 0

corrisponde all’insieme vuoto, mentre 1 corrisponde a tutto lo spazio.

12.3.2 Prodotto logico AND

L’operatore AND agisce su due o più variabili; l’uscita assume lo stato 1 solo se tutti gli

ingressi sono nello stato 1. Nel caso di due variabili A e B si pone:

Y = A · B , (12.2)

e si legge A AND B. È d’uso leggere semplicemente A per B.

In Fig. 12.4 si mostra la tabella della verità e il simbolo elettrico relativo ad una porta AND a

due ingressi.

a) b)

Fig. 12.4 – a) Tabella della verità e b) simbolo elettrico di una porta AND a due ingressi

Nell’algebra degli interruttori il funzionamento della porta AND è schematizzato dal circuito di

Fig. 12.5. Con le stesse ipotesi fatte per il circuito di Fig. 12.3 è facile verificare che la lampada è

accesa (Y = 1) solo se entrambi gli interruttori sono chiusi (A = B = 1).

Fig. 12.5 – Porta logica AND realizzata mediante due interruttori in serie

Il termine AND, in italiano «e», indica che l’uscita è vera (Y = 1), solo se A «e» B sono

contemporaneamente vere, cioè se A = B = 1.

Nella logica degli insiemi, infine, l’operatore AND corrisponde all’intersezione (∩) tra due o

più insiemi.

232

12.3.3 Negazione NOT

L’operazione di negazione si esegue su una sola variabile e si chiama anche inversione logica o

complementazione. L’uscita Y è uguale a 1 se l’ingresso è uguale a 0 e viceversa. L’equazione

algebrica corrispondente si scrive:

Y = A , (12.3)

e si legge A negato o A complementato.

In Fig. 12.6 si mostra la tabella della verità e i simboli elettrici di una porta NOT.

a) b)

Fig. 12.6 – a) Tabella della verità e b) simboli elettrici di una porta NOT

Il funzionamento di una porta NOT è sintetizzato nel circuito di Fig. 12.7. Si deduce che

lampada è accesa (Y = 1) se l’interruttore è aperto (A = 0) viceversa se l’interruttore è chiuso (A =

1) la lampada è spenta.

Fig. 12.7 – Porta logica NOT realizzata mediante un interruttore

Nella logica dei postulati, l’uscita è vera se l’ingresso è falso e viceversa. Nella logica degli

insiemi, NOT (A) equivale ad A complementato ( A ).

Le tre porte logiche AND, OR e NOT costituiscono un gruppo di operatori detto completo in

quanto con esso è possibile risolvere qualunque problema digitale (ossia è possibile ottenere

qualsiasi altra funzione).

Gli operatori logici fondamentali OR, AND, NOT possono essere collegati tra loro in modo da

realizzare funzioni digitali più complesse. Ad esempio l’espressione: Y = (A + B + C) · D, indica la

funzione digitale di una rete a quattro entrate A, B, C e D ed un’uscita Y ottenuta come prodotto

233

logico tra la variabile D e il risultato dell’OR a tre entrate tra A, B e C. L’uscita Y = 1 se D = 1 «e»

se almeno una tra le variabili A, B e C vale 1.

12.3.4 Somma logica negata NOR

L’operatore NOR è derivato da un operatore OR seguito da un NOT. L’uscita Y di una porta

NOR vale 1 solo se tutte le entrate sono nello stato logico 0, altrimenti vale 0. Nel caso di due

variabili A e B la funzione digitale si scrive:

Y = BA + . (12.4)

In Fig. 12.8 si mostra la tabella della verità e il simbolo elettrico di una porta NOR a due

ingressi. Si osservi che il cerchietto nel simbolo della porta NOR indica l’inversione logica.

a) b) c)

Fig. 12.8 – Porta NOR: a) tabella della verità; b) simbolo elettrico; c) schema equivalente

12.3.5 Prodotto logico negato NAND

L’operatore NAND agisce su due o più variabili; l’uscita vale 0 se tutti gli ingressi sono nello

stato logico 1. La porta NAND è derivata da una porta AND seguita da un NOT. Nel caso di due

variabili di ingresso A e B la funzione digitale dell’uscita risulta:

Y = BA ⋅ . (12.5)

In Fig. 12.9 si mostra la tabella della verità e il simbolo elettrico di una porta NAND a due

ingressi.

a) b) c)

Fig. 12.9 – Porta NAND: a) tabella della verità; b) simbolo elettrico; c) schema equivalente

234

12.3.6 OR esclusivo EXOR

L’operatore OR esclusivo indicato con EXOR, agisce su due variabili d’ingresso; l’uscita si

porta nello stato logico 1 se le entrate hanno stato logico diverso, da cui il nome di circuito di

anticoincidenza.

In Fig. 12.10 si riporta la tabella della verità e il simbolo elettrico di una porta EXOR.

a) b)

Fig. 12.10 – a) Tabella della verità e b) simbolo elettrico di una porta EXOR

L’equazione logica di un OR esclusivo assume la forma:

Y = BABABA +=⊕ , (12.6)

e si legge A OR ESCLUSIVO B.

12.3.7 Coincidenza o NOR esclusivo EXNOR

L’operatore coincidenza (o NOR esclusivo), indicato con EXNOR, è derivato dall’EXOR

mediante complementazione della variabile d’uscita. In Fig. 12.11 si mostra la tabella della verità e

il simbolo elettrico di una porta EXNOR.

a) b)

Fig. 12.11 – a) Tabella della verità e b) simbolo elettrico di una porta coincidenza

L’espressione digitale risulta:

Y = BABA ⊕=⊗ , (12.6)

e si legge A COINCIDENZA B.

235

Si osservi infine che il nome di coincidenza logica deriva dal fatto che l’uscita si porta ad 1 solo

se le entrate «coincidono» nello stato logico.

Vediamo adesso alcune proprietà ed alcuni teoremi dell’algebra di Boole, che risultano di

grande utilità quando si opera con circuiti logici. Gli assiomi e i teoremi dell’algebra booleana che

si descrivono si possono facilmente dimostrare tramite la logica degli insiemi, o ricorrendo altresì

all’uguaglianza delle tabelle della verità del primo e del secondo membro dell’espressione in esame.

– proprietà commutativa:

A + B = B + A , (12.7)

A · B = B · A ; (12.8)

– proprietà associativa:

A + (B + C) = (A + B) + C , (12.9)

A · (B · C) = (A · B) · C ; (12.10)

– proprietà distributiva:

A · (B + C) = AB + AC , (12.11)

A + (B · C) = (A + B) · (A + C) . (12.12)

Si osservi che la proprietà distributiva rispetto alla somma logica non ha un corrispettivo

nell’algebra ordinaria.

– assioma dell’annullamento:

A + 1 = 1 , (12.13)

A · 0 = 0 ; (12.14)

– assioma del complemento:

A + A = 1 , (12.15)

A · A = 0 ; (12.16)

– assioma dell’idempotenza:

A + A = A , (12.17)

A · A = A ; (12.18)

– assioma della negazione:

BA = ⇒ BA = ; (12.19)

– assioma della doppia negazione:

AA = . (12.20)

Una proprietà fondamentale dell’algebra booleana è espressa dal seguente principio di dualità:

data una funzione Y si chiama espressione duale Y quella che si ottiene scambiando l’operatore

AND con OR, 0 con 1 e sostituendo alle variabili i loro complementi e viceversa.

236

Ad esempio se: Y = A + ( CB ⋅ ) ,

l’espressione duale vale: Y = )( CBA +⋅ .

Riportiamo, infine, alcuni importanti teoremi dell’algebra booleana, tutti facilmente dimostrabili

invocando i principî prima descritti.

– teorema dell’assorbimento:

AYABAY =⇒+= ; (12.21)

– 1° teorema di De Morgan:

BAAB += ; (12.22)

– 2° teorema di De Morgan:

BABA ⋅=+ . (12.23)

I teoremi di De Morgan sono facilmente verificabili facendo ricorso alle tabelle di verità. Per il

1° teorema, ad esempio, si ha:

e

ed essendo Y1 = Y2 l’asserto è dimostrato.

12.4 Funzioni booleane e forme canoniche

Quando si deve progettare una rete combinatoria, generalmente si parte da una descrizione a

parole del problema e da questa si deve dedurre il circuito atto ad implementare il problema

proposto. Normalmente la procedura di progettazione consiste nel dedurre, dalla descrizione del

problema, la tabella della verità che sintetizza il funzionamento della rete digitale e

successivamente, da questa, si ricava la funzione booleana e quindi il circuito richiesto.

In questo paragrafo si descrivono i metodi che consentono di determinare la struttura di una rete

combinatoria nota la tabella della verità. Nel paragrafo successivo si analizzeranno i metodi che

consentono di semplificare o minimizzare il circuito digitale.

Una funzione digitale espressa in forma algebrica è costituita da un certo numero di termini dati

dalla somma o dal prodotto di variabili.

Un termine si dice canonico se contiene tutte le variabili della funzione. Si hanno pertanto

termini canonici somma e termini canonici prodotto. Una funzione, infine, si dice canonica se è

costituita da tutti termini canonici. Ad esempio, la funzione

237

Y (A, B, C) = A B C + AB + AC

non è canonica. Il primo termine è canonico perché contiene tutte le variabili della funzione mentre

il secondo e il terzo non sono canonici. Si osservi che la funzione è qui data come somma di termini

prodotto. Anche la funzione

Y (A, B, C) = (A + B + C) · ( A + B) · (A + C)

non è canonica. Si noti che in questo caso la funzione è data come prodotto di termini somma.

Esempi di funzioni canoniche sono invece i seguenti:

Y (A, B, C) = A B C + ABC + ABC ,

Y (A, B, C) = (A + B + C) · ( A + B + C ) · (A + B + C) .

Si definisce mintermine (o termine canonico prodotto) il prodotto logico delle variabili

d’ingresso di una funzione prese in forma naturale o complementata. Con due variabili, A e B,

abbiamo i seguenti 4 mintermini:

m0 = A · B , m1 = A · B, m2 = A · B , m3 = A · B ;

con tre variabili ne abbiamo 23 = 8, con n variabili 2n.

Si definisce maxtermine (o termine canonico somma) la somma logica delle variabili d’ingresso

di una funzione prese in forma naturale o complementata. Con due variabili, A e B, abbiamo i

seguenti 4 maxtermini:

M0 = A + B , M1 = A + B , M2 = A + B, M3 = A + B ;

analogamente a prima, con n variabili si hanno 2n maxtermini.

Date le seguenti definizioni, nota la tabella della verità di una funzione booleana, quest’ultima è

esprimibile mediante due forme canoniche equivalenti:

– PRIMA FORMA CANONICA:

Una funzione booleana è espressa dalla somma dei mintermini in corrispondenza dei quali

l’uscita vale «1». La variabile d’ingresso si considera in forma naturale se essa vale 1, mentre in

forma complementata se essa vale 0. Ad esempio, data la seguente tabella della verità relativa ad

una funzione Y(A, B):

poiché essa vale 1 in corrispondenza delle prime due righe, potremo scrivere:

A B Y

0 0 1 0 1 1

1 0 0

1 1 0

238

A B

Y

A B

Y

Y (A, B) = A B + AB = m0 + m1 .

La forma canonica si presta ad un’interpretazione intuitiva. Nell’esempio precedente, la

funzione vale 1 se

1) A «e» B sono entrambe uguali a 0, cioè se A AND B = 0: ciò è possibile solo se

Y = A AND B ,

oppure se

2) A = 0 «e» B = 1, cioè se Y = A AND B = 1.

– SECONDA FORMA CANONICA:

Una funzione booleana è espressa dal prodotto dei maxtermini in corrispondenza dei quali

l’uscita vale «0». Al contrario di prima, la variabile d’ingresso si considera in forma naturale se essa

vale 0, mentre in forma complementata se essa vale 1. Data la tabella della verità dell’esempio

precedente, si ha dunque:

Y (A, B) = ( A + B ) · ( A + B) = M3 + M2 .

Si noti che si può passare da una forma canonica all’altra applicando i due teoremi di De

Morgan.

Le due forme canoniche relative all’esempio precedente possono essere rappresentate in forma

circuitale utilizzando porte AND, OR e NOT

Fig. 12.12 – Esempio di circuiti logici relativi ad una funzione booleana espressa

sotto forma di a) somma di mintermini e b) prodotto di maxtermini

12.5 Minimizzazione delle funzioni booleane. Mappe di Karnaugh

Nei precedenti paragrafi si è analizzata la procedura che consente di realizzare una rete digitale

con porte logiche nota la tabella della verità. Si è anche visto che una stessa funzione logica può

essere rappresentata da diverse espressioni booleane e quindi può essere realizzata con diversi

a) b)

239

circuiti. Una fase fondamentale della progettazione di una rete digitale consiste nel determinare, tra

le diverse soluzioni possibili, quella che a parità di prestazioni ha il minimo costo.

Se si tiene conto che il costo di un circuito è sostanzialmente legato al numero di porte logiche

utilizzate si deduce che minimizzare una funzione booleana consiste nel determinare quella

espressione logica che può essere realizzata con il minor numero di porte logiche elementari.

Le procedure di minimizzazione delle funzioni booleane si basano o sulla manipolazione

algebrica mediante l’applicazione delle proprietà, assiomi e teoremi dell’algebra di Boole o

mediante dei procedimenti grafici come il metodo della mappa di Karnaugh (o per mezzo di metodi

di tabulazione automatici, come quello di Quine-McKlusky, che esulano dagli scopi di questo

corso).

I vari metodi di minimizzazione non conducono, in generale, ad un’unica espressione, sia

perché possono essere applicati separatamente alla prima e alla seconda forma canonica e inoltre

perché per ciascuna di esse si ottengono, come vedremo in seguito, diverse soluzioni equivalenti. Il

progettista ha quindi più possibilità di scelta che gli consentono di ottimizzare la soluzione

circuitale.

La mappa di Karnaugh è uno dei metodi sistematici di minimizzazione delle funzioni logiche

più usato. Si basa sull’applicazione della proprietà distributiva e sull’assioma del complemento cioè

sulla semplificazione di espressioni del tipo:

ABX + AB X = AB(X + X ) = AB · 1 = AB . (12.24)

La precedente relazione indica che se due mintermini differiscono solo per una variabile, che in

uno compare in forma naturale (X) e nell’altro in forma complementata ( X ), questa variabile può

essere eliminata e la somma logica sostituita da un solo termine prodotto. La procedura di

minimizzazione consiste nella ricerca dei mintermini che soddisfano la (12.24), fino a giungere a

una espressione contenente termini non semplificabili denominati primi implicanti. Il metodo della

mappa di Karnaugh ben si adatta a funzioni con un massimo di quattro variabili. Il metodo si può, in

ogni caso, estendere a funzioni di cinque o sei variabili usando rispettivamente due o quattro

mappe. Per facilitare la ricerca dei primi implicanti Karnaugh propone di rappresentare la tabella

della verità in modo diverso e precisamente mediante la costruzione di una mappa nella quale i

termini canonici sono il più possibile contigui. In Fig. 12.13 sono mostrate le mappe di Karnaugh

per funzioni a 1, 2, 3, e 4 variabili. Ogni mappa è costituita da un numero di caselle pari al numero

di possibili combinazioni delle variabili d’ingresso. Per ogni variabile, la mappa è divisa con linee

orizzontali e verticali in due parti: in una la variabile è «vera» (1) e nell’altra è «falsa» (0). La

compilazione della mappa di Karnaugh avviene inserendo nella cella indirizzata dalla combinazione

riga-colonna il valore (0 o 1) assunto dalla funzione per la combinazione binaria prescelta, se data

240

sotto forma di tabella della verità. Se la funzione è data sotto forma algebrica si devono da questa

riconoscere le combinazioni per cui la funzione vale 0 o 1. Ad esempio se:

Y (A, B, C) = A B C + ABC + ABC ,

si deve usare la mappa di Karnaugh a tre variabili e scrivere 1 nella cella ABC = 101, ABC = 010 e

in ABC = 111; in tutte le altre caselle si deve scrivere 0. Se la funzione è data sotto forma algebrica

non canonica è necessario prima canonizzare la funzione e successivamente compilare la mappa di

Karnaugh. Per canonizzare la funzione basta applicare l’assioma del complemento e la proprietà

distributiva. Se ad esempio, una funzione a tre variabili A, B e C possiede il termine non canonico

AB, per canonizzarlo basta moltiplicarlo per (C + C ) (che è uguale a 1) e pertanto si hanno i due

termini canonici ABC + ABC .

Fig. 12.13 – Mappe di Karnaugh a 1, 2, 3 e 4 variabili

Si osservi che la suddivisione di ogni singola mappa e le configurazioni binarie associate ad

ogni casella sono tali che nel passare da una casella a quella immediatamente «adiacente» sulla riga

e sulla colonna cambia una sola variabile. Ad esempio, con riferimento alla Fig. 12.14, relativa ad

una mappa a quattro variabili, la casella corrispondente alla combinazione ABCD = 0001, indicata

con un asterisco, risulta adiacente alle caselle indicate con una freccia. Infatti è facile verificare che

le quattro caselle che contornano la casella ABCD = 0001 differiscono da quest’ultima per il

cambiamento di una sola variabile.

241

Fig. 12.14 – Mappe di Karnaugh di una funzione a 4 variabili in cui si evidenzia

l’adiacenza tra la casella indicata con un asterisco e le quattro che la

contornano, indicate con una freccia

In definitiva sono da considerarsi adiacenti, sia le caselle immediatamente contigue sulla riga e

sulla colonna sia quelle che si trovano sulla periferia e che hanno stessa riga ma colonna opposta,

oppure stessa colonna ma riga opposta. La mappa di Karnaugh si può quindi immaginare posta su

un’ipotetica sfera in modo da considerare contigui i lati opposti. Si osservi che le combinazioni

binarie di riga e colonna seguono il codice Gray che gode della proprietà di modificare un solo bit

nel passare da una configurazione binaria a quella immediatamente precedente o seguente.

La procedura di minimizzazione con il metodo della mappa di Karnaugh può essere effettuato se

la funzione booleana è espressa nella prima o nella seconda forma canonica. Una volta disegnata la

mappa si scrive in ogni casella il valore che la funzione assume per quelle combinazioni delle

variabili d’entrata.

Consideriamo la minimizzazione nella prima forma canonica. Per la proprietà (12.24) due

caselle adiacenti contenenti ciascuna «1» corrispondono ad un unico termine formato solo dalle

variabili comuni. Analogamente se vi sono quattro caselle adiacenti contenenti «1», che possono

trovarsi in fila o formare un quadrato, si hanno due variabili che cambiano e che sono quindi

eliminate. L’implicante primo corrispondente è costituito dalle variabili che in tutte le caselle hanno

lo stesso valore.

In generale, 2n caselle adiacenti consentono l’eliminazione di n variabili. Se una casella contiene

un « 1 » isolato, ad esso corrisponde un termine canonico non semplificabile. La minimizzazione

avviene considerando dapprima i gruppi che contengono un numero elevato di «1» adiacenti,

giacché questi sono descritti da un implicante primo con un numero minimo di variabili.

La stessa procedura è valida se la funzione è espressa nella seconda forma canonica salvo che

sostituire «1» con «0» e considerare i maxtermini invece dei mintermini. Evidentemente l’utilizzo

242

della seconda forma canonica conviene di più, quando si ha un numero minore di caselle con «0» in

quanto ciò conduce ad un numero minore di maxtermini.

Come esempio si consideri la funzione

Y = A B C + A B C + A B C + ABC ;

si costruisce la mappa di Karnaugh:

e si ricava la funzione minimizzata:

Y = A B + B C + ABC .