LOGICA BINARIA E CIRCUITI



Documenti analoghi
4 3 4 = 4 x x x 10 0 aaa

Calcolatori: Algebra Booleana e Reti Logiche

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

ALGEBRA DELLE PROPOSIZIONI

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Logica binaria. Porte logiche.

I.I.S. Primo Levi Badia Polesine A.S

Laurea Specialistica in Informatica

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Fondamenti di calcolo booleano

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Alcune nozioni di base di Logica Matematica

Cap. 3 Reti combinatorie: analisi e sintesi operatori logici e porte logiche

Comparatori. Comparatori di uguaglianza

Algebra di Boole ed Elementi di Logica

I sistemi di numerazione

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Appunti sulla Macchina di Turing. Macchina di Turing

SISTEMI DI NUMERAZIONE E CODICI

Operatori logici e porte logiche

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Utilizzo I mintermini si usano quando si considererà la funzione di uscita Q come Somma di Prodotti (S. P.) ossia OR di AND.

ESEMPIO 1: eseguire il complemento a 10 di 765

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica.

risulta (x) = 1 se x < 0.

Corrispondenze e funzioni

Memorie ROM (Read Only Memory)

2AE 2BE [Stesura a.s. 2014/15]

Numeri naturali numeri naturali minore maggiore Operazioni con numeri naturali

LE FUNZIONI A DUE VARIABILI

Informazione analogica e digitale

Dimensione di uno Spazio vettoriale

Dispense di Informatica per l ITG Valadier

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Variabili logiche e circuiti combinatori

Matematica Computazionale Lezione 4: Algebra di Commutazione e Reti Logiche

I CIRCUITI ELETTRICI. Prima di tutto occorre mettersi d accordo anche sui nomi di alcune parti dei circuiti stessi.

Lezione 9: Cambio di base

Fondamenti di Informatica 2. Le operazioni binarie

Capitolo 2. Operazione di limite

Il principio di induzione e i numeri naturali.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Codifica binaria e algebra di Boole

Schemi delle Lezioni di Matematica Generale. Pierpaolo Montana

I PROBLEMI ALGEBRICI

Lezione 8. La macchina universale

LA CORRENTE ELETTRICA CONTINUA

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Sintesi Combinatoria Uso di componenti diversi dagli operatori elementari. Mariagiovanna Sami Corso di reti Logiche 8 Anno

Convertitori numerici in Excel

Algoritmi e strutture dati. Codici di Huffman

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

Lezioni di Matematica 1 - I modulo

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI

Come visto precedentemente l equazione integro differenziale rappresentativa dell equilibrio elettrico di un circuito RLC è la seguente: 1 = (1)

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Algebra di Boole. Le operazioni, nell algebra booleana sono basate su questi tre operatori: AND ( ), OR ( + ),NOT ( )

I SISTEMI DI NUMERAZIONE

1. Limite finito di una funzione in un punto

Esercizi su lineare indipendenza e generatori

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

V= R*I. LEGGE DI OHM Dopo aver illustrato le principali grandezze elettriche è necessario analizzare i legami che vi sono tra di loro.

Reti Logiche. Le reti logiche sono gli elementi architettonici di base dei calcolatori, e di tutti gli apparati per elaborazioni digitali.

3 GRAFICI DI FUNZIONI

Transitori del primo ordine

SOMMARIO I radicali pag I radicali aritmetici pag Moltiplicazione e divisione fra radicali aritmetici pag.

Sia data la rete di fig. 1 costituita da tre resistori,,, e da due generatori indipendenti ideali di corrente ed. Fig. 1

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

1. PRIME PROPRIETÀ 2

Prodotto libero di gruppi

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

PROPRIETA' ASSOCIATIVA La somma di tre o più addendi non cambia se al posto di alcuni di essi si sostituisce la loro somma.

13. Campi vettoriali

Le Mappe di Karnaugh.

Codifiche a lunghezza variabile

Matematica generale CTF

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Informatica. Rappresentazione dei numeri Numerazione binaria

RETI E SOTTORETI. Copyright 2010 Marco Salatin Pagina 1

La Logica Proposizionale. (Algebra di Boole)

APPUNTI DI ELETTRONICA DIGITALE

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Corso di Informatica

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense

Rappresentazione dei numeri in un calcolatore

L algebra di Boole. Cenni Corso di Reti Logiche B. Mariagiovanna Sami

Amplificatori Audio di Potenza

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

Visione d insieme DOMANDE E RISPOSTE SULL UNITÀ

MAPPE DI KARNAUGH e sintesi ottima

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Sommario. Teoremi Maxterm Forme Canoniche Mappe di Karnaugh Fine lezione

Appunti di Sistemi Elettronici

1 Applicazioni Lineari tra Spazi Vettoriali

Le funzioni continue. A. Pisani Liceo Classico Dante Alighieri A.S A. Pisani, appunti di Matematica 1

u 1 u k che rappresenta formalmente la somma degli infiniti numeri (14.1), ordinati al crescere del loro indice. I numeri u k

Transcript:

LOGICA BINARIA E CIRCUITI 1. Espressioni e calcolo algebrico. 2 2. Funzioni booleiane. 3 3. Operatori logici 5 4. Espressioni logiche. 6 5. Il teorema fondamentale 8 6. e circuiti. 9 7. Relè 10 8. Reti combinatorie. 12 9. Reti combinatorie 14 9.1 Operatore E-OR. 14 9.2 Porte AND ed OR ad n ingressi. 15 9.3. Funzioni vettoriali. 15 9.3.1 Somma di due bit (Half Adder). 15 9.3.2 Somma di tre bit (Full Adder). 16 9.4 Sommatore ad n bit 17 9.5 Comparatore a n bit. 17 9.6 Circuito con abilitazione. 18 9.7 Decodificatore a 2 bit. 18 9.8 L'unità aritmetico-logica (ALU) 18 Boole.doc Pagina 1 di 19

L'algebra normale studia l'insieme dei numeri e delle funzioni in esso definibili; questo studio è ricco e complesso perché ricco e complesso è l'insieme che vogliamo studiare. L'algebra di Boole 1 si limita ad uno studio molto più semplice: quello delle funzioni definibili in insiemi finiti, anzi nel più semplice degli insiemi finiti, quello avente solo due elementi 2. Si definisce il concetto di funzione e di espressione logica e si studiano e dimostrano le regole per manipolare queste espressioni così come si studiano e dimostrano le regole per manipolare le e- spressioni algebriche; di più, però, riusciremo a costruire "macchine" che automaticamente calcolano queste espressioni. 1. Espressioni e calcolo algebrico. Una espressione algebrica è la composizione di variabili e costanti numeriche legate tra di loro per mezzo di operatori aritmetici; un'espressione algebrica è un modo per indicare la soluzione di un problema di tipo generale. Quanto detto, se è poco rigoroso dal punto di vista matematico, ci è abbastanza familiare dal punto di vista informatico: possiamo dire che il linguaggio algebrico è un linguaggio per descrivere algoritmi; in effetti è il miglior linguaggio sinora inventato almeno per gli algoritmi relativi ad una certa classe di problemi, quelli, cioè, che si possono tradurre in relazioni tra numeri. Consideriamo, per esempio, il seguente problema (facile, perché di geometria): sui lati di un quadrato, si segnino i punti medi; congiungendoli si ottiene un nuovo quadrato: qual è l'area della figura ottenuta togliendo il quadrato interno da quello e- sterno? se nel testo fosse stata assegnata una particolare misura, avremmo avuto un problema particolare, a noi interessa invece risolvere il problema in generale. L'espressione: 2 2 2 2 l l l (*) 2 2 indica la soluzione del problema; questa espressione può essere, però, semplificata ottenendo l 2 /2 (**). Ciò significa che sia eseguendo i calcoli indicati in (*), sia eseguendo i calcoli indicati in (**) si ottiene sempre la stessa quantità, qualunque sia il valore che diamo ad l. La stessa scoperta (che il quadrato interno è la metà di quello esterno) poteva realizzarsi anche per via geometrica 3, ma il calcolo algebrico ci permette di ottenere il risultato in maniera automatica applicando degli algoritmi basati sulle proprietà dei numeri delle operazioni, senza che da parte nostra sia necessaria alcuna intelligenza, mentre semplificare un problema per via geometrica normalmente non è semplice come nell'esempio proposto. Il calcolo algebrico (il cui apprendimento costa indicibili fatiche agli studenti di tutto il mondo), anche se ha acquistato una sua autonoma e fondamentale valenza per lo sviluppo della matematica, fu in origine sviluppato semplicemente come una tecnica a per semplificare i calcoli numerici. I problemi di geometria non solo i soli problemi che si possono ricondurre a relazioni tra numeriche numeri: la fisica, a partire dal VI secolo, si prefisse lo scopo di tradurre i suoi problemi in relazioni tra grandezze («occorre saper leggere il libro della natura, che è scritto in 1 Da Boole George (1815-1864), matematico inglese 2 Lo studio di un insieme con soltanto un elemento sarebbe banale. 3 con considerazioni, in questo caso molto semplici. Quali? Boole.doc Pagina 2 di 19

caratteri matematici», affermò Galilei), e visto il successo ottenuto da questo programma, anche altre scienze, hanno cercato di imitare la fisica. 2. Funzioni booleiane. Dato un insieme di due elementi B = {} dicesi funzione logica (fl) o booleana un'applicazione f : B n B k. Poiché una funzione a k valori (funzione vettoriale) può essere sempre considerata come una k-pla di funzioni (componenti) ad un valore, ci limiteremo a considerare le funzioni scalari f : B n B. ( 4 ) Nel dominio dell'aritmetica abbiamo i seguenti esempi: - la funzione quadrato associa ad un valore un altro valore: è una funzione f : R R; - la funzione somma associa a due valori un terzo valore: è una funzione f : R 2 R; - l'espressione x-z definisce una funzione di tre variabili f : R 3 R; - alla terna (x,, z) R 3 associamo la coppia (3x, 8xz) R 2 ; si tratta di una funzione a due valori (funzione vettoriale) di tre variabili reali, ma possiamo studiare separatamente le due funzioni scalari f(x,,z) = 3x e f(x,,z) = 8xz. Un esempio di funzione logica è il seguente: la funzione di tre variabili che vale quando esattamente due delle variabili indipendenti valgono. Nel caso delle funzioni numeriche, la funzione può essere specificata soltanto per mezzo di una regola: questa può essere espressa descrittivamente a parole ("la funzione radice quadrata è quella che, dato un numero, gli associa..."), oppure per mezzo di un algoritmo, scritto nel linguaggio formalizzato dell'algebra, cioè un'espressione algebrica: per esempio f(x,,z) = 3x. Una funzione logica può essere specificata per mezzo di una descrizione (come nell'esempio precedente), potrà essere specificata (come n x z f 0 vedremo) per mezzo di un'espressione, ma può anche essere specificata in un altro modo: gli insiemi B e B n 1 sono insiemi finiti, quindi potremo 2 elencare estensivamente tutte le possibili n-ple di B n con accanto il valore corrispondente tramite la funzione; questo elenco si dice tavola di 4 3 5 verità (tdv) della funzione: per la funzione descritta sopra avremo la tavola di verità qui accanto. 6 7 Abbiamo usato i simboli e per sottolineare il fatto che ci stiamo occupando in maniera astratta di un insieme di due oggetti la cui natura non ci interessa; la nozione matematica di funzione è talmente astratta che la nostra funzione potrebbe essere interpretata concretamente come una regola di un giuoco di carte: «prendi cuori solo se ci sono a terra esattamente due cuori». Nel seguito sarà più comodo utilizzare, come si fa normalmente, i n x z f simboli 0 ed 1; deve esser tuttavia chiaro che si tratta soltanto di simboli e che non stiamo parlando dei numeri uno e zero. 1 0 0 1 0 0 0 0 0 1 Sostituendo i simboli nella tdv, risulta evidente che una n-pla di B n 2 0 1 0 0 3 0 1 1 1 può essere pensata come il numerale binario di un naturale e si possono 4 1 0 0 0 quindi elencare le n-ple secondo l'ordine indotto in tal modo. Dal calco- 5 1 0 1 1 6 1 1 0 1 7 1 1 1 1 4 l insieme B n è l insieme delle disposizioni dei due elementi di B presi n alla volta; una funzione scalare B n B associa a ciascuna di quelle disposizioni un elemento di B stesso. Boole.doc Pagina 3 di 19

lo combinatorio sappiamo che tali n-ple sono le disposizioni con ripetizione di 2 oggetti ad n alla volta e che sono dunque in numero di 2 n. Quante sono le possibili funzioni? Anche la colonna della f può essere pensata come un n 2 2 colonne di- numerale binario: essa è costituita da 2 n cifre e dunque sarà possibile scrivere verse, ognuna corrispondente ad una diversa funzione. Essendo n il numero delle variabili, è possibile definire esattamente n 2 2 funzioni le funzioni di 1 variabile sono 4, quelle di 2 variabili sono 16, quelle di 3 variabili sono 256, quelle di 4 variabili sono 65.536 ecc. Ad ogni funzione è inoltre possibile associare un numero caratteristico che la descrive perfettamente poiché scrivendo in binario quel numero otterremo la tdv di quella funzione 5. Qualunque sia il numero n>1 delle variabili, posto p 2 2 n, avremo: la f 0 è la funzione che ad ogni n-pla associa sempre il valore 0 (oppure, oppure, oppure "penna", a seconda della natura degli elementi di B); la f p-1 (cioè l'ultima funzione) è quella che associa ad ogni n-pla sempre il valore 1 (oppure, oppure, oppure "matita", a seconda della natura degli elementi di B); le due funzioni precedenti sono dette funzioni costanti. la f 1 vale 1 solo quando tutte le variabili sono 1; la f p-2 (cioè la penultima funzione) vale 0 solo quando tutte le variabili sono 1; La f p/2-1 (cioè la funzione centrale sx) vale 0 solo quando tutte le variabili sono 0; La f p/2 (cioè la funzione centrale dx) vale 1 solo quando tutte le variabili sono 0; Le funzioni f 1 e f p/2-1 vengono chiamate rispettivamente prodotto e somma di n variabili ed indicate con i simboli AND n e OR n ; le altre due funzioni sono indicate con NAND n e NOR n Non a caso le funzioni sono state descritte in coppia: dato un x B n se una funzione gli associa 1, l'altra funzione gli associa 0 e viceversa. Come vedremo meglio in seguito, l'una funzione si dice negata dell'altra. Quesiti: 1. descrivere la f 127 dell'insieme delle funzioni di tre variabili. 2. descrivere la f 128 dell'insieme delle funzioni di tre variabili. 3. descrivere la f 32767 dell'insieme delle funzioni di quattro variabili. 4. descrivere la f 32768 dell'insieme delle funzioni di quattro variabili. 2 1 5. descrivere la f x dell'insieme delle funzioni di n variabili, dove x 2 1 x 6. descrivere la f x dell'insieme delle funzioni di n variabili dove 7. qual è la condizione perché due funzioni (dello stesso numero di variabili) costituiscano una coppia di negate? n n 2 1 2 5 il numero caratteristico della funzione della tabella è 151. Boole.doc Pagina 4 di 19

3. Operatori logici Le funzioni di una variabile sono le quattro a lato: la f 0 e f 3 sono le funzioni costanti la f 1 è la funzione identità la f 2 che ad una variabile associa l'altro valore viene detta negazione logica ed è indicata con il simbolo NOT. x #0 #1 #2 #3 0 0 0 1 1 1 0 1 0 1 Le funzioni di due variabili sono 16 e possiamo facilmente scriverle tutte: x #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Come al solito, la prima e l'ultima sono le due funzioni costanti; la tabella mostra anche come si presentano le coppie di negate. La f 1 vale 1 solo quando entrambe le variabili valgono 1( 6 ): essa viene detta congiunzione o prodotto logico ed indicata con il simbolo AND. La f 7 vale 0 solo quando entrambe le variabili valgono 0 ( 7 ): essa viene detta disgiunzione o somma logica ed indicata con il simbolo OR. Le f 14 e f 8 sono le negate, rispettivamente, della f 1 e della f 7 e vengono chiamate NAND e NOR. La f 6 vale 1 solo quando le variabili hanno valori diversi ( 8 ): essa viene detta disgiunzione esclusiva ed indicata con il simbolo E-OR; la sua negata f 9 è indicata con E-NOR. Le funzioni NOT, AND, OR vengono dette operatori logici e per esse, anziché la notazione funzionale NOT(x), AND(x,), OR(x,) si usa la notazione operazionale: x ( 9 ), x oppure xand, x+ oppure xor.( 10 ) 6 alternativamente: «vale 0 non appena una variabile vale 0». 7 alternativamente: «vale 1 non appena una variabile vale 1». 8 alternativamente: «vale 0 se le variabili hanno valore eguale». 9 La notazione corretta sarebbe x (x sopralineato), ma usiamo la sottolineatura per motivi tipografici. 10 È poco consueto, ma le espressioni algebriche ed aritmetiche possono essere scritte in notazione funzionale (detta anche rpn [reverse polish notation = notazione polacca inversa o prefissa]); ad esempio anziché 3+4 si scrive +(3,4) (che si legge «più di 3 e 4») l'espressione (a+b)(c+d) si scrive (+(a,b),+(c,d)) (che si legge «per di più di a e b con più di c e d») la notazione sottolinea il fatto che le operazioni avvengono sempre tra due operandi: (a + b + c) +(a, +(b, c)) Questa notazione elimina l'uso di [ ] e {}; così mentre (b+d)[a+c(a+2)] diventa (+(b,d), +(a, (c, +(a,2)))) (a, +(+(c,d), +( (d, +(a,d)), (f, +(b,c))))) equivale a a{(c+d)+ [d(a+d) + f(b+c)]}. Boole.doc Pagina 5 di 19

4. Espressioni logiche. Le operazioni così definite godono di proprietà particolari, generalmente diverse dalle proprietà dell'algebra ordinaria: il loro studio è l'oggetto dell'algebra di Boole. Vediamo le proprietà principali: 1) (a + b) = ( b + a) ; a b = b a somma e prodotto sono commutativi 2) a+(b+c)=(a+b)+c ; a(bc) = (ab)c somma e prodotto sono associativi 3) a (b + c) = ab + ac distributività del prodotto rispetto alla somma 4) a+(b c) = (a + b) (a + c) distributività della somma rispetto al prodotto 5) a a = a ; a + a = a leggi di idempotenza: in logica non è possibile definire né una funzione "potenza" né una funzione "multiplo" 6) a + a b = a ; a (a + b) = a leggi di assorbimento 7) (a + b) = a b ; a b = a + b leggi di De Morgan: 8) a = a legge di involuzione (due negazioni affermano) 9) (a + a) = 1 ; a a = 0 10) a+1 = 1 ; a0=0 Osserviamo che le leggi sono tutte a coppia: si ottiene l'una dall'altra sostituendo la somma con il prodotto (vedi leggi distributive) ed il valore 0 con il valore 1: questo è una proprietà dell'algebra di Boole: se vale una proprietà, vale anche la proprietà duale. Abbiamo usato termini come leggi o proprietà: si tratta in realtà di teoremi da dimostrare. Per esempio la (9) si dimostra osservando che: a = 0 a = 1 ; a = 1 a = 0 quindi nell'operazione uno dei termini è 1 l'altro è 0 e quindi segue il teorema per la definizione delle due operazioni. Dimostriamo la proprietà distributiva della somma rispetto al prodotto: a+(b c) = (a + b) (a + c) dobbiamo verificare che qualunque valore assumano a, b, c, si ottiene sempre lo stesso risultato sia eseguendo le operazioni al primo membro sia eseguendo quelle al secondo membro: a+ bc a b c a+b a+c (a+b) bc (a+c) 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 le due colonne in grigio ci mostrano che la proprietà è vera. Boole.doc Pagina 6 di 19

Abbiamo fatto qualcosa che non avremmo potuto fare con l'algebra ordinaria: i numeri sono infiniti e non possiamo affermare che una proprietà algebrica è vera perché l'abbiamo verificata con alcuni o con un miliardo di numeri: si deve dimostrare che la proprietà è una conseguenza logica dei postulati gli elementi di B 3 sono 8 e noi possiamo verificare esaustivamente se una proprietà è sempre vera oppure no. In linea di principio, possiamo eseguire una verifica esaustiva qualunque sia la grandezza di B n, dato che non sarà mai un insieme infinito, ma quando n è grande sarà più conveniente cercare una dimostrazione. La proprietà (8) ci permette di estendere la somma ed il prodotto (finora definite per due sole variabili) ad un numero qualsiasi di variabili; si chiama espressione logica (el) una combinazione di variabili logiche per mezzo di operatori logici. Con la notazioni adottata, valgono in una espressione logica le stesse regole di precedenza utilizzate nelle espressioni algebriche. Sono esempi di el: x x xz ( x )( x z) ( x )( x z) x ( x z) xwz ( xzw) la prima in due variabili, le successive in tre variabili, l'ultima in quattro variabili. Come nel caso delle espressioni algebriche, assegnando un valore alle variabili ed eseguendo le operazioni indicate (rispettando le parentesi e le precedenza tra gli operatori), si ottiene il valore dell'espressione. Allora, analogamente al caso algebrico, data una el resta definita la funzione logica che ad ogni n-pla (punto) di B n associa il valore dell'espressione calcolata in quel punto. Nel caso algebrico, due espressioni si dicono equivalenti quando individuano la stessa funzione (come (x+)(x-) = x 2-2 ): semplificare un'espressione significa sostituire l'espressione data con un'altra equivalente più semplice che contenga, cioè, meno termini e quindi meno o- perazioni da eseguire; la sostituzione sarà lecita se conforme alle leggi dell'algebra, quindi (a + a) può essere sostituito da 2a ma non da a 2. Anche nel caso logico due espressioni possono essere equivalenti, possono cioè individuare la stessa funzione; tra espressioni equivalenti preferiamo naturalmente quella che contiene il minor numero di operazioni ma per poter semplificare una el dovremo usare le regole dell'algebra di Boole. Osserviamo che, come nell'algebra ordinaria, una lettera può indicare anche una intera espressione: se è vero che (x+)(x-) = x 2-2 allora è anche vero che (3x+2+z) (3x-2-z) = 9 x 2 - (2+z) 2 Boole.doc Pagina 7 di 19

5. Il teorema fondamentale Una el definisce una fl, ma le f : B n B sono in numero finito, dunque la f appena definita deve essere necessariamente una di quelle di cui abbiamo parlato nel paragrafo 2. Quale? Poiché B n è finito, potremo calcolare l'espressione per tutti i possibili punti (calcolare cioè la tdv dell'espressione) ottenendo il numerale binario caratteristico della funzione. Ad esempio, osserviamo che nell'ultima delle el scritte, il secondo termine della congiunzione è il negato del primo quindi per la proprietà (9) l'espressione varrà sempre 1: la funzione in 4 variabili definita da xwz + (xwz) è dunque la f 65535.A questo punto conosciamo tre modi per definire una funzione logica: per mezzo di una espressione verbale, per mezzo di una tavola di verità (o un numero caratteristico), per mezzo di una espressione logica. Lasciando perdere il primo modo (è difficile conciliare algoritmi ed espressioni verbali), abbiamo visto come si ottiene una tdv da una el; è possibile il passaggio inverso, cioè data una tdv si può ottenere algoritmicamente una el che rappresenti la stessa funzione? Il teorema fondamentale afferma che data una tdv è possibile scrivere una espressione corrispondente e fornisce due possibili algoritmi: 1) (SOMMA DI PRODOTTI) (AND-OR): l'espressione è data dalla somma di tanti termini quanti sono gli 1 della tdv, ciascun termine essendo il prodotto delle variabili di ingresso, in forma naturale se la variabile vale 1, in forma negata se la variabile vale 0. 2) (PRODOTTO DI SOMME) (OR-AND): l'espressione è data dalla prodotto di tanti termini quanti sono gli 0 della tdv, ciascun termine essendo la somma delle variabili di ingresso, in forma naturale se la variabile vale 0, in forma negata se la variabile vale 1. Facciamo alcune osservazioni: i due algoritmi costituiscono, come doveva essere, una coppia di enunciati duali. ciascuna delle due espressioni che si ottengono applicando i due algoritmi si chiama forma booleana canonica (fbc) della funzione; le due fbc sono espressioni di diversa lunghezza e non sono, in generale, l'espressione minima. Si applicherà l'uno o l'altro degli algoritmi secondo che nella tdv vi siano più 1 o più 0; occorrerà poi semplificare ulteriormente, con le regole dell'algebra di Boole, l'espressione ottenuta, sino a raggiungere l'espressione minima. le funzioni AND ed OR non hanno nessun particolare significato: si dimostra che possono essere prese come operatori, oltre al NOT, due qualsiasi delle 16 funzioni di due variabili. La scelta di quegli operatori particolari è dovuta alle considerazioni che svolgeremo nel paragrafo seguente. il risultato che abbiamo ottenuto (una fl può sempre essere espressa per mezzo di una el) è una proprietà caratteristica dell'algebra di Boole; questa proprietà non vale per l'algebra normale, nella quale non tutte le funzioni possono essere espresse per mezzo di una espressione algebrica. Boole.doc Pagina 8 di 19

6. e circuiti. Tutto quanto detto fin qui è matematica: in parte per il carattere schivo e riservato del suo inventore, in parte perché nessuno riusciva a vedere una pur minima applicazione pratica, l'algebra di Boole fu trascurata per più di settant'anni. Mentre Boole sviluppava la sua teoria matematica, un altro inglese, Charle Babbage, progettò la Analitical Machine, una macchina automatica per il calcolo, che fosse in grado di eseguire non semplicemente operazioni aritmetiche, ma veri e propri programmi memorizzat; i principi su cui era basata questa macchina anticipavano in maniera sbalorditiva i principi su cui sono basati i moderni calcolatori, ma per realizzare la sua macchina Babbage aveva a disposizione solo la tecnologia meccanica 11 : un dispositivo basato su leve e ingranaggi in movimento non può avere, e conservare nel tempo, la precisione necessaria e Babage non riuscì a concretizzare il suo progetto. Nel periodo tra le due guerre mondiali, si ripresero ed intensificarono le ricerche per arrivare alla costruzione di una macchina automatica per il calcolo: era ormai disponibile la tecnologia e- lettronica e ci si rese conto che il funzionamento di certi dispositivi era descritto dall'algebra booleana, fino allora trascurata. Il progetto di Babbage poté essere realizzato (e migliorato) sostituendo le rotelline con i relè, che all'epoca di Boole non esistevano, ma il cui comportamento Boole aveva descritto. Data una fl ci piacerebbe avere a disposizione una calcolatrice automatica, vale a dire un dispositivo che, immettendo in qualche maniera i valori delle variabili, ci segnali (alzando, per esempio, una bandierina) se il valore della fl è 0 oppure 1; non stiamo parlando di una calcolatrice universale, in grado di calcolare qualunque fl, bensì di qualcosa molto più semplice: una scatola nera in grado di calcolare una certa particolare fl. Si chiama porta logica un dispositivo (di qualunque natura, anche meccanico) in grado di calcolare uno degli operatori logici. È molto semplice costruire un circuito elettrico che realizzi una porta AND o una porta OR: bastano un po di filo elettrico, una pila, due interruttori, una lampadina e nessuna nozione di elettricità per assemblare i due circuiti della figura 1 e verificare che effettivamente essi si comportano come desideriamo; le due posizioni di un interruttore rappresentano i due possibili U U fig.1 AND OR valori della variabile x, le due posizioni dell'altro rappresentano i due possibili valori della variabile, i due possibili stati della lampadina rappresentano i possibili valori della funzione: potremmo racchiudere i circuiti in due scatole, lasciando sul frontale gli interruttori e la lampadina, ed otterremo le porte logiche che volevamo. Con lo stesso principio possiamo costruire macchine più complesse, come quella di fig.2 che calcola (x+wz)v. Osservando il circuito possiamo renderci conto che esso V consiste nel collegare, in serie o in parallelo, o due interruttori o due gruppi di in- U W Z ( + W Z ) V terruttori; questi gruppi, a loro volta sono costituiti dal collegamento, in serie o in fig.2 parallelo, o di due interruttori o di due 11 Nell'ottocento la meccanica di precisione aveva avuto un grande sviluppo ed erano stati creati autentici capolavori; il Musée National des Tecniques di Parigi conserva numerosi esemplari di orologi in grado di calcolare le fasi lunari o addirittura le eclissi, automi capaci di scrivere o suonare il pianoforte, e numerose macchine calcolatrici meccaniche. Boole.doc Pagina 9 di 19

gruppi di interruttori e così via: in tal maniera potremmo costruire complicati circuiti in grado di calcolare funzioni assai complesse; si chiama rete logica un circuito in grado di calcolare una funzione logica. 7. Relè Nelle macchine a interruttori, la rappresentazione degli input (posizione di interruttori) è fisicamente diversa dalla rappresentazione dell'output (passaggio di corrente elettrica 12 ): questa disomogeneità rende la costruzione di macchine a interruttori estremamente complicata. La disomogeneità può essere eliminata sostituendo gli interruttori con relè, in maniera da semplificare la costruzione. Il relè 13 (o interruttore elettromagnetico) è in sostanza una elettrocalamita che fa scattare un interruttore che chiude (o apre) un secondo circuito : fig.3 elettrocalamita interruttore RELÉ Come si vede i due circuiti sono elettricamente separati ed in essi possono circolare correnti di intensità differenti: il circuito del relè può essere a bassissima intensità e comandare a distanza un circuito in cui circola una corrente molto elevata. La prima utilizzazione del relè si ebbe nella costruzione delle reti telegrafiche: abbassando il tasto telegrafico viene chiuso un circuito così che, alla stazione ricevente, il pennino scrivente, attirato da una elettrocalamita, si abbassa tracciando il punto o la linea su di una striscia di carta in movimento. L'intensità di corrente in un circuito, per la legge di Ohm, è inversamente proporzionale alla resistenza del circuito; a sua volta la resistenza di un filo conduttore aumenta in proporzione alla lunghezza e, quindi, l'intensità è inversamente proporzonale alla lunghezza del filo: i v r v 1 ; r kl i k l sulle lunghe distanze l'intensità della corrente si riduce e può essere talmente debole da non riuscire ad azionare la punta scrivente alla stazione di arrivo; d'altra parte, non si possono utilizzare ddp elevate sia per motivi di sicurezza, sia perché, all'epoca era difficile ottenere grosse ddp. Il problema venne risolto con l'uso del relè: il tasto telegrafico è un relè che comanda un secondo relè più avanti sulla linea, che ne comanda un terzo più avanti ancora e così via: ad ogni "stazione" si ha dunque un "cambio di cavalli" in maniera che in ogni tratto della linea possa correre una "corrente fresca"; questa corrente può, comunque, anche essere molto debole, mentre l'ultimo relè comanda il circuito dell'apparecchio scrivente terminale, che richiede correnti più elevate. 12 Nella fig.2 è marcato un punto: l'output vero e proprio consiste nel passaggio di corrente in quel punto; la lampadina ha solo la funzione di rivelatore. 13 Più correttamente si dovrebbe scrivere relais; in francese relais significa stazione di posta, il luogo, cioè, dove il corriere o la diligenza potevano cambiare i cavalli stanchi e proseguire la corsa con un animali freschi; come diremo subito, il relè elettromagnetico, serviva in origine esattamente a questo. Boole.doc Pagina 10 di 19

Con tale tecnica si poté realizzare il collegamento telegrafico tra la East Coast e la California attraverso le sconfinate praterie americane; e si realizzò il cavo transoceanico che collegò (1850) l'europa con l'america: sul continente europeo un generatore immetteva nel cavo una corrente ad elevatissima ddp; data la lunghezza del cavo, la corrente circolante era di intensità bassissima e non sarebbe riuscita ad attraversare l'oceano ma era tuttavia sufficiente ad azionare un relè a metà strada sul fondo dell'oceano, relè che chiudeva il secondo tratto del cavo alimentato da un generatore posto sul continente americano. Possiamo ora ricostruire le porte AND ed OR sostituendo gli interruttori con relè, come indicato in fig.4, dove è rappresentata anche una porta NOT. A N D U OR B U AND U NOT fig.4 OR Apparentemente non è cambiato molto: si manovrano gli interruttori dei relè anziché quelli originari che ora sono "nascosti"; ma l'input è ora costituito dal fatto che passa o non passa corrente nei punti indicati con ed e non ha importanza sapere da dove arriva la corrente. La fig.5, con passaggi successivi, mostra come si possa arrivare ad un dispositivo di cui non ci interessano più gli elementi ed i collegamenti interni (vengono anche uniti i circuiti di alimentazione dei relè ed il circuito rivelatore, che nella fig.4 erano separati per rendere più comprensibili i collegamenti); tutto ciò è nascosto nella scatola AND e vediamo solo il funzionamento logico: a seconda di come sia presente corrente ai capi ed, vi sarà o non vi sarà corrente al capo U. Le variabili di ingresso sono ora omogenee alla variabile di uscita e possiamo collegare l'uscita di una porta logica con l'ingresso di un'altra porta logica: potremo costruire reti logiche di qualunque complessità ed anche un calcolatore. 14 A N D fig.5 A N D A N D A N D U A N D 14 I primi calcolatori erano costruiti con relè. Boole.doc Pagina 11 di 19

8. Reti combinatorie. Le porte logiche si possono acquistare a manciate, in qualunque negozio di componenti e- lettronici: si presentano come dei piccoli componenti, come se ne possono vedere nell'interno di qualunque radiolina, con due (porta NOT) o tre piedini (porte AND ed OR); la tecnologia costruttiva non è più quella dei relè, ma ciò che importa è che inserendo una porta AND tra pila e lampadina, questa si accenderà soltanto quando entrambi gli ingressi sono collegati alla pila; inserendo una porta OR la lampadina si accenderà quando almeno un ingresso è sotto tensione. Ripetiamo che i dati in ingresso sono rappresentati dalla presenza o assenza di corrente ai piedini di ingresso e l'output è rappresentato egualmente da una tensione sul piedino di uscita: ciò ci permette di portare la tensione di uscita, anziché ad una lampadina, all'ingresso di un'altra porta logica e possiamo costruire un circuito complesso capace di calcolare, ad esempio, l'and di un or o l'or di un and ecc.: in altre parole un circuito siffatto potrà calcolare una el. Nel disegnare lo schema di un circuito, le pl sono rappresentate dai simboli di fig.6; le linee che collegano le pl rappresentano effettivi collegamenti elettrici, da realizzare con fili conduttori isolati: se sul disegno due linee si intersecano, i fili corrispondenti pur toccandosi, non debbono avere contatto elettrico; per indicare invece un effettivo contatto elettrico tra i fili, sullo schema dovremo marcare il punto di intersezione. Vediamo, per esempio lo schema del circuito che calcola la fl (x+wz)v già vista in fig.2. La fl è data dal prodotto tra la variabile v ed il risultato dell'el tra parentesi; dobbiamo quindi far entrare queste due "quantità" logiche in una porta AND (fig.6.1). La parentesi, a sua volta, si calcola facendo entrare in un OR i due prodotti x e wz (fig.6.2); per O R A N D N O T fig.5 v fig. 6.1 parentesi x wz v fig.6.2 x w z v fig.6.3 x w z v fig.6.4 calcolare questi ultimi occorreranno altri due AND in cui far entrare le rispettive coppie di variabili (fig.6.3). Questa lunga frase non è che la traduzione in parole della el scritta in RPN: (x+wz)v (+( (x,), (w,z)),v) la sola differenza è che nella RPN si scrivono prima gli operatori e poi gli operandi, mentre gli schemi circuitali si disegnano partendo con gli operandi a sinistra; nella fig.6.4 il circuito è stato nascosto in una scatola lasciando fuori il circuito di alimentazione e di rilevazione. Nella fig.7 sono riportati altri tre esempi; nelle el le variabili negate sono simboleggiate con il maiuscolo; il secondo esempio è evidentemente una ebc e fa vedere come far entrare la stessa variabile in più porte. Boole.doc Pagina 12 di 19 fig.7

x (+)z x xz+z z z x z w (+NOT(xz))+w Boole.doc Pagina 13 di 19

9. Reti combinatorie Si chiama rete combinatoria (rc) un circuito in grado di calcolare un el: in essa ad un dato istante, l'uscita dipende soltanto dalla combinazione di variabili di entrata presente in quell'istante. Esistono reti logiche più complesse, chiamate reti sequenziali, che considerano anche gli eventi di istanti precedenti, cioè conservano memoria di quanto è accaduto in precedenza. Le rc realizzano quanto volevamo all'inizio: data una fl (e generalmente in fase di enunciazione del problema ne abbiamo una descrizione a parole), ne possiamo calcolare la tdv e quindi ricavare la ebc ed, eventualmente semplificarla 15 ; a questo punto non ci resta che rifornirci di porte logiche e muniti di saldatore costruire il circuito che ci interessa; la semplificazione ha un significato economico ben preciso: essa consente un risparmio di componenti nella costruzione del circuito. La costruzione di una rc, potrebbe essere realizzata da chiunque, assemblando le porte logiche con fili conduttori. Industrialmente le rc vengono, (o meglio venivano) assemblate su apposite basette di plastica con forellini in cui si inseriscono i piedini dei componenti, mentre i fili conduttori sono "stampati" sul rovescio della basetta; oggi le rc vengono realizzate con circuiti integrati Come si può collegare l'uscita di una pl all'ingresso di un'altra pl, così si può collegare l'uscita di una rc ad uno degli ingressi di un'altra rc: in tal maniera si realizzano circuiti in grado di eseguire calcoli ancora più complessi; vediamo ritornare uno dei principi fondamentali della programmazione: risolvere un problema complesso scomponendolo in sottoproblemi. Una CPU è una rc di grandissima complessità progettata collegando tra di loro reti combinatorie più semplici; certamente non possiamo studiare i principi di progettazione di una CPU, ma con quanto fin qui detto, ed alcuni esempi significativi potremo almeno cercare di capire il principio di funzionamento di un computer. 9.1 Operatore E-OR. OR è la funzione logica di due variabili che assume il valore 1 quando almeno una delle variabili vale 1; si dice funzione E-OR (OR esclusivo 16 ) la funzione di due variabili che vale 1 quando una sola delle variabili vale 1. Possiamo immediatamente ricavare la tavola di verità, quindi la forma canonica e la rete logica corrispondente: x E- OR 0 0 0 0 1 1 1 0 1 1 1 0 E-OR(x,) = + x x ex-or fig.8 La funzione E-OR ricorre assai spesso nelle applicazioni; per indicarla si usa spesso il simbolo qui accanto, simile a quello dell'or, come se fosse essa stessa una porta logica. 15 Esistono in realtà procedure che forniscono direttamente l'espressione minima (mappe di Karnaugh). 16 Nella proposizione «prendo il dolce o la frutta» la congiunzione o ha un significato inclusivo: non si esclude di poter prendere entrambe le cose; nella proposizione «prendo o il dolce o la frutta» la congiunzione o ha invece un significato esclusivo: si prenderà una sola delle due cose. Boole.doc Pagina 14 di 19

l 9.2 Porte AND ed OR ad n ingressi. Abbiamo già definito le due funzioni di n variabili: AND n che vale 1 se e solo se tutte le variabili valgono 1 OR n che vale 0 se e solo se tutte le variabili valgono 0 Le rispettive tavole di verità presenteranno {un unico 1/ un unico 0} ed applicando {l'algoritmo AND-OR / l'algoritmo OR-AND} si otterranno le rispettive ebc: AND n (x 1 x 2...x n ) =x 1 x 2...x n OR n (x 1 x 2...x n ) =x 1 +x 2 +...+x n Le due funzioni vengono sintetizzate con una catena di AND o di OR, come nell'esempio in figura 9, che realizza x l'and 4 ; poiché le due n funzioni ricorrono z spesso nelle applicazioni, sarà comodo indi- xzw w n fig.9 carle con i simboli qui accanto. 9.3. Funzioni vettoriali. Abbiamo accennato all'inizio alle funzioni vettoriali, cioè alle funzioni f : B n B k che non assumono un solo valore, bensì una k-pla di valori. Consideriamo due esempi: interpretiamo le variabili logiche come bit (cioè come cifre binarie: 0 vuol dire «numero zero» ed 1 vuol dire «numero uno») e cerchiamo la funzione che ci fornisca la somma aritmetica (in binario) di due o tre bit. 9.3.1 Somma di due bit (Half Adder). x HalfAdder R S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 Calcolando la somma aritmetica di due bit si ottiene la tdv qui accanto: ad ogni coppia (x,) di variabili logiche, la funzione HalfAdder(x,) associa una coppia (R,S) di variabili logiche 17 ; si tratta dunque di una funzione vettoriale f : B 2 B 2. Per sintetizzare la rete sequenziale che cola la funzione HalfAdder, dobbiamo struire separatamente i due circuiti: quello che calcola il bit R (si tratta di un AND) e quello che calcola il bit S (si tratta di un E-OR) e "riunirli nella stessa scatola", portando gli stessi ingressi ad entrambi; questa "scatola" con due ingressi e due uscite realizza concretamente la funzione vettoriale. x l fig.10 R S 17 R sta per Riporto ed S per Somma; i due bit vengono anche chiamati H (per bit alto [Hight]) ed L (per bit basso[low]). Boole.doc Pagina 15 di 19

9.3.2 Somma di tre bit (Full Adder). La funzione FullAdder(x,,z) è una f : B 3 B 2 che ad una terna di variabili logiche associa una coppia (R,S) di variabili logiche secondo la tdv qui sotto. x z FullAdder R S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 x + = r1 s1 + z = r2 s2 x z H A 1 r1 H A 2 r 2 s 2 S Si potrebbero sintetizzare i due circuiti per la R e la S scrivendo le rispettive ebc, ma è meglio procedere in un'altra maniera: noi abbiamo già costruito la rl che somma due cifre quindi, per sommare tre cifre, possiamo sommarne prima due ed al risultato aggiungere la terza. Quindi: sommiamo anzitutto i due bit x ed per mezzo di un primo AH1: otterremo un bit basso s1 ed un bit alto di riporto r1; sommiamo il bit z con s1, per mezzo di un altro HA2: avremo una somma s2 ed un riporto r2. s2 è proprio il bit S della somma globale che cerchiamo; ci troviamo però con due riporti; dobbiamo cercare di costruire un circuito che, prendendo in input r1 ed r2, porti in uscita la R corretta; osserviamo che: r1 r2 R 0 0 0 se r1=0, significa che in realtà non c'è nessun riporto da AH1 e quindi R = r2; 0 1 1 se r1=1 sarà necessariamente r2=0 e quindi R=r1=1 1 0 1 se infatti r1 = 1 sarà s1 = 0 (poiché al massimo possiamo avere x + = 1 + 1 = 10); ma allora avremo s1 + z = 0 + z = z, (1) (1) 0/1 cioè la somma sarà di una sola cifra, quindi r2=0 x z Riassumendo questi risultati in una tabella otteniamo la tavola di verità della funzione che cercavamo: la possibilità che sia r1=r2=1 H A 1 non si verifica mai, quindi a quella combinazione possiamo associare indifferentemente 0 oppure 1; scegliendo 1, la tabella di R è H A 2 r1 quella dell'or e quindi possiamo unire i due riporti r1 ed r2 per mezzo di una porta OR, ottenendo la R corretta (ma funzionerebbe r2 s 2 egualmente bene un E-OR). fig.11 R S Boole.doc Pagina 16 di 19

9.4 Sommatore ad n bit Anche se finalmente abbiamo cominciato a parlare di numeri, non sembra che con le due reti logiche precedenti siamo andati molto lontano, ma esaminiamo l'algoritmo di somma (binaria): incolonnati i due numeri anzitutto dobbiamo sommare le due cifre più a destra; avremo una somma che scriviamo sotto la linea ed un riporto (che potrebbe essere 0) che scriviamo al di sopra della colonna successiva; ora dobbiamo sommare tre cifre ottenendo un nuovo riporto e quindi, procedendo verso sinistra, dovremo sommare sempre tre cifre. 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1. 1 1 0 R fig.12 x3 3 x2 2 x1 1 x0 0 FA F A FA HA r3 r2 s3 s2 s1 s0 9.5 Comparatore a n bit. Problema: si costruisca una rete logica che calcoli la funzione: x0 0 r1 È chiaro allora che collegando in sequenza i nostri FA ed un AH noi potremo realizzare un circuito che somma numeri binari 18. La catena in fig.12 esegue la somma di due numeri di 4 bit ciascuno: x 3 x 2 x 1 x 0 sono le cifre del primo addendo, 3 2 1 0 sono le cifre del secondo addendo, Rs 3 s 2 s 1 s 0 sono le cifre della somma 19 ; il circuito può essere "allungato", realizzando così un sommatore con un numero maggiore di bit. f((x n,x n-1,...x 1,x 0 ),( n, n-1,... 1, 0 )) = 1 x i = i i x1 1 xn-1 n-1 xn n n fig.13 interpretando i due gruppi di variabili (x n,x n- 1,...x 1,x 0 ) e ( n, n-1,... 1, 0 ) come numerali binari, la rete logica richiesta effettuerà il confronto per eguaglianza di numeri. Anziché sintetizzare la rete logica secondo il procedimento standard, osserviamo che basta realizzare un comparatore a 2 bit: confrontate tutte le coppie (x i, i ), se le comparazioni risultano positive i due numeri (x n,x n-1,...x 1,x 0 ) e ( n, n-1,... 1, 0 ) sono eguali: il comparatore a n bit si realizza dunque inviando ciascuna coppia di variabili (x i, i ) ad un comparatore binario ed unendo tutte le uscite con un AND a n ingressi. 18 Più formalmente diciamo che il problema di sommare due numeri di n bit può essere scomposto così: (1)costruire una r.l. che somma due bit; (2) costruiure una r.l. che somma tre bit; (3) realizzati questi due elementi, collegarli in una catena. 19 La somma di due numeri di n cifre ha n+1 cifre, la prima delle quali è 0 oppure è 1; ciò è vero qualunque sia la base, basta provare a fare la somma 9999+9999 Boole.doc Pagina 17 di 19

Scrivendo la tavola di verità si vede subito che il comparatore a due bit è la negata dell'e-or; ciò ci permette di disegnare la rete logica richiesta. x comp 0 0 1 0 1 0 1 0 0 1 1 1 9.6 Circuito con abilitazione. Data una funzione logica f(x n,x n-1,...x 1,x 0 ), consideriamo quest'altra funzione: x 0 x 1...... f x n a fig.14 A((x n,x n-1,...x 1,x 0 ),a) = f(x n,x n-1,...x 1,x 0 ) a Questa funzione vale 0 quando a = 0, mentre assume il valore della funzione f quando a = 1; costruendo la rete logica corrispondente, avremo dotato la rete di f di un "interruttore": se la linea a porta corrente, il circuito f "funziona", altrimenti il circuito f è "spento". 9.7 Decodificatore a 2 bit. Consideriamo la tavola di verità qui accanto: si tratta di una funzione a due ingressi e quattro uscite; ognuna delle uscite vale 1 in corrispondenza di una sola configurazione di entrata. n x U0 U1 U2 U3 0 0 0 1 0 0 0 La sintesi AND-OR ci fornisce le seguenti espressioni: U0 =, U1 =, 1 0 1 0 1 0 0 2 1 1 0 0 1 0 U2 = x, U3 = x 3 1 0 0 0 0 1 che ci permettono di disegnare la rete logica. Costruiamo la rete logica e consideriamo la configurazione in entrata come un numero binario; ponendo gli interruttori, per es., nella posizione 10 si accenderà solo la lampadina 2: la nostra rete logica ha eseguito una conversione binario/decimale. Essa può essere anche considerata un "deviatore" che attiva la linea indicata dal suo codice binario. Seguendo lo stesso principio potremo costruire un decodificatore con un numero maggiore di bit in ingresso. fig.15 9.8 L'unità aritmetico-logica (ALU) La ALU è una rete logica in grado di eseguire un certo numero di operazioni aritmetiche e di confronto (logiche) tra numeri in rappresentazione binaria. La ALU riceve dalla CPU gli operandi ed il codice della operazione da eseguire e restituisce alla CPU il risultato dell'operazione richiesta. Per capire il funzionamento della ALU osserviamo il circuito disegnato accanto: n ingressi vengono portati contemporaneamente a quattro reti logiche F0, F1, F2, F3, tutte e quattro dotate di un ulteriore ingresso di abilitazione. D2 è un decodificatore a 2 bit, le cui quattro uscite sono nell'ordine portate all'ingresso di abilitazione di ciascuna delle quattro reti F0, F1, F2, F3. x U1 U0 U2 U3 Boole.doc Pagina 18 di 19

Con tale disposizione, tre delle reti logiche portano 0 all'ingresso dell'or ed una soltanto, in dipendenza della combinazione x in ingresso al decodificatore, porta invece il suo proprio valore che, F0 quindi, ritroviamo all'uscita dell'or. a1 Abbiamo in pratica realizzato una ALU (molto semplice): il circuito è infatti in grado di calcolare, a F1 n variabili a2 scelta, una funzione tra quattro; la scelta viene effettuata inviando la combinazione opportuna al codificatore. F2 a3 a4 F3 uscita u0 u1 u2 u3 x D 2 fig.16 Boole.doc Pagina 19 di 19