Logica Digitale: Circuiti Combinatori e Sequenziali
Transcript
Logica Digitale: Circuiti Combinatori e Sequenziali
Dispensa di Architettura dei Sistemi (TA) V3- 23/10/2006 18:30:00 Note Logica Digitale: Circuiti Combinatori e Sequenziali Dispensa di Architettura degli Elaboratori (BR) Corrado Mencar Sommario Le porte logiche consentono di implementare dispositivi fisici per l’elaborazione logica ed aritmetica dei dati. Tale elaborazione può essere di tipo funzionale (o input/output) oppure può dipendere dallo stato interno del dispositivo. Nel primo caso si parla di circuito “combinatorio”, nel secondo di circuito “sequenziale” Introduzione Le porte logiche implementano fisicamente le funzioni logiche di base. Funzioni logiche più complesse possono essere implementate combinando opportunamente le porte logiche di base1. È importante osservare che tutte le funzioni che operano su dati binari possono essere ricondotte a funzioni logiche. Di conseguenza, anche funzioni aritmetiche (come la somma, la sottrazione, etc.) possono essere implementate con circuiti logici, purché i dati siano rappresentati in binario. Di seguito si presentano alcuni esempi indicativi di circuiti logici. Circuiti combinatori Un circuito combinatorio (o rete combinatoria) è un insieme interconnesso di porte logiche il cui output dipende unicamente dall’input presentato alla rete. I circuiti combinatori implementano, pertanto, le funzioni logiche esprimibili nell’algebra di Boole. Di seguito si riportano alcuni semplici esempi di circuiti combinatori: Controllo parità Siano date n variabili logiche. La funzione logica che si vuole rappresentare deve fornire valore logico “0” se il numero di variabili logiche valorizzate a “1” è pari, altrimenti deve fornire valore “0”. Supponendo per semplicità n=4, la funzione logica π che si vuole implementare è definita nel seguente modo: 1 In questa dispensa si farà uso esclusivamente delle porte logiche AND, OR e NOT. I circuiti logici derivati con queste porte possono essere trasformati in circuiti equivalenti che fanno uso esclusivo uso di porte NAND (o porte NOR). Università degli Studi di Bari -1 - Dipartimento di Informatica Dispensa di Architettura dei Sistemi (TA) V3- 23/10/2006 18:30:00 A B C D π 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 Note Un modo conveniente per definire l’espressione logica associata alla tavola di verità è il seguente: 1. per ogni riga della tavola che corrisponde al valore “1” della funzione logica si considerano le variabili logiche nella loro forma normale se esse assumono valore “1”, mentre se ne considerano le negazioni se esse assumono valore “0”. Nella tavola di verità precedente, la prima riga viene scartata (perché il valore della funzione logica è “0”. La seconda riga corrisponde al valore della funzione “1” e quindi viene considerata. Per questa riga le variabili logiche A, B e C sono considerate nella forma negata perché assumono valore “0”, mentre la variabile D è considerata nella forma originale perché il valore assunto è “1”. Tutte le variabili logiche, nella forma originale o negata, sono poste in congiunzione. Così la congiunzione corrispondente alla seconda riga della tavola di verità è ABCD . 2. tutte le congiunzioni ottenute dalle righe della tavola di verità che corrispondono al valore “1” della funzione logica vengono combinate per disgiunzione. Di conseguenza, l’espressione logica corrispondente alla funzione logica esplicitata nella precedente tavola di verità è la seguente: Università degli Studi di Bari -2 - Dipartimento di Informatica Dispensa di Architettura dei Sistemi (TA) V3- 23/10/2006 18:30:00 π ( A, B , C , D ) = ABCD + ABCD + ABCD + ABCD + Note + ABCD + ABCD + ABCD + ABCD Un espressione definita mediante disgiunzione di congiunzioni, tale che in ogni congiunzione occorrono tutte le variabili (in forma negata o non) è detta espressione in forma canonica disgiuntiva2. L’espressione logica in forma normale congiuntiva è particolarmente comoda perché può essere immediatamente convertita in circuito logico. Il circuito logico corrispondente all’espressione logica per il controllo di parità è il seguente: Si osservi che, grazie alla proprietà associativa della funzione AND e della funzione OR, si può semplificare la rappresentazione del circuito logico utilizzando porte logiche con più di due input. L’espressione logica può essere semplificata applicando le proprietà formali dell’algebra di Boole, dando luogo a circuiti combinatori equivalenti dal punto di vista funzionale, ma meno complessi dal punto di vista strutturale. Esistono anche altre tecniche di semplificazione, 2 Esiste anche la forma canonica congiuntiva, ottenuta mediante congiunzione di disgiunzioni. Università degli Studi di Bari -3 - Dipartimento di Informatica Dispensa di Architettura dei Sistemi (TA) V3- 23/10/2006 18:30:00 come le mappe di Karnaugh e il metodo di Quine-McKluskey. Tuttavia, utilizzando la forma canonica disgiuntiva, la procedura di creazione del circuito logico corrispondente è standard. Note Decodificatore Un decodificatore è un circuito logico che implementa 2n − 1 funzioni logiche contemporaneamente, dove n è il numero di variabili logiche in input. Ogni funzione logica è costantemente nulla, tranne quando le variabili logiche assumono una specifica configurazione. I decodificatori sono utilizzati soprattutto per l’accesso in memoria. I valori di verità delle variabili logiche costituiscono l’indirizzo di una locazione di memoria. Un decodificatore attiverà una sola linea di memoria corrispondente all’indirizzo in input. Tale attivazione consentirà di leggere (o scrivere) il contenuto della cella all’indirizzo specificato. Si supponga, per semplicità, n = 3 . Allora il codificatore implementerà 23 −1 = 7 funzioni logiche con la seguente tavola di verità: A B C d1 d2 d3 d4 d5 d6 d7 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 L’espressione logica di ciascuna funzione coincide con una semplice congiunzione. Per esempio, l’espressione logica di d1 è ABC . Il circuito logico del decodificatore è: Università degli Studi di Bari -4 - Dipartimento di Informatica Dispensa di Architettura dei Sistemi (TA) V3- 23/10/2006 18:30:00 Note Sommatore (adder) La funzione di somma tra due numeri può essere espressa come funzione logica se i numeri sono rappresentati in forma binaria. Di conseguenza, è possibile implementare la funzione somma con una circuito combinatorio. Somma di due bit Per semplicità, si studia dapprima il caso della somma tra due bit. Un bit è una cifra binaria che può assumere esclusivamente valore 0 e 1. Si supponga di disporre di due variabili logiche, A e B, ciascuna corrispondente ad un bit. Si possono individuare quattro casi: 1. A = B = 0 . È evidente che la somma è nulla: A + B = 0 2. A = 0; B = 1 . La somma è l’unità: A + B = 1 3. A = 1; B = 0 . La somma è l’unità: A + B = 1 4. A = B = 1 . La somma non può essere 2, poiché il risultato deve essere un bit. Così come nel sistema decimale si ricomincia da 0 e si marca un riporto a 1 (come quando si passa da 9 a 10). Di conseguenza, per implementare la funzione somma è necessario implementare due funzioni logiche: una per la somma e l’altra Università degli Studi di Bari -5 - Dipartimento di Informatica Dispensa di Architettura dei Sistemi (TA) V3- 23/10/2006 18:30:00 per il riporto, che è sempre nullo tranne quando entrambi i bit sono a “1”. Le funzioni logiche corrispondenti sono: A B A⊕B R 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1 Note Il circuito logico corrispondente è piuttosto semplice (si fa uso della porta XOR per comodità): Somma ad un bit con riporto Si supponga di avere tre operandi ad un bit da sommare,. Allora si hanno in tutto tre input e due output, uno corrispondente alla somma e l’altro al riporto. La tavola di verità della somma seguirà quella a due bit, con l’unica accortezza che quando tutti e tre i bit sono ad uno, allora la somma è 1 e il riporto è 1: A B C A ⊕ B ⊕C R 0 0 0 0 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 L’espressione logica equivalente della somma è: A ⊕ B ⊕ C = ABC + ABC + ABC + ABC Semplificando, si ottiene: A XOR ( B XOR C ) Università degli Studi di Bari -6 - Dipartimento di Informatica Dispensa di Architettura dei Sistemi (TA) V3- 23/10/2006 18:30:00 L’espressione logica del riporto è invece: R = ABC + ABC + ABC + ABC che si semplifica in: Note ( A XOR B )C + AB Il circuito logico equivalente è: A B C A B C R Poiché tale circuito sarà utilizzato in seguito, esso può essere sintetizzato graficamente come segue: Somma di numeri a due o più bit Si supponga di avere due numeri espressi in formato binario, entrambi di due bit ciascuno. Per effettuare la somma dei due numeri, si sommano prima i bit meno significativi per ottenere il bit meno significativo della somma. Poi si sommano i bit più significativi, assieme al riporto della prima somma, per ottenere il bit più significativo della somma e il riporto della somma totale. Per implementare il circuito logico corrispondente si può utilizzare il sommatore a due bit con riporto descritto nella sezione precedente. Il circuito combinatorio è dunque: Università degli Studi di Bari -7 - Dipartimento di Informatica Dispensa di Architettura dei Sistemi (TA) A1 A0 B1 V3- 23/10/2006 18:30:00 B0 Note A Σ B C R C0 A Σ C1 R R B C Per numeri rappresentati da più di due bit, l’implementazione si ottiene facilmente estendendo quella per numeri a due bit, collegando in cascata i riporti. L’implementazione presentata è la più semplice, ma la meno efficiente perché per ottenere la somma finale è necessario attendere la propagazione dei riporti dal meno significativo al più significativo. Un’implementazione più efficiente non è basata sul sommatore a due bit e riporto, ma è ottenuta direttamente dalla tavola di verità della funzione di somma. Circuiti sequenziali I circuiti combinatori implementano delle funzioni logiche esprimibili mediante tavole di verità. Tali circuiti sono anche detti memoryless perché il loro stato non cambia quando eseguono le operazioni. In conseguenza a ciò, i circuiti combinatori garantiscono sempre lo stesso output quando ad essi si presenta il medesimo input. Nei calcolatori, tuttavia, a volte è necessario conservare nel tempo i dati, per essere elaborati in seguito. Ad esempio, se dovesse essere necessario sommare il contenuto di due celle di memoria, allora è necessario dapprima leggere dalla memoria il contenuto della prima cella, memorizzarlo temporaneamente nella ALU e caricare il contenuto della seconda parola per addizionarlo alla prima. La necessità di memorizzare dati all’interno della ALU richiede che quest’ultima sia dotata di registri, ossia dispositivi di memorizzazione volatile ad alta velocità. Tali registri possono essere realizzati mediante porte logiche perché queste ultime sono in genere più veloci dei dispositivi utilizzati per fabbricare la memoria centrale, ma è necessario qualche accorgimento affinché i circuiti basati sulle porte abbiano la possibilità di memorizzare dati nel tempo. Per ottenere circuiti logici dotati di memoria (o di stato) si ricorre al feedback, ossia al meccanismo secondo cui l’output del circuito e re-immesso in input al circuito stesso. Circuiti logici dotati di memoria sono detti circuiti sequenziali. Università degli Studi di Bari -8 - Dipartimento di Informatica Dispensa di Architettura dei Sistemi (TA) V3- 23/10/2006 18:30:00 Flip-flop Note Il flip-flop è un circuito logico molto semplice in grado di memorizzare uno stato corrispondente ad un bit. Flip-flop S-R Un flip-flop S-R è un circuito logico con due input ed un output. Un input serve ad impostare ad uno (“Set”) lo stato del dispositivo, mentre gli output del dispositivo corrispondono, rispettivamente, allo stato ed alla sua negazione. Il circuito logico del flip-flop è il seguente: La tavola di verità del flip-flop è la seguente: R S Q (t + Δt) 0 0 Q (t) 0 1 1 1 0 0 La tavola di verità del flip-flop è più complessa perché l’uscita non dipende esclusivamente dagli input R e S, ma anche dallo stato del dispositivo. In particolare, l’output del dispositivo, all’istante t + Δt dipende dall’input e dall’output immediatamente precedente t , che ne definisce lo stato. Quando entrambi gli input sono a “0”, l’output del flip-flop è identico all’output nell’istante precedente. In questo modo si realizza la possibilità di memorizzare un bit. Quando S=1 ma R=0 lo stato (e quindi l’output) del flip-flop viene impostato ad 1. Viceversa se S=0 e R=1 lo stato viene reimpostato a 0. Se R=S=1 si ottiene un incoerenza, poiché sia l’uscita Q che la sua negazione verrebbero impostati a 0. Per questo motivo questa configurazione deve essere evitata. Altri flip-flop È possibile implementare altri tipi di flip-flop, che consentono di superare alcuni limiti del semplice flip-flop S-R. In particolare: 1. I flip-flop S-R temporizzati operano in sincronismo con il clock del microprocessore. Ciò evita problemi dovuti a possibili ritardi nella propagazione dei segnali. Università degli Studi di Bari -9 - Dipartimento di Informatica Dispensa di Architettura dei Sistemi (TA) V3- 23/10/2006 18:30:00 2. I flip-flop di tipo D consente di evitare la condizione S=R=1 perché sono dotati di un solo input. Note 3. I flip-flop J-K risolve il problema del flip-flop S-R della coerenza. Quando entrambi gli input sono a uno, lo stato del flip-flop J-K viene invertito. Esercizi proposti 1. Costruire la porta XOR partendo da AND, OR e NOT; 2. Implementare la funzione AND a tre input mediante porte NOR 3. Scrivere l’espressione logica della funzione NAND a 4 bit 4. Realizzare un circuito combinatorio con 4 input e 7 output per la visualizzazione di cifre su un display LCD. 5. Realizzare un circuito combinatorio per la moltiplicazione di numeri a due bit. Università degli Studi di Bari - 10 - Dipartimento di Informatica