Sei sulla pagina 1di 29

Funzioni booleane:

tabelle di verità e forme


algebriche
Funzioni booleane
• Una funzione booleana di n variabili è una funzione che può
assumere valori solo nell’insieme {0,1}, così come ciascuna delle sue
variabili
• Poiché le possibili configurazioni che le variabili di input possono
assumere sono finite, una funzione booleana può essere definita in
maniera tabellare, associando un valore di uscita per ciascuna
combinazione delle variabili di ingresso
numero delle disposizioni
N=k n
di k valori su n posti

kn numero delle disposizioni


M =k =k N
di k valori su N posti
• n=numero delle variabili indipendenti
• k=numero dei valori dell’algebra (k=2)
• N=numero totale di «punti» della funzione
• M=numero totale delle funzioni di n variabili
Tabelle di verità

• La tabella di verità di una funzione f


specifica la relazione fra ciascun elemento
del dominio della funzione (che
corrisponde a una delle possibili
combinazioni delle n variabili) e la
corrispondente immagine (cioè il valore
booleano che assume la funzione f in
corrispondenza di quella combinazione)
Tabelle di verità: esempio

4
Funzioni di due variabili
Esistono 16 diverse funzioni booleane di due
variabili:

x AND y x OR y NOT(x)
5
Funzioni di due variabili

contraddizione

6
Funzioni logiche notevoli e porte
logiche associate
• Abbiamo visto che le operazioni fondamentali
dell’algebra di commutazione (operatori
AND, OR e NOT) sono realizzate mediante
porte logiche elementari
– Si può dimostrare che qualsiasi funzione booleana
può essere calcolata applicando le funzioni AND,
OR, e NOT, pertanto l’insieme {AND, OR, NOT} si
dice funzionalmente completo.
• Esistono altre funzioni booleane notevoli di
due ingressi a cui corrispondono specifiche
porte logiche (circuiti elementari):
– XOR, EQU, NAND, NOR
Funzioni XOR ed EQU

x1 x2 f(x1,x2) x1 x2 f(x1,x2)
0 0 0 0 0 1
0 1 1 0 1 0
1 0 1 1 0 0
1 1 0 1 1 1
Questa funzione è detta Questa funzione è detta
OR esclusivo, o XOR equivalenza, o EQU
Funzioni NAND e NOR

x NAND y = NOT(x AND y)

x NOR y = NOT(x OR y)
Funzioni NAND e NOR
Applicando il teorema di De Morgan è possibile scrivere la funzione NAND
in termini di NOT e OR, e la funzione NOR in termini di NOT ed AND

NAND x  y = x y= x + y De Morgan

NOR
x  y = x + y= x y

x1  x2    xn = x1  x2  xn = x1 + x2 +  xn
x1  x2    xn = x1 + x2 +  + xn = x1  x2  xn
Non associatività di NAND e NOR

• NAND e NOR non godono della proprietà


associativa
NAND ( x1  x2 )  x3  x1  ( x2  x3 )  x1  x2  x3
NOR
( x1  x2 )  x3  x1  ( x2  x3 )  x1  x2  x3
AND, OR e NOT da NAND e NOR

• E’ possibile ottenere una AND e una OR


tramite NAND e NOR

x y = x  y = x  y
x+ y = x y = x y
• E’ possibile ottenere una NOT tramite NAND e
NOR
NAND x  1 = x 1 = x Oppure x NAND x = !x
x NOR x = !x
NOR
x0= x+0 = x
AND, OR e NOT da NAND e NOR

NAND NOR

NOT

OR

AND
Funzioni NAND e NOR
• Riassumendo, utilizzando solo porte NAND è
possibile ottenere una NOT, una AND ed una
OR
– Similmente per la NOR
• Ricordiamo che {AND,OR,NOT} è un insieme
funzionalmente completo, quindi →

{NAND} e {NOR} sono due


insiemi funzionalmente completi
Funzioni incompletamente specificate

• E’ possibile non assegnare il valore di una


funzione booleana per alcune n-uple di
valori delle sue variabili
– Il valore può essere irrilevante ai fini del
funzionamento del sistema
– La natura del problema rappresentato
mediante la funzione esclude che alcune
combinazioni degli ingressi possano mai
verificarsi
Funzioni incompletamente specificate
• Si parla pertanto di “punti di non
specificazione” o don’t care (d.c.)
• Due funzioni si dicono compatibili se
assumono gli stessi valori, eccetto al più
nei punti di non specificazione
Funzione incompletamente
specificata: esempio
Input: stringa X di 4 bit che
rappresentano una cifra decimale
secondo la codifica Binary Coded
Decimal (BCD)

Output: stringa di 4 bit che rappresenta


il valore Y=X+3 rappresentato come
numero naturale nella codifica binaria
Rappresentazione algebrica
• In alternativa alle tabelle di verità, una funzione
booleana può essere rappresentata mediante
una espressione booleana
• Un’espressione booleana è una combinazione di
simboli, siano essi costanti appartenenti al
supporto della funzione oppure variabili
booleane (nella forma affermata o negata), uniti
mediante gli operatori +, * e !.
– La coppia (variabile,valore) è detta letterale: data la
variabile x, ad essa corrispondono 2 possibili letterali,
“x” e “!x”
Forme canoniche
• Una funzione booleana può essere
rappresentata mediante un numero infinito di
espressioni booleane diverse
• Di solito nell’algebra di commutazione si
prediligono quelle forme che contengono un
numero inferiore di letterali, poichè
corrispondono a circuiti più “piccoli” e compatti
• Le funzioni vengono tipicamente rappresentate
mediante una forma canonica o normale, a
partire dalla quale è possibile operare delle
semplificazioni
Prima forma canonica o forma
normale di tipo P
Ogni funzione
f ( x1 ,, xn ) = x1 f (0, x2 ,, xn ) + x1 f (1, x2 ,, xn ) = può essere
espansa
= x1[ x2 f (0,0, x3 , xn ) + x2 f (0,1, x3 , xn )] +
applicando il
x1[ x2 f (1,0, x3 , xn ) + x2 f (1,1, x3 , xn )] teorema di
Shannon
 rispetto a tutte
le variabili
2 n −1
= f (0,0, 0) x1 x2  xn +  + f (1,1,1) x1 x2  xn =  P
i =0
i i
mintermine
dove
 0 = f (0,0, 0), 1 = f (0,0,1), 2 −1 = f (1,1,1),
n

“valori” della funzione: sono gli ‘1’ e ‘0’


della tabella di verità, non sono
variabili!
Esempio teorema Shannon per
una funzione a 3 variabili
F(a,b,c) = !a * f(0,b,c) + a * f(1,b,c) =

= !a* [!b*f(0,0,c) + b*f(0,1,c)] + a* [!b*f(1,0,c) + b*f(1,1,c)] =

= !a* [!b*(!c*f(0,0,0) + c*f(0,0,1)) + b*(!c*f(0,1,0) + c*f(0,1,1))]


+ a* [!b*(!c*f(1,0,0) + c*f(1,0,1)) + b*(!c*f(1,1,0)+c*f(1,1,1))] =

= !a!b!c*f(0,0,0)+!a!bc*f(0,0,1)+!ab!c*f(0,1,0)+!abc*f(0,1,1)+
+ a!b!c*f(1,0,0)+a!bc*f(1,0,1)+ab!c*f(1,1,0)+abc*f(1,1,1)
Esempio teorema Shannon per
una funzione a 3 variabili
I valori in rosso sono pari a
1, gli altri a 0 nella tabella!
f(a,b,c) =
= !a!b!c*f(0,0,0)+!a!bc*f(0,0,1)+!ab!c*f(0,1,0)+!abc*f(0,1,1)+
+ a!b!c*f(1,0,0)+a!bc*f(1,0,1)+ab!c*f(1,1,0)+abc*f(1,1,1) =
= !a!b!c + !a!bc + !ab!c + !abc + abc
Forma normale di tipo P
• Da quanto visto prima si deduce che una funzione di n
variabili, assegnata mediante una tabella di verità, può
essere espressa da una forma disgiuntiva di
congiunzioni o, algebricamente, da una somma di
prodotti.
• Ciascun termine della somma, detto mintermine, è un
prodotto di n letterali, ognuno rappresentativo di una
delle variabili di ingresso della funzione, presa in forma
affermata o negata: se la variabile di ingresso assume
valore 0 il letterale è in forma negata, se è 1 è in forma
affermata
• Ciascun mintermine è associato ad un "1" presente nella
colonna di uscita della tabella
Forma Normale di Tipo P

y = abc + abc + abc + abc + abc


24
Forma normale di tipo S

2 n −1
f ( x1  xn ) = i =0 ( i + Si )
 Si può ottenere con il procedimento duale di
quello usato per la forma di tipo P
 In alternativa, si può negare la forma di tipo P
e poi applicare de Morgan
Seconda forma canonica o forma
normale di tipo S
• Una funzione di n variabili può essere espressa
da una forma congiuntiva di disgiunzioni o,
algebricamente, da un prodotto di somme.
• Ciascun termine del prodotto, detto
maxtermine, è una somma di n letterali, ognuno
rappresentativo di una delle variabili di ingresso
della funzione, presa in forma affermata o
negata: se la variabile di ingresso assume
valore 1 il letterale è in forma negata, se è 0 è in
forma affermata
• Ciascun maxtermine è associato ad un “0"
presente nella colonna di uscita della tabella
Forma Normale di Tipo S

y = (a + b + c)  (a + b + c)  (a + b + c)
Espressioni logiche e
rappresentazione circuitale
• Da una espressione logica che
rappresenta una funzione logica può
essere direttamente ricavato un circuito
logico.
• Poichè le espressioni usano gli operatori
AND, OR e NOT è immediato ricavare il
circuito con porte AND, OR e NOT
• f = x+y’z
Espressioni logiche e circuiti
• Un circuito che rappresenta una funzione
booleana è espresso mediante una espressione
ben precisa
– La corrispondenza biunivoca è tra FORMA e
CIRCUITO e non tra una funzione e un circuito
• Circuiti diversi possono essere equivalenti
funzionalmente se le rispettive forme
rappresentano la stessa funzione logica
– Es: Y = A xor B è equivalente a Y=A*!B+!A*B ma le
due forme corrispondono a circuiti diversi che usano
porte diverse

Potrebbero piacerti anche