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