Seminarium dyplomowe. akustycznych w oparciu o procesor wielordzeniowy. Promotor: dr inż. Krzysztof Czyż

Podobne dokumenty
2. Arytmetyka procesorów 16-bitowych stałoprzecinkowych

Teoria przetwarzania A/C i C/A.

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

Podstawy programowania w języku C i C++

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Przykładowe pytania DSP 1

Praca dyplomowa magisterska

Technologie Informacyjne

1.Wstęp W ćwiczeniu bada się zestaw głośnikowy oraz mikrofon pomiarowy z wykorzystaniem sekwencji MLS opis w załącznikui skrypcie- [1].oraz poz.

Arytmetyka binarna - wykład 6

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }

Arytmetyka stało i zmiennoprzecinkowa

Metody optymalizacji soft-procesorów NIOS

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Programowanie Niskopoziomowe

Politechnika Śląska Wydział Automatyki, Elektroniki i Informatyki Instytut Automatyki PRACA MAGISTERSKA

Kurs Zaawansowany S7. Spis treści. Dzień 1

Podstawy Informatyki

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Aplikacja dla eksperymentu identyfikacyjnego z wykorzystaniem układu PAIO. Wykonał : Marcin Cichorowski Prowadzenie : dr inż.

Python wstęp do programowania dla użytkowników WCSS

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Cechy karty dzwiękowej

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

PROCESORY SYGNAŁOWE - LABORATORIUM. Ćwiczenie nr 04

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Naturalny kod binarny (NKB)

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

Komputerowe systemy pomiarowe. Podstawowe elementy sprzętowe elektronicznych układów pomiarowych

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Zapis liczb binarnych ze znakiem

CoDeSys 3 programowanie w języku drabinkowym LD

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

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

AKADEMIA MORSKA KATEDRA NAWIGACJI TECHNICZEJ

Podstawy i języki programowania

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Arytmetyka liczb binarnych

Wprowadzenie do programowania na procesorze sygnałowym

Wykład I: Kodowanie liczb w systemach binarnych. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

dr inż. Jarosław Forenc

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Kryptografia na procesorach wielordzeniowych

C++ wprowadzanie zmiennych

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Przetwornik analogowo-cyfrowy

1 Wprowadzenie do algorytmiki

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

OPIS PRZEDMIOTU ZAMÓWIENIA

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Rejestratory Sił, Naprężeń.

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

PRZEWODNIK PO PRZEDMIOCIE

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Generator przebiegów pomiarowych Ex-GPP2

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

FAQ: /PL Data: 09/06/2012. Zastosowanie zmiennych Raw Data Type WinCC v7.0

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Biblioteka: sound. RGui. Podstawowe funkcje do działań na plikach.wav i próbkach dźwięku. Autor biblioteki: Matthias Heymann

Adam Korzeniewski p Katedra Systemów Multimedialnych

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

Podstawy Przetwarzania Sygnałów

Teoretyczne Podstawy Informatyki

Technologie informacyjne - wykład 12 -

Techniki multimedialne

Modelowanie procesów współbieżnych

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Architektura komputerów

Cyfrowy rejestrator parametrów lotu dla bezzałogowych statków powietrznych. Autor: Tomasz Gluziński

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Regulator PID w sterownikach programowalnych GE Fanuc

1 Podstawy c++ w pigułce.

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Generowanie sygnałów na DSP

Analizator wydajności AMD CodeAnalyst

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 4. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Lista Rozkazów: Język komputera

Transkrypt:

Seminarium dyplomowe Przetwarzanie Temat pracy: sygnałów akustycznych w oparciu o procesor wielordzeniowy Promotor: dr inż. Krzysztof Czyż

Plan prezentacji: Dygresja dotycząca układu z filtrowaniem osobnych kanałów Synchronizacja rdzeni instrukcje oraz ich wykorzystanie Arytmetyka stałoprzecinkowa i jej zastosowanie Identyfikacja odpowiedzi impulsowej

Filtrowanie osobnych kanałów L F l Kanały wejściowe: lewy i prawy R F r

Filtrowanie osobnych kanałów Problem filtracji osobnych kanałów na osobnych rdzeniach w powyższym przypadku nie wprowadza praktycznie żadnych komplikacji (poza synchronizacją w czasie) w stosunku do standardowego filtrowania dźwięku stereo na pojedynczym procesorze. Na dowód tego można przedstawić różnicę z punktu widzenia programistycznego:

Filtrowanie osobnych kanałów Zaimplementowana na jednym rdzeniu sekwencja: ichannel1leftout = przetw(ichannel1leftin); ichannel1rightout = przetw(ichannel1rightin); Wymaga jedynie umieszczenia próbek w pamięci do której oba rdzenie mają swobodny dostęp (bądź zadeklarowanie ich jako zmienne globalne) oraz przeklejenia instrukcj ichannel1rightout = przetw(ichannel1rightin); do kodu dedykowanego dla rdzenia drugiego. Jedynym problemem, który może tu wystąpić jest brak synchronizacji próbek sygnału na wyjściu spowodowany dedykowaniem jednego z rdzeni do obsługi przerwań sprzętowych oraz obsługą przez oba rdzenie mechanizmów wymiany informacji między sobą, o czym w dalszej części prezentacji.

Filtrowanie osobnych kanałów L F l Mikrofon Kanały wejściowe: lewy i prawy Sprzężenie skrośne R F r Mikrofon

Filtrowanie osobnych kanałów Mikrofon L F l - F rl F lr R F r - Mikrofon

Synchronizacja filtracji Kanał lewy Sygnał wejściowy Kanał prawy Może zdarzyć się, że: t t rdzeń A rdzeń B Należy więc zadbać o jakąś wymianę informacji pomiędzy rdzeniami tak, by próbki przetworzone przez nie docierały do odbiorcy z takim samym (możliwie jak najmniejszym) opóźnieniem. t t t

Synchronizacja Filtracji Wymiana informacji między rdzeniami możliwa jest w bardzo prosty sposób: wystarczy zadeklarować globalną flagę (lub kilka flag), którą oba rdzenie będą zmieniać w zależności od sytuacji, która aktualnie ma miejsce. Tu pojawia się problem: jak zapewnić obu rdzeniom dostęp do tego samego miejsca w pamięci układu tak, by uniknąć ewentualnych konfliktów? Tutaj z pomocą programiście przychodzi instrukcja TESTSET

Instrukcja TESTSET TESTSET jest atomiczną instrukcją która ładuje pośrednio zaadresowany bajt pamięci, sprawdza, czy jest on równy 0 a następnie ustawia najbardziej znaczący bit tego bajtu. Jeśli bajt jest pierwotnie niezerowy, TESTSET ustawia bit CC (Condition Code Flag), jeśli był zerem, czyści bit CC. W bibliotekach ADI dla C/C++ instrukcja ta używana jest w 3 funkcjach: adi_acquire_lock, adi_release_lock, adi_try_lock

Instrukcja TESTSET Aby skorzystać z tych funkcji należy zadeklarować wskaźnik do obiektu typu testeset_t. Działanie funkcji: adi_acquire_lock(*testset_t) funkcja ta cyklicznie próbuje uzyskać możliwość zablokowania obszaru pamięci, sprawdzając bajt będący obiektem w/w typu adi_release_lock(*testset_t) jest to funkcja odblokowująca flagę dostępu do danego obszaru adi_try_lock(*testset_t) funkcja dokonująca jednorazowego sprawdzenia, czy obszar jest dostępny w danej chwili. Jako jedyna z 3 powyższych funkcja ta zwraca wartość (typu bool).

Instrukcja TESTSET Przykład wykorzystania praktycznego: ichannel0rightin = irxbuffer1[internal_adc_r0]; adi_acquire_lock(jt); rdzeń B przyszlo=true; adi_release_lock(jt); rdzeń A if (przyszlo==true) { adi_acquire_lock(jt); przyszlo=false; adi_release_lock(jt); liczba=ichannel0rightin;

ADSP BF-561 Blackfin jest procesorem stałoprzecinkowym, więc wskazane jest przeprowadzanie wszelkich operacji arytmetycznych właśnie na typach stałoprzecinkowych. W tym celu producent wyposażył kompilator w zestaw gotowych funkcji arytmetycznych oraz specjalne typy zmiennych, których wykożystanie zapewnia maksymalną wydajność aplikacji.

Typy fract16 oraz fract32 Zakres wartości obu tych typów mieści się w przedziale <-1,1) Tak reprezentowane są liczby obu tych typów w pamięci

Typy fract16 oraz fract32 Kompilator C/C++ VisualDSP++ posiada wbudowane funkcje służące do wykonywania operacji matematycznych na tych typach, jak również funkcje służące do konwersji wartości z typu float na typ fract16 lub fract32. Dla języka C należy użyć specjalnych funkcji arytmetycznych aby zapewnić poprawne obliczenia na zmiennych tych typów. Dla C++ zdefiniowane są klasy w których zaimplementowane jest przeładowanie standardowych operatorów arytmetycznych.

Typy fract16 oraz fract32 Funkcje arytmetyczne dla typów stałoprzecinkowych na przykładzie fract32: ADI dostarcza dwa zestawy funkcji wbudowanych: zestaw podstawowy obejmuje takie funkcje jak: dodawanie, odejmowanie, mnożenie, shiftowanie, negacja bitowa itp. ETSI Lib podobnie jak powyżej, z tym, że niektóre funkcje połączone są w jedną całość (np. MAC) i użytkownik sam dba o ewentualne skutki nasycenia lub przeniesienia (rejestr ASTAT)

Typy fract16 oraz fract32 Przykład wykorzystania funkcji bibliotecznych dla algorytmu FIR w dziedzinie czasu: wartosc=add_fr1x32(wartosc,(mult_fr1x32(fr16 _tofr32(wspol[iletegoi]),probki[ind2]))); add_fr1x32 dodawanie dwóch liczb fract32 mult_fr1x32 mnożenie dwóch liczb fract32 fr16_tofr32 konwersja z fract16 na fract32

Eksperyment Identyfikacyjny Komputer PC Głośnik Mikrofon W późniejszym czasie: rejestrator dźwięku z laboratorium, jako jego źródło wciąż komputer.

Eksperyment Identyfikacyjny Eksperyment na podstawie którego można uzyskać model odpowiedzi impulsowej pomieszczenia składa się z następujących kroków: Wygenerowanie kilku (lub kilkunastu) sekwencji białego szumu jako pobudzenia. (wł. wygenerowanie jednej sekwencji i powielenie jej kilkakrotnie); Odegranie wygenerowanej sekwencji w badanym pomieszczeniu jednocześnie nagrywając ustawionym w pewnej odległości od głośników mikrofonem odpowiedzi;

C.D. Eksperyment Identyfikacyjny Uśrednienie otrzymanych wyników do długości wejsciowej sekwencji białego szumu Obliczenie korelacji wzajemnej sygnału wejściowego oraz wyjściowego, co daje w sumie 2*n-1 próbek (n długość pojedynczej sekwencji) Pierwsza połowa próbek jest odbitą w czasie poszukiwaną odpowiedzią impulsową;

Eksperyment Identyfikacyjny Ważniejsze fragmenty m-file'a: wavplay(calosc,czestotliwosc,'async'); nagranie=wavrecord(10* dlug,czestotliwosc,1); Niewielkie opóźnienie while i<(dlug+1); wyj(i)=nagranie((2* dlug)+i)+nagranie((3* dlug)+i... kor=xcorr(wej,wyj); odimp=kor(1:dlug-1)'; plot(odimp); Problem czasochłonności obliczeń

Eksperyment Identyfikacyjny Przykładowa odpowiedź impulsowa rzeczywistego pomieszczenia: 3 0 0 0 2 0 0 0 1 0 0 0 0-1 0 0 0-2 0 0 0-3 0 0 0-4 0 0 0 0 0. 2 0. 4 0. 6 0. 8 1 1. 2 1. 4 1. 6 1. 8 2 x 1 0 5

Kolejne problemy: Wydajność obliczeń przy dużym rzędzie filtru i dużej częstotliwości próbkowania Lepsze wyniki identyfikacji odpowiedzi impulsowej (?) Rozlokowanie w pomiędzy dostępnymi pamięciami danych oraz kodu Identyfikacja on-line odwrotnego modelu pomieszczenia + equalizacja

Cele na przyszłość Identyfikacja odpowiedzi impulsowych pomieszczeń uzyskanych z pomiarów za pomocą aparatury znajdującej się w laboratorium Implementacja alternatywnych form filtru FIR w celu maksymalnej optymalizacji wydajności obliczeń Próba zaimplementowania identyfikacji odpowiedzi impulsowej on-line oraz equalizacji pomieszczenia odsłuchowego

Dziękuję za uwagę