23
Praktikum zur Lehrveranstaltung “Mikrorechentechnik II“ Versuch Grundlagen der digitalen Signalverarbeitung

PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

Praktikum zur Lehrveranstaltung

“Mikrorechentechnik II“

Versuch

Grundlagen der digitalen Signalverarbeitung

Page 2: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

Inhaltsverzeichnis 1

Inhaltsverzeichnis

1 Einfuhrung und Versuchsziel 2

2 Ablauf und Bewertung 2

3 Grundlagen 33.1 DSP-Uberblick und -Anwendung . . . . . . . . . . . . . . . . . . . . . 33.2 ADSP-21161N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.3 Das EZ-KIT Lite Evaluation Board . . . . . . . . . . . . . . . . . . . . 53.4 VirtualDSP++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Praktikumsaufgaben 104.1 Programmvorlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.2 Main.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.3 Process Data.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.3.1 Praktikumsgruppen . . . . . . . . . . . . . . . . . . . . . . . . 124.3.2 Signalamplituden . . . . . . . . . . . . . . . . . . . . . . . . . . 124.3.3 Teilaufgabe 1 – Sinus-Signale . . . . . . . . . . . . . . . . . . . 134.3.4 Teilaufgabe 2 – Dreieck-Signale . . . . . . . . . . . . . . . . . . 144.3.5 Teilaufgabe 3 – Schwellwertschalter . . . . . . . . . . . . . . . . 154.3.6 Teilaufgabe 4 – Digitales Filter . . . . . . . . . . . . . . . . . . 16

5 Quelltexte 17

6 Arbeits- und Brandschutzhinweise 21

Page 3: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

1 Einfuhrung und Versuchsziel 2

1 Einfuhrung und Versuchsziel

Aufbauend auf dem Inhalt der Vorlesungen”Mikrorechentechnik I und II“ und dem

Praktikumsversuch”Programmierung in C“ sollen durch diesen Versuch die Kennt-

nisse und Fertigkeiten bezuglich der Programmierung in der Programmiersprache Cdurch die Losung von typischen Aufgabenstellungen auf dem Gebiet der digitalenSignalverarbeitung, wie der Realisierung von digitalen Signalgeneratoren und einesnichtrekursiven Digitalfilters, erweitert werden.

Gleichzeitig sollen Grundkenntnisse uber den Aufbau und die Arbeitsweise einer digi-talen Signalverarbeitungseinheit auf der Basis eines digitalen Signalprozessors vermit-telt werden. Neben der Prozessorarchitektur steht dabei die Vorgehensweise bei derSoftwareentwicklung im Vordergrund.

2 Ablauf und Bewertung

Zur Vorbereitung auf den Versuch sind die Versuchsanleitung, die Aufgabenstellun-gen und die C-Programmvorlagen durchzuarbeiten. Bis zum Versuchsbeginn solltendie Algorithmen fur die C-Programme zur Losung der Aufgabenstellungen erarbeitetwerden. Diese Algorithmen sind u.a. Gegenstand des Kolloquiums. Sie sind von derGruppe zu erlautern und zu diskutieren.

Nach der Einweisung in den Praktikumsplatz (Hardware- und Softwarekomponenten)sind die C-Vorlagen entsprechend der erarbeiteten Algorithmen zu erganzen. Anschlie-ßend sind die C-Programme mit dem C-Compiler im Debug-Mode zu compilieren,eventuell auftretende syntaktische Fehler sind zu beseitigen. Das Programm wird da-nach in den DSP geladen und gestartet. Dabei eventuell auftretende Fehler konnenmit Hilfe des Debuggers gefunden und korrigiert werden. Durch eine entsprechendemesstechnische Uberprufung ist die korrekte Umsetzung der vorgegebenen Aufgaben-stellungen nachzuweisen.

Das von der Gruppe anzufertigende Protokoll sollte eine kurze Darstellung der rea-lisierten Algorithmen, die kommentierten C-Quelltexte der erarbeiteten Losung, eineDiskussion der eventuell aufgetretenen Fehler und deren Beseitigung sowie die Mess-ergebnisse enthalten.

Die Leistung im Praktikum wird mit maximal 10 Punkten bewertet. Davon entfallen6 Punkte auf das Kolloquium, 2 Punkte auf die Versuchsdurchfuhrung und 2 Punkteauf das Protokoll.

Page 4: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

3 Grundlagen 3

3 Grundlagen

3.1 DSP-Uberblick und -Anwendung

Digitale Signalprozessoren (DSP) wurden in den fruhen 80er Jahren eingefuhrt undhaben sich seither rasant entwickelt. Sie unterscheiden sich durch ihr Design wesent-lich von gewohnlichen Mikroprozessoren, da sie fur charakteristische Bedurfnisse in derdigitalen Signalverarbeitung, wie beispielsweise fur die schnelle Berechnung von Multi-plikationen mit anschließender Addition (MAC), optimiert sind. Solche MAC-Befehlewerden in vielen Algorithmen der zeitdiskreten digitalen Signalverarbeitung, wie bei-spielsweise bei FIR-Filtern, haufig benotigt: y(n) =

∑M

i=0b(i) ∗ x(n − i). Folgende

Aufgaben mussen deshalb besonders effektiv implementierbar sein:

– Aufsummieren von Produkten,

– Operandentransport,

– Schleifenkontrolle,

– Ein- und Ausgabe.

DSPs enthalten deshalb parallele Hardware-Einheiten (Shifter, ALU, Multiplizierer).Außerdem sind einige Funktionen, die auf gewohnlichen Mikroprozessoren in Mikro-code realisiert sind, in schneller Hardware implementiert. DSPs konnen daher auchkomplexe Befehle in einem Takt-Zyklus abarbeiten.

Seit den ersten Modellen haben sich DSPs stark weiterentwickelt, weitere spezialisierteHardware-Einheiten wurden hinzugefugt, z.B. fur:

– Bit-reversed Adressierung bei FFTs,

– Zyklische Speicheradressierung (Ringpuffer),

– Boolsche Operationen,

– DMA,

– Mehrfache Speicherzugriffe in einem Taktzyklus.

Im Vergleich zu normalen CPUs, wie sie beispielsweise in PCs eingesetzt werden, kon-nen DSPs viele spezielle Aufgaben der digitalen Signalverarbeitung schneller und effi-zienter erledigen. Sie haben einen viel geringeren Stromverbrauch und sind preiswerter.Auch komplizierte lineare und nichtlineare Algorithmen konnen mit Hilfe von DSPsimplementiert werden, ein Wechsel von Funktionen ist realisierbar. Daher werden DSPsheute in vielen Anwendungen eingesetzt.

Fuhrende DSP-Hersteller sind unter anderen Texas Instruments, Freescale Semicon-ductor, Analog Devices und NXP. Die Funktionalitat von DSPs kann heute aber auchz.B. durch Field Programmable Gate Arrays (FPGA) oder RISC-Prozessoren erreichtwerden.

3.2 ADSP-21161N

Der ADSP-21161N (Analog Devices) ist ein vielseitig einsetzbarer 32-bit DSP, dermit bis zu 110 MHz getaktet werden kann. Abbildung 1 zeigt die Architektur diesesProzessors.

Page 5: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

3 Grundlagen 4

Abbildung 1: ADSP-21161N - Block-Diagramm

Er besitzt je zwei unabhangige Busse fur den Daten- und den Programmspeicher (datamemory bus (DM) and program memory bus (PM)). Deren Fahigkeiten wurden nocherweitert um die Moglichkeit, auch uber den PM Daten transferieren zu konnen (SuperHarvard Architecture (SHARC), auch Enhanced Harvard Architecture). Ein selektiverBefehls-Cache nimmt dabei diejenigen Befehle auf, bei deren Transfer ein Zugriffskon-flikt auf dem PM auftreten wurde. Dadurch wird es dem Prozessor moglich, in einemTaktzyklus vier Operanden (je zwei uber jeden Bus) und einen Befehl (aus dem Cache)abzurufen. Zwei Adressgeneratoren (data address generator (DAG)) stellen hardware-seitig z.B. Ringpuffer zur Verfugung. Der Prozessor vefugt uber 1 Mbit dual-portSRAM, was einem separaten I/O-Prozessor vom Core-Prozessor unabhangige Zugriffeermoglicht. Ein SDRAM-Interface erlaubt die Anbindung externen Speichers, der mitdem Prozessortakt betrieben werden kann. Fur 32-bit-Zugriffe sind damit Datenratenbis zu 440 MB/s erreichbar. Der Datentransfer kann auch vom eingebauten DMA-Controller gesteuert werden, der ebenso fur den Datenaustausch mit Peripheriegeratenoder mit einem Host-Prozessor eingesetzt werden kann. Fur Datenein- und -ausgabestehen daruber hinaus vier synchrone serielle Ports und ein Serial Peripheral Interface(SPI) zur Verfugung sowie 12 frei programmierbare Ein- bzw. Ausgange. Danebenbesitzt der ADSP-21161N zwei sog. Link Ports, die vornehmlich fur die Kommunika-tion in Multiprozessorsystemen eingesetzt werden. In solchen Multiprozessorsystemenkann auch ein separates Multiprocessor Interface eingesetzt werden, das z.B. eineneinheitlichen Adressraum fur den gesamten zur Verfugung stehenden internen Spei-cher bereitstellt und auch eine Zugriffssteuerung fur einen gemeinsamen Bus umfasst.Die Recheneinheit besteht aus zwei Processing Elements (PEX und PEY). Im Nor-malbetrieb wird nur PEX genutzt. PEY kann uber einen Eintrag im MODE-Registeraktiviert werden. Die Recheneinheit lauft dann als sog. single-instruction multiple-data engine (SIMD), d.h. beide Processing Elements arbeiten denselben Befehl ab,

Page 6: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

3 Grundlagen 5

Interrupt Taster

IRQ0 SW5IRQ1 SW6IRQ2 SW7

Tabelle 1: EZ-KIT Lite - Taster fur Interrupts

verwenden dazu jedoch unterschiedliche Daten. Jedes Processing Element besteht aus:

– ALU,

– Multiplizierer,

– Shifter,

– Register File, d.h. 16 primare und 16 sekundare 40-bit Register.

Diese Elemente sind parallel angeordnet und erlauben multifunction instructions, alsobeispielsweise eine Multiplikation und eine Addition in einem Taktzyklus. Unterstutztwerden folgende Datenformate:

– 32-bit single precision floating point,

– 40-bit entended precision floating point (zusatzliche 8 LSBs der Mantisse),

– 32-bit fixed point.

3.3 Das EZ-KIT Lite Evaluation Board

Das ADSP-21161N EZ-KIT Lite Evaluation Board ist die Hardware-Plattform furdieses Praktikum. Es enthalt als Recheneinheit den ADSP-21161N, daneben eine Reiheperipherer Schaltkreise. Abbildung 2 veranschaulicht die Architektur der Plattform.

Uber eine Reihe von Jumpern konnen verschiedene Varianten der Ein- und Ausgangs-beschaltung eingestellt sowie weitere Einstellungen vorgenommen werden. Die frei pro-grammierbaren I/O-Anschlusse werden fur 4 Taster und 6 LEDs genutzt, zwei freiprogrammierbare Anschlusse bleiben ungenutzt.

Fur die Steuerung von DSP-Programmen sind Interrupts von großer Bedeutung. Aufdem EZ-KIT Lite Evaluation Board konnen drei Interrupts vom Benutzer uber Tasterausgelost werden (siehe Tabelle 1).

Page 7: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

3 Grundlagen 6

Abbildung 2: ADSP-21161N EZ-KIT Lite - Systemarchitektur

Die Anschlußmoglichkeiten des Boards sind vielfaltig und auf den Einsatz als Audio-Prozessor abgestimmt. In Tabelle 2 findet sich eine komplette Liste aller Anschlußmog-lichkeiten, deren Lage auf dem Board in Abbildung 3 verdeutlicht wird. Aus dieser Fo-kussierung auf Audio-Daten resultieren auch die Bezeichnungen Left. . . bzw. Right. . . ,die sich im Quelltext finden.

Page 8: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

3 Grundlagen 7

Bezeichnung Verwendung Bemerkung

P2 USB Programmierung und DebuggingP4 Audio input digital optischP5 Audio input digital RCA (Cinch)P6 Audio input analog 4 x RCA (Cinch)P7 Audio input analog 3,5 mm KlinkensteckerP8 Audio output analog 8 x RCA (Cinch)P9 External Port 40-pin 50 mil, nicht bestucktP10 Host Processor Interface 20-pin, 50 mil, nicht bestucktP12 JTAG 14-pin, 100 mil

P13/14 Link PortP15 SPORT1/3 20-pin, 50 milP16 POWER 2,5 mm, 7 V DCP17 Audio output analog 3,5 mm KlinkensteckerP18 SPI 5-pin, 100 mil, nicht bestuckt

Tabelle 2: EZ-KIT Lite - Externe Anschlusse

Abbildung 3: EZ-KIT Lite - Externe Anschlusse

3.4 VirtualDSP++

Fur die Programmierung des ADSP-21161N bzw. des EZ-Kit Lite kommt die Softwa-re VirtualDSP++ in der Version 3.5 zum Einsatz. Diese kommt, wie auch der DSP

Page 9: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

3 Grundlagen 8

Button Funktion

Build Project

Load Program

Run

Toggle Breakpoint

Run to Cursor Position

Tabelle 3: VirtualDSP++ - Wichtige Buttons

selbst, von Analog Devices. Unterstutzt werden sowohl C/C++ als auch Assembler,es werden auch umfangreiche Debug-Moglichkeiten zur Verfugung gestellt. Die Einzel-komponenten

– C/C++ Compiler,

– Run-time Library,

– Assembler,

– Linker,

– Loader,

– Simulator und

– Emulator (separat zu erwerben)

sind in der Programmierumgebung vereinigt.

Die Steuerung kann grundsatzlich uber die Menuleiste erfolgen oder uber verschiedeneButtons, von denen einige wichtige in Tabelle 3 zusammengefasst sind. Die Buttonssind je nach Funktion gruppiert. Wie ublich wird die Bezeichnung bei Positionierungdes Mauszeigers uber dem Button eingeblendet, so dass eine intuitive Bedienung derOberflache moglich ist.

Die Gliederung der Oberflache (siehe Abbildung 4) in ein Projektfenster, ein Fensterfur den Quellcode, Fenster fur verschiedene Debug-Informationen (im Bild eines zurUberwachung von Variablen und eines zur Ansicht des verarbeiteten Assemblercodes)sowie ein Konsolen-Fenster fur Statusmeldungen ist in ahnlicher Form in vielen Pro-grammierumgebungen zu finden.

Page 10: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

3 Grundlagen 9

Abbildung 4: VirtualDSP++ - Oberflache

Im Rahmen des Praktikums sollte grundsatzlich in der Konfiguration”Debug“ gear-

beitet werden. Das erzeugte DSP-Programm mit der Endung”.dxe“ befindet sich dann

im Unterverzeichnis /Debug/ und kann zur Ausfuhrung auf das EZ-Kit Lite geladenwerden.

Page 11: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

4 Praktikumsaufgaben 10

4 Praktikumsaufgaben

4.1 Programmvorlagen

Die fur das Praktikum genutzten Programmvorlagen basieren auf dem mit der Softwarefur das EZ-KIT Lite mitgelieferten Beispiel CTalkThru. Das Projektverzeichnis enthaltim Wesentlichen:

– die Projektdatei MRT2.dpj,

– das Hauptprogramm Main.c,

– die Dateien ADDS 21161 EzKit.c und ADDS 21161 EzKit .asm, die eine Reiheinterner Funktionen enthalten,

– die Datei process data.c, in der die zu erstellenden Funktionen implementiertwerden sollen, sowie

– eine Reihe von Header-Dateien, welche viele hier im Detail nicht betrachteteDefinitionen enthalten.

Im Folgenden werden die wesentlichen Teile des Programmes kurz vorgestellt. Dieeigentlichen Programmieraufgaben sollen in der Funktion Process_Data() implemen-tiert werden. Auf diese Funktion wird weiter unten detailliert eingegangen.

4.2 Main.c

Im Hauptprogramm (Quelltext siehe Abschnitt 5) werden zunachst mit den Zeilen

Setup_ADSP21161N();

Program_SPORT02_TDM_Registers();

Program_SPORT02_DMA_Channels();

*(int *) SP02MCTL |= MCE;

einige grundsatzliche Einstellungen fur den DSP vorgenommen, z.B. bezuglich der freikonfigurierbaren I/O-Pins, die fur vom Nutzer ausgeloste Interrupts und fur LEDsverwendet werden. Fur die seriellen Ports werden Zeitmultiplex und Speicherzugriffkonfiguriert. Mit Setup_AD1836() wird anschließend der Audio-Codec konfiguriert,welcher fur die Ein- und Ausgabe der Signale verwendet werden wird. Es folgt eineinfacher Funktionstest, der die LEDs mehrfach blinken lasst. Mit

Init_LED_Flags();

Disable_IRQs();

Enable_IRQ1_IRQ2_SP0I();

werden die Einstellungen fur LEDs und Interrupts anschließend in der fur den Prakti-kumsversuch verwendeten Weise gesetzt. Mittels Interrupt-Dispatcher interruptf()werden anschließend die genutzten Interrupts mit den aufzurufenden Funktionen ver-bunden. Der Interrupt-Dispatcher erledigt dabei notwendige Aufgaben wie z.B. die Si-cherung von Registerinhalten, so dass die aufgerufenen Funktionen nur die gewunschteFunktionalitat enthalten.

Page 12: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

4 Praktikumsaufgaben 11

interruptf( SIG_IRQ2,Switch_State);

interruptf( SIG_IRQ1,Stop_Execution);

interruptf( SIG_SP0I,Transfer_Samples);

Mit IRQ2 (SIG_IRQ2), auslosbar durch Taster 7, wird die Funktion Switch_State()

aufgerufen. Diese inkrementiert die Variable State, die zur Umschaltung der Funk-tionalitat in der zu bearbeitenden Funktion Process_Data() herangezogen wird. DieVariable State kann dabei Werte von 0. . . 3 annehmen, die binar durch die LEDs 2und 3 angezeigt werden. Außerdem wird in der Funktion Switch_State() die Kontroll-Variable Max auf ihren Initialisierungswert zuruckgesetzt.

Mit IRQ1 (SIG_IRQ1), auslosbar durch Taster 6, wird die Funktion Stop_Execution()

aufgerufen. Diese setzt die Variable Run = false;, wodurch die Abarbeitung derwhile-Schleife (siehe unten) und damit das Hauptprogramm beendet wird. Die Status-LEDs 2 und 3 werden geloscht, statt dessen die LED 5 gesetzt.

Der Interrupt SIG_SP0I wird nach Beendigung eines DMA-Transfers ausgelost, d.h.nachdem vom Audio-Codec neue Abtastwerte in den Speicher des DSP geschriebenwurden. Die aufgerufene Funktion Transfer_Samples() ubernimmt mit Hilfe derFunktionen Receive_Samples() und Transmit_Samples() die Zuweisung der im Spei-cher befindlichen Werte zu den im Programm genutzten Variablen bzw. umgekehrt.In der Funktion Transfer_Samples() finden auch notwendige Umwandlungen des imProgramm verwendeten Floating-Point-Formats in 32-Bit Fixed-Point Integer statt,die in Zweierkomplement-Darstellung zum Audio-Codec gelangen bzw. von dort gelie-fert werden. Die auszugebenden Werte werden von der Funktion Transfer_Samples()

auf den Wertebereich -1. . . +1 begrenzt.

Zur Vereinfachung wird von der Funktion Transfer_Samples() in beide Richtungennur jeweils ein Stereo-Kanal weitergeleitet, wobei jeweils Kanal 2 benutzt wird. Dahertauchen im Programm nur die Variablen Left_In und Right_In bzw. Left_Out undRight_Out ohne eine weitere Kanalnumerierung auf. Außerdem werden als Indikatorfur das laufende Programm uber den Aufruf der Funktion Toggle_Run_Flag() dieLEDs 6 und 7 mit einer Periode von 1 Sekunde geschaltet.

Nach diesen Vorbereitungen wird mit der Schleife

while (Run)

Process_Data();

asm("idle;");

der Teil des Hauptprogrammes betreten, der bis zur Beendigung des Programmesnicht wieder verlassen wird. Nach der Funktion Process_Data(), die in einem folgen-den Abschnitt noch naher behandelt wird, folgt die Anweisung asm("idle;"), welcheden Prozessor quasi anhalt. Die Programmabarbeitung wird nun nur durch Inter-rupts gesteuert. Hat der Audio-Codec neue Abtastwerte in den Speicher geschrieben,wird uber den ausgelosten Interrupt SIG_SP0I und die dadurch aufgerufene Funkti-on Transfer_Samples() die Ubergabe bzw. Ubernahme der Werte realisiert, bevorin einem neuen Schleifendurchlauf mit dem Aufruf von Process_Data() die Verar-beitung der Werte und die Generierung neuer Ausgabewerte erfolgt. Der durch denAudio-Codec vorgegebene Takt wird damit auch dann genutzt, wenn die Abtastwerte

Page 13: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

4 Praktikumsaufgaben 12

selbst nicht verarbeitet werden und die Generierung der Ausgabewerte ohne Beruck-sichtigung von Eingangswerten erfolgt.

4.3 Process Data.c

In der Funktion Process_Data(), die in der Datei Process_Data.c (Quelltext sieheAbschnitt 5) enthalten ist, wird die Verarbeitung der Daten implementiert, d.h. dieBehandlung der vom Audio-Codec kommenden Abtastwerte bzw. die Generierung ei-gener Signale. Da der Aufruf der Funktion Process_Data(), wie oben beschrieben,uber den Interrupt SIG_SP0I nach dem erfolgten Transfer eines Wertes vom bzw. zumWandler erfolgt, steht mit jedem Aufruf also nur ein Abtastwert des Eingangssignalszur Verfugung und es wird nur ein Punkt der zu erzeugenden Funktion berechnet.

Zu Beginn erfolgen die Definitionen fur einige Konstanten sowie die Deklaration der ex-tern definierten Variablen. Danach werden einige nur in der Funktion Process_Data()

verwendete Variablen definiert und initialisiert. In der Funktion Process_Data() selbstsollte zunachst die Berechnung der benotigten Kontroll-Variablen erfolgen. Dem schließtsich eine Switch-Anweisung an, die entsprechend der moglichen Werte fur die VariableState vier verschiedene Falle unterscheidet. Jeder dieser Falle steht fur eine zu losendeProgrammieraufgabe, die nachfolgend erlautert werden.

4.3.1 Praktikumsgruppen

Die weiter unten im Detail vorgestellten Aufgaben sind in die Gruppen

A und B eingeteilt. Entsprechend der Einschreibung soll die Gruppe, wel-

che sich zuerst fur einen Termin eintragt, die Aufgabengruppe A, die sich

danach eintragende Gruppe die Aufgabengruppe B bearbeiten.

4.3.2 Signalamplituden

Vorab sind noch einige klarende Worte zu den Signalamplituden notwendig.

Bei den hier verwendeten Anschlussen des EZ-KIT Lite Evaluation Boards handelt essich um Cinch-Steckverbinder (eine andere Bezeichnung lautet RCA, was von der Ra-dio Corporation of America herruhrt, welche diese Steckverbinder einst entwickelte).Da fur den analogen Betrieb der Ausgangswiderstand nicht konkret festgelegt ist undi.A. etwa 2,5. . . 5 kΩ betragt, ist die Angabe der Spannung am angepassten Ausgangnicht pauschal moglich. Daher werden in den folgenden Abschnitten auch keine An-gaben in Volt, sondern nur Angaben als einheitsloser Zahlenwert zu finden sein. DieseZahlen beziehen sich dann auf die zu berechnenden Signale, deren Werte in der Funk-tion Transfer_Samples() ohnehin auf den Bereich -1. . . +1 begrenzt werden. EineAmplitude von 1 stellt also den maximal moglichen Wert dar. Fur die Messung mitdem Oszilloskop sollte dessen Eingang hochohmig sein.

Da das Board vorrangig fur die Verarbeitung von Audio-Signalen vorgesehen ist, sindauch einige Filter vorhanden, die die Signale auf den Audio-Bereich begrenzen. DieErzeugung sehr steiler Signalflanken ist daher nicht moglich, es tritt in diesen Falleneine Signalverformung auf. Dies ist auch bei der Generierung der geforderten Signalezu beachten, der Signalverlauf sollte also kontinuierlich, d.h. ohne Sprunge, sein.

Page 14: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

4 Praktikumsaufgaben 13

4.3.3 Teilaufgabe 1 – Sinus-Signale

Die erste Teilaufgabe (State = 0) besteht in der Generierung zweier Sinus-Signale. Furdie Berechnung sollte die Funktion float sinf(float) eingesetzt werden.

Gruppe A: Auf dem rechten Kanal (Right_Out) soll ein Sinus-Signal mit einer Fre-quenz von 1 kHz, auf dem linken Kanal (Left_Out) eines mit der Frequenz 2 kHzausgegeben werden. Die Amplitude soll in beiden Fallen 1 betragen. Das Ergebniszeigt Bild 5.

Abbildung 5: Teilaufgabe 1 – Sinus-Signale (Gruppe A)

Gruppe B: Auf beiden Kanalen soll ein Sinus-Signal mit der Frequenz 1 kHz ausge-geben werden. Das Signal auf dem rechten Kanal (Right_Out) soll die Amplitude 1,das auf dem linken Kanal (Left_Out) die Amplitude 0,5 besitzen. Das Ergebnis zeigtBild 6.

Abbildung 6: Teilaufgabe 1 – Sinus-Signale (Gruppe B)

Page 15: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

4 Praktikumsaufgaben 14

4.3.4 Teilaufgabe 2 – Dreieck-Signale

Gruppe A: Als zweite Teilaufgabe (State = 1) sollen zwei Dreieck-Signale generiertund auf dem rechten bzw. linken Kanal ausgegeben werden. Beide Signale sollen eineFrequenz von 1 kHz und eine Amplitude von 1 besitzen. Eines der Signale soll gegen-uber dem anderen um 1/4 der Periode verschoben sein. Das Ergebnis sollte etwa wiein Bild 7 aussehen.

Abbildung 7: Teilaufgabe 2 – Dreieck-Signale (Gruppe A)

Gruppe B: Als zweite Teilaufgabe (State = 1) sollen zwei Sagezahn-Signale generiertund auf dem rechten bzw. linken Kanal ausgegeben werden. Beide Signale sollen eineFrequenz von 1 kHz und eine Amplitude von 1 besitzen. Dabei soll das Signal aufdem rechten Kanal eine Anstiegszeit von 80 % und eine Abfallzeit von 20 % derPeriodendauer haben, das Signal auf dem linken Kanal 20 % Anstiegs- und 80 %Abfallzeit. Das Ergebnis zeigt Bild 8.

Abbildung 8: Teilaufgabe 2 – Sagezahn-Signale (Gruppe B)

Page 16: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

4 Praktikumsaufgaben 15

4.3.5 Teilaufgabe 3 – Schwellwertschalter

Die dritte Teilaufgabe (State = 2) besteht in der Realisierung eines Schwellwertschal-ters. Dazu ist zunachst ein Eingangssignal mit einer Frequenz von ca. 100 Hz und einerAmplitude von 1 V in einen der Eingange einzuspeisen. Das empfangene Signal soll zuKontrollzwecken auf dem rechten Kanal wieder ausgegeben werden.

Gruppe A: Auf dem linken Kanal soll ein Signal mit einer Amplitude von 1 generiertwerden, welches fur den Fall, dass das Eingangssignal kleiner als 80 % seines Maxi-malwertes ist, eine Frequenz von 1 kHz hat. Fur den Fall, dass das Eingangssignalmehr als 80 % seines Maximalwertes aufweist, soll die Frequenz 5 kHz betragen. DasErgebnis sollte dann etwa so wie in Bild 9 aussehen.

Abbildung 9: Teilaufgabe 3 – Schwellwert-Signal (Gruppe A)

Gruppe B: Auf dem linken Kanal soll ein Signal generiert werden, welches eine Fre-quenz von 5 kHz hat. Die Amplitude dieses Signales soll 1 betragen fur den Fall, dassdas Eingangssignal mehr als 80 % seines Maximalwertes aufweist. Ist das Eingangssi-gnal kleiner als 80 % seines Maximalwertes, soll die Amplitude des generierten Signales0,5 betragen. Das Ergebnis zeigt Bild 10.

Abbildung 10: Teilaufgabe 3 – Schwellwert-Signal (Gruppe B)

Page 17: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

4 Praktikumsaufgaben 16

4.3.6 Teilaufgabe 4 – Digitales Filter

Die Realisierung eines nichtrekursiven Digitalfilters bildet die Teilaufgabe vier (State =3) und ist fur beide Gruppen identisch. Das prinzipielle Aussehen des Filters ist inAbbildung 11 zu sehen.

Abbildung 11: Realisierung eines nichtrekursiven Digitalfilters

Das Verhalten des Filters beruht auf der Addition des aktuellen Abtastwertes x(n) undeines fruheren Abtastwertes x(n− i). Die zeitliche Verschiebung der beiden zu addie-renden Signale entspricht damit i ∗ T (T : Abtastperiode), es kommt also zu einer fre-quenzabhangigen Phasenverschiebung. Bei einer Phasenverschiebung von m ∗ 2π,m =0, 1, 2 . . . , entsteht ein Signal doppelter Amplitude – der Durchlassbereich des Fil-ters. Bei einer Verschiebung von π +m ∗ 2π,m = 0, 1, 2 . . . , wird das Signal ausge-loscht – der Sperrbereich des Filters.

Das Eingangssignal soll zu Kontrollzwecken auf dem rechten Kanal direkt ausgegebenwerden. Fur den linken Kanal ist ein Filter vom Grad i = 20 zu realisieren. Fur die Ska-lierung des Ausgangssignales ist der Faktor a (siehe Abbildung 11) so zu wahlen, dassdie maximale Amplitude des Ausgangssignales auf den Wert 1 normalisiert wird. DieFrequenzen, fur die Minima bzw. Maxima des Ausgangssignales zu erwarten sind, sindzu berechnen, die Korrektheit der Implementierung ist entsprechend zu kontrollieren.

Page 18: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

5 Quelltexte 17

5 Quelltexte

main.c

/*********************************************************/

/* Praktikum Mikrorechentechnik II */

/* Student’s practice Microcomputing II */

/* */

/* Function generator and digital FIR filter */

/* */

/* by A. Schmidt, TNT, IfN, TU Dresden */

/* April/May 2012 */

/* */

/* based on the CTalkThru example given for the EZ-Kit */

/* ADSP-21161N by Analog Devices */

/*********************************************************/

#include "ADDS_21161_EzKit.h"

#include <def21161.h>

#include <math.h>

#include <signal.h>

asm ("#include <def21161.h>");

/*** variables *******************************************/

int a = 0; // for simple timer test

int State = 0; // to control application

bool Run = true; // run program, as long as run = true

void main()

/* Setup Interrupt edges, I/O directions and SPORTs */

Setup_ADSP21161N();

Program_SPORT02_TDM_Registers();

Program_SPORT02_DMA_Channels();

*(int *) SP02MCTL |= MCE;

/* Setup audio codec, SPORT0 and SPORT2*/

Setup_AD1836();

Page 19: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

5 Quelltexte 18

/* execute a simple timer test */

a = 0;

Init_Timer(10000000);

interrupt(SIG_TMZ0,Timer_Test_Function);

while ( a < 10 )

asm("idle;");

Stop_Timer();

/* Init LEDs */

Init_LED_Flags();

/* disable all interrupts except used ones */

Disable_IRQs();

Enable_IRQ1_IRQ2_SP0I();

/* set function for IRQ2, i.e. "SW7 pressed", to change state */

interruptf( SIG_IRQ2,Switch_State);

/* set function for IRQ1, i.e. "SW6 pressed", to stop program */

interruptf( SIG_IRQ1,Stop_Execution);

/* set function for SP01 to transfer signals */

interruptf( SIG_SP0I,Transfer_Samples);

while (Run)

Process_Data();

asm("idle;");

Page 20: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

5 Quelltexte 19

process data.c

/*********************************************************/

/* Praktikum Mikrorechentechnik II */

/* Student’s practice Microcomputing II */

/* */

/* Function generator and digital FIR filter */

/* */

/* by A. Schmidt, TNT, IfN, TU Dresden */

/* October 2013 */

/*********************************************************/

#include "ADDS_21161_EzKit.h"

#include <def21161.h>

#include <math.h>

/*********************************************************/

/* sampling frequency : 50 kHz */

/* input signals : Right_In, Left_In */

/* output signals : Right_Out, Left_Out */

/* input/output signal type: float */

/* */

/* output signals externally limited to -1..+1 */

/*********************************************************/

/*** constants and extern variables***********************/

const float PI = 3.14159;

const int SAMPLINGRATE = 50000;

extern int State;

extern float Left_In;

extern float Right_In;

extern float Left_Out;

extern float Right_Out;

/*** variables *******************************************/

int f = 0; // control variable

int h = 0; // control variable

int NumPoints = 1; // control variable

int Degree = 20; // degree of the filter, i.e. tap number

float DelayLine[20]; // delay line for filter of degree 20

int Index = 0; // index for delay line

float Max = -10.0; // to keep the maximum, initiated with a

// value well below any input signal

Page 21: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

5 Quelltexte 20

/*** do the processing ***********************************/

void Process_Data()

/*********************************************************/

/* place here code for control signals */

switch (State)

case 0:

/*********************************************************/

/* place here code for sinusoidal signals */

break;

/*********************************************************/

case 1:

/*********************************************************/

/* place here code for triangle / sawtooth signals */

break;

/*********************************************************/

case 2:

/*********************************************************/

/* place here code for threshold signal */

break;

/*********************************************************/

case 3:

/*********************************************************/

/* place here code for digital filter */

break;

/*********************************************************/

Page 22: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

6 Arbeits- und Brandschutzhinweise 21

6 Arbeits- und Brandschutzhinweise

Vorbeugende Maßnahmen:

– Die Praktikumsteilnehmer haben sich so zu verhalten, dassGefahrensituationen und Unfalle vermieden werden.

– Die Befugnis zum Bedienen und Nutzen von Geraten ist auf den zugewiesenenPraktikumsplatz beschrankt.

– Eingriffe in die zum Praktikumsaufbau gehorenden Gerate sind nicht erlaubt.

– Der Anschluss und der Betrieb privater Gerate in den Praktikumsraumen istverboten.

– Defekte an Geraten oder Gebaudeeinrichtungen sind unverzuglich demBetreuer mitzuteilen. Betroffene Gerate sind außer Betrieb zu nehmen. AnderePersonen sind vor Gefahren zu warnen.

– Den Anweisungen der Praktikumsbetreuer bzw. anderer aufsichtsfuhrenderPersonen ist unbedingt Folge zu leisten.

– Betriebsfremde durfen sich nur mit Erlaubnis des Praktikumsbetreuers in denPraktikumsraumen aufhalten.

– Rauchen und Umgang mit offenem Feuer ist nicht gestattet.

– Nach Ende des Praktikums ist der Arbeitsplatz in sauberem und aufgeraumtemZustand zu hinterlassen.

– Außergewohnliche Ereignisse bzw. besondere Vorkommnisse sind umgehenddem Betreuer zu melden.

Verhalten im Falle eines Brandes: MELDEN - RETTEN - LOSCHEN

– FEUER MELDEN:

- Notruf 112 der Feuerwehr (von jedem Telefon aus moglich) oder NotrufHA 34515 der technischen Leitzentrale der TUD

- Deutliche, genaue und vollstandige Angaben:

. Wo brennt es?

. Was brennt?

. Angaben zu verletzten oder gefahrdeten Personen

. Wer meldet?

– PERSONEN RETTEN:

- Erste Hilfe leisten

- Weitere Hilfe organisieren, medizinische Hilfe anfordern

- Gefahrenbereich raumen; Fluchtwege benutzen, keine Aufzuge

- Andere Personen warnen, Sammelpatz (Platz vor TurmeingangBarkhausenbau) aufsuchen

- Behinderten und alteren Personen helfen

– LOSCHVERSUCH UNTERNEHMEN

Page 23: PraktikumzurLehrveranstaltung “MikrorechentechnikII“ · 2016-05-09 · 3 Grundlagen 3 3 Grundlagen 3.1 DSP-Uberblickund-Anwendung¨ Digitale Signalprozessoren (DSP) wurden in

6 Arbeits- und Brandschutzhinweise 22

- Feuerloscher verwenden (Standorte: Gange des Barkhausenbaus), dabeinicht selbst gefahrden

- Fenster und Turen schließen, aber nicht abschließen

- Moglichst elektrische Verbraucher abschalten

Rufnummern fur Notfalle:

– Feuerwehr und Rettungsdienst: 112

– Polizei: 110

– TUD - Notruf: HA 34515

– Betriebsarztlicher Dienst Dr. Romer: HA 36199

– Klinikum Friedrichstadt: 0 480 0 (Amtsanschluss), Zentrale Notaufnahme HausC: 480 1938