esempi:
ingressi espressi in binario
quindi booleani
anche le uscite
le uscite dipendono dagli ingressi
una formula per uscita:
ingressi p1 … p9
uno per pulsante
uscite n2 n1 n0
un numero a tre bit
qual è la formula?
qual è la formula?
il primo bit vale uno (vero) quando
l'ottavo pulsante viene premuto oppure
il nono pulsante viene premuto
p8 ∨ p9
formula complicata
tabella ingresso-uscita
| pulsanti | valore | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0000 | |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0001 | |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0010 | |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0011 | |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0100 | |
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0101 | |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0110 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0111 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1000 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1001 | |
pulsanti p1 … p9
secondo bit uscita u2
| pulsanti | valore | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p9 | u1 | u2 | u3 | u4 | ||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | ||
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | ||
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | ||
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | ||
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | ||
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | ||
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | ||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | ||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | ||
seconda uscita
| pulsanti | valore | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p9 | u2 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | |
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | |
l'uscita vale 1
se uno dei pulsanti p4 … p7 viene premuto
u2 = p4 ∨ p5 ∨ p6 ∨ p7
| pulsanti | valore | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p9 | u1 | u2 | u3 | u4 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | |
u1 = p8 ∨ p9 u2 = p4 ∨ p5 ∨ p6 ∨ p7 u3 = p2 ∨ p3 ∨ p6 ∨ p7 u4 = p1 ∨ p3 ∨ p5 ∨ p7 ∨ p9
ognuna può essere accesa (true) o spenta (false)
vera per i valori 0, 4, 5, 6, 8, 9
falsa altrimenti
| valore | acceso | |||
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 |
| 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 0 | 0 | 1 | 1 |
cifre dell'ingresso: c3, c2, c1, c0
valore dell'uscita: as
vera per i valori 0, 4, 5, 6, 8, 9
falsa altrimenti
| valore | acceso | |||
|---|---|---|---|---|
| c3 | c2 | c1 | c0 | as |
| 0 | 0 | 0 | 0 | 1 |
| 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 0 | 0 | 1 | 1 |
formula as=…?
| valore | acceso | |||
|---|---|---|---|---|
| c3 | c2 | c1 | c0 | as |
| 0 | 0 | 0 | 0 | 1 |
| 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 0 | 0 | 1 | 1 |
uscita vera quando gli ingressi valgono:
uscita vera quando gli ingressi valgono:
l'ingresso vale 0000 quando c3=false, c2=false, c1=false, c0=false
¬c3 ∧ ¬c2 ∧ ¬c1 ∧ ¬c0
l'ingresso vale 0100 quando c3=false, c2=true, c1=false, c0=false
¬c3 ∧ c2 ∧ ¬c1 ∧ ¬c0…
| ingresso | formula |
|---|---|
| 0000 | ¬c3 ∧ ¬c2 ∧ ¬c1 ∧ ¬c0 |
| 0100 | ¬c3 ∧ c2 ∧ ¬c1 ∧ ¬c0 |
| 0101 | ¬c3 ∧ c2 ∧ ¬c1 ∧ c0 |
| 0110 | ¬c3 ∧ c2 ∧ c1 ∧ ¬c0 |
| 1000 | c3 ∧ ¬c2 ∧ ¬c1 ∧ ¬c0 |
| 1001 | c3 ∧ ¬c2 ∧ ¬c1 ∧ c0 |
la barretta in alto a sinistra è accesa quando
(¬c3 ∧ ¬c2 ∧ ¬c1 ∧ ¬c0) ∨ (¬c3 ∧ c2 ∧ ¬c1 ∧ ¬c0) ∨ (¬c3 ∧ c2 ∧ ¬c1 ∧ c0) ∨ (¬c3 ∧ c2 ∧ c1 ∧ ¬c0) ∨ (c3 ∧ ¬c2 ∧ ¬c1 ∧ ¬c0) ∨ (c3 ∧ ¬c2 ∧ ¬c1 ∧ c0)
(¬c3 ∧ ¬c2 ∧ ¬c1 ∧ ¬c0) ∨ (¬c3 ∧ c2 ∧ ¬c1 ∧ ¬c0) ∨ (¬c3 ∧ c2 ∧ ¬c1 ∧ c0) ∨ (¬c3 ∧ c2 ∧ c1 ∧ ¬c0) ∨ (c3 ∧ ¬c2 ∧ ¬c1 ∧ ¬c0) ∨ (c3 ∧ ¬c2 ∧ ¬c1 ∧ c0)
ultimi due termini:
(c3 ∧ ¬c2 ∧ ¬c1 ∧ ¬c0) ∨ (c3 ∧ ¬c2 ∧ ¬c1 ∧ c0) = (c3 ∧ ¬c2 ∧ ¬c1 )
(¬c3 ∧ ¬c2 ∧ ¬c1 ∧ ¬c0) ∨ (¬c3 ∧ c2 ∧ ¬c1 ∧ ¬c0) ∨ (¬c3 ∧ c2 ∧ ¬c1 ∧ c0) ∨ (¬c3 ∧ c2 ∧ c1 ∧ ¬c0) ∨ ( c3 ∧ ¬c2 ∧ ¬c1 )
primo e secondo termine:
(¬c3 ∧ ¬c2 ∧ ¬c1 ∧ ¬c0) ∨ (¬c3 ∧ c2 ∧ ¬c1 ∧ ¬c0) ∨ = (¬c3 ∧ ∧ ¬c1 ∧ ¬c0)
secondo e terzo
secondo e quarto
(¬c3 ∧ ¬c1 ∧ ¬c0) ∨ (¬c3 ∧ c2 ∧ ¬c1 ) ∨ (¬c3 ∧ c2 ∧ ∧ ¬c0) ∨ ( c3 ∧ ¬c2 ∧ ¬c1 )
si semplifica ancora, ma in un altro modo
( c3 ) ∨ ( ¬c1 ∧ ¬c0) ∨ ( c2 ∧ ¬c1 ) ∨ ( c2 ∧ c1 ∧ ¬c0)
0 … 9 ⇒ 0000 … 1001
i valori 1010 … 1111 non si possono presentare in ingresso
si può scegliere arbitrariamente se l'uscita vale 0 oppure 1
( c3 ) ∨ ( ¬c1 ∧ ¬c0) ∨ ( c2 ∧ ¬c1 ) ∨ ( c2 ∧ c1 ∧ ¬c0)
| a | b | c | somma | ||
|---|---|---|---|---|---|
| 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 | |
prima uscita vera se:
¬a ∧ b ∧ c
oppure
a ∧ ¬b ∧ c
oppure…
seconda uscita vera se:
¬a ∧ ¬b ∧ c
oppure
¬a ∧ b ∧ ¬c
oppure…
semplificazioni?
| a | b | c | somma | ||
|---|---|---|---|---|---|
| 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 | |
prima uscita vera se
a ∧ b ∧ ¬c
oppure
a ∧ b ∧ c
quindi a ∧ b
i due termini vengono dalla tabella
| a | b | c | somma | ||
|---|---|---|---|---|---|
| 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 | |
dalla tabella:
a ∧ b sono i primi due uno
¬c e c sono l'ultima cifra, 0 e 1
| a | b | c | somma | ||
|---|---|---|---|---|---|
| 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 | |
regola:
se ci sono due uscite 1 per due righe che differescono di un solo bit
quel bit si elimina
| a | b | c | somma | ||
|---|---|---|---|---|---|
| 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 | |
righe simili per prima uscita true:
prima e terza uguali, basta tenerne una
(a ∧ b) ∨ (b ∧ c)
| a | b | c | somma | ||
|---|---|---|---|---|---|
| 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 | |
differente disposizione degli 0 e 1 della prima uscita
| ab | |||||
|---|---|---|---|---|---|
| 00 | 01 | 11 | 10 | ||
| c | 0 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 1 | 1 | |
11 prima di 10 non è un errore!
garantisce che valori di ab simili sono vicini
metodo manuale
righe simili ⇒ caselle vicine
più facile trovare le semplificazioni
metodo automatizzabile
data una funzione booleana,
ne esiste una più piccola per la stessa tabella?
se esiste trovarla
algoritmi veloci con poche variabili
rallentano quando le variabili sono tante
complessità computazionale:
quanto rallentano?
l'argomento verrà ripreso più avanti