Dodawanie / Adders

Download Report

Transcript Dodawanie / Adders

Hardware Implementation of
Algorithms
Adders
Ernest Jamro, Dep. Of Electronics,
AGH, Poland
1
References
• Omondi A.R Computer Arithmetic Systems. Algorithms Architecture
and Implementations, Prentice Hall 1994.
• Pirsch P., Architectures for Digital Signal Processing, Chichester UK,
Wiley 1998.
• U.Mayer-Baese Digital Signal Processing with Field Programmable
Gate Arrays, Springer, Berlin 2001
• Keshab K. Parhi VLSI Digital Signal Processing Systems, J.Wiley &
sons, 1999
• Kazimierz Wiatr Akceleracja Obliczeń w systemach wizyjnych, WNT,
W-wa 2003
• E. Jamro, K. Wiatr, Układy mnożące przez stały współczynnik
implementowane
w
układach
programowalnych
FPGA,
http://home.agh.edu.pl/~jamro/2001KCM_pl.pdf
• www.xilinx.com
• www.altera.com
2
Układ dodający ze szeregową propagacją przeniesienia
Ripple Carry Adder
a3
b3
FA
Full Adder
Sumator
a2
c3
s3
b2
FA
Full Adder
Sumator
s2
si
ci-1\ai,bi
00
01
11
10
0
0
1
0
1
1
1
0
1
0
ci
ci-1\ai,bi
00
01
11
10
0
0
0
1
0
1
0
1
1
1
a1
c1
b1
FA
Full Adder
Sumator
s1
a0
c0
b0
HA
Half Adder
Pół Sumator
ai + bi+ci-1 = si + 2·ci
s0
si = ai  bi  ci-1
ci= ai bi + ai ci-1 + bi ci-1= ai bi + ci-1 (ai  bi)
ci 1 if ai  bi  1
ci  
ai if ai  bi  0
ci 1 if ai  bi  1

ci  1 if ai bi  1
0 if a b  0
i i

3
Odejmowanie / Subtraction (A-B)
Odejmowanie bezpośrednie
Kod uzupełnień do dwóch U2
Direct Subtruction
Two’s Complement
N 1
ai - bi-ci-1 = si - 2·ci
 b  2  bN   2i  bi  b 1
N
Add 1 to LSB
i 0
si = ai  bi  ci-1
ci  aibi  ci 1 ai  ci 1bi
si
ci-1\ai,bi
00
01
11
10
0
0
1
0
1
1
1
0
1
0
ci
ci-1\ai,bi
00
01
11
10
0
0
1
0
0
1
1
1
1
0
na czerwono różnica pomiędzy dodawaniem
Red – difference between addition and subtruction
bit znaku
negacja każdego bitu
sign bit
Invert each bit
Zamiast odejmowania należy dokonać
konwersji do kodu U2 liczby b oraz
przeprowadzić zwykłą operację
dodawania a+b’
Instead of performing a direct
subtraction; a standard adder can be
employed but B must be converted to
2’s complement code
4
Ripple Carry Adders in FPGAs
ci 1 if ai  bi  1
ci  
ai if ai  bi  0
si= ai  bi  ci-1
Fragment of Virtex Configurable Logic Block (CLB)
5
Carry Skip Adder (CSA)
(sumator z przeskokiem przeniesień)
ci 1 if ai  bi  1
ci  
ai if ai  bi  0
Tn= An + Bn (lub / or) Tn= An xor Bn
6
Carry Skip Adder
Szybkość (propagation time - T)
Koszt (Area – A)
AT= 1/Wydajność (efficiency)
m- wielkość bitowa
pojedynczego bloku
(width of a block)
7
Carry Select Adder
8
Altera Carry Select Adder
Apex, Cyclon
9
Porównanie układów dodających o szerokości
Comparison of Different Adders Architectures
16 bit
Koszt
Area
7392
(AT)[104]
Carry Look Ahead
Opóźnienie
Propagation delay
4
Ripple CLA (m=4)
10
336
0.34
carry select (m=4)
6
992
0.6
carry skip
15
240
0.36
2-level carry skip
12
300
0.36
Ripple Carry
31
224
0.69
Układ / Architecture
2.94
64 bity
Układ /Architecture
Opóźnienie
Koszt
(AT) [104]
Carry Look Ahead
4
50624
20.25
Ripple CLA (m=4)
34
1334
4.57
carry select (m=4)
6
2688
1.61
carry skip
29
960
2.50
2-level carry skip
28
1140
3.19
Ripple Carry
127
896
11.38
10
Dodawanie 3-wejściowe z propagacją przeniesienia
3+ input Carry Propagate Adder (CPA)
A
S= A + B + C
B C
CPA – układ dodający np. ze skrośną
propagacją przeniesienia (Ripple Carry),
Carry Look Ahead, Carry Select Adder
CPA
CPA
Example of Ripple Carry Adder
a3
c3
b3
FA
Full Adder
Sumator
FA
Full Adder
Sumator
s3
a2
c2
b2
FA
Full Adder
Sumator
FA
Full Adder
Sumator
s2
a1
c1
b1
FA
Full Adder
Sumator
FA
Full Adder
Sumator
s1
a0
c0
b0
HA
Half Adder
Pół Sumator
HA
Half Adder
Pół Sumator
s0
11
Dodawanie 3-wejściowe / Addition 3 Inputs
Zachowywanie przeniesienia.
Carry Save Adder (CSA)
A
B
C
A+B+C= 2 ·T + S
ai + bi+ci = 2·ti+1 + si
si = ai  bi  ci
ti+1= ai bi + ai ci + bi ci= ai bi + ci (ai  bi)
CSA
S
T
Nie ma propagacji przeniesienia
Bardzo szybki układ dodający przy powierzchni podobnej jak RippleCarry Adder
a3
b3
c3
FA
Full Adder
Sumator
t4
s3
a2
b2
c2
FA
Full Adder
Sumator
t3
s2
a1
b1
c1
FA
Full Adder
Sumator
t2
s1
a0
b0
c0
FA
Full Adder
Sumator
t1
s0
12
CSA – 3+ inputs
3-inputs
4-inputs
6-inputs
A
A
B
C
A
B
B
C
D
CSA
CSA
CSA
CPA
F
C D
CSA
T
E
S
CSA
CSA
CSA
CPA
CPA
In FPGA dedicated carry logic is available therefore CSA is not
13
so popular as in ASIC technology
Materiały dodatkowe
14
Manchester Adder
ci 1 if ai  bi  1

ci  1 if ai bi  1
0 if a b  0
i i

1
aibi
ci
aibi
ci-1
aibi
0
15
Superblock of carry-skip adder
16
Superblock of carry-skip adder
Czas propagacji
17
Carry Lookahead Adder
Si = Ai  Bi  Ci-1
Ci= Ai Bi + Ai Ci-1 + Bi Ci-1= Ai Bi + Ci-1 (Ai  Bi)
Gi= Ai Bi – Generate
ci 1 if ai  bi  1
ci  
Pi= AiBi - Propagate bo:
ai if ai  bi  0
- Propagate
- Generate
Si= Pi  Ci-1
Ci= Gi + Pi Ci-1
S0= P0  C-1
C0= G0 + P0 C-1
S1= P1  C0
C1= G1 + P1 C0= G1 + P1(G0 + P0 C-1)= G1 + P1G0 + P1P0C-1
S2 = P2  C1
C2= G2 + P2 C1= G2 + P2G1 + P2P1G0 + P2P1P0C-1
18
Carry-lookahead adder
Sumator z antycypacją przeniesień
19
Ripple Carry-Lookahead Adder
20
RCLA koszt i szybkość
Koszt A
Czas prop. T
AT= 1/Wydajność
21