Reti logiche (1)
Algebra booleana e circuiti combinatori
1
Un quadro della situazione
In particolare gli argomenti qui trattati interessano
ALU (Unità Aritmetico Logica) e CPU
Elementi di memoria e progetto delle gerarchie di memorie
2
1
Piano delle lezioni
Algebra booleana e porte logiche
Postulati e proprietà, operatori, tabelle di verità …
Porte, insiemi di operatori funzionalmente completi, …
Logica combinatoria e sequenziale
Circuiti combinatori fondamentali, principi di progettazione,…
Temporizzazione, elementi di memoria, register file, RAM, …
Introduzione a gerarchia di memorie
Costruzione di una unità aritmetico-logica
La CPU: Datapath, unità di elaborazione e unità di controllo
Patterson e Hennessy
Appendice B - Reti logiche
Capitolo 7 – Gerarchie di memorie
Capitolo 3 – Unità aritmetico-logica
Capitolo 5 – La CPU
3
Organizzazione della lezione
Algebra di Boole
Tabelle di verità
postulati ed identità
Logica digitale
Operatori e porte logiche
Insiemi di operatori funzionalmente completi
Circuiti combinatori
Decodificatori e Multiplexer
Forme canoniche: “somma di prodotti”, “prodotto di somme”
PLA: Array a Logica Programmabile
ROM: Read Only Memory
Minimizzazione, semplificazione, e condizioni di indifferenza
Patterson e Hennessy, sezioni B.1, B.2, B.3
Tanenbaum, complementi
4
2
Logica digitale
I componenti elettronici nei calcolatori odierni sono digitali
La logica digitale lavora con due livelli di tensione
Tutti gli altri valori di tensione sono temporanei e compaiono solo
come transizioni tra due valori principali
Dal punto di vista logico si parla di segnali
Veri (TRUE), o affermati, pari a 1
Falsi (FALSE), o negati, pari a 0
Il valore 0 è il complemento o l’inverso del valore 1, e viceversa
Tipicamente (logica positiva)
un segnale tra 0 e 1 volt rappresenta uno 0 binario e
un segnale tra 2 e 5 volt rappresenta un 1 binario
Applicato il valore di input
il valore di output appare dopo il tempo di propagazione
5
Circuiti combinatori
Circuito combinatorio
L’output in ogni istante è funzione solo dell’input, non degli
input precedenti o da stato interno (circuito senza memoria)
in generale n input e m output
Può essere specificato da:
tavola di verità: per ognuno delle 2n possibili combinazioni
in input viene specificato il valore degli m output
espressioni booleane: ogni segnale di output viene espresso
come una funzione booleana dei suoi segnali di output
simboli grafici: struttura di interconnessione
Analisi:
dato un circuito comprendere le funzioni realizzate
Progettazione:
data una funzione sviluppare circuito (minimo?) che la realizza
6
3
Tabelle di verità
Ogni riga della tabella di verità specifica il valore di tutte le uscite
in corrispondenza di una combinazione di ingressi
Con n ingressi la tabella di verità contiene 2n righe => la
dimensione cresce velocemente con il numero di ingressi!
Esempio
Funzione logica a 3 ingressi
A, B, C e 3 uscite D, E, F
D è vero se almeno uno degli
ingressi è vero
E è vero se esattamente due
ingressi sono veri
F è vero se tutti e tre gli
ingressi sono veri
23=8 righe
7
Algebra di Boole
George Boole: matematico inglese (1815-1864)
Algebra di Boole definita da un insieme di:
costanti: TRUE e FALSE (rappresentati da 1 e 0)
variabili (con valore TRUE o FALSE): A, B, C,…
operatori:
AND (simbolo ·), operatore binario
OR (simbolo +), operatore binario
NOT (simbolo ¯), operatore unario
Claude Shannon (1938)
ha dimostrato la utilità della algebra di Boole per progettazione ed
analisi di circuiti logici
8
4
Postulati ed identità (1)
Postulati:
regole di base (non dimostrate)
9
Postulati ed identità (2)
Identità:
possono essere derivate dai postulati
Proprietà di
assorbimento
Proprietà di
idempotenza
10
5
Legge di De Morgan
Si può derivare calcolando la tabella di verità per i due membri
dell’identità
11
Esempio
Funzione logica con tre ingressi A, B, C e tre uscite D, E, F
D è vero se almeno uno degli ingressi è vero
D = A + B+ C
F è vero se tutti e tre gli ingressi sono veri
F = A ⋅ B⋅ C
E è vero se esattamente due ingressi sono veri
E = ((A⋅ B) + (A⋅C) + (B⋅C)) ⋅( A⋅ B⋅C)
E = (A⋅ B ⋅C) + (A⋅C ⋅ B) + (B⋅C ⋅ A)
Esercizio (B.7): dimostrare l’equivalenza
12
6
Insiemi di operatori
funzionalmente completi
Un insieme di operatori è funzionalmente completo
se realizza tutte le funzioni realizzabili con AND, OR, NOT
Determinare un insieme funzionalmente completo più piccolo
permette un processo produttivo più semplice
Un operatore si dice universale
Se da solo rappresenta un insieme completo di operatori
AND e NOT sono insieme di operatori funzionalmente completo
Dalla legge di De Morgan: A + B = A ⋅ B
Complementiamo ambo i membri:
A+ B = A ⋅B
Vale l’identità:
A=A
Allora:
A+B= A⋅B
13
Porte logiche
AND
Notazione: C=A·B
Tabella di verità:
Porta logica:
OR
Notazione: C=A+B
Tabella di verità:
Porta logica:
NOT
Notazione: B = A
Tabella di verità:
Porta logica:
14
7
NOT: rappresentazioni
alternative
Si possono disegnare esplicitamente gli invertitori
Più spesso si aggiunge un pallino in corrispondenza di un
ingresso o di una uscita
Esempio: la funzione
C = A +B
15
Altre porte logiche
NOR
NAND
XOR
Notazione: C = A⋅ B
Notazione: C = A+B
Notazione: C = A ⊕ B
Tabella di verità:
Tabella di verità:
Tabella di verità:
Porta logica:
Porta logica:
Porta logica:
16
8
Implementazione di XOR
Esercizio: dimostrare l’equivalenza
ricavando le tabelle di verità dei due
circuiti
Due porte AND e una
porta OR
Tre porte NAND
17
Livello fisico: Invertitore
Il transistor bipolare
Si chiude (resistenza infinita)
quando l’input Vin è sotto un
valore critico
Si apre (filo) quando Vin è
sopra il valore critico
18
9
Livello fisico: NOR e NAND
NOR: due transistor in parallelo
NAND: due transistor in serie
19
Progettazione di circuiti
Ogni funzione booleana può essere realizzata da una
rete di porte logiche (con diverse alternative)
Passi da seguire:
Scrivere la tavola di verità della funzione da realizzare
Dalla tavola di verità arrivare alla espressione booleana
Dall’espressione booleana progettare la rete
Espressioni booleane utilizzate:
La forma come “somma di prodotti”
La forma come “prodotti di somme”
Obiettivi della progettazione
Economicità: realizzare circuiti che calcolino la stessa funzione
con meno porte logiche (minimizzazione di circuiti)
Semplicità costruttiva : utilizzare il minor numero di porte
diverse nel circuito (standardizzazione del processo produttivo)
20
10
Evoluzione della produzione
(1)
In passato, su ogni circuito integrato andavano poche porte
Chip SSI (Small Scale Integrated)
Tipicamente contenenti da 2 a 6 porte indipendenti
In più alimentazione Vcc e messa a terra GND
La realizzazione di circuiti utilizzava questi circuiti “base”
21
Evoluzione della produzione
(2)
Adesso il processo di produzione permette la realizzazione di
moltissime porte su un singolo circuito
Chip VLSI (Very Large Scale Integrated): più di 100.000 porte
Anche 107 transistor su un singolo chip
Ci starebbero 5•106 porte NAND
Ci vorrebbero 1.5•107 + 2 piedini
Sarebbe un chip lungo alcuni chilometri
Ci vogliono chip general-purpose con elevato rapporto
porte/piedini
22
11
Decodificatore
Circuito combinatorio con n input e 2n output:
una sola delle linee di output viene messa a TRUE
in dipendenza dal valore binario presente in input
La linea messa a TRUE corrisponde al valore binario
associato al vettore degli ingressi
23
Tabella di verità di un
decodificatore
Allora:
Eccetera
D0 = A ⋅ B ⋅ C D1 = A ⋅ B ⋅ C
24
12
Implementazione di un
decodificatore
25
Multiplexer
Circuito combinatorio con n input
di dato, 1 output e log2n input di
controllo:
Permette di selezionare
(tramite linee di controllo) quale
delle linee di input deve andare
in output
Esempio: un multiplexer a 2 vie
A seconda dei valori della linea
di controllo (S) una delle linee
dati (A,B) viene data in output
su C
È necessario un codice di
selezione della linea dati
(tipicamente il valore binario
dell’indice della linea dati)
26
13
Implementazione di un
multiplexer a 2 vie
Scriviamo le tre rappresentazioni (tabella di verità, espressione
booleana, porte logiche)
C = (A⋅ S) + (B⋅ S)
27
Multiplexer a n vie
Per selezionare n segnali in ingresso sono necessari log2 n
segnali di controllo Si
Analogamente al Mux 2 vie (implementazione a due livelli):
Primo livello di porte AND tra gli ingressi e i controlli
Secondo livello con una porta OR a n vie che combina le
uscite da tutti gli AND.
Per ogni possibile combinazione degli Si solo un AND riceverà 1
in input
il valore in uscita dell’AND sarà quello della linea dati
corrispondente, tutti gli altri AND ricevono almeno uno 0
L’OR finale avrà il valore della unica porta AND con 1in input
Applicazione: convertitore parallelo/seriale
Gli 8 bit vanno su 8 ingressi, controlli ciclati tra 000 e 111
28
14
Implementazione di un
multiplexer a n vie
Per n=8 segnali in ingresso
sono necessari log2 8 = 3
segnali di controllo Si
Dato il valore binario dell’indice
della linea dati, il
decodificatore produce 1 sul
corrispondente AND, tutti gli
altri AND ricevono 0
Il valore in uscita dell’AND sarà
quello della linea dati
corrispondente
L’OR finale avrà il valore della
unica porta AND “aperta”
29
Matrici di elementi logici
Molte operazioni
combinatorie realizzate su
dati devono elaborare
parole (32 bit).
Si costruisce una matrice di
elementi logici: una data
operazione è applicata ad
un intero insieme di
ingressi (bus)
Esempio: un multiplexer a 2
vie e ampiezza 32 bit è in
realtà una matrice di 32
multiplexer a 2 vie e
ampiezza 1 bit
30
15
Forma canonica “Somma di
prodotti” (SDP)
Sia data la tabella di verità.
Si può ricavare una espressione booleana
elencando le combinazioni dei valori di A,B
e C per cui il valore di F è 1
Forma “somma di prodotti”
Si elencano (in AND) le occorrenze delle
variabili in input che danno F=1
Questi vengono talvolta detti minterm o
mintermini
Si uniscono i minterm in un OR
Risultato:
F = ABC + ABC + ABC
31
Esempio
E è vero se esattamente due
ingressi sono veri
E = ((A⋅B) +(A⋅C) +(B⋅C)) ⋅( A⋅B⋅C)
E =(A⋅B⋅C) +(A⋅C⋅B) +(B⋅C⋅ A)
La seconda espressione è una somma di prodotti
32
16
Forma canonica “Prodotto di
somme” (PDS)
Si può ricavare una espressione booleana
elencando le combinazioni dei valori di
A,B, e C per cui il valore di F è 0
Forma “prodotto di somme”
L’idea: basta la occorrenza di uno di
questi input per rendere F=0
si elencano (in OR) le occorrenze delle
variabili in input che danno F=0
Le variabili vanno complementate
le si unisce in un AND
Risultato:
F = (A + B + C)⋅ (A + B + C ) ⋅
( A + B + C)⋅ ( A + B + C ) ⋅ ( A + B + C )
33
Alcuni commenti
In generale la forma SDP è più usata della forma PDS
Il multiplexer di prima è stato rappresentato in forma SDP
Un criterio per scegliere se rappresentare una tabella di verità
funzione) come somma di prodotti oppure come prodotto di
somme dipende dal numero di zeri ed uni della funzione
Se ci sono meno uni: somma di prodotti
Se ci sono meno zeri: prodotto di somme
E’ possibile avere forme più compatte delle forme SDP o PDS
Minimizzazione: implementazione di una funzione logica
usando un numero più piccolo di porte
Ci sono anche altri criteri da tenere presente
Semplificazione: implementazione di una funzione logica
usando una sola porta (NAND o NOR)
34
17
Programmable Logic Array
(PLA)
Approccio generale all’implementazione di funzioni logiche
sfruttando la rappresentazione a due livelli SDP
Ogni input del chip disponibile in forma vera e complementata
Primo livello
Ogni input può essere collegato a qualsiasi porta AND
Secondo livello
L’output di qualsiasi porta AND è collegabile a qualsiasi porta
OR
Realizzazione di un circuito ad hoc
durante la fabbricazione del chip
fusibili (che possono essere bruciati) su “intersezioni” di linea
35
PLA: rappresentazione e
implementazione
PLA con 12 input, 50 prodotti, 6 somme
36
18
Esempio (il solito)
Funzione logica con tre ingressi A, B, C e tre uscite D, E, F
D è vero se almeno uno degli ingressi è vero
F è vero se tutti e tre gli ingressi sono veri
E è vero se esattamente due ingressi sono veri
37
Read Only Memory (ROM)
Altro approccio generale all’implementazione di funzioni logiche
I circuiti combinatori sono “senza memoria”
l’output dipende esclusivamente dagli input applicati
Una Memoria a sola lettura (Read Only Memory)
memoria immagazzinata permanentemente
dato un input (indirizzo della ROM) l’output è sempre lo stesso
(dato corrispondente all’indirizzo)
Per progettare una ROM serve tavola di verità che, per ogni
indirizzo (input) definisce valore di output (parola memorizzata nella
ROM)
Altezza: numero di elementi indirizzabili
Con n ingressi l’altezza è 2n
Ampiezza: numero di bit di ogni elemento indirizzabile
Con m uscite l’ampiezza è m
Queste due dimensioni definiscono la forma di una ROM
38
19
Progettazione di una ROM
39
Commenti su PLA e ROM
Nella sintesi con ROM sono fisicamente rappresentati tutti i 2n
termini prodotto che si possono costruire con n variabili di
ingresso
Nella sintesi con PLA intervengono solo i termini prodotto che che
sono effettivamente presenti nella espressione della funzione da
realizzare
In altre parole
I dispositivi ROM sono completamente decodificati
I dispositivi PLA sono parzialmente decodificati
I dispositivi PLA sono più efficienti
I dispositivi ROM sono meno efficienti (la dimensione cresce
esponenzialmente con il numero di ingressi), ma di contenuto più
facilmente modificabile
40
20
Minimizzazione algebrica
Espressione in forma SDP che abbiamo trovato per l’esempio:
F = ABC + ABC + ABC
Dalle proprietà dell’algebra di Boole segue
F = ABC + ABC + ABC + ABC
Dalla proprietà distributiva (e commutativa):
F = AB⋅(C +C) +BC⋅(A+ A)
Allora
F = AB + BC = B( A+C)
41
Semplificazione (NAND)
algebrica
Data la espressione:
F = B( A + C) = AB + BC
vogliamo trovare una espressione equivalente composta solo da
operatori NAND
Applichiamo due volte la complementazione:
F = AB + BC
Applichiamo la legge di De Morgan:
F = AB ⋅ BC
42
21
Condizioni di indifferenza
(don’t care)
In fase di implementazione nascono spesso situazioni in cui è
indifferente il valore di qualche uscita
qualche altra uscita ha assunto un valore particolare
viene usato un sottoinsieme delle combinazioni di ingresso
Indifferenza in uscita (output don’t care)
Uscita indifferente per un dato ingresso
Si indica con una X nella casella corrispondente
Il progettista può scegliere il valore
Indifferenza in ingresso (input don’t care)
L’uscita dipende solo da alcuni ingressi
Si indica con una X nella casella corrispondente
Importanti applicazioni in tecniche di minimizzazione di circuiti
Karnaugh …
QuineMacCluskey …
43
Esempio
Funzione logica con tre
ingressi A,B,C, e tre uscite
D,E,F, così definita:
Se A o C sono veri allora D è
vero, indipendentemente da
B
Se A o B sono veri allora E è
vero, indipendentemente da
C
F è vero se esattamente un
ingresso è vero, ma non
interessa il valore di F se sia
D che E sono veri
Indifferenza in uscita
44
22
Esempio (continua)
Indifferenza in ingresso
45
Parole chiave
Algebra booleana
Circuiti combinatori
Tabelle di verità
Leggi di De Morgan
Operatori e porte logiche: AND, OR, NOT, NAND, NOR, XOR
Insiemi di operatori funzionalmente completi e Porte universali
Decodificatore e Multiplexer
Logica a due livelli: Somma di prodotti e prodotto di somme
PLA – Programmable Logic Array
ROM – Read only memory
Minimizzazione e semplificazione
Condizioni di indifferenza (in ingresso e uscita)
46
23
Esercizi
(Esercizio B.3) Dimostrare che NAND (da solo!) è un insieme
di operatori funzionalmente completo (altrimenti detto operatore
universale)
(Esercizio B.4) Dimostrare che NOR (da solo!) è un operatore
universale
Dimostrare la proprietà associativa per AND e OR
(Esercizio B.8) Dimostrare che le espressioni per la funzione
E in forma "somma di prodotti" e "prodotto di somme“ sono
equivalenti (sul libro paragrafo B.3 a pag. 750)
(Esercizio B.13) Calcolare la tabella di verità di un multiplexer
a due vie (ingressi A,B,S, uscita C) usando le condizioni di
indifferenza per semplificare la tabella
47
24