LSS: Reti Logiche Piero Vicini A.A. 2015-2016 Introduzione Argomenti: Codici e aritmetica Operatori dell’algebra booleana Minimizzazione e sintesi di funzioni Esempi di implementazione hardware di circuiti combinatori P. Vicini LSS A.A. 2015-2016 1 / 42 Algebra e circuiti elettronici Computers operano con segnali elettrici con valori discreti di potenziale Significativi soltanto 2 valori (intervalli) di potenziale elettrico (high/low, true/false, 1/0) Gli elementi elettronici binari sono semplici per definizione (interruttori...) Algebra di Boole permette di modellare il funzionamento dei circuiti elettronici binari. P. Vicini LSS A.A. 2015-2016 2 / 42 Circuiti combinatori e sequenziali Un blocco logico e’ un circuito elettronico con linee in input e output a cui sono associate variabili binarie. Il circuito calcola funzioni logiche come combinazioni di operazioni algebriche booleane sulle variabili in input. Due classi: circuiti combinatori e circuiti sequenziali P. Vicini LSS A.A. 2015-2016 3 / 42 Circuiti combinatori e sequenziali Un blocco logico e’ un circuito elettronico con linee in input e output a cui sono associate variabili binarie. Il circuito calcola funzioni logiche come combinazioni di operazioni algebriche booleane sulle variabili in input. Due classi: circuiti combinatori e circuiti sequenziali L’uscita di un circuito combinatorio e’ determinata completamente dal valore istantaneo della combinazione degli ingressi P. Vicini LSS A.A. 2015-2016 3 / 42 Circuiti combinatori e sequenziali Un blocco logico e’ un circuito elettronico con linee in input e output a cui sono associate variabili binarie. Il circuito calcola funzioni logiche come combinazioni di operazioni algebriche booleane sulle variabili in input. Due classi: circuiti combinatori e circuiti sequenziali L’uscita di un circuito combinatorio e’ determinata completamente dal valore istantaneo della combinazione degli ingressi P. Vicini Un circuito sequenziale e’ un sistema composto da circuiti combinatori e elementi di memoria in cui le uscite sono una funzione del valore degli ingressi e dello stato passato del circuito. LSS A.A. 2015-2016 3 / 42 Tavola della verita’ La funzione logica di un circuito combinatorio e’ completamente descritta e specificata da una tavola della verita’ Dati n bits di ingresso, il numero delle configurazioni possibili degli ingressi e’ 2n La tavola possiede quindi 2n righe con valore delle uscite per quella particolare combinazione degli ingressi. P. Vicini LSS A.A. 2015-2016 4 / 42 Numeri in notazione binaria La rappresentazione decimale di numeri interi positivi e’ una rappresentazione posizionale in base 10 (288)10 = 2 ∗ 102 + 8 ∗ 101 + 8 ∗ 100 il cui intervallo va da 0 a 10N − 1, con N uguale all’estensione della rappresentazione P. Vicini LSS A.A. 2015-2016 5 / 42 Numeri in notazione binaria La rappresentazione decimale di numeri interi positivi e’ una rappresentazione posizionale in base 10 (288)10 = 2 ∗ 102 + 8 ∗ 101 + 8 ∗ 100 il cui intervallo va da 0 a 10N − 1, con N uguale all’estensione della rappresentazione In perfetta equivalenza anche la rappresentazione binaria e’ posizionale ma in base 2. Dato un numero a n bits: (x)2 = xn−1 2n−1 + xn−2 2n−2 + ... + x1 21 + x0 20 dove l’intervallo e’ 0 : 2n − 1 A 32 bits l’intervallo va da 0 a +4.294.967.295 P. Vicini LSS A.A. 2015-2016 5 / 42 Numeri in notazione binaria Esempio: 0000 0000 0000 0000 0000 0000 0000 10112 = 0 + ... + 1 ∗ 23 + 0 ∗ 22 + 1 ∗ 21 + 1 ∗ 20 = 0 + ... + 8 + 0 + 2 + 1 = 1110 Lo stesso ragionamento vale anche per la rappresentazione di numeri frazionari. In base 10: (0.571)10 = .... + 5 ∗ 10−1 + 7 ∗ 10−2 + 1 ∗ 10−3 In base 2: (0.00101)2 = ....+0∗2−1 +0∗2−2 +1∗2−3 +0∗2−4 +1∗2−5 P. Vicini LSS A.A. 2015-2016 6 / 42 Rappresentazione esadecimale La rappresentazione esadecimale e’ un codice la cui base e’ 16 E’ una rappresentazione compatta per stringhe di bit Ogni gruppo di 4 bits viene rappresentato da una cifra Hex Esempi: C 1A0 C 1A0 = 1100 0001 1010 0000 1100 0001 1010 0000 P. Vicini LSS A.A. 2015-2016 7 / 42 Rappresentazione esadecimale La rappresentazione esadecimale e’ un codice la cui base e’ 16 E’ una rappresentazione compatta per stringhe di bit Ogni gruppo di 4 bits viene rappresentato da una cifra Hex Esempi: C 1A0 C 1A0 = 1100 0001 1010 0000 1100 0001 1010 0000 ???? ???? P. Vicini = 1111 1110 1101 1110 1100 1110 1100 1010 LSS A.A. 2015-2016 7 / 42 Cambiamenti di base Per convertire da base qualsiasi a base 10 sfruttiamo il fatto che la rappresentazione e’ posizionale: (427)8 = 4 ∗ 82 + 2 ∗ 81 + 7 ∗ 80 = 4 ∗ 64 + 2 ∗ 16 + 7 = (279)10 Per convertire da base 10 a base qualsiasi procediamo per divisioni successive: 35 17 8 4 2 1 : : : : : : 2 2 2 2 2 2 P. Vicini = 17 resto 1 = 8 resto 1 = 4 resto 0 = 2 resto 0 = 1 resto 0 = 0 resto 1 (35)10 = (100011)2 LSS A.A. 2015-2016 8 / 42 Numeri e rappresentazioni: signed Numeri signed complemento a 2 Dato un numero ad n bit: x = -xn−1 2n−1 + xn−2 2n−2 + ... + x1 21 + x0 20 l’intervallo e’ −2n−1 a 2n−1 − 1 Esempio: 1111 1111 1111 1111 1111 1111 1111 11002 = −1 ∗ 231 + 1 ∗ 230 + ... + 1 ∗ 23 + 1 ∗ 22 + 0 ∗ 21 + 0 ∗ 20 = −2.147.483.648 − 2.147.483.644 = −410 A 32 bits l’intervallo va da −2.147.483.648 a +2.147.483.647 P. Vicini LSS A.A. 2015-2016 9 / 42 Numeri e rappresentazioni: signed (2) Numeri signed complemento a 2 (continua) Il bit 31 e’ il bit di segno: 1 per negativi, 0 per positivi la rappresentazione non e’ completa i.e. intervallo non simmetrico: −(−2n−1 ) ???? I numeri non-negativi hanno la stessa rappresentazione unsigned e 2s-complement (utile per aritmetica...) Alcuni numeri specifici: 0 : 0000 0000 ... 0000 −1 : 1111 1111 ... 1111 Massimo numero negativo: 1000 0000 ... 0000 Massimo numero positivo: 0111 1111 ... 1111 P. Vicini LSS A.A. 2015-2016 10 / 42 Numeri e rappresentazioni: signed (3) Per passare dal numero positivo al suo equivalente negativo (e viceversa) si effettua un’operazione di complementazione e somma (+1) numeri negativo Complementare un numero binario significa invertirne tutti i bit x + x̄ = 1111 ... 1112 = −1 x̄ + 1 = −x Esempio negazione di +2 +2 = 0000 0000 ... 00102 −2 = 1111 1111 ... 11012 + 1 = 1111 1111 ... 11102 P. Vicini LSS A.A. 2015-2016 11 / 42 Addizione e sottrazione Abbiamo imparato alle scuole elementari che addizione e sottrazione si eseguono cosi’ Addizione 111111 1011011000000 + 10110110000000 = ----------------------100010001000000 Sottrazione (come in base 10 ma occhio ai "prestiti") 1 1 1 1 0 0 0 (8) 0 1 0 1 = (5) ---------------------------0 0 1 1 P. Vicini LSS A.A. 2015-2016 12 / 42 Moltiplicazione ed estensione di segno Moltiplicazione 1 1 1 1 * 1 1 1 1 = -------------------1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -------------------1 1 1 0 0 0 0 1 Estensione di segno: se N < 0 si riempe a sinistra di 1 altrimenti di 0 0 1 0 0 = 0 0 0 0 0 1 0 0 = 4 4 1 1 0 0 = -4 1 1 1 1 1 1 0 0 = -4 P. Vicini LSS A.A. 2015-2016 13 / 42 Operazioni signed Se la rappresentazione e’ in complemento a 2, addizione e sottrazione si riducono alla sola addizione trascurando il bit MSB del risultato La rappresentazione e’ limitata: dobbiamo fare attenzione agli overflow... 1 1 +7 0 1 1 1 + +3 0 0 1 1 = ---------------(0) 1 0 1 0 ????? +7 -3 0 1 1 1 + 1 1 0 1 = ---------------+4 (1) 0 1 0 0 Sottrazione –> a − b = a + (−b) 6 − 2 = (6) + (−2) 1 1 0 1 1 0 + (+6) 1 1 1 0 = (-2) -------------(1) 0 1 0 0 (+4) P. Vicini −4 − 2 = (−4) + (−2) 1 1 1 0 0 + (-4) 1 1 1 0 = (-2) -------------(1) 1 0 1 0 (-6) LSS −4 − 5 = (−4) + (−5) 1 1 0 0 + (-4) 1 0 1 1 = (-5) -------------(1) 0 1 1 1 (+7) ????? A.A. 2015-2016 14 / 42 Overflow Overflow compare quando il risultato dell’operazione non puo’ essere rappresentato nel formato degli operandi (es 32 bits) ovvero quando il bit di segno non e’ coerente con quello aspettato dal tipo di operazione e dal segno degli operandi No overflow quando si addizionano un numero positivo ed uno negativo... No overflow quando in una sottrazione i segni degli operandi sono uguali Operazione A+B A+B A−B A−B P. Vicini Operando A ≥0 <0 ≥0 <0 Operando B ≥0 <0 <0 ≥0 LSS Sign Result per Ovf <0 ≥0 <0 ≥0 A.A. 2015-2016 15 / 42 Rappresentazione in virgola mobile R = (−1)S × 1.M × b E In virgola mobile (i.e. floating point) il numero reale perde la sua esattezza algebrica ma si rappresenta con un bit di segno S, un’ordine di grandezza (esponente) E un numero arbitrario di cifre significative (mantissa) M P. Vicini LSS A.A. 2015-2016 16 / 42 Rappresentazione in virgola mobile R = (−1)S × 1.M × b E In virgola mobile (i.e. floating point) il numero reale perde la sua esattezza algebrica ma si rappresenta con un bit di segno S, un’ordine di grandezza (esponente) E un numero arbitrario di cifre significative (mantissa) M La rappresentazione in virgola mobile si puo’ usare con qualsiasi base e con qualsiasi rappresentazione di esponente e mantissa Esempi: 1.27E 12 = 1.27x1012 12, 433x10−4 , 11.10010x1011101 , 1110.10110x10−10 Di conseguenza c’e’ bisogno di accordarsi su uno standard P. Vicini LSS A.A. 2015-2016 16 / 42 Standard FP IEEE 754 Nei computers si usano abitualmente rappresentazioni IEEE da 32 bit (singola precisione) e 64 bit (doppia precisione) La singola precisione (SP) ha 7 cifre decimali significative ed un range di 10±38 La doppia precisione (DP) ha 16 cifre decimali significative ed un range di 10±308 P. Vicini LSS A.A. 2015-2016 17 / 42 Esempio FP Numero float = +15213.0 15213(10) = 11101101101101(2) = 1.1101101101101 × 213 Mantissa: M = 1.1101101101101 frac = 1101101101101 0000000000 Esponente: E = 13 bias = 127 E = 127 + 13 = 140 = 10001100 Rappresentazione in SP 0 10001100 11011011011010000000000 P. Vicini LSS A.A. 2015-2016 18 / 42 Algebra Booleana e porte logiche La funzione logica di un circuito combinatorio e’ completamente descritta e specificata da una Equazione Logica Le variabili (i segnali...) in input e output sono variabili logiche. la funzione e’ la combinazione dei 3 operatori fondamentali dell’algebra booleana OR (A + B) out = 1 se almeno un input = 1 AND (A ∗ B) out = 1 se tutti gli input = 1 NOT (A) out = inverso dell’input Table: Operatore NOT A 0 1 Q 1 0 P. Vicini Table: Operatore OR A 0 0 1 1 B 0 1 0 1 Q 0 1 1 1 LSS Table: Operatore AND A 0 0 1 1 B 0 1 0 1 Q 0 0 0 1 A.A. 2015-2016 19 / 42 Proprieta’ dell’algebra booleana Proprieta’ degli operatori: Identita’: Nullo: Idempotente: Inverso: A+0=A A+1=1 A+A=A A+A=1 A∗1=A A∗0=0 A∗A=A A∗A=0 Proprieta’ dell’algebra: Commutativa: Associativa: Distributiva: A+B =B +A A + (B + C ) = (A + B) + C A ∗ (B + C ) = (A ∗ B) + (A ∗ C ) A∗B =B ∗A A ∗ (B ∗ C ) = (A ∗ B) ∗ C A + (B ∗ C ) = (A + B) ∗ (A + C ) Leggi di De Morgan: (A + B) = A ∗ B P. Vicini (A ∗ B) = A + B LSS A.A. 2015-2016 20 / 42 Operatori NAND e NOR NOR: e’ l’operatore NOT(OR) NAND: e’ l’operatore NOT(AND) A 0 0 1 1 B 0 1 0 1 Q 1 1 1 0 A 0 0 1 1 B 0 1 0 1 Q 1 0 0 0 Si puo’ dimostrare che il NAND(NOR) e’ un’operatore universale i.e e’ l’unico necessario per implementare qualsiasi funzione logica A=A+0=A∗1 A+B =A+B =A∗1∗B ∗1 A ∗ B = (A ∗ B) + 0 = (A ∗ B) + 0 = A ∗ B ∗ 1 P. Vicini LSS A.A. 2015-2016 21 / 42 Porte logiche e transistor Tecnologia CMOS (Complementary Metal Oxide Semiconductor) viene usata per realizzare transistor planari su silicio I principali vantaggi rispetto ad implementazione BJT sono la maggiore semplicita’ della tecnologia planare usata (che permette densita’ maggiori) e la potenza statica dissipata quasi nulla. Il comportamento e’ quello di un interruttore comandato dal gate Control NMOS (N-Type Metal Oxide Semiconductor) transistor conduce se C = 1. Resistenza infinita se C = 0 PMOS (P-Type Metal Oxide Semiconductor) transistor conduce se C = 0. Resistenza infinita se C = 1 P. Vicini LSS A.A. 2015-2016 22 / 42 Porte logiche e transistor In tecnologia CMOS un PMOS e’ sempre accoppiato ad un NMOS. Si escludono quindi path statici tra VDD e GND –> potenza dissipata statica (quasi) nulla... Solo in presenza del cambiamento di stato del gate si apre un canale VDD-GND –> potenza dissipata dinamica bassa Es: Inverter P. Vicini LSS A.A. 2015-2016 23 / 42 Porte logiche e transistor In tecnologia CMOS un PMOS e’ sempre accoppiato ad un NMOS. Si escludono quindi path statici tra VDD e GND –> potenza dissipata statica (quasi) nulla... Solo in presenza del cambiamento di stato del gate si apre un canale VDD-GND –> potenza dissipata dinamica bassa Es: Inverter P. Vicini LSS A.A. 2015-2016 23 / 42 Porte logiche e transistor P. Vicini LSS A.A. 2015-2016 24 / 42 Porte logiche e transistor NAND P. Vicini NOR LSS A.A. 2015-2016 24 / 42 Porte logiche e transistor NAND NOR Se in una particolare tecnologia il transistor PMOS e’ piu’ veloce Meglio avere PMOS in serie Porte NOR preferite per implementazione circuiti Se invece una particolare il transistor NMOS e’ piu’ veloce Meglio avere NMOS in serie Porte NAND preferite per implementazione circuiti P. Vicini LSS A.A. 2015-2016 24 / 42 Porte logiche con BJT P. Vicini LSS A.A. 2015-2016 25 / 42 Datasheet NAND 74LS00 P. Vicini LSS A.A. 2015-2016 26 / 42 Datasheet NAND 74LS00 P. Vicini LSS A.A. 2015-2016 27 / 42 Forme canoniche Ogni equazione logica puo’ essere rappresentata in forma canonica tramite uso di operatori AND, OR, e NOT La forma canonica si deriva (ad es..) dalla tabella della verita’ in forma di Somma di Prodotti (SP) Per ogni entry uguale ad 1 dell’output si genera un prodotto minterm degli input dove gli input=0 sono negati Per ottenere l’equazione in forma S, si sommano i prodotti cosi’ ottenuti E = (A ∗ B ∗ C ) + (A ∗ B ∗ C ) Grazie alla proprieta’ di identita’ della somma logica (A + 0 = A) il contributo all’equazione logica viene solo dai minterm non 0 P. Vicini LSS A.A. 2015-2016 28 / 42 Da forma canonica al circuito (logica 2-level) A partire da un’equazione logica espressa come SP si puo’ realizzare il circuito equivalente con variabili (segnali) invertite e non invertite che attraversano: un livello di porte AND per i prodotti un livello di porte OR per la somma dei prodotti A B 0 0 0 1 1 0 1 1 Q 0 1 1 0 Q = (A ∗ B) + (A ∗ B) P. Vicini LSS A.A. 2015-2016 29 / 42 Minimizzazione di circuiti Obiettivo della minimizzazione e’ la riduzione del costo del circuito combinatorio in termini di numero di porte e variabili necessarie all’implementazione dell’equazione richiesta Si ottiene un circuito equivalente che generalmente e’ piu’ piccolo e con tempi di propagazione ridotti. Si puo’ agire per ispezione utilizzando le proprieta’ dell’algebra. Esempio: Q = A ∗ B + A ∗ B –>applico proprieta’ distributiva Q = B ∗ (A + A) –> applico inverso Q =B ∗1=B in questo caso la variabile A e’ DON’T CARE cioe’ non conta ai fini della definizione della equazione L’individuazione di variabili DON’T CARE e’ l’obiettivo ultimo della minimizzazione P. Vicini LSS A.A. 2015-2016 30 / 42 Minimizzazione di circuiti Esempio: multiplexer a due input. Seleziona in uscita il valore di un ingresso scelto tra 2(N) diversi in base ai valori assunti dagli ingressi di select (S) Scrivo la funzione in termini di somme di prodotti Z = SAB + SAB + SAB + SAB –> distributiva Z = SA(B + B) + SB(A + A) –> inverso Z = SA + SB 3 gate NOT, 8 gate AND e 3 gate OR –> 1 NOT, 2 AND, 1 OR !!!!! P. Vicini LSS A.A. 2015-2016 31 / 42 Mappe di Karnaugh (MK) Metodo grafico utile per minimizzare funzioni booleane di poche (2-6) variabili. Sfrutta caratteristiche posizionali delle Mappe di Karnaugh che sono rappresentazioni simili ed alternative alla tavola della verita’ La combinazione degli input per ogni riga(colonna) deve differire da quelle delle righe(colonne) adiacenti per l’inversione di una sola variabile Quindi, ogni casella differisce dalle adiacenti per l’inversione di una sola variabile Allora, due caselle adiacenti generano una variabile DON’T CARE.... P. Vicini LSS A.A. 2015-2016 32 / 42 Mappe di Karnaugh (MK) Scopo del metodo e’ quello di individuare facilmente insieme di righe della tabella della verita’ che contengono variabili DON’T CARE. gli 1 corrispondenti a queste righe risultano adiacenti nella mappa corrispondente. Il loro insieme si definisce come loop o p-sottocubo dove p e’ il rank del loop. Le mappe sono periodiche al contorno i.e. bordi orizzontali e verticali possono essere considerati adiacenti... P. Vicini LSS A.A. 2015-2016 33 / 42 Mappe di Karnaugh (MK) E’ intuitivo che piu’ grandi sono i loop piu’ efficace la minimizzazione Per le proprieta’ dell’algebra gli stessi 1 possono essere inclusi in piu’ loops In caso di funzioni incomplete alcuni output, per particolari configurazioni degli input, non sono definiti/interessanti e quindi possono valere 0 o 1 a nostra scelta Sfrutto questo fatto per costruire una MK piu’ efficace in termini di minimizzazione P. Vicini LSS A.A. 2015-2016 34 / 42 Mappe di Karnaugh (MK) 1 2 3 4 5 6 7 8 Costruire la MK come visto Padding delle condizioni DON’T CARE nel modo migliore Ricercare nella mappa gli 1 "isolati" e crearne un gruppo per ognuno Ricercare nella mappa gli 1 che sono adiacenti ad un solo altro 1 e crearne un loop-coppia. Raggruppare gli eventuali ottetti anche se contengono 1 gia’ inclusi in altri gruppi Raggruppare gli eventuali quad anche se contengono 1 gia’ inclusi in altri gruppi (facendo attenzione ad usare il numero minimo di gruppi) Generare un gruppo-coppia per ogni 1 non incluso Formare l’OR dei termini generati da ciascun gruppo P. Vicini LSS A.A. 2015-2016 35 / 42 Esempi di circuiti combinatori: Multiplexer Multiplexer 2:1 Mux 8:1 single bit Mux 2:1 32 bit Mux 8:1 come gen funzioni F = (ABC ) + (ABC ) + (ABC ) + (ABC ) P. Vicini LSS A.A. 2015-2016 36 / 42 Esempi di circuiti combinatori: Demultiplexer Da 1 input a n output (scelti da select) log2 n segnali di controllo Simbolo del DeMux A S 0 0 0 1 1 0 1 1 B 0 0 1 0 C 0 0 0 1 DeMux schematic B = AS, C = AS P. Vicini LSS A.A. 2015-2016 37 / 42 Esempi di circuiti combinatori: Decoder Componente con n inputs e 2n outputs n input sono un numero unsigned Se n = i allora solo i-esimo bit di output uguale a 1 Lo abbiamo visto impiegato nel blocco di selezione della locazione in un Register File P. Vicini LSS A.A. 2015-2016 38 / 42 Esempi di circuiti combinatori: Comparatore Confronto di 2 numeri interi positivi In uscita A = B, A > B La condizione A < B ? A 0 0 1 1 B 0 1 0 1 A>B 0 0 1 0 P. Vicini A=B 1 0 0 1 LSS A.A. 2015-2016 39 / 42 Esempi di circuiti combinatori: PLA Programming Logic Array: componente utilizzato per generare funzioni qualsiasi in termini di somma di prodotti E’ una struttura con n input, o output, m minterm esprimibili Strutture elettriche fusibili realizzano le connessioni i.e. i minterm La programmazione consiste nel decidere quali fusibili bruciare i.e. quali sono gli input ad ogni porta AND e quali quelli ad ogni port OR P. Vicini LSS A.A. 2015-2016 40 / 42 Addizionatori Half-Adder circuito di addizione su numeri binari unsigned ad 1 bit (non completo....) P. Vicini LSS A.A. 2015-2016 41 / 42 Addizionatori Half-Adder circuito di addizione su numeri binari unsigned ad 1 bit (non completo....) Messi opportunamente in cascata realizzano addizionatori interi per parole a n bit implementando esattamente il metodo elementare paper&pencil P. Vicini LSS A.A. 2015-2016 41 / 42 Addizionatori Il full-adder o sommatore completo e’ un circuito elettronico che esegue addizioni su numeri binari unsigned ad 1 bit A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 Ci 0 1 0 1 0 1 0 1 S 0 1 1 0 1 0 0 1 Co 0 0 0 1 0 1 1 1 S = (ABCi ) + (ABCi ) + (ABCi ) + (ABCi ) P. Vicini LSS Co = BCi + AB + ACi A.A. 2015-2016 42 / 42