princìpi dell'algebra di Boole applicata ai circuiti digitali

George Boole, nel 1854, pubblicò un libro, An Investigations of the Laws of Thought (Un esame sulle leggi logiche del pensiero), in cui dimostrava che la maggior parte del pensiero logico, privata di particolari irrilevanti e verbosità, potesse essere concepita come una serie di scelte. Questa idea è divenuta la base dei computer.

In questa presentazione l'algebra di Boole, piuttosto che con il suo formalismo matematico, verrà proposta in modo da renderla più simile al linguaggio naturale: in tal modo, risulterà più intuitivo comprendere il funzionamento di quei semplici circuiti digitali che costituiscono la base dei computer.

Qualsiasi processo logico può essere ricondotto ad una sequenza di eventi elementari, che nell'insieme prende il nome di algoritmo. Tale sequenza può essere rappresentata con un diagramma di flusso (Flow chart, v. figura sotto), il quale a sua volta è facilmente traducibile in un particolare programma comprensibile dall'elaboratore.
Per la visualizzazione di un problema con un diagramma di flusso, sono utilizzati vari simboli grafici standard: il rombo per indicare controlli decisionali ed il rettangolo per indicare operazioni da effettuare.

Prenderemo le mosse per la nostra discussione riferendoci ad un "problema" del tutto comune. Questo approccio, ha il vantaggio di evidenziare come un sistema di elaborazione dati permetta di trattare non solo problemi numerici, ma anche alfanumerici (alfabetico-numerici) e dunque di carattere generale. Immaginiamo, per esempio, di voler tradurre in un diagramma di flusso le seguenti affermazioni: "esco se è bel tempo ed è caldo"; "esco se è bel tempo o se è caldo". diagramma di flusso con ANDdiagramma di flusso con OR

E' facile riconoscere che le due decisioni sono distinte: la prima (diagramma a sinistra), comporta il verificarsi di due condizioni (evidenziate in verde); la seconda (diagramma a destra), comporta il verificarsi di almeno una fra due condizioni. E' importante rendersi conto che, come vedremo, l'elaboratore non "comprende" il significato delle frasi "esco... resto in casa": si limita a considerare il valore di certe costanti associate ad ogni singolo evento.

Come secondo passo, si tratta di convertire i diagramma di flusso in un linguaggio numerico, il solo comprensibile dall'elaboratore. Ciò si ottiene con i cosiddetti operatori logici elementari. Per semplicità, limiteremo la nostra discussione ai tre elementi di base.

tabella degli operatori logici Con le istruzioni riportate nella tabella a fianco, possiamo tradurre i due differenti diagrammi di flusso in sequenze di istruzioni. Per far questo, è necessario aggiungere un nuovo simbolo grafico (un parallelogramma) di inizializzazione ai nostri diagrammi di flusso. Questo simbolo implica che l'elaboratore si attende che gli vengano forniti i valori di A e B (che possono essere 0 o 1) tramite tastiera. Appena inseriti questi valori (per es. A=1 e B=1), l'elaboratore esegue il programma tenendo conto dei valori di inizializzazione (C=1 "esco"; C=0 "rimango in casa"): a seconda del risultato ottenuto, sullo schermo verrà mostrata una delle due frasi.

diagramma di flusso

A = 1 corrisponde all'evento "bel tempo"
B = 1 corrisponde all'evento "caldo"
C = 1 corrisponde all'azione "esco"

A = 0 corrisponde all'evento "non bel tempo"
B = 0 corrisponde all'evento "non caldo"
C = 0 corrisponde all'azione "resto in casa"

con queste condizioni, il primo diagramma di flusso risulta così formalizzato:

IF A AND B THEN C

Le istruzioni AND e OR, dette operatori logici, sono prese dall'algebra di Boole e forniscono il risultato 1 o 0, a seconda del valore delle variabili A e B.
Ad esempio, se entrambe le variabili A e B valgono 1, allora l'operatore AND assumerà il valore 1. In questo caso, il simbolismo, tradotto in parole, corrisponde a:

SE bel tempo E caldo ALLORA esco

viceversa, se una sola delle due variabili, oppure entrambe valgono 0, allora l'operatore AND assumerà il valore 0. In questo caso, il simbolismo, tradotto in parole, corrisponde a:

SE non bel tempo E caldo ALLORA resto in casa

SE bel tempo E non caldo ALLORA resto in casa

SE non bel tempo E non caldo ALLORA resto in casa

Come abbiamo detto, i valori delle variabili A e B sono introdotti da tastiera prima di "raggiungere" l'operatore AND. Così, se entrambe le variabili A e B valgono 1, quando saranno esaminate dall'operatore AND seguirà necessariamente il risultato C = 1.

Con le stesse modalità, il secondo diagramma di flusso risulta così formalizzato:

IF A OR B THEN C

In questo caso, se almeno una delle variabili A e B vale 1, allora l'operatore OR assumerà il valore 1; viceversa, se entrambe valgono 0, allora l'operatore OR assumerà il valore 0. Dunque, se almeno una delle variabili A e B vale 1, quando saranno esaminate dall'operatore OR seguirà necessariamente il risultato C = 1.

Ora che abbiamo visto come definire un linguaggio numerico (ricordiamo che l'elaboratore non comprende il significato delle frasi che leggiamo) interpretabile dall'elaboratore, vediamo come applicarlo. Per far questo, esaminiamo un semplice "elaboratore" in grado di automatizzare la nostra decisione. La realizzazione di questo - e di tutti gli elaboratori - richiede la costruzione di circuiti detti porte logiche.

circuito rappresentante una porta logica ANDPer esempio, osservando il circuito elettrico schematizzato in figura, è facile riconoscere che la lampadina si accenderà solo se entrambi gli interruttori A e B verranno abbassati in modo da chiudere il contatto elettrico. Questo circuito, corrisponde ad un operatore logico AND.

Per riassumere il comportamento di una porta logica, si ricorre alle cosiddette tavole di veridicità. Per la porta AND, la tavola è in tabella a destra del circuito. Si osservi, per esempio, che quando A=1 e B=1 (entrambi gli interruttori abbassati), allora la lampadina (indicata con C) è accesa e quindi C=1.

Ora, come secondo passo, esaminiamo un altro circùito: circuito rappresentante una porta logica OR in questo caso, è facile riconoscere che la lampadina si accenderà solo se almeno uno degli interruttori A e B verrà abbassato in modo da chiudere il contatto elettrico. Questo circuito, corrisponde all'operatore logico OR.

La sua rappresentazione secondo una normativa standardizzata, è rappresentata con il simbolo sottoindicato. A destra, è riportata la corrispondente tavola di veridicità. Si noti come sia sufficiente che un solo interruttore sia abbassato per accendere la lampadina.

Oltre alle porte AND e OR, c'è la porta NOT, capace di invertire il segnale in ingresso: se vale 1, diventa 0 e viceversa.

circuito elettrico per la porta NOT

Il corrispondente circuito, comprende due alimentatori con polarità opposta. Quando il circuito inferiore è aperto (0), la batteria A alimenta il circuito superiore e la lampadina è accesa; quando il circuito inferiore è chiuso, la seconda batteria fornisce una corrente uguale e opposta che impedisce il passaggio di corrente per cui la lampadina si spegne.
La tavola di veridicità corrispondente a questo circuito, comprende un solo ingresso. Si osservi che quando l'interruttore è alzato (A=0), la lampadina è accesa (C=1) e viceversa.

porte logiche AND, OR, NOT
Le porte logiche descritte, sono rappresentate simbolicamente con i simboli in figura; combinandoli fra loro, si può codificare in linguaggio binario qualsiasi diagramma di flusso.
porta logica OR Per esempio, la frase "se è bel tempo ed è caldo esco; tuttavia, se ho un impegno esco in ogni caso" richiede una porta AND ed una porta OR unite tra loro come in figura.

La combinazione di più porte logiche, permette di ottenere risultati più articolati. Per esempio, nella figura sotto è mostrata una porta NOR, costituita dalla combinazione di due porte AND, due porte NOT ed una porta OR. Questa porta permette di selezionare un valore positivo (1) se e solo se uno dei due dati in ingresso è positivo (a differenza della porta OR che fornisce un valore unitario anche se entrambi i dati in ingresso sono positivi).

porta logica NOR

Il lettore può verificare da solo il funzionamento della porta NOR, tenendo conto che i dati in ingresso A e B sono duplicati però formando coppie invertite, e quindi inviati a due porte AND.
Per esempio, nella figura a sinistra, il segnale al morsetto A vale 1: questo segnale è sdoppiato in modo da raggiungere una porta AND con il segnale 1 e l'altra porta AND con il segnale invertito, 0; il segnale al morsetto B vale 0: questo segnale è sdoppiato in modo da raggiungere una porta AND con il segnale 0 e l'altra porta AND con il segnale invertito, 1. Dalle due porte AND escono quindi due segnali 0 e 1, che raggiungono la porta OR fornendo un segnale 1

Quello che abbiamo esaminato finora, può definirsi un semplice elaboratore dedicato, capace cioè di eseguire un compito particolare: verificare la presenza di due eventi (bel tempo, caldo) o di un evento alternativo (impegno). E' ovvio che un simile elaboratore è troppo semplice per avere qualche utilità. Tuttavia, si può facilmente intuire che gli elementi discussi costituiscono la base per combinare tra loro più porte logiche in modo da ottenere rapidamente, e senza confusione, decisioni immediate. Inoltre, si possono costruire circuiti in grado di effettuare operazioni matematiche.

Quanto discusso ci permette di comprendere come opera un elaboratore analogico. In realtà, un processore elettronico non è costituito da parti mobili, tuttavia la logica di base può essere compresa con alcune semplici considerazioni.
I circuiti elettronici digitali sono costituiti da transistor. Un transistor permette di far passare o non far passare elettroni. Il passaggio di elettroni è un segnale elettronico binario (1 se passano elettroni, 0 se non passano). La caratteristica che distingue gli interruttori elettronici dai più comuni interruttori elettrici è che essi sono comandati da un segnale elettronico binario e non dall'intervento umano. Questo significa che è possibile usare il segnale elettronico di un transistor per comandare un altro transistor e così ottenere un nuovo segnale elettronico che, a sua volta, può comandare un altro transistor e così via. L'insieme di questi interruttori elettronici che si comandano a vicenda viene detto circuito elettronico. Vi sono infinite possibilità di costruzione di circuiti elettronici, ma essenzialmente sono tutte riconducibili agli elementi fondamentali qui esaminati.

nemesi

copyright Marcello Guidotti, 2001-2003
Questo articolo, riadattato (senza collegamenti in ipertesto ed animazioni) ed ampliato da L'uomo la scienza e... i media può essere liberamente pubblicato su qualsiasi supporto o rivista, purché con limitati adattamenti e con citazione della fonte e l'indirizzo di questo sito.