biernacki, algorytmy przetwarzania sygnałów, opracowanie zagadnień


1. Możliwości implementacyjne filtrów SOI i NOI w procesorze
TMS320C67134:
FILTR SOI w procesorze TMS320C67134
/*genearalnie obowiązuje większośd komentarzy z ECHA.*/
//zmienne globalne
int16 BUF[8]; //tymczasowy bufor
int pos*8+; //zmienna określająca pozycje
float H*8+ = ,-; //tablica ze współczynnikami filtru
int ch; //zmienna określająca aktualny kanał, bo na jeden wysyłaliśmy 0, na drugi // //sygnał, zeby
wyciszyc dzwiek w jednej sluchawce
//definicja i deklaracja funkcji przerwania
interrupt void FILTR_SOI(){
int s;
s = MCBSP__read();
f(ch==0) ,s=0; //jeśli kanał pierwszy, to wstaw tam zero, i zmien na drugi
ch=1;
}
else{
int y = 0; //zmienna do sumowania wartosci
BUF[pos] = s;
for(i=0; i <7; ++i){
y+=H * BUF*pos+; //przetwarzanie sygnału  pod jakas /*zmienna y cały czas pakujemy sume
iloczynow wspolczynnikow filtru i elementuBUF[pos] */
pos = (pos-1) & (8-1);
} //koniec petli for
pos = ((pos+2) & 7)); //inkrementacja pos o 2.
s = y;
MCBSP_write(s, & )
}while(.....)
FILTR NOI w procesorze TMS320C67134
//zmienne globalne
int16 BUF[8]; //tymczasowy bufor
int pos; //zmienna określająca pozycje
float H*8+ = ,-; //tablica ze współczynnikami filtru
ch = 0; //zmienna określająca aktualny kanał, bo na jeden wysyłaliśmy 0, na drugi sygnał, zeby
wyciszyc //dzwiek w jednej sluchawce
//definicja i deklaracja funkcji przerwania
interrupt void filtr_noi(){
int s;
s = MCBSP__read();
f(ch==0) ,s=0; //jeśli kanał pierwszy, to wstaw tam zero, i zmien na drugi
ch=1;
}
else{
int y = 0; //zmienna do sumowania wartosci
BUF[pos] = s;
for(i=0; j=pos; i<8; i++){
y+=H * BUF[j];
j = (j+1) & (8 - 1);
}
BUF[(pos+4) & 7] = y;
pos = (pos+1) & 7;
s = y;
ch = 0;
MCBSP_write(s,...);
}while(...)
2. Cechy procka sygnałowego:
Szybkie układy mnożące
Układy typu mnóż i akumuluj
Kilka jednostek obliczeniowych
Efektywny dostęp do pamięci
Większośd procesorów sygnałowych operuje na liczbach
stałoprzecinkowych ( są wyjątki)
Możliwośd implementacji pętli programowych bez opóznienia dla
obliczenia warunku wyjścia
Zintegrowane urządzenia wejścia wyjścia wraz efektywnym układem
kontroli przerwao i układem bezpośredniego dostępu do pamięci
Specjalne instrukcje umożliwiające wykonanie kilku operacji w ramach
jednej instrukcji Duża ilośd rejestrów przeznaczonych do
przechowywania tymczasowych wyników obliczeo
Specjalnie zaprojektowane generatory adresów do odczytywania tablic z
pamięci
Sprzętowe wsparcie obsługi buforów kołowych
3. Klasyfikacja proc sygnałowych:
Niska cena, niski pobór mocy, niska wydajnośd (20-50 MHz)
 zawierają jeden mnożnik i jedną jednostkę arytmetyczno-logiczną
 wykonują jedną instrukcję w jednym cyklu
 zawierają specjalne rozkazy wykonujące kilka operacji równolegle
 stosowane w różnego rodzaju napędach dysków i automatycznych sekretarkach (ADADSP
21xx, TI  TMS320C2xx, M- DSP 560xx, LT- DSP16xx)
Średnia wydajnośd (100-150 MHz), niski pobór mocy, mimo wszystko niska cena
 dodatkowe układy (przesuwnik, pamięd podręczna instrukcji)
 więcej faz w potokowym przetwarzaniu instrukcji
 stosowane w bezprzewodowej telekomunikacji i szybkich modemach (TITMS320C54x,
M- DSP563xx)
Wyższa wydajnośd, cena i pobór mocy porównywalne
 dodatkowe układy mnożnik, sumator
 szersze słowo instrukcji szersze magistrale
 więcej operacji wykonywanych równolegle
(LT- DSP16xxx)
Bardzo wysoka wydajnośd, ale kosztem ceny i poboru mocy(1GHz dla p.
stałoprzecinkowych)
 architektura VLIW
 kompilatory produkują efektywny kod
 pamięd podręczna instrukcji i danych lub kilka magistral i pamięci wieloportowe
 zwykle dwie ścieżki danych
 od 4 do 8 operacji wykonywanych w jednym cyklu
4. Przetwarzanie potokowe w procesorze TMS320C67134
Ogólnikowo: Dzięki przetwarzaniu potokowemu co jeden cykl zegarowy jedna instrukcja
kooczy działanie, a w jednym cyklu zegarowym wykonywane jest kilka rozkazów ( w
przykładzie pokazanym na rysunku wykonywane są 4 instrukcje) Przetwarzanie potokowe
zakłócają występujące w kodzie instrukcje skoków warunkowych. Prowadzi do równoległego
przetwarzania więcej niż jednego polecenia w danej chwili co zwiększa wydajnośd CPU.
Faza wczytywania instrukcji
 etap generacji adresu pakietu instrukcji
(PG)
 etap wysłania adresu pakietu na
magistralę adresową (PS)
 etap oczekiwania na pakiet instrukcji (PW)
 etap pobrania pakietu instrukcji (PR)
Faza dekodowania instrukcji
 etap rozsyłania instrukcji (DP)
 etap dekodowania instrukcji (DC)
Faza wykonania instrukcj (E1-E10)
Faza wczytywania instrukcji
Etap (PG)- obliczenie adresu pakietu
instrukcji
Etap (PS)- adres pakietu jest przsyłany do
pamięci
Etap (PW)- trwa dostęp do danych w pamięci
Etap (PR)- pakiet jest zapamiętywany w
obrębie jednostki centralnej
Faza dekodowania instrukcji
Etap (DP)- określany jest kolejny pakiet
wykonywalny i odpowiednie kody operacji
przesyłane są do odpowiednich jednostek
funkcjonalnych
Etap (DC)- dekodowanie kodów operacji w
poszczególnych jednostkach funkcjonalnych
Faza wykonywania instrukcji
Etap (E1)
 dla wszystkich instrukcji sprawdzane są warunki wykonania i
wczytywane są argumenty
 dla operacji odczytu/zapisu wykonywane są modyfikacje
adresów i zapisywane w rejstrach wynikowych
 dla instrukcji rozgałęzieo modyfikowany jest adres
wczytywanego pakietu na etapie PG
 dla instrukcji wykonywanych w jednym cyklu wyniki są
zapisywane w rejestrach
 dla operacji z podwójną precyzją wczytywane są młodsze 32
bity argumentów
 dla operacji z podwójną precyzją wykonywanych w 2 cyklach
zapisywane są młodsze 32 bity wyników
Faza wykonywania instrukcji
Etap (E2)
 dla operacji odczytu do pamięci przesyłany jest adres, dla
operacji zapisu adres i dane
 dla operacji wykonywanych jednym cyklu, które stosują
nasycenie wyników, ustawiany jest bit SAT w rejestrze SCR (o
ile nasycenie wystąpiło)
 dla operacji mnożenia i porównania, wykonywanych w 2
cyklach z podwójną precyzją, zapisywane są wyniki
 dla operacji porównania i rozkazów ADDDP/SUBDP z
podwójną precyzją wczytywane są starsze 32 bity
argumentów
 dla operacji MPYDP odczytywane są młodsze 32 bity src1 i
starsze 32 bity src2
 dla operacji MPYI i MPYID wczytywane są argumenty
Faza wykonywania instrukcji
Etap (E3)
 oczekiwanie na dostęp do danych w pamięci
 operacje mnożenia, które nasyciły swoje wyniki ustawiają bit
SAT w rejestrze SCR
 instrukcja MPYDP wczytuje starsze 32 bity src1 i młodsze 32
bity src2
 instrukcje MPYI i MPYID odczytują swoje argumenty
Etap (E4)
 dane do instrukcji odczytu odbierane
 instrukcje MPYI i MPYID pobierają argumenty
 instrukcje wykonujące się w 4 cyklach zapisują swoje wyniki
 instrukcja INTDP zapisuje wynik obliczeo w rejestrze
Etap (E5)
 instrukcje odczytu zapisują dane w rejestrach
 instrukcja INTDP zapisuje starsze 32 bity wyniku
Faza wykonywania instrukcji
Etap (E6)- instrukcje ADDDP i SUBDP
zapisują młodsze 32 bity wyników
Etap (E7)- instrukcje ADDDP i SUBDP
zapisują starsze 32 bity wyników
Etap (E8)- etap pusty
Etap(E9)-
 Instrukcja MPYI zapisuje wyniki do rejestrów
 Instrukcje MPYDP i MPYID zapisują młodsze 32 bity wyników
Etap (E10)- instrukcje MPYDP i MPYID
zapisują starsze 32 bity wyników
5. Architektura procesora TMS320C6713:
Procesor pobiera z pamięci podręcznej pakiety 8 instrukcji. Każdy pakiet może składad się z
od 1 do 8 pakietów wykonawczych. W pojedynczym pakiecie wykonawczym znajdują się
rozkazy wykonywane równolegle w jednym cyklu.
Ścieżki danych: 32 x 32bitowe rejestry ogólnego przeznaczenia 8 jednostek funkcjonalnych:
jednostki L i S do obliczeo arytmetycznych i logicznych oraz instrukcji rozgałęzieo, jednostki
M zawierające szybkie równoległe mnożniki, jednostki D odpowiadające za generację
adresów, ścieżki odczytu/zapisu do pamięci LD i ST.
6. Obsługa przerwao w procesorze TMS320C67134:
Uint32 DevId; //identyfikator urządzenia potrzebny do prawidłowej konfiguracji przerwao
extern far void vectors(void); //deklaracja wskaznika do tablicy kodu obslugi przerwan (16
blokow po 8 rozkazow)
IRQ_setVecs(vectors); //ustawienie zadeklarowanej tablicy kodu
obslugi przerwan
hDev = DEV_open( ... ); // wlaczenie obslugi urzadzenia
DevId = DEV_getEventId(hDev); //pobranie identyfikatora dla zdarzeo pochodzących od
urzadzenia
IRQ_map(DevId, 15); //mapowanie zdarzenia od urzadzenia z numerem przerwania
IRQ_reset(DevId); //resetowanie przerwania od URZDZENIA
IRQ_enable(DEV); //wlaczenie obslugi przerwania od urzadzenia
IRQ_globalEnable(); //wlacznie obclugi przerwan procesora
IRQ_nmiEnable(); //wlacznie przerwan niemaskowanych
7. Obsługa urządzeo za pomocą przerwao w procesorze TMS320C67134:
Sygnalizacja przerwania od urządzenia zewnętrznego
Zapamiętanie bieżącej wartości licznika rozkazów
Wpisanie do licznika rozkazów adresu początku funkcji obsługi przerwania
Wykonywanie rozkazów funkcji obsługi przerwania
Rozkaz powrotu z przerwania przywraca zapamiętaną wartośd licznikowi rozkazów
W następnym takcie procesor rozpoczyna wykonanie programu od rozkazu następnego po
rozkazie, w którym wystąpiło przerwanie
8. Transmisja wielokanałowa w procesorze TMS320C67134:
Transmisja wielokanałowa zrealizowana jest za pomocą
multipleksowania kanałów w czasie
Układ umożliwia transmisję do 32 dwóch elementów w ramce
spośród maksymalnie 128 kanałów
Jeżeli kanał odbiornika jest zablokowany
 RRDY nie jest ustawiany na 1 jeżeli zostanie odczytany
ostatni bit elementu nadawanego
 RBR nie jest kopiowany do DRR
Jeżeli kanał nadajnika jest zablokowany
 Linia DX jest w stanie wysokiej impedancji
 XRDY i XEMPTY nie są ustawiane w przypadku nadawania
danych
 Zakooczenie wysyłania danej nie generuje ani przerwania
procesora ani zdarzenia dla układu EDMA
Odblokowany kanał nadajnika może byd w dowolnym momencie
zamaskowany (dane są wysyłane do układu nadajnika ale
nadajnik ich nie przesyła linią DX
9. Struktura pamięci w procesorze TMS320C67134:
9. Bufor kołowy - opis, zasada działania i implementacje.
Bufor kołowy można porównad do tablicy danych która nie ma początku ani kooca. Do pracy
na takim buforze niezbędne są dwa wskazniki. Pierwszy z nich pokazuje gdzie należy zapisad
daną w buforze, drugi skąd odczytad. Po każdej operacji zapisu lub odczytu odpowiedni
wskaznik jest inkrementowany, aby pokazywad na następny element bufora (wskaznik do
zapisu pokazuje następny wolny element a wskaznik do odczytu pierwszy nieodczytany
element). Jeżeli wskaznik dojdzie do kooca tablicy, to po kolejnym zapisie danej do bufora
powinien on ustawid się na pierwszy element tablicy.
REALIZACJA BUFORA KOAOWEGO
Do pracy na takim buforze niezbędne są:
tablica o określonej długości N,
wskaznik do zapisu danych,
wskaznik do odczytu danych.
Dla wygody korzystania z bufora warto stworzyd gotowe procedury do jego obsługi:
inicjacja wskazników,
zapis danej
odczyt danej
10. Bufor Ping-Pong- opis, zasada działania i implementacje.
Metoda ta polega na takim oprogramowaniu układu DMA, aby zapisywał dane
naprzemiennie do dwóch buforów  bufora ping i bufora pong. Wówczas układ DMA
synchronizuje się procesorem po przesłaniu całego jednego bufora. W czasie gdy układ DMA
zapisuje lub odczytuje dane z bufora ping, mikroprocesor przetwarza bufor pong, a potem
odwrotnie. W tej metodzie układ DMA pracuje najefektywniej, dlatego jest ona
wykorzystywana do przetwarzania sygnałów VIDEO.
11. Układ EDMA
Układ EDMA jest to układ tzw. bezpośredniego dostępu do pamięci. Bezpośredniość
ta polega na tym, że do kopiowania danych z jednego miejsca pamięci do drugiego
nie jest w najmniejszym nawet stopniu wykorzystywany rdzeń procesora. Dane
przesyłane są po magistrali danych z jednego miejsca pamięci do drugiego. W
klasycznym kopiowaniu danych natomiast dana jest pobierana do rejestru
mikroprocesora i za pomocą drugiego rozkazu zapisywana z rejestru do
pamięci. Przepływ danych zatem odbywa się poprzez mikroprocesor. Przesyłanie
danych za pomocą układu DMA jest efektywne wtedy, gdy mikroprocesor w tym
samym czasie realizuje inne zadania. Typową sytuacją, w której wykorzystywany jest
układ DMA jest akwizycja danych z przetworników analogowo  cyfrowych i
wysyłanie przetworzonych danych do przetworników cyfrowo  analogowych.
Zaangażowanie układu DMA do odbierania i nadawania danych jest w
takiej sytuacji niezwykle efektywne, ponieważ procesor, pracujący zwykle z
częstotliwością wielokrotnie większą niż układy przetworników, nie musi czekać aż
przetwornik będzie gotowy do odebrania nadawanej danej. Zamiast tego umieszcza
on przetworzoną próbkę w specjalnym buforze obsługiwanym przez układ DMA i
zaczyna kolejny cykl przetwarzania, pozostawiając zadanie wysłania próbki układowi
DMA. Jeszcze bardziej efektywnym sposobem wykorzystania układu DMA jest
zastosowanie podwójnego buforowania albo inaczej buforowania typu ping  pong.
Metoda ta polega na takim oprogramowaniu układu DMA, aby zapisywał dane
naprzemiennie do dwóch buforów  bufora ping i bufora pong. Wówczas układ DMA
synchronizuje się procesorem po przesłaniu całego jednego bufora. W czasie gdy
układ DMA zapisuje lub odczytuje dane z bufora ping, mikroprocesor przetwarza
bufor pong, a potem odwrotnie. W tej metodzie układ DMA pracuje najefektywniej,
dlatego jest ona wykorzystywana do przetwarzania sygnałów VIDEO.
hEDMA_Handle EDMA_open(int chaNum, Uint32 flags)
Aktywowanie miejsca w pamięci do przechowywania parametrów aktualnie wykonywanego
transferu.
hEDMA_Handle EDMA_allocTable(int tableNum);
Alokuje miejsce dla konfiguracji, która będzie przeładowywana po wykonaniu transferu. Aby
wybrad pierwsze wolne miejsce, należy wywoład funkcję z argumentem  -1 . Układ DMA nie
może modyfikowad zawartości tej tablicy.
gEdmaConfigXmt.dst = MCBSP_getXmtAddr(hMcbsp1);
pobiera adres rejstru nadajnika portu szeregowego i wpisuje go do adresu przeznaczenia dla
DMA.
int EDMA_intAlloc(int tcc);
Alokuje Transfer Completion Code. Jest to kod zgłaszany po zakooczeniu transferu i jest
indywidualny dla każdego kanału DMA. Aby wybrad pierwszy wolny kod należy użyd
argumentu  -1 .
gEdmaConfigXmt.opt |= EDMA_FMK(OPT,TCC,gXmtChan);
Zapisanie kodu TCC dla kanału nadawczego.
EDMA_config(EDMA_Handle hEdma, EDMA_Config *config);
Wpisanie konfiguracji pod wskazany adres.
gEdmaConfigXmt.src= EDMA_SRC_OF(gBufferXmtPong);
Wskazanie zródła(buforu), z którego kopiowane są dane.
EDMA_link(EDMA_Handle parent,EDMA_Handle child);
Linkowanie konfiguracji(transferów). Pierwszy argument funkcji to  rodzic , a drugi to
 dziecko . Najpierw należy użyd wskaznika który był używany z EDMA_open, aby przypisad
go do konkretnego urządzenia(czyli McBSP1). Następnie wpisujemy konfiguracje do tablicy
parameters RAM. Do konfiguracji Pong linkowana jest struktura Ping, a Ping jest łączone z
Pong, czyli wracamy następuje zapętlenie. W pózniejszej fazie wzajemne linkowanie
następuje tylko dla transferów zainicjowanych funkcją EDMA_allocTable. Należy również
zwrócid uwagę na zamianę miejsc pomiędzy parent i child w następnych linkowaniach.
EDMA_intEnable(intNum);
Aktywuje przerwanie dla wybranego kodu TCC poprzez modyfikację rejestru CIER.
EDMA_enableChannel(EDMA_Handle hEdma);
Musi nastąpid jawne aktywowanie kanału. Przyjmuje tylko uchwyty od EDMA_open.


Wyszukiwarka

Podobne podstrony:
,algorytmy przetwarzania sygnałów, opracowanie kolokwium II
,algorytmy przetwarzania sygnałów, opracowanie kolokwium I
przetworniki II opracowane
Podstawy Cyfrowego Przetwarzania Sygnalów
opracowanie zagadnień na bazy
mechanika plynow opracowanie zagadnien
stasieńko,wytrzymalosc I, opracowanie zagadnień na egz
Ekonomia Rozwoju Garbicz Opracowanie zagadnień do egzaminu
ANTROPOLOGIA KULTROWA opracowanie zagadnień
[ASK] Opracowanie zagadnień na egzamin w trakcie składania
biłyk,Chemia wody, opracowanie zagadnień
Opracowanie zagadnień egzaminacyjnych z dób średniopolskiej i nowopolskiej
Biochemia opracowanie zagadnień
Opracowanie Zagadnień na egzamin Mikroprocki

więcej podobnych podstron