FPGA IMPLEMENTATION OF FAST FOURIER TRANSFORM ALGORITHM IMPLEMENTACJA ALGORYTMU SZYBKIEJ TRANSFORMATY FOURIERA W UKŁADZIE PROGRAMOWALNYM FPGA

Podobne dokumenty
IMPLEMENTATION OF THE SPECTRUM ANALYZER ON MICROCONTROLLER WITH ARM7 CORE IMPLEMENTACJA ANALIZATORA WIDMA NA MIKROKONTROLERZE Z RDZENIEM ARM7

Systemy na Chipie. Robert Czerwiński

Współczesne techniki informacyjne

ZASTOSOWANIA UKŁADÓW FPGA W ALGORYTMACH WYLICZENIOWYCH APPLICATIONS OF FPGAS IN ENUMERATION ALGORITHMS

Parametryzacja przetworników analogowocyfrowych

Układy logiczne układy cyfrowe

dr inż. Artur Zieliński Katedra Elektrochemii, Korozji i Inżynierii Materiałowej Wydział Chemiczny PG pokój 311

Przekształcenie Fouriera i splot

Transformata Fouriera. Sylwia Kołoda Magdalena Pacek Krzysztof Kolago

Zastowowanie transformacji Fouriera w cyfrowym przetwarzaniu sygnałów

Teoria przetwarzania A/C i C/A.

THE ANALIZER EXCEEDED PERMISSIBLE LEVELS OF HARMONICS IN THE SUPPLY CURRENT TRACTION VEHICLE

9. Dyskretna transformata Fouriera algorytm FFT

Adam Korzeniewski - p. 732 dr inż. Grzegorz Szwoch - p. 732 dr inż.

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Procesory Sygnałowe Digital Signal Processors. Elektrotechnika II Stopień Ogólnoakademicki

AKADEMIA MORSKA KATEDRA NAWIGACJI TECHNICZEJ

PL B1. Sposób i układ pomiaru całkowitego współczynnika odkształcenia THD sygnałów elektrycznych w systemach zasilających

Układy logiczne układy cyfrowe

Przetworniki cyfrowo analogowe oraz analogowo - cyfrowe

Problemy implementacji algorytmów FFT w strukturach FPGA 1)

Technika audio część 2

Budowa komputera Komputer computer computare

Cyfrowe Przetwarzanie Obrazów i Sygnałów

Andrzej Leśnicki Laboratorium CPS Ćwiczenie 6 1/8 ĆWICZENIE 6. Dyskretne przekształcenie Fouriera DFT

Przykładowe pytania DSP 1

FFT i dyskretny splot. Aplikacje w DSP

PL B1. UNIWERSYTET ŁÓDZKI, Łódź, PL BUP 15/13

Badanie właściwości wysokorozdzielczych przetworników analogowo-cyfrowych w systemie programowalnym FPGA. Autor: Daniel Słowik

STANOWISKO LABORATORYJNE DO CYFROWEGO PRZETWARZANIA SYGNAŁÓW Z WYKORZYSTANIEM ŚROWODOWISKA MATLAB ORAZ PLATFORMY PROGRAMISTYCZNEJ.

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Projekt zespołowy. Część1: Projekt potokowej jednostki przetwarzającej przeznaczonej do realizacji algorytmu FFT. Rok akademicki 2008/2009

WZMACNIACZE OPERACYJNE Instrukcja do zajęć laboratoryjnych

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Teoria sygnałów Signal Theory. Elektrotechnika I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Laboratorium Komputerowe Systemy Pomiarowe

DYSKRETNE PRZEKSZTAŁCENIE FOURIERA C.D.

LEKCJA TEMAT: Zasada działania komputera.

PAMIĘĆ RAM. Rysunek 1. Blokowy schemat pamięci

Statyczne badanie wzmacniacza operacyjnego - ćwiczenie 7

WPROWADZENIE Mikrosterownik mikrokontrolery

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami

Przedmowa Wykaz oznaczeń Wykaz skrótów 1. Sygnały i ich parametry Pojęcia podstawowe Klasyfikacja sygnałów

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 3

Ćwiczenie 4: Próbkowanie sygnałów

Programowanie Układów Logicznych kod kursu: ETD6203. Szczegóły realizacji projektu indywidualnego W dr inż.

Przetwarzanie sygnałów z zastosowaniem procesorów sygnałowych - opis przedmiotu

CYFROWE PRZTWARZANIE SYGNAŁÓW (Zastosowanie transformacji Fouriera)

Andrzej Leśnicki Laboratorium CPS Ćwiczenie 7 1/7 ĆWICZENIE 7. Splot liniowy i kołowy sygnałów

Transformacja Fouriera i biblioteka CUFFT 3.0

2. Próbkowanie Sygnały okresowe (16). Trygonometryczny szereg Fouriera (17). Częstotliwość Nyquista (20).

Podstawy Przetwarzania Sygnałów

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Wzmacniacz operacyjny

Opracował: Jan Front

WZMACNIACZ OPERACYJNY

Ćwiczenie 3. Właściwości przekształcenia Fouriera

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

Metody optymalizacji soft-procesorów NIOS

Język opisu sprzętu VHDL

PROGRAMOWALNE STEROWNIKI LOGICZNE

Temat: Pamięci. Programowalne struktury logiczne.

SYMULACJA KOMPUTEROWA SYSTEMÓW

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Dyskretne przekształcenie Fouriera cz. 2

CYFROWE PRZETWARZANIE SYGNAŁÓW

POLITECHNIKA OPOLSKA

Ćw. 7: Układy sekwencyjne

Badanie właściwości skramblera samosynchronizującego

Transformata Fouriera

Sprawdzian test egzaminacyjny 2 GRUPA I

Państwowa Wyższa Szkoła Zawodowa

Systemy Czasu Rzeczywistego FPGA

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

ELEMENTY AUTOMATYKI PRACA W PROGRAMIE SIMULINK 2013

a) dolno przepustowa; b) górno przepustowa; c) pasmowo przepustowa; d) pasmowo - zaporowa.

Opis przedmiotu zamówienia CZĘŚĆ 1

DYSKRETNA TRANSFORMACJA FOURIERA

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Systemy Czasu Rzeczywistego FPGA

Cechy karty dzwiękowej

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

Generator przebiegów pomiarowych Ex-GPP2

Ćwiczenie 27 Temat: Układy komparatorów oraz układy sumujące i odejmujące i układy sumatorów połówkowych i pełnych. Cel ćwiczenia

Szybkie przekształcenie Fouriera

Instrukcja do ćwiczenia : Matryca komutacyjna

Większe możliwości dzięki LabVIEW 2009: programowanie równoległe, technologie bezprzewodowe i funkcje matematyczne w systemach czasu rzeczywistego

3. Przetwarzanie analogowo-cyfrowe i cyfrowo-analogowe... 43

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Projekt z przedmiotu Systemy akwizycji i przesyłania informacji. Temat pracy: Licznik binarny zliczający do 10.

Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych

Egzamin / zaliczenie na ocenę*

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

2. STRUKTURA RADIOFONICZNYCH SYGNAŁÓW CYFROWYCH

Budowa i zasada działania komputera. dr Artur Bartoszewski

Regulator PID w sterownikach programowalnych GE Fanuc

Ćwiczenie 31 Temat: Analogowe układy multiplekserów i demultiplekserów. Układ jednostki arytmetyczno-logicznej (ALU).

Materiały pomocnicze do ćwiczeń z podstaw techniki cyfrowej (przygotował R.Walkowiak) Dla studiów niestacjonarnych rok AK 2017/18

Transkrypt:

Inż. Arkadiusz Pantoł IV rok Koło Naukowe Techniki Cyfrowej dr inż. Wojciech Mysiński opiekun naukowy FPGA IMPLEMENTATION OF FAST FOURIER TRANSFORM ALGORITHM IMPLEMENTACJA ALGORYTMU SZYBKIEJ TRANSFORMATY FOURIERA W UKŁADZIE PROGRAMOWALNYM FPGA Keywords: FPGA, DSP, FFT, Xilinx, zynq, digital electronics Słowa kluczowe: FPGA, DSP, FFT, Xilinx, zynq, elektronika cyfrowa A b s t r a c t The most efficient way to create an FFT processor is to implement it in programmable structure, because FPGA s can execute multiple operations in one clock cycle everything depends on implementation method. This article describes method of implementation of the most important digital signal processing algorithm Fast Fourier Transform in Zynq SoC device.. Wstęp.. Szybka transformata Fouriera Transformata Fouriera umożliwia dekompozycję badanego sygnału okresowego ciągłego na N sygnałów sinusoidalnych (lub kosinusoidalnych) o różnych amplitudach oraz częstotliwościach. Przyporządkowując częstotliwościom konkretne amplitudy w układzie współrzędnych amplituda częstotliwość uzyskuje się reprezentację sygnału okresowego w dziedzinie częstotliwości. Transformata Fouriera dla sygnałów ciągłych okresowych dana jest wzorem: Niestety niemożliwe jest zaimplementowanie powyższej formuły w układzie cyfrowym. Powyższe wyrażenie realizuje transformatę Fouriera od minus do plus nieskończoności. Rozmiary pamięci RAM (służące do przechowywania próbek sygnału badanego) są wartościami skończonymi, co oznacza że pamięci te mogą przechowywać maksymalnie N próbek sygnału. Dlatego też klasyczna transformata Fouriera nie może zostać wykorzystana do analizy sygnałów cyfrowych. Rozwiązaniem tego problemu jest dyskretna transformata Fouriera - DFT, w której definiowany jest rozmiar transformaty. Poniżej przedstawiono formułę wyrażającą rezultat transformaty dyskretnej:

Gdzie. DFT najczęściej realizowane jest w postaci skończonej pętli po N próbkach sygnału, w której realizowane są operacje mnożenia oraz sumowania liczb zespolonych. Niestety taki sposób realizacji wiąże się z długim czasem wykonywania operacji DFT. Szybszą odmianą DFT jest szybka transformata Fouriera (FFT Fast Fourier Transform). Algorytm ten dzieli dużą transformatę na wiele mniejszych transformat, przez co wzór nie jest realizowany wprost. W pierwszym etapie FFT, N punktowy sygnał w dziedzinie czasu przetwarzany jest na N pojedynczych punktów w dziedzinie częstotliwości. Realizowane jest to przy pomocy inwersji bitowej, która zamienia kolejność bitów poszczególnych próbek. Aby z tych pojedynczych próbek uzyskać ciągłe widmo częstotliwościowe należy powtórzyć ten proces, cofając się krok po kroku. W drugą stronę niestety niemożliwe jest zastosowanie inwersji bitowej. W tym celu wykorzystuje się tzw. struktury motylkowe... Informacje dotyczące użytego układu scalonego Do realizacji założeń projektowych wykorzystano płytę prototypową, firmy Digilent z układem Zynq 7000. Poniżej podano podstawowe parametry użytego układu scalonego: dwa rdzenie 3 bitowe, typu ARM Cortex A9, maksymalna częstotliwość taktowania rdzenia 650MHz, maksymalna częstotliwość pracy układu FPGA 450MHz, 4400 makrokomórek, każda z sześciowejściową tablicą LUT, 80 makrokomórek DSP, Wbudowany przetwornik analogowo cyfrowy.3. Podstawowe informacje dotyczące realizowanego algorytmu W strukturze programowalnej zaimplementowana została 04 punktowa transformata typu Radix-4, która wymaga mniejszej liczby etapów niż standardowa wersja algorytmu FFT (Radix). Liczba etapów wyrażona jest wzorem, gdzie N to rozmiar transformaty. W tym przypadku algorytm wymagał będzie pięciu etapów. W celu zaoszczędzenia cennych zasobów układu FPGA (w głównej mierze elementów DSP48E) zdecydowano się zaimplementować architekturę typu SPDF (single-path delay feedback), w której próbki wejściowe ładowane i przetwarzane są szeregowo, co sprawia, iż na każdy etap przypadają dwie struktury motylkowe () oraz jeden moduł sumująco-mnożący (). Pomimo tego, że dane ładowane są szeregowo wiele operacji mnożenia oraz sumowania jest wykonywane równolegle, co sprawia, że implementacja tego algorytmu ma w dalszym ciągu przewagę nad tradycyjną realizacją DFT.

. Architektura procesora FFT.. Struktura modułu FFT Jak już wcześniej wspomniano struktura zbudowanego procesora FFT podzielona została na pięć etapów, z tym że każdy etap składa się z dwóch struktur motylkowych () oraz jednego modułu (sumująco-mnożący). Każdy moduł wyposażony jest w dwie pamięci ROM, przechowujące wartości funkcji sinus oraz inus, odpowiednio przemnażane przez próbki wejściowe. Struktura systemu przedstawiona jest na poniższym rysunku: Etap Etap Etap 3 N = 5 N = 56 N = 8 N = 64 N = 3 N = 6 7 8 sin 8 9 0 sin 6 0 sin kontroler sin 3 4 4 5 6 N = 8 N = 4 N = N = mag moduł Etap 4 Etap 5 Rys.. Struktura zaimplementowanego procesora FFT w strukturze FPGA Ze względu na to, że w układach cyfrowych niemożliwe jest bezpośrednie działanie na liczbach zespolonych zdecydowano się na osobne przetwarzanie zarówno części rzeczywistej jak i urojonej. Ułatwia to późniejsze operacje na wyjściowej liczbie zespolonej (przykładowo obliczanie modułu, przesunięcia fazowego itp..) Na każdym etapie przetwarzania po operacjach sumowania oraz mnożenia, wielkości wyjściowe są skalowane oraz zaokrąglane, dlatego też długości bitowe słów wyjściowych nie przekraczają 3 bitów. W strukturze procesora znajduje się także moduł kontrolera, który w odpowiedni sposób przełącza połączenia w modułach oraz generuje adres dla pamięci ROM przechowującej wartości funkcji sinus oraz kosinus. Do zaprojektowania wszystkich modułów wykorzystano język SystemVerilog. Całość systemu jest parametryzowana, co pozwala na wykorzystanie każdego modułu wielokrotnie, w różnych konfiguracjach (różne długości słów wejściowych oraz wyjściowych).

.. Moduł Nazwa modułu została zaczerpnięta z języka angielskiego Multiply and Accumulate. Moduł ten odpowiedzialny jest za przemnażanie próbek wejściowych przez odpowiednie wartości funkcji sinus i inus oraz zsumowanie rezultatów. Realizuje on poniższą operację: Gdzie to wartości funkcji sinus oraz inus na poszczególnych etapach FFT. Zostały one zapisane na stałe w pamięciach ROM, po uprzednim wygenerowaniu tych wartości w programie Matlab. Poniżej przedstawiono strukturę modułu mnożąco sumującego: ROM ROM sin A*sin(x) A B*(x) Asin(x)+B(x) i = 0 B B*sin(x) A(x)-Bsin(x) i = A*(x) Rys.. Struktura zaprojektowanej jednostki Moduł ten odpowiedzialny jest za mnożenie dwóch liczb zespolonych. Ze względu na to, że części składowe liczb zespolonych przetwarzane są przy pomocy osobnych ścieżek należało wykorzystać cztery elementy mnożące oraz dwa sumatory. Aby zwiększyć maksymalną dopuszczalną częstotliwość sygnału zegarowego dla tego modułu wykorzystano technikę pipeliningu, która polega na umieszczaniu elementów opóźniających na wejściach i wyjściach układów arytmetycznych. Rys. 3. Zastosowanie techniki pipeliningu, niebieskie prostokąty to elementy opóźniające

Odpowiednie zastosowanie pipeliningu skutkuje tym, że elementy arytmetyczne podczas syntezy umieszczone zostają w bloku DSP48E (w układach Zynq), który może pracować przy maksymalnej częstotliwości sygnału zegarowego. Ponieważ mnożenie liczby M bitowej przez liczbę N bitową daje w rezultacie liczbę (M+N) bitową wartości wyjściowe były odpowiednio skalowane oraz zaokrąglane..3. Struktury motylkowe Aby możliwe było przejście z dziedziny czasu do dziedziny częstotliwości należało stworzyć moduły realizujące działanie motylka FFT. Strukturę jednego z modułów przedstawiono na poniższym rysunku: mux4 Re{P} P_re mux3 Im{P} P_im mux Re{A} RAM mux Im{A} RAM STEROWANIE Rys. 4. Struktura modułu Widoczne na rysunku przełączniki (multipleksery) są sterowane przy pomocy modułu kontrolera. Przez pierwsze N/ cykli sygnału zegarowego przełączniki ustawione są w pozycji 0, co sprawia że próbki wejściowe są bezpośrednio kierowane w stronę pamięci RAM, pełniącej rolę rejestru przesuwnego. W kolejnym kroku układ sterujący zmienia pozycję przełączników na przeciwną. Po tym przełączeniu obliczana jest dwupunktowa transformata z próbek przechowywanych w pamięci RAM oraz z próbek wejściowych (operacje sumowania i odejmowania). Część próbek wyjściowych przekierowywana jest do modułu, natomiast reszta jest przetwarzana dalej (pamięć RAM i układy sumująco odejmujące). Wartość opóźnienia N dla każdego etapu jest inna, co zostało wyraźnie zaznaczone na rysunku.

3. Podsumowanie Zaprojektowany moduł procesora FFT działa prawidłowo, co odnotowano w symulacji funkcjonalnej modułu (w programie Modelsim). Na wejściach modułu wygenerowano wartości funkcji sinus oraz inus, po czym na wyjściach zaobserwowano prążki pojawiające się w kolejnych odstępach czasu. Rys. 5. Symulacja funkcjonalna modułu FFT, część rzeczywista: sinus, część urojona: inus. W wyniku syntezy uzyskano szczegółowe informacje dotyczące zużycia zasobów wykorzystanego układu programowalnego, z czego najważniejszą informacją było zużycie bloków DSP. W zaprojektowanym układzie zużycie to było na poziomie 4 bloków DSP. Maksymalna częstotliwość sygnału zegarowego mogącego taktować zbudowany procesor FFT wynosi ok. 400MHz. Obecnie trwają prace nad zwiększeniem tej częstotliwości. Zaprojektowany moduł z powodzeniem można zastosować w układach pomiarowych, przykładowo do budowy analizatora widma. Ze względu na bogate wyposażenie płyty prototypowej z układem Zynq 700 możliwe jest także rozbudowanie takiego analizatora widma o dodatkowe interfejsy typu USB, Ethernet, co w dzisiejszych czasach jest powszechnie stosowanym zabiegiem. Literatura [] http://www.xilinx.com/support/documentation/sw_manuals/xilinx4_7/ug873-zynq-ctt.pdf [] https://www.digilentinc.com/data/products/zybo/zybo_rm_b_v6.pdf [3] http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-973- communication-system-design-spring-006/lecture-notes/lecture_0.pdf [4] E. Wold and Alvin M. Despain "Pipeline and Parallel-Pipeline FFT Processors for VLSI Implementations," IEEE Trans. Computers vol. 33, no. 5, pp. 44-46, 984 [5] http://www.xilinx.com/support/documentation/user_guides/ug479_7series_dsp48e.pdf