Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht...

43

Transcript of Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht...

Page 1: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Technische Universität Berlin

Fachgebiet Elektronik und medizinische Signalverarbeitung

Sommersemester 2009

Praktikum Digitale Systeme - NetXBau eines digitalen Oszilloskops

Tutor: Manuel Borchers

Gong Yegin, Liang Song, Zhang Rui

Andreas Baranek, Daniel Kramlinger

Mathias Hop, Sumon Kamal, Arne Voigt

9. August 2009

Page 2: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem
Page 3: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Inhaltsverzeichnis

1 Einleitung 51.1 Der NetX allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Das (digitale) Oszilloskop allgemein . . . . . . . . . . . . . . . . . . . 7

2 Das System 92.1 Die einzelnen Komponenten im kurzen Überblick . . . . . . . . . . . 9

2.1.1 Das Erweiterungsboard . . . . . . . . . . . . . . . . . . . . . . 92.1.2 Das NetX Developerboard . . . . . . . . . . . . . . . . . . . . 92.1.3 Das Displayboard . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2 Das Erweiterungsboard . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2.1 Funktionsprinzip . . . . . . . . . . . . . . . . . . . . . . . . . 112.2.2 Die Verstärkerschaltung . . . . . . . . . . . . . . . . . . . . . 112.2.3 Die AD-Wandlungsschaltung und Control von NetX 500 . . . 132.2.4 FIFO-Speicher Schaltung und Control von NetX . . . . . . . . 15

2.3 Die Steuerungssoftware/NetX-Board . . . . . . . . . . . . . . . . . . 192.3.1 Steuerung des Erweiterungboards . . . . . . . . . . . . . . . . 192.3.2 Erkennen eines Triggerpunktes . . . . . . . . . . . . . . . . . . 20

2.4 Die Anzeige des Oszilloskops . . . . . . . . . . . . . . . . . . . . . . . 232.4.1 Übersicht über die Anzeigebereiche . . . . . . . . . . . . . . . 232.4.2 Erzeugung des Anzeigebildes . . . . . . . . . . . . . . . . . . . 242.4.3 Funktionen des Oszilloskops und Menü-Baum . . . . . . . . . 252.4.4 Die Menütopologie . . . . . . . . . . . . . . . . . . . . . . . . 29

2.5 Bedieninterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.5.1 Übersicht über das Bedieninterface . . . . . . . . . . . . . . . 312.5.2 Bedienung der Tasterplatine . . . . . . . . . . . . . . . . . . . 332.5.3 Steuerungsprogramm . . . . . . . . . . . . . . . . . . . . . . . 342.5.4 UART-Schnittstelle im netX500 . . . . . . . . . . . . . . . . . 35

2.6 Programmaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.6.1 Datentypen- und Funktionsübersicht . . . . . . . . . . . . . . 362.6.2 Modulabhängigkeiten . . . . . . . . . . . . . . . . . . . . . . . 382.6.3 Softwareübersicht . . . . . . . . . . . . . . . . . . . . . . . . . 39

3 Schluss 41

4 Anhang 43

Page 4: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem
Page 5: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

1 Einleitung

Das Praktikum Digitale System - NetX im Fachgebiet Elektronik und medizinischeSignalverarbeitung beschäftigt sich mit unterschiedlichsten Projekten, die allesamtauf der NetX Systemarchitektur basieren. Diese wird in Form eines Evaluations-baords durch die Firma Hilscher SoC Technology gestellt.

In diesem Projekt entschieden wir uns ein digitales Oszilloskop zu entwickeln. Diesessollte denen auf dem Markt gängigen digitalen Oszilloskopen relativ ähnlich sein unddamit eine relativ hohe Abtastrate aufweisen, um auch hochfrequente Signalverläufedarzustellen. Es sollte über die wichtigsten Eigenschaften verfügen, wie die Einstel-lung eines Triggerpunktes oder die Darstellung von mindestens zwei Kanälen.Weiterhin sollte es leicht erweiterbar sein, um Funktionalitäten wie z.B. eine Anbin-dung per Ethernet oder USB an einen Rechner zu ermöglichenn. Somit wäre dannunter anderem eine Darstellung der gemessenen Signale in einem Browser oder ineiner speziellen Software möglich.

1.1 Der NetX allgemein

"Der netX ist ein hoch integrierter Netzwerk Controller mit einer neuen, auf Kom-munikation und maximalen Datendurchsatz optimierten Systemarchitektur.

Basierend auf die mit 200 MHz getaktete 32-Bit CPU ARM 926EJ-S verfügt erüber Memory Management Unit, Caches, DSP- und Java Erweiterungen. Der in-terne Speicher von 144 KByte RAM und 32 KByte ROM, der den Bootloader ent-hält ist für kleinere Applikationen ausreichend, während für Windows CE und Li-nux über den 32-Bit Memory-Controller Speicher extern mit SDRAM, SRAM oderFLASH erweitert wird. Die Anbindung an einen übergeordneten Host erfolgt überdas Dual-Port-Memory Interface, welches für stand-alone Applikationen auch als 16-Bit Erweiterungsbus kon�gurierbar ist. Umfangreiche Peripheriefunktionen, serielleSchnittstellen wie UART, USB, SPI, I2C, sowie der integrierte Gra�k-Controller er-lauben ein groÿes Spektrum an Einsatzmöglichkeiten. Jedoch erst der zentrale DatenSwitch und die vier frei kon�gurierbaren Kommunikationskanäle mit ihrer eigenenIntelligenz sind das Alleinstellungsmerkmal des netX als "high end" Netzwerk Con-troller.

Der Daten Switch verbindet über fünf Datenpfade die ARMCPU und die Kommunikations-, Gra�k- und Host-Controller mit dem Speicher oder den Peripherieeinheiten. Da-durch übertragen die Controller ihre Daten parallel, im Gegensatz zu traditionellen,sequentiellen Architekturen mit nur einem gemeinsamen Datenbus und zusätzlichenBuszuteilungszyklen.

Die Controller der vier Kommunikationskanäle sind zweistu�g aufgebaut und un-tereinander identisch. Sie bestehen aus dedizierten ALUs und speziellen Logikein-heiten, die über Microcode ihre jeweilige Protokollfunktion zugewiesen bekommen.Für Ethernet enthalten zwei Kanäle zusätzlich einen integrierten PHY. Der Medium-

5

Page 6: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Access-Controller xMAC sendet bzw. empfängt Daten gemäÿ dem jeweiligen Bus-zugri�sverfahren und kodiert bzw. konvertiert diese in eine Byte-Darstellung. DerProtocol-Execution-Controller xPEC fasst diese zu Datenpaketen zusammen undsteuert den Telegrammverkehr. Diese werden per DMA blockweise über den Spei-cher der ARM ausgetauscht. Alternativ steht jedem Kanal ein Dual-Port-Memoryfür Statusinformationen oder als lokales Datenabbild zur Verfügung.

Mit den intelligenten Kommunikations-ALUs realisiert der netX die unterschied-lichsten Protokolle und Protokoll- Kombinationen und kann diese unabhängig vonden Reaktionszeiten der CPU synchronisieren - ein absolutes Novum in der indus-triellen Kommunikationstechnik." 1

Abbildung 1: Blockdiagramm des NetX (Quelle: Hilscher)

1http://de.hilscher.com/�les_datasheets/D_4700eb29d0e39_de.pdf

6

Page 7: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

1.2 Das (digitale) Oszilloskop allgemein

"Ein Oszilloskop ist ein elektronisches Messgerät zur optischen Darstellung eineroder mehrerer Spannungen und deren zeitlichen Verlauf in einem zweidimensionalenKoordinatensystem. Das Oszilloskop stellt einen Verlaufsgraphen auf einem Bild-schirm dar, wobei üblicherweise die (horizontale) X-Achse (Abszisse) die Zeitachseist und die anzuzeigenden Spannungen auf der (vertikalen) Y-Achse (Ordinate) ab-gebildet werden. Das so entstehende Bild wird als Oszillogramm bezeichnet. Es gibtanaloge und digitale Oszilloskope, wobei analoge Geräte ausschlieÿlich eine Katho-denstrahlröhre zur Anzeige benutzen (Kathodenstrahloszilloskop).

Mit einem Oszilloskop kann man nicht nur die Gröÿe einer Gleich- oder Wech-selspannung bestimmen, sondern vor allem ihren zeitlichen Verlauf (die Form derSpannung) betrachten. Meistens werden die zu messenden Spannungen über BNC-Buchsen auf der Frontseite unter Verwendung eines Tastkopfes (auch Sonden ge-nannt) angeschlossen. Die meisten Oszilloskope besitzen einen Eingang für die X-Ablenkung, wodurch nicht nur zeitabhängige Funktionen dargestellt werden kön-nen (t-Y-Darstellung), sondern auch X-Y-Darstellungen (wie etwa Lissajous-Figurenoder Kennlinien)." 2

Abbildung 2: Das digitale Oszilloskop (Quelle: Wikipedia)

2http://de.wikipedia.org/wiki/Oszilloskop

7

Page 8: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem
Page 9: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2 Das System

2.1 Die einzelnen Komponenten im kurzen Überblick

Abbildung 3: Blockdiagramm des Oszilloskops

2.1.1 Das Erweiterungsboard

Das Erweiterungsboard besteht aus den analogen Signaleingängen, einem ADC-Teilund einem FIFO-Chip. Es hat die Aufgabe, die analogen Messsignale aufzunehmen,umzuwandeln und in dem FIFO-Chip zwischenzuspeichern, bis sie vom NetX-Boardausgelesen werden.

2.1.2 Das NetX Developerboard

Das NetX-Board ist sozusagen das Herzstück des Gesamtsystems. Es Übernimmtdie Aufgabe das Erweiterungsboard mit einem Takt anzusteuern, die zwischenge-speicherten Signale aus der FIFO zu lesen, diese zu Analysieren und dann an dasDisplayboard weiterzugeben.

2.1.3 Das Displayboard

Das Displayboard kümmert sich um die Ansteuerung des Displays, die Darstellungauf diesem von Menus und den Signalen. Weiter ist hier die Tastensteuerung, umdas Oszilloskop zu bedienen, realisiert.

9

Page 10: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem
Page 11: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.2 Das Erweiterungsboard

2.2.1 Funktionsprinzip

Das Funktionsprinzip ist wie folgt: Die gemessenen Signale gehen von der Sonde indie Verstärker-Schaltung und werden dort verstärkt. Dies ist nötig um die Signalean die Arbeitsspannung des AD-Wandlers anzupassen. Dann gehen die Signale indie ADC-Schaltung und werden dort abgetastet und in digitale Signale umgewan-delt. Die umgewandelten Signale werden als Daten in der FIFO gespeichert. Da-nach übernimmt der NetX500 die Daten aus der FIFO und bearbeitet diese. Dannerscheinen die Signale auf dem LC-Display. Gleichzeitig kontrolliert der NetX500die Vergröÿerung der Verstärkerschaltung. Durch die Steuerungssoftware kann derNetX500 verschiedene Clocksignale mit verschiedenen Frequenzen herstellen. Durchdiese Clocksignale kontrolliert der NetX500 die Abtastfrequenz von dem ADC.

2.2.2 Die Verstärkerschaltung

Das gemessene Signal geht durch die BNC-Buchse rein. Über das K1-Relais wird dieArt der Kopplung ausgewählt. So kann zwischen DC und AC umgeschaltet werden.Danach geht das Signal in die Dämpfungsschaltung. Man kann zwischen einer Dämp-fung von 0.5 und 0.05 wählen. Sie besteht aus R3-R5 und C2-C4. Die Dämpfungs-anzahl wird durch das Relais K2 beein�usst. Ist K2 mit dem 0-Port verbunden,dann ist die entsprechende Dämpfungsanzahl R4+R5

R3+R4+R5= 0.5. Ist K2 mit dem S-

Port verbunden, dann ist die entsprechende Dämpfungsanzahl R5

R3+R4+R5= 0.05. Die

Kondensatoren C2 und C3 kompensieren das Hochtonsignal. Das gedämpfte Signalwird durch den IC24OPA2691A-Operationverstärker gepu�ert.Dann geht das Signal in die nächste Verstärkungsschaltung, die aus dem OPVIC24OPA2691B besteht. Hier kann zwischen einer Verstärkung von 0.8,2,4 gewähltwerden. Der Verstärkungsfaktor wird von den Relais K3 und K4 kontrolliert. SindK3 und K4 mit dem 0-Port verbunden, ist der entsprechende Verstärkungsfaktor−R9+R10

R7= −2. Wenn K3 mit dem S-Port und K4 mit dem 0-Port verbunden ist,

ist der entsprechende Verstärkungsfaktor −R9

R7= −0.8. Wenn K4 mit dem S-Port

verbunden ist, ist der entsprechende Verstärkungsfaktor −R8

R7= −4.

Durch das Relais K5 kann ausgewählt werden, ob das Ausgangssignal durch den in-phasigen Verstärker (OPV IC25OPA2691A) vergröÿert werden soll. Ist K5 mit dem0-Port verbunden liegt keine Verstärkung vor. Ist K5 mit dem S-Port verbunden,wird das Signal um den Faktor 10 verstärkt: −R11+R12

R11= 10.

Zuletzt geht das Signal in den gegenphasigen Verstärker (OPV IC25OPA2691B),dessen Verstärkungsfaktor -1 ist. Da sich die analoge Eingangsspannung des AD-Wandlers ADS830E im Bereich 1.5V-3.5V be�nden muss, muss die mittlere Ein-gangsspannung 2.5V sein und somit auch die O�set-Spannnung. Nach der O�setan-pssung wird das Signal zum AD-Wandler geleitet. Der O�set wird über das variablePotentiometer Rw1 reguliert.

11

Page 12: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Abbildung 4: Verstärkerschaltung

Die Relais werden über das Hostinterface des NetX 500 mit diesem verbunden. DiePorts A0,A1,A2,A3,A4 des Hostinterfaces werden dabei den Relais K1, K2, K3, K4,K5 zugeordnet.

Abbildung 5: Verstärkungen

12

Page 13: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.2.3 Die AD-Wandlungsschaltung und Control von NetX 500

Die AD-Wandlerschaltung tastet das gemessene Signal ab. Nach dem Nyquist-Theoremmuss die Samplingrate mindestens 2 mal so groÿ sein wie das gemessene Signal, da-mit keine groÿen Verzerrungen entstehen. Bei einem digitalen Oszilloskop sollte dieAbtastfrequenz mindestens 5 bis 8 mal gröÿer sein. Andernfalls kann die Wellen-form des Signals nicht beobachtet werden. Deswegen benutzen wir 2 AD-Wandler(ADS830E) der Firma Burr-Brown Components. Die Samplingrate beträgt 10kSa/s-60MSa/s. Die Arbeitsweise der High-Speed-AD-Wandler ist wie folgt: In jedem Zy-

Abbildung 6: Arbeitsweise des ADS830E

klus gibt es eine AD-Umsetzung. Daher entspricht die Sampling-Rate der Frequenzdes Clocksignals. Es ist leicht durch Kontrolle die Frequenz der Clocksignale, dieSampling-Frequenz zu kontrollieren. Die Clocksignale werden durch den netX 500vorgegegeben (siehe Tabelle 2).

13

Page 14: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Abbildung 7: Tabelle Samplingraten

Der Durchlassbereich der Eingangsspannung vom ADS830E kann programmiert wer-den. RSEL ist der Control Pin. Ist dieser hochlevelig, ist der Eingangsspannungsbe-reich 1.5V-3.5V, d.h. 2Vpp. Ist dieser lowlevelig, ist der Eingangsspannungsbereich2V-3V, bzw. 1Vpp. Als Bereich wird 2Vpp ausgewählt.

Abbildung 8: ADC Schematic

14

Page 15: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.2.4 FIFO-Speicher Schaltung und Control von NetX

Die abgetasteten Signale werden zum FIFO-Speicher gesendet. Der FIFO-Speicherist ein 2-Port-SRAM. Der von uns gewählte FIFO ( �rst in �rst out ) hat keinenAddress-Bus. Beim Schreiben und Lesen des Signals addiert oder subtrahiert erdie Zeiger der Datenaddressen, um die Addresse zu bestimmen. Der FIFO-Speicherbe�ndet sich zwischen dem AD-Wandler und dem NetX 500. Der FIFO-Speicherdient als Cache.

Abbildung 9: FIFO Schematic

15

Page 16: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Der FIFO-Speicher hat 3 wichtige Flags: FF, HF und EF.Das FF-Flag signalisiert, dass der Speicher voll ist, das HF-Flag signalisiert, dassder Speicher halbvoll ist und das EF-Flag signalisiert, dass der Speicher leer ist.Der Pin für das FF-Flag wird mit dem Port A22 des HIS des NetX 500 verbunden.

Abbildung 10: FIFO Blockdiagramm

Ist der FIFO-Speicher voll, wird das FF-Flag gesetzt. Danach kann der NetX 500die Daten lesen. Der NetX 500 kontrolliert das Clock-Signal zwichen AD-Wandlerund FIFO-Speicher.Nach dem Lesen der Daten aus dem FIFO-Speicher und dem Abschluss des Software-triggers können die AD-Wandler und FIFO-Speicher die neuen Daten weiter ein-schreiben. Gleichzeitig verarbeitet der NetX 500 die Daten weiter und erscheinendie gelesen Daten auf dem Display.Der EF-Pin wird mit dem HIS-Port A23 vom NetX500 verbunden. Der Datenbuszwischen dem FIFO-Speicher und den ADCs werden über die Pins D0-D15 (FIFO)jeweils mit den Pins D0-D7 (ADC) verbunden. Nach dem Abtasten wird das digitaleSignal in der FIFO gespeichert. Der Verlauf der Signale RCLK OE der FIFO wirdvom NetX500 durch die Pins CLK, CS und RD kontrolliert. Der Zeitverlauf siehtwie folgt aus:

16

Page 17: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Abbildung 11: FIFO Zeitverlauf

Um den FIFO-Speicher mit den gegebenen Timings richtig anzusteuern, wurde fol-gende Verbindungsweise entworfen:

Abbildung 12: FIFO Ansteuerung

17

Page 18: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem
Page 19: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.3 Die Steuerungssoftware/NetX-Board

Das NetX-Board bietet zur Ankopplung von weiterer Hardware verschiedene Inter-faces. Da wir jedoch ein spezielles Protokoll zur Datenübertragung implementierenmüssen, gab es nur den Weg über die Host Interface Schnittstelle. Diese hat 16 BitBreite Datenleitung und eine mehr als ausreichende Adressbreite von 24 Bit und istdamit optimal für unsere Zwecke geeignet.So hat also die Steuerungssoftware die Aufgabe, die Kommunikation mit dem Erwei-terungsboard sicherzustellen, die aufgenommenen Werte zu �ltern und aufzuberei-ten, um als Bindeglied zwischen dem Wandlerboard und der Ausgabe zu fungieren.Was dies genau bedeutet, wird im folgenden nun näher erklärt, wobei man dies in 2Bereiche einteilen kann.

2.3.1 Steuerung des Erweiterungboards

Die Ankopplung des Erweiterungsboards an unser NetX Board erfolgt, wie schoneingangs erwähnt über die Hostschnittstelle. Diese kann in verschiedenen Modi be-trieben werden, was die Implementierung des Protokolls doch sehr erleichtert. DurchSchreiben und Lesen aus den IO Register können dann die Ausgänge gesetzt bzw.die Pegel der Eingänge ausgelesen werden. Den genaueren Anschluss des Erweite-rungsboards kann man dem Hardwareteil entnehmen.Wichtig für die Ansteuerung bzw. Übertragung sind die Anschlüsse derWCLK (Ab-tastfrequenz), welche auch gleichzeitig die Readclock darstellt, die Datenleitung unddie beiden Statusleitungen der Fifo für voll FF und leer EF.

Doch zunächst benötigen der AD-Wandler und die Fifo die synchrone Abtastfre-quenz. Dazu wird der Clockout Ausgang des NetX mit einer entsprechenden Fre-quenz belegt. Dies geschieht über die Funktion void set_clkout(int khz,inten), die die angegebene Frequenz umrechnet mit der Formel:

F = V alue ∗ 200MHz

232⇒ V alue = F ∗ 232

200MHz

Um also die gewünschte Frequenz zu erhalten, muss die Formel nach Value umge-stellt werden. Mit Hilfe dieser Formel wird der zugehörige Wert ermittelt, und dannnoch mit dem übergebenen Enable-Bit maskiert und an das RegisterNETX_DPM_ARM_CLKOUT_CFG des NetX übergeben bzw. in selbiges ge-schrieben. Durch das Setzen des Registers und des Enable - Bits, beginnt der Aus-gang sofort ohne weitere Maÿnahmen seinen Dienst zu verrichten. Die Ausgabe derWCLK erfolgt dabei unabhängig vom restlichen Programmablauf im Hintergrund.Um diesen Takt nun wieder auszuschalten, und damit die Datenaufnahme zu stop-pen, muss das Enable-Bit 0 sein, wobei dabei der Wert der Frequenz ohne Bedeutungist.

Als nächstes werden dann im sogenannten Pollingverfahren die Fifo Statusleitungenabgefragt, was hierbei bedeutet, dass das Leeren der Fifo, und damit das Auslesender Werte, nicht über einen Interrupt geschieht, sondern vielmehr im immer wie-derkehrenden Abfragen passiert. Ist also die Fifo leer, müssen keine Daten aus der

19

Page 20: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Fifo entnommen werden. Ist diese jedoch nicht leer, werden die Daten solange ineinen Zwischenpu�er ausgelesen, bis diese wieder ein Leer signalisiert oder eine ent-sprechende Anzahl von Werten erreicht wurde. Bei einem so übertragenem 16 Bit -Wort stellen die unteren 8 Bit den A-Kanal und die oberen den B-Kanal dar. Bei derAufnahme werden diese natürlich extrahiert und durch Maskieren und Shiften in diebeiden Kanäle aufgeteilt. Bevor jedoch ein Datum in den Pu�er übernommen wird,wird überprüft, ob es sich dabei um den Triggerpunkt handelt. Ist ein Triggerpunkterreicht, werden eine Anzahl von Daten, in der Gröÿe eines vorher de�nierten Wer-tes, aufgenommen, bevor wieder auf einen Triggerpunkt überprüft wird. Weiterhinmuss ein so ermittelter Wert wieder normalisiert werden, da der Wandler nur einenpositiven Spannungswert wandeln kann. Aus diesem Grund, wurde vorher schon dieEingangspannung mit einem O�set versehen, nämlich dem halben Spannungsbe-reich. Da wir aber auch negative Werte darstellen wollen, muss also vom Wert selbstnoch der halbe Spannungsbereich, also der O�set, abgezogen werden um dann dentatsächlichen Wert zu erhalten.

Abbildung 13: Steuerung des Erweiterungboards

2.3.2 Erkennen eines Triggerpunktes

Trigger sind ein wesentlicher und wichtiger Bestandteil aller Oszilloskope und darumauch ein Muss für unser Projekt. Sie sind für eine stehende Darstellung des Span-nungsverlaufes notwendig, da meistens nur mit Hilfe dieser Funktion eine genaueAnalyse möglich ist. So können also unsaubere Taktsignale, unerwünschte Span-nungsspitzen oder ähnliches mit Ihnen ausgemacht werden, da es sich meistens umperiodisch verlaufende Spannungskurven handelt. Wird also ein Triggerpunkt aufeinem Kanal eingestellt, wird erst ab diesem Spannungswert die Kurve dargestellt.Damit ein Wert also einen Triggerpunkt darstellt, muss es sich um eine steigendebzw. fallende Flanke in der gewählten Spannungshöhe handeln. Um dies zu über-prüfen muss einerseits der Wert selbst auf die Spannungshöhe überprüft werden undder nächste Wert höher bzw. niedriger (je nach Einstellung) als der bisherige sein.Die Überprüfung erfolgt mit der Funktion void check_trigger(int valA, int

20

Page 21: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

valB). In dieser Funktion wird der aktuelle mit dem vorigen Wert des entsprechen-den Kanals auf diese Art verglichen und die Flag für den Triggerpunkt gesetzt bzw.nicht gesetzt, wie in der folgende Skizze verdeutlicht wird. Mit dieser globalen Flagkönnen dann also die angegebene Anzahl an Werte aufgenommen werden, bevorwieder aufs Neue überprüft werden muss, ob es sich um einen Triggerpunkt handeltund der Vorgang von neuem beginnt.

Abbildung 14: Erkennen eines Triggerpunktes

21

Page 22: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem
Page 23: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.4 Die Anzeige des Oszilloskops

2.4.1 Übersicht über die Anzeigebereiche

Wie bereits zuvor erwähnt, ist das Oszilloskop mit einem Display ausgestattet, umdem Benutzer eine gra�sche Ausgabe der Messwerte und Einstellungen, sowie einekomfortable Menüführung zur Funktionsumschaltung zu bieten. Das gesamte An-zeigebild ist dabei in drei Anzeige-Bereiche aufgeteilt, die Anhand der Abbildung 15erläutert werden sollen. Die Graphenanzeige (Rot) be�ndet sich auf der linken Seite

Abbildung 15: Anzeigebereiche des Oszilloskops

und umfasst ein Koordinatengitter, in welches die Messwerte in Form von Messkur-ven, je nach Anzeigemodus farbig eingezeichnet werden.

Um den äuÿeren Rahmen der Graphenanzeige herum be�ndet sich die Statusanzei-ge (Blau), in welcher wichtige aktuelle globale und kanalbezogene Einstellungen desOszilloskops, wie Betriebsmodus (Time-Y, X-Y), Einheit pro Koordinatensystem-Kästchen (KOS-Basiseinheit), Kanalo�set (in Form kleiner Dreiecke) oder Trigger-Modus angezeigt werden. Hierbei wird für kanalbezogene Einstellungen dieselbe Far-be verwendet wie für die zugehörige Messkurve in der Graphenanzeige.

Auf der rechten Seite be�ndet sich die Menüanzeige (Grün), welche den Menü-Baumanzeigt. Die aktuelle Menü-Hierarchiestufe wird durch mehrere mit den Namen der

23

Page 24: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Obermenüs beschriftete orangefarbene Rechtecke am oberen Rand der Menüanzeigedargestellt. Darunter wird jeder einzelne Menüeintrag des aktiven Menüs durch eingraues, mit dem Namen des Menüeintrages beschriftetes Rechteck angezeigt. EinPfeil am rechten Rand des Rechteckes weist auf ein zu diesem Menüeintrag zugehö-riges Untermenü hin. Der gerade aktive Menüeintrag wird durch ein blaues Rechteckmit weiÿer Schrift hervorgehoben. Einige Menüeinträge umfassen Checkboxes, diegesetzt werden können, wobei eine nicht gesetzte Checkbox durch ein leeres weiÿesKästchen und eine gesetzte durch ein grünes Kästchen dargestellt wird.

2.4.2 Erzeugung des Anzeigebildes

Für die Aktualisierung des gesamten Anzeigebildes wird Double-Bu�ering verwen-det. Hierbei gibt es zwei Bildpu�er. Der Frontbu�er gibt das aktuelle Anzeigebildauf dem Display aus, während das neue Anzeigebild in den Backbu�er gezeichnetwird. Ist der Zeichenvorgang beendet, werden die Adressen von Front- und Back-bu�er vertauscht, sodass nun das Bild des ehemaligen Backbu�ers auf dem Displayausgegeben wird, während das nächste Bild in den ehemaligen Frontbu�er gezeich-net wird. Danach erfolgt eine erneute Umschaltung. Auf diese Weise ist garantiert,dass der Benutzer immer nur ein vollständiges Anzeigebild sieht und den eigentli-chen Bildaufbau nicht wahrnimmt.

Das Anzeigebild insgesamt wird aus einfachen gra�schen Grundelementen (Pixel,Geraden, gefüllte Rechtecke und Textzeichen) nacheinander aufgebaut. Die Abstän-de, Längen und Gröÿen dieser Grundelemente sind hierarchisch und relativ zueinan-der in Form von Konstanten-De�nitionen innerhalb der entsprechenden Quellcode-dateien de�niert. Um den Inhalt eines Anzeigebereiches zu löschen (Statusanzeige-Bereich und Menüanzeige-Bereich) wird selbiger mit einem schwarzen Rechteck glei-cher Gröÿe überzeichnet. Die Zeit, welche dabei zum Zeichnen (bzw. Löschen) einesder o.g. Anzeige-Bereiche benötigt wird hängt dabei hauptsächlich von der Anzahlder Pixel ab, welche die entsprechende Funktion setzen muss. Um diese Anzahl zureduzieren, erschien es sinnvoll, für die einzelnen Anzeigebereiche separat aufrufbareZeichen- und Löschoperationen zu implementieren, welche nur dann aufgerufen wer-den, wenn in dem entsprechenden Anzeigebereich auch tatsächlich eine Änderungstattgefunden hat. So wird z.B. die Menüanzeige nur dann aktualisiert, wenn derBenutzer im Menü scrollt oder eine Funktionalität auswählt, aber nicht im laufen-den Betrieb. Auf diese Weise wird im Mittel die Zeit zum Neuaufbau des gesamtenAnzeigebildes erheblich verkürzt und somit die Bildwiederholrate erhöht.

Wie erwähnt, umfasst die Graphenanzeige ein Koordinatengitter, sowie die Mess-kurve(n) für die beiden Signale. Jede Messkurve besteht dabei aus separaten Pixeln,wobei je nach Betriebsmodus des Oszilloskops ein Pixel pro Messpunkt des jeweili-gen Kanals (Time-Y-Modus), bzw. pro Messpunktpaar beider Kanäle (XY-Modus)gesetzt wird. Die für die Status- und Menüanzeige benutzte Lösung zum Löschendes Anzeigebereiches erwies sich für die häu�g zu aktualisierende Graphenanzeigeals nicht sinnvoll, da diese zu einer niedrigen Bildwiederholrate geführt hat. Deshalbwurde hier die folgende Methode angewandt: Zu Anfang der Laufzeit wird das Koor-dinatengitter in einem dritten Bildpu�er Gridbu�er zwischengespeichert. Während

24

Page 25: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

eine Messkurve gezeichnet wird, werden die Koordinaten aller ihrer Pixel zwischenge-speichert. Um die Messkurve für die Aktualisierung wieder aus der Graphenanzeigezu löschen, werden ihre Pixel nun auf die Farbe gesetzt, welche die korrespondieren-den Pixel (an denselben Koordinaten) im Gridbu�er haben. Anschlieÿend wird dieneue Messkurve gezeichnet. Auf diese Weise wird die Anzahl der neu zu zeichnendenPixel der Graphenanzeige auf das notwendige Minimum reduziert.

2.4.3 Funktionen des Oszilloskops und Menü-Baum

Das Oszilloskop unterstützt in der aktuellen Version zwei Analogeingänge, die wech-selseitig aktiviert und deaktiviert werden können. Es ist möglich diese zu invertierenund den O�set festzulegen. Als Darstellungsmodi stehen Time-Y und X-Y Moduszur Verfügung. Weiterhin kann die Einheiten die Koordinatenachsen skaliert werden.

Im Menübaum und der Bedienlogik des Oszilloskops sind Funktionen implementiertwie sie von der aktuellen Version der Hardware Komponenten noch nicht unterstütztwerden. In der Steuerung sind sie allerdings implementiert, um eventuelle spätereWeiterentwicklungen zu ermöglichen.Unter dem ersten Menü Punkt Ana/Dig lassen sich beide Kanäle A und B unabhän-

Abbildung 16: Oberste Menü Ebene

gig voneinander als Logikanalysator und Messkurven darstellen. Es ist festgelegt,

Abbildung 17: Unter-Menü von vom ersten Menu Punkt Ana/Dig

dass jeder Kanal jeweils als Logic oder Analog de�niert sein muss, wobei Analog

25

Page 26: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

die Standardeinstellung ist und zur digitalen gewechselt werden kann. Im AnalogModus werden die Spannungen im zeitlichen Verlauf in einem zweidimensionalenKoordinatensystem dargestellt. Im Logic Modus ist die Darstellung auf der X-Achsejeweils auf die Logik Werte 0/1/unde�nied beschränkt.

Im zweiten Menü Punkt wird festgelegt ob das Trigger Signal bei steigender oderfallender Flanke erkannt wird. Hierbei stellen die Punkte CHA und CHB jeweils

Abbildung 18: Unter-Menü vom zweiten Menu Punkt Trigger

die ersten Unter Menü Punkte von Trigger dar, die jeweils über eine weitere MenüEbene die Einstellmöglichkeiten rising und falling zur Verfügung stellen. Wie auchbei Analog/Digital ist jeweils einer der zwei anwählbar.

Im dritten Menü Punkt Channel Select lassen sich beide Kanäle A und B unab-hängig voneinander an oder aus schalten. Weiterhin kann jeder Kanal jeweils fürsich auf Null gelegt werden.

Abbildung 19: Unter-Menü von vom dritten Menu Punkt Trigger

26

Page 27: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Als Standardeinstellung sind beide Kanäle aktiviert. Die ersten drei Punkte bezie-hen sich auf Kanal A und es ist jeweils nur einer davon anwählbar. Ebenso verhältes sich mit den Einstellungen für den zweiten Kanal B, auf den sich die Unter MenüPunkte vier bis sechs beziehen.

Der vierte Menü Punkt Invert ermöglich wie die Bezeichnung vermuten lässt beideKanäle unabhängig voneinander zu invertieren. Als Standard ist natürlich keiner

Abbildung 20: Unter-Menü von vom vierten Menu Punkt Invert

der Kanäle invertiert. Beide Menü Punkte lassen sich unabhängig voneinander ak-tivieren und deaktivieren, wobei die Aktivierung bzw. Deaktivierung von Kanal Akeinen Ein�uss auf die Einstellungen von Kanal B hat und umgekehrt.

Der fünfte Menü Punkt ermöglicht den Wechsel zwischen Time-Y und X-Y Modus.Im Time-Y Modus der als Grundeinstellung aktiviert ist werden über den zeitlichenVerlauf die Werte der Gleich oder Wechselspannung im Koordinatensystem darge-stellt.Im X-Y Modus wird die Ablenkung abhängig vom anderen Kanal ermittelt um z.B.Lissajous-Figuren oder Kennlinien darzustellen. Im Untermenü von X-Y Mode kann

Abbildung 21: Unter-Menü von vom sechsten Menu Punkt Mode

festgelegt werden, welche beider Kanäle der unabhängige ist und als Werte auf derX-Achse dargestellt wird.

27

Page 28: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Abbildung 22: Übersicht gesamter Menü Baum

28

Page 29: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.4.4 Die Menütopologie

Topologisch betrachtet ist das Menü im Wesentlichen ein Baum, dessen einzelneKnoten Teilmenüs sind. Jedes Teilmenü besteht dabei aus einer doppelt verkettetenListe von Menüeinträgen. Um die einzelnen Menüeinträge des aktiven Teilmenüseinfach traversieren zu können, verweist jeder Menüeintrag auf seinen im jeweili-gen Teilmenü vorhergehenden (prev) und seinen nachfolgenden (next) Menüeintrag.Um einfach in das Obermenü des aktiven Menüs wechseln zu können verweist je-der Menüeintrag zusätzlich auf den Kopf-Menüeintrag dieses Obermenüs (parent).Existiert zu einem bestimmten Menüeintrag noch ein Untermenü, so verweist derMenüeintrag desweiteren auf den Kopf-Menüeintrag dieses Untermenüs (child). Ab-bildung 23 veranschaulicht die Topologie an einem schematischen Beispielausschnitt.

Abbildung 23: Menütopologie am Beispiel des aktiven Menüeintrages M12; MXXsind Menüeinträge

29

Page 30: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.5 Bedieninterface

Über zwei Knöpfe und drei Joysticks ist es möglich durch die Menüstruktur zu navi-gieren und Funktionen, bzw. Modi zu aktivieren und deaktivieren. Die Funktionen

Abbildung 24: Tasten zur Menü Steuerung

der Joysticks und Tasten werden von links nach rechts beschrieben.

Der Enter Knopf auf der linken Seite dient dazu um in Unter-Menüs zu springen,bzw. Darstellungsmodi oder Funktionen wie Invertierung zu aktivierten. Mit demRun/Stop Knopf wird die aktuelle Darstellung am Display eingefroren bzw. läuftnach nochmaligem Drücken wieder weiter. In der aktuellen Version ist diese Funk-tion allerdings noch nicht umgesetzt.

Der allein stehende, mit Menü beschriftete Joystick ermöglich die Navigation inder Menü Struktur. Oben und Unten navigiert durch das aktuell am Display ange-zeigte Menü, links und rechts hierarchisch durch Ober- und Unter-Menüs. Drückendes Joysticks bewirkt auch einen Sprung in das jeweilige Unter-Menü falls vorhan-den. Sobald im aktuell dargestellten Menu der unterste Punkt erreicht ist, bewirktein erneutes Drücken nach unten den Sprung zurück zum ersten Eintrag. Genausoverhält es sich beim obersten Menü Punkt falls der Joystick nach oben gedrückt wird.

Die beiden rechten Joysticks, mit CHA und CHB markiert regeln die Darstellung desGraphen. Beim linken Joystick ist nur die Taste nach links implementiert und beimrechten nur die nach rechts. Damit lässt sich der Spannungswert des Triggerpunktsvariieren wenn der Menü Punkt Trigger angewählt ist und somit eine periodischeFunktion demzufolge nach links oder rechts schieben. In allen anderen Situationenund im Standard Menü dienen beide Knöpfe dazu die Time Base für den Time YModus einzustellen.

Die Richtungen oben und unten sind bei beiden Joysticks auf den jeweiligen Ka-nal bezogen. Im Menu Chanel Select lässt sich der O�set anpassen, sonst der Wertder KOS Basiseinheit.

30

Page 31: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.5.1 Übersicht über das Bedieninterface

Zum Bedienen des Oszilloskopes stehen dem Benutzer 3 Taster in Joystickform zurVerfügung. Die Taster sind auf ein externes Evaluierungsboard ausgelagert und überdie serielle Schnittstelle des netX500 mit dem Oszilloskop verbunden. Als Evaluie-rungsboard wird das STK500 von ATMEL mit einem Atmega515L verwendet. DieTaster sind auf einer Platine angebracht, welche über die Expand1 und Expand2Pins des STK500 mit dem Atmeag8515L verbunden ist. Abbildung 3.2.1 zeigt dieAnordnung der Taster auf der Platine, wobei mit dem linken Taster das Oszillo-skopmenü gesteuert wird, der mittlere und rechte Taster werden für das Einstellenvon Anzeigeoptionen wie zum Beispiel der Zeitbasis oder der Spannungsau�ösungbenutzt. Da die Kommunikation zwischen den STK500 und dem netX500 über die

Abbildung 25: Das Bedieninterface

serielle Schnittstelle läuft, ist das Evaluierungsboard nicht zwingend für die Steue-rung notwendig, sondern kann durch einen Desktop PC mit Terminalprogrammersetzt werden. Dabei sind im folgende Einstellungen zu beachten:

• 115200 Baud/s

• 2 Stopbit

• 8 Datenbits

• kein Paritätsbit

• Verwendung eines Null Modemadapters.

31

Page 32: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

Bei der Verwendung des STK500 mit aufgesteckter Tasterplatine müssen die folgen-den Einstellungen getro�en werden:

• Versorgung des STK500 mit 10-15 Volt DC

• Anschluss des seriellen Kabels (kein Nullmodem Kabel) an den Port: RS232_SPARE

• Verbinden von PORTA mit SWITCHES

• Verbinden von PORTB mit LEDS

• Verbinden von PORTD.1 mit RS232_SPARE.TXD

• Aufstecken der Tasterplatine auf die Steckleisten EXPAND1 und EXPAND2

• Kon�guration des STK500 Taktgebers auf 3.686 MHz

32

Page 33: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.5.2 Bedienung der Tasterplatine

Bei Betätigung der Tasten wird von dem Atmega8515L eine serielles Steuerzeichenversendet. Mit dem Senden des Zeichen leuchtet gleichzeitig die LED0. Wird aneiner Taste ein Übergang von 0 auf 1 detektiert erfolgt eine einmaliges Senden desentsprechenden Steuerzeichens, die LED0 bleibt für diesen Fall konstant an. Erstwenn ein Taster für etwa 1 Sekunde gedrückt ist wird das Steuerzeichen ca. 5 mal inder Sekunde versendet, dabei toggelt die LED0 mit jedem Versenden. Das Sendenfunktioniert nur wenn eine Taste gedrückt wird, bei mehreren aktiven Tasten er-folgt kein Versenden. Die auf der Platine verbauten Tastenjoysticks haben jeweils 5Kontakte (4 Richtungstasten und einem im Zentrum), das STK500 wertet aber nurbeim Menütaster alle 5 Kontakte aus, bei den Beiden anderen werden nur jeweils dreiKontakte ausgewertet. Die nachfolgende Tabelle zeigt mit welchem Pin der jeweili-ge Tasterkontakt verbunden ist und welches Steuerzeichen durch den Tasterkontaktausgelöst wird. Beim Drücken des mittleren Kontaktes vom Menütaster kann es zueinem ungewollten Auslösen ander Kontakte kommen. Daher kann alternativ auchder Taster SW7 auf dem STK500 gedrückt werden. Ebenfalls kann durch Drückenvon Taster SW6 das Steuerzeichen "R" gesendet werden. Diese war zur Steuerungdes Run/Stop Betriebes gedacht, welcher im netX500 allerdings nicht implementiertwurde.

Abbildung 26: tabelle tasterplatine

33

Page 34: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.5.3 Steuerungsprogramm

Das Programm für den verwendeten Atmeg8515L wurde mit dem AVR Studiovon Atmel geschrieben. Dafür wurde ein Projekt angelegt, das die ProjektdateinetX3.aps und die Codedatei netX3.c enthält. Das Projekt wurde auf die Verwen-dung eines Atmega8515 kon�guriert und das Kompilieren erfolgt mit gdb-Debuggerund ausgeschalteten Optimierungen. Als Kompilier wird der GNU avrgcc verwen-det, der als Flashimage die Datei netX3.elf erzeugt. Das Programm wurde komplettin der Datei netX3.c umgesetzt. Die grundlegende Idee ist es in einem Interrupt,welcher über eine Clock zu festen Zeitpunkten ausgelöst wird, die Zustände der Tas-terkontakte abzufragen. Wird dabei ein gedrückter Tastenkontakt detektiert wirddas assoziierte Steuerzeichen gesendet. In der Startphase des Programm werden dieRichtungsbits für die Ports A, B und C gesetzt und der Interrupt ausgeschaltet.Danach erfolgt die Kon�guration von TimerCounter1, wobei der Counterinterruptaktiviert, welcher bei Erreichen eines Zählwertes von 0x0150 in TimerCounter1 aus-gelöst wird.

TIMSK = 1 � 6; // OCF1A �> compare Timer/Counter1TCCR1B = 1 � 2 | 1 � 0; // prescaler auf 1/1024//1 sec Timer 0x0E13OCR1AH = 0x01; // 0x04b1 �> 0.33secOCR1AL = 0x50;

Des Weiteren erfolgt die Initialisierung der Uart Schnittstelle:

// Enable receiver and transmitterUCSRB = (0�RXEN)|(1�TXEN);// Set frame format: 8data, 2stop bitUCSRC = (1�URSEL) | (1�USBS) | (3�UCSZ0);//UCSRC = (1�URSEL)|( ((( PIND)und64)�6) �USBS )|(3�UCSZ0);//baudrate 9,6kBaud �>0023; 115200baud�>0001UBRRH = 00;UBRRL = 01;

Wobei der Uart nur für den Tx Betrieb kon�guriert, das Frameformat entsprechendder bereits erwähnten Einstellungen gesetzt und die Baudrate auf115200 Baud ge-stellt wird. Danach werden die Interrupts wieder eingeschaltet und das Programmbetritt eine Endlosschleife. Während das Programm in der Endlosschleife ist, wirdder TimerCounter1 kontinuierlich hochgezählt. Erreicht dieser die, in der Startpha-se kon�gurierte, Schwellgrenze löst er den Zählerinterrupt aus und das Programmspringt in die Interruptbehandlungsroutine. In dieser wird der Zähler zurückgesetztund die Pins für die Tasterkontakte ausgelesen. Falls ein Kontakt gedrückt ist erfolgtdie Versendung des entsprechenden Steuerzeichens.

34

Page 35: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

ISR(_VECTOR(4)) //compare event Timer/Counter1{

//Reset TimerTCNT1H = 0x00;TCNT1L = 0x00;

//Menue JoyStickswitch(( PINC)und1F){. . . }

}

2.5.4 UART-Schnittstelle im netX500

Das Auslesen der Uart erfolgt in der Hauptschleife des Programms. Dafür wirdvor dem Eintritt in die Hauptschleife die Uart-Schnittstelle mittels NetXInitSe-rial() initialisiert. Während des Programmablaufs werden über NetXGetCharac-ter_nonBlocking() Steuerzeichen aus dem Uart auslesen. Für den Fall dass im Uartkeine Steuerzeichen gespeichert sind, liefert die Funktion einen Rückgabewert von0, daher kann das Auslesen nicht-blockierend passieren.

35

Page 36: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.6 Programmaufbau

2.6.1 Datentypen- und Funktionsübersicht

Die Flagfelder

Alle aktuellen Funktionseinstellungen des Oszilloskops werden in drei sog. "Flagfel-dern" (in Datei "szi_lib_util.h") permanent hinterlegt. Dabei wird jedes Flagfelddurch ein C-Struct implementiert, welcher die Einstellungen für den zugehörigenTeilbereich in Form von Variablenbelegungen abspeichert. So gibt es ein globalesFlagfeld, in welchem globale Einstellungen des Oszilloskops, wie z.B. der Betriebs-modus (Time-Y, X-Y) hinterlegt sind und zwei Kanal-Flagfelder, in welchen ka-nalbezogene Einstellungen, wie z.B. die KOS-Basiseinheit, der Kanalo�set oder dieKanalinvertierung für den jeweiligen Kanal hinterlegt sind.

Die Menüeinträge

Wie bereits erwähnt, besteht das Menü aus einer hierarchischen Struktur von einzel-nen Menüeinträgen. Die Struktur der Menüeinträge ist in der Datei "oszi_lib_menu.h"de�niert und der relevante Codeausschnitt unten dargestellt. Neben den oben auf-geführten topologischen Informationen umfasst jeder Menüeintrag zusätzlich einenString der seinen Namen festlegt ("text"), einen Zeiger auf die zu diesem Eintragzugehörige Tasten-Behandlungsfunktion ("fcptr"), sowie ein Feld in dem angegebenist ob der Menüeintrag eine Checkbox hat ("is_selectable") und ob diese geradeaktiviert ist ("is_selected").

typedef struct menu_entry{void (*fctptr) (enum fbutton_t);struct menu_entry * parent;struct menu_entry * child;struct menu_entry * next ;struct menu_entry * prev ;char text[20];uint8_t is_selected;uint8_t i_selectable;

}menu_entry_t;

Die Main-Funktion

Kernstück des Programms ist die Main-Funktion, die in der Datei "main.c" de�niertist. Ihre Arbeitsweise ist wie folgt festgelegt: Zunächst initialisiert sie die Displayan-steuerung, sowie die Pu�er in welchen die Signalmesswerte abgelegt werden. Dannzeichnet sie ein komplettes initiales Anzeigebild in den Front- und Backbu�er, sowiedas einzelne Koordinatengitter in den Gridbu�er.

Anschlieÿend führt sie in einer Endlosschleife zyklisch die folgenden Aktionen aus:Zuerst wird die serielle Schnittstelle daraufhin überprüft, ob seit der letzten Abfrageein neues Steuerzeichen gesendet wurde, welches mit einer bestimmten Betätigungder Bedientasten assoziiert ist. Wurde eine der Cursortasten betätigt, dann wird ent-

36

Page 37: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

sprechend der Richtung der über oder unter dem gerade angewählten Menüeintragliegende Menüeintrag des aktiven Menüs angewählt, bzw. in das Ober- oder Unter-menü gewechselt. Im Fall, dass eine der anderen Tasten betätigt wurde, wird die zudem gerade angewählten Menüeintrag zugehörige Tasten-Behandlungsfunktion mitder gedrückten Taste als Parameter aufgerufen. Die Tasten-Behandlungsfunktionverändert daraufhin in Abhängigkeit von der gedrückten Taste einzelne Einträge inden Flagfeldern und selektiert, bzw. deselektiert die im Menüeintrag ggf. vorhande-ne Checkbox. Anschlieÿend aktualisiert die Main-Funktion den Anzeigebereich dervon den veränderten Flagfeldinformationen abhängt. Dies geschieht, indem dieserzunächst durch Aufrufen der zugehörigen Anzeige-Löschfunktion gelöscht und an-schlieÿend durch Aufrufen der Anzeige-Zeichenfunktion neu gezeichnet wird. Wäh-rend der Menüanzeige-Bereich und der Statusanzeige-Bereich nur dann aktualisiertwerden, wenn eine Benutzereingabe stattgefunden hat, wird der Graphenanzeige-Bereich in jeder Schleifeniteration aktualisiert. Schlieÿlich erfolgt eine Umschaltungzwischen Front-und Backbu�er, womit das neu gezeichnete Anzeigebild an das Dis-play übergeben wird. Daraufhin beginnt der Ablauf von Neuem.

Die Taster-Behandlungsfunktionen

Wie beschrieben verändern die Tasten-Behandlungsfunktionen in Abhängigkeit vonder gedrückten Taste einzelne Einträge in den Flagfeldern und selektieren bzw. de-selektieren die im Menüeintrag ggf. vorhandene Checkbox.

Die Anzeige-Zeichenfunktionen

Alle Anzeige-Zeichenfunktionen bedienen sich grundsätzlich aus Informationen, diein den Flagfeldern hinterlegt sind. Die Graphenanzeige-Zeichenfunktion ("draw-GraphTimeY" und "drawGraphXY"), sowie die Statusanzeige-Zeichenfunktion ("draw-SettingsInfos" und "drawYO�setMarker") berücksichtigen hierbei Informationenwie Betriebsmodus des Oszilloskops, Kanalinvertierung, Kanalo�set, KOS-Basiseinheitoder Triggerpunkt. Die Menü-Anzeige-Zeichenfunktion ("draw_menu") hingegenliest einerseits Informationen aus den Flagfeldern aus, andererseits aber zusätzlichInformationen aus den einzelnen Menüeinträgen, wie z.B. ob die Checkbox des jewei-ligen Menüeintrages gerade aktiviert ist. Alle Anzeige-Zeichenfunktionen zeichnendie von ihnen erzeugten Bildelemente in die Bildpu�er, greifen also schreibend aufdiese zu.

Die Anzeige-Löschfunktionen

Die zugehörigen Anzeige-Löschfunktionen ("erase") greifen im Gegensatz zu denAnzeige-Zeichenfunktionen nicht auf die Flagfelder zu. Alle Anzeige-Löschfunktionenschreiben in die Bildpu�er. Die Graphen-Löschfunktion greift dabei wie erklärt zu-sätzlich als einzige Löschfunktion lesend auf den dritten Bildpu�er, den Gridbu�erzu.

37

Page 38: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.6.2 Modulabhängigkeiten

In der Abbildung 27 werden die Beziehungen zwischen den im vorigen Abschnitt er-klärten Bestandteilen nochmals in gra�scher Form als Diagramm aufgezeigt. Funk-tionen sind dort als Rechtecke und Datenfelder als Ovale eingezeichnet. Die serielleSchnittstelle wird ebenfalls durch ein Oval gekennzeichnet.

Abbildung 27: Beziehungen zwischen Funktionen und Datenfeldern der Anzeige

38

Page 39: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

2.6.3 Softwareübersicht

Die Displaydarstellungen des Oszilloskopes baut auf Gra�kmodulen auf, welche voneiner, Projektgruppe aus einem anderen Projekt mit dem NetX500 implementiertwurden. Diese Module stellen Routinen zur Darstellung von einfachen geometri-schen Formen, von Schrift, sowie zur Handhabung von verschiedenen Gra�kpu�ernzur Verfügung. Auf diese Module aufsetzend haben wir die Software für die Display-darstellung und Menüführung um die folgenden Module erweitert:

Abbildung 28: Tabelle Modulabhängigkeiten

39

Page 40: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem
Page 41: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

3 Schluss

Wie bei allen Projekten, zeigte sich auch bei unserem, dass die Zeit doch eher knappbemessen war, sodass nicht alle geplanten Eigenschaften umgesetzt werden konnten.So mussten wir vorerst auf eine Bereichsumschaltung verzichten, die aber ohne wei-teres nachgerüstet werden kann. Weiterhin kam unser Erweiterungsboard erst sehrspät aus der Fertigung, was uns wenig Raum für unerwartete Fehlfunktionen gab.Die Fertigung war notwendig, da die ICs in Ihrer Bauform (LQFP) doch sehr kleineAnschlusspins hatten. Doch wie es immer so in der Praxis ist, traten natürlich auchhier Mängel auf. So waren zu Beginn die OPVs eines falschen Types verbaut, wasdas Justieren der O�setspannung relativ unmöglich machte. Auch die Ausgangswer-te entsprachen nicht den gewünschten. Nach dem Korrigieren dieses kleinen Fehlers,konnte trotzdem auch nach zahlreichen Versuchen das Erweiterungsboard nicht inBetrieb genommen werden. Die Fifo zeigte eine Reaktion, die auf einen Defekt schlie-ÿen lies bzw. eine doch sehr zeitaufwendigen Suche nach dem Fehler erforderte. Somussten wir, um doch etwas präsentieren zu können, kurzerhand auf die internenAD - Wandler des NetX500 zurückgreifen, die aber wiederum keine hohe Abtastfre-quenz zulieÿen. Dies zog natürlich auch eine Anpassung der Software mit sich, diewir bis zum Schluss noch implementierten. Ein Test mit diesem Aufbau ergab, dassSpannungen im kHz Bereich dennoch darstellbar waren und sogar im Timing derwahren Situation entsprachen. Somit kann man sagen, dass zumindest die Haupt-funktion gegeben war bzw. ist.Trotz aller Probleme, die bei diesem Projekt auftraten, sind Menu und Bedienungwie geplant umgesetzt worden und können in unserer modularen Sicht als abgeschlos-sen gesehen werde. Lediglich kleinere Schönheitskorrekturen könnten noch realisiertwerden, die aber nicht zwingend notwendig sind.Neben allen technischen Problemen sind natürlich auch Fehler in der Planung, bzw.fehlende Planung als nicht optimal anzusehen. Dennoch ist es normal, da keiner vonuns je so etwas entworfen hat. Die Planung änderte sich auch immer wieder mit demAuftreten nicht bedachter Probleme, was auch nicht ungewöhnlich für ein Studen-tenprojekt ist.Um das Projekt also so fertig zu stellen, wie es von Anfang an geplant war, sindnoch einige Sachen zu bearbeiten. So müsste zum Beispiel die Wandlerkarte re-pariert, bzw. in Betrieb genommen werden, sodass die gewünschte Abtastfrequenzauch erreicht werden kann. Weiterhin müsste noch die Bereichsumschaltung realisiertwerden und die Software natürlich entsprechend angepasst werden. Als zusätzlicheVerbesserung könnte das System noch um eine Logic Analyzer Funktion erweitertwerden, die Ausgabe der Messwerte noch über LAN oder USB realisieren und einedafür vorgesehene Clientsoftware entworfen werden. Dann könnte das Ganze nochin ein Gehäuse schön verpackt werden und damit vom Prototypen in ein richtigesGerät überführt werden.Abschlieÿend kann man sagen, dass es eine schöne und interessante Erfahrung füruns alle war, in der wir viel gelernt haben und die auch neugierig auf weitere Pro-jekte macht. Ein besonderer Dank geht an unseren Tutor und Betreuer Manuel, dersehr viel Engagement und Herzblut zeigte, was uns auch sehr weiterbrachte undohne den wir ein solches Ergebnis wohl kaum erzielt hätten.

41

Page 42: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem
Page 43: Praktikum Digitale Systeme - NetX Bau eines digitalen ... · Mit einem Oszilloskop annk man nicht nur die Gröÿe einer Gleich- oder Wech- selspannung bestimmen, sondern vor allem

4 Anhang

Abbildungsverzeichnis

1 Blockdiagramm des NetX (Quelle: Hilscher) . . . . . . . . . . . . . . 62 Das digitale Oszilloskop (Quelle: Wikipedia) . . . . . . . . . . . . . . 73 Blockdiagramm des Oszilloskops . . . . . . . . . . . . . . . . . . . . . 94 Verstärkerschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Verstärkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Arbeitsweise des ADS830E . . . . . . . . . . . . . . . . . . . . . . . . 137 Tabelle Samplingraten . . . . . . . . . . . . . . . . . . . . . . . . . . 148 ADC Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 FIFO Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1510 FIFO Blockdiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . 1611 FIFO Zeitverlauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1712 FIFO Ansteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1713 Steuerung des Erweiterungboards . . . . . . . . . . . . . . . . . . . . 2014 Erkennen eines Triggerpunktes . . . . . . . . . . . . . . . . . . . . . . 2115 Anzeigebereiche des Oszilloskops . . . . . . . . . . . . . . . . . . . . . 2316 Oberste Menü Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 Unter-Menü von vom ersten Menu Punkt Ana/Dig . . . . . . . . . . 2518 Unter-Menü vom zweiten Menu Punkt Trigger . . . . . . . . . . . . . 2619 Unter-Menü von vom dritten Menu Punkt Trigger . . . . . . . . . . . 2620 Unter-Menü von vom vierten Menu Punkt Invert . . . . . . . . . . . 2721 Unter-Menü von vom sechsten Menu Punkt Mode . . . . . . . . . . . 2722 Übersicht gesamter Menü Baum . . . . . . . . . . . . . . . . . . . . . 2823 Menütopologie am Beispiel des aktiven Menüeintrages M12; MXX

sind Menüeinträge . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2924 Tasten zur Menü Steuerung . . . . . . . . . . . . . . . . . . . . . . . 3025 Das Bedieninterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3126 tabelle tasterplatine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3327 Beziehungen zwischen Funktionen und Datenfeldern der Anzeige . . . 3828 Tabelle Modulabhängigkeiten . . . . . . . . . . . . . . . . . . . . . . 39

43