Professional Documents
Culture Documents
Aritmeticka Kola
Aritmeticka Kola
Aritmetička kola 1
Digitalna elektronika
Aritmetička kola
Procesor
Veza ka ostatku sveta Registri
FSM
MEMORY
I N PU T ‐O U T PU T
Magistrala
CONTROL
DATAPATH
OBRADA PODATAKA
Digitalna elektronika
Aritmetička kola – Sabirači - Polusabirač
A B
Half Co
adder
a b c s
S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0 a s
b
c
Digitalna elektronika
Aritmetička kola 2
Digitalna elektronika
Aritmetička kola – Sabirači – Potpuni sabirač A B
Ci Full Co
ci a b co s adder
0 0 0 0 0 S
0 0 1 0 1
s=ci xor a xor b
0 1 0 0 1
0 1 1 1 0 co=ab+ci(a+b)
1 0 0 0 1
1 0 1 1 0
ci s
1 1 0 1 0 a
b
1 1 1 1 1 co
s=ciab+co(ci+a+b)
Digitalna elektronika
Aritmetička kola – Sabirači – Potpuni sabirač
s=ci xor a xor b
co=ab+ci(a+b) =abci+co(ci+a+b)
Da bi radili samo sa pravim, a ne i komplementnim, vrednostima
VDD
VDD
Ci A B
A B
A
B
Ci B
VDD
A
X
Ci
Ci A S
Ci
A B B VDD
A B Ci A
Co B
28 Tranzistora
Digitalna elektronika
Aritmetička kola 3
Digitalna elektronika
Aritmetička kola – Sabirači – Ripple Carry
Ideja iz “algoritamskog” sabiranja
A0 B0 A1 B1 A2 B2 A3 B3
S0 S1 S2 S3
Worst case kašnjenje
tadder = (N-1)tcarry + tsum
Kašnjenje za najgori slučaj
tadder = O(N)
Digitalna elektronika
Aritmetička kola – Sabirači – Princip inverzije
Da li nam trebaju invertori na izlazu u realizaciji sa 28 tranzistora?
ci a b co s A B
A B
0 0 0 0 0
0 0 1 0 1 Ci FA Co Ci FA Co
0 1 0 0 1 S S
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0 Ako na ulaze već napravljenog sabirača
dovedemo invertovane vrednosti,
1 1 1 1 1 dobićemo invertovane vrednosti izlaza.
Digitalna elektronika
Aritmetička kola 4
Digitalna elektronika
Aritmetička kola – Sabirači – Princip inverzije
A0 B0 A1 B1 A2 B2 A3 B3
S0 S1 S2 S3
Digitalna elektronika
Aritmetička kola – Sabirači – Potpuni sabirač
Najveći problem predstavlja “čekanje” prethodnog carry
G - generate G=AB
P - propagate P=A xor B
D - delete D=AB
Co = G+PCi
S=P xor Ci
Digitalna elektronika
Aritmetička kola 5
Digitalna elektronika
Aritmetička kola – Sabirači – Mirror adder
s=ci xor a xor b
G=AB P=A xor B D=AB =abci+co(ci+a+b)
V DD
V DD V DD A
A B B A B Ci B
Delete
"0"‐Propagate A Ci
Co
Ci S
A Ci
"1"‐Propagate Generate
A B B A B Ci A
24 tranzistora
tcarry još manje
Digitalna elektronika
Aritmetička kola – Sabirači – Potpuni sabirač sa transmisionim gejtovima
S=P xor Ci
Priprema
A
P Co = G+PCi
/A
B B
/P
Ako jeste P …
Ako nije P onda je G=AB.
Nije P samo ako je A=B=0 ili A=B=1 ….
A
Generisanje signala P
Digitalna elektronika
Aritmetička kola 6
Digitalna elektronika
Aritmetička kola – Sabirači
U višebitnom sabiraču svi biti sabiraka dolaze istovremeno.
Istovremeno se po bitima generišu svi potrebni P, G, D.
Znači samo carry treba da propagira.
VDD
Pi
VDD
Pi
Ci Co
Gi
Co Gi
Ci
Di
Pi
Dinamička logika
G=AB P=A xor B D=AB
Digitalna elektronika
Aritmetička kola – Sabirači – Manchester Carry Chain
Višebitna dinamička logika
VDD
P0 P1 P2 P3
C3
Ci,0
G0 G1 G2 G3
C0 C1 C2 C3
C učestvuju u sumi!
C3 ili je “odmah” pripremljen D, G ili se u najgorem slučaju
kada su svi P=1 čeka propagiranje ulaznog Ci
Digitalna elektronika
Aritmetička kola 7
Digitalna elektronika
Aritmetička kola – Sabirači – Carry Bypass Adder
BP
P0 P1 P2 P3
Ci,0 CO,3
G0 G1 G2 G3
BP
BP=P0P1P2P3 BP = bypass
M bits
tadder = tsetup + Mtcarry + (N/M-1)tbypass + (M-1)tcarry + tsum
Digitalna elektronika
Aritmetička kola – Sabirači – Carry Select Adder
Setup
P,G
Carry Vector
Sum Generation
Digitalna elektronika
Aritmetička kola 8
Digitalna elektronika
Aritmetička kola – Sabirači – Carry Select Adder
Digitalna elektronika
Aritmetička kola – Sabirači – Square Root Carry Select Adder
Bit 0-1 Bit 2-4 Bit 5-8 Bit 9-13 Bit 14-19
Digitalna elektronika
Aritmetička kola – Sabirači – Carry Look Ahead Adder
g i ai bi pi ai bi
si pi ci
Digitalna elektronika
Aritmetička kola – Sabirači – Carry Look Ahead Adder
ci 1 ai bi ci ai bi ci ai bi gi pi ci
ci 2 g i 1 pi 1ci 1 g i 1 pi 1 gi pi ci
gi 1 pi 1 g i pi 1 pi ci
Digitalna elektronika
Aritmetička kola 10
Digitalna elektronika
Aritmetička kola – Sabirači – Carry Look Ahead Adder
Ci,0 P0 Ci,1 P1
Ci, N-1 PN-1
S0 S1 ••• SN-1
Co 0 = G 0 + P0 Ci 0
C o 1 = G1 + P1 G0 + P1 P0 Ci 0
C o 2 = G2 + P2 G1 + P2 P1 G 0 + P2 P1 P0 C i 0
= G2 + P2 G 1 + P2 P1 G0 + P0 Ci 0 = G 2:1 + P2:1 C o 0
Digitalna elektronika
Aritmetička kola – Sabirači – Ideja za veliki broj ulaza u logička kola
tp N
t p log 2 N
Digitalna elektronika
Aritmetička kola 11
Digitalna elektronika
Aritmetička kola – Pomerač – Shifter – množenje, deljenje sa 2
Ai Bi
Ai-1 Bi-1
Bit-Slice i
...
Digitalna elektronika
Aritmetička kola – Pomerač – Barel Shifter – programabilno množenje, deljenje sa 2n
A3
B3
Sh1
A2
B2
Sh3
A0
B0
Digitalna elektronika
Aritmetička kola – Pomerač – Logaritmic Shifter
A3 B3
A2 B2
A1 B1
A0 B0
Digitalna elektronika
Aritmetička kola – Pomerač – primer - logičko pomeranje levo ili desno
Digitalna elektronika
Aritmetička kola 13
Digitalna elektronika
Aritmetička kola – Binarno množenje
M 1 N 1
X X i 2i Y Yj 2 j
i 0 j 0
N 1
M 1 N 1 M 1
XY X i 2i Y j 2 j Y j X i 2i j
i 0 j 0 j 0 i 0
1 0 1 0 1 0 x 1 0 1 1 Operandi
1 0 1 0 1 0
1 0 1 0 1 0
0 0 0 0 0 0 Parcijalni proizvodi
1 0 1 0 1 0
1 1 1 0 0 1 1 1 0 Rezultat
Digitalna elektronika
Aritmetička kola – Množač - Array Multiplier
M 1 N 1
X X i 2i Y Yj 2 j
i 0 j 0
M 1 N 1 N 1 M 1
XY X i 2i Y j 2 j Y j X i 2i j
X3 X2 X1 X0
i 0 j 0 j 0 i 0 Y0
X3 X2 X1 X0 Y 1 Z0
HA FA FA HA
X3 X2 X1 X0 Y2 Z1
FA FA FA HA
X3 X2 X1 X0 Y3 Z2
FA FA FA HA
Z7 Z6 Z5 Z4 Z3
Digitalna elektronika
Aritmetička kola – Množač – Carry Save Multiplier
0 0 1
1 0 1
1 1 0
0 0 1
1 0 1
1 0 0
0 1 0
1 1 0
Digitalna elektronika
Aritmetička kola – Množač – Akumulaciono množenje
Shift Left
Množenik
64 bits
Write
Rezultat Control
64 bits
Digitalna elektronika
Aritmetička kola 15
Digitalna elektronika
Aritmetička kola – Množač – Akumulaciono množenje
Digitalna elektronika
Aritmetička kola – Množač – Akumulaciono množenje
Množenik
32 bits
Množilac Shift Right
Add
32‐bit ALU 32 bits
Shift Right
Rezultat Control
64 bits Write
Digitalna elektronika
Aritmetička kola 16
Digitalna elektronika
Aritmetička kola – Množač – Akumulaciono množenje
Digitalna elektronika
Aritmetička kola – Množač – Akumulaciono množenje
Množenik
32 bits
Add
32‐bit ALU
Shift Right
Rezultat Množilac Control
64 bits Write
Digitalna elektronika
Aritmetička kola 17
Digitalna elektronika
Aritmetička kola – Množač – Akumulaciono množenje
Digitalna elektronika
Aritmetička kola – Označeno množenje
1. način
• Zapamtiti znak
• Učiniti sve pozitivnim
• Uraditi množenje
• Definisati znak
if sign(a)!=sign(b) then s = true, else s=false
a = abs(a)
b = abs(b)
p = a*b
negate p if s = true
Digitalna elektronika
Aritmetička kola 18
Digitalna elektronika
Aritmetička kola – Označeno množenje
2. način
Primeniti pravila označenih brojeva:
• Ekstenzija znaka parcijalnih proizvoda
• Oduzimanje parcijalnog proizvoda
nastalog množenjem bita znaka
Digitalna elektronika
Aritmetička kola – Označeno množenje
-6*3
1 0 1 0 x 0 0 1 1 Operandi
1 1 1 1 0 1 0
1 1 1 0 1 0
0 0 0 0 0 Parcijalni proizvodi
0 0 0 0
1 1 1 0 1 1 1 0 Rezultat
Digitalna elektronika
Aritmetička kola 19
Digitalna elektronika
Aritmetička kola – Označeno množenje
3*-6
0 0 1 1 x 1 0 1 0 Operandi
0 0 0 0 0 0 0
0 0 0 0 1 1
0 0 0 0 0 Parcijalni proizvodi
- 0 0 1 1
1 1 1 0 1 1 1 0 Rezultat
Digitalna elektronika
Aritmetička kola – Označeno množenje
-3*-6
1 1 0 1 x 1 0 1 0 Operandi
0 0 0 0 0 0 0
1 1 1 1 0 1
0 0 0 0 0 Parcijalni proizvodi
- 1 1 0 1
0 0 0 1 0 0 1 0 Rezultat
Digitalna elektronika
Aritmetička kola 20
Digitalna elektronika
Aritmetička kola – Označeno množenje
Digitalna elektronika
Aritmetička kola – Označeno množenje
Digitalna elektronika
Aritmetička kola – Označeno množenje
Digitalna elektronika
Aritmetička kola – Označeno množenje – Booth’s Algorithm
3. način
Booth’s Algorithm
Digitalna elektronika
Aritmetička kola 22
Digitalna elektronika
Aritmetička kola – Označeno množenje – Booth’s Algorithm
D Dn 1 Dn 2 ...D1 D0 Dn 1 2 n 1 D *
Dn 1 0 Dt D *
Dn 1 1 Dt (2 n D) (2 n Dn 1 2 n 1 D* ) Dn 1 2 n 1 D*
Formirajmo ovako parcijalne proizvode za proizvod b*a
a=(a31a30a29a28 … a3a2a1a0)2
a-1=0
(a-1 – a0) x b x 20
(a0 – a1) x b x 21
(a1 – a2) x b x 22
…
(a29 – a30) x b x 230
(a30 – a31) x b x 231
Digitalna elektronika
Aritmetička kola – Označeno množenje – Booth’s Algorithm
Digitalna elektronika
Aritmetička kola – Označeno množenje – Booth’s Algorithm
Digitalna elektronika
Aritmetička kola – Označeno množenje – Booth’s Algorithm
000: 0 Sada je za formiranje parcijalnih proizvoda potrebna i
operacija pomeranja (množenje sa 2)
001: +b
010: +b
011: +2b ‐10 = 1 1 0 1 1 0 0
100: -2b
101: -b
110: -b
111: 0
Digitalna elektronika
Aritmetička kola 24
Digitalna elektronika
Aritmetička kola – Deljenje
1 0 0 1 0 1 0 : 1 0 0 0 = 1 0 0 1
74:8
- 1 0 0 0 0 0 0 1
0 0 0 1 0 0 0 R
- 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 R
- 0 0 1 0 0 0 0 0
0 0 0 1 0 1 0 R
- 0 0 0 1 0 0 0 1
0 0 0 0 0 1 0 R
Digitalna elektronika
Aritmetička kola – Deljenje
Shift Right
Delilac
64 bits
Write
Ostatak Control
64 bits
Digitalna elektronika
Aritmetička kola 25
Digitalna elektronika
Aritmetička kola – Deljenje
Digitalna elektronika
Aritmetička kola – Deljenje
Delilac
32 bits
Sub Rezultat Shift Left
32‐bit ALU 32 bits
Shift Left
Ostatak Control
64 bits Write
Digitalna elektronika
Aritmetička kola 26
Digitalna elektronika
Aritmetička kola – Deljenje
Digitalna elektronika
Aritmetička kola – Deljenje
Delilac
32 bits
Sub
32‐bit ALU
Shift Left
Ostatak Rezultat Control
64 bits Write
Digitalna elektronika
Aritmetička kola 27
Digitalna elektronika
Aritmetička kola – Deljenje