Sei sulla pagina 1di 74

Università degli Studi di Messina

Dipartimento di Ingegneria Elettronica, Chimica e Ingegneria Industriale

Corso di Laurea
Ingegneria Elettronica e Informatica
Anno Accademico 2013/2014

Calcolatori

Circuiti logici combinatori

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.

Eventuali errori o segnalazioni possono essere inviati all’indirizzo dbruneo@unime.it

Alcune figure sono tratte da:

Mano, Kime “Logic and Computer Design Fundamentals” 3° edition Pearson Prentice Hall

Patterson, Hennessy “Struttura e progetto dei Calcolatori” 2a edizione Zanichelli

Calcolatori a.a. 13/14 Dario Bruneo


2
Circuiti integrati

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

Il chip viene montato in contenitori di ceramica o plastica e connesso ai piedini esterni

Livelli di integrazione (numero di porte logiche)

SSI (<10): le porte sono connesse direttamente ai piedini

MSI (102): eseguono specifiche funzioni digitali

LSI (103): sistemi digitali di media complessità

VLSI (106): circuiti ad alta tecnologia

Calcolatori a.a. 13/14 Dario Bruneo


3
Circuiti combinatori

Un circuito combinatorio sarà composto da:

un set di n ingressi booleani

un set di m uscite booleane

m funzioni booleane ognuna delle quali mapperà le 2n combinazioni di ingresso in una delle m uscite

Le uscite di un circuito combinatorio dipendono esclusivamente dagli ingressi

Diagramma a blocchi di un circuito combinatorio

Calcolatori a.a. 13/14 Dario Bruneo


4
Tecniche di progettazione

Le moderne tecniche di progettazione comprendono metodologie e strumenti indispensabili per la


progettazione dei circuiti complessi

Tecniche efficaci per la progettazione dei sistemi digitali sono:

progettazione gerarchica

progettazione top-down e bottom-up

progettazione CAD

linguaggi HDL

Calcolatori a.a. 13/14 Dario Bruneo


5
Progettazione gerarchica

Un sistema digitale complesso può contenere Es. progetto di una funzione dispari a 9 ingressi
milioni di porte interconnesse tra di loro

Per progettare tali sistema viene utilizzato il


paradigma divide et impera

Il circuito viene scomposto in blocchi di complessità


minore che opportunamente collegati soddisfano le
specifiche di progetto

Il procedimento può essere ripetuto scegliendo blocchi


sempre più piccoli

Man mano che ci spostiamo verso il basso i simboli


vengono sostituiti
dagli schemi circuitali corrispondenti

Calcolatori a.a. 13/14 Dario Bruneo


6
Progettazione gerarchica (cont.)

L’uso della progettazione gerarchica riduce il livello di complessità richiesto per disegnare lo schema di un
circuito: sarebbero state necessarie 32 porte NAND

Riutilizzabilità dei blocchi

Calcolatori a.a. 13/14 Dario Bruneo


7
Progettazione top-down e bottom-up

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

I progettisti normalmente procedono in entrambe le direzioni simultaneamente

L’approccio top-down controlla la complessità mentre l’approccio bottom-up si focalizza sui dettagli

Calcolatori a.a. 13/14 Dario Bruneo


8
Progettazione CAD

Strumenti software per la progettazione assistita da calcolatore (Computer Aided Design)

Acquisizione di schemi circuitali (schematic capture)

Librerie di simboli grafici

Simulatori logici

Calcolatori a.a. 13/14 Dario Bruneo


9
Linguaggi HDL

Linguaggi per la descrizione dei circuiti hardware Descrizione strutturale


(Hardware Description Language)
Descrizione dei componenti e delle loro interconnessioni

VHDL
Può essere usato in alternativa allo schema circuitale

Verilog
Si può simulare utilizzando un simulatore logico

Descrizione funzionale

Descrizione ad alto livello (Register Transfer Language)

Sono orientati alla descrizione delle strutture Rappresentazione di equazioni booleane, tabelle di verità
e operazioni aritmetiche complesse
hardware e del loro comportamento

Il sistema può essere simulato a qualsiasi livello di


descrizione

Calcolatori a.a. 13/14 Dario Bruneo


10
Linguaggi HDL (cont.)

Ad. es dato il seguente circuito questa è la sua descrizione strutturale in Verilog

module IC7283 (A0, B0, C0, C1, S0);


input A0, B0, C0;
output C1, S0;
//Seven internal wires needed
• C1
wire N1, N2, N3, N4, N5, N6, N7;
// Ports on primitive gates - output port
// is listed first
not G1 (N3,C0), G2 (N5,N2), G3 (N6,N3);
B0 • nand G4 (N1,A0,B0);
A0 •
• •
nor G5 (N2,A0,B0), G6 (C1,N2,N4);!
S0 and G7 (N4,N1,N3), G8 (N7,N1,N5);
• • • xor G9 (S0,N6,N7);
endmodule

C0 • • •

e questa è la sua descrizione funzionale in Verilog

module IC7283_df1 (A0, B0, C0, C1, S0);


input A0, B0, C0;
output C1, S0;
wire N1, N2;
assign N1 = ~(A0 & B0); //Note:
// Cannot write ~& for NAND
assign N2 = ~(A0 | B0);
assign C1 = ~((N1 & ~C0) | N2);
assign S0 = (~N2 & N1)^(~(~C0));
endmodule!

Calcolatori a.a. 13/14 Dario Bruneo


11
Procedura di analisi

Ha lo scopo di determinare la funzione che il circuito svolge

Bisogna accertarsi che il circuito da esaminare sia combinatorio

schema funzioni tabella


descrizione
circuitale booleane di verità

Due metodi:

Individuazione delle funzioni booleane

Simulazione logica

Calcolatori a.a. 13/14 Dario Bruneo


12
Individuazione delle funzioni booleane

Si etichettano con simboli arbitrari tutte le uscite che sono funzione delle sole variabili di ingresso

Si ripete il procedimento utilizzando i nuovi simboli

Es.

C = XY + XZ + YZ
S = T1 + T3 =
T1 = XYZ T3 = T2C’
= XYZ + (X+Y+Z)C’
T2 = X + Y + Z

Calcolatori a.a. 13/14 Dario Bruneo


13
Individuazione delle funzioni booleane (cont.)

La tabella di verità si costruisce partendo dai blocchi più piccoli

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’

Calcolatori a.a. 13/14 Dario Bruneo


14
Simulazione logica

Si applicano agli ingressi le combinazioni binarie necessarie

Si può disegnare il circuito utilizzando librerie di simboli

Si può utilizzare una descrizione HDL

A questo punto è possibile ricavare la tabella di verità

Calcolatori a.a. 13/14 Dario Bruneo


15
Procedura di sintesi

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

tabella funzioni schema


descrizione
di verità booleane circuitale

In particolare, si deve:

Determinare il numero di ingressi e uscite richiesto ed assegnare una lettera a ciascuno di essi

Determinare, per ogni uscita, le funzioni booleane semplificate

Verificare la correttezza del progetto

Calcolatori a.a. 13/14 Dario Bruneo


16
Convertitore BCD – 7-segmenti

C0 = A’C + A’BD + B’C’D’ + AB’C’ 1 1 1 1 1 1 1


C1 = A’B’ + A’C’D’ + A’CD + B’C’ 1 1 1 1 1
C2 = A’B + A’D + B’C’D’ + AB’C’
C3 = A’CD’ + A’B’C + B’C’D’ + AB’C’ + A’BC’D
C4 = A’CD’ + B’C’D’ 1 1 1 1

C5 = A’BC’ + A’C’D’ + A’BD’ + AB’C’


C6 = A’CD’ + A’B’C + A’BC’ + AB’C’ Mappa di C0 Mappa di C1

Calcolatori a.a. 13/14 Dario Bruneo


17
Decodificatori

Un codice binario a n bit è composto al più da 2n parole

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

Un decoder avrà quindi n ingressi e m uscite, con m ≤ 2n

A0
D0
A1 D1
Dec
… n-m …
Dm-1
An-1

Si parlerà di decoder n-m (o n:m)

Calcolatori a.a. 13/14 Dario Bruneo


18
Decodificatori (cont.)

Relizzazione di un decoder 2-4

Tabella di verità

Schema circuitale

Un decoder può essere visto come un generatore di mintermini

La sintesi si svolge in maniera analoga per decoder con un maggior numero di ingressi

Calcolatori a.a. 13/14 Dario Bruneo


19
Decodificatori (cont.)

A volte è necessario poter disabilitare il circuito

Esistono due metodi:

utilizzo di porte tri-state in uscita

utilizzo di una combinazione di uscita non utilizzata (ad esempio, nel caso del decoder, tutte le uscite a 0)

A tal fine si utilizza un ingresso di abilitazione

attivo basso

attivo alto

Decoder attivo basso


Calcolatori a.a. 13/14 Dario Bruneo
20
Decodificatori (cont.)

È possibile combinare per mezzo degli ingressi di abilitazione due o più decoder per costruirne uno più
grande

Es.

progettazione di un decoder 3-8 mediante due decoder 2-4

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)

Calcolatori a.a. 13/14 Dario Bruneo


21
Decodificatori (cont.)

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

Non è necessaria la minimizzazione 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.

Sommatore a 3 bit con riporto

S(X,Y,Z) = ∑m(1,2,4,7)
C(X,Y,Z) = ∑m(3,5,6,7)

3 ingressi 1 decoder 3-8


2 uscite 2 porte OR

Calcolatori a.a. 13/14 Dario Bruneo


22
Codificatori

Un encoder è un circuito che esegue l’operazione inversa del decoder

Ha 2n (o meno) linee di ingresso e n linee di uscita D0 A0


D1 Enc A1
… m-n …
An-1
Dm-1

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

Calcolatori a.a. 13/14 Dario Bruneo


23
Codificatori (cont.)

Problematiche relative agli encoder:


A0 = D1 + D3 + D5 + D7
A1 = D2 + D3 + D6 + D7
Solo un ingresso può essere attivo in un dato momento
A2 = D4 + D5 + D6 + D7
Rischio di ambiguità nel caso di ingressi multipli (Es. D3 e D6 attivi)

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

Si può aggiungere un’uscita che sia 1 se almeno un ingresso risulta attivo

Il circuito corrispondente prende il nome di priority encoder

Calcolatori a.a. 13/14 Dario Bruneo


24
Codificatori (cont.)

Priority encoder a 4 ingressi

Uscita supplementare:
vale 0 quando nessun
ingresso risulta attivo

Calcolatori a.a. 13/14 Dario Bruneo


25
Multiplexer

Un multiplexer è un circuito combinatorio che seleziona segnali binari provenienti da una o più linee di
ingresso e li dirige su una singola uscita

È composto da 2n linee di ingresso, n linee di controllo (o selezione) ed un’uscita

Si parlerà quindi di multiplexer 2nx1

D0
D1 Mux
Y
… 2nx1

D2n-1

Sn-1 Sn-2 S0

Le combinazioni degli ingressi di selezione determinano quale ingresso selezionare

Calcolatori a.a. 13/14 Dario Bruneo


26
Multiplexer (cont.)

Per descrivere il funzionamento di un multiplexer si utilizza una versione “compressa” della tabella di verità
detta tabella di funzionamento

Es. MUX 4x1

La porta OR fa passare la
Si decrive l’uscita non linea di ingresso selezionata
esplicitando i valori degli
ingressi

Le porte AND, pilotate dalle linee di controllo,


fanno passare soltanto una linea di ingresso

Calcolatori a.a. 13/14 Dario Bruneo


27
Multiplexer (cont.)

Multiplexer di grandi dimensioni possono essere realizzati utilizzando gerarchicamente multiplexer


più piccoli

Si devono distribuire opportunamente le linee di controllo e di ingresso sui multiplexer interni

Si può ottenere lo stesso multiplexer con diverse combinazioni di multiplexer interni

Es. MUX 8x1

A è il bit più significativo delle linee di controllo

Calcolatori a.a. 13/14 Dario Bruneo


28
Multiplexer (cont.)

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

Non è necessario minimizzare la funzione

Es.

F(A,B,C) = ∑m(0,2,6,7)

Calcolatori a.a. 13/14 Dario Bruneo


29
Multiplexer (cont.)

Per implementare una funzione di n variabili si può utilizzare, invece di un multiplexer 2nx1, un
multiplexer 2n-1x1

n-1 variabili verranno utilizzate come linee di controllo

l’n-esima variabile verrà utilizzata, sia in forma diretta che negata, come linea di ingresso (assieme ai valori 0 e 1)

Es.

Fissate le prime 3 variabili


(A,B,C) si può esprimere
l’uscita in funzione di D, D’,0,1

Calcolatori a.a. 13/14 Dario Bruneo


30
Demultiplexer

Un demultiplexer esegue l’operazione inversa di un multiplexer

Riceve informazioni da una singola linea e le trasmette ad una delle possibili 2n uscite

La selezione di un’uscita è controllata dagli ingressi di selezione

D0
D1
Demux
E …
1x2n

D2n-1

Sn-1 Sn-2 S0

Calcolatori a.a. 13/14 Dario Bruneo


31
Demultiplexer

L’ingresso dati (E) è connesso a tutte le uscite, ma l’informazione viene diretta ad una sola delle uscite
mediante gli ingressi di selezione.

Es. demux 1x4

Se, ad esempio, (S0,S1) = (0,1)


l’ingresso E sarà diretto
sull’uscita D2

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

Calcolatori a.a. 13/14 Dario Bruneo


32
Circuiti aritmetici

Circuiti combinatori che eseguono operazioni aritmetiche (addizioni, sottrazioni, moltiplicazioni, divisioni)
con numeri binari

Si applicheranno le regole delle varie operazioni in base 2

Il progetto dei circuiti aritmetici procederà seguendo un approccio gerarchico

Verranno studiati circuiti aritmetici in grado di operare su numeri interi relativi a n bit

Si studieranno, inizialmente, circuiti in grado di operare con numeri senza segno.

Successivamente si affronterà lo studio di circuiti in grado di operare con numeri con segno

Calcolatori a.a. 13/14 Dario Bruneo


33
Half adder

Circuito che effettua la somma di due bit con riporto

S = X’Y + XY’ = X⊕Y


C = XY

Non può essere utilizzato per realizzare un sommatore a n bit perché non tiene conto di un eventuale
riporto proveniente da una colonna precedente

Calcolatori a.a. 13/14 Dario Bruneo


34
Full adder

Circuito sommatore a 3 bit

Un circuito a 2 livelli
richiederebbe 7 porte AND e 3
porte OR

Conviene utilizzare un circuito multilivello

Calcolatori a.a. 13/14 Dario Bruneo


35
Full adder (cont.)

È possibile realizzare un full adder utilizzando due half adder in cascata più una porta OR

Esempio di progettazione gerarchica

Da qui i nomi di half e full adder

Calcolatori a.a. 13/14 Dario Bruneo


36
Sommatore parallelo

Per sommare numeri binari a n cifre si può progettare un sommatore composto da n full adder in
parallelo

Il circuito prende il nome di sommatore a n bit

Es. Sommatore a 4 bit

Gli ingressi sono applicati


simultaneamente in parallelo
mentre il riporto viene propagato
in cascata (ripple carry) in
maniera seriale.
Il primo riporto viene posto a 0

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

Calcolatori a.a. 13/14 Dario Bruneo


37
Sommatore parallelo (cont.)

Si considerino i ritardi dei full adder che compongono il sommatore parallelo

porte AND, OR: ritardo = 1tpd

porta XOR: ritardo = 2tpd

Notazione: @x = ritardo di propagazione di x porte

Primo stadio i-esimo stadio

@2 @4 @N+2
@2
@0
@3 @N+1
@0 @1

@1 @N

La somma e il La somma e il riporto


riporto saranno saranno stabili dopo
stabili dopo 4 tpd (N+2)tpd

Calcolatori a.a. 13/14 Dario Bruneo


38
Sommatore parallelo (cont.)

In un sommatore a n bit le uscite saranno stabili dopo 2n+2 ritardi di porta

Si considerino, ad esempio, i ritardi di un sommatore a 4 bit

@0

@8 @6 @4

@10 @8 @6 @4

In un sommatore a 32 bit tali ritardi diventano determinanti!

Calcolatori a.a. 13/14 Dario Bruneo


39
Sommatore carry lookahead

Si può ridurre il ritardo mediante utilizzo di circuiti dedicati

Si inizia separando la parte del circuito che genera la somma da quella che genera il riporto

Si definiscono due funzioni

funzione di generazione del riporto (G = A⋅B) Il generico riporto Ci+1 potrà essere espresso nella seguente forma:

funzione di propagazione del riporto (P = A⊕B) Ci+1=Gi+CiPi

Si introduce un nuovo circuito in grado di generare, oltre alla somma, le due funzioni G e P, senza, però,
generare il riporto:

Partial Full Adder (PFA)

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

Calcolatori a.a. 13/14 Dario Bruneo


40
Sommatore carry lookahead (cont.)

Il sommatore ripple carry può essere ridisegnato utilizzando i PFA ed un circuito detto di generazione del
riporto (ripple carry)

Es. Sommatore a 4 bit

@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

Si potrebbe riprogettare tale circuito utilizzando una implementazione a due livelli

Calcolatori a.a. 13/14 Dario Bruneo


41
Sommatore carry lookahead (cont.)

I riporti possono essere riscritti in funzione di P e G nel seguente modo:

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

L’espressione di C4 provocherebbe un fan-in pari a 5

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

Calcolatori a.a. 13/14 Dario Bruneo


42
Sommatore carry lookahead (cont.)

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

Si è passati da un ritardo di 10 tpd


ad un ritardo di 6 tpd
@4

@4

@3

Calcolatori a.a. 13/14 Dario Bruneo


43
Sommatore carry lookahead (cont.)

Per realizzare sommatori a più bit si può sfruttare la progettazione gerarchica utilizzando carry lookahead
generator di livelli superiori

Es. Sommatore a 16 bit

A15-A12 B15-B12 A11-A8 B11-B8 A7-A4 B7-B4 A3-A0 B3-B0


4 4 4 4 4 4 4 4

Sommatore Sommatore Sommatore Sommatore C0


lookahead lookahead lookahead lookahead
a 4 bit a 4 bit a 4 bit a 4 bit

4 4 4 4
C12 C8 C4

S15-S12 S11-S8 S7-S4 S3-S0

P G P G P G P G

Carry lookahead generator di 2° livello

P0-16 G0-16

Calcolatori a.a. 13/14 Dario Bruneo


44
Sommatore carry lookahead (cont.)

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%!

Calcolatori a.a. 13/14 Dario Bruneo


45
Sottrazione binaria

Si consideri la sottrazione di due numeri interi positivi M e N a n bit

La sottrazione si effettua confrontando il sottraendo (N) con il minuendo (M) e sottraendo il più piccolo dal
più grande

Dal punto di vista circuitale risulta oneroso il confronto

Conviene sottrarre in ogni caso il sottraendo dal minuendo

Se non c’è prestito dalla (n+1)-ma colonna il risultato è positivo (M-N)

Si consideri ad esempio la sottrazione di due numeri a 5 bit (M=30, N=19)

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

Calcolatori a.a. 13/14 Dario Bruneo


46
Sottrazione binaria (cont.)

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)

Ad esempio con M=19 3 N=30

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 +

M-N+25 (21)10 1 0 1 0 1 = risultato (sempre con (1)10 1 =


l’aggiunta del segno meno)
-(N-M) -(11)10 - 0 1 0 1 1 comp2 -(11)10 - 0 1 0 1 1

Calcolatori a.a. 13/14 Dario Bruneo


47
Sottrazione binaria (cont.)

Circuito che fa la somma e la differenza

Invece di due sottrattori conviene utilizzare un complementatore

Il circuito è molto complesso

Sarebbe utile condividere la circuiteria del sommatore e del sottrattore

Calcolatori a.a. 13/14 Dario Bruneo


48
Sottrazione binaria (cont.)

Si può utilizzare la proprietà del complemento a 2 per effettuare sottrazioni mediante somme,
condividendo, in tal modo, la circuiteria

Si supponga di dover effettuare M-N

Si somma il complemento a 2 del sottraendo al minuendo: M+(2n-N) = M-N+2n

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)

Calcolatori a.a. 13/14 Dario Bruneo


49
Numeri binari con segno

Esistono tre metodi principali per la rappresentazione dei numeri interi con segno

La rappresentazione utilizzata si stabilisce in fase di progetto

Dati i vantaggi della rappresentazione in complemento a 2 essa è normalmente la più utilizzata

Calcolatori a.a. 13/14 Dario Bruneo


50
Somme con segno

La somma di numeri a n bit rappresentati in complemento a 2 avviene effettuando una somma ed


eliminando l’eventuale riporto nella (n+1)-ma colonna

Si possono verificare i seguenti casi:

(-M)+(-N) = (2n-M)+(2n-N) = scartando il riporto


(+M)+(+N)=+(M+N)
= 2n-M-N = -(M+N)
1 1
M (4)10 0 1 0 0 + -M -(4)10 1 1 0 0 +
N (1)10 0 0 0 1 = -N -(1)10 1 1 1 1 =
M+N (5)10 0 1 0 1 -(M+N) -(5)10 1 0 1 1

(+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

Calcolatori a.a. 13/14 Dario Bruneo


51
Sottrazioni con segno

La sottrazione di numeri a n bit rappresentati in complemento a 2 avviene effettuando la somma con


il complemento del sottraendo ed eliminando l’eventuale riporto nella (n+1)-ma colonna

Si possono verificare i seguenti casi:

(-M)-(-N) = 2n-M+N (+M)-(+N) = M+ 2n- N

Se N≥M ci sarà un Se M≥N ci sarà un


Se N<M non ci sarà un Se M<N non ci sarà un
riporto che verrà riporto che verrà
riporto ottenendo riporto ottenendo
eliminato ottenendo eliminato ottenendo
-(M-N) -(N-M)
N-M M-N

(-M)-(+N) = 2n-M + 2n -N (+M)-(-N) = M + N

Ci sarà un riporto che verrà eliminato


ottenendo 2n - M - N cioè Verrà eseguita una normale somma
-(M + N)

Calcolatori a.a. 13/14 Dario Bruneo


52
Sommatore/sottrattore binario (cont.)

Si può realizzare un circuito sommatore/sottrattore a n bit utilizzando i sommatori a n bit visti


precedentemente e dei circuiti in grado di fornire il complemento a due degli operandi

Un complementatore può essere realizzato

utilizzando delle porte XOR, che fungono da invertitori pilotati

agendo opportunamente sul riporto C0

L’ingresso S seleziona l’operazione di somma o sottrazione! ! ! ! ! ! ! S!= ADD’/SUB

Calcolatori a.a. 13/14 Dario Bruneo


53
Overflow

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

Può avvenire solo se:

i numeri hanno lo stesso segno (durante l’operazione di somma)

i numeri hanno segno opposto (durante l’operazione di differenza)

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

Calcolatori a.a. 13/14 Dario Bruneo


54
Overflow (cont.)

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

numeri a 8 bit in complemento a 2 numeri a 8 bit in complemento a 2


1 0 1 1 0 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

Si avrà un overflow, se e soltanto se, gli ultimi due riporti differiranno

Il circuito di rilevazione sarà:

Calcolatori a.a. 13/14 Dario Bruneo


55
Moltiplicatori binari

I circuiti per la moltiplicazione sono elementi complessi

Il punto di partenza è la struttura algebrica della moltiplicazione

la moltiplicazione tra due bit coincide con l’operazione logica AND

Il risultato della moltiplicazione di due numeri di J e K bit sarà composto da un numero di (J+K) bit

Calcolatori a.a. 13/14 Dario Bruneo


56
Moltiplicatori binari (cont.)

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

I livelli vanno sommati shiftando ogni volta di un


bit

Ad ogni passo si ottiene una cifra del risultato

Per realizzare un moltiplicatore (K x J) bit si devono utilizzare


K x J porte AND e J - 1 sommatori a K bit

Calcolatori a.a. 13/14 Dario Bruneo


57
Unità aritmetico logica ALU

La ALU (Arithmetic Logic Unit) è un dispositivo che permette di effettuare operazioni logiche (AND, OR,
XOR, …) ed aritmetiche
ALU operation

Dispositivo principale di ogni processore

Zero

Le ALU possono essere caratterizzate da: ALU Result


Overflow

tipo di dati su cui operano (interi con segno, floating point)


b

numero di bit (32bit, 64bit)

CarryOut

Input Output

- Dati (a,b) - Risultato


- Bit di controllo - Bit di stato (flag)

Calcolatori a.a. 13/14 Dario Bruneo


58
Unità aritmetico logica ALU (cont.)

Esistono, dal punto di vista circuitale, due tipologie principali di ALU

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

Calcolatori a.a. 13/14 Dario Bruneo


59
Multiplexed ALU

Esempio di multiplexed ALU

Schema circuitale bit di controllo

Calcolatori a.a. 13/14 Dario Bruneo


60
Bit-sliced ALU

Esempio di bit-sliced ALU

Schema circuitale di una singola slice bit di controllo

Calcolatori a.a. 13/14 Dario Bruneo


61
Dispositivi logici programmabili

Dispositivi che implementano una struttura Tecniche di programmazione


programmabile ed altamente flessibile
permanenti

Basso costo
riprogrammabili volatili

Facilità di implementazione
riprogrammabili non volatili

Tipi di dispositivo

Struttura SP

ROM (Read Only Memory)

PLA (Programmable Logic Array)

PAL (Programmable Array Logic)

Struttura complessa (VLSI)

FPGA (Field Programmable Gate Array)

CPLD (Complex Programmable Logic Device)

Calcolatori a.a. 13/14 Dario Bruneo


62
ROM

Memorie: dispositivi in grado di memorizzare un insieme di “parole” composte da una sequenza di bit

Le ROM (Read Only Memory) sono memorie a sola lettura

Sono costituite da un insieme di 2k parole da n bit selezionabili mediante k bit di indirizzo

La capacità (in byte) è data da:


C(byte) = (n * 2k)/8

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

Calcolatori a.a. 13/14 Dario Bruneo


63
ROM (cont.)

Le ROM sono realizzate mediante:

un decoder in grado di decodificare i bit di indirizzo

una quantità di porte OR pari alla larghezza della parola

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

Calcolatori a.a. 13/14 Dario Bruneo


64
ROM (cont.)

Data una ROM 2kxn bit si possono implementare n funzioni di k variabili

Non è necessaria una semplificazione della funzione

Potrebbe essere utile una “semplificazione” della tabella di verità (ad esempio utilizzandone, quando
possibile, solo una parte)

es.

A2(I4, I3, I2, I1, I0) = ∑m(2,3,28,30)


A6(I4, I3, I2, I1, I0) = ∑m(0,1,28)

Calcolatori a.a. 13/14 Dario Bruneo


65
ROM (cont.)

Esempio di progettazione gerarchica A2 A2


O7 O7
A2 A2
O7 O7
O6 O6 O6 O6
A1 A1 A1 A1
O5 O5 O5 O5
A0 A0
3 possibili realizzazioni di una ROM 16x8 A0 8x8 O4 O4 A0 8x8 O4 O4

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

Calcolatori a.a. 13/14 Dario Bruneo


66
ROM (cont.)

Esistono differenti tipologie di ROM

PROM (Programmable ROM)

EPROM (Erasable Programmable ROM)

EEPROM (Electrically Erasable Programmable ROM)

FLASH (Flash Memories)

Calcolatori a.a. 13/14 Dario Bruneo


67
PLA

I Programmable Logic Array (PLA) sono concettualmente simili alle ROM

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

Calcolatori a.a. 13/14 Dario Bruneo


68
PLA (cont.)

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

È necessaria una fase di semplificazione della funzione

È utile condividere implicanti tra le varie funzioni

È possibile avere le uscite in forma complementata

Ad esempio per realizzare le seguenti funzioni con un PLA

F1 = AB’ + AC + A’BC’
F2 = (AC + BC)’

2 funzioni di 3 variabili con 4 implicanti differenti

sarà necessario un PLA con 3 ingressi, 4 porte AND e 2 uscite (delle quali la seconda complementata)

Calcolatori a.a. 13/14 Dario Bruneo


69
PLA (cont.)

La programmazione di un PLA avviene mediante l’utilizzo di una opportuna tabella

Tabella di programmazione di un PLA

Specifica la mappa delle “bruciature”

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 -

Calcolatori a.a. 13/14 Dario Bruneo


70
PAL

I Programmable Array Logic (PAL) si è possibile implementare 2 funzioni di 4 variabili ognuna


delle quali può contenere al più 2 implicanti
caratterizzano per la presenza di una matrice di
porte OR fissa ed una matrice di porte AND Non è possibile condividere gli implicanti tra le funzioni!

programmabile

I PAL sono più facili da progettare ma meno


flessibili dei PLA

Oltre che dal numero di ingressi dal numero di uscite e


dal numero di porte AND sono caratterizzati dal modo in
cui le porte AND sono connesse alle porte OR quindi dal
numero massimo di implicanti rappresentabili

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

Calcolatori a.a. 13/14 Dario Bruneo


71
PAL (cont.)

Esempio

Si implementino utilizzando un PAL le seguenti funzioni

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)

semplificando le funzioni in modo da avere il minor


numero di termini prodotto

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

Calcolatori a.a. 13/14 Dario Bruneo


73
FPGA

Dispositivi programmabili molto complessi che abbandonano la struttura a due livelli aumentando la
flessibilità ed il campo di applicazione

Possono contenere da migliaia a milioni di porte logiche (inclusi circuiti di memoria)

Progettazione

Full custom

Standard cell design

FPGA

Progettazione CAD

Calcolatori a.a. 13/14 Dario Bruneo


74

Potrebbero piacerti anche