Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Corso di Laurea
Ingegneria Elettronica e Informatica
Anno Accademico 2013/2014
Calcolatori
Dario Bruneo
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 integrati (chip) sono dei dispositivi che contengono i componenti elettronici necessari per
l’implementazione di porte logiche integrati su un substrato di silicio
Le diverse porte sono interconnesse sul chip per formare il circuito logico
m funzioni booleane ognuna delle quali mapperà le 2n combinazioni di ingresso in una delle m uscite
progettazione gerarchica
progettazione CAD
linguaggi HDL
Un sistema digitale complesso può contenere Es. progetto di una funzione dispari a 9 ingressi
milioni di porte interconnesse tra di loro
L’uso della progettazione gerarchica riduce il livello di complessità richiesto per disegnare lo schema di un
circuito: sarebbero state necessarie 32 porte NAND
Una progettazione top-down parte da una descrizione astratta ad alto livello e procede verso una
descrizione più dettagliata mediante decomposizioni e successivi raffinamenti
Una progettazione bottom-up parte da un insieme di blocchi primitivi e li combina in blocchi funzionali
più grandi e più complessi
L’approccio top-down controlla la complessità mentre l’approccio bottom-up si focalizza sui dettagli
Simulatori logici
VHDL
Può essere usato in alternativa allo schema circuitale
Verilog
Si può simulare utilizzando un simulatore logico
Descrizione funzionale
Sono orientati alla descrizione delle strutture Rappresentazione di equazioni booleane, tabelle di verità
e operazioni aritmetiche complesse
hardware e del loro comportamento
C0 • • •
Due metodi:
Simulazione logica
Si etichettano con simboli arbitrari tutte le uscite che sono funzione delle sole variabili di ingresso
Es.
C = XY + XZ + YZ
S = T1 + T3 =
T1 = XYZ T3 = T2C’
= XYZ + (X+Y+Z)C’
T2 = X + Y + Z
C C’ T1 T2 T3 S
0 1 0 0 0 0
0 1 0 1 1 1
0 1 0 1 1 1
1 0 0 1 0 0
0 1 0 1 1 1
1 0 0 1 0 0 C = XY + XZ + YZ
1 0 0 1 0 0
1 0 1 1 0 1 T1 = XYZ
T2 = X + Y + Z
T3 = T2C’
Analizzando la tabella di verità si possono comprendere le funzionalità
del circuito:
S = T1 + T3 =
in questo caso si tratta di un sommatore a tre bit con riporto = XYZ + (X+Y+Z)C’
La procedura di sintesi inizia con la descrizione verbale di un problema e termina con un diagramma logico
o con un insieme di equazioni booleane dalle quali il diagramma può essere ricavato
In particolare, si deve:
Determinare il numero di ingressi e uscite richiesto ed assegnare una lettera a ciascuno di essi
Un decoder è un circuito combinatorio che converte le informazioni binarie codificate a n bit applicate agli
ingressi nelle corrispondenti 2n parole di codice che si trovano in uscita
A0
D0
A1 D1
Dec
… n-m …
Dm-1
An-1
Tabella di verità
Schema circuitale
La sintesi si svolge in maniera analoga per decoder con un maggior numero di ingressi
utilizzo di una combinazione di uscita non utilizzata (ad esempio, nel caso del decoder, tutte le uscite a 0)
attivo basso
attivo alto
È possibile combinare per mezzo degli ingressi di abilitazione due o più decoder per costruirne uno più
grande
Es.
A2 A1 A0 D0 D1 D2 D3 D4 D5 D6 D7
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1 Decoder attivi alti
quando il bit più significativo (A2) è 0 risulta attivato il decoder superiore (le uscite D4 - D7 sono forzate a 0)
quando il bit più significativo (A2) è 1 risulta attivato il decoder inferiore (le uscite D0 - D3 sono forzate a 0)
Ogni funzione di n variabili, espressa nella forma canonica SP, può essere implementata utilizzando un
decoder e facendo l’OR delle uscite del decoder corrispondenti ai mintermini della funzione
Qualunque circuito combinatorio di n ingressi e m uscite può essere implementato con un decoder n-2n e m porte OR
La progettazione con decoder conviene quando il circuito ha molte uscite ognuna delle quali espressa con pochi mintermini
Es.
S(X,Y,Z) = ∑m(1,2,4,7)
C(X,Y,Z) = ∑m(3,5,6,7)
Può essere realizzato mediante porte OR i cui ingressi possono essere individuati direttamente dalla tabella
di verità del decoder corrispondente
A2 A1 A0 D0 D1 D2 D3 D4 D5 D6 D7
A0 = D1 + D3 + D5 + D7
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 A1 = D2 + D3 + D6 + D7
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 A2 = D4 + D5 + D6 + D7
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1 Encoder 8-3
Encoder 8-3
Si deve gestire la combinazione di ingressi pari a 0 che coincide con l’attivazione di D0
A tal fine:
Si può stabilire una priorità degli ingressi basata sul numero di pedice più alto
Uscita supplementare:
vale 0 quando nessun
ingresso risulta attivo
Un multiplexer è un circuito combinatorio che seleziona segnali binari provenienti da una o più linee di
ingresso e li dirige su una singola uscita
D0
D1 Mux
Y
… 2nx1
D2n-1
…
Sn-1 Sn-2 S0
Per descrivere il funzionamento di un multiplexer si utilizza una versione “compressa” della tabella di verità
detta tabella di funzionamento
La porta OR fa passare la
Si decrive l’uscita non linea di ingresso selezionata
esplicitando i valori degli
ingressi
Per implementare, mediante un multiplexer, una funzione booleana di n variabili, espressa nella forma
canonica SP, è possibile utilizzare un multiplexer 2nx1 le cui linee di controllo saranno le n variabili e le
cui 2n linee di ingresso saranno poste a 0 o a 1 a seconda della tabella di verità della funzione
Es.
F(A,B,C) = ∑m(0,2,6,7)
Per implementare una funzione di n variabili si può utilizzare, invece di un multiplexer 2nx1, un
multiplexer 2n-1x1
l’n-esima variabile verrà utilizzata, sia in forma diretta che negata, come linea di ingresso (assieme ai valori 0 e 1)
Es.
Riceve informazioni da una singola linea e le trasmette ad una delle possibili 2n uscite
D0
D1
Demux
E …
1x2n
D2n-1
…
Sn-1 Sn-2 S0
L’ingresso dati (E) è connesso a tutte le uscite, ma l’informazione viene diretta ad una sola delle uscite
mediante gli ingressi di selezione.
Da un’attenta analisi del circuito si può notare come esso sia dal punto di vista logico equivalente
ad un decoder 2-4 con ingresso di abilitazione
Circuiti combinatori che eseguono operazioni aritmetiche (addizioni, sottrazioni, moltiplicazioni, divisioni)
con numeri binari
Verranno studiati circuiti aritmetici in grado di operare su numeri interi relativi a n bit
Successivamente si affronterà lo studio di circuiti in grado di operare con numeri con segno
Non può essere utilizzato per realizzare un sommatore a n bit perché non tiene conto di un eventuale
riporto proveniente da una colonna precedente
Un circuito a 2 livelli
richiederebbe 7 porte AND e 3
porte OR
È possibile realizzare un full adder utilizzando due half adder in cascata più una porta OR
Per sommare numeri binari a n cifre si può progettare un sommatore composto da n full adder in
parallelo
La progettazione avrebbe richiesto la semplificazione di una tabella di verità con 512 righe (9 ingressi)
Si sarebbe potuto utilizzare un half adder per il primo stadio ma la regolarità porta ad una semplicità di
progetto
@2 @4 @N+2
@2
@0
@3 @N+1
@0 @1
@1 @N
@0
@8 @6 @4
@10 @8 @6 @4
Si inizia separando la parte del circuito che genera la somma da quella che genera il riporto
funzione di generazione del riporto (G = A⋅B) Il generico riporto Ci+1 potrà essere espresso nella seguente forma:
Si introduce un nuovo circuito in grado di generare, oltre alla somma, le due funzioni G e P, senza, però,
generare il riporto:
Ritardi:
3 ingressi: bit da sommare (A e B), riporto precedente (C)
P = 2tpd
3 uscite: risultato della somma (S), funzioni del riporto (P e G)
G = tpd
Il sommatore ripple carry può essere ridisegnato utilizzando i PFA ed un circuito detto di generazione del
riporto (ripple carry)
@0 @0 @0 @0
Si è considerata la somma
stabile soltanto quando
tutti i bit S sono stabili.
In realtà i bit di somma
@10 @1 @2 @10 @1 @2 @10 @1 @2 @10 @1 @2 diventano via via stabili
(dal meno significativo al
@10 più significativo)
@8 @6 @4
contemporanemante alla
@0 generazione del riporto
Il circuito di generazione del riporto ha 9 ingressi (C0 più i vari Pi e Gi) e 3 uscite (C1, C2 e C3)
Il sommatore è lento a causa di una progettazione multilivello del circuito di generazione del riporto
C1 = G0 + P0C0
C2 = G1 + P1C1 = G1 + P1G0 + P1P0C0
C3 = G2 + P2C2 = G2 + P2G1 + P2P1G0 + P2P1P0C0
Tali espressioni corrispondono ad un circuito a due livelli e possono essere utilizzate per realizzare un
circuito di generazione del riporto più veloce
Risulta più efficiente generare le funzioni P e G da applicare a gruppi di 4 bit per poter riutilizzare
gerarchicamente il circuito
P0-3 = P3P2P1P0
G0-3 = G3 + P3G2 + P3P2G1 + P3P2P1G0
Sostituendo nello schema precedente il circuito di generazione del riporto a due livelli si ottiene:
@0 @0 @0 @0
@6 @1 @2 @6 @1 @2 @6 @1 @2 @6 @1 @2
@4
@0
@4
@4
@3
Per realizzare sommatori a più bit si può sfruttare la progettazione gerarchica utilizzando carry lookahead
generator di livelli superiori
4 4 4 4
C12 C8 C4
P G P G P G P G
P0-16 G0-16
In generale il ritardo di un sommatore carry lookahead è dato da 4L+2tpd dove L è il numero di livelli di
riporto anticipato
Per un sommatore a 4 bit il ritardo passa da 10tpd a 6tpd con un guadagno del 40%
Per un sommatore a 64 bit con 3 livelli di riporto il ritardo passa da 130 tpd a 14 tpd con un guadagno
dell’89%!
La sottrazione si effettua confrontando il sottraendo (N) con il minuendo (M) e sottraendo il più piccolo dal
più grande
1 1
M (30)10 1 1 1 1 0 -
N (19)10 1 0 0 1 1 =
M-N (11)10 0 1 0 1 1
Se, invece, c’e un prestito dalla (n+1)-ma colonna, il risultato è negativo; in questo caso il valore del risultato
sarà M-N+2n mentre il risultato corretto sarebbe -(N-M)
1 1 1
!
M (19)10 1 0 0 1 1 -
N (30)10 1 1 1 1 0 =
M-N+25 (21)10 1 0 1 0 1
Per ottenere –(N-M) devo sottrarre il risultato da 2n [2n-(M-N+2n) = N-M] ed aggiungere il segno meno
! 1 1 1 1 1 M-N+25 (21)10 1 0 1 0 1
Questo passo coincide con
25 (32)10 1 0 0 0 0 0 - il complemento a 2 del comp1 (10)10 0 1 0 1 0 +
Si può utilizzare la proprietà del complemento a 2 per effettuare sottrazioni mediante somme,
condividendo, in tal modo, la circuiteria
Se M≥N si ha un riporto nella (n+1)-ma colonna che va ignorato (equivale a sottrarre 2n) ottenendo M-N
Se M<N la somma non genera riporto e si avrà 2n–(N-M); in tal caso si deve effettuare il complemento a 2 del risultato ed inserire il
segno meno, ottenendo -(N-M)
Esistono tre metodi principali per la rappresentazione dei numeri interi con segno
(+M)+(-N) = (con M≥N ci sarà un riporto) = (+M)+(-N) = (con M<N non ci sarà riporto) =
M+(2n-N) = scartando il riporto = M-N M+(2n-N) = -(N-M)
1 1
M (4)10 0 1 0 0 + M (1)10 0 0 0 1 +
-N -(1)10 1 1 1 1 = -N -(4)10 1 1 0 0 =
M-N (3)10 0 0 1 1 -(N-M) -(3)10 1 1 0 1
La condizione di overflow si determina quando il risultato di una somma o di una sottrazione non può
essere rappresentato con lo stesso numero di bit degli operandi
quindi nel caso in cui i bit in ingresso all’n-mo full adder coincidono
es.
numeri a 8 bit in complemento a 2 numeri a 8 bit in complemento a 2
1 1 1
-(70)10 1 0 1 1 1 0 1 0 + +(70)10 0 1 0 0 0 1 1 0 +
-(80)10 1 0 1 1 0 0 0 0 = +(80)10 0 1 0 1 0 0 0 0 =
????? 0 1 1 0 1 0 1 0 ????? 1 0 0 1 0 0 1 0
L’overflow si manifesterà con il bit di segno del risultato che sarà differente da quello degli operandi
Si dovranno, quindi, controllare i bit di segno degli operandi e, nel caso in cui siano uguali, confrontarli con il
bit di segno del risultato
La condizione di overflow può essere rilevata, più semplicemente, osservando gli ultimi due riporti
Il risultato della moltiplicazione di due numeri di J e K bit sarà composto da un numero di (J+K) bit
Un moltiplicatore a più bit può essere realizzato in maniera simile utilizzando sommatori a più bit
Ogni bit del moltiplicatore deve essere connesso in AND con ogni bit del moltiplicando, in tanti livelli quanti
sono i bit del moltiplicatore
La ALU (Arithmetic Logic Unit) è un dispositivo che permette di effettuare operazioni logiche (AND, OR,
XOR, …) ed aritmetiche
ALU operation
Zero
CarryOut
Input Output
multiplexed
bit-sliced
Le prime sono composte da operatori aritmetici e logici completi e permettono la selezione dell’operazione
mediante multiplexer
Le seconde sono moduli per il calcolo di diverse operazioni sui singoli bit degli operandi e devono essere
opportunamente connesse per formare operatori completi
Basso costo
riprogrammabili volatili
Facilità di implementazione
riprogrammabili non volatili
Tipi di dispositivo
Struttura SP
Memorie: dispositivi in grado di memorizzare un insieme di “parole” composte da una sequenza di bit
Normalmente, hanno anche ingressi abilitanti ed uscite tri-state per permettere una loro interconnessione
ROM di pari capacità possono avere configurazioni differenti al variare del numero di bit che compongono le
parole (larghezza della parola o parallelismo)
Ad esempio, una ROM da 512KB con parallelismo da 32 bit avrà un numero di linee di indirizzo pari a 17 (n = log2[(512*210*23)/32] =
17), la stessa ROM, con un parallelismo da 8 bit, avrà un numero di linee di indirizzo pari a 19
La programmazione avviene mediante la fusione delle connessioni Una ROM da 32B con
parallelismo da 8 bit
Una ROM può essere descritta da una tabella di verità che riporta, per ogni indirizzo, il contenuto della
parola memorizzata
Potrebbe essere utile una “semplificazione” della tabella di verità (ad esempio utilizzandone, quando
possibile, solo una parte)
es.
ROM O3 O3 ROM O3 O3
O2 O2
O2 O2
A3+CS CS O1 A3’+CS CS O1
O1 O1
OE O0 OE O0
OE O0 OE O0
PGM VPP
O7
A3
O6
A2
O5
A1
16x8 O4
A2 A2 O3 O7 A2 A2 O3 O7
A0 A3
ROM O3 A3 O3 O7
A1 A1 A1 A1
A2 A2
O2 A0 O2 A0 O2
O6 O6
CS A1 O2 O6
A0 8x4 A0 8x4
O1 A1
A0
16x4 ROM ROM
O0
OE
GND VCC
A0
ROM O1 O5
O1 O5 O1 O5
A3+CS CS A3’+CS CS
CS CS O0 O4 O0 O4
O0 O4 OE OE OE OE
OE OE
A3 A3 O3 O3 A2 A2 O3 O3 A2 A2 O3 O3
A2 A1 A1 A1 A1
A2
A1 A0 O2 O2 A0 O2 O2
A1 16x4
O2 O2 A0 8x4 A0 8x4
A0
A0
ROM ROM O1 O1
ROM O1 O1
O1 O1
CS A3+CS CS A3’+CS CS
CS
O0 O0 O0 O0 O0 O0
OE OE OE OE
OE OE
Non implementano tutta la struttura del decoder e quindi non forniscono tutti i mintermini
Sono caratterizzati dal numero di ingressi, dal numero di porte AND e dal numero di uscite
Con un PLA con k ingressi, m porte AND e n uscite si possono implementare n funzioni di k variabili
aventi al più m implicanti differenti
F1 = AB’ + AC + A’BC’
F2 = (AC + BC)’
sarà necessario un PLA con 3 ingressi, 4 porte AND e 2 uscite (delle quali la seconda complementata)
F1 = AB’ + AC + A’BC’
F2 = (AC + BC)’
Ingressi Uscite
(T) (C)
Termine prodotto A B C
F1 F2
AB’ 1 1 0 - 1 -
AC 2 1 - 1 1 1
BC 3 - 1 1 - 1
A’BC’ 4 0 1 0 1 -
programmabile
Ad esempio
I PAL avendo una sola connessione
Dato un PAL con 4 ingressi, 2 uscite 4 porte AND programmabile sono più veloci dei PLA
raggruppate a 2 a 2
Esempio
W(A,B,C,D) = ∑m(2,12,13)
X (A,B,C,D) = ∑m (7,8,9,10,11,12,13,14,15)
Y (A,B,C,D) = ∑m (0,2,3,4,5,6,7,8,10,11,15)
Z (A,B,C,D) = ∑m (1,2,8,12,13)
W = ABC’ + A’B’CD’
X = A + BCD
Y = A’B + CD + B’D’
Z = ABC’ + A’B’CD’ + AC’D’ +A’B’C’D =
= W + AC’D’ +A’B’C’D
Esempio di PAL con 4 ingressi, 4 uscite (di cui una
retroazionata) e struttura a tre AND-OR
Calcolatori a.a. 13/14 Dario Bruneo
72
Confronti
La progettazione di PLD è normalmente facilitata dall’utilizzo di sistemi CAD che mediante delle unità di
programmazione hardware esterne consentono la programmazione dei dispositivi a partire dalle tabelle
Dispositivi programmabili molto complessi che abbandonano la struttura a due livelli aumentando la
flessibilità ed il campo di applicazione
Progettazione
Full custom
FPGA
Progettazione CAD