Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 1
-
Wydział Elektryczny
ZTMAiPC – Zespół Automatyki
LABORATORIUM CYFROWEGO PRZETWARZANIA SYGNAŁÓW
Ćwiczenie 7
Wprowadzenie do programowania procesora sygnałowego ADSP 2181
5.1. Cel
ćwiczenia
Zapoznanie się z architekturą procesora sygnałowego ADSP2181 i opartym na
nim urządzeniem laboratoryjnym EZBOX.
Zaznajomienie się z procesem tworzenia aplikacji na procesor sygnałowy
ADSP2181 przy użyciu narzędzi firmy Analog Devices.
Nabycie umiejętności posługiwania się pakietem DSP Studio.
Uruchomienie i analiza przykładowych programów demonstracyjnych
w urządzeniu EZBOX.
Prezentacja praktycznego zastosowania procesora sygnałowego w telefonii, jako
generatora tonu wywołania DTMF.
5.2. Wprowadzenie
5.2.1. Architektura procesora sygnałowego ADSP2181
Procesor sygnałowy ADSP2181 firmy Analog Devices jest jednoukładowym
mikrokontrolerem, zoptymalizowanym do cyfrowego przetwarzania sygnałów
(ang. Digital Signal Processing - DSP) i innych aplikacji wymagających szybkich
obliczeń numerycznych. Procesor ADSP2181 jest zbudowany na bazie architektury
rodziny 21xx. Architektura ta zawiera trzy jednostki obliczeniowe, generatory
adresów danych i sekwencer programu.
Podstawowe bloki funkcjonalne procesora
Architektura procesorów sygnałowych dostarczanych przez firmę Analog Devices,
a więc także rodziny ADSP21xx, skonstruowana jest w oparciu o architekturę typu
Harvard, co oznacza, że magistrala dla danych z pamięci danych i magistrala dla
danych z pamięci programu są rozdzielone. W procesorze (ang. CPU core) można
wyróżnić następujące bloki funkcjonalne:
jednostka arytmetyczno-logiczna ALU (ang. Arithmetic-Logic Unit)
jednostka mnożąca MAC
(ang. Multiplier-Accumulator)
jednostka przesuwająco-skalująca (ang.
Barrel-Shifter)
jednostka sterująca
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 2
-
generatory adresów danych – DAG
(ang. Data Address Generator)
Poniższy rysunek przedstawia relacje zachodzące między poszczególnymi blokami
funkcjonalnymi procesorów rodziny ADSP21xx w tym również procesora
ADSP2181.
Rys. 1 Architektura procesora ADSP2181.
Schemat blokowy rdzenia procesora przedstawiony jest na rysunku 5.1. Bardziej
szczegółowe informacje na temat działania i budowy procesora, można uzyskać przy
pomocy firmowego programu DSP Navigator dołączonego do pakietu DSP Studio.
Program uruchamia się ze skrótu na pulpicie lub poleceniem DSP Studio:
Narzędzia/DSP Navigator.
Jednostka arytmetyczno - logiczna ALU
Z pośrednictwem jednostki ALU procesory rodziny ADSP21xx mogą realizować
podstawowe operacje arytmetyczne i logiczne, na 16-bitowych danych
stałoprzecinkowych. Za podstawowe operacje arytmetyczne uznawane są:
dodawanie, odejmowanie, negacja, inkrementacja, dekrementacja i obliczenie
wartości bezwzględnej. Obsługiwane funkcje logiczne to: AND, OR, XOR i NOT.
Konstrukcja jednostki ALU zapewnia dostęp do dwóch identycznych zestawów
rejestrów AX, AY, AF i AR, przy czym w danej chwili czasowej program może
obsłużyć tylko jeden z nich. Cecha ta ma szczególne znaczenie w przypadku
programów, których działanie opiera się na systemie przerwań procesora. Jeden bank
rejestrów przeznaczony jest na obsługę przerwań, drugi natomiast wykorzystywany
przez program główny. Przełączenia pomiędzy bankami rejestrów ALU dokonuje się
zmieniając bit 0 rejestru MSTAT procesora.
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 3
-
Listę operacji realizowanych przez jednostkę ALU oraz wszystkie możliwe
kombinacje operandów zapisano w tabeli 1.
Tabela 1
Symboliczny zapis operacji Funkcja
R = X + Y
dodawanie
R = X + Y + CI
dodawanie z przeniesieniem
R = X - Y
odejmowanie
R = X - Y + CI -1
odejmowanie z pożyczką
R = Y - X
odejmowanie
R = Y - X + CI -1
odejmowanie z pożyczką
R = -X
negacja argumentu
R = -Y
negacja argumentu
R = Y + 1
inkrementacja
R = Y - 1
dekrementacja
R = PASS X
przekazanie argumentu
R = PASS Y
przekazanie argumentu
R = 0
wyzerowanie rejestru wyniku
R = ABS X
wartość bezwzględna
argumentu
R = X AND Y
iloczyn logiczny argumentów
R = X OR Y
suma logiczna argumentów
R = X XOR Y
exclusive-or argumentów
R = NOT X
negacja logiczna argumentu
R = NOT Y
negacja logiczna argumentu
Poniżej zestawiono nazwy rejestrów procesora, z których dane mogą być
przekazywane do rejestrów wejściowych ALU.
Tabela 2
wejście X
wejście Y
wyjście R
AX0, AX1, AR, MR0, MR1, MR2, SR0, SR1
AY0, AY1, AF
AR, AF
Efektem działania jednostki ALU jest także odpowiednie ustawianie bitów
w rejestrze statusowym ASTAT. Poszczególne bity oznaczają:
AZ Zero
logiczne NOR wszystkich bitów rejestru wyjściowego ALU. AZ jest
ustawione na 1 gdy wynikiem działania jednostki jest zero.
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 4
-
AN Negativebit znaku w danej wynikowej z ALU. Jest 1 gdy ALU zwraca wartość ujemną.
AV Overflow
wynosi 1 jeżeli nastąpi przepełnienie (przekroczenie zakresu) jednostki.
AC Carry
bit wyjściowy, wykorzystywany przy odejmowaniu z pożyczką.
AS Sign
zwraca bit znaku danej z wejścia X. Bit ten jest ustawiany tylko przez
instrukcję ABS.
AQ Quotient
bit ustawiany przez operację DIVS i DIVQ.
Jednostka mnożąca MAC
Jednostka mnożąca procesora (MAC) pozwala na realizację następujące funkcji:
Tabela 3
Symboliczny zapis operacji
Funkcja
P = X * Y
mnożenie
P = P. + X * Y
mnożenie z dodawaniem
P = P. – X * Y
mnożenie z odejmowaniem
P = 0
mnożenie z dodawaniem
MAC zawiera dwa szesnastobitowe wejścia X i Y oraz 32-bitowy port wyjściowy P.
Wynik mnożenia jest przekazywany do 40-bitowego rejestru MR jednocześnie
wykonywana jest instrukcja dodawania lub odejmowania. Rejestr MR składa się
z trzech podrejestrów MR0, MR1 (o szerokości 16 bitów) i rejestru MR2
o szerokości 8 bitów. Źródłem danych dla rejestrów wejściowych MAC mogą być
następujące rejestry procesora [4]:
Tabela 4
wejście X
wejście Y
wyjście P
MX0, MX1, AR, MR0, MR1, MR2, SR0, SR1
MY0, MY1, AF
MR, MF
Jednostka MAC operuje na danych zapisanych w formacie 1.15 [4] wraz ze znakiem
(ang. Signed) lub bez znaku (ang. Unsigned).
Jednostka przesuwająco-skalująca Barrel-Shifter
Jednostka sterująca
Jednostka sterująca generuje strumień instrukcji dla rdzenia procesora sygnałowego
oraz prowadzi stałą kontrolę wykonywanego programu. Wyznacza kolejne etapy
wykonania kodu maszynowego oraz zajmuje się obsługą nadchodzących przerwań
wewnętrznych lub zewnętrznych. Ponadto jednostka sterująca umożliwia:
przewidywanie zakończenia pętli programowej (ang. zero-overhead looping),
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 5
-
wykonywanie skoków warunkowych wraz z określeniem rodzaju warunku w jednym
cyklu maszynowym.
Podczas gdy procesor wykonuje jedną instrukcję kodu maszynowego, sekwencer
programu pobiera do analizy następną instrukcję, której adres zawiera znajduje się
w jednym z czterech źródeł:
rejestru PC
stosu PC
rejestru instrukcji
sterownika przerwań
Następna instrukcja do wykonania może również pochodzić od jednego z rejestrów
I4 – I7 (są to rejestry indeksowe drugiego generatora danych DAG2). W ten sposób
może być wykonany skok do instrukcji wskazanej poprzez zawartość jednego z tych
rejestrów.
Ważnymi elementami jednostki sterującej są licznik instrukcji PC Counter oraz
rejestr stosu: PC Stack stanowiące 14-bitowe rejestry.
Jednostka sterująca pozwala realizować następujące konstrukcje programowe:
pętla DO...UNTIL
skok JUMP
wywołanie procedury CALL
powrót z procedury RTS
powrót z procedury RTI (obsługa przerwania)
wejście w tryb bezczynności IDLE
Każda z tych czynności może być wykonana zgodnie z warunkiem wynikającym
z ustawienia odpowiednich wartości bitów - flag w rejestrach statusu MAC, ALU.
Dostępne są następujące warunki wykonania:
Nazwa Opis
Zachodzi
jeżeli:
EQ
jeżeli równe zero
AZ = 1
NE
jeżeli różne od zera
AZ = 0
LT
jeżeli mniejsze od zera
AX xor AV = 1
GE
jeżeli większe od zera
AN xor AV = 0
LE
jeżeli mniejsze lub równe zero
(AN xor AV) or AZ = 1
GT
jeżeli większe lub równe zero
(AN xor AV) or AZ = 0
AC
jeżeli niedomiar ALU
AC = 1
NOT AC
jeżeli brak niedomiaru ALU
AC = 0
AV
jeżeli przepełnienie ALU
AV = 1
NOT AV
jeżeli brak przepełnienia ALU
AV = 0
MV
jeżeli przepełnienie MAC
MV = 1
NOT MV
jeżeli brak przepełnienia MAC
MV = 0
NEG
jeżeli składnik X operacji jest ujemny
AS = 1
POS
jeżeli składnik X operacji jest dodatni
AS = 0
CE
jeżeli wyczerpanie zawartości licznika pętli
_____
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 6
-
FOREVER zawsze prawdziwy
_____
Źródłem przerwania maskowalnego mogą być układy peryferyjne wbudowane
w procesor, jak np. zegar, porty szeregowe lub końcówki układu scalonego.
Sekwencer programu, na żądanie przerwania wykonuje skok pod odpowiedni adres
w pamięci, a stamtąd do procedury obsługi przerwania. Taką organizację obsługi
przerwań nazywamy wektoryzowanym systemem przerwań, a miejsce
przechowywania adresu funkcji obsługującej przerwanie wektorem przerwania.
Stan rejestru procesora może być sprawdzany poprzez odczyt rejestrów statusu:
ASTAT - stan ALU
MSTAT - stan MAC
SSTAT - stan stosu
INCTL - konfiguracja przerwań
IMASK - zablokowanie / odblokowanie poszczególnych przerwań
IFC- znacznik przyjęcia / obsłużenia przerwania
Generatory adresów danych DAG
Generator adresów danych (DAG - ang. Data Address Generator) stanowi
część rdzenia procesora wspomagającą proces transferu danych z / do pamięci
operacyjnej. Procesory rodziny ADSP21xx wyposażone są w dwa niezależne
generatory adresów DAG1 i DAG2, co pozwala na jednoczesny dostęp do pamięci
danych i programu. DAG zapewnia automatyczne zwiększenie lub zmniejszenie
wartości adresu rejestru adresowego po każdorazowej operacji zapisu/odczytu
pamięci. Każdy DAG używa przy tym swojego zestawu rejestrów roboczych,
składających się z:
rejestru M
(ang. Modify register) - określa o ile zwiększany lub
zmniejszany jest adres
rejestru I
(ang. Index register) - właściwy adres danej w pamięci
rejestru L
(ang. Length register) - rejestr określający długość obszaru
pamięci kontrolowanego przez DAG
Adresy danych generowanych przez jednostkę DAG1 mogą być dodatkowo
zanegowane, co określa bit BIT_REV w rejestrze MSTAT. Jest to użyteczne przy
implementacji algorytmów FFT.
W jednym cyklu zegara procesor może wykonać następujące czynności:
• wygenerować adres następnej instrukcji kodu maszynowego,
• pobrać tą instrukcję do wykonania,
• wykonać jeden lub dwa transfery danych z/do pamięci,
• wygenerować jeden lub dwa adresy danych do obliczeń,
• wykonać instrukcję obliczeniową.
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 7
-
Ponadto udostępnia dwa porty szeregowe, 16-bitowy wewnętrzny port DMA
(bezpośredni dostęp do pamięci), programowalny timer oraz rozbudowany system
przerwań.
Procesor ADSP 2181 zawiera 80 kB wewnętrznej pamięci, zorganizowanej w 16 K
słów 24 bitowych pamięci programu i 16 K słów 16-bitowych pamięci danych. Jest
to procesor stałoprzecinkowy, operujący na danych 16-bitowych. Procesor
synchronizowany jest zegarem 16,67 MHz. Czas wykonania jednej instrukcji kodu
maszynowego wynosi 30 ns.
Zadanie polega na podłączeniu oraz (jeśli jest to konieczne) skonfigurowaniu
urządzenia EZ-BOX; uruchomieniu i zapoznaniu z funkcjami pakietu DSP Studio;
uruchomieniu przykładowych aplikacji (w tym kodowania DTMF, eliminacji echa,
ADPCM - adaptacyjnej modulacji PCM).
Urządzenie laboratoryjne EZBOX to edukacyjny system mikroprocesorowy zbudowany
na bazie procesora sygnałowego ADSP2181. System ten wyposażony jest w układ
przetwornika AC/CA – tzw. kodek, dzięki któremu możliwe jest wprowadzanie
i wyprowadzanie sygnałów akustycznych do i z urządzenia. Komunikację z
komputerem PC (ładowanie kodu maszynowego do wykonania przez procesor)
zapewnia interfejs szeregowy RS232. Oprogramowanie komunikacyjne
i uruchomieniowe zawarte jest w pamięci ROM przyłączonej do procesora – jest to
tzw. program monitora. Schemat blokowy urządzenia EZBOX przedstawia rys 5.2.
ROM
DSP
KODEK
ADSP 2181
AD 1847
do karty
dźwiękowej
do oscyloskopu
do słuchawek
WZM
Max 232
RS 232
z karty
dźwiękowej
z mikrofonu
PC
Rys. 2 Schemat funkcjonalny urządzenia EZBOX.
W większości ćwiczeń laboratoryjnych z wykorzystaniem przyrządu EZBOX źródłem
sygnału analogowego jest karta dźwiękowa w komputerze PC lub odtwarzacz CD,
ona także realizuje akwizycję (nagrywanie) sygnału analogowego, generowanego
przez procesor sygnałowy. Źródłem sygnału dla urządzenia EZBOX może być
również mikrofon dynamiczny. Możliwe jest wyprowadzenie sygnału analogowego
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 8
-
z urządzenia EZBOX do oscyloskopu lub na głośniki (słuchawki). Każdy tor
sygnałowy EZBOX-a posiada swoje gniazdko chinch na obudowie urządzenia.
Rysunek 5.3 przedstawia opis wejść i wyjść urządzenia EZBOX.
wyjście słuchawkowe S1
złącze szeregowe RS 232
Cannon 25
wejście mikrofonu M1
wyjście audio A1
wejście
karty dźwiękowej WEKD
wyjście
karty dźwiękowej WYKD
przycisk RESET
przycisk P
dioda świecąca D
a
c)
b)
a)
dioda świecąca
sygnalizująca zasilanie
Rys. 3 Widok obudowy urządzenia EZBOX.
W celu uruchomienia urządzenia EZBOX należy wykonać następujące czynności:
1. Podłączyć wyjście szeregowe RS232 do złącza portu szeregowego komputera PC.
2. Podłączyć źródło sygnału. W zależności od tego, które z urządzeń zewnętrznych
będzie wykorzystywane w ćwiczeniu łączymy:
• wyjście karty dźwiękowej z gniazdkiem WYKD urządzenia EZBOX,
• wejście karty dźwiękowej z gniazdkiem WEKD urządzenia EZBOX,
• wyjście audio A1 podłączmy do oscyloskopu
• do wejścia mikrofonowego M1 podłączamy mikrofon dynamiczny
• do wyjścia słuchawkowego podłączmy słuchawki.
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 9
-
• kabel zasilający podłącza się do zasilacza stabilizowanego + 9V. Należy
zwrócić przy tym uwagę na polaryzację.
3. Poprawnie podłączone urządzenie, po naciśnięciu przycisku RESET zgłosi się
sygnałem dźwiękowym, słyszalnym w słuchawkach. Dioda święcąca D, będzie
migać. Oznacza to, że urządzenie jest gotowe do pracy.
U
W A G A O G Ó L N A
W przypadku wystąpienia problemów z uruchomieniem programów dla urządzenia
EZBOX, z poziomu monitora EZ KIT Lite, należy zresetować EZ-BOX przez
naciśnięcie przycisku RESET na jego obudowie.
5.2.2. Tworzenie aplikacji na procesor sygnałowy ADSP2181 przy użyciu narzędzi
firmy Analog Devices
Do rodziny procesorów sygnałowych ADSP21xx Analog Devices dostarcza szereg
narzędzi programistycznych umożliwiających tworzenie aplikacji na te procesory są
to: asembler, konsolidator (linker) i specjalny program służący do budowania opisu
architektury docelowego systemu mikroprocesorowego.
Tok tworzenia aplikacji na procesor sygnałowy jest następujący:
• zdefiniowanie architektury systemu mikroprocesorowego, w którym będzie
uruchomiony program,
• opracowanie algorytmów i przygotowanie plików z kodem źródłowym programu,
• asemblacja plików źródłowych do kodu maszynowego
• połączenie (linkowanie) poszczególnych fragmentów kodu maszynowego w jedną
całość stanowiącą aplikację,
• załadowanie kodu aplikacji do systemu uruchomieniowego, np. urządzenia EZBOX
i uruchomienie go,
• testowanie poprawności działania aplikacji i ewentualne poprawki.
Programy dla procesora sygnałowego ADSP 2181 mogą być napisane w języku C lub
w asemblerze. Do tego celu firma Analog Devices dostarcza następujący zestaw
narzędzi:
• asm21.exe – program asemblera dla rodziny procesorów ADSP21xx,
• ld21.exe – program konsolidujący (linker),
• g21.exe – kompilator języka C.
Sposób tworzenia aplikacji w języku asemblera został szczegółowo opisany w pracy
[1]. Pisanie aplikacji w języku C ma tą przewagę nad językiem asemblera, że kod
źródłowy jest w pełni przenoszalny pomiędzy różnymi modelami procesorów
w ramach rodziny ADSP21xx. Przy odpowiednio skonstruowanym kodzie źródłowym
możliwe jest też przenoszenie kodu pomiędzy różnymi typami procesorów
sygnałowych (niekoniecznie firmy Analog Devices). Do kompilatora C dostarczanego
przez producenta dołączony jest bogaty zestaw bibliotek zawierających wiele funkcji
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 10
-
z dziedziny cyfrowego przetwarzania sygnałów np. transformaty Fouriera, odwrotnej
transformaty Fouriera, funkcji nakładania okien a także ogólnych funkcji
matematycznych np. funkcje trygonometryczne, mnożenie macierzy itp.
Zaletą używania języka C jest w porównaniu z asemblerem jest znacznie prostsza
składnia i przenoszalność kodu źródłowego. Niestety z programach krytycznych pod
względem czasowym, należy stosować asembler jako bardziej efektywny.
Ponieważ narzędzia dostarczone przez firmę Analog Devices, nie zapewniają
komfortu pracy podczas tworzenia aplikacji zaleca się użycie pakietu DSP Studio
stanowiącego zintegrowane środowisko programistyczne dla procesorów sygnałowych
rodziny ADSP21xx.
DSP Studio to zintegrowane środowisko programistyczne, służące do efektywnego
zarządzania kodem źródłowym aplikacji i jego edycji. Posiada wbudowany edytor
kodu źródłowego, z podświetlaniem składni (słów kluczowych), co pozwala uniknąć
szeregu błędów syntaktycznych.
Z poziomu środowiska można dokonać kompilacji i konsolidacji kodów źródłowych.
Możliwe jest utworzenie kilku wersji jednej aplikacji, przeznaczonych na różne
procesory rodziny ADSP21xx. Ze środowiskiem DSP Studio można skojarzyć szereg
narzędzi zewnętrznych, np. konwertery formatów liczbowych, program ładująco-
komunikacyjny itp.
Podstawową struktura danych na której operuje DSP Studio jest projekt. Stanowi on
powiązany logicznie zbiór kodów źródłowych oraz plików danych, które po
skompilowaniu i konsolidacji dadzą w wyniku wykonywalną aplikację. Strukturę
przykładowego projektu WAVEGEN przedstawia rys 5.4. Projekt znajduje się w
katalogu DEMA\WAVEGEN.
Rys. 4 Projekt generatora przebiegów harmonicznych.
1. Uruchomienie i analiza przykładowych programów demonstracyjnych
w urządzeniu EZBOX.
1. Projekt wavegen
Aby załadować projekt wavegen do środowiska DSP Studio należy:
•
z menu Projekt wybrać polecenie Odczytaj projekt,
•
w oknie dialogowym Odczytaj projekt wskazać projekt wavegen.prj
znajdujący się w katalogu DEMA/wavegen.
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 11
-
Projekt wavegen.prj składa się z dwóch plików źródłowych i kilku plików
danych. Pliki źródłowe to: wavegen.dsp i onsample.dsp. Pliki danych
*.dat zawierają wzorce przebiegów, które zostaną wygenerowane przez
wzorce przebiegów, są to: sinus.dat, triangle.dat,
rectang.dat oraz song.dat
•
skompilować projekt poleceniem Projekt/Kompiluj cały projekt,
•
z menu Narzędzia wybrać polecenie Loader programów do EZBOX.
Zostanie uruchomiona aplikacja służąca do komunikacji z urządzeniem EZBOX.
Z menu Loading należy wybrać polecenie Download user program and go...;
otworzy się okno dialogowe w którym należy wskazać plik do załadowania
i uruchomienia, dla projektu wavegen.prj będzie to wavegen.exe, znajdujący
się w katalogu DEMA/WAVEGEN.
Po uruchomieniu programu w EZBOX-ie można zamknąć program komunikacyjny.
Aby zaobserwować kształt i widmo przebiegu generowanego przez procesor
sygnałowy, należy uruchomić program Winscope.exe. Dokonuje się tego
wybierając polecenie Narzędzia/Oscyloskop programu DSP Studio. Instrukcja
obsługi programu Winscope.exe znajduje się w opracowaniu [1]. Po ukazaniu
się okna głównego należy nacisnąć przycisk Play Winscope wykaże, że
generowany przebieg ma kształt sinusiodalny.
Aby zmienić kształt generowanego przebiegu na trójkątny, należy:
−
otworzyć do edycji plik wavegen.dsp
Dokonuje się tego poleceniem Pliki/Otwórz, w oknie dialgowym, należy
wskazać wyżej wymieniony plik. Można też dwukrotnie kliknąć na nazwie
pliku w strukturze projektu. DSP Studio automatycznie załaduje do edycji
plik wavegen.dsp.
− w kodzie źródłowym należy odnaleźć deklarację bufora na przebieg
o nazwie wavebuff, w dyrektywie .init dotyczącej tej zmiennej, należy
zmienić nazwę pliku inicjującego z sinus.dat na triangle,dat.
− zachować plik na dysk poleceniem Pliki/Zachowaj.
− skompilować projekt, jak dla pierwszego uruchomienia.
− załadować skompilowaną aplikację do EZBOX-a i zaobserwować jej
działanie programem Winscope według instrukcji, jak powyżej.
W celu zmiany częstotliwości generowanego przebiegu należy:
− otworzyć do edycji składnik projektu onsample.dsp
Dokonuje się tego dwukrotnie klikając na ikonie przypisanej do
onsample.dsp w strukturze projektu. Zostanie automatycznie
uruchomiony moduł DSP Studio odpowiedzialny za analizę kodu
źródłowego – CodeWizard – który rozbuduje strukturę projektu (gałąź
onsample.dsp) o funkcje i procedury zawarte w tym pliku źródłowym.
−
następnie kliknąć dwukrotnie na ikonie procedury on_sample. Spowoduje to
automatyczne wyszukanie w kodzie źródłowym procedury on_sample.
Należy dokonać modyfikacji kodu źródłowego we fragmencie opisanym
następującym komentarzem: „ { podwojenie częstotliwości - dopisać
modify(i0,m0); } ”. Dołożenie instrukcji modify spowoduje dwukrotne
przyspieszenie przeglądania przez funkcję on_sample bufora ze wzorcem
przebiegu.
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 12
-
• Skompilować, załadować i uruchomić bieżący projekt.
• Zaobserwować działanie projektu za pomocą aplikacji winscope.exe.
5.3. Podstawy
teoretyczne
Wraz z pakietem uruchomieniowym procesora ADSP2181, firma Analog Devices
dostarcza również kilka przykładowych programów, prezentujących możliwości tego
układu. W tym ćwiczeniu zapoznamy się z programem realizującym kodowanie
DTMF oraz efektami działania filtrów dolnoprzepustowych.
5.3.1. DTMF
DTMF – (ang. Dual Tone Multi Frequency) znany również jako Touch Tone lub
MTFPB (Multi-Frequency Push Button) jest to system generowania tonów
o odpowiedniej częstotliwości stosowany do identyfikacji wybierania numerów
w abonenckich cyfrowych centralach telefonicznych, opracowany w laboratoriach
firmy Bell Labs. System ten z
powodzeniem może być wykorzystywany
do sterowania interaktywnymi aplikacjami za pośrednictwem komutowanego łącza
telefonicznego.
Wybranie dowolnej cyfry z klawiatury tonowej aparatu telefonicznego powoduje
wygenerowanie dwóch sygnałów sinusoidalnych o różnych częstotliwościach
(tabela1). Zapewnia to jednoznaczną identyfikację każdego spośród 16 znaków.
Poniższy rysunek przedstawia klawiaturę tonową i zestawienie częstotliwości
odpowiadających poszczególnym cyfrom (np. wybranie cyfry 7 odpowiada
wygenerowaniu tonów o częstotliwościach 852 Hz i 1209 Hz.).
1209
Hz
1336 Hz 1477 Hz 1633 Hz
697 Hz
1 2 3 A
770 Hz
4 5 6 B
852 Hz
7 8 9 C
941 Hz
* 0 # D
Tabela 5. Częstotliwości generowane w systemie DTMF.
W odróżnieniu od mechanizmu impulsowego wybierania numeru, gdzie cyfrę określa
odpowiadająca jej liczba impulsów, system DTMF zapewnia znacznie bardziej
niezawodne działanie.
Ponadto system DTMF daje możliwość, już po uzyskaniu połączenia ze wskazanym
numerem aparatu przekazywanie sygnału zdalnie sterującego urządzeniem np.
można w ten sposób, za pośrednictwem telefonu, przesłać sygnał do urządzenia
włączającego oświetlenie, które współpracuje z telefonem odbierającym sygnał.
Kodowanie DTMF realizuje się sprzętowo przez specjalizowany układ scalony,
synchronizowany oscylatorem kwarcowym o częstotliwości 3,579545 MHz lub
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 13
-
programowo odtwarzając stabelaryzowany przebieg sinusoidalny o odpowiedniej
częstotliwości.
W tabeli 1 przedstawiono standardowe częstotliwości stosowane w kodowaniu DTMF,
stanowiące wartości wzorcowe; typowe wartości częstotliwości uzyskiwane
sprzętowo oraz częstotliwości osiągane przez realizację programową na procesorze
sygnałowym ADSP-2100.
Przedstawiona metoda kodowania (DTMF) znajduje szerokie zastosowanie w branży
usług telefonicznych takich jak np. całodobowy system informacji bankowej,
w którym rodzaj usługi wybierany jest tonowo.
5.3.2. Przykład realizacji kodowania sygnału DTMF
Do zapoznania się ze sposobem kodowania sygnału DTMF posłużymy się
programami DSP Studio i przykładem zaimplementowanym w programie EZ-KIT
Lite.
1. Uruchomić program DSP Studio.
2. Z menu Narzędzia wybrać polecenie Programy demonstracyjne.
Zostanie wówczas uruchomiony program monitora EZ-KIT Lite.
3. Z menu Options wybrać List Of Demos, spowoduje to wyświetlenie listy
zawierającej przyciski do uruchomienia przykładowych programów
wykonywanych przez procesor sygnałowy. Nacisnąć przycisk DTMF.
4. W oknie DTMF Demo, mamy do wyboru dwie opcje
• Generate dial tone /generuj ton wywołania/
• Generate DTMF digits /generuj cyfry DTMF/
5. Przechodzimy do środowiska DSP Studio i z menu Narzędzia wybieramy
polecenie Oscyloskop.
6. Naciśnięciem przycisku ....... uruchamiamy podgląd sygnału z wejścia karty
dźwiękowej.
Przyciskiem Close przerywamy działanie dema.
5.3.3. Przykład działania filtrów pasmowo przepustowych
Najbardziej popularne metody projektowania filtrów cyfrowych, omówiono dokładniej
we wprowadzeniu do ćwiczenia 6.
1. Wykonać czynności przedstawione w punktach 1 i 2 przykładu 1 (kodowanie
sygnału DTMF), a następnie uruchomić Loader programów do EZ-KIT Lite
2. W oknie List Of Demos nacisnąć przycisk Filters, pojawi się wówczas okno
Filtering Demo, zawierające opcje:
Laboratorium Cyfrowego Przetwarzania Sygnałów
Ćwiczenie 5 – Wprowadzenie do programowania procesora sygnałowego ADSP-2181
- 14
-
• Codec Input /Wejście kodeka /
− Bandpass 1 (328-428)Hz
− Bandpass 2 (521-710)Hz
− Bandpass 3 (825-1125)Hz
− Bandpass 4 (1308-1783)Hz
W przypadku wybrania jednej z wymienionych wyżej opcji sygnał do
filtrowania jest pobierany z wejścia kodeka, a następnie podlega filtrowaniu
pasmowoprzepustowemu w podanym zakresie częstotliwości. Oznacza to,
że np. częstotliwości z zakresu 521 do710 Hz są przepuszczane, pozostałe
zaś są tłumione.
Działanie tego rodzaju filtrów można ocenić (usłyszeć w słuchawkach) po
podłączeniu urządzenia EZ-BOX z kartą dźwiękową – źródłem sygnału
poddawanego filtracji.
• Noise Input /Wejście szumu/
− Bandpass 1 (328-428)Hz
− Bandpass 2 (521-710)Hz
− Bandpass 3 (825-1125)Hz
− Bandpass 4 (1308-1783)Hz
Tutaj szum generowany jest programowo i podobnie jak wyżej filtrowany. W
celu uruchomienia tego przykładu wystarczy zaznaczyć myszką
odpowiednią opcję.