250 likes | 554 Views
Wykład 1: Technika DSP Wstęp. PG – Katedra Systemów Mikroelektronicznych ZASTOSOWANIE PROCESORÓW SYGNAŁOWYCH Dr inż.. Marek Wroński Tel. 347 20 19 email; wrona@eti.pg.gda.pl Materiały: www.ue.eti.pg.gda.pl/~wrona/. Cel, rozkład zajęć, treść przedmiotu.
E N D
Wykład 1: Technika DSP Wstęp PG – Katedra Systemów Mikroelektronicznych ZASTOSOWANIE PROCESORÓW SYGNAŁOWYCH Dr inż.. Marek Wroński Tel. 347 20 19 email; wrona@eti.pg.gda.pl Materiały: www.ue.eti.pg.gda.pl/~wrona/
Cel, rozkład zajęć, treść przedmiotu Cel: Zapoznanie się z zastosowaniami procesorów sygnałowych we współczesnych systemach elektronicznych (praktyczne programowanie PS ADSP 21161N). Godziny zajęć tygodniowo (W C L P): 1 – 1 1 Sposób zaliczenia: lab., wykonanie projektu (*1/2) i zdanie egzaminu (*1/2). Treść: Porównanie technik analogowych i cyfrowych, architektura ADSP 21161N Stosowane arytmetyki, MAC, potokowe przetwarzanie danych. Skoki z opóźnieniem, operacje równoległe, specjalne metody adresacji. Organizacja pamięci i układów we/wy. Środowisko uruchomieniowe i programowe Visual DSP++ v.4.0. Język asemblera. Zastosowanie PS w adaptacyjnych systemach cyfrowych wykorzystywanych do rozwiązywania praktycznych problemów: predykcji, eliminacji zakłóceń, korekcji i identyfikacji parametrów.Systemy multimedialne: metody kompresji i przetwarzania sygnałów mowy, redukcja szumów i zakłóceń. Przetwarzanie obrazów (parametry ruchu). Aplikacje PS w układach sterowania i w systemach pomiarowych. Algorytmy i wybrane aplikacje PS w telekomunikacji przewodowej i bezprzewodowej: budowa modemów i faksów, systemy transmisji szerokopasmowej, modulacje i demodulacje, kodowanie i korekcja błędów. Architektura i struktura sieci GSM. Efektywne gospodarowanie zasobami widmowymi: hopping, sterowanie mocą, kodowanie mowy, przeplot, modulacja. GPRS, EDGE i UMTS: architektura, usługi, zabezpieczenia, realizacje. Laboratoria: FIRy stało- i zmiennoprzecinkowe i wykorzystujące SIMD, DFT, DTMF itp.. na 1-sze przeczytać: Wprowadzenie do Visual DSP++, Pierwsze kroki, Instrukcja ADSP-21161
Zalety i ograniczenia techniki DSP • Zalety przetwarzania sygnałów w sposób cyfrowy: • precyzja i przewidywalność • stabilność (brak zjawiska dryftu temperaturowego i starzenia się elementów) • reprogramowalność • prostsza konstrukcja sprzętowa projektu • koszt projektu w niewielkim stopniu zależy od złożoności algorytmu przetwarzania • skrócenie czasu „od projektu do gotowego wyrobu” (prostsza procedura testowania) • kontrola nad poziomem szumu wprowadzanym w trakcie przetwarzania sygnału • Ograniczenia: • ograniczone pasmo (szybkość próbkowania) • ograniczony zakres dynamiczny • szum kwantyzacji • błędy zaokrągleń
Różnice pomiędzy DSP a standardowym procesorem • Równoległe mnożenie z akumulacją wykonywane w jednym cyklu, • Generatory adresu ze specjalnymi trybami, • Wydajny zestaw instrukcji z jedno-cyklowymi równoległymi operacjami matematycznymi i przestrzenią w pamięci oraz sprawną realizacją pętli, • Zintegrowany wewnętrzny koprocesor DMA i RAM dla jednoczesnych operacji wykonywanych przez CPU i układy we/wy Podział procesorów DSP • Stałoprzecinkowe (szybsze ,tańsze i pobierają mniej mocy) • Zmiennoprzecinkowe (większa dynamika i stosunek sygnał/szum) • 16,32,64 bitowe (wg wymaganej precyzji obliczeń) • Różne formaty liczb
DSP - Zastosowania • Telekomunikacja: kompresja dźwięku i obrazu, redukcja pogłosu, komutacja,filtrowanie (telefonia komórkowa – generacje 2.5G, 3G – UMTS, CDMA2000, 4G) • Wojsko: radary i sonary, szyfrowanie, nawigacja, GPS – Global Positioning Satellite • Medycyna: analiza i przetwarzanie obrazów EKG, rezonansu jądrowego MRI i tomografii PET..,składanie danych medycznych – kompresja • Przemysł kosmiczny: wyostrzanie zdjęć, kompresja danych, analiza sygnałów z czujników • Przemysł: poszukiwania złóż ropy i minerałów, monitoring i sterowanie procesami, przeprowadzanie testów, projektowanie – CAD • Zastosowania komercyjne: multimedia, wizualne efekty specjalne, wideo konferencje, GPS • Nauka: nagrywanie i analiza wstrząsów ziemi, gromadzenie danych, analiza spekteralna, symulacje i modelowanie, sterowanie w czasie rzeczywistym
Przykład zastosowania DSP w układach przetwarzania sygnałów mowy w trybie on-line (pasmo 300-3200 Hz, częstotliwość próbkowania 8 kHz, kwantyzacja 8-bit tj. modulacja PCM (64 kbit/s) W tym czasie możliwe są implementacje na DSP bardzo skomplikowanych i złożonych obliczeniowo algorytmów kompresji mowy (np. LPC-10), filtracji adaptacyjnej (np. LMS, RLS) albo w przypadku wysyłania sygnału w kanał telekomunikacyjny – wyszukanych algorytmów modulacji cyfrowej czy kompensacji zniekształceń nieliniow.
Koncepcja nowej architektury • Architektura vin Neumanna. (optym dla prostych operacji z danymi) • Architektura harwardzka (możliwy jednoczesny dostęp do obu pamięci) • Architektura superharwardzka (poza podwójną pamięcią Cache instrukcjidla danych typu instrukcja-adres i DMA z pominięciem rejestrów )
Konfiguracja DSP • Oprócz wersji „okrojonych”, wersje procesorów z dodatkowymi elementy dla różnorodnych zastosowań, a także niezbędne narzędzia
Superskalarność • Podobnie jak RISC (ang. Reduced Instruction Set Computers) procesory DSP korzystają z instrukcji o stałej długości (zazwyczaj jednego słowa). W takiej koncepcji możliwe jest przetwarzanie potokowe, a także minimalizacja odwołań do pamięci w celu poboru instrukcji (każda instrukcja może być pobrana tylko w jednym cyklu). • Superskalarność procesora oznacza, że dzięki specjalnie zaprojektowanemu zbiorowi instrukcji - jakimi on operuje, może wiele z nich wykonywać w jednym cyklu zegara równocześnie w sposób równoległy (np. osiem w jednym cyklu zegara). Oznacza to, że zegar procesora może być taktowany z prędkością 200MHz, a dysponować prędkością obliczeń 1600MIPS. Przykładem takiej instrukcji jest instrukcja mac, wykonująca równolegle operacje mnożenia i dodawania, a także dodatkowo jeszcze cztery inne operacje indeksujące.
Typowe operacje CPS - filtracja FIR - filtracja IIR - transformacja Fouriera - funkcja korelacji wzajemnej Charakterystyczne jest to, że wszystkie te obliczenia posiadają postać: Składają się z mnożeń połączonych z akumulacją (MAC – Multiply and ACcumulate), które w procesorach sygnałowych dokonywane są w jednym cyklu jego pracy.
Bufory cyrkularne Zasada działania operacji MAC opiera się na sprzętowych rozwiązaniach gwarantujących optymalizację wykonywanych przez nie zadań (tzn. mnożenia i jednoczesnej akumulacji) poprzez specjalnie zaprojektowane układy adresujące pamięć DAGs (ang. Data Address Generatorors) oraz odpowiednie towarzyszące im zbiory rejestrów indeksujących. Wykorzystują one tryb pracy polegający na organizowaniu pamięci w bufory adresowanie w sposób cykliczny.„Przesunięcie” dokonywane jest tylko poprzez modyfikację stosownych rejestrów wskazujących ich odpowiednią kolejność. Dodatkowo układy DAGs posiadają możliwość adresowania polegającą na bitowym odwracaniu adresów (ang. Bit Reverse Addressing). Własność ta jest szczególnie przydatna w przypadku obliczeń korzystających z algorytmów szybkiej transformacji Fouriera (FFT).
Algorytm demonstrujący zasadę działania instrukcji MAC (po pobraniu próbek z ADC i przesunięciu do bufora kołowego). Zademonstrowany jest również sprzętowo działający licznik programu (operacje w pętli wykonywane w 1 cyklu). Schemat blokowy układu DSP, który dzięki odpowiednio zaprojektowanej i zarządzanej architekturze umożliwia sprawne wykonywanie operacji MAC Instrukcja MAC
Polega ono na wykorzystaniu cykli pracy procesora podobnie do cykli pracy linii montażowej w fabryce (górny rys. bez tego mechanizmu) Kolejność wykonywania instrukcji w potoku. Instrukcje 4 i 5 występują za instrukcją 3 i z tego powodu zostaną uwzględnione w przetwarzaniu potokowym. Dodatkowo, w przypadku gdyby programista nie uwzględnił mechanizmu przetwarzania potokowego, a instrukcje 4 i 5 zawierałyby odwołania konfliktowe względem głównego nurtu programu – to ich niekontrolowane wykonanie mogłoby prowadzić do nieokreślonych błędnych konsekwencji Przetwarzanie potokowe (pipelining) W jednym cyklu pracy procesor pobiera instrukcję, dekoduje instrukcje pobraną w poprzednim cyklu oraz wykonuje instrukcje pobrana dwa cykle wcześniej. Proces taki trwa w sposób ciągły
Implementacja FIRa (rzędu 4) Współczynniki są pobierane jednocześnie z danymi wejściowymi (najpierw najstarsza dana i ostatni współczynnik zapisany w pamięci w odwrotnej kolejności jeśli DAG jest dekrementowany)
Projektowanie górno- i pasmowo-przepustowych oraz pasmowo-zaporowych FIRów
Zmiana szybkości próbkowania poprzez decymację i interpolację (Multirate Filters)
Algorytm adaptacyjnej filtracji LMS/RLS • Filtracja adaptacyjna polega na nieustannym dostrajaniu się układu filtrującego do zmiennych warunków pracy, to jest zmiennego w czasie charakteru zakłócenia, które dany układ ma za zadanie eliminować.Najpopularniejszym algorytmem wykorzystywanym w filtracji adaptacyjnej jest algorytm LMS (Least Mean Square). W algorytmie LMS strukturą dokonującą zasadniczej filtracji jest filtr o skończonej odpowiedzi impulsowej FIR).Zasada jego działania polega na przechowywaniu w rejestrze przesuwnym odpowiedniego wektora zarejestrowanych w danym odcinku czasu próbek, które następnie wymnażane są przez stosowne współczynniki „h” i sumowane. Współczynniki filtru FIR nie są stałe, są one zmienne w czasie i dostrajają się tak, aby sygnał y(n) dążył do osiągnięcia stanu, w którym byłby on odpowiednikiem zakłócenia znajdującego się w sygnale d(n). Po operacji odjęcia go od tego sygnału w sygnale błędu e(n) powinna znaleźć się w miarę „czysta” mowa kierowcy. Z każdą mowo zarejestrowaną próbką do aktualnych wartości wektora „h” dodawana jest pewna korekta wyliczona przez algorytm LMS. np.DH=b Sign[e(n)] x(n-k)
// Inicjalizacja DAC’ów wskazujących lokalizację buforów cyrkularnych kolejnych próbek i współczynników 1. RZAD_FILTRU 2. wej_linia[RZAD_FILTRU] 3. wspolczynniki[RZAD_FILTRU] 4. inicjalizacja_DAG: 5. b0=wej_linia; //adres bazowy 6. l0=@wej_linia; //długość linii 7. m0=1; //modyfikator 8. b8=wspolczynniki; 9. l8=@wspolczynniki; 10. m8=1; //praca procesora w nieskończonej pętli, oczekując na przerwanie z AD1836 11. wait: 12. idle; 13. jump wait; 14. nop; 15. nop; //właściwa procedura obsługi przerwania 16. probka_gotowa_FIR: 17. jump algorytm_LMS; 18. nop; 19. nop; 20. procedura_filtracji: 21. r0=dm(Mikrofon kierowcy); //pobieranie próbek 22. r0=lshift r0 by 16; 23. r1=-31; 24. f0=float r0 by r1;//konwersja na l.zmiennoprzecinkową 25. dm(i0,m0)=f0; 26. f12=0;//właściwa filtracja FIR.zerowanie akumulatora 27. f2=dm(i0,m0), f4=pm(i8,m8);//indeks i0; post-modify 28. f8=f2*f4, f2=dm(i0,m0), f4=pm(i8,m8); //ustawienie licznika pętli: 29. lcntr=RZAD_FILTRU –2, do (pc,1) until lce; 30. f8=f2*f4, f12=f8+f12, f2=dm(i0,m0), f4=pm(i8,m8); 31. f8=f2*f4, f12=f8+f12; 32. f12=f8+f12; 33. r1=31; 34. r8=fix f12 by r1; //konwersja na stały przecinek 35. r8=lshift r8 by –16; 36. rti(db); //powrót z przerwania – Delayed branch 37. dm(Lewy_Kanal)=r8; 38. dm(Prawy_Kanal)=r8; 39. algorytm_LMS:pobiernie próbek z mikrofonu 40. …odniesienia, przekształcenie na zmienny przecinek i umieszczenie w buforze cyrkularnym 41. jump procedura_filtracji; 42. nop; 43. nop; Praktyczna implementacja dla SHARK’a 21161
Idea operacji SIMD • Operacje SIMD (Single-Instruction Multiple-Data) poprawiają wydajność procesora przy przetwarzaniu danych poprzez “rozbicie” dużych danych (zajmujących cały rejestr) znajdujących się w specjalnych rejestrach, na ich mniejsze odpowiedniki (zajmujące dwie połówki rejestru). Dzięki temu możliwe jest zwielokrotnienie działania tej samej operacji na równoległe przetwarzanie dwóch danych znajdujących się w tym samym rejestrze. Szczególną zaletą tej techniki jest możliwość zwielokrotnienia działania tych samych algorytmów na dwa równoległe kanały przetwarzania danych.
FIR (równolegle 2 kanały) wykorzystujący SIMD #define FILTER_TAPS 67 // ilość współczynników filtru #define DOUBLE_FILTER_TAPS 132 // podwójna ilość współczynników filtru dla operacji SIMD .segment /dm seg_dmda; .ALIGN 2; .VAR dline [DOUBLE_FILTER_TAPS]; // wejściowa linia opóźniająca o podwójnej długości w stosunku .endseg; // do ilości współczynników filtra FIR, wymagana w operacjach SIMD segment /pm seg_pmda; .ALIGN 2; .VAR coef_bp_800Hz[FILTER_TAPS] = "Filter_BP_2000_67.dat"; // definicja współczynników filtru FIR .endseg; init_fir_filter: // inicjalizacja rejestrów procesora b0 = dline; // inicjalizacja DAGS l0 = @dline; // wskaźnik do wejściowej linii opóźniającej m1 = 2; // co ile będzie się zmieniał wskaźnik b8 = coef_bp_800Hz; // inicjalizacja DAGS l8 = @coef_bp_800Hz; // wskaźnik do współczynników filtra FIR m8 = 1; // co ile będzie się zmieniał wskaźnik i3=dline; // inicjalizacja DAGS (w celu wyzerowania linii opóxniającej) l3=@dline; // wskaźnik do wejściowej linii opóźniającej r12=r12 xor r12; // zerowanie rejestrów r12 oraz niejawnie ich odpowiednika f12 lcntr=FILTER_TAPS, do clear until lce; // czyszczenie wejściowej linii opóźniającej clear: dm(i3,2)=f12; rts; // powrót z procedury filtracji init_fir_filter init_fir_filter.end:
fir: // procedura filtracji FIR r2 = -31; r0 = DM(_Left_Channel_In); // pobranie próbek z lewego i prawego kanału układu AD1881 r1 = DM(_Right_Channel_In); f0 = float r0 by r2 ; // konwersja próbek z formatu stałoprzecinkowego na zmiennoprzecinkowy f1 = float r1 by r2 ; do_filtering: dm(i0,m1)=f0 (LW); r12=r12 xor r12; // zerowanie rejestrów r12 (niejawnie f12) f8=pass f12, f0=dm(i0,m1), f4=pm(i8,m8); // czyszczenie f8, pobieranie danych i współczynników lcntr=FILTER_TAPS-1, do macloop until lce; // właściwa pętla dokonująca filtracji macloop: f12=f0*f4, f8=f8+f12, f0=dm(i0,m1), f4=pm(i8,m8); f12=f0*f4, f8=f8+f12; // dokonanie ostatniego mnożenia oraz akumulacji wyniku f8=f8+f12; r9 = s8; r1 = 31; // konwersja próbek z formatu zmiennoprzecinkowego na stałoprzecinkowy r8 = fix f8 by r1; r9 = fix f9 by r1; DM(_Left_Channel_Out) = r8; // przesłanie wyników filtracji do AD1881 DM(_Right_Channel_Out) = r9; rts; // powrót z procedury filtracji fir fir.end: