Aufgabengruppe 8A: Versuche zum digitalen Signalprozessor

Aufgabe 8A-1: Analoge Filterschaltungen

Motivation:

Die in den folgenden drei Bildern dargestellten elektronischen Schaltungen werden wegen der verwendeten Bauteile Widerstand R (Resistor) und Kondensator C (Capacity) häufig als RC-Netzwerke bezeichnet. Kurz gesagt, besteht ihre Aufgabe darin, unterschiedliche Frequenzen aus einem Eingangssignal herauszufiltern. In dieser Aufgabe sollen Sie diese Schaltungen aufbauen und ihre Funktion untersuchen.

Mit dieser Aufgabe, die auf den ersten Blick etwas außerhalb des Hauptthemen-kreises des Mikrorechner-Praktikums (MRP) zu liegen scheint, sind zwei Lehr- und Lernziele verknüpft:

  1. Anhand der von Ihnen aufzubauenden, einfachen elektronischen Schaltungen sollen Sie die Funktion und die Bedienung der im MRP eingesetzten Laborgeräte kennenlernen. Insbesondere sollen Sie auch lernen, für die Einsendeaufgaben eine nachvollziehbare Versuchsbeschreibung anzufertigen, in der die jeweils vorgenommenen Einstellungen der Meßgeräte und der auf dem Oszilloskop beobachtete Signalverlauf protokolliert werden.
  2. Die Analyse der einfachen Schaltungsfunktionen soll Ihr Verständnis für typische Aufgabenstellungen der digitalen Signalprozessoren (DSP) stärken und Ihnen zeigen, daß diese viele Aufgaben erheblich flexibler lösen können.

Unvermeidbarerweise werden von Ihnen elektronische Grundkenntnisse erwartet, wie sie gewöhnlich im Physikunterricht an höheren Schulen vermittelt werden. Für den Fall, daß diese Kenntnisse bei Ihnen nicht mehr vorhanden sind, finden Sie im Anhang zu KE8 eine kurze Zusammenfassung, die Sie zur Vor- und Nachbereitung der Versuche heranziehen können.

Zur weiteren Vertiefung des Themas "analoge und digitale Filter" (insbesondere auch FIR-Filter) empfehlen wir das Standardwerk:

U. Tietze, Ch. Schenk: Halbleiterschaltungstechnik, Springer-Verlag, Berlin

Bevor Sie mit den praktischen Versuchen beginnen, lassen Sie sich nun von Ihrem Betreuer die Einstellung der Laborgeräte kurz erklären. Schließen Sie danach den Funktionsgenerator am Oszilloskop an und üben Sie selbständig die Bedienung der Geräte.

Beginnen Sie Ihre Versuche mit Schaltung I (s. Seite 2), dem Tiefpaß. Die Schaltungen II und III müssen Sie nur bearbeiten, wenn Ihnen dazu genügend Zeit zur Verfügung steht. Schließen Sie am Eingang E der Schaltung(en) den Funktionsgenerator und am Ausgang A das Oszilloskop an. Legen Sie das Eingangssignal außerdem auf den 2. Kanal des Oszilloskops.

Schaltung I: Tiefpaß


Bild 8A-1: Tiefpaß, Integrierglied

Schaltung II: Hochpaß


Bild 8A-2: Hochpaß, Differenzierglied

Schaltung III: Bandpaß


Bild 8A-3: Bandpaß

Versuch 1:

  1. Bauen Sie die Schaltung nach Bild 8A-1 auf. Erzeugen Sie mit dem Funktionsgenerator eine Sinusschwingung UE(t) (ohne Gleichspannungs-Offset) mit einer Amplitude (Maximal- bzw. Minimalwert) von (absolut) U = 5 Volt und einer Frequenz von 1 kHz.
  2. Variieren Sie die Frequenz von UE(t) in einem Bereich von ca. 0 Hz bis 50 kHz und beschreiben Sie das am Ausgang A auf dem Oszilloskop zu beobachtende Verhalten der Schaltung. Dabei soll die Einstellung der Kanalverstärkung unverändert bleiben.
  3. Skizzieren Sie die "Hüllkurve", die durch die (positiven und negativen) Amplitudenwerte des Ausgangssignals UA(t) entsteht, wenn man die Frequenz im o.g. Bereich variiert. Geben Sie die Frequenzen im logarithmischen Maßstab an (z.B. eine Dekade pro 2 cm oder 2 Kästchen). Kennzeichnen Sie die Frequenzwerte 50 Hz, 500 Hz, 1 kHz, 5 kHz, 50 kHz in Ihrer Skizze. Berechnen Sie außerdem die Grenzfrequenzen fg und tragen Sie diese in Ihre Diagramme ein. Interpretieren Sie anhand der Diagramme die oben genannte Bezeichnung der Schaltung: Tiefpaß.

Versuch 2:

  1. Geben Sie nun auf den Eingang E ein symmetrisches Rechtecksignal UE(t) (Square Wave, ohne Gleichspannungs-Offset) mit einer (absoluten) Amplitude von U = 5 Volt.
  2. Variieren Sie die Frequenz von UE(t) wiederum im Bereich von 0 Hz bis 50 kHz und beschreiben Sie verbal das am Ausgang A auf dem Oszilloskop zu beobachtende Verhalten der Schaltung. Skizzieren Sie die Signale UE(t) und UA(t) für die Frequenzen 50 Hz, 500 Hz, 1 kHz, 5 kHz, 50 kHz.
  3. Interpretieren Sie mit Hilfe dieser Skizzen den angegebenen Begriff "Integrierglied".
  4. Ermitteln Sie näherungsweise aus den Oszilloskop-Bildern die Zeitkonstante (s. Anhang), die das Verhalten der Schaltungen bestimmt. Vergleichen Sie das Ergebnis mit dem errechneten Wert. Kann man allein aus eindeutig auf die Werte der benutzten Bauteile (R, C) schließen ? Tragen Sie den errechneten Wert für in Ihre Diagramme ein.
  5. Welche Bedeutungen (im positiven und negativen Sinn) hat die betrachtete Schaltung I in der Digitaltechnik ? Wozu kann sie (bewußt) eingesetzt werden ? Wo tritt sie störend in Erscheinung ?

Versuche 3 und 4: (nur bei ausreichender Zeit)

Wiederholen Sie die Versuche 1 und 2 mit der Schaltung II (nach Bild 8A-2). Interpretieren Sie dabei die angegebenen Begriffe 'Hochpaß' und 'Differenzierglied'.

Versuche 5 und 6: (nur bei ausreichender Zeit)

Wiederholen Sie die Versuche 1 und 2 mit der Schaltung III (nach Bild 8A-3). Interpretieren Sie dabei den angegebenen Begriff 'Bandpaß'. Skizzieren Sie im Versuch 2 auch das Ausgangssignal für 1 kHz.

Aufgabe 8A-2: (nicht fürs Protokoll)

Motivation:

In dieser Aufgabe sollen Sie nun erfahren, wie ein digitaler Signalprozessor die Aufgabe der Filterung eines Signals erfüllt. Wir werden uns dabei auf die einfachste Form der digitalen Filter beschränken, den sog. FIR-Filtern (Finite Impulse Response). Diese hatten Sie bereits in der Einsendeaufgabe 7-3 kurz kennengelernt und dort erfahren, daß FIR-Filter häufig in Modems (Modulator/Demulator) eingesetzt werden, um Leitungsstörungen herauszufiltern. Im Bild 8A-4 ist der prinzipielle Aufbau eines FIR-Filters und seine Funktionsgleichung dargestellt.


Bild 8A-4: Aufbau eines FIR-Filters

Ein FIR-Filter der Ordnung N besteht aus einer Kette von N-1 Verzögerungsstufen (Taps), die das Eingangssignal E(t) jeweils um die Dauer T verzögern und dann an das folgende Glied weiterreichen. Die Zeitdauer T entspricht dabei gerade der Länge des Intervalls, mit dem das Signal abgetastet wird, also dem Kehrwert der Abtastfrequenz. Zu jedem Zeitpunkt (nach der Initialisierungsphase) liegen im Filter N Abtastwerte zur Auswertung vor: Die Abtastwerte werden mit den Koeffizienten ci gewichtet und die entstehenden Teilprodukte zum Ausgangswert A(t) aufaddiert. Sind, wie im Bild A-4 gezeigt, die Koeffizienten ci konstant, so liegt ein nicht-adaptiver Filter vor. Bei einem adaptiven Filter sind die Koeffizienten zeitabhängig.

Wegen des Fehlens jeder Rückkopplung (s. Bild 8A-4) spricht man bei den FIR-Filtern auch von "nichtrekursiven" Filtern (auch: Transversal-Filter). Diese Filter sind stabil, d.h. nach der Eingabe eines Signals mit begrenzter Amplitude und Zeitdauer stellt sich nach endlicher Zeit wieder der Ausgangszustand A=0 ein. Darauf ist auch die aus dem Englischen übersetzte Bezeichnung "Filter mit endlicher Impulsantwort" zurückzuführen. (Beachten Sie den Literaturhinweis auf Seite 1.)

Versuch:

Aus KE6 wissen Sie schon, daß sich Algorithmen der Form, wie sie im Bild 8A-4 für die Ausgangsfunktion eines FIR-Filters gezeigt ist, besonders gut durch einen DSP berechnen lassen. Durch geeignete Wahl der Parameter ci können durch ein und dasselbe DSP-Programm alle in der Aufgabe 8A-1 besprochenen analogen Filter und einige weitere Filtertypen durch FIR-Filter in weiten Grenzen nachgebildet werden. Ein solches Programm ist im Software-Paket des EZ-Kit Lite bereits als Demonstrationsprogramm implementiert.

Lassen Sie sich nun von Ihrem Betreuer die Benutzung des digitalen Signalverarbeitungssystems EZ-Kit Lite und seiner Software erklären.

  1. Stellen Sie am Funktionsgenerator ein Sinussignal mit einer Amplitude von 0,5 V (und einer Frequenz von 1 kHz) ein und überprüfen Sie es auf dem Oszilloskop. Schalten Sie die Laborgeräte aus und verbinden Sie diese nun mit dem EZ-Kit Lite (mit Hilfe der ausgeteilten Spezialkabel).
  2. Aktivieren Sie das Demonstrationsprogramm "Filter" der EZ-Kit-Lite-Software, schalten Sie die Laborgeräte ein und beobachten Sie das Ein- und Ausgangssignal auf dem Oszilloskop für den in Aufgabe 8A-1 festgelegten Frequenzbereich und für alle implementierten digitalen Filtertypen: Tiefpaß, Hochpaß, Bandpaß, Bandsperre. (Die Bandsperre läßt alle Signalfrequenzen passieren, die nicht im vorgegebenen Bereich liegen.) Bestimmen Sie näherungsweise die Grenzfrequenz bzw. die Resonanzfrequenz (s. Anhang D von KE8).
  3. Betrachten Sie auch das Ausgangssignal für alle Filtertypen, wenn der DSP das Eingangssignal durch ein (zufällig erzeugtes) Rauschsignal (noise) ersetzt.

Ausblick:

In der folgenden Aufgabe zum EZ-Kit Lite sollen Sie nun ein Programm zur Realisierung eines FIR-Filters selbst schreiben, implementieren und austesten. Dabei werden wir in zwei Schritte vorgehen:

  1. Zunächst werden Sie ein Programm entwickeln, mit dem der DSP über den Codec AD1847 ein Signal kontinuierlich einliest und dieses ohne weitere Verarbeitung über den Codec wieder ausgibt. Dieses Programm besteht aus den folgenden Hauptkomponenten:
  2. Dann wird dieses Programm um einen Programmteil zur Berechnung des FIR-Filters ergänzt.

Sie sollen die Lösung jeder Teilaufgabe so weit wie möglich zunächst mit dem Simulator SIM2181.EXE austesten. Erst wenn Sie das Programm vollständig entwickelt haben, müssen Sie es durch das EZ-Kit Lite ausführen lassen. Wir beginnen mit der Angabe eines Flußdiagrammes, das Ihnen die Programmentwicklung erleichtern soll. In mehreren Teilversuchen werden wir Sie dann Schritt für Schritt zur Lösung der gestellten Aufgabe führen.

Aufgabe 8A-3: Programm zur Bedienung des Codecs

(Analysieren Sie den Programmablauf zur Vorbereitung der Präsenzphase.)

Das folgende Bild soll Ihnen den Ablauf der Kommunikation zwischen DSP-Kern, serieller Schnittstelle (SPORT0) und Codec verdeutlichen.

DSP-Kern und SPORT0 kommunizieren über zwei Bereiche im internen Datenspeicher, die als zirkulare Puffer mit automatischer Pufferung angelegt sind. Beide Puffer werden von den Daten-Adreßgeneratoren des DSP-Kerns verwaltet, auf die aber auch der SPORT0 Zugriff hat. Der Datenaustausch zwischen beiden Komponenten geschieht asynchron, d.h., DSP-Kern und SPORT0 arbeiten mit verschiedenen Takten (CLKIN, SCLK0), und zwischen Senden und Empfangen von Daten kann eine "beliebige" Zeit vergehen. Eine Synchronisation zwischen Sender und Empfänger findet durch einen Interrupt immer dann statt, wenn die End-Adresse des jeweiligen Puffers angesprochen und danach das Indexregister wieder auf den Pufferanfang gestellt wird.

Ein dritter Puffer, INIT_CMDS, nimmt die Befehlswörter für den Codec auf. Sein Inhalt wird bei der Initialisierung des Programms und des Codecs sukzessiv über den Transmit-Puffer TX_BUF und den SPORT0 zum Codec übertragen. Die Übertragung zwischen SPORT0 und Codec findet im 32-Kanal-Modus statt. Dabei wird durch das Signal RFS0 der Beginn eines neuen Übertragungsrahmens angezeigt.

Teilaufgabe 1: Assembler-/Linker-Initialisierungen

In dieser Teilaufgabe sollen Sie die benötigten Variablen und Datenpuffer deklarieren und initialisieren sowie die Interrupttabelle geeignet aufbauen.

Teilaufgabe 2: Laufzeit-Initialisierungen

In dieser Teilaufgabe sollen Sie die benötigten Register der Daten-Adreßgeneratoren (DAGs) und der SPORT0-Schnittstelle sowie die Systemregister initialisieren.

Teilaufgabe 3: Interruptroutine zum Programmieren des Codecs

In dieser Teilaufgabe sollen Sie nun die Interruptroutine zur Übertragung der Steuerwörter (aus dem Puffer 'init_cmds') in den Codec und die Steuerung und Überwachung dieser Routine im Hauptprogramm programmieren.(Benutzen Sie in der Interruptroutine die Schattenregister, um ein ungewolltes Überschreiben der vom Hauptprogramm benötigten Registerwerte zu verhindern.)

Teilaufgabe 4: Autokalibrierung und Aktivierung der Codec-Ausgänge

Teilaufgabe 5: Interruptroutine zum Einlesen, Verarbeiten und Ausgeben der Abtastwerte (Samples)

Schließlich fehlt nur noch der Teil des Hauptprogramms und die Interruptroutine zum Empfangen von Abtastwerten sowie zu deren Verarbeitung und Ausgabe.

(Hinweis: In Teilaufgabe 7 wird er durch einen FIR-Filter weiterverarbeitet.)

Teilaufgabe 6:

In dieser Teilaufgabe sollen Sie nun das entwickelte Programm auf dem EZ-Kit Lite austesten und "zum Laufen" bringen.

Teilaufgabe 7: Programmierung des FIR-Filters

In dieser Aufgabe sollen Sie nun die einfache Interruptroutine aus Versuch 5 um einen FIR-Filter erweitern. Dieser Filter soll 129 Stufen besitzen. Die Koeffizienten Ci werden Ihnen in der Datei FIR1.DAT zur Verfügung gestellt und sollen mit der Direktive '.INIT' in Ihr Programm eingelesen werden.

Gehen Sie zur Lösung der Aufgabe in folgenden Schritten vor:

Aufgabengruppe 8B: Einfache Versuche zum Mikrocontroller C167

Motivation:

In dieser Aufgabengruppe sollen Sie auf sehr hardwarenaher Ebene mit typischen Mikrocontroller-Eigenschaften bekannt gemacht werden. Dazu verwenden Sie das I+ME EVABoard C167 2.0. Anhand kleiner Versuche werden Sie wichtige Signale und Funktionen analysieren und dabei auch lernen, einen einfachen Logikanalysator einzusetzen und zu bedienen. Zur Lösung der Aufgaben werden Sie sich intensiv mit den beiliegenden Handbüchern auseinander setzen müssen. Ein wichtiges Nebenziel dieser Aufgabengruppe ist es, die Arbeit mit diesen Unterlagen zu üben. Selbstverständlich müssen wiederum alle aufgezeichneten Signale und die verlangten Erklärungen, Interpretationen und Beschreibungen ins Protokoll aufgenommen werden.

Bevor Sie nun mit den Messungen beginnen, lassen Sie sich kurz von Ihrem Betreuer die Bedienung und die Software des C167-Systems (synonym: Board, Kit) und des Logikanalysators erklären.

Aufgabe 8B-1: Signalmessungen und Logikanalyse

Versuch 1: Systemtakt

Versuch 2: Rücksetzen (RESET) und Systemkonfiguration

Versuch 3: Chip-Select- und Waitstate-Logik

Adresse
Befehl
Assembler-Befehl
Bemerkung
000200
E6 02 0F 00
000204
F2 F0 00 B4
000208
F6 F0 00 B4
00020C
EA 00 00 02

Verbinden Sie zunächst das C167-Board mit der beiliegenden Adapterkarte! (Achtung: Verbinden Sie den CLK-Anschluß erst nach dem Starten des C167-Debuggers und seiner Initialisierung mit dem Logikanalysator !!)


Aufgabe 8B-2: Timer Unit

Versuch:

In dieser Aufgabe sollen Sie die Arbeit mit den universellen Zeitgebern/Zählern (General Purpose Timer) des C167 kennenlernen. Als "Versuchsobjekt" haben wir dazu den Timer 3 ausgewählt.

Aufgabengruppe 8C: Versuche zu den Peripheriemodulen des C167

Die folgenden Aufgaben sollen Sie insbesondere mit der Bedienung des Assemblers 'as14' vertraut machen. Benutzen Sie dazu das vorgegebende Programmgerüst 'main.asm'. Diese Datei finden Sie im Unterverzeichnis E:\C167. In dieses Programmgerüst sollen Sie die von Ihnen entwickelten Unterprogramme einfügen. Die Datei wird (Angabe ohne Erweiterung '.ASM' !) mit der Stapelverarbeitungsdatei 'asm.bat' assembliert und in das Intel-Hex-Format umgewandelt. Diese Datei können Sie im Debugger mit dem Menüpunkt 'File\Intel-Hex' in den C167 einlagern. Zum Editieren der Datei benutzen Sie bitte den integrierten Editor des Datei-Verwaltungsprogramms dn (DOS Navigator). Die Assemblerdatei kann auch in einem DOS-Fenster unter Windows assembliert werden.

Aufgabe 8C-1: Die CAPCOM-Einheiten

Der C167 besitzt Capture/Compare-Einheiten (CAPCOM units) mit insgesamt 32 Kanälen. Diese Kanäle können mit vier unabhängigen Zeitgebern (Timer) zusammenarbeiten. Die CAPCOM-Einheiten können einerseits als Reaktion auf das Auftreten eines externen oder internen Triggersignals den aktuellen Inhalt eines festgelegten Timers in ein Register ablegen (Capture). Andererseits können sie den aktuellen Inhalt eines Timer-Zählregisters mit einem vorgegebenden Wert vergleichen (Compare) und ein bestimmtes digitales Ausgangssignal generieren, ohne daß auf Software zurückgegriffen werden muß. Die CAPCOM-Einheiten können als Software-Zeitgeber (Timer), als Zähler für externe Ereignisse oder zur Erzeugung von Ausgangssignalen mit modulierten Pulsweiten eingesetzt werden. Beim Auftreten eines Capture-/Compare-Ereignisses kann jeweils ein Interrupt ausgelöst werden.

In der KE8 wurde bereits erwähnt, daß der C167 bis zu 56 Interruptquellen besitzt, die in 16 Prioritätsebenen eingeteilt werden. Außerdem kann jede Ebene noch einmal in 4 Prioritäten aufgeteilt werden. Machen Sie sich anhand des Manuals mit den CAPCOM-Einheiten vertraut und stellen Sie insbesondere fest, in welchen Registern die Interruptprioritäten der CAPCOM-Einheiten festgelegt werden.

Versuch 1: Interrupt-Erzeugung

In der Vorlagedatei 'main.asm' finden Sie ein Programm zur Erzeugung eines Lauflichts mit Hilfe des CAPCOM-Kanals CC28 und des Timers T7.

Versuch 2: Output Compare und Input Capture

Puls-Pausenverhältnis
Compare-Wert
Pulsdauer ms
Pausendauer ms
1:0.3
1:1
1:1.5

Aufgabe 8C-2: Die PWM-Einheiten

Versuch: Ausgabe eines pulsweitenmodulierten Signals

Im folgenden soll der PWM-Kanal 0 zur Ausgabe eines pulsweiten modulierten Signals eingesetzt werden.

PWMCON0
PWMCON1

f [kHz]
Pulsdauer
PP0
PW0
1
10%
2
33%
10
66%

PWMCON0
PWMCON1

Frequenz-bereich [kHz]
Pulsdauer
PP0
PW0
0,1-0,5
10%
0,5-1,0
20%
1,0-1,8
30%
1,8-2,3
60%
2,3-3,0
90%



Aufgabe 8C-3: Die PEC-Kanäle und der A/D-Wandler

Stellen Sie am Funktionsgenerator ein Sinussignal zwischen den Spannungswerten -0.4 V und +0.4 V ein. Die Frequenz soll 1kHz betragen. Benutzen Sie dazu den Ausgang des Funktionsgenerators mit 30dB-Dämpfung (bzw. 20dB).

Kontrollieren Sie die Ausgangsspannung auf dem Oszilloskop und lassen Sie die Einstellungen durch den Betreuer überprüfen. Schließen Sie erst danach den Funktionsgenerator an Pin 5 der Steckerleiste JP41 an.

Der Transfer der Daten soll unter Verwendung des PEC-Kanals 0 geschehen.

Welche Abtastrate wird verwendet ? Wie lange dauert eine Wandlung ? Erklären Sie das Wandlungsprinzip des A/D-Wandlers.