Projektowanie cyfrowych systemów w oparciu o układy (VLSI i) PLD Ernest Jamro Kat. Elektroniki AGH, Kraków Układy mnożące, konwolwery
Mnożenie 1 X + 9 x 11= 99
Mnożenie równoległe
Mnożenie sekwencyjne
Wallace Tree Multiplier (with Carry Save Adders) W układach FPGA nie zaleca się stosowania CSA
Szybkie mnożenie w układach FPGA 26·(2·a7 ·b + a6 ·b)
Układy mnożące w FPGA (a7 and bi) xor (a6 and bi+1) Przykład: G4 - a7 G3 - bi G2 - a6 G1 - bi+1 F4 – a7 F3 – bi-1 F2 – a6 F1 – bi Fragment of Virtex Configurable Logic Block (CLB)
Mnożenie liczb ze znakiem Reprezentacja: Znak, Moduł: Mnożenie modułów jak liczb bez znaku Znak= Znak1 XOR Znak2 Reprezentacja w kodzie uzupełnień do dwóch: Zwykła operacja mnożenia liczb dodatnich C. R. Baugh and B. A.Wooley, “A two’s complement parallel array multiplication algorithm,” IEEE Trans. Comput., vol. C-22, pp. 1045–1047, Dec. 1973.
Mnożenie w kodzie uzupełnień do 2
Układ mnożący o zredukowanej szerokości
Kompensacja błędu redukcji
Mnożenie przez stały współczynnik Zastosowanie pamięci Look Up Table (LUT) Przykład mnożenia przez stałą wartość C= 5 Adres Dana 0 0 1 5 2 10 3 15 ...
Układy z wykorzystaniem pamięci LUT: mnożenie przez stały współczynnik C Y = CA = CA(0:3) + 24 CA(4:7)
Zastosowanie różnych pamięci ROM przykład: szerokość wejściowa= 6
Bardziej skomplikowany przykład Virtex: 161, 321, 4k1, 2k2, 1k4, 5128, 25616 szerokość wejścia i współczynnika mnożącego= 14
Migracja z CLB do BRAM CLB BRAM
Koszt [CLB] dla różnych szerokości K wejścia i współczynnika mnożenia ekwiwalentny koszt 1 BSR tylko CLB, skala 1:10 liczna użytych BSR
MM (Multiplierless Multiplication) Mnożenie przez stały współczynnik Binary Representation, example B= 14= 11102 M= AB= (A<<1)+(A<<2)+(A<<3) Sub-structure Sharing (SS) example B= 27= 110112 tmp= A + (A<<1) M= AB= tmp + (tmp<<3) Canonic Sign Digit (CSD) set {0, 1, -1} (0 – no operation, 1 – addition, -1 – subtraction) example: B= 7 = 1112 B= 100-1CSD M=B·A= (A<<2) + (A<<1) + A M= (A<<3)-A
BINARNIE CSD insert symbol ‘-1’ only if the total number of operation is reduced Standard Modified
Stosowane techniki optymalizacji układów MM
The MM cost for different coefficients
Filtr FIR
Filtr FIR (sposób pośredni)
FIR 2D
Przykłady filtrów FIR 2D 1 2 4 -1 -2 1 2 1 -8 Dolno-przepustowy Sobel Laplace’a
Filtr FIR N=2 z układami mnożącymi LUT In 8 4 Adder1 Adder0 Adder2 12 13 4 18 Multiplier 1 Multiplier 2 Adder1 Adder0 Adder2 12 13 9 4 14 18 Adders Block
FIR, Arytmetyka w innej kolejności (Parallel) Distributed Arithmetic different bits of the input input coefficient
Arytmetyka Rozproszona (Distributed Arithmetic) The same input bit weight (smaller LUT widths)
Filtry FIR z liniową fazą (symetryczne: h(0)=h(N-1), h(1)=h(N-2), ...)
Przykład dzielenia wspólnej podstruktury H(z)= 5 + 13z-1 + 5z-2 = 1012 + 11012z-1 + 1012z-2 Przykład 1: A= 5 = 1012- zmienna pomocnicza H(z)= A + (1000 + A)z-1 + Az-2 Przykład 2: A= 1 + z-1 H(z)= 5A + 8z-1 + 5z-2