La logica formale studia le proposizioni dichiarative, dove per proposizione si intende l'insieme di soggetto e verbo. È una proposizione dichiarativa quella proposizione nei confronti della quale è possibile stabilire se è vera o se è falsa. Vero o Falso sono gli unici valori che può assumere una proposizione dichiarativa. La proposizione che non si può suddividere in altre proposizioni, si dice essere elementare.
Il valore di una proposizione dichiarativa (Vero o Falso) può essere espresso in vari modi, a seconda del contesto. Generalmente, si attribuisce alla cifra numerica uno il significato di Vero, mentre a zero si attribuisce il valore Falso, così come nell'applicazione elettronica si utilizza un livello di tensione vicino a quello di alimentazione per rappresentare Vero e un valore di tensione vicino a zero per rappresentare Falso.
|
La variabile che può assumere solo il valore risultante da una proposizione dichiarativa, è una variabile logica. Un'espressione logica o una funzione logica è quella che produce un risultato Vero o Falso. L'espressione o funzione logica può essere costituita da proposizioni dichiarative, da valori costanti (espressi secondo la forma prevista per rappresentare Vero o Falso) e da variabili logiche. Per connettere o comunque per intervenire nei valori delle varie componenti dell'espressione, si utilizzano degli operatori che rappresentano delle funzioni elementari.
Si distinguono generalmente gli operatori logici in «unari» e in «connettivi logici», per distinguere se intervengono in un solo valore logico, oppure su due o più valori logici. Gli operatori logici si possono vedere come delle scatoline, aventi uno o più ingressi, ma con una sola uscita: in tal caso, si chiamano porte logiche.
Gli operatori logici hanno forme differenti di rappresentazione, in base al contesto e in base alle limitazioni tipografiche a cui si deve sottostare. Pertanto, ogni volta che si legge un documento che tratta questo genere di argomenti, è necessario inizialmente comprendere qual è la simbologia adottata, tenendo conto che anche all'interno dello stesso testo si possono alternare simbologie differenti.
Per definire il significato degli operatori logici si utilizzano delle tabelle di verità, mettendo a confronto le variabili in ingresso con l'esito finale.
Gli operatori logici unari ottengono in ingresso un solo valore logico; sono disponibili l'invertitore logico (NOT) e il non-invertitore logico.
L'invertitore logico è l'operatore unario che inverte il valore logico ricevuto in ingresso: se in ingresso riceve il valore Vero (1), in uscita genera il valore Falso (0); se in ingresso riceve il valore Falso (0), in uscita genera il valore Vero (1).
A titolo di esempio, se la variabile logica «A» contiene il risultato della proposizione dichiarativa «Antonio mangia», l'espressione logica «NOT A» è equivalente alla proposizione dichiarativa «Antonio non mangia».
Il non-invertitore logico è l'operatore unario che presenta in uscita lo stesso valore ricevuto in ingresso. Il nome che viene dato a questo tipo di operatore allude alla presenza ipotetica di due negazioni consecutive che si eliminano a vicenda. Per esempio, se la variabile logica «A» contiene il risultato della proposizione dichiarativa «Antonio mangia», l'espressione logica «NOT A» è equivalente alla proposizione dichiarativa «Antonio non mangia», ma nello stesso modo, «NOT (NOT A)» è equivalente alla proposizione originale: «Antonio mangia».
Dagli esempi mostrati si dovrebbe intendere il fatto che un piccolo cerchio rappresenta un'inversione logica, e si può collocare all'ingresso o all'uscita di una funzione logica rappresentata graficamente. Pertanto, valgono le equivalenze seguenti:
|
I connettivi logici sono gli operatori che utilizzano due ingressi. Il connettivo AND restituisce il valore Vero solo se entrambi i valori in ingresso sono pari a Vero. Per esempio, se la variabile logica «A» contiene il risultato della proposizione dichiarativa «Antonio mangia» e la variabile «B» contiene il risultato di «Piero legge», l'espressione «A AND B» equivale alla proposizione «Antonio mangia e Piero legge».
|
La porta logica AND, quando ha più di due ingressi, esprime l'equivalente di un'espressione in cui tutte le variabili in ingresso sono collegate dall'operatore AND:
|
Il connettivo OR restituisce il valore Vero se almeno uno dei due ingressi dispone di un valore pari a Vero. Per esempio, se la variabile logica «A» contiene il risultato della proposizione dichiarativa «Antonio mangia» e la variabile «B» contiene il risultato di «Piero legge», l'espressione «A OR B» equivale alla proposizione «Antonio mangia e/o Piero legge».
|
La porta logica AND, quando ha più di due ingressi, esprime l'equivalente di un'espressione in cui tutte le variabili in ingresso sono collegate dall'operatore OR:
|
Il connettivo XOR restituisce il valore Vero se solo uno dei due ingressi dispone di un valore pari a Vero. Per esempio, se la variabile logica «A» contiene il risultato della proposizione dichiarativa «Antonio mangia» e la variabile «B» contiene il risultato di «Piero legge», l'espressione «A XOR B» equivale alla proposizione «Antonio mangia oppure Piero legge». Va comunque osservato che il connettivo XOR si considera derivato dagli altri e può essere tradotto in forme diverse, ma equivalenti.
Anche la porta logica XOR può avere più ingressi, come avviene per AND e OR:
|
Le espressioni logiche vanno risolte tenendo conto che gli operatori hanno un ordine di precedenza: NOT, AND, OR. Per esempio, a+b·c' va inteso come a+(b·(c')). Naturalmente, l'ordine di precedenza può essere modificato utilizzando opportunamente le parentesi.
A volte si possono semplificare le tabelle di verità di una funzione logica quanto alcune variabili in ingresso, in certe circostanze, possono assumere qualsiasi valore senza interferire nel risultato; in quei casi, al posto del valore si mette convenzionalmente una lettera «x». A titolo di esempio, si consideri la funzione logica che si ottiene dall'espressione A·(B+C). Nella figura successiva si vede la tabella di verità completa e a fianco una versione semplificata della stessa.
Attraverso gli operatori logici si possono costruire delle espressioni complesse, nelle quali esiste la facoltà di applicare delle trasformazioni, di solito con lo scopo di cercare di semplificarle, mantenendo però lo stesso risultato. Per questo sono molto importanti i teoremi di De Morgan, secondo i quali:
|
Mettendo assieme le tabelle della verità dei vari operatori logici con i teoremi di De Morgan, si ottengono le equivalenze della tabella successiva su cui si basa l'algebra «logica», ovvero l'algebra di Boole.
Quando nelle espressioni si utilizzano solo gli operatori logici tradizionali (AND, OR, NOT), i teoremi di De Morgan consentono di trasformare facilmente una funzione logica nel suo complemento. In pratica, data la funzione f, si ottiene la negazione logica f' seguendo la procedura seguente:
si scambiano gli operatori AND originali con gli operatori OR, mettendo delle parentesi per non modificare l'ordine di valutazione;
si scambiano gli operatori OR originali con gli operatori AND, facendo in modo di evitare che questo cambiamento cambi l'ordine di esecuzione della valutazione;
si complementano tutte le variabili (operatore NOT).
Si veda l'esempio seguente:
f = a+b'c+de'+g'h'
f' = a'(b+c')(d'+e)(g+h)
Una funzione logica è un'espressione composta da variabili, costanti logiche e operatori logici, la quale produce un risultato logico (Vero o Falso). Tuttavia, una funzione logica può essere descritta semplicemente attraverso la tabella di verità che abbina i valori delle variabili al risultato atteso per ogni combinazione delle stesse.
È possibile sintetizzare il comportamento di una funzione logica attraverso ciò che si definisce come somma dei prodotti: si parte dalla tabella di verità che si vuole ottenere e si elencano i prodotti fondamentali logici che descrivono ogni condizione degli ingressi.
Per esempio, la funzione nota come NXOR (funzione di due variabili che si avvera solo quando le due variabili hanno lo stesso valore) si sintetizza secondo il procedimento che si può comprendere intuitivamente dalla figura successiva.
L'esempio della figura permette di ottenere due alternative, secondo quello che è noto come «somma dei prodotti», ma ciò non toglie che ci possano essere altre possibilità di sintesi.
Una funzione logica può essere rappresentato in una mappa di Karnaugh, a partire dalla sua tabella di verità; attraverso tale mappa si può poi cercare un modo per semplificare l'espressione che sintetizza la funzione e di conseguenza il circuito che la realizza.
La mappa di Karnaugh è una rappresentazione bidimensionale dei prodotti fondamentali di una tabella di verità da analizzare: in pratica si dividono a metà i prodotti fondamentali e si rappresentano in un rettangolo. Nelle immagini successive si mostrano tre mappe, vuote, relative al caso di due, tre e quattro variabili: bisogna fare molta attenzione alla sequenza dei prodotti fondamentali, perché questa non corrisponde a quella che si usa normalmente nelle tabelle della verità.
Le mappe vanno compilate mettendo nelle celle la cifra 1 in corrispondenza dei prodotti fondamentali validi. Le immagini successive propongono degli esempi, confrontando la tabella di verità con la mappa compilata corrispondente.
Una volta compilata la mappa, si vanno a raggruppare le celle che contengono la cifra 1 e che si trovano adiacenti in senso orizzontale o verticale.
Quando due celle adiacenti, in verticale o in orizzontale, contengono il valore 1, una variabile che riguarda le due celle diventa inutile. La figura successiva dimostra intuitivamente il procedimento.
La semplificazione deriva dal fatto che x OR x' è sempre vero; pertanto, quando un raggruppamento rettangolare dimostra che una variabile appare sia nella sua forma normale, sia negata, significa che si può semplicemente ignorare.
Nella delimitazione delle zone che consentono di ottenere una semplificazione logica, si possono ignorare le zone che si sovrappongono completamente con altre, come si vede nella figura successiva, dove si possono produrre due risultati alternativi equivalenti.
Le mappe di Karnaugh permettono di semplificare facilmente una funzione logica, purché non si superino le quattro variabili: diversamente sarebbe necessaria una rappresentazione a tre o più dimensioni.
In situazioni particolari, può accadere che sia indifferente il valore prodotto da alcune combinazioni delle variabili di ingresso. In questi casi, per sintetizzare la rete combinatoria si può scegliere liberamente il valore di uscita che risulta più conveniente nell'ottica della semplificazione.
Le mappe di Karnaugh si possono usare anche in presenza di più funzioni che condividono le stesse variabili di ingresso. In tal caso si valutano tante mappe quante sono le funzioni per cercare una sintesi per ognuna; successivamente, se si realizzano queste funzioni attraverso un circuito logico, si cercano elementi comuni per condividerli senza duplicarli.
Le mappe di Karnaugh danno soluzioni formate attraverso gli operatori logici fondamentali (AND, OR, NOT); tuttavia, spesso è comodo avvalersi dell'operatore XOR, al pari di quelli fondamentali. Nelle mappe di Karnaugh l'operatore XOR si manifesta in modo particolare, come si vede nella figura successiva.
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net