Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
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
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
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 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
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
ci +1 = ( ai ⊕ bi ) ⋅ ci + ai ⋅ bi
pi = ai ⊕ bi g i = ai ⋅ bi
15
Si = pi ⊕ ci
ci +1 = pi ⋅ ci + g i
c1=g0+ p0 c0
c0
c1
c4
c2
c3
s3 s2 s1 s0
17
Path critici:
PROBLEMA
cin
c15 c14 c13 c12 c11 c10 c9 c8 c7 c6 c5 c4 c3 c2 c1 c0
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
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
The generic module within the rhomb receives four consecutive grouped propagate
signals and four consecutive grouped generate signals and implements equation (2)
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)
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
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
10-bit
Circuiti sommatori a 3 operandi
(n+4)-bit
Risultato Tp=Tsumn+1+Tsumn+2+Tsumn+3+Tsumn+4
Albero di somma a 9 operandi