Entwicklung und Implementierung eines Signalgenerators auf einem FPGA


Bachelorarbeit, 2010

44 Seiten, Note: 1,0


Leseprobe

Inhaltsverzeichnis

Abbildungsverzeichnis

Abkürzungsverzeichnis

Verwendete Software

Vorwort

1. Einführung
1.1 Allgemeine Grundlagen Signalgeneratoren
1.2 Kommerzielle Signalgeneratoren
1.3 Wichtige Qualitätsmerkmale
1.4 Grundlagen Signalerzeugung
1.4.1 Analoge Signalerzeugung
1.4.2 Digitale Signalerzeugung mittels DDS (Direct Digital Synthesis)
1.5 Beschreibung des Entwicklungssystems Altera DE

2. Bedienung
2.1 Technische Daten
2.2 Beschreibung der Bedienelemente
2.3 Menüführung

3. Aufbau
3.1 D/A-Wandlerboard
3.2 VHDL-Komponenten
3.2.1 Baugruppe DDS
3.2.2 Baugruppen DDS-Display 1 bis
3.2.3 Baugruppe DDS-Control
3.2.4 Baugruppe DDS-Frequency Converter
3.2.5 Baugruppen DDS-Frequency Divider und DDS-Duty Cycle Divider

4. Test
4.1 Benötigte Testroutinen / -signale
4.1.1 mnu_up.vwf / mnu_down.vwf
4.1.2 mnu_up_hold.vwf / mnu_down_hold.vwf
4.1.3 freq_1khz.vwf
4.1.4 change_freq.vwf
4.1.5 change_duty.vwf
4.1.6 Weitere Test-Dateien
4.2 Messungen

5. Durchführen von Änderungen
5.1 Änderung der DAC-Wortbreite
5.2 Änderung der Systemtaktfrequenz
5.3 Änderung / Erweiterung der gespeicherten Signale
5.3.1 Verwendung des Hilfsprogramms LookupTableGenerator

6. Fazit

Anhang

Literaturverzeichnis

Abbildungsverzeichnis

Abbildung 1: Einfacher analoger Synthesizer (Quelle: www.mikrocontroller.net)

Abbildung 2: Einfacher digitaler Funktionsgenerator (Quelle: A Technical Tutorial on Digital Signal Synthesis, Analog Devices)

Abbildung 3: Digitaler Funktionsgenerator mit variabler Frequenz (Quelle: Wikipedia – Direct Digital Synthesis)

Abbildung 4: Bedienelemente

Abbildung 5: Menüstruktur

Abbildung 6: Schaltplan des D/A-Wandlerboards (R2R-Netzwerk)

Abbildung 7: Überblick VHDL-Komponenten

Abbildung 8: Baugruppe "DDS"

Abbildung 9: Baugruppen "DDS-Display 1 bis 3"

Abbildung 10: Baugruppe "DDS-Control"

Abbildung 11: Baugruppe "DDS-Frequency Converter"

Abbildung 12: Baugruppe "DDS-Frequency Divider"

Abbildung 13: Baugruppe "DDS-Duty Cycle Divider"

Abbildung 14: Rechtecksignal, f = 1 kHz, Tastgrad = 50%

Abbildung 15: Sinussignal, f = 1 kHz

Abbildung 16: Sägezahnsignal, f = 1 kHz

Abbildung 17: Dreiecksignal, f = 1 kHz

Abbildung 18: Rechtecksignal, f = 50 kHz, Tastgrad = 50%

Abbildung 19: Rechtecksignal, f = 195 kHz, Tastgrad = 50%

Abbildung 20: Sinussignal, f = 195 kHz

Abbildung 21: LookupTableGenerator

Abkürzungsverzeichnis

Abbildung in dieser Leseprobe nicht enthalten

Verwendete Software

Microsoft Windows 7 Professional 6.1.7600 (64-Bit)

Microsoft Visual Studio 2008 Professional Edition Version 9.0.21022.8 RTM

Microsoft .NET Framework Version 3.5 SP1

Altera Quartus II 9.1 Build 304 01/25/2010 SJ Web Edition (SP1)

Notepad++ v5.6.4 (UNICODE)

Vorwort

Ziel dieser Arbeit soll ein einfacher Signalgenerator sein, dessen Algorithmen zur digitalen Synthese auf einem FPGA realisiert sind.

Durch einen ausgangsseitig angeschlossenen DAC (Digital-Analog-Converter) wird das ausgegebene Signal in eine analoge Form umgewandelt und ausgegeben. Ein nachgeschalteter Tiefpassfilter soll dabei unerwünschte Störsignale unterdrücken.

DAC, Filter und Anschlussbuchse für den Signalabgriff sollen auf einer Platine untergebracht werden, die auf das vorhandene Evaluation-Board des FPGA aufgesteckt werden kann.

Wünschenswerte Funktionen des Signalgenerators:

- Frequenzdarstellung über Sieben-Segment-Anzeige oder LCD
- über Taster einstellbare Frequenz (0 Hz - 1 MHz)
- verschiedene Signalformen (Sinus, Rechteck, Dreieck, Sägezahn)
- veränderbarer Tastgrad (10% - 90%)

Da der Hauptbestandteil dieser Arbeit die digitale Synthese der Signale im FPGA ist, können die Funktionen zur Einstellung der Amplitude und des DC-Offset nicht realisiert werden. Diese sind Bestandteil des analogen Teils und werden in einer folgenden Arbeit behandelt.

1. Einführung

1.1 Allgemeine Grundlagen Signalgeneratoren

Ein Signalgenerator - auch Funktionsgenerator oder Frequenzgenerator genannt - stellt Ausgangssignale zur Verfügung, die meist zum Testen und Vermessen elektronischer Schaltungen benötigt werden. Mit ihrer Hilfe lassen sich zum Beispiel Frequenzgang, Verstärkung oder Verzerrung einer Schaltung messen.

Die Signale lassen sich durch verschiedene einstellbare Parameter beeinflussen und verändern.

1.2 Kommerzielle Signalgeneratoren

Handelsübliche Signalgeneratoren sind zu Preisen von circa 150 Euro bis mehreren tausend Euro erhältlich. Maßgeblich für den Preis sind in erster Linie die vorhandene Ausstattung, sowie diverse Qualitätsmerkmale der Geräte.

Hauptsächlich verfügen alle Geräte über folgende Einstellmöglichkeiten:

1. Signalform

Die gängigsten Signalformen sind hierbei Sinus, Rechteck, Dreieck, Sägezahn und Rauschen. Zusätzlich können eigene Formen frei programmiert werden. Geräte, die diese Möglichkeit besitzen, werden als „arbiträre Funktionsgeneratoren“ bezeichnet.

2. Frequenz

Für Funktionsgeneratoren werden eine minimale, eine maximale Frequenz, sowie die Frequenzauflösung angegeben. der zu generierenden Signale angegeben. Die minimale Frequenz entspricht größtenteils der Frequenzauflösung und liegt typischerweise im Bereich von einigen µHz bis einigen mHz.

3. Amplitude

Diese kann meist in einem Bereich von 0 Vpp bis 10 Vpp (teilweise auch bis 20 Vpp) entweder analog oder im gehobenen Preissegment auch digital eingestellt werden.

4. DC Offset

Dem auszugebenden Signal kann eine positive oder negative Gleichspannung hinzu addiert werden, um das resultierende Signal um den Nullpunkt zu verschieben. Gängig sind hier ±10 V.

5. Tastgrad

Der Tastgrad – auch Duty Cycle oder Duty Factor – beschreibt bei einer Rechteckspannung das Verhältnis der Impulsdauer zur Periodendauer. Er kann bei Signalgeneratoren zwischen 0% und 100% gewählt werden. Da 0% und 100% nicht sehr sinnvolle Werte darstellen, kann er je nach möglicher Auflösung zwischen 1% und 99% oder 0,01% und 99,99% gewählt werden.

6. Frequenz- oder Amplituden-Sweep (Startfrequenz, Stoppfrequenz, Dauer)

Kann man das auszugebende Signal in Frequenz oder Amplitude über einen bestimmten Zeitraum selbsttätig ändern lassen, nennt man diese Funktion „Sweep“. Hierfür kann eine Startfrequenz / Startamplitude, eine Stoppfrequenz / Stoppamplitude, sowie die Dauer der Änderung eingestellt werden. Bei Geräten der höheren Preisklassen gibt es zusätzliche Funktionen die zum Beispiel neben der linearen Änderung über der Zeit auch eine exponentielle Änderung erlauben.

7. Modulation

Oft findet sich bei Signalgeneratoren die Möglichkeit, das auszugebende Signal zusätzlich zu modulieren. Relativ günstige Geräte bieten hier eine einfache FM-Modulation an, wobei die Möglichkeiten in hohen Preisregionen schier unbegrenzt sind. Da diese Funktion für den einfachen Gebrauch allerdings nicht von Bedeutung ist, möchte ich an dieser Stelle nicht weiter darauf eingehen.

1.3 Wichtige Qualitätsmerkmale

- DAC-Wortbreite
- Minimale / maximale Frequenz und Frequenzauflösung
- Frequenzstabilität
- Klirrfaktor
- Schnittstellen
- Anzahl der Kanäle
- Anstiegs-/Abfallzeit (besonders wichtig bei Rechteck)

1.4 Grundlagen Signalerzeugung

Die von Signalgeneratoren ausgegebenen Signale lassen sich auf verschiedene Weisen erzeugen. Grundlegend unterschieden wird hier zwischen der analogen und der digitalen Signalerzeugung. Eingehen möchte ich im Folgenden auf zwei gängige Prinzipien aus beiden Kategorien.

1.4.1 Analoge Signalerzeugung

Bei der einfachen analogen Signalerzeugung werden die verschiedenen Signalformen (Rechteck, Dreieck, Sinus) wie folgt mit Hilfe von Operationsverstärkern erzeugt:

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 1: Einfacher analoger Synthesizer (Quelle: www.mikrocontroller.net)

„Die Spannung an Punkt 2 wird von dem Integrator integriert, wobei eine positive Spannung zu einer fallenden Spannungsrampe am Ausgang führt, eine negative zu einer steigenden. Diese wird gleichzeitig an den Eingang des Schmitt-Triggers zurückgeführt. Sobald die Eingangsspannung des Schmitt-Triggers eine der Umschaltschwellen -2/3 Umax oder +2/3 Umax erreicht hat, springt die Ausgangsspannung an Punkt 2 auf -Umax bzw. +Umax. Dadurch wird die Integrationsrichtung umgekehrt, die Steigung der Spannungsrampe ändert also ihr Vorzeichen. Die Spannung steigt oder sinkt nun wieder so lange, bis die andere Umschaltschwelle des Schmitt-Triggers erreicht ist und ändert dann erneut die Richtung. Dieser Vorgang wiederholt sich immer wieder, so dass an Punkt 2 eine Rechteck- und an Punkt 3 eine Dreieck-Schwingung gemessen werden kann. Die Frequenz hängt von der Geschwindigkeit der Integration, also der Steigung der Dreieckspannung, ab.

Um aus dem erzeugten Dreiecksignal eine angenäherte Sinusschwingung zu gewinnen, wird ein Sinusfunktionsnetzwerk verwendet. Damit wird die Eingangsspannung mit Hilfe von Dioden in mehrere Abschnitte "zerlegt", die jeweils unterschiedliche, durch Spannungsteiler angepasste Steigungen besitzen, wobei die Signalform so verändert wird dass sie einem Sinus ähnelt.“1

1.4.2 Digitale Signalerzeugung mittels DDS (Direct Digital Synthesis)

In einem DDS-System wird das auszugebene Signal - wie bereits dem Titel zu entnehmen - digital erzeugt. Im einfachsten Fall besteht ein solches System aus einem Takt, einem Adresszähler, einer Wertetabelle (der sogenannten „Lookup-Table“) und einem Digital-Analog-Wandler (DAC).

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2: Einfacher digitaler Funktionsgenerator (Quelle: A Technical Tutorial on Digital Signal Synthesis, Analog Devices)

Die Funktionsweise ist einfach: Bekommt der Adresszähler einen Takt, so zählt er eine Adresse hoch. An dieser Adresse wird in der Wertetabelle der zugehörige Funktionswert ausgelesen und dem DAC via Ausgangsregister übergeben, welcher diesen wandelt und ausgibt.

Ändert man die Werte der Wertetabelle, oder schaltet zwischen mehreren Tabellen um, so kann jedes beliebige Ausgangssignal erzeugt werden.

In diesem einfachsten Fall eines DDS-Systems fehlt nun lediglich die Möglichkeit, die Frequenz des Ausgangssignals beliebig ändern zu können.

Um dies erreichen zu können, wird ein Phasenakkumulator benötigt, dessen Funktionalität ich im Folgenden erläutern möchte:

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 3: Digitaler Funktionsgenerator mit variabler Frequenz (Quelle: Wikipedia – Direct Digital Synthesis)

Der Phasenakkumulator ist im Grunde genommen ein Zähler, welcher nun nicht mehr bei jedem Takt um den Wert 1 erhöht wird, sondern jeweils um den im Steuerregister (in Abbildung 3 als „Steuerwort“ bezeichnet) gespeicherten Wert. Im Regelfall wird hierfür eine Kombination aus 48-Bit Zähler und Register genutzt, um den gewünschten Frequenzbereich in einem genügend großen Spektrum variieren zu können.

Von der so im Phasenakkumulator erzeugten Adresse werden die oberen Bits – und zwar meist zwei mehr als eigentlich für die gewünschte Auflösung benötigt - zur Wertetabelle geführt. Dies verhindert ein Quantisierungsrauschen.2 Das bedeutet, dass in einem bestimmten Frequenzbereich das Überspringen einiger Funktionswerte verhindert wird und sich somit der Signal- / Rauschabstand nicht verschlechtert.

In der Wertetabelle müssen für diese Maßnahme natürlich auch dementsprechend mehr Einträge vorhanden sein.

1.5 Beschreibung des Entwicklungssystems Altera DE2

Die Realisierung des in dieser Arbeit beschriebenen Funktionsgenerators erfolgte auf einem Entwicklungsboard des Typs DE2 der Firma Altera.

Hauptbestandteil dieses Boards ist ein Altera Cyclone© II EP2C35F672C6 FPGA.

Die umfangreiche Ausstattung dieses Boards wurde für den Funktionsgenerator nur bruchstückhaft genutzt, da dieser außer ein paar Ausgangspins, Tastern und einer Möglichkeit zur Anzeige von Funktionen und Werten keine weitere Peripherie benötigt.

Eine Stromversorgung und der USB-Blaster zur Programmierung des FPGAs sind auf dem Board integriert, sodass ein USB-Kabel und ein einfaches Steckernetzteil zur Arbeit genügen. Während der Arbeit stellte sich allerdings heraus, dass der Eingangskondensator der integrierten Stromversorgung bei mehreren Boards plötzlich einen Defekt aufwies und das Board beim Einschalten nicht mehr reagierte. Abhilfe schaffte hier nur der Tausch des entsprechenden Bauteils.

2. Bedienung

2.1 Technische Daten

- Signalformen: Sinus, Rechteck, Dreieck, Sägezahn
- Frequenzauflösung: 0,178 µHz (theoretisch*), 1 µHz (praktisch*)
- Maximale Abweichung vom eingestellten Frequenzwert: 0,089 µHz**
- fmin: 0 Hz
- fmax: 25 MHz bzw. 195,31 kHz bei Ausnutzung aller Funktionswerte
- Tastgrad (Rechteck): 0% ... 100%
- Ausgangsamplitude: 3,3 V (fest)

*Die theoretische Frequenzauflösung hängt von der Wortbreite des Steuerwortes, sowie der Breite des verwendeten Addierers ab. Da bei der vorliegenden Realisierung der Frequenzwert als Dezimalzahl mit einer Genauigkeit von 1 µHz eingegeben und daraus das jeweilige Steuerwort berechnet wird, ist diese theoretische Auflösung nicht möglich und für die vorliegende Arbeit auch nicht notwendig.

**Die maximale Abweichung bezieht sich auf den maximalen Fehler, der aufgrund der Umrechnung der eingegebenen Frequenz in einen Wert für das Steuerwort auftritt. Nicht berücksichtigt sind hier Hardwareseitige Ungenauigkeiten wie zum Beispiel die Gangungenauigkeit des Quarzes zur Systemtakterzeugung, etc..

2.2 Beschreibung der Bedienelemente

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 4: Bedienelemente

Abbildung in dieser Leseprobe nicht enthalten

3. Aufbau

3.1 D/A-Wandlerboard

Zunächst sollte die Wandlerplatine einen Digital/Analog-Wandler mit nachgeschaltetem Operationsverstärker und entsprechender Beschaltung, sowie einem Tiefpassfilter bestückt werden.

Als D/A-Wandler sollte hierfür der AD7524 von Analog Devices beziehungsweise der baugleiche TLC7524 von Texas Instruments zum Einsatz kommen. Dieser verfügt über eine Wandlungsbreite von 8 Bit und kann mit einer einzigen Versorgungsspannung betrieben werden (Single Supply). Mit einer Settling Time von 100 ns wäre er theoretisch bis Frequenzen von 5 MHz (Nyquist) geeignet. Als Operationsverstärker sollte hierfür ein LF353 der Firma National Semiconductors verwendet werden.

Nach einiger Recherche entschied ich mich allerdings für die einfache Variante eines R/2R-Netzwerkes, um mich zeitlich mehr auf das wesentliche - den Digitalteil des Generators - konzentrieren zu können. Die entsprechenden Datenblätter liegen dieser Arbeit allerdings, für eine eventuelle, spätere Realisierung der Schaltung, im Anhang bei.

Vorteile der R/2R-Variante sind vor allem die nicht vorhandene Wandlungszeit und die günstige Beschaffung der benötigten Komponenten.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 6: Schaltplan des D/A-Wandlerboards (R2R-Netzwerk)

Zwei wesentliche Nachteile sind hierbei allerdings die Genauigkeit aufgrund der Bauteiltoleranzen, sowie die sehr geringe Belastbarkeit des Ausgangs. Dies spielt jedoch für diese Ausarbeitung keine Rolle, da zum einen für die Signaldarstellung ein Oszilloskop mit hohem Eingangswiderstand verwendet wird und es hier zum anderen hauptsächlich um den digitalen Teil des Generators gehen soll. Die Genauigkeit wurde durch Verwendung von Präzisionswiderständen mit einer Toleranz von 0,1% so groß wie möglich gehalten.

Ein entsprechender Analogteil, welcher eine Impedanzanpassung, Filter, Amplituden- und Offsetparametrisierung enthält, wäre als Thema einer anderen Arbeit denkbar.

Benutzt wurden vom DE2-Board hierfür folgende Pins:

Abbildung in dieser Leseprobe nicht enthalten

[...]


1 http://www.mikrocontroller.net/articles/Funktionsgenerator (abgerufen am 31.05.2010)

2 Direct Digital Synthesis, Application Note #5, Page 2 – Stanford Research Systems www.thinkSRS.com

Ende der Leseprobe aus 44 Seiten

Details

Titel
Entwicklung und Implementierung eines Signalgenerators auf einem FPGA
Hochschule
Universität der Bundeswehr München, Neubiberg  (Elektrotechnik und Technische Informatik (ETTI))
Note
1,0
Autor
Jahr
2010
Seiten
44
Katalognummer
V490848
ISBN (eBook)
9783668975330
ISBN (Buch)
9783668975347
Sprache
Deutsch
Schlagworte
FPGA, DDS, Signalgenerator, VHDL, Altera, Funktionsgenerator, D/A-Wandler, DAC, Quartus, Modulation, Signalerzeugung
Arbeit zitieren
Marco Niesen (Autor), 2010, Entwicklung und Implementierung eines Signalgenerators auf einem FPGA, München, GRIN Verlag, https://www.grin.com/document/490848

Kommentare

  • Noch keine Kommentare.
Im eBook lesen
Titel: Entwicklung und Implementierung eines Signalgenerators auf einem FPGA



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden