Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Calcolatori 04 Algebra
Calcolatori 04 Algebra
Corso di Laurea
Ingegneria Elettronica e Informatica
Anno Accademico 2013/2014
Calcolatori
Dario Bruneo
1
Nota
Le slide seguenti sono da intendersi come materiale didattico aggiuntivo del corso di
Calcolatori 1.
Non possono in nessun modo essere sostitutive dei libri di testo, devono
quindi essere usate esclusivamente come una guida.
Mano, Kime “Logic and Computer Design Fundamentals” 3° edition Pearson Prentice Hall
I circuiti digitali trattano informazioni binarie e In tal modo ci si dovrà occupare solo delle proprietà
logiche esterne
sono costituiti da transistor
Un circuito digitale può essere visto come un insieme di
porte logiche connesse in cascata
a0 CarryIn
Result0
b0 ALU0
Less
CarryOut
a1 CarryIn
Result1
b1 ALU1
0 Less
CarryOut .. Zero
.
a2 CarryIn
Result2
b2 ALU2
0 Less
CarryOut
.. . .. .. .. ..
. .. .. . . CarryIn . .
.
variabili che possono assumere due valori discreti (saranno rappresentate da lettere maiuscole: A, B, C, X,Y, Z)
Le tre operazioni logiche che operano sulle variabili binarie sono: AND, OR e NOT
Le operazioni sono definite mediante una tabella di verità: una tabella che per ognuna delle possibile combinazioni delle variabili
mostra la relazione tra le variabili ed il risultato dell’operazione
L’andamento dei segnali di ingresso e di uscita di una porta può essere rappresentato mediante dei
diagrammi temporali
segnale ➔
tempo ➔
Sistema algebrico per trattare in modo sistematico la logica (risolvere il calcolo proposizionale tramite
regole algebriche)
Oggi ha numerose applicazioni nel campo dei calcolatori e dell’elettronica in quanto consente di definire un
modello adeguato di una realtà fisica
In tal modo sarà possibile effettuare, mediante calcoli algebrici, sia l’analisi che la sintesi di circuiti
L’algebra di Boole è definita mediante un insieme di elementi, un insieme di operatori ed un numero fissato
di assiomi
A = (A, +, ‧, ’, 0, 1)
L’algebra booleana dei circuiti di commutazione (Shannon) tratta le variabili binarie e le relative operazioni
logiche
B = ({0,1}, +, ‧, ’, 0, 1)
Data un’espressione E si definisce duale di E l’espressione ED costruita scambiando tra loro le operazioni di AND e OR ed invertendo
gli 0 in 1 e viceversa.
Principio di dualità: ogni identità deducibile dai postulati dell’algebra vale anche per la duale
A+A =
complemento = (A+A)‧(A+A’) =
distributiva = A+(A‧A’) =
complemento = A+0 =
elemento neutro = A.
Espressione booleana: espressione che può essere composta da una o più variabili binarie, dalle
costanti 0 e 1, dai simboli delle operazioni logiche e dalle parentesi (Es. X+Y’Z+1)
Funzione booleana f : {0,1}n → {0,1}: relazione logica tra una variabile binaria dipendente, a primo
membro, e le variabili binarie indipendenti a secondo membro; può essere descritta mediante un’espressione
(Es. F=X+Y’Z)
Non esiste una relazione univoca tra un’espressione booleana ed una funzione booleana
Una funzione booleana può essere descritta mediante una tabella di verità
Una funzione booleana è descritta univocamente da una ed una sola tabella di verità
Le tabelle di verità riguardanti le operazioni logiche (AND, OR, NOT) vanno considerate come casi
particolari e semplici di funzioni booleane
Una funzione booleana può essere trasformata in un circuito composto da porte logiche i cui ingressi
saranno composti dalle variabili indipendenti e la cui uscita sarà composta dalla variabile dipendente
F=X+Y’Z
Circuiti logici combinatori: l’uscita è univocamente determinata dai valori dei segnali di ingresso
Ad una funzione possono corrispondere più circuiti logici equivalenti: l’algebra booleana è uno strumento
utile per la semplificazione di circuiti digitali
Es. F=X’YZ+X’YZ’+XZ
F = X’YZ+X’YZ’+XZ =
per l’identità 14 = X’Y(Z+Z’)+XZ =
per l’identità 7 = X’Y(1)+XZ =
per l’identità 2 = X’Y+XZ.
I due circuiti sono equivalenti (si può verificare mediante la tabella di verità). Comunque appare chiaro come
il secondo circuito sia più “semplice” del primo
Complessità spaziale: numero di porte, numero di linee (o fili), numero di ingressi delle porte
Letterale: una singola variabile, sia in forma diretta che negata, presente all’interno di un termine
Quando un’espressione booleana è implementata con porte logiche il numero di termini e letterali è
direttamente proporzionale alla complessità (spaziale) del circuito
Per semplificare le espressioni booleane è, a volte utile, usare il seguente teorema (detto del consenso)
XY + YZ + ZX’ = XY + ZX’
dimostrazione
= XY + ZX’.
Duale:
(X+Y)(Y+Z)(Z+X’) = (X+Y)(Z+X’)
Il complemento di una funzione si ottiene complementando i valori assunti nella tabella di verità
Un metodo più semplice consiste nel considerare la duale e negare ogni letterale
Una funzione booleana in forma algebrica può essere espressa in molte forme tra loro equivalenti
Nasce l’esigenza di identificare una prima espressione booleana che rappresenti la funzione per poi
procedere con la semplificazione
Una possibile scelta consiste nell’utilizzo delle forme canoniche che sono forme standard univocamente
determinate
Si definisce mintermine di una funzione un prodotto nel quale tutte le variabili appaiono una volta, o in
forma diretta o in forma negata
Il pedice di ogni mintermine è identificato dal numero decimale corrispondente alla combinazione binaria
degli ingressi che lo “attivano” (tali cioè che il mintermine abbia valore 1)
Si definisce maxtermine di una funzione una somma nella quale tutte le variabili appaiono una volta, o in
forma diretta o in forma negata
Il pedice di ogni maxtermine è identificato dal numero decimale corrispondente alla combinazione binaria
degli ingressi che lo “attivano” (tali cioè che il maxtermine abbia valore 0)
Dalle tabelle di verità dei mintermini e dei maxtermini si possono derivare le seguenti affermazioni:
Un mintermine è una funzione booleana, diversa da f=0, avente il minor numero di 1 nella propria tabella di verità
Un maxtermine è una funzione booleana, diversa da f=1, avente il maggior numero di 1 nella propria tabella di verità
Un mintermine ed un maxtermine identificati dallo stesso pedice risultano l’uno il complementare dell’altro
M j = m j’
Una funzione booleana può essere espressa nella forma canonica somma di prodotti (SP) sommando
tutti i mintermini che fanno assumere il valore 1 alla funzione
F(X, Y, Z) = m1 + m4 + m5 + m6 + m7 =
= ∑m(1,4,5,6,7) =
+ XYZ’ + XYZ
Una funzione booleana può essere espressa nella forma canonica prodotto di somme (PS)
moltiplicando tutti i maxtermini che fanno assumere il valore 0 alla funzione
F(X, Y, Z) = M0‧M2‧M3 =
= ∏M(0,2,3)
= (X+Y+Z)‧(X+Y’+Z)‧
‧ (X+Y’+Z’)
Qualunque funzione booleana può essere espressa in una qualsiasi delle due forme canoniche
Il complemento di una funzione espressa nella forma canonica SP (o PS) si può esprimere come la somma
dei mintermini (o il prodotto dei maxtermini) non inclusi nella funzione di partenza oppure come il
prodotto dei maxtermini (o la somma dei mintermini) aventi lo stesso pedice dei mintermini (o maxtermini)
inclusi nella funzione
Es.
Una funzione non espressa in forma canonica può essere convertita in una delle due forme canoniche
utilizzando la tabella di verità
Esistono circuiti, espressi come somma di prodotti o come prodotto di somme, che non sono in forma
canonica
Affinché un circuito sia espresso in forma canonica i termini della somma o del prodotto devono essere
corrispondentemente mintermini o maxtermini
Anche in questo caso per risalire ad una forma canonica è necessario partire dalla tabella di verità del
circuito
Le implementazioni somma di prodotti (o prodotto di somma), sia in forma canonica che no, corrispondono
a circuiti composti da un insieme di porte AND (o OR) che confluiscono in una porta OR (o AND)
Le reti a due livelli migliorano le prestazioni “temporali”, in quanto risultano più veloci delle corrispondenti
reti multilivello
La semplificazione delle espressioni mediante trasformazioni algebriche risulta difficile per la mancanza di
regole specifiche
Il metodo di semplificazione delle mappe di Karnaugh (o K-map) offre una procedura diretta per funzioni
booleana fino a quattro variabili
Sebbene sia possibile costruire K-map di cinque o sei variabili il loro utilizzo risulta complesso
Una K-map è un diagramma composto da celle ognuna delle quali rappresenta un mintermine della funzione
in oggetto
Una qualsiasi funzione espressa in forma canonica è identificabile graficamente su una K-map
Le K-map forniscono una rappresentazione bidimensionale della tabella di verità di una funzione
Le K-map consentono una visualizzazione immediata dei differenti modi in cui una funzione può essere
espressa
La K-map a due variabili è formata da quattro celle, una per ciascun mintermine
Ciascuna variabile appare in forma diretta nelle celle dove è uguale a 1 e in forma negata dove invece è
uguale a 0
La sequenza dei numeri lungo le colonne differisce dalla usuale sequenza dei numeri binari
In tal modo nel passaggio da una cella “adiacente” ad un’altra vi sarà la variazione di un solo bit
Una funzione può essere rappresentata nella mappa mettendo un 1 nelle celle che corrispondono ai
mintermini inclusi nella funzione stessa
Una mappa con tutti 1 corrisponderà alla funzione logica F=1 mentre una mappa con tutti 0 alla funzione
F=0
In una K-map due celle adiacenti corrispondono a mintermini che differiscono tra loro per una sola variabile
La somma logica di tali mintermini può essere semplificata mettendo in evidenza i termini in comune
Graficamente le celle vengono raggruppate in insiemi, di dimensione pari a 2 celle, evidenziati da una cornice
In questo caso i due rettangoli possono essere raggruppati per ottenere un’ulteriore semplificazione
m0 + m2 + m4 + m6 = Z’
Per potere calcolare l’espressione semplificata di una funzione è necessario che la scelta degli insiemi di celle
adiacenti comprenda tutti i mintermini (copertura della funzione)
Esempi
Esempi
Raggruppamento di 8
celle adiacenti
Particolare
adiacenza
F = Y’ + W’Z’ + XZ’
In alcuni casi possono esistere diverse alternative, con lo stesso grado di semplificazione, per la copertura
della stessa funzione
Es.
In generale all’aumentare del numero di celle che vengono combinate si ottengono prodotti con meno
letterali
I raggruppamenti, in una K-map di dimensione 2n, possono avere dimensioni crescenti con la potenza del 2
(2i, i=0,1…,n)
Durante il processo di semplificazione mediante le K-map occorre assicurarsi che, nel combinare le celle,
siano inclusi tutti i mintermini della funzione
Nello stesso tempo, al fine di ottenere un’espressione minima, si devono scegliere i raggruppamenti più
grandi evitando le ridondanze
Un prodotto P è un implicante di una funzione se essa assume il valore 1 per tutte le combinazioni delle
variabili che fanno assumere il valore 1 al prodotto P
Tutti i mintermini di una funzione sono implicanti così come i raggruppamenti di mintermini adiacenti delle
K-map
Un implicante che cessa di essere tale a causa della rimozione di qualsiasi letterale prende il nome di primo
implicante
Primi implicanti
Implicante
I primi implicanti possono essere ottenuti dalla relativa mappa ricercando tutti i più grandi raggruppamenti
di 2m celle contenenti il valore 1
I primi implicanti che contengono un mintermine della funzione che non è contenuto in altri primi implicanti
vengono detti primi implicanti essenziali
Primi implicanti
essenziali
Tutti i primi implicanti essenziali dovranno comparire nella versione “semplificata” dell’espressione
La semplificazione mediante il metodo delle mappe di Karnaugh permette di ottenere una minimizzazione a
due livelli esatta della funzione
Selezione dei primi implicanti essenziali (prima fase di copertura della funzione)
Copertura del resto della funzione, se necessario, utilizzando il minor numero di primi implicanti non essenziali
Si semplifichi, mediante il metodo delle mappe di Karnaugh, la seguente funzione di quattro variabili:
f(A,B,C,D) = ∑m(0,1,2,4,5,6,9,10,12,13,14,15)
soluzione:
ricerca dei primi implicanti selezione dei primi implicanti essenziali copertura della funzione
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 1 1 1
1 1 1 1 1 1
La funzione semplificata è:
f(A,B,C,D) = CD’ + AB + C’D + A’C’
Complessità spaziale:
Applicando le seguenti trasformazioni si può trovare un’espressione multilivello che risulta più semplice dal
punto di vista della complessità spaziale
Complessità spaziale:
Con pochi accorgimenti è possibile semplificare, mediante le K-Map, funzioni espresse nella forma canonica
PS
A tal fine si mette uno 0 nelle celle in cui non vi sono mintermini
F’ = AB + CD + BD’
Esistono applicazioni nelle quali non è specificato il valore che la funzione deve assumere per certe
combinazioni di valori delle variabili di ingresso
Si prevede che tali combinazioni di ingresso non si presentino durante il normale funzionamento
Le combinazioni di ingresso si possono presentare ma non è rilevante stabilire quale valore deve assumere l’uscita
Tali condizioni, chiamate condizioni di indifferenza o don’t care, vengono rappresentate nella tabella di
verità mediante i simboli “-”, “x” o “d”
0
1
x
1
0
1
x
1
I mintermini contrassegnati con una X possono essere utilizzati per creare raggruppamenti di celle più
grandi (vengono considerati come 1)
Una volta semplificata la funzione ed applicata la combinazione degli ingressi il circuito risponderà sempre
con un valore binario (0 o 1)
Il valore dell’uscita in corrispondenza dei don’t care dipenderà dall’avere o no adoperato una “x”durante la
fase della copertura della funzione: tale valore non avrà comunque importanza durante il normale
funzionamento del circuito
F(0,1,0,1) = 0 F(0,1,0,1) = 1
Oltre alle porte AND, OR e NOT altre porte sono utilizzate per la progettazione dei circuiti digitali
i fattori da tenere in considerazione nella scelta delle nuove porte sono: la realizzabilità, il costo e la possibilità, con esse, di
implementare le altre funzioni booleane
Ci si riferirà all’indicatore della negazione mediante un “pallino” all’ingresso o all’uscita di una porta
Un buffer produce la funzione logica F=X, poiché il valore binario dell’ingresso coincide con l’uscita.
Il circuito è utilizzato principalmente per amplificare un segnale elettrico o come elemento di ritardo
Trasformazioni grafiche
da AND/OR a NAND/NAND
Trasformazioni grafiche
da OR/AND a NOR/NOR
A⊕B=B⊕A
(A⊕B)⊕C = A⊕(B⊕C) = A⊕B⊕C
Sebbene dal punto di vista circuitale sia possibile usare porte XOR con tre o più ingressi, il simbolo
normalmente esiste solo per porte a due ingressi
Nel caso di più variabili la funzione si attiva solo se sono attivi un numero dispari di ingressi
0
1
1
0
1
0
0
1 generatore controllore
Sostituendo la porta XOR di uscita con una porta XNOR ottengo un generatore di disparità
Abbiamo visto anche il valore “don’t care”, ma esso appare solo in fase di progetto non nei circuiti reali
La logica tri-state introduce un terzo livello logico: lo stato ad alta impedenza (Hi-Z)
Lo stato ad alta impedenza si comporta come un circuito aperto: l’uscita è quindi disconnessa
Un buffer tri-state si differenzia dal normale buffer per la presenza di un ingresso supplementare
L’ingresso EN (enable) farà commutare l’uscita nello stato di Hi-Z (EN=0) o nello stato logico
corrispondente all’ingresso (EN=1)
Si distinguono:
buffer “attivi alti” o “attivi bassi” con o senza negazione dell’uscita mediante l’utilizzo di “bubbles”
Le uscite di un buffer tri-state possono essere Bisogna, comunque, evitare che i due buffer siano
connesse insieme attivati contemporaneamente!
In realtà la variazione dell’uscita di una porta logica non è una conseguenza istantanea della variazione
degli ingressi, ma avviene dopo un periodo di tempo detto ritardo di propagazione (tpd)
Tipicamente, i produttori specificano i valori massimi e tipici sia per tPHL e tPLH che per tpd
Il ritardo di un circuito sarà dato dalla somma del ritardo di ogni porta lungo il cammino più lungo tra gli
ingressi e l’uscita
Assumendo per esempio che ogni porta abbia un tpd pari a 2ns i ritardi dei due circuiti in figura saranno:
Le realizzazioni multilivello, sebbene meno complesse dal punto di vista spaziale, portano normalmente a
circuiti più lenti