modele vhdl filtrw fir - kik
Transkrypt
modele vhdl filtrw fir - kik
MODELE VHDL FILTRÓW FIR PRZEZNACZONYCH DO REALIZACJI W UKŁADACH FPGA Jerzy Kaniewski, Robert Berezowski, Dariusz Gretkowski, Oleg Maslennikow i Przemysław Sołtan Politechnika Koszalińska, Wydział Elektroniki, ul. Partyzantów 17, 75-411 Koszalin, POLSKA e-mail: [email protected] Streszczenie W pracy rozpatrywane jest zagadnienie projektowania struktur macierzy procesorów (PA) dla systemów cyfrowego przetwarzania sygnałów (DSP), na przykładzie algorytmów FIR filtracji. Syntezując strukturę PA wykonującą algorytm FIR filtracji przedstawione zostały etapy proponowanej metodologii projektowania. W celu uzyskania struktury PA z pożądanymi cechami wykorzystano modyfikacje podstawowego grafu algorytmu. W rezultacie utworzona została biblioteka modelów FIR filtrów przedstawionych w języku opisu sprzętu VHDL. Porównano parametry szeregu struktur FIR filtrów wraz z różnymi strukturami jednostek mnożących. Wybrano struktury FIR filtrów charakteryzujące się wysoką wydajnością, i efektywnością działania. 1. Wstęp Realizacja licznych zadań DSP sprowadza się do rozwiązania algorytmów algebry liniowej w czasie rzeczywistym[1,3]. Algorytmy DSP, takie jak cyfrowa filtracja, transformacja Fouriera, rozwiązywanie układów liniowych, metoda najmniejszych kwadratów charakteryzują się dużą ilością obliczeń [3,4]. Stwarza to konieczność realizacji tych algorytmów w specjalnych, wysokowydajnych systemach obliczeniowych. Macierze procesorowe (PA) są przykładem tego typu struktur. Wykorzystują one regularność wielu algorytmów w celu osiągnięcia wysokiej wydajności, a dzięki znacznej ilości połączeń lokalnych nie wymagają dużej ilości wymienianej informacji poprzez układy wej/wyj. Struktury macierzy procesorowych VLSI mogą być zaimplementowane [1,2,3,4,5] w układach ASIC lub FPGA. Zastosowanie systemów DSP w FPGA ma szereg korzyści takich jak pełne przystosowanie implementowanych struktur FPGA do algorytmu, wysoka przepustowość, efektywność wykorzystania sprzętu, uzyskanie dużej dokładności obliczeń. W pracy opisane zostały podstawowe etapy proponowanej metodologii projektowania [4] struktur PA. Następnie na przykładzie algorytm filtracji FIR przedstawiono syntezę struktury PA przystosowanej do wykonywania tego algorytmu. W celu uzyskania PA z pożądanymi cechami zastosowano transformację podstawowego grafu algorytmu. Dzięki temu PA jest w znacznym stopniu zależna od parametrów filtracji (na przykład liczby współczynników filtru). Pokazano również w jaki sposób algorytmy mogą być zmodyfikowane w celu ich realizacji na macierzy procesorowej o stałych wymiarach. Modele VHDL wszystkich zaprojektowanych struktur FIR filtrów tworzą bibliotekę. Porównane zostały parametry szeregu struktur filtrów należących do tej biblioteki. W rezultacie wybrano struktury o najlepszych charakterystykach. 2. Metodologia projektowania struktur PA. Algorytmy rozpatrywane w niniejszej pracy zadane są zagnieżdżonymi pętlami z regularnymi zależnościami informacyjnymi. Takie algorytmy mogą być przedstawione [3,4,5] poprzez regularne (lub prawie regularne) grafy zależności informacyjnych lub kompozycję takich grafów. Każdy wierzchołek w grafie odpowiada pewnemu operatorowi (lub iteracji) algorytmu wejściowego i jest związany z pewnym całkowitoliczbowym wektorem K = (k1,...,kn)’, tj. wszystkie wierzchołki grafu są rozmieszczone w węzłach K pewnej całkowitoliczbowej kraty Kn ⊂ Zn. Łuki łączące wierzchołki grafu (lub inaczej zależności informacyjne algorytmu) są wtedy w sposób zwięzły reprezentowane za pomocą macierzy D zależności informacyjnych, gdzie i-ta kolumna przedstawia wektor di zależności informacyjnych. Jeśli pewien operator odpowiadający węzłowi K2 zależy ze względu na dane od innego operatora odpowiadającego węzłowi K1 , to wtedy powyższa zależność jest przedstawiana w formie różnicy di = K2 - K1 . Dla w pełni regularnych grafów zbiór otrzymanych w ten sposób wektorów będzie stały, tj. nie będzie zależeć od współrzędnych K ∈ Kn . Schematem strukturalnym C macierzy procesorowej realizującej zadany algorytm, który charakteryzuje się grafem G zależności informacyjnych, jest trójka C = <S, T, Φ>, (1) gdzie S jest zorientowanym grafem struktury (topologii) sieci, T jest funkcją synchronizacji specyfikującą momenty wykonania poszczególnych wierzchołków grafu, Φ jest zbiorem algorytmów funkcjonowania elementów przetwarzających (PE). Do odwzorowania rekursywnych algorytmów z regularnymi grafami zależności informacyjnych wykorzystuje się model liniowy. Liniowe przestrzenno-czasowe odwzorowanie F (lub po prostu ST-odwzorowanie) przekształca n-wymiarowy graf zależności informacyjnych, którego wierzchołki rozmieszczone są w węzłach K kraty Kn , zaś łuki zadawane są za pomocą macierzy D, w m-wymiarową macierz procesorową zgodnie z następującymi wyrażeniami:F : Kn → KFm+1 , F(K)= F⋅K, ∀K∈ Kn , (2) gdzie ⎡ FS ⎤ F = ⎢ ⎥ ∈ Z ( m +1) × n ⎣ FT ⎦ jest macierzą ST-odwzorowania, FS ∈ Zmxn jest macierzą odwzorowania przestrzennego (odwzorowanie przydzielające operację do elementu przetwarzającego PE), zaś FT ∈ Z1xn jest wektorem odwzorowania szeregującego. Dowolny wierzchołek o współrzędnych K∈ Kn będzie wykonywany w momencie czasu FT⋅K ∈ KT1 w elemencie przetwarzającym Fs⋅K ∈ KSm sieci, przy czym dowolny wektor d zależności informacyjnych grafu w rezultacie ST-odwzorowania przybiera następującą postać: ⎡δ S ⎤ ⎡ FS ⋅ d ⎤ F ⋅d = δ = ⎢ T⎥ = ⎢ ⎥ , ⎢⎣δ ⎥⎦ ⎣ FT ⋅ d ⎦ (3) gdzie δS i δT zadają odpowiednio współrzędne przestrzenne zorientowanego połączenia informacyjnego w sieci i dyskretne opóźnienie w przekazywaniu danych za pośrednictwem tego połączenia. Odwzorowanie F musi spełniać następujące warunki: 1. δS = FS⋅d ∈ Θm ,∀d∈ D* , gdzie Θm jest zbiorem dopuszczalnych połączeń między elementami przetwarzającymi sieci; 2. δT = FT⋅d >0 ,∀d∈ D ; 3. ∀ K1, K2 ∈ Kn (K1≠ K2 ⇒ F⋅K1 ≠ F⋅K2); 4. rank(F) = m+1. (4) Według metodologii projektowania [4] w pierwszej kolejności są ustalane wszystkie możliwe nieekwiwalentne odwzorowania przestrzenne FS(K) spełniające w/w warunki. Dla każdej uzyskanej w ten sposób topologii sieci S znajdowane jest optymalne pod względem parametrów czasowych odwzorowanie szeregujące FT(K). Odwzorowanie FT (K) jest funkcją liniową z n współczynnikami. Duże znaczenie praktyczne posiada możliwość przetwarzania regularnych algorytmów przedstawionych grafami o dużych rozmiarach na PA ze stałą liczbą PE. Dla zapewnienia takiej możliwości używane są dwie metody: lokalnie szeregowa globalnie równoległa (LSGR) i lokalnie równoległa globalnie szeregowa (LRGS). Obie metody bazują na dekompozycji grafu algorytmu informacyjnych zależności na regularne podgrafy, ale różnią się sposobem uzyskania rezultatu. W metodzie LSGR, każdemu podgrafowi odpowiada inny PE i każdy PE kolejno wykonuje węzły swojego podgrafu. W tym przypadku potrzebna jest dodatkowa wewnętrzna pamięć dla każdego PE. By uniknąć tej niedogodności, w metodzie LRGS każdy podgraf został skojarzony z całą macierzą procesorów PA. Wszystkie węzły wewnątrz podgrafu są wykonywane jednocześnie, podczas gdy wszystkie podgrafy są wykonywane kolejno. W rezultacie wszystkie pośrednie dane, które odpowiadają zależnościom danych pomiędzy podgrafami powinny być zapamiętane w buforach na zewnątrz PA. Prezentowana metodologia projektowania jest szczegółowo opisana w [4] i będzie użyta w następnym punkcie do zaprojektowania struktury FIR filtru. 3. Budowa i algorytm filtru FIR. Filtry o skończonej odpowiedzi impulsowej (FIR) są jednymi z podstawowych układów DSP. Dla danej częstotliwości odpowiedzi impulsowej FIR filtru jego rząd jest wyższy niż analogicznego IIR filtru. W ten sposób funkcjonowanie FIR filtru wymaga większej ilości obliczeń. Natomiast FIR filtry mogą być użyte w systemach wymagających liniowej fazy i charakteryzują się stabilnością. Funkcjonowanie jednowymiarowego (1-D) FIR filtru opisuje matematyczne równanie: K y[n] = ∑ a[k ] ⋅ x[n − k + 1] k =1 , gdzie x[n-k+1] jest próbką wejściową, a[k] są współczynnikami filtru i y[n] – jest próbką wyjściową, K liczbą współczynników (k=1,...,K;) a N liczbą próbek (n=1,..., N+K-1). Zależności informacyjne grafu G (rys.1 (po lewej)) algorytmu FIR filtracji przedstawione zostały w pracy [6]. Węzły grafu G są rozmieszczone w dwuwymiarowej tablicy Q1={K=(n,k): 1 ≤ k ≤ K, k ≤ n ≤ N+k }. Zauważ, że każdy węzeł odpowiada wykonywanej operacji mnożenia z dodawaniem. W ten sposób graf G przedstawia realizację algorytmu FIR filtru na poziomie słów. Zależności informacyjne danych (łuki) pomiędzy węzłami grafu są reprezentowane przez trzy różne wektory d1, d2 i d3 które tworzą macierz D zależności informacyjnych algorytmu. ⎡1 0 1⎤ n D = d1 , d 2 , d 3 = ⎢ ⎥ ⎣1 1 0⎦ k [ ] , gdzie wektory d1 = [1,1], d2 = [0,1] i d3 = [1,0] odpowiadają wektorom informacyjnych zależności zmiennych x[n-k+1], a[k] i y[n] pomiędzy węzłami grafu. Wymiar algorytmu grafu na poziomie słów jest równy n=2. Metodologia projektowania [4] pozwala na syntezę struktur PA FIR filtrów o wymiarze m=0,1 lub 2. yK n y2 y1 x1 y(K+2) ... yN y(N+1) y(N+2) a3 y3 . ...................................... Y . . . y3 PE3 a2 x2 y(N+K-1) PEK aK k a1 y(K+1) PE2 x3 x4 x5 x6 . . . xN PE1 y2 y1 X Rys.1. Zależności informacyjne grafu FIR filtru i jednowymiarowa struktura filtru. Jedną z możliwych struktur jednowymiarowych jest struktura S1 pokazana na rysunku rys.1 (po prawej). Struktura odpowiada rzutowi wzdłuż osi n i składa się z K PE, jednego wejściowego i jednego wyjściowy kanału wymiany informacji. Czas filtracji przy dużej liczbie próbek w przybliżeniu wynosi T=N taktów. Każdy PE zawiera układ mnożący, sumator i cztery rejestry. Wadami struktury S1 jest względnie wysoka liczba rejestrów w PE. Do uzyskania jednowymiarowej struktury filtru z minimalną liczbą kanałów wej/wyj, rejestrów PE oraz stałą ich liczbą p < K/2 PE, należy dokonać transformacji grafu, a następnie jego dekompozycji na podgrafy. Transformacja polega na zmianie kierunku wektora d3 = [1,0] na przeciwny i połączeniu w pary sąsiednich węzłów grafu (patrz rys.1). W wyniku uzyskano zmodyfikowany graf G*( rys.2 po lewej stronie) podzielony na grupę s=]K/2p [ podgrafów mających tę samą topologię, gdzie ]q[ oznacza najbliższą liczbę całkowitą równą lub większą od q. Linie równoległe do osi n dekomponują graf G* na s regularnych podgrafów. k* a7, a8 a5,a6 n a3,a4 PE2 a1,a2 x1 y1 x2 y2 x3 y3 x4 x5 y4 y5 x6 PE1 ... xN y6 ... yN X F I F O Y Rys.2. Zmodyfikowany graf G* jednowymiarowego algorytmu filtracji ( K=8) i struktura PA o stałej liczbie PE. Struktura PA FIR filtru S2 przedstawiona została na rys.2 po stronie prawej, gdzie FIFO oznacza zewnętrzny blok pamięci FIFO. Całkowity czas T przetwarzania algorytmu FIR filtracji jest równy T = s ⋅ ( N + K − 1) taktów przy maksymalnej wydajności PA. Wewnętrzną strukturę dla k*-tego PE przedstawiono na Rys. 3, gdzie RG oznacza rejestr, SM sumator, a MUL układ mnożący zbudowany na układach pamięci ROM. Yout Yin RG SM SM ai Xin MUL MUL RG ai+1 Xout Rys. 3. Wewnętrzna struktura PE filtru S2. Metodologia projektowania [4] pozwala na syntezę struktur PA o „zerowym” wymiarze (m=0) (tj. zawierających tylko jeden PE). Przykładami takich struktur są struktury S3 i S4 przedstawione na rys.4 i 5, gdzie FIFO (q) określa blok pamięci zawierający q komórek. coefficients a(k) Input X(n) RG Coefficients FIFO a(k) (K) FIFO (K ) MUL FIFO (K-1) Output RG Y SM MX MUL Input X RG FIFO (K-1) Rys. 4. Struktura S3 jednoprocesorowego filtru PA. SM RG Output Y RG Rys. 5. Struktura S4 jednoprocesorowego filtru PA. Przewagą struktury filtru S3 jest minimalny czas opóźnienia, który jest równy jednemu taktowi, podczas gdy przewagą struktury S4 jest mniejszy rozmiar. (mniejsza liczba komórek bloku FIFO (K1)). Częstotliwość na wejściu X i wyjściu Y przetwarzania próbek jest równa f/K, gdzie f jest wewnętrzną częstotliwością taktowania. Struktura FIR filtru realizującego algorytm na poziomie bitów została przedstawiona na rys. 6. Składa się ona z K układów mnożąco-sumujących MU oraz bloków FIFO (Xdelay, Ddelay, Ydelay). Pojedynczy blok MU zawiera jednorodną matrycę komórek przedstawionych na rys.7, Cin Xin Ain & IN Yin Xdelay Ddelay Ddelay … Ddelay SM D D D Cout Xout Yout Out MU MU … MU MU Ydelay Rys. 6. Struktura S5 PA realizującego FIR filtrację na poziomie bitów. Rys. 7. Wewnętrzna struktura pojedynczej komórki zawartej w matrycy tych komórek w bloku MU. gdzie „&” określa blok wykonujący operację AND, SM - jednobitowy sumator, a D - przerzutniki. 4. Biblioteka parametryzowanych struktur FIR filtrów. Wykorzystując zaproponowaną w [4] metodę uzyskano różne struktury FIR filtrów. Biblioteka zawiera parametryzowane, syntezowalne w układach FPGA struktury FIR filtrów napisane w języku VHDL. Struktury są parametryzowane w zakresie: - liczba współczynników K= 2,3,...,32; - liczba bitów próbek wejściowych Lx=4,6,...,16; - liczba bitów współczynnika La=4,6,...,32. Wszystkie modele struktur filtrów zostały testowane przy pomocy pakietu Xilinx Foundation 2.1i. Struktura filtru NSSDA (niesymetrycznego) zbudowana jest z czterech bloków (rys.8): - Bloku rejestrów przesuwnych - rejestry przesuwne na wejściu układu składają się z K rejestrów po Lx bitów każdy. Próbka wejściowa ładowana do pierwszego rejestru jest następnie co takt przesuwana w stronę mniej znaczących bitów, a bity opuszczające rejestr są zapisywane jako najbardziej znaczące kolejnego rejestru. Najmniej znaczące bity co takt przekazywane są do kolejnego bloku - ROMu; - Bloku układów ROM – zawiera tablice (wykorzystujące look-up tables (LUTs) w układach FPGA), gdzie są zgrupowane wszystkie możliwe sumy współczynników. Ze względu na logarytmiczny wzrost wielkości takiej tablicy w miarę wzrostu liczby współczynników, tworzy się więcej tablic zawierających kombinacje sum maksymalnie 4 współczynników. Wyjście poprzedniego bloku tworzy charakterystyczny adres, który pozwala wybrać odpowiednie komórki z poszczególnych tablic do dalszych obliczeń. - Bloku sumatorów – Blok ten dodany został ze względu na duże rozmiary tablic znajdujących się w poprzednim bloku. Jeżeli tablice te zawierają kombinacje maksymalnie 4 współczynników to blok sumatorów dodaje poszczególne wartości z różnych tablic. - Bloku sumatora z przesuwem bitów – Blok ten sumuje poszczególne próbki ustalając również „wagę” danej próbki (bity z wyjścia są przesyłane na wejście z mnożnikiem 0.5). Rys. 8. Struktura filtru SDA niesymetrycznego dla K=Lx=Lk=8 (NSSDA) Podobne bloki zawiera struktura filtru symetrycznego. Dochodzi tutaj dodatkowy blok pomiędzy blokiem rejestrów przesuwnych a ROM’em. Są to dodatkowe sumatory, które wykorzystują symetrie współczynników filtru. Struktura filtru NSPDA (niesymetrycznego) przedstawiona jest na rys.11: Filtr się składa z: - Bloku rejestrów – rejestry RG w liczbie K-1 tworzą kolejkę FIFO. Próbka wejściowa ładowana do rejestru jest następnie co takt przekazywana do kolejnego rejestru; - Bloku układów mnożących – układy mnożące MUL zawierają tablice (wykorzystujące look-up tables (LUTs) w układach FPGA), gdzie są zgrupowane wszystkie możliwe sumy współczynników. Wyjście poprzedniego bloku tworzy charakterystyczny adres, który pozwala wybrać odpowiednie komórki z poszczególnych tablic do dalszych obliczeń. In 15 (k=1,...,K) RG 8 7 12 11 4 3 k 0 ROM1 ROM2 ROM3 ROM4 SM SM RG RG SM RG Out Rys.9. Struktura wewnętrzna układu mnożącego zbudowana na bazie tablic ROM. - Bloku sumatorów (rys.10) – Blok ten zbudowany w postaci drzewa sumatorów SM dokonuje sumowania poszczególnych próbek. Drzewo posiada kilka poziomów sumatorów zależnych od liczby współczynników, która wynosi ]Log n[, gdzie n określa liczbę wejść drzewa (dla filtru niesymetrycznego n=K). DATA_OUT DRZEWO SUMATORÓW SM SM MUL SM SM SM SM SM DATA_IN MUL RG MUL RG MUL MUL RG Rys.11. Struktura filtru NSPDA Rys. 10. Przykład drzewa sumatorów dla K=8. Podobne bloki zawiera struktura filtru symetrycznego przedstawiona na rys. 12. Dochodzi tutaj dodatkowy jednopoziomowy blok sumatorów pomiędzy blokiem rejestrów RG a układami mnożącymi MUL. Są to dodatkowe sumatory, które wykorzystują symetrię współczynników filtru. Układy mnożące MUL i drzewo sumatorów SM posiadają taką samą budowę. DATA_OUT DRZEWO SUMATORÓW DATA_IN MUL MUL MUL SM SM SM RG RG RG MUL SM RG RG Rys.12. Struktura filtru SPDA (symetrycznego). Filtry SPDA i NSPDA zbudowane z wykorzystaniem drzewa sumatorów w porównaniu ze strukturą S2 charakteryzują się na mniejszą liczbą poziomów sumatorów.. Uzyskane wyniki modeli dla parametrów Lx=La=16 i K=8 umieszczono w Tablicy 1. W odpowiednich kolumnach tablicy 1 podano liczbę użytych bloków logicznych CLB (configurable logical block) układu FPGA oraz maksymalnej częstotliwości. Tablica.1. Porównanie wyników modeli FIR filtrów zrealizowanych w układach FPGA. Struktury S2 S4 S5 S6 NSSDA SSDA NSPDA SPDA CLB 513 130 1687 44 70 62 530 334 MHz 68,76 38,6 111,9 72,8 69,35 71,44 86,81 82,1 5. Podsumowanie. Realizacja FIR filtrów w układach FPGA posiada szereg zalet. Zapewnia pełną adaptację struktury filtru do realizowanego algorytmu co gwarantuje wysoką wydajność, częstotliwość funkcjonowania i dużą dokładność obliczeń. Z tych powodów autorzy na przykładzie FIR filtrów zaproponowali metodę projektowania wysokowydajnych układów realizowanych następnie w układach reprogramowalnych. W rezultacie utworzona została biblioteka modeli parametryzowanych struktur FIR filtrów opisanych w języku VHDL i przeznaczonych do systemów DSP zbudowanych na bazie układów FPGA. Porównane zostały parametry modeli wszystkich zaprojektowanych filtrów i wybrane optymalne do realizacji w układach FPGA. Literatura [1]. J. Isoaho, J. Pasawn, O. Vaino, H. Terhunen. DSP System Integration and Prototyping With FPGAs. J. VLSI Signal Processing, 1993, ą 6, p. 155-172. [2]. The Synthesis Approach to Digital System Design / Ed.: P. Michel, U. Lauther, P. Duzy. Kluwer Academic Pub. 1992. [3]. Kung S.Y. VLSI processor arrays. Prentice Hall, Englewood Cliffs, 1988. [4]. Wyrzykowski R., Kanevski J.S., Maslennikov O. Mapping recursive algorithms into processor arrays. Proc. Int. Workshop „Parallel Numerics'94”, M.Vajtersic and P.Zinterhof eds., Smolenice, (Slovakia), 1994, pp.169-191. [5]. Moreno J.H., Lang T. Matrix computations on systolic-type arrays. Kluwer Acad.Publ., Boston, 1992. [6]. Wyrzykowski R., Kanevski Ju.S., Maslennikov O.V., Maslennikova N.N. A Method for Deriving Dependence Graphs of Recursive Algorithms for Processor Array Design, Proc. Int.Workshop "Parallel Numerics'95" Sorrento, Italy, 1995, p.263-280.