background image

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 

background image

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.  

background image

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. 

background image

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), 

background image

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 

 _____ 

background image

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ą. 

 

background image

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 

background image

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. 

background image

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 

background image

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.

 

background image

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.

 

background image

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 

background image

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: 

 

background image

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ę.