Digitale Signalverarbeitung mit Fpga

Transcription

Digitale Signalverarbeitung mit Fpga
Ingenieur-Wissenschaftliches Zentrum
der FH-Köln
Fakultät für
Informations-, Medien- und Elektrotechnik
Skript zur Vorlesung
Digitale Signalverarbeitung mit Fpga
von
Prof. Dr.-Ing. Jens Onno Krah
04. Februar 2014
DSF
1
Krah WS 13/14
Inhaltsverzeichnis
1
Einleitung
5
1.1 Theoretische Grundlagen der digitalen Signalverarbeitung
5
1.2 Begriffe
6
2
Programmierbare Logikbausteine
8
2.1 Transistor-Transistor-Logik (TTL)
8
2.2 Programmable Array Logic (PAL)
9
2.3 Complex Programmable Logic Devices (CPLD)
10
2.4 Field Programmable Gate Array (FPGA)
12
2.5 Low Cost FPGA Reihe Cyclone von Altera
15
3
2.5.1
Input / Output (IO)
17
2.5.2
Logik Elemente (LE)
20
2.5.3
Embedded Multiplier (DSP)
21
2.5.4
Phase Look Loop (PLL)
22
2.5.5
Embedded Memory
23
Nutzung von Evaluation Boards
24
3.1 Das Drei-Schichten-Modell
25
FPGA Tool Chain – Vom Algorithmus zur Netzliste
4
31
4.1 Quartus II (Altera)
31
4.2 ModelSim
35
4.3 SignalTap II
38
4.4 System Console
39
4.5 MATLAB Simulink
40
4.6 DSP Builder Advanced Blockset
41
5
VHDL
42
5.1 VHDL Entity
46
5.2 VHDL Architecture
46
5.3 VHDL Process
46
5.4 Basis Blöcke in VHDL
51
DSF
5.4.1
P-Element
51
5.4.2
I-Element
52
2
Krah WS 13/14
6
5.4.3
PI-Element
54
5.4.4
Tiefpass erster Ordnung
55
5.4.5
Beobachter zweiter Ordnung
55
System on programmable Chip
57
6.1 Geistiges Eigentum (IP)
59
6.2 OpenCore Plus
60
6.3 Megacore IP Library
61
6.4 Soft Core CPU Nios II
62
6.4.1
Custom Instruction – ein Mittelweg zwischen Hardware und Software 66
6.5 FPGA integrierte Hard-Core Prozessoren
7
69
Digital-Analog-Umsetzer - Digital-to-Analog Converter (DAC)
70
7.1 Schnelle Digital-Analog-Umsetzer
70
7.2 Abzählende Digital-Analog-Umsetzer
72
7.3 Sigma-Delta  Digital-Analog-Umsetzer
73
8
Analog-Digital-Umsetzer
77
8.1 Kenngrößen von Umsetzern
79
8.2 Kompensationsverfahren (Wägeverfahren)
80
8.3 Dual-Slope (Zählverfahren)
80
8.4 Spannungs-Frequenz-Umsetzungsverfahren
81
8.5 Flash-Analog-Digital-Umsetzer (Parallelverfahren)
81
8.6  (Sigma-Delta) Analog-Digital-Umsetzer
82
9
Der Abtastvorgang
89
9.1 Realisierung eines Abtastgliedes
89
9.2 Mathematische Beschreibung des Abtast-Halte-Gliedes
90
9.3 Das Abtasttheorem von Shannon
97
9.4 Anti-Aliasing-Filter
100
9.5 Rekonstruktions-Filter
101
10 Reale Abtastsysteme
103
10.1
Zeitverhalten eines Abtastsystems
105
10.2
Aufbau eines Prozessorbasierten Systems: µC, DSP und IPC
106
10.3
Aufbau eines FPGA basierten Signalverarbeitungssystems
110
DSF
3
Krah WS 13/14
11 Digitale Filter
111
11.1
Nichtrekursive Digitalfilter (FIR)
111
11.2
Realisierung nicht rekursiver Filter
114
11.3
Rekursive Digitalfilter (IIR)
116
11.3.1 Rekursives Digitalfilter erster Ordnung
118
11.3.2 Rekursives Digitalfilter zweiter Ordnung
123
11.4
Digitale Filter höherer Ordnung
129
11.5
Realisierung digitaler Filter in Festkomma-Arithmetik
129
11.6
Multiraten-Signalverarbeitung
130
11.7
Dezimierungsfilter (SincK-Filter) für -Analog Digital Wandler
132
12 z –Transformation
135
12.1
Definition der z-Transformation
135
12.2
Rechenregeln der z-Transformation
136
12.3
Diskrete Grundsignale
140
12.4
Rücktransformation
141
12.5
Zusammenschalten von Übertragungsgliedern
144
13 Stabilitätskriterien
146
13.1
Definition der Stabilität
146
13.2
Grundlegende Stabilitätskriterien
146
13.3
Algebraische Stabilitätskriterien
147
14 Literaturverzeichnis
152
15 Abkürzungen / Formelzeichen
153
16 Index
155
DSF
4
Krah WS 13/14
1 Einleitung
Eine analoge Schaltung zur Signalverarbeitung ist immer um ein Vielfaches schneller
als eine prozessorbasierte Implementierung, z.B. mit einem µController (µC) oder
einem Digitalen Signal Prozessor (DSP). Während sich Softwarelösungen durch eine
hohe Flexibilität und eine universelle Verwendung auszeichnen, sind Hardwarelösungen meist auf ein spezielles Problem zugeschnitten und können eine Aufgabe
dadurch meist deutlich schneller lösen.
Field Programmable Gate Arrays (FPGA) vereinen die Vorteile der Ansätze. Einerseits handelt es sich bei FPGAs um Hardware, die digitale Signale mit Basisblöcken
(Gatter, Logikelemente etc.) parallel verarbeitet, zum anderen ist die Konfiguration
der Hardwarekomponenten per Software (z.B. VHDL) programmierbar. Darüber hinaus können durch den Einsatz eines Soft-Core-Prozessors auch weniger zeitkritische
Teile eines Algorithmus effizient gelöst werden.
1.1
Theoretische Grundlagen der digitalen Signalverarbeitung
Im Folgenden werden grundlegende Kenntnisse der klassischen (analogen) Signalverarbeitung (ASS) und ihrer Methoden (Laplace etc.) vorausgesetzt. In einer kurzen
Wiederholung wird auf die zur Beschreibung digitaler Systeme (DSS) mit notwendigen theoretischen Grundlagen und mathematischen Methoden (z-Transformation)
eingegangen. Diese unterscheiden sich teilweise von denen der analogen Signalverarbeitung, weil es sich bei einer digitalen Verarbeitung um ein Abtastsystem handelt.
Hierbei werden kontinuierlich ablaufende Vorgänge zeitdiskret, das heißt nur zu bestimmten Zeitpunkten, betrachtet. Zeitdiskrete Vorgänge werden nicht mehr durch
Funktionen f(t) , sondern durch Folgen {xk} beschrieben. Anstelle der vielfach verwendeten Laplace-Transformation wird zur Beschreibung von Abtastsystemen die zTransformation als Spezialfall der Laplace-Transformation eingesetzt. Jedoch erfolgt
immer wieder der Bezug zur analogen Signalverarbeitung, um auf Zusammenhänge
zwischen den jeweiligen mathematischen Verfahren hinzuweisen. Denn obwohl die
digitale Signalverarbeitung völlig neue Möglichkeiten bietet, baut sie auf dem Erfahrungsschatz der wesentlich älteren zeitkontinuierlichen Technik auf.
Nach der Einführung erfolgt eine kurze Beschreibung des Aufbaus und der Funktionsweise eines digitalen Systems. Anschließend wird die prinzipielle Struktur von
Abtastsystemen betrachtet und mittels Diskretisierung hergeleitet, um dann den Abtastvorgang mathematisch zu beschreiben.
Abschließend werden grundlegende Implementierungen für zeitdiskrete Systeme behandelt. Auf dieser Grundlage werden Entwürfe von Abtastsystemen im Frequenzbereich vorgenommen.
DSF
5
Krah WS 13/14
1.2
Begriffe
Vorab sollen noch einige wichtige Begriffe, die in der Technik häufig Verwendung
finden, genauer erläutert werden.
System
Im Sinne von DIN 66201 stellt ein System eine abgegrenzte Anordnung von aufeinander einwirkenden Gebilden dar, die sich durch eine Hüllfläche von der Umgebung
abgrenzen lassen. Durch zweckmäßiges Zusammenfügen bzw. Unterteilen eines Gesamtsystems entstehen mehrere Teilsysteme. Bei der Betrachtung dieser Teilsysteme
entstehen an den Hüllflächen Schnittstellen zwischen der Umgebung der Teilsysteme
und dem System selbst. Über diese Schnittstellen kann ein Materie-, Energie- oder
Informationstransport stattfinden.
Signale
Der Informationsaustausch in technischen Prozessen erfolgt über Signale. Dabei wirken die physikalischen Größen als Signalträger. Mit Signalparameter oder Informationsparameter bezeichnet man diejenigen Kenngrößen des Signals, deren Werte oder Werteverlauf die Information darstellen.
Signale lassen sich durch ihr Amplituden-Zeit-Verhalten klassifizieren, Bild 1.1. Dabei unterscheidet man zwischen kontinuierlichem und diskretem Verhalten. Den
Übergang von zeitkontinuierlichen Signalen auf zeitdiskrete Signale nennt man Diskretisierung. Der Übergang von amplitudenkontinuierlichen Signalen auf amplitudendiskrete Signale wird als Quantisierung bezeichnet.
Die Signalformen lassen sich wie folgt unterscheiden:
- Signale, deren Werte sich zeit- und amplitudenkontinuierlich ändern und innerhalb eines bestimmten Bereiches beliebige Werte annehmen können, nennt man
kontinuierliche, analoge Signale.
- Signale, deren Werte zeitdiskret und amplitudenkontinuierlich sind, entstehen
meistens durch Abtastung (S&H) analoger Signale.
- Signale, deren Werte zeitkontinuierlich und amplitudendiskret (wertdiskret) sind,
entstehen durch Quantisierung der Amplitude eines analogen Signals.
- Signale, deren Werte zeitdiskret und amplitudendiskret verlaufen, nennt man diskrete Signale. Zur Verarbeitung diskreter Signale in Digitalrechnern müssen die
diskreten Werte kodiert werden. Die so entstandenen Signale bezeichnet man als
digitale Signale.
DSF
6
Krah WS 13/14
f(t)
f(t)
abgetastet
analog
t
t
zeitkontinuierlich
amplitudenkontinuierlich
f(t)
zeitdiskret
amplitudenkontinuierlich
f(t)
quantisiert
digital
t
t
zeitkontinuierlich
amplitudendiskret (wertdiskret)
Bild 1.1:
zeitdiskret und
amplitudendiskret (wertdiskret)
Amplituden-Zeit-Verhalten von Signalen
Prozessrechner
Entsprechend DIN 66201 wird damit ein Rechner bezeichnet, der mittels Prozessperipherie direkt an einen Prozess zur Erfassung, Verarbeitung und Ausgabe von Daten
gekoppelt ist. Da moderne Prozessrechner heute fast ausschließlich aus mikroelektronischen Schaltkreisen bestehen, kann man eine grobe Einteilung nach ihrer Größe
und Leistungsfähigkeit vornehmen. So lassen sich
- Mikrocontroller (µC) Einzelsysteme,
- Industrie-PCs mit multi-core Prozessoren (IPC) für komplexe Systeme,
- Digitale Signalprozessoren und spezielle Mikrocontroller (DSP, µC) und
- FPGAs für extrem schnelle Systeme einsetzen.
DSF
7
Krah WS 13/14
2 Programmierbare Logikbausteine
2.1 Transistor-Transistor-Logik (TTL)
Die Transistor-Transistor-Logik (TTL) ist eine Schaltungstechnik (Logikfamilie)
für logische Schaltungen (Gatter), bei der als aktives Bauelement der Schaltung
planare npn-Bipolar-Transistoren verwendet werden. Hierbei wird meist ein MultiEmitter-Transistor eingesetzt, so dass für mehrere Eingänge nur ein Transistor erforderlich ist.
Bild 2.1:
4-fach Nand 7400
TTL-Schaltkreise werden üblicherweise mit einer Versorgungsspannung von 3,3 oder
5 Volt betrieben. Kurzzeitig können allerdings bis zu 7 Volt Betriebsspannung anliegen. Die untere Grenze ist bei 2,7 Volt. Eine hohe Spannung ist als High-Pegel (eine
logische 1) definiert, eine niedrige Spannung wird als Low-Pegel bezeichnet (eine
logische 0). Die Schaltkreise sind so dimensioniert, dass Eingangsspannungen UE <
0,8 V als Low-Pegel, und UE > 2,0 V als High-Pegel erkannt werden. Die Ausgangsspannung UA beträgt typisch < 0,4 V für den Low-Pegel und > 2,4 V für den
High-Pegel. Der statische Störabstand beträgt somit sowohl für High- als auch für
Low-Pegel mindestens 0,4 V.
Logische Bausteine in TTL-Technik haben den Vorteil, dass sie unempfindlicher gegenüber elektrostatischen Entladungen sind als CMOS-Bausteine. Dennoch sollen
unbenutzte Eingänge der TTL-Schaltkreise auf ein festes Potential gelegt werden,
damit der Schaltkreis korrekt arbeitet.
Man erkennt den Standard TTL-Schaltkreis an einer Bezeichnung der Form 74ccxx,
wobei "74" auf die Logikfamilie, cc auf die verwendete Technologie (z.B. cc = LS
entspricht Low-power Schottky) und xx auf den Gatter-Typ (z.B. xx = "00" entspricht NAND) verweist.
Bild 2.1 zeigt den Aufbau eines TTL-NAND-Gatters. V1 ist der Multi-EmitterTransistor, U1 und U2 sind die Eingangsspannungen. Eine Besonderheit der TTLDSF
8
Krah WS 13/14
Reihe besteht darin, dass unbeschaltete Eingänge wirken, als lägen sie auf einem
High-Pegel (Pull-up – default = 1).
2.2 Programmable Array Logic (PAL)
Bild 2.2:
Grundprinzip eines PAL
Eine programmierbare logische Anordnung, häufig in deutschsprachiger Fachliteratur als Programmable Array Logic oder kurz PAL bezeichnet, ist ein Halbleiterschaltkreis, der aus zwei hintereinander geschalteten AND- und OR-Matrizen besteht.
Ein PAL wird zur Herstellung von Schaltnetzen und -werken für logische Funktionen
in disjunktiver Form verwendet. Die AND-Matrix repräsentiert dabei die Konjunktionsterme. Die Auswahl der Konjunktionsterme erfolgt im Rahmen der Programmierung (meist mittels eines speziellen Gerätes) durch das Entfernen von Schaltgliedern
aus der AND-Matrix. Die disjunktive Verknüpfung der Konjunktionsterme erfolgt
mittels der ODER-Matrix. Die technische Realisierung beider Matrizen erfolgt allerdings häufig mittels NAND-Gliedern. 1978 kamen die ersten vollständig konfigurierbaren Logikbausteine namens PAL mitsamt der Programmiersoftware PALASM
(=PAL – Assembler) auf den Markt.
Heutzutage werden PALs nur noch selten eingesetzt und sind fast vollständig durch
CPLDs abgelöst worden. CPLDs besitzen so wie PALs keine Einschränkungen betreffend der Verwendbarkeit der UND-/ODER-Matrizen im Eingangsbereich, sind
elektrisch programmierbar und auch wieder löschbar. CPLDs sind wie FPGAs in einheitlichen Hardwareprogrammiersprachen wie beispielsweise VHDL zu programmieren und umfassen darüber hinaus eine bestimmte Anzahl an Registern.
Realisierung
Ursprünglich wurde eine Matrix aus Sicherungen (engl. fuse) verwendet, wobei beim
Programmieren entsprechend dem zu programmierenden Bitmuster, einzelne Sicherungen mit einem hohen Strom durchgebrannt wurden. Eines der Probleme dieser
Technologie war, dass sich mit der Zeit - durch Kristallisations-Prozesse - einzelne
Sicherungen wieder „reparieren“ konnten.
Bei der neueren Antifuse-Technologie besteht das PAL aus einer Diodenmatrix, in
welcher jede Diode ein Bit repräsentiert. Im Gegensatz zur Fuse-Technologie, wo
DSF
9
Krah WS 13/14
eine leitende Verbindung unterbrochen wird, sind hier die Dioden so verschaltet, dass
sie normalerweise den Strom sperren. Beim Programmiervorgang werden nun gezielt
bestimmte Dioden mit einem sehr hohen Strom belastet. Diese Dioden werden
dadurch zerstört und bilden dadurch eine leitende Verbindung.
Nach dem „Brennvorgang“ des PAL werden die geschriebenen Daten durch ein Bitmuster defekter und funktionierender Dioden repräsentiert. Diese Daten lassen sich
nun beliebig oft auslesen (wobei der „Lesestrom“ selbstverständlich unterhalb dessen
liegt, welcher zur Programmierung verwendet wird). PALs gehören in die Gruppe der
OTP-Bauelemente (one time programmable).
Die Anzahl der Ein- und Ausgänge muss dabei nicht identisch sein. Ein einmal programmierter Baustein kann nicht mehr geändert werden, was bei der endgültigen Serienfertigung nicht weiter störend ist.
Als Weiterentwicklung der PALs kamen zuerst durch die Firma Lattice Semiconductor die wiederbeschreibbaren Generic Array Logic (kurz GAL genannt) Bausteine
auf den Markt. Während der Entwicklungsphase elektronischer Schaltungen wurden
gerne GALs eingesetzt, da sie sich mehrfach löschen und neu programmieren lassen.
2.3 Complex Programmable Logic Devices (CPLD)
Heutzutage werden PALs und GALs kaum noch eingesetzt und sind fast vollständig
durch CPLDs abgelöst worden. CPLD steht für Complex Programmable Logic Device. CPLDs besitzen keine Einschränkungen betreffend der Verwendbarkeit der
UND-/ODER-Matrizen im Eingangsbereich, sind elektrisch programmier- und löschbar, sind wie FPGAs in einheitlichen Hardwareprogrammiersprachen wie beispielsweise VHDL programmierbar und umfassen darüber hinaus eine bestimmte Anzahl
an Registern.
Bild 2.3:
DSF
Complex Programmable Logic Device (CPLD) von Altera
10
Krah WS 13/14
CPLDs bestehen im Wesentlichen aus folgenden Elementen:
 programmierbare AND/OR-Matrix
 programmierbare Rückkopplung (z.B. für Zähler)
 Eingabeblock
 Ausgabeblock
Ein-/Ausgabeblöcke können schnelle Speicher, wie Latches, D-Flipflops oder Register, sein. Viele moderne CPLDs stellen programmierbare Ausgänge bereit, denen
man definierte Zustände (active low, active high, tri-state) zuweisen kann. Der
AND/OR-Matrix als Kern kann jede beliebige kombinatorische Verknüpfung zugewiesen werden.
Ein CPLD setzt sich aus vielen Makrozellen zusammen. Die einzelnen Makrozellen
werden wiederum über Busse miteinander verbunden. Der homogene Aufbau ermöglicht eine exakte Bestimmung der Durchlaufzeiten, was den wesentlichen Unterschied zu den FPGAs ausmacht. Ein weiterer, allerdings nicht grundlegend notwendiger Unterschied ist die Konfiguration: Durch Fertigung in EECMOS electronically
erasable complementary metal oxide semiconductor bleibt nach der Konfiguration
das Programm im CPLD und muss nicht bei jedem Start neu geladen werden. Dieses
Kriterium der Konfiguration ist kein wesentliches Unterscheidungsmerkmal zwischen
CPLDs und FPGAs: So gibt es auch FPGA-Bausteine am Markt welche ebenfalls wie
CPLDs EEPROM-Zellen zur Speicherung ihrer Konfiguration beinhalten und keinen
externen Speicher benötigen (z.B. Actel).
Durch die hohe Anzahl von Eingängen pro Logikblock bieten sich CPLDs vor allem
für die Lösung komplexer, paralleler kombinatorischer AND/OR-Logik an wo viele
Ein- bzw. Ausgänge vorhanden sind. Gleichzeitig sollte die Anzahl der notwendigen
Speicher (Flipflops) bei der Anwendung von CPLDs eher gering sein, da pro Einbzw. Ausgabepins meist nur ein einziges Flipflop als Register zur Verfügung steht.
Digitale Schaltungen welche viele Register erfordern, wie beispielsweise Schieberegister oder digitale Zähler, lassen sich daher nur bis zu einem gewissen Grad in
CPLDs effizient realisieren.
Bei steigender Zahl der Zellen werden die Makrozellen mit lokalen Leitungen zu
übergeordneten Strukturen wie Logic Array Blocks, LABs zusammengefasst. Diese
Bezeichnungen variieren allerdings je nach Hersteller.
Hersteller sind beispielsweise: Xilinx, Altera, Lattice, Actel, Lucent, Cypress, Atmel
oder Quicklogic.
DSF
11
Krah WS 13/14
2.4 Field Programmable Gate Array (FPGA)
Ein FPGA (Field Programmable Gate Array) ist ein programmierbarer Halbleiterbaustein bzw. IC. Er beinhaltet programmierbare logische Komponenten (LE: Logic
Element), meist mit einer Pfadbreite von 1 Bit, weshalb FPGAs als feinkörnig rekonfigurierbar gelten und programmierbare Verbindungen zwischen diesen Komponenten. Das Ganze ist als Feld (field) bzw. Matrix gefertigt. Die Komponenten können
zu grundlegenden logischen Bausteinen wie AND, OR, NOR, NOT und NAND, programmiert werden. Sie können aber auch zu komplexerer Logik wie Decoder, Encoder oder mathematischen Funktionen programmiert und verknüpft werden. Das
FPGA wird nach der Herstellung vom Anwender programmiert. Er kann meist auch
im System, also in einer voll bestückten Platine, programmiert werden, um Firmware-Updates einzuspielen. Da die Funktion des FPGAs ausschließlich durch die Konfiguration festgelegt wird, kann der gleiche Baustein für viele verschiedene Schaltungen verwendet werden. Er kann deshalb in großen Stückzahlen produziert werden,
was ihn bei Prototypen bis hin zu mittleren Stückzahlen kostengünstig im Vergleich
zu einer anwendungsspezifischen integrierten Schaltung (ASIC) macht. FPGAs sind
im Allgemeinen langsamer als ASICs und sie sind nicht beliebig tief bzw. kompliziert programmierbar. Vielmehr ist die Tiefe der programmierbaren Logik von der
Vorbereitung des Herstellers abhängig. Gemessen wird dies an der Anzahl der logischen Komponenten, der I/O Ports, der Flipflops, der Gates usw.
Bild 2.4:
Ein FPGA der Firma Altera
Aufbau und Struktur
Bild 2.5:
Logik-Element eines FPGAs, mit Look-Up-Table (LUT) und Flipflop
Die zentralen Elemente eines FPGAs sind programmierbare Logikelemente. In diesen können logische Operationen wie AND, OR, NOT, XOR realisiert werden. Außerdem ist ihnen ein Speicherelement nachgeschaltet, das als Flipflop oder Latch
verwendet werden kann bzw. überbrückt wird, wenn eine rein kombinatorische Funktion benötigt wird. Die kombinatorische Logik wird meist durch sog. LUTs (LookUp-Table) gebildet, das heißt in einem kleinen Speicher wird für jeden Zustand der
DSF
12
Krah WS 13/14
Eingänge der Wert abgelegt, den der Ausgang annehmen soll. Der LUT-Speicher
kann auch als Teil von Rechenfunktionen eingesetzt werden.
An die Logikelemente sind Schaltmatrizen angeschlossen, mit denen über Leitungen
die Verbindung zu anderen Elementen des FPGAs hergestellt wird.
#Eingangs-/Ausgangs-Blöcke dienen der Kommunikation mit der Außenwelt, über
sie werden die Pins des FPGAs mit der Schaltmatrix verbunden. Auch diese Blöcke
können an die jeweilige Anwendung angepasst werden, z.B. kann die Ausgangsspannung an den jeweiligen I/O-Standard angepasst werden (TTL/CMOS usw.).
Anwendungsgebiete
Reprogrammierbare FPGA haben einen speziellen Bereich der Computertechnik erst
in nutzbarem Umfang realisierbar gemacht: Selbst konfigurierende Systeme. Diese
konfigurieren sich zur Laufzeit entsprechend der geforderten Eigenschaften (z. B.
spezielle mathematische Algorithmen) um und erreichen damit bisher unerreichte
Verarbeitungsgeschwindigkeiten und Parallelität. Als besondere Herausforderung
kann man hierbei die Compiler-Entwicklung sehen. Ziel ist es, objektorientiert Logik-Kapazitäten bei Bedarf zur Benutzung zu konfigurieren und nach der Benutzung
freizugeben.
FPGAs werden gerne zur Echtzeit-Verarbeitung einfacher Algorithmen genutzt, speziell zur Signalverarbeitung (z. B. FFT, FIR), Protokoll-Abarbeitung (Ethernet MACLayer, GPRS etc.), Kodierung, Fehlerkorrektur usw., das heißt immer dann, wenn die
Bearbeitung eines Datenstroms nicht mehr von einer CPU bewältigt werden kann
(Ausgangsdatenstrom gleich groß wie Eingangsdatenstrom, in der Regel mit einer
gewissen Latenz). Besonders in Bereichen, in denen Algorithmen bzw. Protokolle
einer schnellen Weiterentwicklung unterliegen, ist die Verwendung rekonfigurierbarer FPGAs statt ASICs angebracht (schnelle Marktreife, nachfolgende Fehlerbehebungen, Anpassung an neue Entwicklungen), weil dann nur noch die Firmware aktualisiert werden muss, anstatt der Neuanfertigung bzw. dem Austausch eines ICs.
Die inzwischen erreichte Anzahl von Logikblöcken erlaubt die Integration mehrerer
eingebetteter Computersysteme in einen einzigen FPGA-Baustein inklusive CPU(s),
Bussystem(en), RAM, ROM, RAM-Controller, Peripherie-Controller etc. FPGAs
werden auch als Entwicklungsplattform für den digital-Teil von ASICs und für Prozessoren verwendet.
Unterschiede zu Prozessoren
FPGAs bieten die Möglichkeit Informationen massiv parallel zu verarbeiten.
Dadurch benötigen FPGAs nicht so hohe Taktfrequenzen wie Prozessoren, welche
einen Programmfluss sequentiell verarbeiten. In einem FPGA können hunderte Additionen und Multiplikationen zur gleichen Zeit ausgeführt werden, während selbst moderne Prozessoren mit SIMD-Befehlen nur einige wenige Operanden parallel verarbeiten können.
DSF
13
Krah WS 13/14
Die Unterschiede zu CPLDs sind im Wesentlichen:
 durch Blockarchitektur und frei programmierbaren Signalfluss ist bei FPGAs
keine Abschätzung der Gatterlaufzeiten möglich
 bei FPGAs, die auf SRAM-Technologie basieren, erfolgt eine Konfiguration
bei jedem Start (heutzutage meist via JTAG oder vom Prozessor her aus dem
Flash), bei CPLDs die auf Flash- oder Antifuse-Technologie basieren entfällt
logischerweise die Konfiguration.
Vorteile gegenüber ASICs
 deutlich geringere Entwicklungskosten
(im Gegensatz zu ASICs keine Masken mit sehr hohen Fixkosten benötigt)
 sehr kurze Implementierungs- und Updatezeiten
 einfach korrigier- und erweiterbar (rekonfigurierbar)
 geprüftes Silizium
 geringeres Designrisiko, da es nicht mehrere Monate vor der Hardwareauslieferung fertiggestellt sein muss
Nachteile gegenüber ASICs
 ab höheren Stückzahlen höherer Stückpreis
 geringere Taktraten (aktuell verfügbar bis ca. 600 MHz)
 geringere Logikdichte (ca. 10-facher Flächenbedarf gegenüber einem ASIC
gleicher Technologie)
 höherer Energiebedarf (Stromverbrauch)
 weniger Flexibilität was Ausstattung z.B. mit eingebettetem Speicher oder analogen Elementen angeht, aber auch bei IO-Buffern.
 der kürzere Designzyklus und die Möglichkeit sehr spät noch Fehler korrigieren zu können, verleitet dazu, im Vorfeld weniger funktionale Tests durchzuführen.
 SRAM-basierte FPGAs (das sind z.B. die von den Marktführern Xilinx und
Altera angebotenen) müssen nach jedem Systemstart geladen werden. Es sind
also zusätzliche externe Komponenten notwendig, z.B. ein herstellerspezifischer Konfigurationsbaustein (EEPROM) oder ein Mikrocontroller mit zusätzlichem Flash-Speicher, der den Initialisierungsvorgang durchführt. Das bedeutet auch, dass die Funktionalität eines FPGAs nicht direkt nach dem Einschalten zur Verfügung steht, sondern erst nach dem Laden, was je nach eingesetzter Technik einige Zeit dauern kann. Dieser Nachteil gilt nur für einige FPGAs.
DSF
14
Krah WS 13/14
2.5 Low Cost FPGA Reihe Cyclone von Altera
CPLDs
Low-Cost
FPGAs
Intellectual
Property (IP)
Bild 2.6:
High-Density,
Med-Performance
FPGAs With
Transceivers
High-Performance,
High-Density FPGAs
With High-Speed
Transceiver Options
Embedded
Soft
Processors
Design
Software
Development
Kits
Altera offers a complete programmable logic portfolio [Altera]















2K – 20K logic elements (LEs)
295 Kbits embedded RAM
DDR support
Nios embedded processor
2002
Bild 2.7:
DSF
Structured
ASICs

5K – 70K LEs
1.1 Mbits embedded RAM
150 18 x 18 multipliers for DSP
DDR2 support
Nios II embedded processor
2004

50% lower power
5K – 120K LEs
4 Mbits embedded RAM
288 18 x 18 multipliers for DSP

Higher performance DDR2 support
Nios II embedded processor

Complete security solution

2007




Integrated transceivers
Up to 30% lower power
Only 2 power supplies
Integrated PCIe Hard IP
6K – 150K LEs
6.5 Mbits of embedded RAM
Up to 360 multipliers
Nios II embedded processor
2009
Features to Meet the Needs of High-Volume Applications
(Quelle: Altera)
15
Krah WS 13/14
FPGA Value Proposition
 Flexibility
 Update your product immediately to add new features or increase performance by re-programming the FPGA
 Cost reduction
 Integrate your digital logic into one device
 Support many products for one base hardware design
 Easy maintenance/upgrade of products in the field
 Protection from obsolescence
 FPGA devices have long lifetimes
 IP design can easily be re-targeted to new FPGA family
Up to 400-Mbps
external memory
interfaces
Up to 150K LEs
Up to 360 embedded
multipliers
Up to 8 transceivers,
up to 3.125 Gbps
PCIe hard IP block
Up to 6.5-Mbits
embedded memory
Up to 475 flexible
user I/O pins
Up to 4 MPLLs
Up to 4 PLLs
MPLL – multi-purpose phase-locked loop for transceivers
Bild 2.8:
DSF
Cyclone IV GX: key architectural features [Altera]
16
Krah WS 13/14
2.5.1 Input / Output (IO)
Cyclone IV GX &
Cyclone IV E (1.2V)
max. clock rate
Cyclone IV E (1.0V)
max clock rate
2.5-V SSTL Class I and II
167 MHz
167 MHz
DDR SDRAM
1.8-V SSTL Class I and II
200 MHz
167 MHz
DDR/DDR2 SDRAM
1.8-V/1.5-V/1.2-V HSTL I and II
167 MHz
167 MHz
QDR I/II SRAM
3.3-V PCI compatible
66 MHz
66 MHz
Embedded
3.3-V PCI-X 1.0 compatible
100 MHz
100 MHz
Embedded
3.3-V LVTTL, LVCMOS
100 MHz
100 MHz
System interface
3.0-V/2.5-V/1.8-V LVTTL
167 MHz
167 MHz
System interface
3.0-V/2.5-V/1.8-V/1.5-V/1.2-V LVCMOS
167 MHz
167 MHz
System interface
Cyclone IV GX &
Cyclone IV E (1.2V)
max data rate
Cyclone IV E (1.0V)
max data rate
Comment
LVDS Rx
875 Mbps
640 Mbps
High-speed serial
LVDS Tx
840 Mbps
640 Mbps
High-speed serial
RSDS/Mini-LVDS transmission
440 Mbps
311 Mbps
High-speed serial
LVPECL
500 MHz
500 MHz
High-speed clocks
Single-ended I/O standards
Differential I/O standards
Usage
* IP cores available, requires external PHY devices
** all data rates are subject to change pending characterization.
Bild 2.9:
Supported I/O Standards
QN148
F169
F324
F484
F672
F896
0.5 mm
11 x 11
1.0 mm
14 x 14
1.0 mm
19 x 19
1.0 mm
23 x 23
1.0 mm
27 x 27
1.0 mm
31 x 31
I/Os
XCV
Rs
I/Os
XVC
Rs
I/Os
XCV
Rs
I/Os
XCV
Rs
72
2
72
2
EP4CGX22
72
EP4CGX30
72
290
4
EP4CGX50
290
4
310
8
EP4CGX75
290
4
310
8
EP4CGX110
270
4
393
EP4CGX150
270
4
393
Device
EP4CGX15
I/Os
XCV
Rs
2
150
4
2
150
4
I/Os
XCV
Rs
8
475
8
8
475
8
Bild 2.10: Cyclone IV GX Package Plan
DSF
17
Krah WS 13/14
Variety of I/O Standards
 HSTL, SSTL Class I and II
 LVDS, RSDS, Mini-LVDS, PPDS
 LVCMOS
 LVTTL
 LVPECL
 PCI, PCI-X
- 3.3-V compatible
- On-chip termination (On-chip Abschlusswiderstand)
- Adjustable slew rates (Einstellbare Anstiegszeiten)
- Eight banks of every device in the family
 Each can implement any supported I/O standard
- Dedicated memory interfaces
 QDR II, DDR, and DDR2
Bank 4
Bank 8
Bank 7
Bank 2
Bank 5
Bank 3
Bank 1
Bank 6
Bild 2.11: I/O Pin Features
Complete flexibility to implement a wide variety of I/O standards
In der Regel kann bei jeder der meist 8 Bänke ein I/O Standard genutzt werden. Das
muss beim Layout berücksichtigt werden, da einige Pins der Bänke die entsprechende
Spannungsversorgung benötigen.
DSF
18
Krah WS 13/14
Output Enable
Data Out Reg
REG
REG
Pin
Data Out Comb
Output Clock
Data In Comb
Data In Reg
REG
Clock
Bild 2.12: Blockschaltbild eines I/O Elementes
Im Randbereich der FPGAs (Bild 2.8) befinden sich die sogenannten Ein/Ausgangsblöcke. Diese sind auf dem Silizium-Chip jeweils mit einem Pad verbunden. Die Pads wiederum sind über Bonddrähte mit den Pins des IC-Gehäuses verbunden, Bild 2.12.
Die Input/Output-Blöcke (IOB) stellen die Verbindung zwischen den internen Signalen des FPGAs und den externen elektrischen Eingangs- und Ausgangssignalen dar.
Es handelt sich in der Regel um bidirektionale I/O Blöcke. Ein Ausgangssignal (Output) kann aktiv-high, aktiv-low oder tri-state (hochohmig) sein. Im Falle von tri-state
kann ein Eingangssignal von außen eingelesen werden (Input). In der Regel verfügen
IOBs über Latch-Flipflops, die optional überbrückt werden können.
Bild 2.13:
DSF
Darstellung der Timing-Constrains für die I/Os
19
Krah WS 13/14
Wenn ein Eingangssignal z.B. über ein D-Flipflop mit dem FPGA-Takt synchronisiert werden soll, können mit einem Flipflop im IOB sehr kurze set-up- und holdZeiten (tsu, th) erreicht werden (z.B. weniger als 5 ns).
Wird ein Ausgangssignal mit synchroner Logik generiert, so kann mit einem Flipflop im IOB eine sehr kurze clock-to-output Zeit (tco) erreicht werden (z.B. weniger
als 5ns).
Wird nur kombinatorische Logik (ganz ohne Takt!) verwendet, so werden die Flipflops im IOB überbrückt und es ergibt sich eine meist langsamere (z.B. 15 ns) propagation-delay-Zeit (tpd).
Bei LVDS-Signalen ist darauf zu achten, dass diese immer paarweise verwendet
werden müssen. Einige Signale, wie zum Beispiel Clock oder die Konfiguration betreffende nutzen spezielle festgelegte Pins.
Bei der Programmierung (VHDL bzw. BDF) wird festgelegt, ob es sich um einen
Eingang (input – OE = ‚0‘), Ausgang (output – OE =‘1‘ ) oder um einen Bidirektionalen I/O (bidir , OE = ?) handelt. Über Pin Assignment (Pin-Planner) wird der gewünschte physikalische Pin zugeordnet.
2.5.2 Logik Elemente (LE)
LUT
Chain
Carry
In0
Carry
In1
Register
Chain
Local
Routing
In1
In2
In3
In4
REG
LUT
General
Routing
General
Routing
Clock
Carry
Out0
Carry
Out1
Register
Chain
Bild 2.14: Cyclone II Logic Element (Altera)
Ein FPGA besteht aus sehr vielen Logikelementen durch deren vielseitige Konfiguration nahezu jedes beliebige Hardwaredesign realisiert werden kann, Bild 2.14. Die
logischen Blöcke mit ihren Verbindungen sind matrixförmig angeordnet und können
zu logischen Bausteinen, wie AND, OR, NOR, NOT und NAND, programmiert werden. Die Programmierung von FPGAs in SRAM Technik erfolgt mit Hilfe so genannter Look-Up-Tables (LUT). Dabei wird der Speicher durch die Eingangssignale
DSF
20
Krah WS 13/14
adressiert und der hinterlegte Wert an dieser Speicheradresse entspricht dann dem
zum Eingangssignal gehörigen Ergebnis. In den Datenblättern werden die LUTs in
der Regel als Read-Only-Memory (ROM) dargestellt. Die Umsetzung und Optimierung von (VHDL) Programmen in FPGA Logic Elemente erfolgt automatisch, z.B.
durch Quartus II von Altera.
2.5.3 Embedded Multiplier (DSP)
Y
18
36
Output Registers
18
X
Input Registers
Sign_X
36
Sign_Y
Clock
Clear
Bild 2.15: Embedded Multiplier Details - 250-MHz Performance
Vor allem für Aufgaben der digitalen Signalverarbeitung sind DSP-Blöcke (Multiplizierer) integriert, die resourcenschonender und schneller sind, als solche, die aus Logikzellen zusammengesetzt sind. Die Nutzung von DSP-Blöcken erfolgt automatisch
durch den VHDL-Compiler.
Ab Cyclone V stellt Altera Multiplizierer mit variabler Genauigkeit zu Verfügung.
Maximal sind können zwei integer Zahlen mit 27-Bit plus Vorzeichen multipliziert
werden. Dadurch können die Mantissen zweier Fließkommazahlen einfacher Genauigkeit (float) in einem Schritt multipliziert werden.
DSF
21
Krah WS 13/14
2.5.4 Phase Look Loop (PLL)
I/O &
Global
Routing
Lock
Detect
Reference
Clock
N
CP
LF
PFD
VCO
G0
G1
Global
Clock
Network
EG
I/O
Buffer
M
Bild 2.16: Cyclone II PLL Details
So genannte PLLs besitzen einen internen, analogen spannungsgesteuerten Oszillator
(Voltage Controlled Oscillator) VCO. Ein Phasendetektor vergleicht den Referenztakt mit dem vom VCO generierten Takt. Ein Regler glättet dieses Signal und steuert
damit den VCO so an, dass die VCO-Frequenz dem Referenztakt nachgeführt wird.
Werden Referenztakt und/oder VCO-Takt vor dem Vergleich geteilt, so schwingt der
VCO mit einer synchronen abgeleiteten Frequenz:
Eine Taktaufbereitung sorgt dafür, dass überall auf dem Chip EIN synchroner Takt
zu Verfügung steht, zusätzlich kann dieser mit Hilfe von Phase Locked Loop (PLL)
Regelkreisen oft noch in der Phase verändert (verschoben) werden.
Damit das Phasenrauschen möglichst gering ist, besitzen die PLLs in den FPGAs üblicherweise eine separate 2,5 V Spanungsversorgung (analog & digital).
Die Einbindung der konfigurierbaren PLL erfolgt über den MegaWizard Plug-In Manager (Altera).
Beim Design von Signalverarbeitungsalgorithmen in VHDL sollten möglichst wenige
Takte verwendet werden. Am besten nur einer, zum Beispiel 50 MHz. Geringere
Taktraten sollen über entsprechende synchrone Clock-Enable Signale generiert werden. Zum Beispiel kann für 1 MHz jeder 50-te Clock „enabled“ werden.
DSF
22
Krah WS 13/14
Embedded
2.5.5 Embedded
Memory
Memory Blocks
 4-Kbit Blocks Identical to
to Stratix® II Devices




250-MHz Performance
Fully Synchronous
True Dual-Port Mode
Simple Dual-Port Mode
Port A
DATA
ADDR
WREN
CLK
CLKENA
OUT
CLR
Port B
DATA
ADDR
WREN
CLK
CLKENA
OUT
CLR
 Flexible Capabilities






Mixed-Clock Mode
Mixed-Width Mode
Shift Register Mode
Read-Only Mode
Byte Enables
Initialization Support
Bild 2.17: Cyclone II Embedded Memory Blocks
In vielen FPGAs sind außerdem noch zusätzliche fest verdrahtete Funktionen enthalten, wie z.B. Speicher (sog. Block RAM), der sich in vielfältiger Weise konfigurieren
lässt. Rein konventionell organisierter Speicher kann hier untergebracht werden und
belegt dadurch keine LUTs bzw. Logikzellen. Der interne Speicher wird z.B. für
Softcore-Prozessoren und für den FPGA-internen Logic Analyzer SignalTap II (Altera) genutzt.
Die Memory Blocks können auch als echte dual Port Speicher genutzt werden. Zum
Beispiel kann eine VHDL Logik Werte von einem AD-Wander direkt in das Memory
schreiben, die dann asynchron (optional auch mit anderem Takt und einer anderen
Datenbusbreite) von einem Prozessor ausgelesen werden können.
Die Einbindung der konfigurierbaren Memory Blöcke erfolgt z.B. über den MegaWizard Plug-In Manager (Altera).
DSF
23
Krah WS 13/14
3 Nutzung von Evaluation Boards
So wie vor 20 Jahren der Mikrocontroller und der DSP ihre festen Plätze bei den
Elektronik-Entwicklern hatten, finden sich seit einigen Jahren in den neu entwickelten Schaltungen immer mehr FPGAs. FPGAs werden meist in einer Hochsprache zur
Hardware-Beschreibung programmiert, in der Regel in VHDL (Very High-speed integrated circuit Hardware Description Language). Die Programmierung eines FPGAs
ist so ähnlich wie die Erstellung einer Leiterplatte. Statt der Auswahl und der Verdrahtung entsprechender ICs, werden am Markt verfügbare IP-Blöcke ausgewählt
und verdrahtet. Standardbausteine – wie z.B. die TTL-Logikfamilie 74XX – werden
von fast allen Entwicklungssystemen durch eine Bibliothek unterstützt. Für den Aufbau einer Ethernet-Schnittstelle werden dann noch eine RJ45-Buchse, ein Übertrager
zur galvanischen Trennung und ein Leitungstreiber (Transceiver: Sender und Empfänger) benötigt, der sogenannte PHY, der dann mit den I/Os des FPGA verbunden
wird, Bild 3.1.
Hardware
Software
Stack
PDO
SDO
MAC
Hub / Switch
PHY
RJ45
Bild 3.1:
Eine Ethernet Anschaltung am MercuryCode, bestehend aus RJ45Stecker mit Übertrager, PHY, MAC und TCP/IP-Protokollstapel.
Der Aufbau einer Testschaltung auf einer Lochrasterplatine ist dabei allerdings kaum
noch möglich. Die meisten FPGAs haben sehr viele Anschlüsse, die oft als Ball Grid
Array (BGA) angeordnet sind und nicht ohne Hilfsmittel gelötet werden können. Zudem sind zum Betrieb statt einer einzigen 5-V-Versorgungsspannung mehrere Spannungen erforderlich. Hier setzt das FPGA Development Board "MercuryCode" von
EBV Elektronik an. Alles was benötigt wird, um ein FPGA-Design rasch aufzubauen,
ist auf der etwa 100 ∙ 100 mm² großen Leiterplatte berücksichtigt, Bild 3.2.
DSF
24
Krah WS 13/14
Bild 3.2:
Das FPGA Development Boards "MercuryCode" von EBV bietet auf einer Fläche von 100 ∙ 100 mm² alle Elemente für den Aufbau einer komplexen Elektronikschaltung mit hoher Verarbeitungsgeschwindigkeit.
3.1 Das Drei-Schichten-Modell
Das angeführte Beispiel und viele andere Anwendungen lassen sich mit einem DreiSchichten-Modell beschreiben, Bild 3.3.
 Auf der untersten Schicht sind die Schnittstellen zur "Außenwelt" definiert. Dazu
zählen Ethernet (PHY), RS-485-Transceiver oder 24-V-I/O. Hier werden die den
jeweiligen Spezifikationen entsprechenden Bauteile verwendet.
 Die mittlere Schicht setzt sich zusammen aus digitalen Spezialschaltungen, wie
einem UART (Universal Asynchronous Receiver and Transmitter) für RS 232 oder dem MAC (Media Access Controller) beim Ethernet. Diese Schicht wird bei
FPGAs in einer Hardware Description Language (z.B. VHDL) programmiert und
kann oft als IP-Core bezogen werden. Die Soft Core CPU Nios II von Altera gehört ebenfalls der mittleren Schicht an. Die im FPGA realisierte mittlere Schicht
wird auch als Konfiguration bezeichnet.
 Die oberste Schicht wird in Software realisiert, meist in C oder C++. Beim Ethernet gehört der TCP/IP-Protokollstapel dazu. Der Entwickler greift dabei über ein
Application Programmer Interface (API) auf die Ethernet-Funktionen zu.
DSF
25
Krah WS 13/14
3 Schichten Modell
Layer 3
Software
µController / “C”
Software
TCP / IP
stack
IRQ for
the UART
Init &
Config.
FPGA IO (3.3 V)
Nios II Soft Core CPU
Layer 2 (IP)
Programmable logic
FPGA / VHDL
Fast 32-Bit Avalon Bus & IP - IP cross connections
RMII
MAC
Layer 1
Special hardware,
Driver & transceiver
Bild 3.3:
PHY
UART
User
logic
PIO
FPGA IO (3.3V)
RS 485
24 V IO
Die Struktur eines FPGA Development Boards lässt sich in einem DreiSchichten-Modell abbilden. Dabei beschreibt die erste Schicht die
Schnittstellen zum Umfeld, die zweite Schicht zeigt die HardwareKonfiguration des FPGA, in der dritten Schicht wird die Software abgebildet, mit der sich der Funktionsumfang der Gesamtschaltung realisieren lässt.
40 000 Logikelemente zur freien Verfügung
Die FPGAs der Cyclone-III-Familie von Altera sind in 65-nm-Technologie realisiert
und sind in verschiedenen Größen und Gehäusevarianten erhältlich [4]. Bei dem auf
dem MercuryCode Board verwendeten Typ "3C40" stehen 39 600 Logikelemente
und 484 Anschlüsse zur Verfügung, davon maximal 331 I/Os. Damit lassen sich auch
komplexe Anwendungen realisieren. Der FPGA-Baustein enthält einen Speicher mit
1134 Kbit und 126 Hardware-Multiplizierer. Alle Cyclone FPGAs sind RAMbasierte Logikbausteine. Nach dem Anlegen der Versorgungsspannungen muss der
Baustein noch konfiguriert werden. Bei MercuryCode ist hierfür ein zusätzlicher serieller Speicherbaustein (Flash) mit einer Kapazität von 64 Mbit vorgesehen.
Alle erforderlichen Versorgungsspannungen (1,2 V, 2,5 V, 3,3 V, 5 V und 12 V)
werden auf der Leiterplatte mit entsprechenden Schaltreglern erzeugt. Versorgt wird
das MercuryCode Board mit nur einer Gleichspannung zwischen 8 und 24 V.
DSF
26
Krah WS 13/14
50 MHz Systemtakt
Ein Taktgenerator erzeugt den Systemtakt mit einer Frequenz von 50 MHz. Aus diesem Takt lassen sich im FPGA mit maximal vier Phasenregelkreisen (PLL) andere
synchrone und wahlweise auch phasenverschobene Frequenzen erzeugen. Diese werden dann über die bis zu 20 "Global Clock Networks" auf dem Chip verteilt und den
Baugruppen bereitgestellt.
Industriegerechte 24-V-I/Os
Bei vielen industriellen Anwendungen werden 24-V-Eingänge z.B. für Sensoren und
24-V-Ausgänge zur Ansteuerung von Relais benutzt. Die verwendeten Treiber sind
Bausteine, die für Anwendungen in der Automatisierungstechnik entwickelt wurden.
Die 16 I/Os liegen auf einer Phönix-Klemmenleiste auf und können als Eingang oder
als Ausgang benutzt werden. Hierfür ist jeweils ein 24-V-I/O mit zwei FPGAAnschlüssen verschaltet. Ein FPGA-Anschluss ist als Eingang konfiguriert und signalisiert über einen Spannungsteiler und eine Schmitt-Trigger-Schaltung den Pegel des
24-V-I/Os. Der zweite FPGA-Anschluss ist als Ausgang konfiguriert und ermöglicht
das Einschalten des kurzschlussfesten "High Side"-Schalters, Bild 3.4. Der Status des
24-V-I/Os wird zusätzlich mit jeweils einer roten LED hinter der zugehörigen Phönix-Klemme angezeigt. Ein Schaltplan mit den Details kann bei der Firma Devboards
im Internet abgerufen werden [5].
Bild 3.4:
DSF
Schaltung für die Anbindung der industriegerechten 24-V-Technik an die
3,3-V-I/Os eines FPGAs.
27
Krah WS 13/14
Benutzerschnittstelle
Zur Darstellung von Systemzuständen und zur Beeinflussung der Schaltung bzw.
zum Testen sind zwei Siebensegmentanzeigen, acht Leuchtdioden, vier Taster und
ein Navigation-Key (fünf mechanisch verknüpfte Taster) vorgesehen. Weil SMDLEDs verwendet werden, sind diese auch als "Debug-I/O" verwendbar, da sich an
den Kontakten der LEDs mit einem Tastkopf sehr gut messen lässt. Beispielsweise
können Systemreaktionszeiten so leicht gemessen werden. Über eine RS-232Schnittstelle können Daten auf einem Terminal ausgegeben werden. Das Systemprogramm HyperTerminal eignet sich dafür, benötigt aber bei neuen Laptops einen
USB-RS-232-Adapter, weil dort meist die RS-232-Schnittstelle eingespart wurde.
Transceiver für USB On The Go (OTG)
USB ist heutzutage die Standard-Schnittstelle zur schnellen Kommunikation mit einem PC über kurze Distanzen. Der im MercuryCode Board eingesetzte Treiberchip
ISP1504 von NXP unterstützt High-Speed (480 Mbit), Full-Speed (12 Mbit), LowSpeed (1,5 Mbit) und das "On The Go"-Supplement (OTG) aus der USB 2.0 Specification Revision 1.2. Je nach Anwendung kann der USB-Treiber-Chip entweder im
"USB Host"-Modus, etwa zum Anschließen von Memory Sticks oder im "Peripheral"-Modus zur schnellen PC Kommunikation betrieben werden. Die USBSignale werden an einem Mini-USB-Stecker bereitgestellt, eine galvanische Trennung ist nicht vorgesehen.
Vier RS-485-Transceiver
Viele Feldbusse basieren auf dem RS-485-Standard, der durch die differentielle
Übertragung eine recht störsichere Übertragung mit bis zu 16 Mbit auch über größere
Distanzen bietet. Der Abschlusswiderstand hängt vom verwendeten Kabel ab und
beträgt meist ca. 120 Ω. Mit den vier Transceivern auf dem Evaluation Board kann
z.B. eine Profibus- oder eine Interbus-S-Anschaltung (zwei Transceiver) und eine
digitale Encoder-Schnittstelle (zwei Transceiver) realisiert werden. Bei modernen
Sin-Cos-Encodern, die EnDAT 2.2 oder BiSS unterstützen, sind keine weiteren analogen Schaltungen erforderlich. Natürlich können die RS-485-Treiber auch für einfache inkrementelle Encoder genutzt werden.
Zwei CAN-Transceiver
CAN basierte Feldbusse wie CanOpen oder DeviceNet verwenden ebenfalls die RS485-Pegel. Zur Priorisierung der Nachrichten müssen diese zusätzlich in einer "Open
Collector"-Schaltung betrieben werden können. Dies bieten die beiden eingesetzten
CAN-Transceiver "SN65HVD233" von Texas Instruments. Falls das CAN-Segment
am MercuryCode Board endet, können mit Lötbrücken Abschlusswiderstände zugeschaltet werden.
DSF
28
Krah WS 13/14
Zwei Ethernet Anschaltungen
Zur Realisierung der Echtzeit-Ethernet-Feldbusse sind zwei vollständige 10/100Mbit/s-Ethernet-Anschaltungen (Vollduplex) vorgesehen. Dadurch lässt sich auch die
in der Automatisierungstechnik bevorzugte Linienstruktur realisieren. Die Übertrager
zur galvanischen Trennung sind in den RJ45-Stecker integriert. Als TransceiverBaustein (PHY) wird der DP83640 von National Semiconductor [6] verwendet, der
ein "Auto Crossover" bietet. Um FPGA-I/O-Anschlüsse zu sparen, wird der TreiberBaustein im "Reduced Media Independent Interface"-Modus (RMII) betrieben. Durch
die bereits im Treiber-Baustein implementierten IEEE-1588-Funktionen lassen sich
IP-Cores für Echtzeit-Ethernet-Feldbusse einfacher realisieren.
TFT und Touch-Screen Controller
Bei Bedarf kann an MercuryCode ein TFT-LC-Display angeschlossen werden. Die
Daten werden über ein fünfkanaliges LVDS-Interface übertragen. An der Leiterkarte
befindet sich ein 20-poliger Hirose-Stecker, der in der Regel für Steckverbindungen
genutzt wird. Die vom TFT-LC-Display benötigte Versorgungsspannung von 12 V
wird ebenfalls bereitgestellt. Für eine Auswertung der Touch-Screen-Signale wurde
der Controller TSC2200 von Texas Instruments vorgesehen.
32 bit General Purpose I/O
Oft ist noch eine zusätzliche Hardware-Erweiterung gewünscht. Hierfür sind zwei
doppelreihige Postenleisten vorgesehen. Tochterplatinen können entweder direkt aufgesteckt oder über Flachbandkabel verbunden werden. Genutzt wird der 3,3-V-"Low
Voltage"-TTL-Standard. Da die Stiftleisten direkt mit dem FPGA verbunden sind,
muss bei der Verdrahtung sorgfältig gearbeitet werden: Zu hohe Spannungen können
das FPGA zerstören.
Externer Speicher
Bei MercuryCode sind folgende FPGA-externen Speicher vorgesehen:
 512 kByte Flash-Speicher (16-bit-Interface)
 128 kByte SRAM (16-bit-Interface)
 16 Mbyte SDRAM (32-bit-Interface)
Der Flash-Speicher ist mit einem 16-bit-Datenbus versehen und wird hauptsächlich
vom Nios II als ROM genutzt. Durch die begrenzte Datenbreite wird jeder 32-bitZugriff in zwei 16-bit-Zugriffe aufgeteilt, wodurch die Systemleistung reduziert wird.
Das statische RAM benutzt den gleichen Daten- und Adressbus und bremst deshalb
den Nios II ebenfalls aus.
Das dynamische RAM nutzt einen separaten 32-bit breiten Datenbus und einen gemultiplexten Adressbus. Bei SDRAM-Zugriffen wird der Nios II zwar nicht ausgebremst, jedoch benötigt das SDRAM mehr Strom und im FPGA werden zusätzliche
Logikelemente für den erforderlichen Memory Controller benötigt. In der StandardDSF
29
Krah WS 13/14
konfiguration wird über einen Boot Loader zuerst der ROM-Code vom Flash ins
SDRAM geladen, damit immer mit schnellen 32-bit breiten Zugriffen gearbeitet werden kann.
Internet-Links:
[1] Fachhochschule Köln – www.fh-koeln.de
[2] EBV Elektronik GmbH & Co KG – www.ebv.com
[3] Avago Technologies – www.avagotech.com
[4] Altera Corporation – www.altera.com
[5] devboards GmbH – www.devboards.de
[6] National Semiconductors – www.nationalsemi.com
DSF
30
Krah WS 13/14
4 FPGA Tool Chain – Vom Algorithmus zur Netzliste
4.1 Quartus II (Altera)
Entwurfsschritte und –werkzeuge (Altera: Quartus II / Nios II IDE)
Erstellt wird die Konfiguration für ein FPGA meist entweder mittels einer HardwareBeschreibungssprache, zum Beispiel VHDL (*.vhd) oder Verilog, oder grafisch
durch einen Schaltplan (*.bdf) oder endlichen Automaten. Auch mit den grafischen
Programmiersystemen LabVIEW oder Matlab Simulink ist eine Programmierung
möglich. In den letzten Jahren gab es immer wieder Versuche, FPGAs mit der Programmiersprache C zu beschreiben (HardwareC / SystemC) oder C in VHDL umzusetzen (CtoH-Compiler). Herstellerspezifische Sprachen wie Altera-HDL oder ABEL-HDL werden ebenso genutzt wie UDL/I (Japan).
a)
Schematic Editor:
Block diagram file
b)
Schematic Editor:
Graphic design file
(state machine)
-- Quartus II VHDL Template
-- Signed Adder
lbrary ieee;
c)
Text Editor
AHDL
VHDL
Verilog
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity signed_adder is
Bild 4.1:
DSF
Design Entry
a) Block Diagram File
b) Graphic Design File
31
c) Text Editor
Krah WS 13/14
Design entry/RTL coding
Design Specification
- Behavioral or structural description of design
RTL simulation
- Functional simulation (ModelSim®, Quartus II)
- Verify logic model & data flow
(no timing delays)
LE
M512
M4K
I/O
Synthesis
- Translate design into device specific primitives
- Optimization to meet required area & performance constraints
- Quartus II, Precision Synthesis, Synplify/Synplify Pro,
Design Compiler FPGA
Place & route
- Map primitives to specific locations inside
Target technology with reference to area &
performance constraints
- Specify routing resources to be used
Bild 4.2:
Schematische Darstellung eines typischen FPGA Design-Flow bei
Quartus II (Altera)
Zur Implementierung eingebetteter Systeme in FPGAs gibt es mittlerweile Werkzeuge, die eine Konstruktion auf Funktionsblockebene anbieten, z.B. der Qsys von Altera. Funktionsblöcke wie FIFOs, Prozessoren, serielle Schnittstellen, Ethernet-MACLayer, RAM-Controller, Parallel-IO etc. werden vom Hersteller zur Verfügung gestellt. Diese Funktionseinheiten – Softcore genannt – liegen im Quellcode (ggf. auch
verschlüsselt) oder als Netzliste vor und sind in der Regel parametrisierbar (z. B.
Baudrate bei seriellen asynchronen Schnittstellen oder FIFO-Tiefe oder -Breite der
Parallelschnittstelle). Diese werden über Busse (Altera: Avalon, Network on a chip)
mit anderen Funktionseinheiten verbunden.
Nach der Beschreibung innerhalb des Entwurfsflusses folgen weitere Schritte wie die
funktionale Simulation, Synthese, die Implementierung (Place and Route) und laufzeitbasierende Simulation. Erst danach sollte die implementierte Schaltung am realen
FPGA erprobt werden.
DSF
32
Krah WS 13/14
MegaWizard Plug-in Manager

Eases implementation of megafunctions
Tools  MegaWizard Plug-In Manager
Bild 4.3:
Mit dem MegaWizard Plug-in Manger kann Altera Intellectual Property
(IP) konfiguriert und integriert werden.(Mermory, PLL, …)
Die Programmierung der Logikbausteine kann je nach FPGA unterschiedlich gelöst
werden. Man kann zwischen Methoden unterscheiden, die es ermöglichen, das FPGA
mehrmals zu programmieren und Methoden, die nur eine einmalige Programmierung
zulassen. Bei den mehrmals programmierbaren FPGAs wird die Konfiguration in
Speicherzellen (z.B. SRAM, EPROM, EEPROM, Flash) gespeichert. Bei den einmalig programmierbaren FPGAs (OTP: One Time Programmable) werden die physikalischen Eigenschaften der Verbindungswege permanent festgelegt (AntifuseTechnologie).
DSF
33
Krah WS 13/14
Design Files
Analysis &
Elaboration
Constraints &
Settings
Constraints &
Settings
Functional
Simulation
Synthesis
Functional
Netlist
Fitter
Assembler
Programming &
Configuration
files (.sof/.pof)
TimeQuest
Timing Analysis
Gate-Level
Simulation
EDA Netlist Writer
*This is the typical flow. Other module executables will be
added if additional software features are enabled.
Bild 4.4:
Post-Fit
Simulation Files
(.vho/.vo)
Signalflussplan eines vollständigen Compilation-Flow bei Quartus II
FPGAs erfordern beim Schaltungsentwurf ein synchrones Schaltungsdesign. Das bedeutet: An allen Flipflops in einer so genannten Clock-Domain liegt der gleiche Takt
und gesteuert wird die Datenübernahme in ein Flipflop nur über die zusätzlich vorhandenen Clock Enable-Eingänge (engl. gated clocks) und nicht über geteilte Taktsignale. Dies vermeidet schwer handhabbare Laufzeiteffekte. Manche FPGAs bieten
spezielle Taktumschalter an, welche das garantiert störungsfreie Umschalten
(glitchfrei) zwischen verschiedenen Taktquellen im Betrieb erlauben.
DSF
34
Krah WS 13/14
4.2 ModelSim
Zum Erstellen und Testen von prozeduralen Programmiersprachen wie z. B. „C“ sind
Debugger mit Single-Step-Funktionalität üblich. Der Programmierer kann die erstellten Programme Zeile für Zeile „durchsteppen“ und sich jederzeit den Inhalt der Variablen ansehen. Eine solche Vorgehensweise ist bei Hardware Description Languages
(HDL) wie VHDL oder Verilog nicht möglich, da vieles unabhängig voneinander
parallel ausgeführt wird. Zum Erstellen und Testen von HDL-Programmen werden
die Signalverläufe üblicherweise simuliert. Das kann auch mit der Quartus II Entwicklungsumgebung von Altera erfolgen, hat aber den Nachteil, dass die Zeit zum
Kompilieren sehr lang werden kann. Im Rahmen der kostenlosen "Altera Web Edition" gibt es mittlerweile eine ebenfalls kostenlose Version von ModelSim mit eingeschränktem Funktionsumfang.
ModelSim von Mentor Graphics ist eine mächtige Simulationsumgebung für HDLs.
Diese erlaubt die taktsynchrone oder timing-genaue Verhaltenssimulation von digitalen Logikschaltungen. Anders als reine Logiksimulatoren erlaubt ModelSim zusätzlich das Berechnen und Darstellen von „analogen“ Signalen, da Integer und Dezimaltypen intern als normale Variablen (Real) gehandhabt und dargestellt werden. Somit
lassen sich auch Algorithmen zur digitalen Signalverarbeitung simulieren, wenn man
die Datentypen Signalbus oder Integer benutzt.
Mit ModelSim kann die Funktion von VHDL-Code getestet und unabhängig von Gatterlaufzeiten simuliert werden. Hierbei können sowohl einzelne Entitys separat als
auch mehrere Entitys gemeinsam in einer Simulationsumgebung getestet werden.
Alle Portsignale und Signale innerhalb der zu testenden VHDL-Module können hierbei visuell mit einem Zeitverlauf (Waveform) dargestellt werden. Die visuelle Darstellung von Variablen ist prinzipbedingt nicht immer möglich.
Weil die Simulation wesentlich weniger Zeit in Anspruch nimmt als das Übersetzen
eines Projektes in Quartus II, kann die Entwicklungsgeschwindigkeit bei der VHDLProgrammierung durch Nutzung des ModelSim-Simulators erhöht werden. Da alle
Signale in der Waveform sichtbar sind, können Zusammenhänge innerhalb einer Entity leichter überblickt werden, was zur schnelleren Fehlersuche im VHDL-Code und
der Erstellung von sauberem Quellcode beiträgt.
Um eine oder mehrere VHDL-Entitys zu testen, wird in ModelSim zusätzlich zu der
zu testenden Entity ein Simulationsquellcode benötigt. Dieser wird auch als Testbench bezeichnet und ebenfalls unter *.vhd abgespeichert. Die Testbench enthält alle
Informationen, die zum Test der vorgegebenen Entity notwendig sind. So müssen alle
Portsignale des zu testenden VHDL-Moduls in der Testbench deklariert und vorgegeben werden. Dazu gehören zum Beispiel die Vorgabe von Taktfrequenz, ResetSignal und oder die Zustandswechsel von diversen Eingangssignalen.
Zur Simulation einer VHDL-Beschreibung wir diese in ein binäres, simulatorinternes
Format umgewandelt. Dafür wird der ModelSim integrierte VHDL-Compiler genutzt,
DSF
35
Krah WS 13/14
der gleichzeitig die Syntax des Codes überprüft und die benötigten Bibliotheken einbindet.
Nachdem festgelegt wurde, welche Signale betrachtet werden sollen, wird der Simulator gestartet. Dieser legt eine Wave-Form-Datei an, welche die Simulationsergebnisse enthält. Wird keine Datei explizit angegeben, so wird die Datei vsim.wlf im aktuellen Verzeichnis angelegt bzw. überschrieben. Diese Datei bildet die Grundlage
für eine Auswertung der Simulation. In der grafischen Oberfläche von ModelSim
wird sie nach einer Simulation automatisch gelesen. Bild 4.5 soll die grundsätzliche
Vorgehensweise verdeutlichen.
Bild 4.5:
DSF
Ablauf der Simulation in ModelSim
36
Krah WS 13/14
Bild 4.6:
Oberfläche von ModelSim
Das Simulationstool ModelSim kann jedoch nicht als Progammierersatz für die
VHDL-Programmiersoftware Quartus II dienen. Es dient ausschließlich zum besseren
Verständnis, zur Fehlersuche und zur Beschleunigung der Projektentwicklung.
Es kann jedoch keinesfalls den Test eines Projekts unter realen Bedingungen mit realen FPGAs ersetzen. Dazu ist SignalTap II geeignet.
DSF
37
Krah WS 13/14
4.3 SignalTap II
Um FPGA interne Signale anzusehen, gibt es im Wesentlichen zwei Möglichkeiten:
1. Das Signal auf einen freien (spare) I/O Pin legen.
2. Das Signal mit SignalTap II, dem FPGA internen Logic Analyzer, ansehen.
Wie bei einem Oszilloskop wird eine Trigger-Bedingung festgelegt und der
Verlauf im FPGA internen RAM gespeichert. Off-line wird der im FPGA gespeicherte Verlauf über die JTAG Schnittstelle innerhalb der Quartus II Entwicklungsumgebung dargestellt.
Bild 4.7:
SignalTap II ermöglicht die Darstellung der Zeitverläufe von FPGA internen Signalen.
Der in Quartus II integrierte SignalTap II ist ein Logic-Analyser bzw. ein Oszilloskop, welches auf einem FPGA als Logik instanziiert werden kann. Als Speicher
für die anfallenden Daten, auch Samples genannt, dient On-Chip-Memory. Die Konfiguration sowie das Auslesen der Daten erfolgt über die JTAG-Schnittstelle,
wodurch die Signalverläufe schließlich in Quartus II visualisiert werden können.
Der direkte Zugriff auf die FPGA-internen Signale bietet insbesondere dann einen
großen Vorteil, wenn externe Hardware angeschlossen ist, die nicht mit simuliert
werden kann. SignalTap II besitzt einige komplexe Funktionen, die sonst nur bei
aufwändigen externen Analysern zu finden sind, beispielsweise mehrstufig verkettete
Trigger, die erst dann die Aufzeichnung der Analysedaten starten, wenn mehrere Bedingungen auf gleichen oder unterschiedlichen Signalen zutreffen. Darüber hinaus
lassen sich mit Hilfe von State-Machines einfache Protokolle nachbilden und zur
Triggerung verwenden. Weiterhin werden auch externe Trigger unterstützt. Der
Sample-Speicher lässt sich segmentieren, so dass Daten an mehreren TriggerZeitpunkten, die weiter auseinander liegen, aufgezeichnet werden können.
Der größte Unterschied im Vergleich zu eigenständigen Logic-Analysern liegt in der
Größenbeschränkung des Sample-Speichers, durch die Verwendung von FPGA OnChip Memory.
DSF
38
Krah WS 13/14
4.4 System Console
Mit der System Console kann man über einen an den USB Blaster / JTAG Adapter
angeschlossenen Avalon Bus auf Komponenten zugreifen.
Optional können mit einem Script die Variablen über eine Dialogbox angesehen bzw.
modifiziert werden.
DSF
39
Krah WS 13/14
4.5 MATLAB Simulink
Mit den klassischen Entwurfstools, wie HDL-Compiler und Logiksimulatoren, ist es
einzelnen Entwicklern oder kleinen Teams kaum noch möglich, das wachsende Potenzial moderner FPGAs auszuschöpfen.
Um dies zu ermöglichen, werden neue Generationen von Entwurfstools entwickelt,
die einen höheren Grad der automatischen Systemsynthese und einfachere Systemsimulationen ermöglichen. Man kann diese Entwicklung mit dem Übergang von der
Assemblerprogrammierung zur Hochsprachen-Programmierung von Prozessoren
vergleichen. Die Assemblerprogrammierung ermöglicht zwar einem erfahrenen Programmierer eine gute Ausnutzung der Prozessor-Ressourcen bezüglich Codegröße
und Verarbeitungszeit. Der Aufwand für diese Optimierung steigt jedoch bei komplexen Implementierungsaufgaben enorm an. Kaum ein Programmierer übersieht die
komplexen Pipelinestrukturen mit den Auswirkungen auf die Ausführungsgeschwindigkeit moderner Prozessoren.
Die gleiche Argumentation trifft inzwischen auch auf die FPGA-Programmierung zu.
Die Implementierung mit Hardware-Beschreibungssprachen, wie VHDL und Verilog,
ist für viele Funktionen sinnvoll. Mit steigender Leistungsfähigkeit der Tools ist es
jedoch teilweise wirtschaftlicher für komplexere Systeme High-Level Tools wie z.B.
Matlab Simulink einzusetzen. Die Nutzung von High-Level Entwurfswerkzeugen für
die FPGA-Systemsynthese kann den Implementierungsaufwand drastisch reduzieren.
Grundsätzlich existieren zwei Arten des High-Level Hardware-Entwurfs:
1. Bei der ersten Art werden die Funktionsblöcke graphisch miteinander verbunden.
Diese Art der Systembeschreibung ähnelt dem Signalflussplan bzw. dem Blockschaltbild.
2. Die zweite Art basiert auf Quelltexten. Diese Art der Systembeschreibung ähnelt
dem klassischen Programmieren. Vertreter dieser Art „SystemC“ (Open Source)
und das kommerzielle Tool „Impulse C“.
MathWorks selbst bietet optional zu MATLAB Simulink auch einen VHDLGenerator an, den HDL-Coder. Mit Hilfe von Simulink werden die Funktionsblöcke
graphisch editiert und simuliert. Der Coder arbeitet zusammen mit der Fixed Point
Toolbox und dem EDA Simulator Link. Leider arbeitet dieser Compiler noch (Stand
Dez. 2010) recht ineffizient. In einem Beispielprojekt benötigte ein Resolver Digital
Converter (RDC) ca. 15 000 Logikelemente. „Von Hand“ in VHDL codiert, benötigte die gleiche Applikation nur ca. 3 000 Logikelemente.
DSF
40
Krah WS 13/14
4.6 DSP Builder Advanced Blockset
Um die Entwicklungskosten zu senken, ist es von entscheidender Bedeutung, die
Entwicklungszeit zu verkürzen und ebenso die Anzahl genutzter Ressourcen (Logik
Elemente) zu minimieren. Heute nutzen viele Entwickler eine Evaluierungsumgebung für Signalverarbeitungsalgorithmen wie Matlab/Simulink. Aber der Schritt, den
gewünschten Algorithmus für die Implementierung in einem FPGA manuell in
VHDL Code umzuwandeln, ist nicht einfach. Oft arbeitet der Simulink Coder nicht
ausreichend effizient. Hier bietet sich das Altera-Tool „DSP Builder Advanced
Blockset“ an, welches diesen Konvertierungsprozess automatisiert. Der DSP-Builder
ist ein Zusatz zu Simulink und erzeugt automatisch HDL-Code. Dieser wird jedoch
nicht Cross-kompiliert (Simulink → VHDL), sondern die in einer Library mitgelieferten DSP-Blöcke werden grafisch konfiguriert (ähnlich einer VHDL generic Anweisung) und verschaltet. Im Rahmen dieser Konfiguration können durch automatisches Pipelining und Zeitmultiplexing zusätzlich Ressourcen gespart werden, wenn
die eingestellten Parameter für fmax und Latenzzeit das erlauben. Altera gibt an, dass
die erreichbare Rechenleistung und Implementierungsgröße vergleichbar mit manuell
erstelltem HDL-Code sind.
Mit den DSP-Builder Blöcken lassen sich zusätzlich zu Signalen in Festkomma- und
Ganzzahlformat auch Floating-Point Signale verarbeiten.
Bild 4.8:
DSF
Der DSP-Builder wird in die Matlab-Simulink Oberfläche integriert.
Verschaltet werden Blöcke aus der DSP Builder Advanced Blockset
Library.
41
Krah WS 13/14
5 VHDL
Very high speed integrated circuit Hardware Description Language (VHDL) ist
eine Hardwarebeschreibungssprache, vergleichbar mit einer Programmiersprache,
mit der es einfach möglich ist, komplizierte digitale Systeme zu beschreiben.
Geschichte
VHDL wurde in den frühen 80er Jahren entwickelt und ist das Produkt von Normierungsbestrebungen eines Komitees, in dem die meisten größeren CAD-Anbieter und
CAD-Nutzer, aber auch Vereinigungen wie die IEEE, vertreten waren. Der größte
nordamerikanische Anwender, das US-Verteidigungsministerium, hat VHDL zum
Durchbruch verholfen, indem es die Einhaltung der Syntax von VHDL als notwendige Voraussetzung für die Erteilung von Aufträgen gemacht hat. Es war das Ziel, Dokumentation zu vereinheitlichen und den Datenaustausch von komplexen digitalen
Systemen zu ermöglichen. Die erste kommerzielle Version wurde 1985 veröffentlicht, sie entstand aus einer Zusammenarbeit von IBM, Texas Instruments und Intermetrics.
VHDL ist durch den IEEE 1076 Standard von 1993 genormt. Gegenüber dem ersten
Standard von 1987 (IEEE 1076-1987) wurde die Syntax vereinheitlicht und ergänzt,
aber auch einige Konstrukte der alten Syntax entfernt sowie sogar die Semantik einzelner Konstrukte verändert. Aktuelle Tools unterstützen derzeit die Version VHDL2002 und VHDL-2008.
Funktionsweise
Bei VHDL arbeitet man nicht mit einzelnen elektronischen Bauteilen, sondern beschreibt das gewünschte Verhalten einer Schaltung auf einer höheren Abstraktionsebene. VHDL ermöglicht das schnelle Entwickeln großer und komplexer Schaltungen
(z.B. eines Mikroprozessors mit über 20 Mio. Transistoren), die hohe Effizienz erfordern (zeitlich wie ökonomisch) und unterstützt den Ingenieur bei allen Arbeiten.
So kann ein System simuliert, verifiziert und schließlich eine Konfiguration erstellt
werden. Über die Netzliste können durch eine Konvertierung in einen geeigneten BitStream FPGAs oder CPLDs geladen werden.
Neben VHDL existieren Verilog und das seltener genutzt ABEL. VHDL hat sich zum
"Quasi-Standard" in Europa entwickelt, Verilog ist dagegen die meist verwendete
Hardwarebeschreibungssprache in den USA.
DSF
42
Krah WS 13/14
Synthesefähiger und funktionaler VHDL-Code
Es ist notwendig, zwischen synthesefähigem und funktionalem Code zu unterscheiden, weil es Konstrukte gibt, die sich zwar simulieren lassen, aber nicht für eine reale
Hardware übersetzten lassen. Was aus dem breiten Spektrum an funktionalem
VHDL-Code tatsächlich synthesefähiger VHDL-Code ist, bestimmt primär das zur
VHDL-Synthese gewählte Übersetzungsprogramm (Compiler / Synthesetool), z.B.
Quartus II. Funktionaler, nicht synthesefähiger Code wird vor allem im Bereich der
Simulation zur Erstellung sogenannter Test-Benches eingesetzt, teilweise auch um
neue Verfahren wie beispielsweise das Verhalten von Schnittstellenprotokollen vorab
zu prüfen.
Synthesefähigen VHDL-Code herzustellen ist im Regelfall aufwändiger und der
Entwickler muss dabei auf große Teile der Sprachmöglichkeiten von VHDL bewusst
verzichten und die Zielhardware und deren genauen Eigenschaften näher kennen. So
ist beispielsweise VHDL-Code zur Ausgabe von Texten auf den Bildschirm nicht
synthesefähig. Ebenso sind Floating Point Signale (real) nicht synthesefähig.
Beispiel: D-Flipflop (behavioural) nicht synthetisierbar (Testsignale - ModelSim)
ENTITY DFlipflop IS
PORT(D,Clk : IN Bit ;
Q
: OUT Bit
);
END DFlipflop;
ARCHITECTURE Behav OF DFlipflop IS
CONSTANT T_Clk_Q: time := 4.23 ns;
BEGIN
PROCESS
BEGIN
WAIT UNTIL Clk'EVENT AND Clk'Last_Value='0' AND Clk='1';
Q<=D AFTER T_Clk_Q;
END PROCESS;
END Behav;
DSF
43
Krah WS 13/14
Beispiel: D-Flipflop (behavioural) synthetisierbar (Schaltung / FPGA)
ENTITY DFlipflop IS
PORT( D,Clk, nResetAsync
Q
: IN Bit;
: OUT Bit);
END DFlipflop;
ARCHITECTURE Behav OF DFlipflop IS
BEGIN
PROCESS(Clk,nResetAsync)
BEGIN
IF nResetAsync = '0' then
Q <= '0';
ELSIF Clk'EVENT and Clk = '1' then
Q <= D;
END IF;
END PROCESS;
END Behav;
Simulation und Verifikation von VHDL-Code
Mittlerweile hat sich VHDL als Standard für die Simulationsmodelle von IP (Intellectual Property) durchgesetzt. In einem Simulationsmodell wird der eigentlich zu testende und synthesefähige VHDL-Code bzw. VHDL-Modul eingebettet und die
Hardware darum in einem sogenannten „Test-Bench“ möglichst getreu nachgebildet.
Das Simulationsmodell wird dabei meistens in nicht synthetisierbarem VHDL verfasst, was das Modellieren des Zeitverhaltens oder bestimmter physikalischer Parameter der externen Schaltungsteile erlaubt.
Ein Beispiel soll diesen Vorgang erläutern:
Bei der Erstellung eines SDRAM-Controllers, einer Schaltung zum Ansteuern von
SDRAM-Speichermodulen, wird das SDRAM mit seinem Speicher und sein zeitliches Verhalten im Simulationsmodell möglichst genau wie die reale SDRAMHardware nachgebildet. Damit kann der Controller in seiner logischen Funktion simuliert und auch das Verhalten in den zeitlichen Extrembedingungen verifiziert werden, ohne dass dafür reale Hardware notwendig wäre. Bei Bedarf wird der SDRAMController funktionell entsprechend nachgebessert, um die Simulationsrandbedingungen zu erfüllen. Erst wenn diese Simulation erfolgreich war, wird der so erstellte
SDRAM-Controller auf Hardware, beispielsweise in einem FPGA, in Kombination
mit „realem“ SDRAM-Bausteinen in Betrieb genommen. Damit ist der Entwicklungsprozess von IP-Cores weitgehend unabhängig von konkreter Hardware.
Die Erstellung von guten Test-Benches, die entsprechende Aussagen zulassen, ist dabei eine meist unterschätzte Aufgabenstellung, welche ca. 50% der gesamten Entwicklungszeit für IP-Cores ausmacht. Sie ist aber, neben systematischem Vorgehen
DSF
44
Krah WS 13/14
in der Entwicklung, wesentlich effizienter als frühzeitig mit meist nicht auf Anhieb
funktionierenden Schaltungsteilen auf reale Hardware zu gehen – die dann nur
schwer und umständlich in allen ihren Parametern verifiziert werden können.
Weiter unterscheidet man bei der Simulation unterschiedliche Simulationsarten:
1. Eine reine Verhaltenssimulation (engl. behavioral simulation), zum Beispiel mit
Modelsim (Kapitel 4.2), des zu implementierenden IP-Core. Dabei werden die
funktionellen Zusammenhänge in der Schaltung grundsätzlich geprüft. Beispielsweise ob logische Verknüpfungen einzelner Signale passen. Der Vorteil besteht
im geringen Rechenaufwand, womit zeitlich längere Abschnitte simuliert werden
können.
2. Eine Simulation des fertig platzierten IP-Core (engl. post-fit simulation). Dabei
wird der IP-Core zunächst synthetisiert, geroutet und platziert, dann werden aus
der fertigen Schaltungsanordnung z.B. mit Quartus II die Netzliste und die zugehörigen Laufzeitinformationen (timing) der Zielhardware ermittelt. Die Anwendung der Laufzeitparameter auf den VHDL-Code (engl. back annotation) wird
entweder von entsprechenden Werkzeugen übernommen, die daraus nicht synthetisierbaren VHDL-Code erzeugen, oder sie geschieht unmittelbar im Simulationsprogramm. Der Vorteil besteht in dem genaueren Modell, um beispielsweise Zeitablaufprobleme in der Zielhardware bereits in der Simulation erkennen zu können.
Nachteilig ist der damit verbundene hohe Rechenaufwand und die auch auf
schnellen Rechnern sehr langen Simulationszeiten, die sich je nach Komplexität
der Schaltung im Bereich von einigen Tagen bewegen können.
Weiter kann zwischen Test-Benches mit eigener Fehlererkennung und Test-Benches,
welche nur den reinen Zeitverlauf darstellen, unterschieden werden. Im ersten Fall
werden im Test-Bench die zu bestehenden Prüfungen aufgrund von fixen Entscheidungen („Prüfvektoren“) festgelegt und automatisch durch entsprechende Textausgaben festgestellt. Die Erstellung solcher Testbenches ist aufwändiger, aber bietet den
Vorteil, bei späteren Änderungen leichter die Veränderungen der Implementierung
vollständig und sicher prüfen zu können (engl. regression test). Im zweiten Fall wird
die zu simulierende Schaltung in ihrem Zeitverhalten (engl. wave diagram) nur dargestellt, ohne dass eine automatische Bewertung der Ausgabe durchgeführt wird. Die
Entscheidung, ob das Verhalten der Schaltung passt oder nicht, obliegt jener Person
welche dieses Zeitverhalten manuell überprüfen muss. Der Vorteil dieser Methode ist
die Einfachheit bei der Erstellung der Test-Benches, weshalb sie vor allem bei einfachen Schaltungen angewendet wird. Der Nachteil ist, dass dabei Fehler in der Implementierung durch die manuelle Prüfung leicht übersehen werden können, vor allem
bei komplexen Schaltungen.
DSF
45
Krah WS 13/14
5.1 VHDL Entity
Die Entity (Funktionseinheit, Instanz) beschreibt die Schnittstelle eines VHDLFunktionsblockes nach außen ähnlich der PIN-Belegung einer Integrierten Schaltung
(IC). Deklariert werden die Bezeichnung (ASCII) und Typ der „Anschlüsse“ (IN,
OUT, INOUT, BUFFER).
Mit einer GENERIC Deklaration können ähnlich der „C“ #define Anweisung Konstanten definiert werden. Dadurch kann beispielsweise die Datenbusbreite eines Bausteins parametriert werden. Signale werden in der port-Anweisung deklariert. Entspricht dem IC-Gehäuse.
Bild 5.1:
Die Entity beschreibt die Signale nach außen „IC PINs“
5.2 VHDL Architecture
Die Architecture (Bauweise, Struktur) beschreibt die Funktionalität bzw. das „Innenleben“ eines VHDL-Funktionsblockes. Es existiert mindestens eine Architecture pro
Entity. Lokal definierte Signal-, Konstanten- und Typdeklarationen sind nur in dem
vorliegenden Architekturrumpf gültig. Anweisungen innerhalb einer Architecture
sind nebenläufig (werden parallel ausgeführt). Einzelne Architectures einer Entity
sind ebenfalls nebenläufig. Entspricht dem Chip im Gehäuse eines ICs.
Bild 5.2:
Die Architecture beschreibt die Funktionalität
5.3 VHDL Process
Eine Architecture kann einen oder mehrere Process beinhalten. Alle Prozesse einer
Architecture werden nebenläufig abgearbeitet. Zusätzlich kann kombinatorische bzw.
sequentielle (taktgesteuerte) Logik verwendet werden.
Die Abarbeitung innerhalb eines Prozesses erfolgt sequentiell:
 Variablen können für Zwischenrechnungen genutzt werden.
 Bei flankengetriggerten Signalen ist die letzte Zuweisung maßgebend.
DSF
46
Krah WS 13/14
Signale der Sensitivity-List zeigen an, auf welche Ereignisse die Bearbeitung des
Prozesses reagiert.
Innerhalb eines Prozesses verwendete Verzweigungen und Schleifen (z.B: if, case,
for, while) werden vom VHDL Compiler in parallel ausgeführte Logik umgesetzt.
Bild 5.3:
Der Process beschreibt Teile der Funktionalität
Architekturrumpf:
ARCHITECTURE Rumpfname OF Bausteinname IS
- An dieser Stelle können optional diverse Deklarationen für
Typen, Konstanten und Signale vorgenommen werden.
Im Gegensatz zu den Bausteindeklarationen sind diese hier
nur für den vorliegenden Architekturrumpf gültig.
BEGIN
- Anweisungen, die das Verhalten oder die Struktur des
Bausteins beschreiben.
END Rumpfname;
DSF
47
Krah WS 13/14
Bild 5.4:
DSF
Casting und Conversion mit der Library ieee.numeric_std.all
48
Krah WS 13/14
-- Quartus II VHDL Template
-- Binary Counter
Insert Template …
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
Library
entity binary_counter is
generic (
MIN_COUNT : natural := 0;
MAX_COUNT : natural := 255
) ;
Port (
clk
reset
enable
q
) ;
end entity;
:
:
:
:
in std_logic ;
in std_logic := '1' ;
in std_logic := '1' ;
out integer range MIN_COUNT to MAX_COUNT
Filename.vhd
architecture rtl of binary_counter is
begin
process (clk)
variable cnt
: integer range MIN_COUNT to MAX_COUNT ;
begin
if (rising_edge(clk)) then
if reset = '1' then -- Reset the counter to 0
cnt := 0 ;
elsif enable = '1' then
-- Increment the counter if counting is enabled
cnt := cnt + 1 ;
end if;
end if;
-- Output the current count
q <= cnt ;
end process ;
end rtl;
DSF
49
Krah WS 13/14
Unterschiede und Gemeinsamkeiten zu klassischen Programmiersprachen
In einer Hardwarebeschreibungsprache wird der Aufbau einer physikalischen Schaltung modellhaft beschrieben. Entgegen der meisten bekannten Programmiersprachen,
welche einen sequentiellen Ablauf einzelner Anweisungen festlegen, die von einem
Prozess (meist ein einziger Prozessor) abgearbeitet wird, gleicht VHDL mehr den
objektorientierten Sprachen, mit denen Module beschrieben werden, die quasi gleichzeitig existent sind und vollständig simultan arbeiten.
Es gibt verschiedene Arten von Modulen: Komponenten (engl. 'Component') welche
einzelne Schaltungsblöcke mit ihren Ein- und Ausgängen beschreiben, Prozeduren
(engl. 'procedure') welche funktionelle Abschnitte als Anweisungsfolge festlegen und
Funktionen welche Anweisungsfolgen zusammenfassen.
Es gibt mehrere Arten der Datenübertragung und Speicherung. Unter anderem die bei
VHDL wesentlich voneinander zu unterscheidenden sogenannten Signale, welche der
Verknüpfung einzelner, paralleler Module dienen, und die sogenannten Variablen
welche innerhalb von sequentiellen Anweisungsfolgen wie Prozessen und Prozeduren
verwendet werden können. Die Typisierung ist davon unabhängig: So kann sowohl
eine Variable vom Typ integer sein, als auch ein Signal vom Typ integer.
Diese Erweiterung ist deswegen notwendig, weil in Hardwarebeschreibungssprachen
wie VHDL nicht nur sequentielle Abläufe wie in einer Software-Programmiersprache
beschrieben werden. Variablen können daher in VHDL nur in sequentiellen Abschnitten wie einem Prozess verwendet werden, während Signale der Informationsübermittlung zwischen einzelnen nebenläufigen (=parallel ablaufenden) Funktionsblöcken dienen.
Der funktionale Unterschied zwischen Signalen und Variablen besteht des Weiteren
darin, dass Signale ihren neuen Zustand erst am Ende eines sequentiellen Prozesses
annehmen, während Variablen ein Verhalten ähnlich wie bei Programmiersprachen
zeigen und Zuweisungen unmittelbar wirken. Dieser Umstand ist vor allem für Anfänger meist verwirrend.
Das Hinzufügen weiterer Komponenten in VHDL führt primär zu erhöhtem Platzbedarf (mehr Logikelemente) und beeinträchtigt die zeitliche Abarbeitung bereits
existenter Module praktisch nicht. Die zusätzlich generierte Hardware arbeitet voll
parallel, während Module in C-Programmen für Prozessoren immer zusätzliche
Rechenzeit beanspruchen.
DSF
50
Krah WS 13/14
Literatur
Jürgen Reichardt: VHDL-Synthese, Entwurf digitaler Schaltungen und Systeme,
München: Oldenbourg 2003. ISBN 3-486-27384-1
Peter J. Ashenden: The Designer's Guide to VHDL, San Francisco: Morgan Kaufmann Publishers 2002. ISBN 1-55860-674-2
Yannick Herve: VHDL-AMS, München: Oldenbourg 2006. ISBN 3-486-57787-5
Wikipedia
5.4 Basis Blöcke in VHDL
5.4.1 P-Element
Bild 5.5:
VHDL P-Element (Festkomma Mathematik)
Die FPGA internen DSP Blöcke sind optimiert zur Verarbeitung von Integer-Zahlen.
Ohne viel zusätzlichen Aufwand kann damit auch eine Festkommaverarbeitung erfolgen. Im folgenden Beispiel soll die Eingangsfolge yk mit KP = 0,7 multipliziert
werden. Statt mit der Fließkommazahl 0,7 wird die Eingangsfolge mit einer Potenz
von 2 · KP multipliziert:
(5-1)
Wird Q = 14 gewählt (214 = 16384), so ergibt sich:
Wird jetzt das Produkt durch 2Q geteilt, so erhält man das gewünschte Ergebnis. Im
FPGA kann diese Division durch 2Q besonders leicht durch das arithmetische Schieben um Q-Bit nach rechts erfolgen. Aufgrund der Rundung des Koeffizienten auf eine ganze Zahl ist der real wirksame Faktor KP jedoch nicht mehr exakt 0,7:
DSF
51
Krah WS 13/14
̃
Das arithmetische Schieben nach rechts bewirkt eine Rundung und erzeugt dadurch
ein zusätzliches Quantisierungsrauschen des Ausgangssignals.
5.4.2 I-Element
Bild 5.6:
(
VHDL I-Element
)
∑
(
)
For an input signal step from zero to y0 follows:
For the calculation of the integral action time follows:
In a VHDL coded integral element n is equal to the shift factor 2shI which divides the
integral sum.
To get various integrator times TI, input signal y(t) has to be multiplied with the integral action gain KI2 (integral action gain). An increase of KI2 will result in a decrease
of TI. So in the formula KI2 has to be set in the denominator.
(5-2)
DSF
52
Krah WS 13/14
Example:
fa = 50 MHz => Ta = 20 ns
ms:
DSF
;
shI = 20 => n = 220 integral action time of TI = 1
53
Krah WS 13/14
5.4.3 PI-Element
Bild 5.7:
VHDL PI-Element
Analog to a single P-element KP is determined by KP2.
(5-3)
The integral action gain KI of the PI-element is given by
=>
. So equa-
tion (5-2) has to be multiplied with KP, to get the equation for the PI-element TI.
(
)
(5-4)
(
DSF
54
)
Krah WS 13/14
5.4.4 Tiefpass erster Ordnung
Bild 5.8:
VHDL PT1-Element
First order lag elements are normally implemented with fixed time constants T1, so
the first order lag is described with no scaling factor for the configuration of T1.
The first order lag can be implemented in VHDL as feedback loop with a simple integrator shown in the figure above. So the time constant T1 is calculated analog to an
integrator time constant.
(5-5)
To reach high time constants > 100 ms it is Ta can be calculated to
Tclk as FPGA system clock.
with
5.4.5 Beobachter zweiter Ordnung
Bild 5.9:
Beobachter 2-ter Ordnung
The second order transfer function of the observer is given over equation and can be
equalized with an oscillating second order lag with a resonance frequency 𝜔0 and a
damping 𝛿. The feed forward gain KV has no influence to the system parameters and
is not considered in the transfer function!
DSF
55
Krah WS 13/14
(5-6)
( )
𝜔
𝛿
𝜔
This leads to the following dependencies for 𝜔0 and 𝛿:
𝜔
√
(5-7)
𝛿
,
For fixed time constants TOV1 and TOV2, KI is proportional to 𝜔02 and OVC is proportional to 2𝛿𝜔0.
The next figure shows the observer implementation in VHDL.
Bild 5.10: In VHDL kodierbarer Beobachter 2ter Ordnung
The Observer parameter parameters KP and KI determine the VHDL parameter KP1
and KI1.
;
Owing equation (5-7) the observer parameters KP1 and KI1 are calculated.
𝛿𝜔
𝛿
(
𝜔
DSF
56
(5-8)
)
(5-9)
Krah WS 13/14
6 System on programmable Chip
Unter System on programmable Chip (SoPC) versteht man die Integration aller oder
eines großen Teils der Systemfunktionen auf einem Stück Silizium, auch monolithische Integration genannt. Eingesetzt werden SoPCs üblicherweise in eingebetteten
Systemen.
Während Systeme ursprünglich aus einem Mikroprozessor- oder Mikrocontroller-IC
und vielen anderen ICs bestanden, die auf einer Platine aufgelötet waren, geht heute
der Trend dazu, alle Funktionen auf einem Chip zu realisieren. Dabei werden digitale,
analoge und mixed-signal Funktionseinheiten integriert. Vorteile sind vor allem Kosteneinsparung und Miniaturisierung. So ist heute beispielsweise bei Mobiltelefonen
die digitale Funktion mit Ausnahme des Speichers auf einem IC realisiert. Die
Schnittstelle beispielsweise zur Tastatur, zur SIM-Karte oder zum Display sind bereits auf diesem IC enthalten.
Komponenten
Die üblichen Komponenten eines SoPCs sind:
 Prozessor (Nios II, ARM Cortex A9, …)
Register
ALU (Arithmetik Logic Unit)
 Speicher
RAM (Random Access Memory) Schreib- und Lesespeicher
ROM (Read Only Memory) , z. B. als Flash oder OTP (One Time Programmable)
 Interne Einheiten
Zeitgeber (Timer / Interrupt), Zähler
Interruptcontroller
Watchdog (kann einen Reset auslösen)
Debug-Schnittstellen, z.B. JTAG
Spezielle Recheneinheiten, wie z. B. in DSP-SoPCs
Kryptographie
 Analog-Digital- und Digital-Analog-Wandler
 Peripherie-Einheiten
Tastaturcontroller, z. B. für Tastaturen oder Touchpads
 Grafikschnittstellen, z. B. für LVDS, LCD, VGA, DVI, MPEG, HD/SDMI
 Serielle Schnittstellen, z. B. USB, RS232, CAN-Bus
 Parallele Schnittstellen, z. B. nach Centronics, Port-IO
 Pulsweitenmodulator (PWM), z. B. für DC-DC-Wandler oder Motorsteuerung
 Weitere Schnittstellen, z.B. Ethernet MAC oder USB Cores
DSF
57
Krah WS 13/14
Entwurfsvorgang
In der Regel basieren Entwürfe für SoPCs auf bereits vorhandener Intellectual Property, z.B. Makrozellen für den CPU-Kern oder einen Ethernet-Controller. Je nach
geplantem Einsatzgebiet fügt man eigene Komponenten hinzu und entscheidet sich
für die vorteilhafteste On-Chip Busstruktur.
Einsatzgebiet
Eingesetzt werden SoPCs vor allem im Mobilfunk, für PDAs, für MP3-Player, CDund DVD-Geräte, für eingebettete Anwendungen und überall dort wo es auf kleine
Abmessungen bei hoher Leistung und vielfältigen Aufgaben ankommt. Es ist normal,
dass solche Geräte auch abgesetzte Einheiten haben können, wie etwa eine Tastatur
oder einen Bildschirm. Das wesentliche Merkmal ist jedoch der minimale innere Zusatzaufwand für Bauteile auf der oder den Leiterplatten, welche den Kern des Geräts
ausmachen. SoPCs sind vor allem aus Kostengründen, d.h. zur weiteren Kostensenkung bei Gerätepreisen oder überhaupt zur marktfähigen Realisierung von Geräten
ein entscheidender Trend im beginnenden 21. Jahrhundert.
DSF
58
Krah WS 13/14
6.1 Geistiges Eigentum (IP)
Jede digitale Schaltung lässt sich mit elementaren Basisblöcken realisieren und auch
entsprechend programmieren. Genau wie bei der Software-Entwicklung wird aus
wirtschaftlichen Gründen wiederverwendbarer Code gewünscht, der meist von externen Lieferanten als IP (Intellectual Property) bezogen wird. Statt eines ICs mit einer
bestimmten Funktion kann daher auch ein entsprechender IP-Core erworben werden.
Ein Beispiel ist der Ethernet Media Access Controller (MAC), der in Form eines ICs
oder auch als VHDL-IP erhältlich ist. Natürlich lässt sich ein MAC auch selbst in
VHDL codieren, das aber ist nicht wirtschaftlich.
Geistiges Eigentum (engl. intellectual property, auch intellektuelles Eigentum) ist ein
im Naturrecht wurzelnder Begriff, der Rechte an immateriellen Gütern beschreibt.
Immaterialgüter sind z. B. Ideen, Erfindungen, Konzepte, geistige Werke, Informationen. Diese Güter sind jedoch nicht generell rechtlich geschützt, sondern nur wenn
die Rechtsordnung einer Person entsprechende Rechte zuweist, z. B. durch Patent-,
Gebrauchsmuster-, Geschmacksmuster- oder Urheberrechte. Inhaber eines solchen
Rechts ist z. B. der Anmelder eines Patents oder der Schöpfer eines urheberrechtlichen Werks.
Die Theorie vom geistigen Eigentum entstand größtenteils erst in der Neuzeit, vor
allem ab dem 18. Jahrhundert und dort im Zusammenhang mit dem Nachdruck von
Büchern. Die Bezeichnung Immaterialgüterrecht entstand dagegen erst gegen Ende
des 19. Jahrhunderts. Diese Rechte und ihre abgeleiteten Rechtsderivate sind i. d. R.
durch internationale Abkommen geschützt und werden lizenziert, manchmal auch auf
andere Weise übertragen, was den Vorgängen Veräußerung, Vermietung entspricht.
Meistens unterliegen diese Rechte Einschränkungen durch Rechte der Allgemeinheit,
wie etwa das Zitierrecht für urheberrechtlich geschützte Werke, das Recht, Forschung
ohne patentrechtliche Einschränkungen betreiben zu dürfen, das Recht von Künstlern
auf Parodien oder das Grundrecht der Informationsfreiheit.
 (V)HDL-IP Block statt Baustein
DSF
59
Krah WS 13/14
6.2 OpenCore Plus
Altera und ausgewählte Partner bieten IP-Blöcke als sogenannte Megafunctions an.
Diese Blöcke können – vor dem Kompilieren – so konfiguriert werden, dass Sie nur
über die gewünschte Funktionalität verfügen, um Ressourcen (Logikblöcke) zu sparen (Stichwort: VHDL generic). Im Gegensatz dazu liegt bei einem Mikrocontroller
oft ein Großteil der Peripherie brach und der genutzte Teil wird erst zur Laufzeit per
Software ausgewählt und konfiguriert.
OpenCore Plus IP kann als Testversion kostenlos aus dem Internet abgerufen werden.
Die Funktionalität kann zunächst mit einem Simulator erprobt werden. Dabei ist zu
beachten, dass meistens interne Signale nicht sichtbar sind – ähnlich wie bei einem
konventionellen IC. Für einen Test innerhalb der Schaltung kann der Nutzer zwischen zwei Optionen wählen:
 Ausführung für eine limitierte Zeit (time limited)
 Ausführung nur solange das FPGA über JTAG (USB-Blaster) mit dem PC
(Quartus Programmer) verbunden ist
Bild 6.1:
DSF
Das Blockschaltbild zeigt schematisch die Nutzung von OpenCore plus
IP
60
Krah WS 13/14
6.3 Megacore IP Library
Komplexe IP-Blöcke wie z.B. Signalverarbeitungskomponenten, die in der FPGAKonfiguration integriert werden können, gehören zu den Altera Megacores. Man benötigt teilweise spezielle Lizenzen, um die Megacores verwenden zu können. Megacores können nicht innerhalb des DSP-Builders (Simulink Editor) genutzt werden.
Durch Doppelklick auf das Blocksymbol öffnet sich ein kleines Fenster, von dem aus
man sich die Dokumentation ansehen kann bzw. über die Dialoge den Block konfigurieren kann.
Bild 6.2:
DSF
Der Altera FIR Compiler II zeigt bei der Konfiguration der Koeffizienten
eines FIR Filters sofort den Frequenzgang an.
61
Krah WS 13/14
6.4 Soft Core CPU Nios II
Manche Entwicklungsaufgaben lassen sich mit nur wenigen VHDL Zeilen effizient
lösen. Eine Prozessor-Konfiguration erfordert hier unter Umständen deutlich mehr
Aufwand. Bei anderen Problemstellungen ist es umgekehrt. Immer mehr FPGA Hersteller bieten deshalb zusätzlich zur Logik eine Soft Core CPU (Schicht 2). Bei den
Altera-FPGAs ist diese Soft Core CPU zusätzlich skalierbar. Der Entwickler kann bei
jedem Design entscheiden, ob er nur wenige Logikelemente für eine langsamere CPU
einsetzten möchte, oder ob es sinnvoll ist, einen schnelleren Prozessor zu konfigurieren, der entsprechend mehr Logikelemente benötigt. Bei besonders zeitintensiven Algorithmen kann der Befehlssatz des Nios II auch durch sogenannte "Custom InstrucNios
II Block
tions"
erweitert
werden. Diagram
Nios II Processor Core
reset
JTAG interface
to Software
Debugger
HardwareAssisted
Debug Module
Trace port
Program
Controller
&
Address
Generation
Exception
Controller
Interrupt
Controller
irq[31..0]
Custom
I/O Signals
Bild 6.3:
Custom
Instruction
Logic
Instruction
Cache
General
Purpose
Registers
r0 to r31
Trace
Memory
HW
Breakpoints
High Speed
Connection
to Trace Pod
Instruction and
Data Trace
clock
Control
Registers
ctl0 to ctl4
Tightly
Coupled
I-Memory
Tightly
Coupled
D-Memory
Data
Cache
Arithmetic
Logic Unit
= Optional
= Configurable
= Fixed
= Debug Options
Instruction
Master
Port
Data
Master
Port
Das Blockschaltbild des Nios II zeigt, dass im Systementwurf die Integration der Elemente für das Debugging eine besondere Rolle spielt. (Quelle: Altera) (mit Custom Instruction)
Bei einfachen Anwendungen ohne Cache-Speicher für Daten und Befehle reichen die
FPGA-internen Memory-Blöcke als Arbeitsspeicher (bis ca. 128 kByte) aus. Ein Teil
des internen Speichers kann aus dem Konfigurationsbaustein initialisiert werden und
damit als ROM (Read Only Memory) verwendet werden. Wenn der FPGA-interne
Speicher nicht ausreicht oder beispielsweise für den Cache benutzt wird, ist zusätzlicher externer Speicher (RAM / ROM) erforderlich.
DSF
62
Krah WS 13/14
On-Chip
ROM
On-Chip
RAM
Avalon Switch Fabric
Nios II
CPU
Debug
Cache
Konfigurationen mit zwei Nios-II-Prozessoren sind ebenfalls möglich. Die Kombination eines Prozessors und eines FPGAs ist eine Lösung, die wesentlich flexibler und
skalierbarer ist als die traditionellen CPUs plus ASIC. Die flexible Systemarchitektur
erlaubt es den Entwicklern, eine optimale Hardware/Software-Aufteilung zu wählen,
um die beste Ausgewogenheit zwischen Leistungsfähigkeit, Kosten und Verlustleistung zu erzielen. Die Flexibilität der FPGA-Hardware erlaubt es den Entwicklern,
sich von den Einschränkungen eines festgelegten Funktionsumfangs zu lösen und das
Risiko der Veraltung von Komponenten zu vermeiden.
UART
GPIO
Timer
SPI
SDRAM
Controller
FPGA
Bild 6.4:
DSF
Die Soft-Core-CPU Nios II ermöglicht es, ein vollständiges System
(SoPC) in ein FPGA zu integrieren (mit wenig RAM und Flash-Speicher).
63
Krah WS 13/14
Nios II /f
Nios II /s
Nios II /e
Fast
Standard
Economy
1,1
0.5
0.15
Pipeline
6 Stage
5 Stage
None
H/W Multiplier & Barrel Shifter
1 Cycle
3 Cycle
Emulated in Software
Branch Prediction
Dynamic
Static
None
Instruction Cache
Configurable
Configurable
None
Data Cache
Configurable
None
None
1400 - 1800
1200 – 1400
600 – 700
Code is Binary Compatible
MIPS / MHz
Logic Usage (Logic Elements)
Custom Instructions (FPGA)
Bild 6.5:
Up to 256
Die Soft-Core-CPU Nios II steht in drei Versionen zur Verfügung. Je
mehr Logikelemente man „investiert“ umso „schneller“ verarbeitet die
CPU die Instruktionen.
Altera unterstützt effizientes Hardware/Software-Co-Design, indem verschiedene
Konfigurationen von Nios II angeboten werden, welche sich in der Hardwarearchitektur unterscheiden, jedoch softwarekompatibel sind. Dies ermöglicht zum Beispiel zwischen einem schnelleren oder einem kompakteren Design zu wählen. Weiter
besteht die Möglichkeit, den Prozessor mit weiteren Modulen, wie zum Beispiel einer
Floating Point Unit (FPU) zu konfigurieren, um die Leistungsfähigkeit für eine bestimmte Aufgabenstellung zu optimieren.
Zusammen mit anderen, anwendungsspezifischen Schaltungsteilen wie RAM oder
IO-Interfaces, die ebenfalls in den Baustein einprogrammiert werden, agiert dieser
Prozessor dann einerseits als spezifische Hardware, kann aber anderseits wie ein
normaler Prozessor mit Software (z.B. in C oder C++) geladen und betrieben werden.
So können vorhandene ursprünglich rein prozessorbasierte Systeme erweitert und
existierende Software kann eingebunden werden.
DSF
64
Krah WS 13/14
SOPC Builder GUI
Processor Library
Configure Processor
Custom Instructions
Peripheral Library
Select & Configure
Peripherals, IP
IP Modules
Software Development
Hardware Development
Nios II IDE
Connect Blocks

HDL Source Files

Testbench
Synthesis &
Fitter

User Design

Other IP Blocks
Quartus II
Bild 6.6:
System.h
Generate
Hardware
Configuration
File
Executable
Code
Verification
& Debug
JTAG,
Serial, or
Ethernet
On-Chip
Debug
Altera
PLD
Software Trace
Hard Breakpoints
SignalTap® II

C Header files

Custom Library

Peripheral Drivers
Compiler,
Linker, Debugger

User Code

Libraries

RTOS
GNU Tools
Ein Nios II System wird in drei Arbeitsschritten entwickelt: (Versuch 3)
1. Erstellen eines µC Systems mit dem Qsys (grafisch)
Output:
- encrypted (V)HDL Files (für Quartus)
- C-Header Files (system.h für die NiosII EDS)
2. Quartus II:
Kompilation aller VHDL-Quellen zu einer FPGA
Konfiguration
3. Nios II EDS: Kompilation aller C-Quellen zu einem ausführbaren
Programm
Das Nios II-System wird über den SoPC-Builder (System-on-a-Programmable-Chip)
zusammengestellt. Ein SoPC-Projekt besteht aus einzelnen Logikblöcken die Senken
oder Quellen für Daten bilden. Die einzelnen Logikblöcke werden mittels der Avalon
Switch Fabric miteinander verbunden. Der SoPC-Builder bietet eine grafische Benutzeroberfläche, um das Zielsystem graphisch zu beschreiben. Das konfigurierte System aus Prozessor und Hardware wird dann in einen Satz von VHDL oder VerilogDateien exportiert, mit denen dann ein FPGA der Firma Altera konfiguriert werden
kann.
DSF
65
Krah WS 13/14
6.4.1 Custom Instruction – ein Mittelweg zwischen Hardware und Software
Wenn Algorithmen zur Signalverarbeitung in VHDL implementiert werden, sind diese meist sehr schnell und benötigen proportional zur Komplexität der Algorithmen
entsprechende Ressourcen vom FPGA (Logikelemente bzw. DSP Blöcke). Bei aufwändigen Algorithmen kann das durchaus nennenswerte Kosten verursachen. Eine
Realisierung mit einer Soft-Core-CPU benötigt zwar weniger Ressourcen ist aber
auch deutlich langsamer.
Spezielle Instruktionen zur Begrenzung von Signalen bieten nur wenige DSP Hersteller. Bei einem Soft-Core Prozessor kann man einen solchen Befehl aber oft selbst
implementieren. Bild 6.8 zeigt den C-Code, den die neue Instruktion ersetzt und den
dahinterstehenden VHDL-Code. Diese absmax Instruktion wird ohne Wait-States in
nur 10 ns berechnet (100 MHz CPU). Durch diesen „selbstgebauten“ Befehl benötigt
der Soft-Core Prozessor zwar 159 zusätzliche Logikelemente (Cyclone IV), aber die
Zeit zur Berechnung eines robusten PI-Reglers sinkt deutlich. Der C-Compiler unterstützt Custom Instructions insoweit, dass diese Assembler Befehle mit symbolischen
Variablen aus dem C-Quelltext heraus aufgerufen werden können.
Auch die Berechnung von Sinus und Cosinus z.B. für eine feldorientierte Regelung
von Servoantrieben ist bei einem Controller ohne Floating Point Unit (FPU) sehr
zeitaufwändig. Oft wird die Berechnung von Sinus und Cosinus durch einen Tabellenzugriff ersetzt, was aber die Genauigkeit stark limitiert oder sehr große Tabellen
erfordert. Ein kundenspezifischer Befehl berechnet den Sinus bzw. Cosinus über zwei
Tabellen und eine Taylor Approximation erster Ordnung. Berechnet wird nur der erste Quadrant, die drei anderen werden über Symmetriebedingungen umgerechnet. Die
Berechnung erfolgt mit einem Wait-State und benötigt dadurch bei 100 MHz 20ns.
Diese Custom Instruktion erfordert für Sinus und Cosinus zusammen zwei DSP Blöcke und 402 Logikelemente (Altera Cyclone II).
control error
e(t)
command
w(t)
100%
actuating variable
y(t)
KP
100 %
KP
(-)
100 %

controlled variable
x(t)
100%
KP
-100 %
KP
e(t ) dt
TN 
-100 %
Anti-Wind-Up
Bild 6.7:
DSF
Zur Realisierung eines robusten PI-Reglers sind viele SignalBegrenzungen erforderlich. (Anti-Wind-Up ist nur schematisch dargestellt. Die Begrenzung erfolgt innerhalb des Blocks.)
66
Krah WS 13/14
max.
val
- max.
“C” Code:
int absmax(int val,int max)
{
if
( val > max ) {
// pos. limit ?
return max ;
} else if(
val < -max ) {
// neg. Limit ?
return -max ;
} else {
return val ;
}
}
Custom Instruction: (“C” Aufruf)
(Kombinatorisch)
ALT_CT_ABSMAX_INST(val,max) ;
DSF
// 10 ns at 100 MHz
67
Krah WS 13/14
-- Quartus II VHDL Code
-- Signed
Adderlibrary ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity absmax is
port (
clk
: IN STD_LOGIC;
dataa
: in signed
(31 downto 0) ; -- val
datab
: in signed
(31 downto 0) ; -- max
result
: out signed
(31 downto 0) ; -- output
);
end entity;
architecture rtl of absmax is
begin
process(clk) is
variable a : integer range -2147483647 to 2147483647 ;
variable max : integer range -2147483647 to 2147483647 ;
begin
if (clk'event AND clk = '1') THEN
a := TO_INTEGER(dataa) ;
max := TO_INTEGER(datab) ;
if ( a > max ) then
result <= datab ;
elsif ( -a > max ) then
result <= -datab ;
else
result <= dataa ;
end if ;
end if ;
end process;
end rtl;
Bild 6.8:
Absmax Funktion:
Symbol (oben),
C-Code (mitte) und
VHDL Code (unten)
Neben der Soft Core CPU ARM Cortex M1 bietet Altera seit Anfang 2011 zusätzlich
den MP32 von MIPS an, mit dem Altera im Kommunikations-Bereich Kunden gewinnen möchte.
DSF
68
Krah WS 13/14
6.5 FPGA integrierte Hard-Core Prozessoren
Für noch höhere Performance bietet Altera einen integrierten ARM Cortex A9 DualCore Prozessor an SoC. Diese Prozessoren sind deutlich leistungsfähiger als der Nios
II. Satt der ca. 100 MHz und 1,1 MIPS pro MHz (=110 MIPS) erreicht der SoC bei
800 MHz und 2,5 MIPS pro MHz bis zu 4000 MIPS. Jede CPU verfügt über 32-KB
Level 1 Daten- und 32-KB Level 1 Instruktionscache. Der 512-KB Level 2 Cache
wird von beiden Cores genutzt. Eingebunden wird das Hard-Core Prozessorsystem
wie der Nios II mit Qsys. Besonderer Vorteil der ARM Architektur ist der niedrige
Energieverbrauch. Fast alle Smartphone Hersteller setzen ARM Prozessoren ein.
Ab 2014 bietet Altera high Performance FPGAs (Stratix 10 in 14 Nanometer Technologie) mit ARM Cortex A53 quad-core (64-Bit) an, die bei Intel gefertigt werden.
Bild 6.9:
DSF
SoC: Cyclone V und Arria V FPGAs (28 nm) werden optional mit einem
Cortex A9 basierten Hard-Core Prozessorsystem angeboten. [Altera]
69
Krah WS 13/14
7
Digital-Analog-Umsetzer - Digital-to-Analog Converter (DAC)
7.1
Schnelle Digital-Analog-Umsetzer
Mit einem Digital-Analog-Umsetzer wird ein digitaler Wert in eine analoge Spannung umgesetzt. Bild 7.1 zeigt den schematischen Aufbau eines D/A-Umsetzers
durch Summation gewichteter Ströme.
R1
u0
S0
20. G

V
ua
1
S1
2 .G
2
S2
2 .G
n-1
Sn-1
Bild 7.1:
2 .G
Schematischer Aufbau eines D/A-Umsetzers
S0 bis Sn-1 sind elektronische Schalter, die durch das v-te Bit eines Wortes des Rechners gesteuert werden. Die Widerstände, die durch die Schalter gesteuert werden,
sind im Dualcode gewichtet, so dass eine entsprechende Stellung der Schalter die
Übertragung des zugehörigen analogen Spannungswertes bewirkt.
n 1
u A  u0 R1G  S v 2 v mit G = 1 / R
v 0
R= 1 k 
S0
R= 4 k 
u0
Bild 7.2:
V
S1
R= 2 k 
S2
R= 1 k 

ua
Schematischer Aufbau eines 3 Bit D/A-Umsetzers
Die Schaltfunktion Sv(t) stimmt mit dem Wert der v-ten Bits überein und kann ihre
Wertigkeit im Rhythmus der Abtastzeit t = k Ta ändern. Dazu wird üblicherweise der
von dem Algorithmus berechnete Wert für die Abtastzeit Ta in einem Halteregister
(D-Latch) gespeichert.
DSF
70
Krah WS 13/14
 1 für geschlossenen Schalter  v  tes Bit gesetzt
Sv  
 0 für offenen Schalter  v  tes Bit nicht gesetzt
Beispiel: Ausgangsspannung eines 3-Bit D/A-Umsetzers
Mit R1 = 1 k, G  1
4k und u0 = -4 V lässt sich entsprechend den Schalterstellungen S0 bis S2 eine Tabelle für die Ausgangsspannung ua eines 3-Bit D/AUmsetzers ermitteln.
2
s2
s1
s0
s
0
0
0
0
0
0
0
1
1
1
0
1
0
2
2
0
1
1
3
3
1
0
0
4
4
1
0
1
5
5
1
1
0
6
6
1
1
1
7
7
v 0
v
2v
ua/V
Bei der Herstellung integrierter Schaltungen ist es sehr aufwändig genaue Widerstände mit stark unterschiedlichen Werten herzustellen. Bei Verwendung eines R-2RLeiternetzwerkes ist das nicht notwendig. Allerdings müssen hier die Schalter als
Umschalter realisiert werden, damit sich die Kettenabschwächung des Spannungsteilers nicht ändert.
DSF
71
Krah WS 13/14
uref
uref
2R
½uref
¼uref
R
R
R
2R
2R
2R
2R
R
S3
S2
S1
S0
−
+
ua
Bild 7.3: Schematischer Aufbau eines R-2R Digital-Analog-Umsetzers
Beide bisher diskutierten Verfahren haben den Vorteil, dass die Umsetzzeit nur von
der Wahl der Schaltungskomponenten abhängt. Deshalb können diese DAC prinzipiell sehr schnell ausgelegt werden (t << 1s).
7.2 Abzählende Digital-Analog-Umsetzer
Für geringe Umsetzgeschwindigkeiten können auch PWM-Konverter (Pulsweitenmodulation) eingesetzt werden. Das digitale Datenwort wird in ein Register geladen
und ein Komparator vergleicht das Datenwort mit dem Stand eines Zählers. Solange
der Zählerstand kleiner als das Datenwort ist, ist der Ausgang des Konverters 1 (aktiv
high), sonst 0 (aktiv low). Dadurch hat das rechteckige Ausgangssignal ein dem Datenwort proportionales Tastverhältnis. Dieses Signal wird mit einem Tiefpass gefiltert, der am Ausgang den arithmetischen Mittelwert als Ausgangsspannung bereitstellt. In der Praxis wird dieses Verfahren oft benutzt, wenn eine Stellgröße nicht stetig einstellbar ist. Beispielsweise kann die Helligkeit von Glühlampen mit einer Phasenanschnittsteuerung eingestellt werden. Dies entspricht durch die sinusförmige
Spannung einer nichtlinearen PWM.
DSF
72
Krah WS 13/14
PWM Output
Carry
Analog
output
R
S
12-Bit-Counter
12-Bit DAC Data
=
Tiefpass
212-1
Counter
DAC Data
Clock
t
Bild 7.4:
TPWM
Set
0
Reset
1
t
PWM Digital Analog Umsetzer (Zählverfahren)
Bei einem 12-Bit (212 Stufen) PWM-Umsetzer mit 10 MHz (10 · 106) Taktfrequenz
beträgt die Periodendauer des Ausgangssignals
212
TP WM 
s  0,4096ms .
10  10 6
Es ist offensichtlich, dass ein Rechtecksignal mit der doppelten Frequenz mit einer
halb so großen Filterkonstante auskommt. Ohne die Taktfrequenz zu verändern, würde sich jedoch die Auflösung um ein Bit auf 11-Bit verschlechtern.
7.3 Sigma-Delta  Digital-Analog-Umsetzer
Wenn die Schalfrequenz des Stellgliedes nicht begrenzt ist, kann durch Modifikation
der PWM die Zeitkonstante des Filters verringert und damit die Bandbreite vergrößert werden. Bei einem (Delta-Sigma)-Modulator tritt dieses Problem nicht auf.
Der Modulator erzeugt einen deutlich höherfrequenten 1-Bit Datenstrom, der so gestaltet ist, dass der Mittelwert dem einer PWM entspricht. In Bild 7.5 ist der „C“Code eines 12-Bit Digital-Analog Modulators dargestellt.
DSF
73
Krah WS 13/14
C-Beispiel eines 12-Bit -DAC
int DAC_data; // Datum
static int sum ; // Hilfsvariable
for(;;) {
sum += DAC_data ;
if ( sum >= 4096 ) { // 2**12
bit_stream_data = 1 ;
sum -= 4096 ;
} else {
bit_stream_data = 0 ;
}
}
Bild 7.5:
„C“-Code für einen -Digital-Analog-Modulator (1. Ordnung)
Wenn die for-Schleife n mal durchlaufen wird, wird auch die globale Variable
DAC_data n mal aufsummiert. In jedem Zyklus, in dem die Summe 4096 überschreitet, wird bit_stream_data gesetzt und der Wert 4096 abgezogen. Es ist
leicht ersichtlich, dass die Variable sum ohne das systematische Abziehen um das
Produkt n ∙ DAC_data ansteigen würde. Umgekehrt sieht man auch, dass der Wert
4096 genau n ∙ DAC_data/4096 mal abgezogen wird. Von n Durchläufen ist
bit_stream_data also n ∙ DAC_data/4096 mal gesetzt.
DSF
74
Krah WS 13/14
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity delta_sigma_da is
generic (
WIDTH : integer := 12
);
port (
clk
reset_n
data
bit_out
);
:
:
:
:
-- input data width
in std_logic ;
-- System clk
in std_logic ;
-- reset low active
in unsigned(WIDTH-1 downto 0); --Sigma Delta Data
out std_logic
-- bit stream output
end entity;
architecture rtl of delta_sigma_da is
begin
process (clk,reset_n)
variable sum : unsigned(WIDTH downto
begin
if reset_n='0' then
sum := to_unsigned(0,WIDTH+1) ;
bit_out <= '0' ;
elsif ( rising_edge(clk) ) then
sum(WIDTH) := '0' ;
-sum := sum + data ;
-bit_out <= sum(WIDTH) ;
-end if;
end process;
end rtl;
Bild 7.6:
0) ; -- one add. bit(carry)
reset carry bit
add data
use carry bit
-Digital-Analog-Umsetzer VHDL-Listing
Das VHDL Listing zeigt einen parametrierbaren -Digital-Analog-Umsetzer 1.
Ordnung. Besonderes Kennzeichen dieses Modulators ist, dass er sehr wenig Logikelemente benötigt.
DSF
75
Krah WS 13/14
 bit stream
Carry ()
Analog
output
D
12-Bit Latch
12-Bit 
12-Bit DAC Data
12-Bit
Sum
Tiefpass
12-Bit
Clock
Bild 7.7:
-Digital-Analog-Umsetzer Blockschaltbild (1. Ordnung)
In Bild 7.7 ist eine mögliche 12-Bit -DAC Realisierung mit digitaler Logik dargestellt. Das Carry (Übertrag) Signal entspricht dem bit-stream Datum. Das „Subtrahieren“ erfolgt implizit durch die fehlende Auswertung des Carry bei der nächsten Addition. Im Vergleich zu einer gleich getakteten PWM digital analog Umsetzung ist das
Quantisierungsrauschen unverändert, aber in einen höheren Frequenzbereich verschoben. Der Tiefpass zur Glättung der Spannung kann jetzt einfacher und höherfrequenter ausgelegt werden. Das senkt die Kosten und verbessert die Dynamik. Bei einer Implementierung des -Modulators in einem FPGA werden nur wenige Ressourcen benötigt. Als Tiefpass ist meist ein einfaches RC-Glied (PT1) ausreichend.
DSF
76
Krah WS 13/14
8 Analog-Digital-Umsetzer
Aufgabe eines Analog-Digital-Umsetzers ist die Umsetzung einer analogen Größe in
eine ihrem Betrag entsprechende codierte Zahl.
Bild 8.1 zeigt die Abhängigkeit zwischen der analogen Eingangsgröße x und der digitalen Ausgangsgröße xQ für einen A/D-Umsetzer mit einer Wortlänge von 4-Bit.
mit -½  Q  eQ  ½  Q
eQ = x - XQ ;
a)
(8.1)
xQ/Q
overflow
0111
0110
0101
0100
0011
0010
0001
0000
1111
1110
x/Q
1101
1100
1011
1010
1001
underflow
1000
b)
1 2  Q.
 1 2  Q.
Bild 8.1:
eQ
x
a) Quantisierungskennlinie eines 4-Bit-AD-Umsetzers mit Rundung und
Zweierkomplementdarstellung (MSB negiert)
b) Verlauf des Quantisierungsfehlers eQ
Die Analog-Digital-Umsetzung erfolgt in zwei Schritten. Im ersten Schritt wird ein
wertekontinuierlicher Abtastwert erzeugt und im zweiten Schritt wird der numerische
Wert von xk durch eine endliche Anzahl Bits digital dargestellt.
Der Quantisierungsfehler ist abhängig von der Art und Weise, wie die Quantisierung
durchgeführt wird. Am häufigsten wird die Quantisierungscharakteristik mit Rundung angewendet. Der kleinste Quantisierungsschritt ist Q.
DSF
77
Krah WS 13/14
Der vorliegende analoge Messwert der kontinuierlich verlaufenden Eingangsspannung wird in einen dazu proportionalen Digitalwert umgesetzt. Dabei ergibt sich
infolge der endlichen Anzahl von n-Bits, die der ADC zur Darstellung eines Digitalwertes zur Verfügung hat, ein endliches Auflösungsvermögen. Für den analogen
Messwert lässt sich nur ein Näherungswert aus einer Anzahl von 2n verschiedenen
Werten angeben. Somit ergibt sich das kleinste Quantisierungsintervall Q, in dem der
volle Eingangsbereich (full scale, FS) durch die Anzahl der möglichen Werte dividiert wird. Durch den Vorgang der Quantisierung erhält man die in Bild 8.1a dargestellte Quantisierungskennlinie. Die Differenz zwischen dem tatsächlichen analogen
Messwert X und dem durch die Quantisierung entstandenen Näherungswert XQ bezeichnet man als Quantisierungsfehler eQ, der bei einem idealen ADC maximal einem halben Bit entspricht.
Bild 8.1b gibt den Verlauf des Quantisierungsfehlers über den Eingangsbereich wieder. Zwar ist der Quantisierungsfehler unvermeidbar, doch kann man ihn oft bei entsprechend hoher Auflösung vernachlässigen. So ergibt sich für einen vollen Eingangsspannungsbereich des A/D-Umsetzers von
UFS = 10 V
und einer Auflösung von 12-Bit eine Spannungsauflösung von:
ULSB =
ULSB =
U FS
2n
,
(8.2)
10V
= 2,5 mV / Bit .
212 Bit
Eine daraus resultierende Änderung im niederwertigsten Bit (Least Significant Bit,
LSB) entspricht daher einem Quantisierungsfehler von 1,25mV.
Digital-Analog- und Analog-Digital-Umsetzer sind fast immer unipolar ausgeführt
(z. B. 0 ... 5 V Eingangsspannung). Mit Hilfe von einfachen Operationsverstärkerschaltungen können aber auch bipolare Spannungen umgesetzt werden (+/- 10V).
Dann muss jedoch das „Most Significant Bit“ (MSB) invertiert werden, um eine
Zweierkomplementdarstellung zu erhalten. Bei ADCs muss zusätzlich vor der Verarbeitung auf eine eventuelle Vorzeichenerweiterung geachtet werden.
DSF
78
Krah WS 13/14
8.1 Kenngrößen von Umsetzern
Auflösung
Die Auflösung gibt an, in wie viele Intervalle der Bereich des Eingangssignals aufgeteilt werden kann. Die Auflösung wird üblicherweise in [n]-Bit angegeben. Der Signal- Rauschabstand (Signal Noise Ratio, SNR) kann daraus wie folgt abgeschätzt
werden:
SNR = 1,76 dB + n · 6,02 dB
(8.3)
Übertragungskennlinie
Die Übertragungskennlinie beschreibt den Zusammenhang zwischen der Größe des
Eingangssignals und der Größe des Ausgangssignals.
Umsetzzeit
Die Gesamtzeit von Beginn einer Umwandlung bis zu dem Zeitpunkt, zu dem das
Ausgangssignal mit voller Genauigkeit zur Verfügung steht.
Linearitätsfehler
Der Linearitätsfehler gibt die Abweichung von einer linearen Übertragungskennlinie
an.
Offset-Fehler
Der Offset-Fehler beschreibt den Eingangswert, bei dem ein ADC den Wert Null
ausgibt bzw. den Wert, den ein DAC ausgibt, wenn als Eingangswort der Wert Null
angegeben wurde. Der Offset ist oft temperaturabhängig.
Quantisierungsfehler(Quantisierungsrauschen)
Maximale Abweichung von der idealen Transferfunktion, die durch Umwandlung der
stetigen analogen Werte in diskrete digitale Werte durch die begrenzte Auflösung
entsteht (vergleichbar mit einem Rundungsfehler).
Verstärkungsfehler (Gain-error)
Ein Verstärkungsfehler tritt auf, wenn die Steigung der Übertragungskennlinie von
der Steigung der idealen Transferfunktion abweicht. Das führt z.B. dazu, dass bei einem Eingangswert, der kleiner als der maximal mögliche Eingangswert ist, bereits
das maximal mögliche Ausgangssignal ausgegeben wird.
Es gibt im Wesentlichen fünf Analog-Digital-Umsetz-Verfahren:
 Sukzessive Approximation (SAR)
 Dual-Slope (Zählverfahren, Digitalvoltmeter, ältere Produkte)
 Spannungs-Frequenz-Umsetzungsverfahren
 Flash-Analog-Digital-Umsetzer (Parallelverfahren, sehr schnell)
DSF
79
Krah WS 13/14
  (Sigma-Delta)-Umsetzer (neuere Produkte)
8.2 Kompensationsverfahren (Wägeverfahren)
x(t)
Bit
Takt
Zähler
DAU
XQ
Bild 8.2:
Schematischer Aufbau eines A/D-Umsetzers nach der sukzessive Approximation (SAR)
Hier soll zunächst die sukzessive Approximation (SAR) nach Bild 8.2 betrachtet
werden. Das Verfahren beruht darauf, dass man am Eingang eines D/A-Umsetzers
die digitalen Vergleichswerte über einen Zähler solange systematisch verändert (approximiert), bis die Ausgangsspannung des D/A-Umsetzers bis auf den Quantisierungsfehler gleich der Messspannung ist. Der letzte Vergleichswert entspricht dem
digitalen Wert der analogen Eingangsgröße.
In fast allen µControllern werden SAR Analog Digital Wandler verwendet. Die
Wandlungszeit inkl. S&H beträgt ca. 1 – 5 µs.
8.3 Dual-Slope (Zählverfahren)
Der Dual-Slope (Doppel-Sägezahn) Konverter integriert das Eingangssignal zuerst
für eine feste Zeitspanne (z.B. 100 ms) auf, um dann die negative Referenzspannung
an den Eingang zu legen. Die Zeit bis zur Entladung des Integrators ist proportional
zum Integral der Eingangsspannung. Zur Festlegung der Integrationsdauer als auch
zur Messung der Zeit bis zur Entladung wird ein Zähler benutzt, der die Frequenz eines Taktoszillators zählt. Durch eine entsprechende Wahl ist der Zählerstand direkt
der angezeigte Messwert. Mit geringem Bauaufwand verbindet der Dual-Slope Konverter gute Genauigkeit und Linearität.
Integrierende Wandler bewerten das Integral der Eingangsgröße über einen bestimmten Zeitraum. Das hat den prinzipiellen Vorteil der Absenkung von Rauschen und
hohen Frequenzen mit 6 dB/Oktave auf Kosten einer längeren Wandlungszeit. Wählt
DSF
80
Krah WS 13/14
man die Integrationszeit gleich der Dauer einer Netzschwingung oder einem vielfachen davon, so werden die Netzfrequenz und alle Oberwellen sehr stark unterdrückt.
Die lange resultierende Umwandlungszeit stört z.B. bei Digitalmultimetern nicht. Das
Verfahren ist preisgünstig, benötigt nur wenig Leistung und weist eine sehr gute Linearität auf.
8.4 Spannungs-Frequenz-Umsetzungsverfahren
Dieses Verfahren wird nur noch selten verwendet. Haupteinsatzgebiet ist heute der
Voltage Controlled Oscillator (VCO) für Phasenregelkreise (PLL).
8.5 Flash-Analog-Digital-Umsetzer (Parallelverfahren)
Die kürzeste überhaupt mögliche Umwandlungszeit erreichen die Flash- (=Blitz)
Konverter. Hier ist für jedes mögliche digitale Ausgangswort ein eigener Komparator
vorgesehen. Ein ADC mit 6 Bit Auflösung hat 64 Ausgangszustände, 63 Umschaltpunkte und dementsprechend 63 Komparatoren. Jedes weitere Bit Auflösung erfordert eine Verdopplung der notwendigen Komparatoren. Jeder Komparator hängt mit
einem Eingang an der Eingangsspannung und mit dem anderen an einer Spannungsteilerkette aus lauter gleich großen Widerständen. Alle Komparatoren mit einer Vergleichsspannung oberhalb der Eingangsspannung schalten am Ausgang nach „1“, alle
darunterliegenden am Ausgang nach „0“. Das Verknüpfungsnetzwerk erkennt die
Stelle des Übergangs und gibt das entsprechende Binärwort zum Ausgang. Die Umwandlungszeit besteht aus der Schaltzeit der Komparatoren und des Netzwerks und
kann weniger als 10 ns betragen. Die vielen Komparatoren belasten den Eingang kapazitiv und nehmen viel Verlustleistung auf. Die Auflösung beträgt zwischen 4 und 8
bit. Auf Kosten eines hohen Schaltungsaufwands glänzt der Flash ADC mit äußerst
kurzen Umwandlungszeiten. Höhere Auflösungen erreicht man oft durch Hintereinanderschaltung von mehreren Flash Wandlungen (Pipelined Flash) unter Einsatz
von DAC’s. Die Mehrstufigkeit erhöht allerdings die Latenzzeit, aber vermindert die
Abtastrate nicht wesentlich. Die Pipeline-Architekturen haben einstufigen
Flashwandler außer bei extrem zeitkritischen Anwendungen ersetzt.
Z.B. Digital-Oszilloskope
DSF
81
Krah WS 13/14
8.6  (Sigma-Delta) Analog-Digital-Umsetzer
[a Franco Contadini]
Obwohl -Wandler für viele Applikationen besser geeignet sind als herkömmliche
ADCs, greifen Entwickler häufig „nur" zum Standard.  Analog/Digital-Wandler
wurden vor allem für Anwendungen mit sehr hohen Auflösungen entwickelt und sind
aus diesem Grund besonders für Waagen oder Multimeter geeignet. Doch sehr häufig
setzen Entwickler eine andere, weniger gut geeignete Architektur wie z.B. SAR-ADC
ein, weil das  Verfahren oft nicht verstanden wird. Dabei ist insbesondere der analoge Teil des -ADCs sehr einfach aufgebaut, da es sich hier „nur" um einen 1-Bit
ADC, einen Integrator und einen Komparator handelt. Die digitale Seite ist mit ihrer
Filterung und Dezimierung dagegen komplexer, lässt sich mit etwas Know-how in
den Bereichen Oversampling, Noise Shaping und digitaler Filterung jedoch ebenfalls
einfach beherrschen.
Der wichtigste Punkt beim Einsatz eines -ADCs ist das Oversampling. Um die mit
dem Oversampling verbundenen Effekte besser erläutern zu können, wird zunächst
die Übertragungsfunktion im Frequenzbereich eines traditionellen Multibit ADC mit
sinusförmigem Eingangssignal betrachtet. Dieses Signal wird mit der Frequenz fa abgetastet, die nach dem Nyquist-Theorem mindestens doppelt so groß sein muss wie
die höchste zu erwartende Eingangsfrequenz. Eine schnelle Fourier-Transformation
(FFT), angewendet auf das digitale Ausgangssignal des ADC, zeigt dann die einzelne
Hauptfrequenz des Eingangssignals und zufälliges Rauschen im Bereich DC bis fa/2 .
Bekannt als Quantisierungsrauschen lässt sich dieser Effekt wie folgt beschreiben:
am ADC-Eingang liegt ein kontinuierliches Signal mit einer unbegrenzten Anzahl
von möglichen Zuständen, aber der digitale Ausgang ist ein diskretes Signal, bei dem
die Anzahl der Zustände von der Auflösung des Wandlers (N-Bit) bestimmt wird. So
verliert man bei der Wandlung von analog nach digital Informationen und bewirkt
damit eine Verzerrung des Signals. Die Größe dieses Quantisierungsfehlers ist zufällig und erreicht maximal ±1/2 LSB.
Dividiert man die Hauptamplitude der FFT durch den Effektivwert aller Rauschfrequenzen, erhält man den Signal-Rauschabstand (SNR). Für einen N-Bit ADC ist:
SNR = 1,76 dB + 6.02 dB ∙ N
(8.4)
Um den SNR und damit die Genauigkeit in einem ADC zu verbessern, muss demnach die Anzahl der Bits N erhöht werden.
Jetzt wird im genannten Beispiel die Abtastfrequenz (m·fs) um die OversamplingRate m vergrößert. Die FFT Analyse zeigt dann, dass der Rauschanteil nach dieser
Maßnahme eine geringe Amplitude aufweist. Der SNR ist hierbei jedoch der gleiche
wie vorher, aber die Rauschenergie ist auf einen größeren Frequenzbereich verteilt.
-Wandler nutzen diesen Effekt, in dem sie nach dem 1-Bit Wandler ein digitales
Filter folgen lassen, das den größten Teil des Rauschanteils ausmaskiert, Bild 8.3.
DSF
82
Krah WS 13/14
Bild 8.3:
Spektrum eines Sigma Delta Modulators erster Ordnung [Ti]
Der Effektivwert des Rauschens ist jetzt kleiner, weil ein großer Anteil des Rauschens digital herausgefiltert wird. Diese Methode ermöglicht es -Wandlern, einen
großen dynamischen Bereich mit einem niedrig auflösenden ADC zu erreichen. Der
SNR für einen 1-Bit ADC beträgt 7,78 dB (6,02 + 1,76 = 7,78). Jedes Faktor-2Oversampling steigert den SNR um 6 dB und ist gleichbedeutend mit dem Gewinn
eines Bits. Damit erreicht ein 1-Bit ADC mit 16-fachem Oversampling eine Auflösung von 1 + 4 = 5 Bit. Um 16 Bit Auflösung zu erreichen, müsste man entsprechend
215-fach oversampeln, was praktisch kaum realisierbar ist. Aber -Wandler umgehen diese Einschränkung mit der Technik des sog. Rauschformens („Noise
Shaping"), wodurch eine Verbesserung von mehr als 6 dB pro 2-fachem Oversampling ermöglicht wird.
clk
Integrator
ue
(-)
KI
s
Komp.
Analog
Input
ua
bit stream
uref
1 Bit
DAC
Bild 8.4:
Modulator 1. Ordnung: K = 1 (1 Integrator)
Um Noise Shaping zu verstehen, hilft das Blockdiagramm eines -Modulators erster Ordnung, Bild 8.4. Es enthält einen Integrator, einen getakteten Komparator mit
einem 1-Bit DAC in der Rückführungsschleife. Dieser DAC ist hier einfach ein
DSF
83
Krah WS 13/14
Schalter, der den invertierenden Eingang des Differenzverstärkers mit einer positiven
oder negativen Referenzspannung verbindet.
Bild 8.5:
Eingangs- und Ausgangssignal eines -Modulators [Ti]
Über den DAC wird das Ausgangssignal des Integrators nahe an der Komparator Referenzschwelle gehalten. Die Anzahl der „Einsen" am Modulator-Ausgang ist proportional zum Eingangssignal. Für ein steigendes Eingangssignal erzeugt der Komparator eine steigende Anzahl von Einsen und sie nimmt ab für ein fallendes Signal,
Bild 8.5.
Durch das Summieren der Fehlerspannung arbeitet der Integrator als Tiefpass für das
Eingangssignal und als Hochpass für das Quantisierungsrauschen. Dadurch wird ein
großer Teil des Quantisierungsrauschens in Richtung höherer Frequenzen verschoben.
U A ( s) 
KI
 U E ( s)  U A ( s)  Q( s)
s
U A ( s)  U E ( s) 
1
1
1
KI
s
 Q( s ) 
(8.5)
1
KI
1
s
1
KI
s
(8.6)
Die Rauschübertragungsfunktion Q(f) eines Modulators K-ter Ordnung kann wie
folgt beschrieben werden:
u LSB
Q f  
12  f S


  2  sin 


f 

f S  
K
(8.7)
Damit hat der Modulator das Quantisierungsrauschen zwar nicht vermindert, aber
anders verteilt. Wird ein idealer Tiefpass an den --Modulator mit Noise Shaping
angehängt, entfernt dieser mehr Rauschen als bei einfachem Oversampling, weil das
Rauschen in Richtung höherer Frequenzen „geschoben“ wird, Bild 8.6. Dieser Modulatortyp (erster Ordnung) erreicht dadurch eine 9 dB SNR-Verbesserung pro VerDSF
84
Krah WS 13/14
dopplung des Oversampling. Für eine Quantisierung höherer Ordnung kann Noise
Shaping auch durch die Verwendung von mehr als einer Summier- und Integrationsstufe pro -Modulator erfolgen. So liefert z.B. ein -Modulator zweiter Ordnung
(Bild 8.7) bereits eine 15dB Verbesserung des SNR für jede Verdopplung des Oversampling.
Bild 8.6:
Rauschspannung als Funktion der Frequenz [Ti]
a)  erster Ordnung b)  zweiter Ordnung
1. Integrator
u
(-)
KI
s
2. Integrator
KI
s
(-)
clk
bit
stream
Comp.
uref
1 Bit
DAC
Bild 8.7:
-Modulator 2. Ordnung: K = 2 (2 Integratoren)
Bild 8.8 zeigt den Zusammenhang zwischen der Ordnung des -Modulators, dem
gewählten Oversampling und der Auflösung (SNR) - in Kombination mit einem idealen Tiefpass.
Mit dem Oversampling Faktor M kann die Bandbreite des Übertragungssystems wie
folgt beschrieben werden:
DSF
85
Krah WS 13/14
(8.8)
Die Rauschspannung innerhalb der Bandbreite B kann dann durch Kombination der
Gleichungen (8.7) und (8.9) berechnet werden (Noise shaping):
√ ∫
( )
B
U Q,rms
2
u LSB
 2
12  f S
0
2K


  2 sin


f  
 df
f S  
(8.9)
Durch Auflösen des Integrals erhält man:
SNR
[dB]
3. Ordnung
120
2. Ordnung
100
80
60
1. Ordnung
40
20
2
Bild 8.8:
U Q,RMS
4
16
32
64
128
256 M
Sigma Delta Analog Digital Umsetzer Modulator: 1. bis 3. Ordnung
Signal to Noise Ratio bei idealer Tiefpassfilterung
als Funktion des Oversampling Faktors M
K
u LSB
1


 K  1 
12
2K  1 M 2
SNR IDEAL  20dB  log
SNR IDEAL
DSF
8
(8.10)
uP / 2
U Q,RMS
(8.11)
K




 1,76  6,02  N  20  log 
  20  K  10 log MdB
 2  K  1


86
(8.12)
Krah WS 13/14
N=1, K=1:
SNR IDEAL   2,61  30  log MdB
N=1, K=2:
SNR IDEAL   5,12  50  log MdB
N=1, K=3:
SNR IDEAL   13,6  70  log MdB
(8.13)
Digitaler Dezimierungsfilter
Der Ausgang des -Modulators liefert einen 1-Bit Datenstrom mit einer sehr hohen
Abtastrate, die üblicherweise im MHz-Bereich liegt. Die Aufgabe des digitalen Dezimierungsfilters ist es, (1.) die Informationen aus dem Datenstrom auszulesen und
(2.) die Datenrate auf den gewünschten Wert zu reduzieren. In einem -Wandler
mittelt das digitale Filter den 1-Bit Datenstrom und vermindert dadurch das Quantisierungsrauschen (verbessert die ADC-Auflösung). Es legt die Signalbandbreite, die
Einschwingzeit und die Stoppband-Unterdrückung fest.
Bild 8.9:
DSF
Sigma Delta Analog Digital Ums. mit Tiefpassfilter und Dezimierung
a) Blockschaltbild
b) und c) Ersatzschaltbilder.
Der Tiefpass reduziert das Quantisierungsrauschen (rot) und kann
gleichzeitig als anti-Aliasing Filter für die nachfolgende Abtastung dienen (blau).
87
Krah WS 13/14
Ideal Filter
Sinc1 Filter
64
128
M
Bild 8.10: Effektive Auflösung eines  Umsetzers 2. Ordnung bei Verwendung div.
realer Tiefpassfilter (sincK) als Funktion des Oversamplingfaktors M
[Ti]
DSF
88
Krah WS 13/14
9 Der Abtastvorgang
9.1 Realisierung eines Abtastgliedes
Eine mögliche Schaltung eines analogen Abtastgliedes ist in Bild 9.1 dargestellt. Die
Ausgangsspannung u(kTa) folgt bei geschlossenem Schalter S (meist durch einen
Feldeffekttransistor (FET) realisiert) der Eingangsspannung u(t) (Prinzip des Spannungsfolgers). Öffnet der Schalter, so wird der gerade anliegende Eingangsspannungswert u(t) im Kondensator CH gespeichert. Am Ausgang des Abtast-Haltegliedes
liegt dieser Wert solange an, bis der Schalter wieder schließt und ein neuer Wert aufgenommen wird. Durch die Gegenkopplung werden die Gleichspannungsfehler (Offsetspannungs- und Verstärkungsfehler sowie der Fehler des Schalters) reduziert.
-
V2
S
V1
+
+
T0
CH
u(t)
u (kT0)
uc(t)
Abtastsignal
Bild 9.1:
Schematischer Aufbau eines Abtast-Haltegliedes (S&H)
Eine wichtige Kenngröße des analogen Abtast-Haltegliedes ist die Driftrate. Sie gibt
an, wie schnell sich der Kondensator bei offenem Schalter entlädt. Typische Werte
der Driftrate sind 0,1 mV/s bis 2 mV/s.
Niedrigere Driftraten werden durch FET-Eingangsstufen erreicht. Die Zeit, die benötigt wird, um einen Eingangsspannungswert zu erfassen, die Messwerterfassungszeit,
hängt von der Größe des Kondensators CH sowie von dem inneren Widerstand des
Verstärkers V1 ab. Typische Werte für die Messwerterfassungszeit liegen in der Größenordnung einer Mikrosekunde.
DSF
89
Krah WS 13/14
u(kTa)
u kTa 
0
Bild 9.2:
2
4
6
8
10
12
Ausgangsfunktion eines S&H-Gliedes
k  t / Ta
k  t / T0
Aus einer kontinuierlichen Zeitfunktion u(t) entsteht am Ausgang des S&H-Gliedes
eine Treppenfunktion u (kTa ) , Bild 9.2.
In hochwertigen Systemen ist jedem Kanal ein separater Sample & Hold zugeordnet,
damit die Signale zeitgleich genau abgetastet werden.
9.2 Mathematische Beschreibung des Abtast-Halte-Gliedes
Um eine mathematische Beschreibung von Abtastsystemen zu erleichtern, wird eine
einheitliche Signaldarstellung angestrebt. Ausgangspunkt ist dabei die Treppenfunktion f (t ) , die aus der zeitkontinuierlichen Funktion f(t) durch den Abtast-HalteVorgang entsteht. Entsprechend Bild 9.3 kann f (t ) als Folge von Rechteckimpulsen
konstanter Breite Ta und variabler Höhe fk = f(kTa) aufgefasst werden.
f(t)
fk = f( k .Ta)
k = t / Ta
0 1
Bild 9.3:
Aufbau einer Treppenfunktion aus Rechteckimpulsen
Mit Hilfe des Einheitssprungs
1 ; fürt 0
 0 ; fürt 0
 (t )  
DSF
(9.1)
90
Krah WS 13/14
kann man jeden einzelnen dieser Rechteckimpulse als Überlagerung von zwei um Ta
gegeneinander verschobenen und mit fk bzw. mit -fk bewerteten Einheitssprüngen darstellen (siehe Bild 9.4).
fk (t-kTa)
fk
fk
k Ta
Bild 9.4:
(k+1)Ta
t
t
-fk (t-(k+1)Ta)
Rechteckimpuls als Überlagerung zweier Sprungfunktionen
Somit lässt sich die Treppenfunktion f (t ) durch eine Reihe beschreiben:
f (t ) 

 f k  (t k Ta ) (t (k1) Ta )
(9.2)
k 0
Die Laplace-Transformierte von f (t ) ergibt den Ausdruck
 e  kTa s e  ( k 1)Ta s 
F ( s)  L{ f (t )}   f k 

 ,
s
s
k 0



(9.3)
der sich in ein Produkt zweier Faktoren aufspalten lässt:
1e Ta s 
F ( s) 
 f k e kTa s
s
k 0
(9.4)
= Gh(s)  F*(s) .
(9.5)
Mit diesen beiden Faktoren ist eine für den Abtast-Halte-Vorgang wichtige mathematische Beschreibung gefunden, deren Interpretation zu den folgenden Übertragungsgliedern führt.
Der -Abtaster
Zunächst wird der Faktor F*(s) betrachtet. Nach den Korrespondenzen der LaplaceTransformation erhält man für eine um Ta verschobene -Impulsfunktion (DiracStoß) nach Bild 9.5.
DSF
91
Krah WS 13/14
Bild 9.5:
Darstellung der um k·Ta verschobenen -Impulsfunktion
(t-k·Ta)
e  kTa s
(9.6)
Wendet man diese Korrespondenz nach Gleichung (4.7) auf F*(s) an, erhält man aus

F s    f k e
*

f t    f k  (t  k Ta )
kTa s
*
k 0
(9.7)
k 0
die Originalfunktion f *(t), die man als -Impulsfolge bezeichnet.
Die -Impulsfunktion (t) (streng mathematisch keine Funktion, sondern eine Distribution) ist definiert als Grenzwert eines Rechteckimpulses der Höhe 1/  und der Breite  mit 0.

  t  dt  1
Für die Impulsfläche gilt:
0
(t)

 1/

Bild 9.6:
t
Definition des -Impulses mit →0.
Beim Übergang von f(t) zu f*(t) werden daher nicht nur die Funktionswerte aus f(t)
entnommen, sondern es entsteht eine Folge von bewerteten -Impulsen der Fläche fk ,
die jeweils um Ta nach rechts verschoben sind. Entsteht eine -Impulsfolge aufgrund
eines Abtastvorganges, so spricht man von einem Abtastsignal.
DSF
92
Krah WS 13/14
Um aus der kontinuierlichen Zeitfunktion f(t) ein Abtastsignal f *(t) zu bilden, wird
ein Pseudo-Übertragungsglied (siehe Bild 9.7) eingeführt, das man als -Abtaster
(sampler) bezeichnet. Hierbei handelt es sich um ein lineares Übertragungsglied, das
jedoch nicht mit dem in Bild 9.1 dargestellten Abtaster identisch ist, da die einzelnen
Abtastwerte jeweils mit einem -Impuls multipliziert werden. Zur grafischen Darstellung des Abtastsignals werden die -Impulse durch Pfeile repräsentiert, deren Höhe
jeweils dem Gewicht des zugehörigen -Impulses entsprechen. Die Pfeilhöhe ist dabei gleich dem Wert des abzutastenden Signals f(t) zum Zeitpunkt t = kTa.
a)
b)
f *(t)
f(t)
c)
Ta
f(t)
F(s)
Bild 9.7:
k = t / Ta
0 1
t
f *(t)
F*(s)
-Abtaster a) Eingangssignal (kontinuierliches Signal)
b) Ausgangssignal (Abtastsignal)
c) Blockschaltbild des -Abtasters
Das Halteglied nullter Ordnung Gh(s)
Mit dem Faktor Gh(s) wird die Übertragungsfunktion eines Übertragungsgliedes beschrieben, dessen Impulsantwort gh(t) einem Rechteckimpuls der Höhe 1 und der
Breite Ta entspricht:
1e  sTa
Gh s  
s
g h (t )   t  t  Τ a 
(9.8)
Wird nun ein bewerteter -Impuls fk(t-kTa) einem solchen Übertragungsglied aufgeschaltet, entsteht am Ausgang ein Rechteckimpuls, der sich jedoch auf das Zeitintervall Ta ausdehnt und so die Höhe von fk und die Breite von Ta annimmt (siehe Bild
9.8).
DSF
93
Krah WS 13/14
f*(t) = fk·(t-k·Ta)
f (t)
fk
fk
k·Ta
(k+1)·Ta
t
k·Ta
(k+1)·Ta
t
f*(t)
f*(t)
Bild 9.8:
Gh(s)
f (t)
Ausgangsgröße des Übertragungsgliedes bei einem mit fk bewerteten
Eingangsimpuls
Der Bewertungsfaktor fk wird über die gesamte Abtastperiode Ta gehalten. Man
spricht daher von einem Halteglied, das zur Unterscheidung von anderen hier nicht
behandelten Haltegliedern als Halteglied nullter Ordnung bezeichnet wird.
f *(t)
f(t)
a)
b)
0 1
k = t / Ta
f *(t)
c)
Bild 9.9:
F *(s)
k = t / Ta
0 1
1  e Ta s
s
f (t)
F(s)
Halteglied nullter Ordnung
a) Eingangssignal (Abtastsignal)
b) Ausgangssignal (Treppenfunktion)
c) Blockschaltbild des Haltegliedes
Wie in Bild 9.8 veranschaulicht, erzeugt das Halteglied nullter Ordnung aus einem
Abtastsignal f *(t) ein entsprechendes stufenförmiges Ausgangssignal f (t ) . Es unterDSF
94
Krah WS 13/14
scheidet sich daher vom Speicherglied nach Bild 9.1, welches das Signal f (t ) aus
einer Zahlenfolge bildet. Das Halteglied nullter Ordnung ist ein lineares Übertragungsglied.
Durch die mathematische Zerlegung der Treppenfunktion gelangt man so zu einer
weiteren in Bild 9.9 angegebenen Beschreibung des Abtast-Halte-Gliedes.
f(t)
f(t)
f *(t)
t
0
f(t)
k = t / Ta
01
Ta
f *(t)
F (s)
F *(s)
f(t)
F (s)
Bild 9.10:
Sample &
Hold
01
k = t / Ta
f(t)
1  e Ta s
s
F(s)
f(t)
F(s)
Darstellung des Abtast-Halte-Vorgangs, der aus der mathematischen
Zerlegung folgt.
Ein Vergleich mit Bild 9.2 macht deutlich, dass die mathematische Zerlegung des
Abtast-Halte-Gliedes zu einer einheitlichen Darstellung der Signale zwischen Abtastung und Speicherung geführt hat. Für die weitere Betrachtung von Abtastsystemen
ist dies von großer Bedeutung.
Anhand des Frequenzganges wird nun die Phasenverschiebung untersucht, die das
Halteglied nullter Ordnung erzeugt.
Mit s = j gilt für den Frequenzgang des Haltegliedes:
Gh ( j ) 
1e  jTa
j
e  jTa / 2  e  jTa / 2  jTa / 2

e
j

DSF
2 sin( Ta / 2)

e  jTa / 2
95
Krah WS 13/14
 Ta 
sin( Ta / 2)  jTa / 2
e
Ta / 2
 Ta si(
  Ta
2
)e  jTa / 2
(9.9)
Das Halteglied nullter Ordnung führt somit eine Phasenverschiebung von
 =  · t =  · Ta / 2 ein. Dies entspricht einer Zeitverschiebung (Totzeit) von
tAH = Ta / 2 .
DSF
96
Krah WS 13/14
9.3
Das Abtasttheorem von Shannon
Je nach Rechengeschwindigkeit des digitalen Systems ergibt sich eine maximal mögliche Abtastfrequenz. Dabei lässt sich mit Hilfe des Abtasttheorems von Shannon die
erforderliche Mindest-Abtastfrequenz angeben. Das Abtasttheorem soll hier nicht
ausführlich mathematisch hergeleitet, sondern nur kurz dargestellt werden.
Dazu wird von einem bandbegrenzten Signal f(t) mit der höchsten im Signal vorkommenden Signalkreisfrequenz max ausgegangen. In der nachfolgenden Betrachtung wird im Zusammenhang mit der Kreisfrequenz  = 2 f vereinfacht von der
Frequenz gesprochen. Der Gebrauch von der Frequenz f wird vermieden, um eine
Verwechslung mit den Funktionswerten f(kTa) = fk zu verhindern. Bild 9.11 zeigt das
Signal und sein Amplitudenspektrum.
a)
f(t)
0
b)
t
F ( j )
max
max
0

Bild 9.11: zeitkontinuierliches Signal
a) Zeitverlauf
b) Amplitudenspektrum
DSF
97
Krah WS 13/14
f(t)
a)
t = k · Ta
F ( j )
b)
a

max a
a -max
2
Bild 9.12: Abtastsignal
a) zeitlicher Verlauf
a

2
b) Amplitudenspektrum
Im Frequenzspektrum des abgetasteten Signals treten neben dem Originalspektrum,
auch Grundspektrum genannt, zusätzliche höherfrequente Abbilder des Originalspektrums bei nfa auf, die man als Seitenspektren bezeichnet. Dabei enthält das
Grundspektrum die volle Information, obwohl nur wenige Funktionswerte abgetastet
werden (siehe Bild 9.12).
Soll die im ursprünglichen Signal f(t) enthaltene Information nicht verfälscht werden,
so muss die Abtastfrequenz fa mindestens so hoch gewählt werden, dass sich die periodisch wiederkehrenden Seitenspektren nicht mit dem Grundspektrum überlappen.
Aus dieser Überlegung heraus folgt das Shannonsche Abtasttheorem:
Ist f(t) ein bandbegrenztes Signal mit der höchsten im Signal vorkommenden Frequenz max , dann ist f(t) durch sein Abtastsignal f *(t) eindeutig bestimmt, wenn für
die Abtastfrequenz folgendes gilt:
fa  2fmax
(9.10)
,
bzw. für die Abtastzeit:
Ta 
max

1
2 f max
.
(9.11)
Die maximal mögliche Signalfrequenz, die ein Abtastsystem verarbeiten kann,
nennt man Shannon-Frequenz (Nyquist-Frequenz).
s 
DSF
a

2 Ta
(9.12)
98
Krah WS 13/14
Somit liefert das Shannonsche Abtasttheorem eine mindestens erforderliche Abtastfrequenz (Abtastrate) von
a = 2max ,
(9.13)
die im Allgemeinen als Nyquist-Rate bezeichnet wird.
Treten im Frequenzspektrum des zeitkontinuierlichen Signals Anteile oberhalb der
Shannon-Frequenz auf (max > a/2), dann werden diese bei der Abtastung in das ursprüngliche Frequenzband des Originalspektrums zurückgefaltet (siehe Bild 9.13).
Dort überlagern sie bereits vorhandene Signalanteile oder treten als völlig neue Signalfrequenzen auf. Dieses Phänomen wird auch als Überlappung (Aliasing) bezeichnet. In einem solchen Fall wird die ursprüngliche Information verfälscht, und das
zeitkontinuierliche Signal lässt sich nicht mehr aus dem Abtastsignal rekonstruieren.
DSF
99
Krah WS 13/14
9.4 Anti-Aliasing-Filter
Bei einem Anti-Aliasing-Filter handelt es sich um ein Tiefpass-Filter zur Bandbegrenzung der zeitkontinuierlichen Signale. Gemäß dem Abtasttheorem von
Shannon können nur Signalfrequenzen bis zur halben Abtastfrequenz ohne Verlust
der Signalinformation erfasst werden. Dieses Tiefpass-Filter stellt sicher, dass keine
höheren Frequenzen abgetastet werden.
a)
f(t)
t = k·Ta
0
F ( j )
b)
max
max
0

Bild 9.13: Abtastsignal bei Verstoß gegen das Abtasttheorem
a) zeitlicher Verlauf
b) Amplitudenspektrum
Diese meist analoge Vorfilterung mit einem so genannten Anti-Aliasing-Filter muss
in den meisten Fällen durchgeführt werden, da technische Signale im allgemeinen
nicht auf den interessierenden Frequenzbereich bandbegrenzt sind.
DSF
100
Krah WS 13/14
9.5 Rekonstruktions-Filter
Um das ursprüngliche Signal f(t) wieder zurück zu gewinnen, müssen die im Frequenzspektrum des Abtastsignals F*(j) vorhandenen Seitenspektren oberhalb von
max abgeschnitten werden. Dazu benötigt man ein Tiefpass-Filter, ein so genanntes
Rekonstruktionsfilter, das die Signalanteile oberhalb von max ausblendet (siehe Bild
9.13). Praktisch wird durch das Rekonstruktionsfilter aus der Stufenfunktion wieder
ein kontinuierlicher Zeitverlauf. Da ein reales Tiefpass-Filter einen endlich steilen
Verstärkungsabfall aufweist, muss für eine praktische Realisierung die Abtastfrequenz a größer als 2max gewählt werden, um die Seitenspektren vom Grundspektrum sicher trennen zu können. In Audio-Systemen werden hierfür Tiefpassfilter
höherer Ordnung verwendet, um einen möglichst steilen Verlauf des Amplitudengangs zu erhalten. In der Regelungstechnik wird mehr Wert auf eine geringe Phasenverschiebung gelegt. Oft ist die Strecke selbst ein genügend großer Tiefpass.
F * ( j )
-a
-max
Idealer Tiefpass
0
max
a

Bild 9.14: Rekonstruktion des ursprünglichen Originalspektrums mit Hilfe eines
idealen Tiefpass-Filters
Unmittelbar aus den Forderungen, die sich aus dem Abtasttheorem von Shannon ergeben, lässt sich somit ein diskontinuierliches Übertragungssystem für kontinuierliche Signale nach Bild 9.14 angeben.
DSF
101
Krah WS 13/14
Sample-Glied - Ta
Anti-Aliasing-Filter
~
f(t)
~
F(s)
*
f*(t)
f(t)

Hold & Rekonstr. Filter
f(t)

**
F (s)
F(s)
F(s)
Bild 9.15: Diskontinuierliches Übertragungssystem für kontinuierliche Signale
Überträgt man diese Struktur auf den oben beschriebenen Abtastvorgang, so ist die
Forderung nach einem bandbegrenzten Eingangssignal durch das dem Digitalrechner
vorgeschaltete Anti-Aliasing-Filter erfüllt. Aber auch das geforderte Rekonstruktions-Filter, welches das Originalspektrum aus dem periodisch verlaufenden Spektrum
des Abtastsignals herausfiltern soll, ist näherungsweise durch das Halteglied nullter
Ordnung vorhanden. Um dies zu verdeutlichen, wird noch einmal der Frequenzgang
des Haltegliedes nullter Ordnung nach Gleichung (-.12) betrachtet:
Gh ( j )  Ta 
2  sin( Ta / 2)  jTa / 2
e
  Ta
Der Betrag des Frequenzganges ist in Bild 9.16 dargestellt.
Gh  j 
-a

a
2
Kennlinie eines
idealen Tiefpasses
0
a
2
a

Bild 9.16: Betrag des Frequenzganges des Haltegliedes nullter Ordnung im Vergleich zu dem eines idealen Tiefpasses
Der Betrag des Frequenzgangs zeigt zwar nur in grober Näherung Tiefpasscharakter,
doch ist dies für den Fall ausreichend, wenn das Rekonstruktionsfilter zusätzlich hohe
Frequenzen dämpft.
DSF
102
Krah WS 13/14
10 Reale Abtastsysteme
Um die analogen Prozesssignale verarbeiten zu können, müssen diese abgetastet und
digitalisiert werden. Dazu werden aus dem kontinuierlichen Werteverlauf x(t) zu den
Abtastzeitpunkten Messwerte (Abtastwerte) entnommen. Erfolgt die Abtastung zu
äquidistanten Zeitpunkten, also mit einer konstanten Abtastperiode Ta (Abtastfrequenz fa), so entsteht aus der Funktion x(t) ein zeitdiskretes Signal, das durch die
Wertefolge {x(k  Ta)} dargestellt werden kann.
{x(k  Ta)} = { x(0) ; x(Ta) ; x(2  Ta) ; ... ; x(k  Ta) ; ...}
(10.1)
Durch die begrenzte Wortbreite von n-Bit, die ein Digitalrechner zur Verfügung hat,
können die Amplituden nur mit endlich vielen Quantisierungsstufen (m=2n) dargestellt werden. Es entsteht, wie in Bild 10.1 angedeutet, ein amplitudenquantisiertes
und zeitdiskretisiertes Signal, also ein digitales Signal, das mit der Wertefolge {xk}
den Zeitverlauf des Signals beschreibt.
{xk} = { x0 ; x1 ; x2 ; ... ; xk ; ...}
x(t)
(10.2)
{xk}
analog
t
Bild 10.1:
k = t /Ta
0 1
0 Ta
x(t)
digital
Abtasten &
Digitalisieren
t
{xk}
Digitalisieren (Zeit und Wert) eines kontinuierlichen Signals
Der Ausgangsgrößenverlauf wird dann über einen in Software codierten Algorithmus
– G(z) – gebildet. Dazu berechnet der Digitalrechner zyklisch aus der Wertefolge
{xk} die Ausgangsgrößenfolge {yk}. Die berechneten Ausgangsgrößen dienen dann
als Stützwerte, aus denen wieder ein kontinuierliches Stellsignal gebildet wird. Dies
erfolgt am einfachsten dadurch, dass man einen ermittelten Stützwert über die gesamte Abtastperiode Ta speichert bis der nächste Wert zur Verfügung steht. So wird aus
der Stellgrößenfolge {yk}, wie in Bild 10.2 gezeigt, eine Treppen- oder Stufenfunktion erzeugt, die mit y (t ) bezeichnet werden soll.
DSF
103
Krah WS 13/14
{yk}
Ta
0 1
y(kTa)
t
Speichern
Bild 10.2:
Umwandlung eines digitalen Signals in eine Stufenfunktion (Halteglied)
Bild 10.3:
Äquivalentes Blockschaltbild eines Abtastsystems
Der Vorgang des Abtastens mit anschließendem Speichern lässt sich dann durch ein
neues Übertragungsglied – das Abtast-Halte-Glied – beschreiben. Es ist demnach in
erster Linie ein aus der theoretischen Betrachtung entstandenes Übertragungsglied.
Zwar lässt sich ein solches auch verwirklichen, doch sei in diesem Zusammenhang
auf die oben angeführte Beschreibung des Abtastsystems verwiesen.
[1, 2, 3, 5, 10, 12, 13].
DSF
104
Krah WS 13/14
10.1 Zeitverhalten eines Abtastsystems
x(t)
u(t)
S&H
Filter
xk
x (t )
ADC
yk
Algori.
y (t )
DAC
Filter
im ADC
a)
S&H
ADC
Algori.
DAC
y (t )
0
x(t)
u(t)
Filter
t
Ta
x(t-Tt)
e sTt
Quantisierungsy (t ) rauschen
x (t )
S&H
Algori.
Filter
e sTt
S&H
Algori.
b)
y (t )
0
Bild 10.4:
t
Ta
Zeitverhalten der digitalen Signalverarbeitung
a) Reales System
b) Mathematisches Ersatzsystem
Die Halteeigenschaft des DAC (Ta) dominiert.
Die AD / DA Wandlung wird nur noch als Quantisierungsrauschen berücksichtigt.
Das Abtasten und die Berechnung des Algorithmus erfolgen unendlich schnell.
DSF
105
Krah WS 13/14
10.2 Aufbau eines prozessorbasierten Systems: µC, DSP und IPC
Interface
PC-Bus
Zur prozessorbasierten digitalen Signalverarbeitung werden Mikrocontroller (µC),
Digitale Signalprozessoren (DSP) und Industrie-PCs (IPC) eingesetzt. Im Folgenden
wird ein kurzer Überblick über den prinzipiellen schaltungstechnischen Aufbau eines
digitalen Systems gegeben, um zu einem für die Signalverarbeitung wesentlichen
Blockschaltbild des Abtastsystems zu kommen.
Bild 10.5: Prinzipieller Aufbau einer digitalen Signalverarbeitung mit einem IPC
Der Trend zur dezentralen Struktur in der Prozessautomatisierung hat zu einer Vielfalt von unterschiedlichsten Prozessrechnern geführt. Dies ist vor allem durch die
schnelle Entwicklung der Mikroelektronik und der damit verbundenen Integration
von Halbleiterbauelementen zu begründen. So lassen sich DDC-Systeme auch mit
IPCs aufbauen, Bild 10.5. Dabei ermöglicht deren hohe Rechenleistung zusätzlich
den Einsatz von Software-Werkzeugen, sog. CAE-Paketen (CAE, Computer-Aided
Engineering). Diese unterstützen den Ingenieur in allen Entwurfsphasen, von der
Modellbildung bis zur Erprobung und Simulation von Systemen.
Damit der PC die Signale erfassen und Ausgangssignale erzeugen kann, benötigt er
eine zusätzliche Schnittstelle. Eine beispielhafte Darstellung einer solchen Ein/Ausgabekarte (I/O-Interface) ist in Bild 10.6 mit den wichtigen Komponenten wiedergegeben.
DSF
106
Krah WS 13/14
Filter
Analoge
S&H
Filter
ADC
MUX
Eingänge
Interface
Filter
Steuereinheit
DAC #1
DAC #2
Analoge
Ausgänge
BUS - Buffer
DAC #n
PC - BUS
Bild 10.6: Ein-/Ausgabekarte (I/O-Interface)
Um mehrere Messgrößen zu erfassen, benötigt der Digitalrechner wegen seiner sequentiellen Arbeitsweise einen Messstellenumschalter. Dadurch lassen sich die Eingangssignale in einer zeitlich festgelegten Reihenfolge dem PC zuführen.
Mikrocontroller
Mikrocontroller (auch µController, µC, MCU) sind Ein-Chip-Computersysteme, bei
welchen nahezu sämtliche Komponenten (wie z. B.: der Prozessor (Central Processing Unit, CPU), der Programmspeicher (meist auf Read-Only-Memory- (ROM-) oder Flash-Basis), der Arbeitsspeicher (auf Static Random Access Memory-Basis
(SRAM)), Ein-/Ausgabe-Schnittstellen) auf einem einzigen Chip (Integrierter Schaltkreis) untergebracht sind. Auf modernen Mikrocontrollern finden sich häufig auch
speziellere Peripherieblöcke wie z. B.:
Taktgeneratoren,
EEPROM-Speicher (Electrically Erasable Programmable Read Only Memory),
CAN (Controller Area Network),
LIN (Local Interconnect Network),
USB (Universal Serial Bus),
I²C (Inter-Integrated Circuit),
SPI (Serial Peripheral Interface),
serielle bzw. Ethernet-Schnittstellen,
LCD-Controller und -treiber und
DSF
107
Krah WS 13/14
hochauflösende Analog-Digital-Wandler (mit 10 bis 12 Bit Auflösung und bis zu 16
Kanälen).
Bild 10.7: PIC18F8720 Mikrocontroller in einem 80-pin TQFP-Gehäuse
Einsatzbereiche
Diese Form eines Computers tritt in Gestalt von eingebetteten Systemen im Alltag oft
unbemerkt in technischen Gebrauchsartikeln auf, zum Beispiel in Waschmaschinen,
Chipkarten (Geld-, Telefonkarten), Unterhaltungselektronik (Videorekordern,
CD/DVD-Playern, Radios, Fernsehgeräten, Fernbedienungen), Büroelektronik, Kraftfahrzeugen (ABS, Airbag, Motorsteuerung, ESP usw.), Mobiltelefonen und sogar in
Uhren und Armbanduhren. Darüber hinaus sind sie in vielen ComputerPeripheriegeräten enthalten (Tastatur, Maus, Drucker, Monitore, Scanner uvm.).
Mikrocontroller sind meist anspruchslos im Energiebedarf und in der Serienfertigung
äußerst preiswert herzustellen. Dieses ist auf die hohen Stückzahlen, meist eher geringen Taktfrequenzen von bis zu 100 Megahertz und auf die im Vergleich zu leistungsstarken Mikroprozessoren geringere Komplexität zurückzuführen.
Abgrenzung zu Mikroprozessoren
Die Grenze zwischen Microcontrollern und Mikroprozessoren ist mehr oder weniger
fließend, was sich auch darin zeigt, dass oft nach einiger Zeit auch MikrocontrollerVarianten einer neuen Mikroprozessor-Architektur erschienen sind. Im einfachsten
Fall geschieht dies, indem die bei einem klassischen Mikroprozessor als Unterstützungs- und Peripheriebausteine realisierten Komponenten wie Takt- und ResetErzeugung, Interruptcontroller, Zeitgeber, Schnittstellenbaustein und zum Teil auch
Speichercontroller in den Chip selbst integriert werden, so dass für ein funktionsfähiges Prozessorsystem oft nur noch ein Quarz (für den Takt) und Speicherbausteine
nötig sind. Typische Vertreter dieser Gattung sind z. B. der 80186 von Intel (vom
8086 abgeleitet), die ARM-Familie sowie ColdFire (MC680xx) von Freescale (vormals Motorola). Diese Controller-Baureihen werden oft auch noch dann weitergeführt, wenn die betreffende Mainstream-CPU schon längst nicht mehr produziert
wird. Die Hardware solcher um Peripheriebausteine ergänzter Prozessorkerne ist
manchmal in Form eines Multi Chip Modules (MCM) realisiert.
DSF
108
Krah WS 13/14
Dem gegenüber gibt es aber auch „klassische“ Microcontrollerarchitekturen, die von
Anfang an nicht als reines Mikroprozessorsystem gedacht waren, sondern primär auf
Steuerungsaufgaben gezielt haben. Diese zeichnen sich z. B. dadurch aus, dass mit
ihnen auch ein Single-Chip-Betrieb völlig ohne externe Speicherbausteine möglich
ist, ebenso wie der Befehlssatz der CPU meist spezialisierte Befehle für das Steuern
einzelner Signalleitungen (mittels sogenannter Bitmanipulationen) bietet. Ebenfalls
wichtig ist für solche Controller eine möglichst kurze Interrupt-Latenzzeit, also die
Zeitspanne, die der Controller braucht, um auf die Unterbrechungsanforderung einer
Signalquelle (Zeitgeber, Peripheriebaustein etc.) zu reagieren. Typische Vertreter dieser Gattung sind z. B. der 8051 von Intel sowie der C166 von Siemens (heute Infineon) und TriCore von Infineon.
Architekturen
Die Anzahl der verbauten Mikrocontroller überschreitet bei weitem die Geräte, die
man sich unter einem Computer eigentlich vorstellt. Die überwiegende Mehrzahl der
verwendeten Mikrocontroller basiert auf 8-Bit-Prozessoren, deren grundlegende Architektur teilweise noch aus der ersten Hälfte der 1970er Jahre stammt. Es gibt jedoch
auch 4-, 16- und 32-Bit-Mikrocontroller, wobei die 32- und 16-Bitter mittlerweile
mengenmäßig zu den 8-Bittern aufholen. Praktisch gibt es zu jedem Mikroprozessor
mehr als ein Pendant bei den Mikrocontrollern. Außerdem gibt es Mikrocontroller,
die keinem Mikroprozessor nachgefolgt sind, wie Atmel AVR, PIC-Mikrocontroller
oder TI MSP430, Infineon TriCore, (X)C16x und viele weitere.
Benutzte Programm-Speicher
Für Hobbyanwendungen, bei Stückzahlen bis zu einigen tausend pro Jahr und bei Anforderungen nach hoher Flexibilität (z. B. wegen geplanter nachträglicher Programmupdates) werden Mikrocontroller mit Programmspeicher in Flash- oder
EEPROM-Technologie eingesetzt. Für größere Stückzahlen, d. h. im Bereich von
mehr als einigen tausend pro Jahr, werden dagegen zumeist maskenprogrammierte
Mikrocontroller eingesetzt. Der einzelne Mikrocontroller ist hierbei preisgünstiger,
jedoch entstehen Initialkosten für die Herstellung einer Maske mit dem jeweiligen
Programmcode, die dann auch nicht mehr geändert werden kann, das heißt, man hat
dann einen Mikrocontroller mit einem festen Programm im (internen) ROM. Des
Weiteren gibt es Mikrocontroller, deren Programm in einem EPROM (Eraseable Programmable Read Only Memory) abgelegt wird. Das erforderliche Quarzglas-Fenster
verteuert das Gehäuse und verlangt zum Löschen etwa 20 Minuten lang stark ozonbildende UV-C-Strahlung. EPROM-Typen sind daher fast vollständig durch funktionsgleiche Flash-basierte Mikrocontroller ersetzt worden.
Typische Speichergrößen heutiger Mikrocontroller liegen zwischen 1 KB und 1 MB
für das Programm und zwischen 32 Bytes und 48 KB für die Daten. Viele Modelle
können aber auch wesentlich größeren externen Speicher ansprechen.
DSF
109
Krah WS 13/14
Programmierung
Mikrocontroller werden meist in der Programmiersprache C oder C++ programmiert.
Andere Sprachen werden seltener eingesetzt. Zur Funktionsüberwachung von Mikrocontrollersteuerungen werden in der Regel so genannte Watchdog-Schaltungen eingesetzt, die teilweise aber auch schon in den Mikrocontroller integriert sind.
DSP
Flaschenhals -> Prozessorbus
10.3 Aufbau eines FPGA basierten Signalverarbeitungssystems
Alles parallel, schnell, -> viel I/O
DSF
110
Krah WS 13/14
11 Digitale Filter
Bei der Synthese von Digitalfiltern greift man meist auf die umfangreichen Erfahrungen und Algorithmen zur Synthese von Analogfiltern zurück. Die berechneten Analogfilter können dann durch geeignete Transformation in Digitalfilter überführt werden. Dabei muss berücksichtigt werden, dass in Abtastsystemen der relevante Frequenzbereich durch die gewählte Abtastfrequenz fa begrenzt ist. In diesem Kapitel
werden die Eigenschaften von Digitalfiltern bei der Verarbeitung abgetasteter Signale
betrachtet. Der Abtast-Halte-Vorgang (Kapitel 9) eines Systems wird hier nicht explizit betrachtet.
uk
G(z)
xk
Bild 11.1: Filterung der Eingangsfolge {uk} mit einem Digitalfilter mit der Übertragungsfunktion G(z) zur Ausgangsfolge {xk}
11.1 Nichtrekursive Digitalfilter (FIR)
Nichtrekursive Digitalfilter werden in der deutschsprachigen Literatur auch als
Transversalfilter und in der angelsächsischen Literatur als Finite Impulse Response
Filter oder kurz FIR-Filter bezeichnet (→ endliche Impulsantwort). Die Ausgangsfolge {xk} eines FIR-Filters berechnet sich ausschließlich aus der Eingangsfolge {uk}.
Eine Rückführung der Ausgangsfolge findet nicht statt (→ nicht rekursiv). Deshalb
sind FIR-Filter immer stabil.
xk  b0  u k  b1  u k-1  b2  u k-2    bm  u k-m
m
(11.1)
xk   bi  u k i
i 0
Es gibt eine einfache und anschauliche Möglichkeit, um die Koeffizienten eines FIRFilters zu berechnen. Wird auf ein Filter ein Einheitsimpuls k gegeben, so erscheint
am Ausgang eine Impulsantwort. Die Werte dieser Impulsantwort entsprechen genau
den gesuchten Filterkoeffizienten bi . In der Praxis wird aber üblicherweise nicht die
Impulsantwort sondern der Frequenzgang des Filters vorgegeben. Mit der Diskreten
Fourier-Transformation (DFT) kann aus dem Frequenzgang direkt die Impulsantwort
berechnet werden. Als Beispiel soll mit einem FIR-Filter (näherungsweise) ein idealer Tiefpass realisiert werden.
DSF
111
Krah WS 13/14
H(f )
1
fg
-fg
Ti 
1
2  fg
ht 
h0 
1
Ti
-Ti
f
sin 2  f g  t 
2  fg  t
2∙Ti
t
Ta
fg  14  fS  Ti  4  Ta
Bild 11.2: Die Fourier-Transformation liefert aus dem vorgegebenen Frequenzgang (oben) die FIR-Koeffizienten (unten)
Die Funktion der Impulsantwort ist vom sin(x)/x (Sinc) Typ und besitzt an der Stelle
Null den Grenzwert 1,0 . Die Anzahl der Filterschritte (m+1), oft auch Taps genannt,
ist aus Symmetriegründen meist ungerade. Weil in der Praxis nur endlich viele Koeffizienten verwendet werden können, wird der ideale Frequenzgang nur näherungsweise erreicht:
 Der Übergang vom Durchlass- in den Sperrbereich erfolgt stetig, also mit einer
endlich steilen Flanke. Je mehr Koeffizienten verwendet werden, umso steiler ist
die Flanke.
 Im Durchlass- wie im Sperrbereich ergeben sich „Ripple“ (Welligkeit).
Dieses „Abschneiden“ von Koeffizienten bewirkt ein Überschwingen des Frequenzgangs kurz vor dem Übergang vom Durchlassbereich in den Sperrbereich. Dieses
Überschwingen wird in der Nachrichtentechnik als Gibbs´sches Phänomen bezeichnet. Durch eine „Fensterung“ (Windowing) kann dieser sehr störende Einfluss verringert oder sogar beseitigt werden. Fenster sind bestimmte Funktionen, mit denen die
Fourier-Koeffizienten (bzw. Filterkoeffizienten) multipliziert werden, um die nur
endliche Anzahl von Koeffizienten auszugleichen. Sehr gebräuchlich ist das Hamming-Window:
 2

HWk  0,54  0,46  cos
k
 m 1 
DSF
112
(11.2)
Krah WS 13/14
Alternativ werden z.B. auch Hann, Tukey, Cosinus, Blackman, Gauss und Kaiser
Window verwendet.
Ein solches FIR-Filter weist (näherungsweise) den gewünschten Frequenzgang auf
und verursacht keine Phasenverschiebung. Leider ist es so jedoch nur eingeschränkt
realisierbar, da zur Berechnung von der Ausgangsfolge {xk} auch der zukünftige Verlauf von der Eingangsfolge {uk} bekannt sein muss. Bei der Off-line Bearbeitung von
Signalverläufen ist das keine Beschränkung. Bei der On-Line Berechnung kann das
jedoch nur durch ein Verzögern der Eingangsfolge erreicht werden. Diese Verzögerung (Totzeit) bewirkt den für FIR-Filter charakteristischen linearen Phasengang,
Bild 11.3.
bk
1
m
k=t/Ta
Bild 11.3: Koeffizienten eines angenäherten idealen Tiefpass-FIR-Filters
Tt = 7 · Ta (Symmetrieachse)
Beispiel:
Bei einem Transversalfilter mit m = 1 , b0 = 0,5 , b1 = 0,5 sollen Phasengang und
Amplitudengang berechnet werden:
Gz   b0  b1  z 1
Mit z 1  e  sTa und s = j ergibt sich
G j   b0  b1  e  jTa .

G j   e  jTa / 2 b0  e  jTa / 2  b1  e  jTa / 2

Mit den vorgegebenen Koeffizienten b0 = b = 0,5 ergibt sich
G j   e  jTa / 2  cosTa / 2
( Phase)
( Amplitude)
Jetzt ist ersichtlich, dass diese Berechnung eines „gleitenden Mittelwertes“ einen linearen Phasengang ( = -·Ta / 2) aufweist und der Amplitudengang kosinusförmig
verläuft mit dem ersten Nulldurchgang bei Shannonfrequenz.
DSF
113
Krah WS 13/14
11.2 Realisierung nicht rekursiver Filter
Es ist leicht ersichtlich, dass ein FIR-Filter schnell sehr viele Koeffizienten benötigt
und damit auch viel Rechenleistung erfordert, Bild 11.4. Andererseits besitzt es den
Vorteil, dass eine beliebige Impulsantwort vorgegeben werden kann und immer stabil
ist.
uk
z
b0
-1
uk-1
z
-1
b1
uk-2
b2
z
-1
uk-3
b3
xk
Bild 11.4: Blockschaltbild eines FIR-Filters (Transversalfilter) mit m = 3
Standardform / Direktform geeignet zur Implementierung auf einem DSP
mit MAC (Multiply ACcumulate)
Ein nicht rekursives Filter kann mit einem Digitalrechner sehr leicht programmiert
werden. Bei digitalen Signalprozessoren wird die Ausgangsgröße xn durch aufaddieren (akkumulieren) der einzelnen Produkte (ui ∙ bi) in einem Akkumulator gebildet.
Durch eine Erhöhung der Ordnung (mehr Koeffizienten) erhöht sich nahezu proportional die notwendige Verarbeitungszeit des Prozessors.
double u0,u1,u2,u3;
const double b0 = ...
const double b1 = ...
const double b2 = ...
const double b3 = ...
double x ;
for ( k=0; ;k++ ) {
u3 = u2 ;
u2 = u1 ;
u1 = u0 ;
u0 = ADC_Input() ;
x = u0 * b0 +
u1 * b1 +
u2 * b2 +
u3 * b3 ;
DAC_Output(x) ;
}
;
;
;
;
//
//
//
//
//
//
//
//
Eingangsfolge
Koeffizient
Koeffizient
Koeffizient
Koeffizient
Ausgangsfolge
Schleife zur Berechnung
Verzögerung von un
// Neues (k’tes) u einlesen
// Neues (k’tes) x ausgeben
// Ende der Schleife
„C“ Programm eine FIR-Filters
DSF
114
Krah WS 13/14
uk
b3
b2
xA
xB
z-1
b0
b1
z-1
xC
z-1
xk
Bild 11.5: Blockschaltbild eines FIR-Filters (Transversalfilter) mit m = 3
in transponierter Form geeignet zur Implementierung in einem FPGA
Der in Bild 11.5 dargestellte Signalflussplan ist gut geeignet zur Implementierung in
einem FPGA – insbesondere bei hohen Datenraten. In dieser Darstellung ist die Berechnung besser parallelisierbar, weil Teile des Algorithmus (VHDL Zeilen) durch
die Verzögerungsglieder (z-1) entkoppelt werden. Insbesondere bei FIR-Filtern hoher
Ordnung kann das ein entscheidendes Kriterium sein. Durch eine Erhöhung der Ordnung (mehr Koeffizienten) erhöhen sich nahezu proportional die notwendigen Ressourcen des FPGAs (Logikelemente / DSP-Blöcke).
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity FIR is
port (
clk
reset
clk_en
u
b0,b1,b2,b3
x
);
end entity;
:
:
:
:
:
:
in
in
in
in
in
out
std_logic
std_logic
std_logic
signed(15
signed(15
signed(31
;
;
;
downto 0) ;
downto 0) ;
downto 0)
-- Filter clock
-----
Clock enable
Input
Koeffizienten
Output
architecture rtl of FIR is
signal xa,xb,xc : signed(31 downto 0) ;
begin
process(reset, clk) is
begin
if( reset = '1') then
-- Asynchronous Reset Statements
elsif( rising_edge(clk)) the
-- clk Synchronous Statements
if ( clk_en = '1') then –- Filter langsamer takten?
xa <=
u * b3 ; -- Signale, keine Variablen!
xb <= xa + u * b2 ;
xc <= xb + u * b1 ;
x <= xc + u * b0 ;
end if;
end if;
end process;
end rtl;
„VHDL“ Programm eines FIR-Filters in transponierter Form
DSF
115
Krah WS 13/14
Vorteile von nicht rekursiven (FIR) Filtern:
 Linearer Phasengang
𝜔
 Die Werte dieser Impulsantwort entsprechen genau den Filterkoeffizienten bi
 Können über eine DFT für nahezu jeden Frequenzgang entworfen werden
 Besitzen immer eine Bounded-Input-Bounded-Output (BIBO) Stabilität
 Robust gegenüber Quantisierungsfehlern bei der Berechnung von FestkommaKoeffizienten
Nachteile von nicht rekursiven (FIR) Filtern:
 Benötigen oft eine sehr hohe Ordnung und dadurch eine hohe Rechenleistung /
-zeit (DSP) bzw. viele Ressourcen (FPGA)
 Oft ist das Entwurfsverfahren komplex (meist Off-Line)
11.3 Rekursive Digitalfilter (IIR)
Wenn man zusätzlich zu der Eingangsfolge {uk} auch noch (alte) Werte der Ausgangsfolge {xk} für die Berechnung des aktuellen Wertes heranzieht (→ Rekursiv),
spricht man von einem rekursiven Digitalfilter. In der angelsächsischen Literatur
werden rekursive Digitalfilter als Infinite Impulse Response Filter oder kurz IIRFilter bezeichnet, Bild 11.6.
uk
uk-2
uk-1
z
-1
b0
z
-1
b1
uk-3
z
-1
b3
b2
xk
a3
-
-
a2
a1
z-1
xk-3
z-1
xk-2
xk-1
z-1
Bild 11.6: Schema der Berechnung eines IIR-Filter (Rekursiv) mit
m = n = 3 und a0 = 1 Standardform / Direktform geeignet zur Implementierung auf einem DSP mit MAC
Beschränkt man sich auf IIR-Filter 1. und 2. Ordnung, so kann man zur Digitalfiltersynthese die notwendigen Koeffizienten auch ohne Umweg über Analogfilter
und Bilinear-Transformation mit Hilfe von tabellarischen Formeln bestimmen.
DSF
116
Krah WS 13/14
Vorteile von rekursiven (IIR) Filtern:
 Oft wird nur eine geringe Ordnung benötigt. Deshalb wird nur eine geringe
Rechenleistung / -zeit benötigt (DSP) bzw. nur wenig Ressourcen (FPGA).
 Können ähnlich den klassischen (zeitkontinuierlichen) Filtern entworfen werden.
Nachteile von rekursiven (IIR) Filtern:
 Der Phasengang ist im Durchlassbereich (wie bei zeitkontinuierlichen Filtern)
üblicherweise nichtlinear.
 IIR-Filter können durch falsche Auslegung und durch die Quantisierung der
Koeffizienten instabil werden.
 IIR-Filter weisen üblicherweise bei Realisierung in Fixed-Point Arithmetik ein
stärkeres Quantisierungsrauschen auf.
DSF
117
Krah WS 13/14
11.3.1
Rekursives Digitalfilter erster Ordnung
Das sicherlich bekannteste Digitalfilter ist der Tiefpass erster Ordnung. Die Eingangsfolge {uk} soll mit der Tiefpass-Übertragungsfunktion G(z) zur Ausgangsfolge
{xk} gefiltert werden.
Die (kontinuierliche) Übergangsfunktion eines Tiefpasses erster Ordnung lautet:
G s  
1
1
1


1  s  1  s 1  s
g
2  fg
.
(
)
(11.3)
Entsprechend ergibt sich im Zeitbereich die in Bild 11.7 gezeigte Übergangsfunktion
(Sprungantwort), bei der idealer Weise alle Werte der Ausgangsfolge auf der Kurve
liegen:
h(t)
1
ht   1  e

t

b1
Ta 
t
Bild 11.7: Übergangsfunktion (Sprungantwort) eines Tiefpasses erster Ordnung
Durch den Ansatz einer Differenzengleichung zur Berechnung von y1 ergibt sich der
Koeffizient b1:
x0  b0  u0
x1  b0  u1  b1  u0
(
b1  1  e

)
(11.4)
Ta

; b0 = 0
Wenn Ta wesentlich kleiner als  ist, kann folgende Näherung benutzt werden:
b1
DSF

Ta

mit
e x  1  x für
118
x  1
Krah WS 13/14
Durch Koeffizientenvergleich mit der allgemeinen Differenzengleichung ergibt sich:
xk  a1  xk1  b0  uk  b1  uk-1
a1
 b1  1  e

Ta

(11.5)
 
b1  z 1
1     z 1
GTP1 z  

1
1  a1  z
1    z 1
(11.6)
In der Praxis wird Gleichung (11.4) oft verwendet, da nur eine Multiplikation erforderlich ist, und weil sich diese Version besonders gut in Festkommaarithmetik realisieren lässt. Oft wird statt xn-1 der unverzögerte Wert xn verwendet (b0 statt b1),
was einer Verschiebung entspricht. Das vermindert die Phasenverschiebung des Filters, was insbesondere in der Regelungstechnik oft erwünscht ist.
G( j2  f )
0
S&H
-10 dB
digital
-20
-30
analog
argG( j2  f )
1
10
100 Hz
fS
1000
digital b0
-30°
-60°
digital mit
S&H
-90°
analog
Bild 11.8: Vergleich von Amplitudengang und Phasengang eines digitalen Tiefpasses erster Ordnung mit und ohne S&H mit einem analogen Tiefpass
Ta = 1ms, fg = 25 Hz
DSF
119
Krah WS 13/14
f
Beispiel: Tiefpass erster Ordnung (PT1)
Filterzeitkonstante:
 = 20 ms
Abtastzeit:
Ta = 250 s = 0,25 ms
b0
a1
 1 e

Ta

1 e
 b0  1   e

0, 25
20

0, 25
20
 0,0124
(oder b1)
 0,9876
Die z-Übertragungsfunktion von einem Hochpass erster Ordnung lässt sich jetzt
leicht aus der z-Übertragungsfunktion des Tiefpasses berechnen. Die Koeffizienten
des Tiefpasses sind hier zu Unterscheidung mit einer Schlangenlinie gekennzeichnet:
~
GHP1z   1  GTP1 z 
~
~
b0  b1  z 1
b0
1  b0  a~1  z 1
GHP1z  
 1  ~ 1 
1  a1  z 1
1  a1  z
1  a~1  z 1
(11.7)
Durch Koeffizientenvergleich ergibt sich:
Ta

a1  a~1   e   
Ta

b1  a~1   e 


(11.8)
T
 a
~
b0  1  b0  e   
    z 1
GHP 1 z  
1    z 1
Auch beim digitalen Hochpass erster Ordnung lässt sich der Algorithmus zur Verarbeitung vereinfachen: (wirkt wie die AC-Taste am Oszilloskop)
xn  a1  xn1  b0  un  b1  un-1

Ta

 xn 1  e

Ta
 xn 1  un  un-1 
xn  e
xn  e
DSF


Ta

 un  e

Ta

 un-1
(11.9)
120
Krah WS 13/14
Phasenkorrekturglied erster Ordnung (PD-T1):
In der Regelungstechnik werden oft Phasenkorrekturglieder statt eines Tiefpasses
eingesetzt. Bei einem Phasenkorrekturglied werden Frequenzen deutlich oberhalb der
Grenzfrequenz um einen Faktor  gedämpft (oder verstärkt). Oft reicht diese Dämpfung aus. Die Phasenverschiebung wird im Bereich konstanter Verstärkung zu Null,
was oft die Stabilität des Systems verbessert. Mit  > 1 wird aus dem Phasenkorrekturglied ein Phasenanhebendes (Phase-Lead) Korrekturglied:
Gs  
1  s
1
s


1  s 1  s
1  s
(11.10)
Mit
=0
wird aus dem Phasenkorrekturglied ein Tiefpass,
0<<1
ergibt sich ein Phasenabsenkendes (Phase-Lag) Korrekturglied,
=1
werden weder Phase noch Amplitude verändert (G(s) = 1) und bei
>1
ergibt sich ein Phasenanhebendes (Phase-Lead) Korrekturglied.
Die Koeffizienten werden aus den vorhergehend hergeleiteten (digitaler Tiefpass
bzw. Hochpass) berechnet:
a1
b0
 e


Ta

Ta

Ta
 
1 e
1 e
b1

 e

Ta
 

(11.11)
 b0
Beispiel:
Zeitkonstante
 = 1 ms
Bypass
 = 0,15
Abstastzeit (Zykluszeit)
Ta = 62,5 s
a1
DSF
 e

0, 0625
1
 0,9394
oder
121
Krah WS 13/14
b0

1 e
1 e
b1
Filter
Tiefpass
auch b1
statt b0
 e


0, 0625
1

0, 0625
0,15
0, 0625
0,15
 0,1778
 b0  0,1172
Übertragungsfunktion G(z)
b0
1  a1  z 1
Algorithmus
X(z) = G(z) • U(z)
xk  xk 1  b0  (uk  xk 1 )
ai , bi
a1
b0
a1
Hochpass
b0 b1z 1
1  a1  z 1
 e
 e
1
b0 b1z
1  a1  z 1
xk = – a1  xk-1 +
b0  uk + b1  uk-1
b0

e
Ta



Ta


Ta

Ta
 
1 e
1 e
b1
 e




Ta
Ta
Ta
 e



b1   e
Phasenkorrekturglied

 1 e
xk  b0  xk 1  uk  uk-1  b0 
a1
Ta

Ta
 

 b0
Tabelle 11.9: Übersicht Digitalfilter erster Ordnung und ihrer Parameter
DSF
122
Krah WS 13/14
11.3.2 Rekursives Digitalfilter zweiter Ordnung
Mit der in Bild 11.10 gezeigten universellen Struktur zweiter Ordnung kann durch
Konfiguration der fünf Parameter (a1 , a2 , b0 , b1 , b2 ) festgelegt werden, ob das Digitalfilter sich wie ein
 Tiefpass (1. oder 2. Ordnung),
 Hochpass (1. oder 2. Ordnung),
 Bandpass,
 Bandsperre oder wie ein
 Phasenkorrekturglied (1. oder 2. Ordnung)
verhalten soll. Bei einem Filter 1. Ordnung werden die Koeffizienten a2 und b2 identisch Null. Man nennt diese universelle Struktur zweiter Ordnung auch Biquad.
uk
z
uk-1
-1
b
0
z
-1
b
uk-2
b
xn
-
-
a
a
z-1
z-1
xk-2
xk-1
Bild 11.10: Berechnung eines IIR-Filters (Rekursiv) mit m = n = 2 (Biquad)
Zur Realisierung eines Tiefpasses zweiter Ordnung
G s  
1
2
g
K
s
1
g2
, g  2 f g
s
2
werden die fünf Koeffizienten aus den Parametern Grenzfrequenz fg , Dämpfungsgrad
 (Theta) und Abtastzeit Ta wie folgt berechnet:
DSF
123
Krah WS 13/14
a2 
1    sin 2  f g  Ta 
1    sin 2  f g  Ta 
a1  1  a2 cos 2  f g  Ta 
1  a1  a2
b0  b2  K 
4
b1  2  b0
(11.12)
(sin(..) und cos(..) in Radiant)
Mit Anwendung des Endwertsatzes folgt
lim hk 
k 
b0  b1  b2
K .
1  a1  a2
Bei einem Hochpass zweiter Ordnung
K  s2
Gs   2
g  2 g s  s 2
, g  2 f g
sind die Koeffizienten des Nenners identisch mit denen des Tiefpasses. Die ZählerKoeffizienten b0 , b1 und b2 berechnen sich wie folgt:
a2 
1    sin 2  f g  Ta 
1    sin 2  f g  Ta 
a1  1  a2 cos 2  f g  Ta 
1  a1  a2
b0  b2  K 
4
b1  2  b0
(11.13)
Wenn die Grenzfrequenz wesentlich kleiner als die Shannonfrequenz ist, geht a2 gegen 1 und a1 gegen -2. Mit Anwendung des Anfangswertsatzes folgt
lim hk  b0  K 
k 0
DSF
1  a1  a2
1   2  1
K
K .
4
4
124
Krah WS 13/14
Der Bandpass ist charakterisiert durch seine Mittenfrequenz f0 , bei der die Verstärkung mit 1 ihr Maximum erreicht, und durch die Güte Q, welche die Steilheit des Filters bestimmt.
Die Filterkoeffizienten lassen sich mit folgenden Formeln berechnen:
 f 0  Ta
Q
a2 
 f 0  Ta
1  tan
Q
a1  1  a2  cos 2  f 0  Ta 
1  tan
(11.14)
1  a2
b0  K 
2
b1  0
b2  b0
Die Bandsperre (Notch-Filter) filtert Frequenzanteile bei der Mittenfrequenz f0 vollständig heraus.
Die Filterkoeffizienten werden mit folgenden Formeln berechnet:
 f 0  Ta
Q
a2 
 f 0  Ta
1  tan
Q
1  a2
b0  b2 
2
a1  2  b0  cos2  f 0  Ta 
b1  a1
1  tan
DSF
(11.15)
125
Krah WS 13/14
Phasenkorrekturglied zweiter Ordnung
In der Literatur findet man diesen Filtertyp auch als Cauer-Filter oder als Elliptischen
Filter. Phasenkorrekturglieder zweiter Ordnung werden in der Antriebsregelung (Motion Control) benutzt, um das Abkoppeln des Lastträgheitsmomentes eines Zweimassenschwingers zu kompensieren. Im Nenner erkennt man sofort den Tiefpass zweiter
Ordnung (mit konjugiert komplexen Polen), der hier im Zähler zusätzlich mit einem
„inversen Tiefpass“ (1/x) ähnlich einem Hochpass ergänzt wird (mit konjugiert komplexen Nullstellen). Parametriert werden Dämpfungsgrad und Grenzfrequenz von
Zähler (Hochpass = Nullstellen) und Nenner (Tiefpass = Pole). Die Übertragungsfunktion des allgemeinen Bi-Quad 2-ter Ordnung lautet:
G s  
1
2HP
s
1
s2
HP

2
1
1  TP s  2 s 2
TP
TP
2
HP
Hier berechnen sich die Koeffizienten wie folgt:

 2  e TP TP Ta  cosh  2  1    T
TP
TP
a


a1  
 2  e TP TP Ta  cos 1   2    T
TP
TP
a





für TP  1
für TP  1
a2  e 2TPTP Ta
~
b0  1

 2  e HPHP Ta  cosh  2  1    T
HP
HP
a
~ 
b1  
 2  e HPHP Ta  cos 1   2    T
HP
HP
a




für HP  1
für HP  1
~
b2  e 2HPHP Ta
Die Skalierung der Zählerkoeffizienten erfolgt mit dem Endwertsatz der
z-Transformation:
~ 1 a  a
bi  K  bi  ~ ~1 ~2
i 0,1, 2
b0  b1  b2
DSF
126
Krah WS 13/14
+10
0
F  
- 17 dB
-20
265 Hz
-30 dB
38 Hz
- 34 dB
-40

0
-90
-180
-270°
1
10
100
f
1 k Hz
10 k
Bild 11.11: Bode-Diagramm von Phasenkorrekturgliedern 1. und 2. Ordnung
fTP = 38 Hz, fHP = 265 Hz und HP = LP = 0,5
Beispiel Bi-Quad:
Tiefpass-Eckfrequenz:
fTP = 100 Hz (TP = 628,32 1/s)
Tiefpass-Dämpfungsgrad:
TP 
Abtastzeit:
Ta = 0,25 ms
1
2
a0  1
a1  2  0,8949  0,9938  1,7787
a2  0,8008
Hochpass-Eckfrequenz:
fHP = 200 Hz (HP = 1256,64 1/s)
Hochpass-Dämpfungsgrad:
HP 
1
2
~
b0  1
~
b1  2  0,8008  0,9754  1,5623
DSF
127
Krah WS 13/14
~
b2  0,6413
Skalieren von bi :
b0  1 
0,0221
 0,2797
0,0790
b1  1,5623 
b2  0,6413 
DSF
0,0221
 0,4370
0,0790
0,0221
 0,1794
0,0790
128
Krah WS 13/14
11.4 Digitale Filter höherer Ordnung
Werden mehrere FIR-Filter hintereinander (in Reihe) geschaltet (kaskadiert), so entsteht ein neues Filter höherer Ordnung. Kaskadierungen erhöhen in der Regel die
Flankensteilheit und verringern gleichzeitig die Bandbreite. Bei der Implementierung
von kaskadierten FIR-Filtern ist es immer sinnvoll, die resultierende Übertragungsfunktion höherer Ordnung durch Ausmultiplizieren der Polynome zu berechnen. Das
verringert die notwendige Rechenleistung sowie das Quantisierungsrauschen. Kaskadierte FIR-Filter sind in der Regel nicht optimal für die gegebene Ordnung.
Wie bei analogen Filtern können auch IIR-Digitalfilter höherer Ordnung durch eine
Reihenschaltung von Filtern erster Ordnung bzw. Filtern zweiter Ordnung mit konjugiert komplexen Polen / Nullstellen „zusammengebaut“ werden.
Bei der Implementierung können die Filter entweder einzeln implementiert und in
Reihe geschaltet werden – z.B. zwei IIR Filter zweiter Ordnung – oder es wird ein
Filter höherer Ordnung berechnet (ausmultipliziert) und implementiert.
Vorteile einer Implementierung von mehreren kaskadierten Filtern niedriger Ordnung:
 Einfache, wiederverwendbare Algorithmen
 Einfachere Stabilitätsbetrachtung
Vorteile einer Implementierung von einem digitalen Filter höherer Ordnung:


Geringeres Quantisierungsrauschen bei Algorithmen mit FestkommaArithmetik
Benötigt etwas weniger Rechenleistung
11.5 Realisierung digitaler Filter in Festkomma-Arithmetik
DSF
129
Krah WS 13/14
11.6 Multiraten-Signalverarbeitung
In modernen digitalen Systemen werden Signale häufig mit verschiedenen Abtastfrequenzen verarbeitet. Die Hauptoperationen der Multiraten-Signalverarbeitung sind
die Dezimierung (Dezimation) und die Interpolierung (Interpolation). Die Dezimierung reduziert die Abtastfrequenz (Down-Sampler) und mit der Interpolierung kann
die Abtastfrequenz erhöht werden (Up-Sampler), Bild 11.12.
xk
uk
M
k
k
Bild 11.12: Down-Sampler mit einem Dezimierungsfaktor von 3 (M = 3)
(jeder M-te Wert wird verwendet/weiterverarbeitet)
Wenn man ein analoges Signal viel höher als es das Abtasttheorem vorschreibt abtastet, kann man ein weniger aufwändiges analoges Anti-Aliasing-Filter einsetzen. Das
Signal kann dadurch mit einem digitalen Filter hoher Ordnung bandbegrenzt werden
und danach über ein Down-Sampling (Dezimation) auf die gewünschte Abtastrate
gebracht werden. Zum Beispiel kann man ein Audiosignal mit 44,1 kHz ∙ 4 = 176,4
kHz abtasten. Mit einem digitalen Tiefpass kann das Anti-Aliasing einfacher und genauer realisiert werden. Nach der Tiefpass-Filterung wird nur jeder vierte Wert aus
der Werte-Folge verwendet = „digital abgetastet“.
Ein besonders einfaches Dezimierungsfilter ist das SincK-Filter 1. Ordnung: Zur Dezimierung wird einfach der Mittelwert berechnet und verwendet. In dem angeführten
Beispiel würde aus jeweils 4 Abtastwerten der Mittelwert berechnet. Man nennt das
auch eine gleitende Mittelwertbildung. Die Umsetzung kann z.B. mit einem FIRFilter 3. Ordnung erfolgen:
Gz   14  14 z 1  14 z 2  14 z 3
(11.16)
Alternativ kann dieser Mittelwertfilter auch mit einem IIR-Filter 4. Ordnung realisiert
werden:
1  z 4
Gz   
1  z 1
1
4
DSF
(11.17)
130
Krah WS 13/14
Mit Hilfe der Polynomdivision kann gezeigt werden, dass die rekursive Form in die
nicht rekursive Form überführt werden kann. Der IIR-Filter kann vorteilhaft in drei
Teilübertragungsfunktionen aufgeteilt werden:
1. Summierung:
1
1  z 1
2. Differenzbildung:
1  z 4
¼
3. Dämpfung:
Wird jetzt nach der Summierung das Signal durch Down-Sampling mit der gewünschten, um den Faktor 4 geringeren Abtastfrequenz weiterverarbeitet (jeder 4.
Wert), so wird bei der Differenzbildung nicht ein um 4 (kurze) Abtastzeiten verzögertes Signal sondern ein um nur 1 (lange) Abtastzeit verzögertes Signal verarbeitet. Das
verringert den Aufwand bei der Implementierung erheblich, Bild 11.13.
¼
a)
¼
M
b)
Bild 11.13: Sinc-Filter 1. Ordnung (K = 1 bzw. Sinc1 – M = 4)
a) ohne Down-Sampling
b) mit Down-Sampling → Dezimierungsfilter
Oft werden SincK-Filter höherer Ordnung verwendet, die einfach durch entsprechende Kaskadierung von K-Sinc1-Filtern erster Ordnung gebildet werden. Bei der Realisierung werden erst die K-Summierer hintereinandergeschaltet, dann wird das Signal
mit der gewünschten (niedrigeren) Abtastrate „digital abgetastet“ (Down-Sample =
jeder M-te Wert). Die Differenzbildung erfolgt dadurch mit deutlich geringerem
Aufwand, da nur eine „langsame“ Verzögerung statt M schnellen Verzögerungen benötigt wird. Bei Implementierungen mit Festkommaarithmetik ist es von Vorteil, (→
weniger Quantisierungsrauschen) erst nach der Differenzbildung den Faktor (¼)K zu
berücksichtigen. Diese Kombination aus Filter und Down-Sampling (Dezimierung)
wird Dezimierungsfilter genannt.
DSF
131
Krah WS 13/14
11.7 Dezimierungsfilter (SincK-Filter) für -Analog Digital Wandler
In -Wandlern sind SincK-Dezimierungsfilter eine weit verbreitete Filtertopologie
für die Tiefpassfilterung und das gleichzeitige Down-Sampling. Der Hauptvorteil
dieses Filters ist seine einfache Realisierbarkeit ohne Multiplikationen, Bild 11.14.
Die Notch-Antwort kann bei richtiger Dimensionierung z.B. die Netzfrequenz vollständig unterdrücken. Die Position der Bandsperre (Notch) ist direkt abhängig von
der Ausgangs-Datenrate. Das SincK-Filter ist nach K Taktperioden eingeschwungen
(Setling Time). Mit einer 50 Hz-Bandsperre (50 Hz-Datenrate) beträgt die Einschwingzeit eines Filters dritter Ordnung 3/50 Hz, also 60 ms. Für Anwendungen, die
bei geringerer Filterwirkung eine schnellere Einschwingzeit erfordern, kann ein SincFilter niedrigerer Ordnung verwendet werden. Die Einschwingzeit eines Sinc 1-Filters
beträgt eine Taktperiode. Bei 50 Hz also 1/50 Hz, oder 20 ms.
Integrator II
Integrator I
Integrator III
MDAT
MCLK
DownSampling
MCLK / M
Differentiator I
Diffrentiator II
Diffrentiator III
Bild 11.14: Ein Sinc³ Filter besteht aus 3 Summierern, einem Down-Sampler (DLatch) und 3 Differenzierern [Ti]
Die Übertragungsfunktion eines wie dargestellt realisierten SincK Filters mit der Dezimierungsrate M lautet:
( )
(
)
(11.18)
Der Anfangswert der Sprungantwort h0 ist bei jeder Konfiguration 1, und bei machen
Implementierungen bedingt durch zusätzlich verzögernde Taktzyklen identisch null.
Der Endwert h∞ beträgt ohne weitere Skalierungen MK. Ein Sinc³ (K = 3 → 3. OrdDSF
132
Krah WS 13/14
nung) und einer Dezimierungsrate von M = 64 weist demnach einen Endwert von 64³
= 218 auf. Durch eine Skalierung mit M-K erhält man eine TiefpassÜbertragungsfunktion mit dem Endwert 1 (Übertragungsbeiwert KS = 1):
( )
(
)
(11.19)
sinc³ step response
1.0
0.8
SRD step response
0.6
0.4
sinc³ pulse response /
weighting function
0.2
0
M
M = 64 ; fs = 20 MHz
0
1.5 M
3.2 µs
2M
6.4 µs
3M
9,6 µs
T1Σ LPF = 4.8 µs
Bild 11.15: Sprungantwort eines Sinc³ Filters (K=3) [Ti]
Ideal Filter
Signal Damping
Insufficient Quantization Noise Rejection
M = 32
Bild 11.16: Amplitudengang eines Sinc³ Filters[Ti]
DSF
133
Krah WS 13/14
Da die Bandbreite durch das digitale Ausgangsfilter vermindert wird, kann die Ausgangs-Datenrate das Nyquist-Kriterium auch erfüllen, wenn sie geringer als die eigentliche Datenrate ist. Dies wird durch das Verwenden von nur wenigen Ausgangswerten und durch das Vernachlässigen der anderen erreicht. Dieser Vorgang wird als
Dezimierung um den Faktor M bezeichnet. M kann jede ganze Zahl annehmen, wobei die Ausgangsdatenrate entsprechend dem Nyquist-Theorem doppelt so groß ist
wie die Signalbandbreite. Wenn der Eingang mit fa abgetastet wird, kann der gefilterte Ausgang eine Datenrate von fa/M ohne Informationsverlust annehmen.
Ideal Filter
64
128
M
Bild 11.17: Reale Filter erreichen nicht den theoretisch möglichen Rauschabstand
Modulator 2-er Ordnung, Sinc Filter 2. und 3. Ordnung [Ti ADS 1204]
Üblicherweise liegt der Dezimierungsfaktor M zwischen 16 (schnell) und 128 (genau). In Abhängigkeit von M ist die Datenwortbreite N der Dezimierungsstufen zu
wählen: (K Ordnung des Sinc-Filters)
(11.20)
Bei einem Sinc³ Filter (K = 3) mit einem Dezimierungsfaktor von M = 90 und einem
1-Bit (m = 1) Sigma-Delta Modulator ergibt sich
. Da die Datenwortbreite N eine ganze Zahl sein muss, ist hier N = 21 oder größer zu wählen.
[ct], LE, IO, VHDL
DSF
134
Krah WS 13/14
12
z –Transformation
12.1 Definition der z-Transformation
Im vorangegangenen Kapitel wurde gezeigt, dass man einen Abtastsystem vollständig mit Hilfe von Abtastsignalen (-Impulsfolgen) beschreiben kann. Betrachtet man
die Laplace-Transformierte eines solchen Abtastsignals, so erhält man eine mit den
Abtastwerten bewertete Potenzreihe in eTa s mit negativen Exponenten:

F ( s)   f k e kTa s .
*
(12.1)
k 0
Führt man nun die Substitution
(bzw. e Ta s  z 1 )
eTa s  z
(12.2)
ein, ergibt sich aus der komplexen Funktion F*(s) eine Potenzreihe F(z) mit der komplexen Variablen z:

F ( z )   f k z  k
.
(12.3)
k 0
Diese bezeichnet man als "z-Transformierte der -Impulsfolge f *(t)". So wird die zTransformation als eine diskrete Form der Laplace-Transformation definiert, die jedem Abtastsignal umkehrbar eindeutig eine Potenzreihe in eTa s  z zuordnet.


z f * (t )  F * ( s)

eTa s  z
 F ( z )   f k z  k
(12.4)
k 0
mit fk = 0 für k < 0
Dabei stellt F(z) eine Potenzreihe in z mit negativen Exponenten dar, die man auch
als Laurent-Reihe bezeichnet.
Nach Gleichung (12.3) kann die z-Transformierte F(z) aber auch direkt aus der Wertefolge {fk} gewonnen werden. F(z) wird dann als "z-Transformierte der Wertefolge
{fk}" bezeichnet. Somit ist auch jeder Wertefolge umkehrbar eindeutig eine Potenzreihe in z zugeordnet.

z{ f k } F ( z )   f k z k
(12.5)
k 0
mit fk = 0 für k < 0
Besteht eine Wertefolge {fk} aus den Abtastwerten eines zeitkontinuierlichen Signals
f(t), so kann man die Wertefolge auch als diskretes Signal {fk} bezeichnen.
DSF
135
Krah WS 13/14
Analog zur Laplace-Transformation werden für die Korrespondenzen der zTransformation häufig folgende Schreibweisen verwendet:

z{ f k } F ( z )
{fk}

z f * (t )  F ( z )
F(z)
f*(t)
(12.6)
F(z)
12.2 Rechenregeln der z-Transformation
Für die z-Transformation existieren ähnliche Rechenregeln wie für die LaplaceTransformation. Diese werden nachfolgend kurz aufgeführt. Beispiele dazu sind im
Anschluss aufgeführt.
Linearität
c1 { f1, k }c2 { f 2, k }
(Linearity)
c1 F1 ( z )c2 F2 ( z )
Verschiebungsregel “nach rechts“
(12.7)
(time shifting)
Verschiebung einer Wertefolge um m-Stellen nach rechts.
{fk-m}
z-mF(z)
mit m > 0
(12.8)
Verschiebungsregel “nach links“
Verschiebung einer Wertefolge um m-Stellen nach links.
{fk+m}
m1


z m   F ( z )   f i z i  mit m > 0
i 0


(12.9)
Bei der Verschiebung nach links werden alle Werte, die in den negativen Bereich geschoben werden, zu Null.
Dämpfungsregel
{ f k } ekTa
F ( z e Ta )
mit  beliebig komplex (12.10)
Differenzbildungsregel “Rückwärtsdifferenz“ (first difference)
Durch Anwendung der Verschiebungsregel “nach rechts“
{fk} - {fk-1}
DSF
1  z F ( z)
1
136
(12.11)
Krah WS 13/14
Differenzbildungsregel “Vorwärtsdifferenz“
Durch Anwendung der Verschiebungsregel “nach links“
( z 1) F ( z )  f 0 z
{fk+1} - {fk}
Summationsregel
(12.12)
(accumulation)
k
{ f i }
1
F ( z )
1 z 1
i 0
(12.13)
Multiplikationssatz, Differentiationsregel für die Bildfunktion
z 
{kfk}
Faltungsregel
d
F (z )
dz
(12.14)
(convolution)
Die Faltungsregel ist für die Beschreibung von Abtastsystemen von entscheidender
Bedeutung, weil man damit Hintereinanderschaltungen linearer Abtastsysteme beschreiben kann. An dieser Stelle sei auf Kapitel 12.6 verwiesen, in dem nochmals
ausführlich auf die Anwendung der Faltung zur Behandlung von Abtastsystemen eingegangen wird.
Ausgehend von der Definition der Faltung für den zeitkontinuierlichen Fall
f(t)  g(t) =
f(t)  g(t)
t
t
0
0
 f ( ) g (t   )d   g ( )  f (t  )d
F(s)  G(s)
(12.15)
lautet die Definition der Faltung für den zeitdiskreten Fall
{sk} = {fk}  {gk} mit
{fk}  {gk}
DSF
k
k
i 0
i 0
sk   f i g k i   g i  f k i
F(z)  G(z)
137
(12.16)
Krah WS 13/14
Anfangswertsatz
existiert lim H ( z ) , so gilt:
z 
h0  lim {hk }  lim H ( z )
k 0
Mit H ( z ) 
(12.17)
z 
z
G( z ) folgt:
z 1
h0  lim {hk }  lim H ( z )  lim G( z )
k 0
z 
z 
Endwertsatz
existiert lim {hk } und ist das System stabil, so gilt:
k 
h  lim {hk }  lim ( z 1) H ( z )
k 
Mit H ( z ) 
(12.18)
z1
z
G( z ) folgt:
z 1
h  lim {hk }  lim ( z  1) H ( z )  lim G( z )
k 
z 1
z 1
In Tabelle 12.1 sind die Zusammenhänge zwischen den wichtigsten zeitkontinuierlichen Funktionen, ihren Laplace-Transformierten und den entsprechenden zTransformierten zusammengefasst.
Ta = Abtastzeit
Tabelle 12.1:
Korrespondenzen der z-Transformation
(nächste Seite)
DSF
138
Krah WS 13/14
f(t)
F(s)
F(z)
(t)
1
s
z
1

z  1 1  z 1
t
1
s2
Ta  z
( z  1) 2
e  at
1
sa
z
z  e aTa
1
( s  a) 2
e  aTa
Ta  z 
( z  e aTa ) 2
t e
 at
t e
2
( s  a) 3
Ta  z  e aTa 
t e
 at
n!
( s  a) n 1
n
 an
 at
a
s  ( s  a)
z  (1  e  aTa )
( z  1)( z  e aTa )
ba
( s  a )  ( s  b)
z  (e  aTa  e bTa )
( z  e aTa )  ( z  e bTa )

s2   2
z  sin(  Ta )
z 2  2  z  cos(  Ta )  1
cos(  t )
s
s2   2
z   z  cos(  Ta ) 
z  2  z  cos(  Ta )  1
t  sin(  t )
2   s
(s 2   2 ) 2
t  cos(  t )
s2  2
(s 2   2 ) 2
Ta  z  ( z 2  1)  cos(  Ta )
 sin(  t )

( s  a) 2   2
z  e  aTa  sin(  Ta )
z 2  2  z  e aTa  cos(  Ta )  e aTa
 cos(  t )
sa
( s  a) 2   2
z 2  z  e  aTa  cos(  Ta )
n
1 e
e
 at
e
bt
sin(  t )
e
e
z  e  aTa
( z  e aTa ) 3
 at
2
 at
 at
DSF
2
z



aTa 
ze

2
Ta  z  ( z 2  1)  sin(  Ta )
z
z
2

 2  z  cos(  Ta )  1

2
2

 2  z  cos(  Ta )  1

2
z 2  2  z  e aTa  cos(  Ta )  e aTa
139
Krah WS 13/14
12.3 Diskrete Grundsignale
Zur Beschreibung diskreter Systeme benutzt man, ebenso wie zur Beschreibung kontinuierlicher Systeme, einige im Folgenden definierte Grundsignale.
a) Einheitssprungfolge
Entsprechend der kontinuierlichen Sprungfolge (t) definiert man für den diskreten
Fall die Einheitssprungfolge {k} als:
 1 ; für k 0
{ k }  
 0 ; für k 0
.
(12.19)
Die z-Transformierte der Einheitssprungfolge ergibt sich damit zu
1 ; fürk0
z { k }  f k z k mit f k = 
k 0
 0 ; fürk0


z { k }  z k
.
k 0
Dies entspricht einer geometrischen Reihe mit dem Quotienten z -1. Für den Fall
z 1  1 ist die Reihe konvergent, so dass man eine geschlossene Summenformel angeben kann:
z { k }
1
z

1
z 1
1 z
(12.20)
b) Einheitsimpulsfolge (diskreter Einheitsimpuls)
Eine ähnliche Bedeutung wie der Einheitsimpuls (t) bei der Analyse kontinuierlicher
Systeme hat die Einheitsimpulsfolge {k} bei der Analyse diskreter Systeme.
Sie ist definiert als:
 1 ;für k 0
{ k }  
 0 ;für k0
(12.21)
Betrachtet man die z-Transformierte der Einheitsimpulsfolge
1 ;für k0
z { k }  f k z k mit f k  
k 0
 0 ;für k0

so reduziert sich diese zu:
z { k } 1
DSF
(12.22)
140
Krah WS 13/14
Entsprechend der Verschiebungsregel “nach rechts“ ergibt sich eine um m Schritte
nach rechts verschobene Einheitsimpulsfolge zu:
z { k m } z  m
(12.23)
An dieser Stelle sei auf eine wichtige Eigenschaft der kontinuierlichen Impulsfunktion in Verbindung mit dem Faltungsintegral hingewiesen:
f(t)  ( t - ) = f(t - )
; für  > 0
(12.24)
Diese Eigenschaft zeigt sich auch bei der diskreten Einheitsimpulsfolge in Verbindung mit der Faltungssumme:
{fk}  {k-n} = {fk-n} ; für k > 0
(12.25)
12.4 Rücktransformation
Die einer z-Transformierten zugehörige Wertefolge lässt sich nach verschiedenen
Methoden bestimmen. Benötigt man geschlossene Formeln, so bietet sich die Rücktransformation mit Hilfe von Korrespondenztabellen oder über eine Partialbruchzerlegung an.
In der digitalen Regelungstechnik finden zwei numerische Verfahren Anwendung,
die Rückfaltung und das rekursive Lösen der Differenzengleichung. Diese Verfahren
liefern unmittelbar die der z-Transformierten zugehörige Wertefolge. Die erforderlichen Algorithmen können leicht am Rechner implementiert werden.
a) Rücktransformation durch Rückfaltung
Um die einer z-Transformierten F(z) zugehörige Wertefolge {fk} zu erhalten, muss
F(z) in Form einer Laurent-Reihe entwickelt werden:

F(z) =
 f k z  k
= f0 + f1z-1 + f2z-2 + . . .
(12.26)
k 0
Da deren Koeffizienten fk den Werten der Wertefolge {fk} entsprechen
{fk} = { f0, f1, f2, . . . } ,
kann man diese unmittelbar aus der Laurent-Reihe bilden.
In vielen Fällen ist die z-Transformierte F(z) als Quotient zweier Polynome B(z) und
A(z) gegeben:
F z  
DSF
B( z ) b0 b1 z 1 ...bm z  m

A( z ) a0  a1 z 1 ... an z  n
141
(12.27)
Krah WS 13/14
Um die Koeffizienten fk zu ermitteln, multipliziert man beide Seiten von Gleichung
(12.28) mit A(z). Über die Reihendarstellung von F(z) erhält man:
(a0 + a1z-1 + . . . + anz-n)  (f0 + f1z-1 + f2z-2 + . . . )
= b0 + b1z-1 + . . . + bmz-m
(12.28)
Dies entspricht einer Faltung:
{bk} = {ak}  {fk}
(12.29)
Für die Koeffizienten der Wertefolge {bk} ergibt sich über die Faltungssumme:
k
k
k
k 1
i 0
i 0
i 1
i 0
bk   ai  f k i   ak i  f i  a0  f k   ai  f k i  a0  f k   ak i  f i (12.30)
Daraus ergibt sich die rekursive Formel zur Berechnung von fk:
fk 
k

1 
  bk   ai  f k  i 
a0 
i 1

(12.31)
fk 
k 1

1 
  bk   ak  i  f i  .
a0 
i 0

(12.32)
bzw.
Den Vorgang der Umkehrung der Faltungssumme bezeichnet man als Rückfaltung.
Sind die a- und b-Koeffizienten der z-Transformierten bekannt, so lassen sich die
Werte fk durch das folgende Schema berechnen:
f0 
b0
a0
f1 
b1  a1  f 0
a0
f2 
b2  a1  f1  a 2  f 0
a0
(12.33)
.
.
.
fk 
DSF
bk  a1  f k 1  a2  f k 2  . . .  ak 1  f1  ak  f 0
a0
142
Krah WS 13/14
Anhand eines konkreten Beispiels wird in Kapitel 12.6 noch einmal auf die Bedeutung der Rückfaltung für die Regelungstechnik hingewiesen.
b) Rücktransformation durch rekursives Lösen einer Differenzengleichung
Die Koeffizienten fk einer z-Transformierten F(z) können auch durch rekursives Lösen der Differenzengleichung gewonnen werden. Diese Rücktransformation bringt
die gleichen Ergebnisse wie die zuvor beschriebene Methode und ist außerdem weniger aufwändig.
Besonders gut eignet sich diese Methode zur Berechnung der Ausgangswertefolge xk
eines linearen Übertragungsgliedes als Antwort auf eine beliebige Eingangswertefolge uk .
Ausgehend von einer z-Transformierten (a0 = 1)
G( z) 
X ( z ) b0  b1  z 1  ...  bm  z  m

U ( z ) 1  a1  z 1  ...  an  z  n
(12.34)
erhält man durch Anwendung der Verschiebungsregel der z-Transformation die folgende Differenzengleichung (xk-1 ist bekannt):
xk  a1  xk 1  ...  an  xk n  b0  uk  b1  uk 1  ...  bm  uk m
Stellt man die Differenzengleichung nach xk um, können die Werte der Ausgangsimpulsfolge rekursiv berechnet werden.
xk  b0  uk  b1  uk 1  ...  bm  uk m  a1  xk 1  ...  an  xk n
(12.35)
Beide Verfahren arbeiten iterativ und sind deshalb zur Herleitung allgemeiner Formeln ungeeignet. Zur Berechnung eines beliebigen Wertes der Ausgangsimpulsfolge
müssen für beide Verfahren die vorangegangenen Werte von Ein- und Ausgangsgröße bekannt sein. Im Gegensatz zu geschlossenen Formeln können daher keine einzelnen Werte im Zeitbereich ohne deren Vorgeschichte berechnet werden. Bei der Beurteilung von Systemen interessiert jedoch hauptsächlich der Einschwingvorgang. Die
Werte für den eingeschwungenen Zustand können dann über den Endwertsatz der zTransformation oder aus physikalischen Betrachtungen hergeleitet werden [2, 5, 13].
DSF
143
Krah WS 13/14
12.5 Zusammenschalten von Übertragungsgliedern
Will man die z-Transformation auf Abtastsysteme anwenden, in denen kontinuierliche und diskrete Übertragungsglieder sowie synchron arbeitende -Abtaster zusammengeschaltet sind, so ist es von entscheidender Bedeutung für das Übertragungsverhalten des Systems, an welcher Stelle ein -Abtaster wirkt. Besteht ein Übertragungssystem aus zwei hintereinander geschalteten Übertragungsgliedern mit den Gewichtsfunktionen g1(t) und g2(t) , so ergibt sich die Gesamtgewichtsfunktion g(t) aus der
zeitkontinuierlichen Faltung zu:
g (t )  g1 (t )  g 2 (t )
Bei dem Übergang in den z-Bereich ist zu beachten, dass man im allgemeinen zuerst
die beiden Übertragungsfunktionen zusammenfassen muss, bevor man die zTransformierte bildet, da für die z-Transformierte einer zeitkontinuierlichen Faltung
folgendes gilt:
zg1 (t )  g 2 (t )  zg1 (t ) zg 2 (t )
(12.36)
zG1 (s)  G2 (s)  zG1 (s) zG2 ( s)
Ist aber mindestens eine der miteinander gefalteten Gewichtsfunktionen eine -Impulsfunktion der Form
g1 (t ) 

g1 (t )

  g1,k   (t  k  Ta )
k 0
bzw.

g 2 (t )  g 2 (t )   g 2,k   (t  k  Ta ) ,

k 0
so ist die z-Transformierte des Faltungsproduktes gleich dem Produkt der zTransformierten der einzelnen Übertragungsfunktionen:


 
zG (s)  G (s) zG (s) zG (s)
z g1 (t )  g 2 (t ) = zg1 (t ) z g 2 (t )
*
*
*
1
2
(12.37)
*
1
2
In Tabelle 12.2 sind die wichtigsten Zusammenschaltungen von Übertragungsgliedern und ihre z-Übertragungsfunktionen aufgeführt.
DSF
144
Krah WS 13/14
Signalflussplan
Ta
z-Transformierte
Ta
u*(t)
u(t)
*
U(s)
U (s)
g(t)
G(s)
x(t)
x*(t)
X(s)
X*(s)
X ( z )  G( z )  U ( z )
Übertragungsglied mit vor- und nachgeschaltetem -Abtaster
Ta
u(t)
u*(t)
U(s)
U*(s)
x*(t)
G(e-Tas)
X ( z )  G( z )  U ( z )
X*(s)
Differenzengleichungsglied mit vorgeschaltetem -Abtaster
G1(s)
Ta
u(t)
*
u (t)
x(t)
U(s)
U*(s)
X(s)
Ta
x*(t)
X ( z )  G1 ( z )  G2 ( z)   U ( z )
X*(s)
G2(s)
Parallelschaltung mit vor- und nachgeschaltetem -Abtaster
Ta
Ta
u(t)
u*(t)
U(s)
U*(s)
G1(s)
v(t)
Ta
v*(t)
G2(s)
*
V(s)
V (s)
x(t)
x*(t)
X(s)
X*(s)
X ( z )  G1 ( z )  G2 ( z )  U ( z )
Reihenschaltung mit zwischengeschaltetem -Abtaster
Ta
Ta
u*(t)
u(t)
G1(s)
*
U(s)
U (s)
v(t)
G2(s)
V(s)
x(t)
x*(t)
X(s)
X*(s)
X(z)=ZG1(s)  G2(s) U(z)
Reihenschaltung ohne zwischengeschalteten -Abtaster
Ta
Ta
u(t)
u*(t)
U(s)
U*(s)
G1(s)
v(t)
x(t)
V(s)
X(s)
Ta
G1(eTas)
*
U(s)
x*(t)
X*(s)
Ta
u*(t)
u(t)
G2(eTas)
U (s)
v(t)
G2(s)
V(s)
x(t)
x*(t)
X(s)
X*(s)
X ( z )  G1 ( z )  G2 ( z )  U ( z )
Reihenschaltung zweier Übertragungsglieder, von
denen eines ein Differenzengleichungsglied ist
Ta
u(t)
U(s)
G(s)
x(t)
x*(t)
X(s)
X*(s)
X(z)=ZG(s)  U(s)
Übertragungsglied ohne vorgeschalteten -Abtaster
Ta
u(t)
G1(s)
U(s)
Ta
v(t)
v*(t)
V (s)
V*(s)
G2(s)
x(t)
x*(t)
X(s)
X*(s)
X ( z ) = G2 ( z )  Z G1 (s)  U (s)
Reihenschaltung zweier Übertragungsglieder ohne
vor- aber mit zwischengeschaltetem -Abtaster
Tabelle 12.2:
DSF
Zusammenschaltung von Übertragungsgliedern
145
Krah WS 13/14
13 Stabilitätskriterien
13.1 Definition der Stabilität
Ein lineares zeitinvariantes diskretes Übertragungssystem, das durch die Beziehung
X ( z )  G( z )  U ( z )
bzw.
{xk }  {g k }  {u k }
gegeben ist, bezeichnet man als stabil, wenn zu jeder beschränkten Eingangsfolge
{uk} auch die Ausgangsfolge {xk} beschränkt ist.
13.2 Grundlegende Stabilitätskriterien
Stabilitätsbedingung im Zeitbereich
Unmittelbar aus dem oben definierten Stabilitätsbegriff, den man auch als BIBOStabilität bezeichnet (Bounded Input - Bounded Output), lässt sich folgende hinreichende und notwendige Stabilitätsbedingung für die Gewichtsfolge {gk} ableiten:
Ein diskretes Übertragungssystem ist genau dann stabil, wenn für die Summe der Impulsantwortfolge gilt:

 gk

(13.1)
k 0
Dies bedeutet, dass die Sprungantwort gegen einen endlichen Wert strebt.
Stabilitätsbedingung im z-Bereich
Im{z}
z-Ebene
Re{z}
stabil
Stabilitätsrand
1
instabil
Bild 13.1: Ein System mit der Übertragungsfunktion G(z) ist stabil, wenn die Pole
von G(z) innerhalb des Einheitskreises der z-Ebene liegen.
Betrachtet man statt der Gewichtsfolge {gk} ihre z-Transformierte G(z), so erhält man
eine notwendige und hinreichende Stabilitätsbedingung im z-Bereich. Danach ist ein
diskretes Übertragungssystem genau dann stabil, wenn alle Pole seiner rationalen
DSF
146
Krah WS 13/14
Übertragungsfunktion G(z) innerhalb des in Bild 13.1 schraffiert dargestellten Einheitskreises der z-Ebene liegen.
Da die Polstellen einer rationalen z-Übertragungsfunktion G(z)
G( z ) 
Z ( z ) b0  b1  z  . . . + bm  z m
; mit m  n

N ( z ) a0  a1  z  . . . + an  z n
den Nullstellen des Nennerpolynoms N(z) entsprechen, genügt es, das Nennerpolynom auf seine Nullstellen zu untersuchen.
Somit gilt:
Ein diskretes Übertragungssystem ist auf jeden Fall stabil, wenn alle Nullstellen
des Nennerpolynoms N(z) innerhalb des Einheitskreises der z-Ebene liegen.
13.3 Algebraische Stabilitätskriterien
Wie oben gezeigt, lässt sich die Stabilitätsanalyse auf die Lage der Nullstellen des
Nennerpolynoms N(z) zurückführen. Dabei interessiert nicht die genaue Lage der
Nullstellen, sondern lediglich die Information, ob sie innerhalb des Einheitskreises
liegen. Dazu gibt es in der Literatur eine Vielzahl von Verfahren, die allgemein als
Algebraische Stabilitätskriterien bezeichnet werden. Das nachfolgend beschriebene
Verfahren liefert eine hinreichende und notwendige Bedingung dafür, dass die Nullstellen von N(z) im Innern des Einheitskreises liegen.
Stabilitätsgleichungen für Polynome niedrigen Grades
Hierbei handelt es sich um Ungleichungen zwischen den Koeffizienten des Nennerpolynoms N(z), die aus dem Kriterium von Schur-Cohn-Jury abgeleitet sind. Mit
Hilfe dieser Ungleichungen lässt sich auf relativ einfache Weise prüfen, ob die Nullstellen des Nennerpolynoms innerhalb des Einheitskreises der z-Ebene liegen.
Ausgehend von der z-Übertragungsfunktion
G( z ) 
Z ( z)
N ( z)
; mit
m  GradZ z  
n  GradN z 
und der allgemeinen Form des Nennerpolynoms
N ( z )  an  z n  an 1  z n 1  . . . + a1  z + a0
sind im Folgenden die notwendigen und hinreichenden Stabilitätsbedingungen für
Polynome bis zum 5. Grade zusammengestellt:
DSF
147
Krah WS 13/14
Polynom 1.Grades
N z   a1  z  a0 ; mit a1  0
mit N 1  0 und N  1  0 folgt: a1  a0
(13.2)
Polynom 2.Grades
N z   a2  z 2  a1  z  a0 ; mit a2  0
N 1  0 und N  1  0 folgt:
a2  a0  a1 ,
a 2  a0
(13.3)
Polynom 3.Grades
N z   a3  z 3  a2  z 2  a1  z  a0 ; mit a3  0
N 1  0 ,
N  1  0 ,
a3  a 0
(13.4)
a1  a3  a0  a2  a32  a02
Polynom 4.Grades
N z   a4  z 4  a3  z 3  a2  z 2  a1  z  a0 ; mit a4  0
N 1  0 ,
N  1  0 ,
a1  a4  a0  a3  a4  a0
2
a 4  a0
(13.5)
2
a4  a0   a4  a2  a0   a3  a1   a1  a4  a0  a3   0
Polynom 5.Grades
N z   z 5  a4  z 4  a3  z 3  a2  z 2  a1  z  a0
N 1  0 ,
N  1  0 ,
a0  1
(13.6)
A2  A  a0  a4   a1  a3  1  0
A  2 mit A 
DSF
a0  a1  a3   a 2  a 4
1  a1  a0  a0  a 4
2
148
Krah WS 13/14
Stabilitätskriterien für Polynome höheren Grades
Die Herleitung des Stabilitätskriteriums für Polynome höheren Grades über das Matrizenverfahren ist sehr aufwändig. Daher greift man auf ein abgeleitetes Verfahren,
das sog. "Jury's Kriterium" oder "Reduktionsverfahren", zurück.
Wieder wird von der z-Übertragungsfunktion
Gz  
Z z 
N z 
; mit GradZ z   GradN z 
ausgegangen. Das Nennerpolynom hat die Form:
N z   an  z n  an 1  z n 1  . . .  a1  z  a0
 N z   a
0
0,n
 z n  a0,n 1  z n 1  . . .  a0,1  z  a0,0

E. I. Jury hat ein Verfahren hergeleitet, das ähnlich dem Horner-Schema das Polynom
schrittweise reduziert. Es wird wie beim Hurwitz-Kriterium eine Überprüfung von
Bedingungen für die Koeffizienten der charakteristischen Gleichung ohne eine explizite Berechnung der Pole durchgeführt. Der Unterschied zum Horner-Schema liegt in
dem Schätzen von Nullstellen. Durch das Verfahren kann man nach der Reduktion an
einer "resultierenden Null in der letzten Spalte" erkennen, ob die geschätzte Stelle
eine Nullstelle ist oder nicht.
zn
N 0 z 


  0  a0 , 0 
a0,n
z n 1
.


  0  a0,1 
.
a0,n 1
z1


  0  a0, n 1 
a0,1
z0

0
  0  a0, n 
a0,0
.
N1 z 
a1,n 1
.
a1,1
a1,0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Mit dem Jury-Schema wird überprüft, ob das gegebene Nennerpolynom Nullstellen
aufweist, die im Bereich von -1 und 1 liegen. Ist dies an irgendeiner Stelle nicht der
DSF
149
Krah WS 13/14
Fall, liegt Instabilität vor. Nach Jury wird nach jedem Reduktionsschritt geprüft, ob
der höchste Koeffizient größer ist als der Betrag des niedrigsten Koeffizienten. Ist
dies an irgendeiner Stelle nicht der Fall, so liegen nicht alle Nullstellen des Nennerpolynoms im Innern des Einheitskreises.
Dabei gilt:
i 
ai ,0
ai ,n
; mit i = 0, 1, 2, ...
Ist nun
a1,n 1  a1,0 ,
so ist G(z) nicht stabil und das Verfahren wird abgebrochen.
Gilt aber
a1,n 1  a1,0 ,
so wird auf die gleiche Weise fortgefahren, bis nur noch zwei Elemente in der Zeile
stehen.
Gilt nun endgültig
an 1,1  an 1,0 ,
so ist G(z) stabil, d.h. alle Polstellen der z-Übertragungsfunktion liegen innerhalb des
Einheitskreises in der z-Ebene.
DSF
150
Krah WS 13/14
Beispiel:
Stabilität einer z-Übertragungsfunktion
Gegeben sei eine z-Übertragungsfunktion, deren Nennerpolynom als N(z) bezeichnet
wird.
N z   z 5  2,5  z 4  2,83  z 3  1,819  z 2  0,634  z  0,091
Das Reduktionsverfahren wird wie zuvor beschrieben durchgeführt. Zur Orientierung
wird in der rechten Spalte das aktuelle i aufgeführt.
N0
N1
N2
z5
z4
z3
z2
z1
z0
i
1
-2,5
2,83
-1,819
0,634
-0,091
-0,091
-0,008
+0,058
-0,167
+0,261
-0,230
+0,091
0,992
-2,442
2,663
-1,558
0,404
-0,165
+0,636
-1,090
+0,996
-0,404
0,827
-1,806
1,573
-0,562
-0,382
+1,070
-1,230
+0,562
0,445
-0,736
0,343
-0,265
+0,568
-0,343
0,180
-0,168
N3
N4
+0,407
-0,680
+0,771
-0,933
Das Reduktionsverfahren wird nun beendet, da nur noch zwei Elemente in der letzten
Zeile stehen. Diese erfüllen die Forderung a4,1  a4,0 (also 0,180 > 0,168) , so dass
dem Stabilitätskriterium genügt wird. Damit liegen alle Nullstellen des Nennerpolynoms N(z) innerhalb des Einheitskreises der z-Ebene [2].
DSF
151
Krah WS 13/14
14 Literaturverzeichnis
[1]
Ackermann, J
Abtastregelung
Springer Verlag, Berlin Heidelberg, 1988
[2]
Föllinger, O.
Lineare Abtastsysteme
R. Oldenbourg Verlag, München, 1990
[3]
Skahill, Kevin
VHDL for PROGRAMMABLE LOGIC
Addison-Wesley, Memlo Park, CA, 1996.
[4]
Smith, Steven W.
The Scientist and Enginee’s Guide to Digital Signal Processing
California Technical Publishing, 1997.
( free download: www.dspguide.com/pdfbook.htm )
[5]
Isermann, R.
Digitale Regelsysteme, Band I-II
Springer Verlag, Berlin Heidelberg, 1987
[6]
Isermann, R.
Identifikation Dynamischer Systeme, Band I-II
Springer Verlag, Berlin Heidelberg, 1987
[7]
Kammeyer, K. D.
Kristian, K.
Digitale Signalverarbeitung
Teubner Verlag, Stuttgart, 1989
[8]
Leonhard, W.
Digitale Signalverarbeitung in der Meß- und Regelungstechnik
Teubner Verlag, Stuttgart, 1989
[9]
Naslin, P.
Essentials of optimal control
Iliffe Books Ltd., London 1968
[10] Ogata, K.
Discrete-Time Control Systems
Prentice-Hall International, New Jersey, 1987
[11] Oppenheim,A. V.
Willsky, A. S.
Signale und Systeme
VCH Verlagsgesellschaft, Weinheim, 1989
[12] Tietze, U.
Schenk, Ch.
Halbleiter Schaltungstechnik
Springer Verlag, Berlin Heidelberg, 1989
[13] Unbehauen, H.
Regelungstechnik II
Vieweg Verlag, Braunschweig, 1989
[14] Krah, J. O.
Skript Regelungstechnik, 2004
www.fh-koeln.de
[15] Schultz, G.
Regelungstechnik
Oldenbourg Verlag, München-Wien, 2002
[16] Reichardt, J.
Schwarz, B.
VHDL-Syntese, Entwurf digitaler Schaltungen und Systeme,
4. Auflage, Oldenbourg, 2007
[17] Kesel, F.
Bartholomä, R.
Entwurf von digitalen Schaltungen und Systemen mit HDLs und
FPGAs, Oldenbourg, 2006
[18] Meyer-Bäse, Uwe Digital Signal Processing with Field Programmable Gate Arrays,
Springer-Verlag, Berlin Heidelberg, 2007
[19] Higgins, Richard R. Digital Signal Processing in VLSI, (eBook ,free download)
Prentice-Hall, (Analog Devices), New Jersy, 1990.
DSF
152
Krah WS 13/14
15 Abkürzungen / Formelzeichen
ADC
API
ASIC
CPLD
CPU
DAC
DFT
DSP
ENOB
FFT
FIR
FPGA
FPU
IIR
IO
IP
IPC
I²C
JTAG
K
k
LAB
LE
LSB
LUT
LVDS
M
MSB
PAL
PLD
PLL
PWM
RAM
ROM
SAR
SNR
SOPC
SPI
S&H
Ta
tco
th
DSF
Analog Digital Converter
Application Programmer Interface
Application Specific Integrated Circuit
Complex Programmable Logic Device
Central Processing Unit
Digital Analog Converter
Discrete Fourier Transformation
Digital Signal Processor
Effective Number Of Bits
Fast Fourier Transformation
Finite Impulse Filter (nicht rekursives Filter)
Field Programmable Gate Array
Floating Point Unit
Infinite Impulse Filter (rekursives Filter)
Input Output
Intellectual Property
Industrial PC
Inter-Integrated Circuit
Joint Test Action Group
Ordnung des Sigma Delta Modulators / Sinc-Filters
Index
Logic Array Block
Logic Element
Least Significant Bit
Look Up Table
Low Voltage Differential Signaling
Oversampling Ratio / Dezimierungsfaktor
Most Significant Bit
Programmable Array Logic
Programmable Logic Device
Phase Locked Loop
Pulse Width Modulation
Random Access Memory
Read Only Memory
Successive Approximation
Signal Noise Ratio
System On a Programmable Chip
Serial Peripheral Interface
Sample & Hold
Abtastzeit (Sampling time)
clock-to-output Zeit (FPGA Output)
hold Zeit (FPGA Input)
153
Krah WS 13/14
tsu
tpd
TTL
UART
uk
USB
VCO
VHDL
xk
µC

DSF
set-up Zeit (FPGA Input)
propagation delay Zeit (FPGA Input to Output)
Transistor Transistor Logic
Universal Asynchronous Receiver and Transmitter
Eingangsfolge
Universal Serial Bus
Voltage Controlled Oscillator
Very high speed integrated circuit Hardware Description Language
Ausgangsfolge
µController auch MCU Micro-Controlling Unit
Sigma-Delta (auch Delta-Sigma)
154
Krah WS 13/14
16
Index
Abtast-Halte-Glied ............................................................................................................................. 90
Abtasttheorem .................................................................................................................................... 93
Abtastung ........................................................................................................................................... 85
Amplitudendiskret ................................................................................................................................ 7
Analog-Digital-Umsetzer ................................................................................................................... 73
Anfangswertsatz ............................................................................................................................... 134
Anti-Aliasing-Filter ............................................................................................................................ 96
Application Specific Integrated Circuit (ASIC) ................................................................................. 13
Architecture (VHDL) ......................................................................................................................... 45
Clock-to-output time tco ..................................................................................................................... 20
Complex Programmable Logic Devices (CPLD) .............................................................................. 10
Custom Instruction ............................................................................................................................. 62
Dezimierungsfilter ........................................................................................................................... 128
Digital-Analog-Umsetzer ................................................................................................................... 66
Digitale Filter ................................................................................................................................... 107
Digitale Filter höherer Ordnung ....................................................................................................... 125
Down-Sampling ............................................................................................................................... 127
DSP Builder Advanced Blockset ....................................................................................................... 40
Embedded Memory ............................................................................................................................ 23
Embedded Multiplier ......................................................................................................................... 21
Endwertsatz ...................................................................................................................................... 134
Entity (VHDL) ................................................................................................................................... 45
Evaluation Board................................................................................................................................ 24
Field Programmable Gate Array (FPGA) .......................................................................................... 12
Geistiges Eigentum (IP) ..................................................................................................................... 56
Hold-up time th ................................................................................................................................... 20
Input / Output (IO) ............................................................................................................................. 17
Intellectual Property (IP) .................................................................................................................... 56
Logic Element (LE) ........................................................................................................................... 20
Matlab Simulink................................................................................................................................. 39
Megacore IP Library .......................................................................................................................... 57
ModelSim ........................................................................................................................................... 35
Multiraten-Signalverarbeitung ......................................................................................................... 126
Nichtrekursive Digitalfilter (FIR) .................................................................................................... 107
Phase Look Loop (PLL) ..................................................................................................................... 22
Process (VHDL) ................................................................................................................................. 45
Programmable Array Logic (PAL) ...................................................................................................... 9
Propagation-delay time tpd ................................................................................................................. 20
Quartus II (Altera) .............................................................................................................................. 31
Reale Abtastsysteme .......................................................................................................................... 99
Rekonstruktions-Filter ....................................................................................................................... 97
Rekursive Digitalfilter (IIR)............................................................................................................. 112
Set-up time tsu..................................................................................................................................... 20
Signale .................................................................................................................................................. 6
SignalTap II........................................................................................................................................ 38
Soft Core CPU Nios II (Altera).......................................................................................................... 58
Stabilitätskriterien ............................................................................................................................ 142
System .................................................................................................................................................. 6
System on programmable Chip (SoPC) ............................................................................................. 54
DSF
155
Krah WS 13/14
Transistor-Transistor-Logik (TTL) ...................................................................................................... 8
VHDL................................................................................................................................................. 41
Wertdiskret ........................................................................................................................................... 7
Zeitdiskret ............................................................................................................................................ 7
z-Transformation .............................................................................................................................. 131
 Analog-Digital-Umsetzer ............................................................................................................. 78
 Digital-Analog-Umsetzer ............................................................................................................. 69
 Modulator ..................................................................................................................................... 79
DSF
156
Krah WS 13/14