Sei sulla pagina 1di 31

Elettronica Digitale 2

Prof.ssa Stefania Perri

Contenuti
• Funzioni aritmetiche e loro implementazioni
circuitali anche pipelined
• Macchine a stati finiti
• Circuiti aritmetici a precisione variabile
• Filtri digitali
• Circuiti per l’elaborazione di immagini
• Progetti VHDL
2

RETI LOGICHE COMBINATORIE


Una porta logica è un circuito usato per
realizzare in hardware una funzione logica
elementare

L’insieme di più porte logiche è una


rete logica combinatoria e consente
di realizzare in hardware una funzione
logica complessa
3

Esempio di rete logica combinatoria

Out
C

Out = A ⋅ B + B ⋅ C + A ⋅ C
4
Importanza dei circuiti aritmetici
In qualsiasi microprocessore è presente
un’unità Logica-Aritmetica (ALU)
Controllo Esempio:
Ingresso1+Ingresso2
Ingresso1-Ingresso2
Ingresso1 Ingresso1×Ingresso2
A (Ingresso1)2
L Uscita
.
U .
Ingresso
. 2
Ingresso2

La somma binaria è l’operazione di base


5

1 0 0 0 0 1 0 0

0 1 0 0 0 0 1 0 0 +

0 1 1 0 0 0 1 0 1 =

0 1 0 1 0 0 1 0 0 1

Risultato: OutBIN=0101001001
6
Circuiti Sommatori
A B
Il modulo di base è
il full-adder (FA) Co
FA Ci

TIPI DI CIRCUITI SOMMATORI


Ripple Carry
Carry-Select
Carry Look-Ahead
Parallel-Prefix
MISTI
Il Ripple-Carry Adder 7

Esegue l’operazione di somma tra due numeri ad


n-bit secondo il metodo carta e penna
an-1 bn-1 an-2 bn-2 a0 b0

A B A B A B

Co FA Ci Co FA Ci Co FA Ci
cn S cn-1 S cn-2 c1 S c0

sn-1 sn-2 s0
Operandi: A=an-1 an-2 … a1 a0 e B=bn-1 bn-2 … b1 b0
Risultato ad n+1 bit: cn sn-1 sn-2 … s1 s0
8

Il Ripple-Carry Adder

E’ il sommatore più semplice e meno costoso:


richiede meno porte logiche di qualsiasi altro
tipo di sommatore

Sommatore più lento.


Problema legato alla propagazione del riporto:
l’i-esimo FA può generare il risultato corretto solo
dopo avere ricevuto in ingresso il riporto generato
dal precedente FA
an-1 bn-1 an-2 bn-2 a0 b0 9

A B A B A B

Co FA Ci Co FA Ci Co FA Ci
cn S
cn-1 S
cn-2 c1 S
c0

sn-1 sn-2 s0
an-1bn-1 an-2bn-2 a0 b0

cn c1
cn-1 cn-2 c0

sn-1 sn-2 s0
10
an-1bn-1 an-2bn-2 a0 b0

c1
cn-1 cn-2 c0

sn-1 sn-2 s0

Path per sk = 1 XOR+2·k NAND+1 XOR


Path per ck= 1 XOR+2·k NAND

Path critici:
per sn-1 : 1 XOR+2·(n-1) NAND+1 XOR
per cn : 1 XOR+2·n NAND
11
Il Carry-Select Adder
cz7 a[3:0] b[3:0]
0 a[7:4] b[7:4]
c7
1 cu7

Ripple-carry Ripple-carry
a 4-bit a 4-bit
c4 c4 RC c0
cz7 RC-Z 0

Sz[7:4]
0 S[3:0]
S[7:4] 1 Su[7:4]
Ripple-carry
a 4-bit
I blocchi RC, RC-Z
cu7
RC-U 1 e RC-U lavorano
in parallelo
a[7:4] b[7:4]
12

Il Carry-Select Adder
Nel caso esaminato (operandi a 8-bit) si ha:
Path critici:
per s7 : 1 XOR+8 NAND+1 MUX
per c8 : 1 XOR+8 NAND+1 MUX

In un Ripple-Carry a 8-bit si avrebbe:


Path critici:
per s7 : 1 XOR+14 NAND+1 XOR
per c8 : 1 XOR+16 NAND
13

Il Carry-Select Adder
In un Carry-Select ad n-bit realizzato usando
Blocchi Ripple-Carry a 4-bit sono necessari
n
− 1 stadi di multiplexer
4
Path critici: n
per sn-1 : 1 XOR+8 NAND+ ( −1) MUX
4
per cn : si individua lo stesso path

Il Carry-Select è più veloce, ma più costoso


14
Il Carry Look-Ahead
Si = ai ⊕ bi ⊕ ci

ci +1 = ( ai ⊕ bi ) ⋅ ci + ai ⋅ bi

Si definiscono i segnali di propagate


pi e di generate gi

pi = ai ⊕ bi g i = ai ⋅ bi
15

Si = pi ⊕ ci

ci +1 = pi ⋅ ci + g i
c1=g0+ p0 c0

c2=g1+ p1 c1 = g1+ p1 (g0+ p0 c0)= g1+ p1 g0 + p1 p0 c0

c3=g2+ p2 c2 = g2+ p2 (g1+ p1 g0 + p1 p0 c0)=g2+p2g1+p2p1g0+p2p1p0c0


.
.
ck+1=gk+ gk-1 pk+ gk-2 pk-1+...+ g0 p1 p2 ... pk+ p0 p1 ... pk c0
.
.
cn=gn-1+gn-2pn-1+...+p0p1...pn-1c0
16
4-bit Carry Look-Ahead Adder
a3 b3 a2 b2 a1 b1 a0 b0

c0
c1
c4
c2
c3

s3 s2 s1 s0
17
Path critici:

per si : 1 XOR+1 AND+1 OR +1 XOR


per ci+1 : 1 XOR+1 AND+1 OR
Da i dipende il numero di ingressi delle porte
AND ed OR incluse nei path critici

PROBLEMA

Un Carry Look-Ahead ad n-bit richiede porte


AND ed OR fino ad n+1 ingressi !!
The Kogge-Stone parallel-Prefix adder
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

cin
c15 c14 c13 c12 c11 c10 c9 c8 c7 c6 c5 c4 c3 c2 c1 c0

s15 s14 s13 s12 s11 s10 s9 s8 s7 s6 s5 s4 s3 s2 s1 s0

Receives ai and bi and computes pi = ai ⊕bi ; gi = ai ⋅ bi


Receives pi, pi+1, gi, g+1 and computes gg i +1 = g i +1 + pi +1 ⋅ g i ; gpi +1 = pi +1 ⋅ pi

Receives ai, bi, ci-1 and computes si = ai ⊕ bi ⊕ ci −1 = pi ⊕ ci −1


The sparse implementation
The Han-Carlson parallel-Prefix adder
27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

GP6 GP5 GP4 GP3 GP2 GP1 GP0


GG6 GG5 GG4 GG3 GG2 GG1 GG0

GGP3 GGP2 GGP1 PP15


GGG3 GGG2 GGG1 c16

A[31:28]
B[31:28] A[27:24] A[23:20] A[19:16] A[15:12] A[11:8] A[7:4] A[3:0]
c28 B[27:24] c
24
B[23:20] c
20
B[19:16] c16 B[15:12] c B[11:8] c B[7:4] c B[3:0]
12 8 4
c32 4-bit 4-bit 4-bit 4-bit 4-bit 4-bit 4-bit 4-bit cin
SUM SUM SUM SUM SUM SUM SUM SUM
The Brent-Kung parallel-Prefix adder
27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

GP6 GP5 GP4 GP3 GP2 GP1 GP0


GG6 GG5 GG4 GG3 GG2 GG1 GG0

PP15
c16

PP27
c28
A[31:28] A[27:24] A[23:20] A[19:16] A[15:12] A[11:8] A[7:4] A[3:0]
B[31:28] c B[27:24] c B[23:20] c B[19:16] c B[15:12] c B[11:8] c B[7:4] c B[3:0]
28 24 20 16 12 8 4
c32 4-bit 4-bit 4-bit 4-bit 4-bit 4-bit 4-bit 4-bit cin
SUM SUM SUM SUM SUM SUM SUM SUM
The generic module within a triangle implements equation (1)

pi = ai + bi
g i = ai + bi
...
pi + 3 = ai + 3 + bi +3 (1)
g i +3 = ai +3 + bi +3
GPi =pi + 3 ⋅ pi + 2 ⋅ pi +1 ⋅ pi
4

GG i =g i +3+pi +3 ⋅ g i + 2+pi +3 ⋅ pi + 2 ⋅ g i +1+pi +3 ⋅ pi + 2 ⋅ pi +1 ⋅ g i


4

The generic module within the rhomb receives four consecutive grouped propagate
signals and four consecutive grouped generate signals and implements equation (2)

GGPi =GPi ⋅ GPi ⋅ GPi ⋅ GPi


4 4
+3
4
+2
4
+1
4
(2)
GGG i =GG i +GPi ⋅ GG i +GPi ⋅ GPi ⋅ GG i +GPi ⋅ GPi ⋅ GPi ⋅ GG i
+3 +3 +2 +3 +2 +1 +3 +2 +1
4 4 4 4 4 4 4 4 4 4 4
Finally, the modules within the rectangles implement equations (3) and (4),

PP15=GP3 ⋅ GP2 ⋅ GP1 ⋅ GP0


c16=GG3+GP3 ⋅ GG2+GP3 ⋅ GP2 ⋅ GG1+GP3 ⋅ GP2 ⋅ GP1 ⋅ GG0
c12=GG2+GP2 ⋅ GG1+GP2 ⋅ GP1 ⋅ GG0
(3)
c8=GG1+GP1 ⋅ GG0

PP27=GP6 ⋅ GP5 ⋅ GP4 ⋅ PP15


c28=GG6+GP6 ⋅ GG5+GP6 ⋅ GP5 ⋅ GG4+GP6 ⋅ GP5 ⋅ GP4 ⋅ c16
c24=GG5+GP5 ⋅ GG4+GP5 ⋅ GP4 ⋅ c16
c20=GG4+GP4 ⋅ c16 (4)
Circuiti sommatori a 3 operandi
Supponiamo di avere 3 numeri binari in complemento a 2
e a 8-bit ciascuno

A=01100111 (103) B=10011000 (-104) C=00000001 (1)

A+B=D Ris=D+C
0 1
0 01100111+ 1 111111111+
1 10011000= 0 0 0000001=
1 11111111 (in decimale -1) 0 000000000 (in decimale 0)

D va rappresentato su 9 bits Il risultato va rappresentato su 10 bits


e per non commettere errori si e per non commettere errori si
estendono A e B con segno estendono C e D con segno

L’estensione non è necessaria se i numeri sono unsigned


Circuiti sommatori a 3 operandi

A(7) A(7:0) B(7) B(7:0) C(7) C(7:0)


9-bit 9-bit 9-bit

SOMMATORE a 9-bit
(RCA, CSA, CARRY-LOOK-AHEAD)

C(8) C(8:0)
D(8) D(8:0)
10-bit 10-bit

SOMMATORE a 10-bit
(RCA, CSA, CARRY-LOOK-AHEAD)

10-bit
Ris(9:0)
Circuiti sommatori a 3 operandi
A=01100111 (103) B=10011000 (-104) C=00000001 (1)
Alternativa: approccio carry-save

Step 2: shift a sinistra di VR ed


Step 1: sommiamo le terne estensione di SP
di bit singolarmente
111111110
01100111+ 000000010
10011000+
00000001 Step 3: somma finale
11111110 Somma parziale 1
00000001 Vettore dei riporti 1 111111110
0 000000010
Il risultato va rappresentato su 10 bits 0 000000000
e per non commettere errori si
estendono gli operandi
Circuiti sommatori a 3 operandi

a7 b7 c7 a6 b6 c6 a5 b5 c5 a4 b4 c4 a3 b3 c3 a2 b2 c2 a1 b1 c1 a0 b0 c0

FA FA FA FA FA FA FA FA

vr7 sp7 vr6 sp6 vr5 sp5 vr4 sp4 vr3 sp3 vr2 sp2 vr1 sp1 vr0 sp0

sp(7) sp(7:0) vr(7:0) 0


sp(7) vr(7)
10-bit 10-bit

SOMMATORE FINALE a 10-bit


(RCA, CSA, CARRY-LOOK-AHEAD)

10-bit
Circuiti sommatori a 3 operandi

Approccio elementare Approccio carry-save


Tp = Tsum9+Tsum10 TpCS = Tsum1+Tsum10

Se i tre operandi sono ad n-bit,


Tp=Tsumn+1+Tsumn+2 e TpCS = Tsum1+Tsumn+2
Albero di somma a 9 operandi
n-bit
4 livelli di somma

+ + + + Livello 1: 4 sommatori a (n+1)-bit

+ + Livello 2: 2 sommatori a (n+2)-bit

+ Livello 3: 1 sommatore a (n+3)-bit

+ Livello 4: 1 sommatore a (n+4)-bit

(n+4)-bit

Risultato Tp=Tsumn+1+Tsumn+2+Tsumn+3+Tsumn+4
Albero di somma a 9 operandi

Step1 & 2 Step1 & 2 Step1 & 2 Livello 1: 3n Full Adders


vr1 sp1 vr2 sp2 vr3 sp3
SP e VR a (n+1)-bit

Step1 & 2 Step1 & 2 Livello 2: 2(n+1) Full Adders

vr4 sp4 vr5 sp5 SP e VR a (n+2)-bit

Step1 & 2 Livello 3: (n+2) Full Adders


vr6 sp6 SP e VR a (n+3)-bit

Step1 & 2 Livello 4: (n+3) Full Adders


vr7 sp7
SP e VR a (n+4)-bit
Livello 5: sommatore a (n+4) bit
+
Risultato TpCS=4Tsum1+Tsumn+4
Progetto n°1
Impiegando la tecnica del Carry-Save, progettare un albero di somma a 9
ingressi ad 8-bit in complemento a 2.

Verificare il corretto funzionamento del circuito tramite la simulazione di


almeno 16 combinazioni degli ingressi

Sintetizzare la rete logica corrispondente e stimare l’occupazione di risorse


insieme alla massima frequenza di funzionamento

Tempo a disposizione per la


consegna di una breve relazione
sul lavoro svolto ?????

Potrebbero piacerti anche