You are on page 1of 27

Digitalna elektronika

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

Poređenje, Sabiranje, Množenje, Deljenje, Pomeranje, ...

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

Ci,0 Co,0 Co,1 Co,2 Co,3


FA FA FA FA
(  Ci,1 )

S0 S1 S2 S3
Worst case kašnjenje
tadder = (N-1)tcarry + tsum
Kašnjenje za najgori slučaj

Raste linearno sa brojem bita

tadder = O(N)

Cilj: Napraviti što brži prenos carry bita

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

Even cell Odd cell

A0 B0 A1 B1 A2 B2 A3 B3

Ci,0 Co,0 Co,1 Co,2 Co,3


FA FA FA FA

S0 S1 S2 S3

Nema invertora ‐> tcarry manje Nema invertora ‐> tcarry manje


Dobili invertovanu vrednost za Dobili pravu vrednost za ...
naredni stepen naredni stepen

Potrebni invertori na ulazima A i B i izlazima S “ne utiču”na kašnjenje


Svi A i B se istovremeno dovode. Pojavljuju se na S možda samo na 
poslednjem sabiranju

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

Bit 0–3 Bit 4–7 Bit 8–11 Bit 12–15


Setup tsetup Setup Setup Setup
tbypass

Carry Carry Carry Carry


propagation propagation propagation propagation

Sum Sum Sum tsum Sum

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

"0" "0" Carry Propagation

"1" "1" Carry Propagation

Co,k-1 Multiplexer Co,k+3

Carry Vector

Sum Generation
Digitalna elektronika
Aritmetička kola 8

Digitalna elektronika
Aritmetička kola – Sabirači – Carry Select Adder

Bit 0–3 Bit 4–7 Bit 8–11 Bit 12–15


Setup Setup Setup Setup

0 0-Carry 0 0-Carry 0 0-Carry 0 0-Carry

1 1-Carry 1 1-Carry 1 1-Carry 1 1-Carry

Multiplexer Multiplexer Multiplexer Multiplexer


Ci,0 Co,3 Co,7 Co,11 Co,15

Sum Generation Sum Generation Sum Generation Sum Generation


S0–3 S4–7 S8–11 S12–15

tadder = tsetup + Mtcarry + (N/M)tmux + tsum

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

Setup Setup Setup Setup


(1)

"0" Carry "0" Carry "0" Carry "0" Carry


"0" "0" "0" "0"
(1)

"1" Carry "1" Carry "1" Carry "1" Carry


"1" "1" "1" "1"
(3) (3) (4) (5) (6) (7)
(4) (5) (6) (7)
Multiplexer Multiplexer Multiplexer Multiplexer Mux
Ci,0
(8)
Sum Generation Sum Generation Sum Generation Sum Generation Sum

S0-1 S2-4 S5-8 S9-13 S14-19 (9)

tadder = tsetup + Mtcarry + ( 2N) tmux + tsum

M ‐ broj bita prve grupe


N – ukupan broj bita
Digitalna elektronika
Aritmetička kola 9

Digitalna elektronika
Aritmetička kola – Sabirači – Carry Look Ahead Adder

Dizajn – kompromis složenosti i brzine


Brzina po svaku cenu
ci 1  gi  pi ci

g i  ai  bi pi  ai  bi

si  pi  ci

Digitalna elektronika
Aritmetička kola – Sabirači – Carry Look Ahead Adder

ai+3 bi+3 ai+2 bi+2 ai+1 bi+1 ai bi

Ci+4 Ci+3 Ci+2 Ci+1 Ci

gi+3 pi+3 gi+2 pi+2 gi+1 pi+1 gi pi

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

Dizajn – kompromis složenosti i brzine


Brzina po svaku cenu
A0, B0 A1, B1 ••• AN-1, BN-1

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

Right nop Left

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

Sh2 : Data Wire


A1
B1 : Control Wire

Sh3
A0
B0

Sh0 Sh1 Sh2 Sh3


Digitalna elektronika
Aritmetička kola 12

Digitalna elektronika
Aritmetička kola – Pomerač – Logaritmic Shifter

Sh1 Sh1 Sh2 Sh2 Sh4 Sh4

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

tmult    M  1   N  2   tcarry   N  1 tsum  tand


Digitalna elektronika
Aritmetička kola 14

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

tmult   N  1 tcarry  tmerge  tand

Digitalna elektronika
Aritmetička kola – Množač – Akumulaciono množenje

Shift Left
Množenik
64 bits

Add Množilac Shift Right


64‐bit ALU
32 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

Korak 1 – formiranje parcijalnih proizvoda

Korak 2 – dodavanjem konstanti na


odgovarajućim mestima eliminiše se višak 
kola nastalih zbog ekstenzije znaka. 
Potrebno je na kraju oduzeti ove konstante.
Digitalna elektronika
Aritmetička kola 21

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

=b x (- a31 231 + a30 230 +…+ a1 21+ a0 20)

Digitalna elektronika
Aritmetička kola – Označeno množenje – Booth’s Algorithm

a=a31a30a29a28 … a3a2a1a0 a-1=0


Ako posmatramo
(a-1 – a0) x b x 20 dva susedna bita

(a0 – a1) x b x 21  00: 0-0 = nop


(a1 – a2) x b x 22
…  01: 1-0 = add
(a29 – a30) x b x 230  10: 0-1 = sub
(a30 – a31) x b x 231
 11: 1-1 = nop
=b x (- a31 231 + a30 230 +…+ a1 21+ a0 20)
Digitalna elektronika
Aritmetička kola 23

Digitalna elektronika
Aritmetička kola – Označeno množenje – Booth’s Algorithm

Iteracija Operand Korak Parcijalni


b=0010 proizvod
a=0110 0000 0000

N=4 0010 00: no op 0000 0000


01100 arith>> 1 0000 0000
N=3 0010 10: R=R-b2n 1110 0000
00110 arith>> 1 1111 0000

N=2 0010 11: no op 1111 0000


00011 arith>> 1 1111 1000

N=1 0010 01: R=R+b2n 0001 1000


00001 arith>> 1 0000 1100

N=0 kraj 0000 1100

Digitalna elektronika
Aritmetička kola – Označeno množenje – Booth’s Algorithm

Ukoliko se posmatraju 3 susedna bita, broj parcijalnih proizvoda se dvostruko


smanjuje (spajanje susednih parcijalnih proizvoda) – Modifikovani Booth‐ov algoritam

 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

Rezultat je 1 ako Delilac <= Deljenik, inače 0


Kako ALU zna da li je ovo tačno?
Oduzmi i ako je “rezultat” manji od nule rezultat je nula
Pomeri i probaj ponovo

Digitalna elektronika
Aritmetička kola – Deljenje

Deljenik = Rezultat x Delilac + Ostatak


64 bita sa 32 bita

Shift Right
Delilac
64 bits

Sub Rezultat Shift Left


64‐bit ALU
32 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

You might also like