Hardware Implementation of Algorithms Adders Ernest Jamro, Dep. Of Electronics, AGH, Poland
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
Układ dodający ze szeregową propagacją przeniesienia Ripple Carry Adder ai + bi+ci-1 = si + 2·ci si = ai bi ci-1 ci= ai bi + ai ci-1 + bi ci-1= ai bi + ci-1 (ai bi) si ci-1\ai,bi 00 01 11 10 1 ci ci-1\ai,bi 00 01 11 10 1
Odejmowanie / Subtraction (A-B) Odejmowanie bezpośrednie Direct Subtruction Kod uzupełnień do dwóch U2 Two’s Complement ai - bi-ci-1 = si - 2·ci si = ai bi ci-1 Add 1 to LSB negacja każdego bitu Invert each bit bit znaku sign bit si ci-1\ai,bi 00 01 11 10 1 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 ci ci-1\ai,bi 00 01 11 10 1 na czerwono różnica pomiędzy dodawaniem Red – difference between addition and subtruction
Ripple Carry Adders in FPGAs si= ai bi ci-1 Fragment of Virtex Configurable Logic Block (CLB)
Carry Skip Adder (CSA) (sumator z przeskokiem przeniesień) Tn= An + Bn (lub / or) Tn= An xor Bn
Carry Skip Adder Szybkość (propagation time - T) Koszt (Area – A) AT= 1/Wydajność (efficiency) m- wielkość bitowa pojedynczego bloku (width of a block)
Carry Select Adder
Altera Carry Select Adder Apex, Cyclon
Porównanie układów dodających o szerokości Comparison of Different Adders Architectures 16 bit Układ / Architecture Opóźnienie Propagation delay Koszt Area (AT)[104] Carry Look Ahead 4 7392 2.94 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 Ripple Carry 31 224 0.69 64 bity Układ /Architecture Opóźnienie Koszt (AT) [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
Dodawanie 3-wejściowe z propagacją przeniesienia 3+ input Carry Propagate Adder (CPA) S= A + B + C CPA – układ dodający np. ze skrośną propagacją przeniesienia (Ripple Carry), Carry Look Ahead, Carry Select Adder Example of Ripple Carry Adder
Dodawanie 3-wejściowe / Addition 3 Inputs Zachowywanie przeniesienia Dodawanie 3-wejściowe / Addition 3 Inputs Zachowywanie przeniesienia. Carry Save Adder (CSA) 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) Nie ma propagacji przeniesienia Bardzo szybki układ dodający przy powierzchni podobnej jak Ripple-Carry Adder
CSA – 3+ inputs 3-inputs 4-inputs 6-inputs In FPGA dedicated carry logic is available therefore CSA is not so popular as in ASIC technology
Materiały dodatkowe
Manchester Adder
Superblock of carry-skip adder
Superblock of carry-skip adder Czas propagacji
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 - Propagate Pi= AiBi - Propagate bo: - 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
Carry-lookahead adder Sumator z antycypacją przeniesień
Ripple Carry-Lookahead Adder
RCLA koszt i szybkość Koszt A Czas prop. T AT= 1/Wydajność