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