Programowanie Układów Logicznych kod kursu: ETD6203 Specjalizowane architektury do obliczeń DSP W10 8.05.2019 mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec
Plan wykładu Cyfrowe przetwarzanie sygnałów - wprowadzenie FPGA a DSP Dedykowane jednostki obliczeniowe w FPGA Mnożenie w układach programowalnych Podsumowanie przykładowe pytania 2
Cyfrowe przetwarzanie sygnału filtracja FIR (SOI) filtracja IIR (NOI) N 1 y(n) = b i x(n i) i=0 N 1 M y(n) = b i x n i + a j y(n j) i=0 j=1 4 transformacja Fouriera (DFT) funkcja korelacji wzajemnej N 1 X(k) = x(i)e j 2π N ik R x,y = 1 N i=0 N 1 i=0 x(i)y(i + m) Charakterystyczne jest to, że wszystkie te obliczenia posiadają postać: N 1 A = x n y n = x 1 y 1 + x 2 y 2 + + x N y N n=0
Podstawowa operacje DSP - MAC - Multiply and Accumulate MAC - podstawowa operacja w cyfrowym przetwarzaniu sygnałów składa się z operacji mnożenia i dodawania, realizowana w procesorach DSP jako jednostka obliczeniowa dane wejściowe algorytm iteracyjny REJESTR Jednostka MAC Sekwencyjna struktura filtru FIR dane wyjściowe 5 Filtr FIR 256 rzędu = 256 operacji mnóż i akumuluj (MAC) na pojedynczą próbkę danych
Reprezentacja liczb Stałoprzecinkowa bez znaku, ze znakiem. Zmiennoprzecinkowa pojedynczej precyzji, podwójnej precyzji, rozszerzonej precyzji. 6
Zapis stałoprzecinkowy Zapis stałoprzecinkowy zakłada określenie ile bitów tworzy część całkowitą liczby, a ile część ułamkową. Przecinek jest zatem umieszczany w stałym dla danego formatu miejscu 1 1010,11001 (2) = 2 3 + 2 1 + 2-1 + 2-2 + 2-5 = 8 + 2 + 1 / 2 + 1 / 4 + 1 / 32 = 10 25 / 32 7 2 1010,11001 (2) waga ostatniej pozycji: W=2-5 = 1 / 32 C=10 (10) U=25 (10) C, U*W
Zapis liczbowy w standardzie IEEE 754 Standard for Binary Floating-Point Arithmetic Zapis zmiennoprzecinkowy (ang. floating point number) zwany jest również notacją wykładniczą. Wartość liczby zmiennoprzecinkowej jest obliczana według wzoru: x = S 1 M B E 8 gdzie: S bit znaku, E wykładnik, eksponent lub cecha, M mantysa, moduł ułamka, B podstawa systemu liczbowego.
Zapis liczbowy w standardzie IEEE 754 Standard for Binary Floating-Point Arithmetic Rozmiar liczby Wykładnik E Moduł ułamka M Nazwa 32 8 23 single 64 11 52 double 128 16 111 extended 9
Zapis zmiennoprzecinkowy - zadanie Załóżmy, że liczba zapisana jest na 8 pozycjach: 4 najstarsze przeznaczone są na zapis cechy w kodzie U2, pozostałe 4 na zapis mantysy w kodzie U2, mantysa jest liczbą stałoprzecinkową z dwoma miejscami po przecinku CECHA MANTYSA b7 b6 b5 b4 b3 b2 b1 b0 Oblicz wartość dziesiętną liczby zmiennoprzecinkowej 11110101 (FP) E = 1111 (U2) = -8+4+2+1 = -1 (10) M = 01,01 (U2) = 1+ ¼ = 5 / 4 x = S 1 M B E 10 x (LP) = 5 / 4 * 2-1 = 5 / 4 * 1 / 2 = 5 / 8 (10)
Arytmetyka stałoprzecinkowa format Q W technice DSP sygnały często opisuje się za pomocą liczb z zakresu <-1,1>. W wyniku operacji mnożenia nigdy nie dojdzie do przepełnienia. Sposób ten oznacza się Q i liczbą, która określa liczbę bitów przeznaczoną na zapis wartości występującej po przecinku. Np. Q15 oznacza, że 1 bit przeznaczony jest na określenie znaku liczby oraz 15 bitów określa wartość po przecinku. W tym formacie nie ma możliwości przedstawienia liczby całkowitej. Przecinek jest zawsze w tym samym miejscu. znak S 1 S 2 S 3 S 4 S Q Dla 8-bitów: liczby z zakresu: od -0,9921875 do +0,9921875 kwant liczbowy: 0,0078125
Procesor DSP logika FPGA Procesor DSP Zrównoleglone przetwarzanie w FPGA 12 Stała nieelastyczna architektura - typowo 1-8 jednostki MAC - stała szerokość danych Przetwarzanie sekwencyjne ogranicza przepustowość - współdzielone w czasie jednostki MAC, - duże częstotliwości taktowania stawiają duże wyzwania projektantom systemów. Możliwość realizacji setek przekształceń MAC w obrębie jednego układu FPGA Przetwarzanie równoległe umożliwia dużą przepustowość
Miary wydajności MIPS - Million Instructions Per Second (Liczba milionów operacji wykonywanych w ciągu sekundy), MMAC - Million Multiply Accumulate Operations Per Second (Liczba milionów operacji typu "pomnóż i dodaj"), MSPS - Mega-Samples Per Second (Liczba milionów próbek na sekundę), 13 Dla układów FPGA nie podaje się wydajności w MIPS. Jej zdefiniowanie dla FPGA jako całości jest niemożliwe, gdyż zależy ściśle od danego projektu. Wydajność MMAC może zostać zwiększona dzięki wykorzystaniu zasobów logicznych oraz rejestrów układu FPGA.
Zapotrzebowanie na wydajność 14 * Source: Jan Rabaey, BWRC
Realizacja FIR - ang. Finite Impulse Response filter FIR filter Filtr cyfrowy FIR (SOI) brak sprzężenia zwrotnego wielokrotne operacja dodawania wielokrotne operacja mnożenia Y (n) = rząd filtru i=n-1 k i X (n-i) i=0 współczynniki filtru opóźnienie współczynnik X (n) k 0 Z -1 k 1 X (n-1) X (n-2) X (n-3) X (n-n) Z -1 Z -1 Z -1 k 2 k 3 k N-1 sumowanie N razy mnożenie mnożenie 15 Y (n) sumowanie
FIR DSP vs FPGA Procesor DSP - praca sekwencyjna FPGA w pełni równoległy algorytm przetwarzania wejście wejście Reg Reg Reg Reg współczynniki wymagane 3960 cykli zegara X + Reg wyjście pojedyncza jednostka MAC C0 X C1 C0 X 3960 operacji w jednym cyklu zegarowym C2 X + wyjście C3 X C3960 X 1.2 GHz 3960 cykli zeg. = 303 KSPS 600 MHz 1 cykl zeg. = 600 MSPS 16
Realizacja operacji MAC równoległa równoległo - szeregowa szeregowa SZYBKOŚĆ ROZMIAR, ZASOBY 17
Rozwiązania wielokanałowe Zrównoleglenie operacji umożliwia sprawną i szybką realizację wielokanałową, W niskoczęstotliwościowych rozwiązaniach wielokanałowych multipleksowane wejście zapewnia oszczędność zasobów i energii 18
Wielozadaniowa rodzina Spartan 3 19 Spartan-3A DSP DSP Optimized For applications where integrated DSP MACs and expanded memory are required Ideal for designs requiring low cost FPGAs for signal processing applications such as military radio, surveillance cameras, medical imaging, etc. Spartan-3AN Non-volatile For applications where non-volatile, system integration, security, large user flash are required Ideal for space-critical or secure applications as well as low cost embedded controllers Spartan-3A I/O Optimized For applications where I/O count and capabilities matter more than logic density Ideal for bridging, differential signaling and memory interfacing applications, requiring wide or multiple interfaces and modest processing Spartan-3E Logic Optimized For applications where logic densities matter more than I/O count Ideal for logic integration, DSP co-processing and embedded control, requiring significant processing and narrow or few interfaces Spartan-3 For Highest Density and Pin-Count Applications For applications where both high logic density and high I/O count are important Ideal for highly-integrated data-processing applications
Zasoby rodziny Xilinx 20 DSP48A DSP48 DSP48E
Zasoby rodziny Xilinx Rosnące zasoby logiczne oraz dedykowane bloki powoduję wzrost wydajności sprzętowej układów FPGA GMAC 10 9 operacji mnożenia i akumulacji 21
Blok DSP w układach Xilinx - DSP48A1 22 Uproszczona budowa modułu DSP48A1: dwu wejściowy blok dodawania 18 x 18 bit mnożnik 36 bitów lub 48 dla reprezentacji znakowej dwu wejściowy blok dodawania po operacji mnożenia dynamiczny tryb pracy możliwość zwiększenia wydajności przetwarzania potokowego
porty wejściowe wyjście Blok DSP w układach Xilinx - DSP48A1, SPARTAN 3A sumowanie mnożenie sumowanie 18 18 18 48 48 48 23
porty wejściowe wyjście Blok DSP w układach Xilinx - DSP48A1, SPARTAN 3A 18 18 18 48 48 48 24 opmode[7:0] rejestr sterujący wyborem operacji arytmetycznych oraz selekcją sygnałów
porty wejściowe wyjście Blok DSP w układach Xilinx - DSP48A1, SPARTAN 3A A C B 18 18 18 48 48 48 A B C 25 Kaskadowe połączenie wielu bloków DSP: BCIN -> BCOUT, PCIN -> PCOUT, CARRYIN -> CARRYOUT
porty wejściowe wyjście Blok DSP w układach Xilinx - OPMODE [7 : 0] bity sterujące bloku DSP 18 18 18 48 48 48 26 opmode[7:0] rejestr sterujący wyborem operacji arytmetycznych oraz selekcją sygnałów http://www.xilinx.com/support/documentation/user_guides/ug431.pdf
Blok DSP w układach Xilinx - OPMODE + lista operacji Pełna lista oferuje 31 operacji arytmetycznych 27
Blok DSP w układach Xilinx - primitive lub CoreGenerator Rejestry wejściowe Wyjścia do połączeń kaskadowych Rejestr sterujący OPMODE Wejścia zerujące Wejście zezwalające na użycie zegara CLK dla rejestrów wejściowych 28
DSP48E1 SLICE 29 Blok DSP48E1 struktura kolumnowa, unikanie opóźnień czasowych, sumowanie, mnożenie, akumulacja jednostka ALU, niezależny dostęp do bloków mnożących, wykrywanie sekwencji, wzorów, operacje logiczne, zaokrąglenie symetryczne, częstotliwość pracy f MAX =638 MHz, zużycie mocy 1,38 mw/100 MHz.
DSP48E1 SLICE - jednostka arytmetyczno logiczna ALU Operacja logiczne OPMODE[3:2] ALUMODE[3:0] X XOR Z 00 0100 X XNOR Z 00 0101 X XNOR Z 00 0110 X XOR Z 00 0111 X AND Z 00 1100 X AND (NOT Z) 00 1101 X NAND Z 00 1110 (NOT X) OR Z 00 1111 X XNOR Z 10 0100 X XOR Z 10 0101 30 ALUMODE Operacje arytmetyczne X XOR Z 10 0110 0000 Z + X + Y + CIN X XNOR Z 10 0111 0001 -Z + (X + Y + CIN) 1 X OR Z 10 1100 0010 -Z X Y CIN 1 X OR (NOT Z) 10 1101 0011 Z (X + Y + CIN) X NOR Z 10 1110 Others Logic Operations (NOT X) AND Z 10 1111 http://www.xilinx.com/support/documentation/user_guides/ug479_7series_dsp48e1.pdf
DSP48E1 SLICE - detektor wzorca Detektor wzorca: detekcja wg. zadanego wzorca, dynamiczne porównanie 2 wejść, detekcja przepełnienia, przeprowadzenie operacji zaokrąglania, 31 http://www.xilinx.com/support/documentation/user_guides/ug193.pdf
DSP48E1 SLICE - SIMD Single Instruction Multiple Data SIMD jednoczesne przetwarzanie wielu strumieni danych istnieje wiele algorytmów, które wymagają takich samych, powtarzalnych operacji na pokaźnych objętościowo danych, 48-bitowy sumator/subtraktor/akumulator może być podzielony do wykonywania operacji na mniejszych segmentach danych 2 x 24 bity lub 4 x 12 bitów 32 http://www.xilinx.com/support/documentation/user_guides/ug479_7series_dsp48e1.pdf
DSP SLICE Xilinx- podsumowanie DSP48 mnożnik 18 x 18, magistrale kaskadowe 48 - bitowy sumator/akumulator DSP48A mnożnik 18 x 18, dodawanie przed mnożeniem, 48 - bitowy sumator/akumulator 33 DSP48E najbardziej zaawansowana architektura, mnożnik 25 x 18, większa precyzja jednostka ALU, detektor wzorca, wsparcie dla SIMD
34 IP Core Generator
Mnożenie w układach programowalnych: operacje dodawania i mnożenia są podstawą algorytmów obliczania wartości innych złożonych funkcji matematycznych oraz przetwarzania sygnałów, pełne mnożenie dwóch argumentów n-bitowych daje rezultat o szerokości 2n bitów, mnożenie realizowane jest w dedykowanych blokach multiplikatorów w trosce o zasoby stosuje się mnożenie rozproszone, w większości przypadków stosuje się mnożenie o skróconej szerokości gdzie dodatkowe n najmłodszych bitów wyniku jest odrzucane: zalety: redukcja zajmowanych zasobów układu FPGA wady: zwiększony błąd obliczeń, błąd obcięcia 35 Kluczem do maksymalizacji wydajności i obniżenia mocy jest korzystanie z dedykowanych zasobów sprzętowych przy realizacji operacji arytmetycznych
Tradycyjne mnożenie Operacja mnożenia jest jedną z podstawowych operacji arytmetycznych i dlatego liczba zasobów sprzętowych zajmowanych przez układy mnożące ma bardzo duże znaczenie. 1 0 0 1 X 1 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 + 1 0 0 1 1 1 0 0 0 1 1 9 x 11= 99 36
Mnożenie równoległe (o skróconej szerokości) - ang. parallel-array multiplier c k s l-1 & + a i b j c k-1 2 c k +s l = =s l-1 +(a i b j )+c k-1 & a 3 & a 2 & a 1 & a 0 b 0 s l & + & + & + & + b 1 Pominięta część logiki & + & + & + & + b 2 & + & + & + & + b 3 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 37 Układ mnożący równoległy dla n=4, n szerokość bitowa argumentów wej.
Mnożenie w LUT - mnożenie przez stały współczynnik adres LUT dana Przykład funkcji: y = 5*x adres dana 0 0 1 5 2 10 3 15 Dla L bitowego argumentu i K bitowego współczynnika mnożenia wymagana jest pamięć o rozmiarze: (L + K) 2 L 38 16384 komórki dla L=8, K=8
Mnożenie w LUT - mnożenie przez stały współczynnik wejście 8 4 4 Lepszym rozwiązaniem jest zastosowanie kombinacji małych pamięci LUT i układów dodających. LUT B LUT A 12 12 8 sumator 12 16 wyjście 4 Y = 2 4 B A bity 7-4 + B A bity 3-0 Przykład układu mnożącego dla szerokości argumentu L=8 i szerokości współczynnika mnożącego K=8 39
Literatura uzupełniająca http://www.xilinx.com/support/documentation/user_guides/ug431.pdf http://www.xilinx.com/support/documentation/user_guides/ug331.pdf http://www.xilinx.com/support/documentation/user_guides/ug479_7series _DSP48E1.pdf http://www.xilinx.com/support/documentation/user_guides/ug193.pdf http://www.xilinx.com/support/documentation/user_guides/ug579- ultrascale-dsp.pdf http://www.xilinx.com/support/documentation/user_guides/ug479_7series _DSP48E1.pdf http://www.mvd-fpga.com/cores/en/files/publications_08.pdf 40
Przykładowe pytania 1. Operacje stało i zmiennoprzecinkowe 2. Znaczenie bloków DSP 3. Różnice w blokach DSP w układach firmy Xilinx 4. Operacje realizowane przez bloki DSP 5. Mnożenie przez stałą wartość - realizacja 6. Działanie filtru FIR 7. Miary wydajności układów cyfrowych, procesorowych 8. Realizacja mnożenia w układach programowalnych 41