Lezione2:
Circuiti Logici
traduce per noi in linguaggio
macchina
macchina
software
utente
macchina
hardware
Agli albori dell'informatica, l’utente programmava in
binario (Ling.Mac.) scrivendo i programmi nella RAM
L’ Hardware di un computer
•Hardware = insieme dei circuiti elettronici
Un circuito puo’ essere descritto
– Mostrando i dettagli realizzativi in termini di
circuiti elementari (porte)
– Mediante una tavola di verita che mostra i valori in
uscita per tutti i possibili ingressi
• 3 tipi di circuito fondamentali:
and, or, not
and, or, not

Operazione logica: operazione che agisce sui
valori di verita’ vero e falso:
 dati due valori di verita’ come operandi ritorna un
valore di verita’ come risultato
Porte logiche
IDEA: identificare il valore di verità FALSO con 0
(assenza di tensione)
Identificare il valore di verità VERO con 1
(presenza di tensione)
L’algebra di Boole − 1
George Boole (1810-1864)
•
Contempla due costanti 0 e 1 (falso e vero)
vero
•
Corrispondono a due stati che si escludono a vicenda
•
Possono descrivere lo stato di apertura o chiusura di
un generico contatto o di un circuito a più contatti
0
•
Sui valori booleani
AND,
AND OR,
OR NOT
1
si
definiscono
le
operazioni
6
L’algebra di Boole
7
L’operazione di OR
•
Si definisce l’operazione di somma logica (OR):
il valore della somma logica è il simbolo 1 se il valore
di almeno uno degli operandi è il simbolo 1
0+0
0+1
1+0
1+1
=
=
=
=
0
1
1
1
0
0
0
1
0+0
0+1
1
1
0
1
1+0
1+1
8
L’operazione di AND
•
Si definisce l’operazione di prodotto logico (AND):
il valore del prodotto logico è il simbolo 1 se il valore di
tutti gli operandi è il simbolo 1
0×0
0×1
1×0
1×1
=
=
=
=
0
0
0
1
0
0
0
0×0
0×1
0
1
1×0
1
1
1
1×1
9
La negazione NOT
•
Si definisce l’operatore di negazione (NOT):
l’operatore inverte il valore della costante su cui opera
0=1
1=0
•
Dalla definizione…
0=0
1=1
10
⇒
A
B
falso falso
IMPLICAZIONE (se allora)
A B A ⇒ B
0 0
1
A ⇒ B
vero
falso vero
vero
0 1
1
vero
falso
falso
1 0
0
vero
vero
vero
1 1
1
A ⇒ B equivale a (NOT A) OR B
A B NOT A (NOT A) OR B
0 0
1
1
A
0 1
1
1
B
1 0
0
0
1 1
0
1
R
A è condizione sufficiente per B
B è condizione necessaria per A
≡
A B
EQUIVALENZA
0 0
A ≡ B
1
0 1
0
1 0
0
1 1
1
A ≡ B equivale a
(A ⇒ B) AND (B ⇒ A)
A B A ⇒ B B ⇒ A (A ⇒ B)AND(B ⇒ A)
0 0
1
1
1
0 1
1
0
0
1 0
0
1
0
1 1
1
1
1
A
B
R
Tavole di verità e circuiti
- Dato un qualsiasi circuito e’ sempre possibile
definire la tavola di verita’ (in un solo modo)
circuito
Un solo modo
Tavola di verità
- Data una tavola di verita’ si possono costruire
in generale piu’ circuiti che la realizzano
Tavolà di verità
Circuito 1
Circuito 2
Circuito n
Dal circuito alla tavola di verità
- Modo 1) Si calcola, per ogni possibile
configurazione degli ingressi, l’uscita delle porte fino
alle uscite del circuito
Modo 2) Si calcola la formula logica
corrispondente al circuito e si calcolano le tabelle di
verita’ partendo dalle formule intermedie piu’
semplici fino alla formula data
Dalla tabella di verita’ ad un circuito





Tanti input quante sono le dimensioni della tabella
Un solo output
Un or la cui uscita e’ l’output
Tanti and quanti sono gli 1 della tabella
Input degli and: diretto se 1, negato se 0
A B
0 0
A ≠ B
0
A
B
0 1
1
1 0
1
1 1
0
R

!!! Chiaramente il circuito cosi’ costruito non
necessariamente e’ il piu’ semplice (ovvero con il minor
numero possibile di porte logiche utilizzate)
Nand e nor

Non servono tre operazioni (and, or, not)

Basta una tra :
nand (not and) e
nor (not or)
NAND
A
B
A NAND B
NOR
A
B
A NOR B
falso falso
vero
falso falso
vero
falso vero
vero
falso vero
falso
vero
falso
vero
vero
falso
falso
vero
vero
falso
vero
vero
falso
A
B
A B
R
A B
R
0 0
1
0 0
1
0 1
1
0 1
0
1 0
1
1 0
0
1 1
0
1 1
0
R
A
B
R
NAND e NOR
Una CPU si puo` realizzare stampando su silicio
una griglia di milioni di porte logiche tutte uguali:
NAND o NOR.
NOT
A
AND
A
R
R
B
A nand A
(A nand B) nand (A
nand B)
OR
A
R
B
(B nand B) nand (A
nand A)
Esercizio 1 (formule)

Quale e’ la tavola di verita’ della formula
(not(A)  B) OR NOT(A) ?
A
B
Not(A) Not(A)B
R
0
0
1
0
1
0
1
1
1
1
1
0
0
1
1
1
1
0
1
1
Esercizio 1 (formule)

Quale e’ la tavola di verita’ della formula
(not(A)  B) OR NOT(A) ?
A
B
Not(A) Not(A)B
R
0
0
1
0
1
0
1
1
1
1
1
0
0
1
1
1
1
0
1
1
Esercizio 2 (formule)

Quale e’ la tavola di verita’ della formula
A or (A and not(B)) ?
A
B
Not(B)
A and not(B)
R
0
0
1
0
0
0
1
0
0
0
1
0
1
1
1
1
1
0
0
1
Esercizio 3 (circuiti)

Si disegni un circuito logico che realizza
la seguente tavola di verita’:
A
A B
R
0 0
0
0 1
1
1 0
1
1 1
0
B
R
24
Esercizio 4
Dare la tavola di verita’ della formula
(NOT(A) NOT(B)) OR (NOT(A) AND B)
NOT(A)  NOT(B) = NOT(NOT(A)) or
NOT(B)==A or NOT(B)
(A or NOT(B)) or (NOT(A) and B)
A
B
Not(A) Not(B) A or not(B) Not(A) and B R
0
0
1
1
1
0
1
0
1
1
0
0
1
1
1
0
0
1
1
0
1
1
1
0
0
1
0
1
Esercizio 4
Circuito (NOT(A)  NOT(B)) OR (NOT(A) AND B)
A
B
and
or
or
and
R
and
and
or
...due aspetti...

Le formule logiche si possono utilizzare
formalizzare asserzioni anche molto complesse
per

Si possono comporre circuiti semplici per ottenenere
circuiti
che
realizzano
nuove
operazioni
piu`complesse
Esempio

Siccome un rettangolo è un quadrato se ha altezza
uguale alla base allora un rettangolo che non è un
quadrato non ha altezza uguale alla base

Formalizzazione:
A=”è un quadrato”
B=”ha altezza uguale alla base”
(B==>A) ==> (NOT A ==> NOT B)

Tabella di verità
A
B
B==> A
NOT A ==>
NOT B
F
0
0
1
1
1
1
0
1
1
1
0
1
0
0
1
1
1
1
1
1
Alcune definizioni...
Formula SODDISFACIBILE (almeno un 1 in tabella)
Formula INSODDISFACIBILE (tutti 0 in tabella)
Formula VALIDA (tutti 1 in tabella) (TAUTOLOGIA)
F VALIDA <==> not F INSODDISFACIBILE
Esempio di utilizzo di circuiti:
Somma tra binari
Sistemi di numerazione posizionali
•
Sistemi di numerazione posizionali:
posizionali
La base del sistema di numerazione
Le cifre del sistema di numerazione
Il numero è scritto specificando le cifre in ordine ed il
suo valore dipende dalla posizione relativa delle cifre
Esempio: Il sistema decimale (Base 10)
Cifre : 0 1 2 3 4 5 6 7 8 9
5641 = 5·103 + 6·102 + 4·101 + 1·100
Posizione: 3 2 1 0
32
Sistemi in base B
•
•
La base definisce il numero di cifre diverse nel sistema
di numerazione
La cifra di minor valore è sempre lo 0; le altre sono,
nell’ordine, 1,2,…,B−1; se B>10 occorre introdurre
B−10 simboli in aggiunta alle cifre decimali
Un numero intero N si rappresenta con la scrittura (cncn−1…c2c1c0)B
N = cnBn+cn−1Bn−1+...+c2B2+c1B1+c0B0
cn è la cifra più significativa,
significativa c0 la meno significativa
Un numero frazionario N’ si rappresenta come (0,c1c2…cn)B
N’ = c1B−1+c2B−2+...+cnB−n
33
Numeri interi senza segno
•
Con n cifre in base B si rappresentano tutti i numeri
interi positivi da 0 a Bn−1 (Bn numeri distinti)
Esempio: base 10
2 cifre: da 0 a 102−1 = 99
Esempio: base 2
2 cifre: da 0 a 22−1 = 3
00
01
02
….
98
99
102 = 100 valori
00
01
10
11
22 = 4 valori
34
Il sistema binario (B=2)
•
La base 2 è la più piccola per un sistema di numerazione
Cifre: 0 1 − bit (binary digit)
Esempi:
Forma
polinomia
(101101)2 = 1×25 + 0×24 + 1×23 + 1×22 + 0×21 + 1×20 =
32 + 0 + 8 + 4 + 0 + 1 = (45)10
(0,0101)2 = 0⋅2−1 + 1⋅2−2 + 0⋅2−3 + 1⋅2−4 =
0
+ 0,25 + 0 + 0,0625 = (0,3125)10
(11,101)2 = 1⋅21 + 1⋅20 + 1⋅2−1 + 0⋅2−2 + 1⋅2−3 =
2 + 1 + 0,5 + 0 + 0,125 = (3,625)10
35
Dal bit al byte
•
Un byte è un insieme di 8 bit (un numero binario ad 8 cifre)
b7b6b5b4b3b2b1b0
•
Con un byte si rappresentano i numeri interi fra 0 e 28−1 = 255
00000000
00000001
00000010
00000011
…………….
11111110
11111111
•
•
28 = 256 valori distinti
È l’elemento base con cui si rappresentano i dati nei calcolatori
Si utilizzano sempre dimensioni multiple (di potenze del 2) del
byte: 2 byte (16 bit), 4 byte (32 bit), 8 byte (64 bit)…
36
Somma binaria
 Colonna per colonna, da destra a sinistra
 Riporto se la somma su una colonna supera
la base
 Tre cifre binarie (prima riga, seconda riga,
riporto), somma =1 se una o tre sono 1,
riporto = 1 se almeno due sono 1
Riporto:
1 1 1 1 0 0
0111002 +
1001112 =
----------10000112
10000110
1010011 +
1100011 =
riporti
---------10110110
Iniziamo con un circuito che faccia
la somma su una colonna
Abbiamo tre cifre binarie X, Y, R in
input mentre in output vogliamo
ottenere la somma S ed il riporto R'
Tabella di verità
X
0
Y
0
R
0
S
0
R'
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
Supponiamo di avere i circuiti che calcolano
somma e riporto
X
Y
R
X
Y
R
SOMMA
RIPORTO
S
R'
Possiamo allora combinare i circuiti SOMMA e
RIPORTO per ottenere il seguente circuito
1-ADD
1-ADD
X
Y
R
SOMMA
RIPORTO
S
R'
Il circuito RIPORTO puo` essere realizzato nel seguente modo
RIPORTO
X
Y
R
Basta infatti verificare la corrispondente tabella di verita’
(Il nuovo riporto è q se almeno due di esse sono 1, 0 altrimenti)
R'
R
Y
X
CIRCUITO SOMMA
(la somma di tre cifre è 1 se o
tutte e tre sono 1 oppure una
sola vale 1)
A questo punto componendo K circuiti 1-ADD e`
possibile realizzare un circuito K-ADD che somma due
numeri binari di K cifre.
Vediamo l'esempio della somma di due numeri binari di 4
cifre.
Somma di numeri di 4 bit
Y3 Y2 Y1 Y0
riporto R
3
finale
inutile
1-add
R2
S3
X3 X2 X1 X0
1-add
S2
R1
1-add
S1
risultato
R0
S0
0 0 riporto
1-add
iniziale
0 1
0
1-add
1 0
1
1-add
0 1 1 1
1
1-add
1 1 0 1
0
Esempio
0
1-add
0111 +
0110 =
-----1101
Attenzione
Si e` trascurato il problema del cosiddetto overflow,
cioe’ il risultato e’ troppo grande per essere contenuto
nei bit disponibili.
Per esempio:
0111 +
1110 =
-----10101