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 << 1s). 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 MdB 2 K 1 86 (8.12) Krah WS 13/14 N=1, K=1: SNR IDEAL 2,61 30 log MdB N=1, K=2: SNR IDEAL 5,12 50 log MdB N=1, K=3: SNR IDEAL 13,6 70 log MdB (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(kTa) 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 (k1) 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: 1e 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 = kTa. 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: 1e sTa Gh s s g h (t ) t t Τ a (9.8) Wird nun ein bewerteter -Impuls fk(t-kTa) 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 ) 1e jTa j e jTa / 2 e jTa / 2 jTa / 2 e j DSF 2 sin( Ta / 2) e jTa / 2 95 Krah WS 13/14 Ta sin( Ta / 2) jTa / 2 e Ta / 2 Ta si( Ta 2 )e jTa / 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(kTa) = 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 nfa 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 2fmax (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 = 2max , (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 2max 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) jTa / 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 ht h0 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: Gz b0 b1 z 1 Mit z 1 e sTa und s = j ergibt sich G j b0 b1 e jTa . G j e jTa / 2 b0 e jTa / 2 b1 e jTa / 2 Mit den vorgegebenen Koeffizienten b0 = b = 0,5 ergibt sich G j e jTa / 2 cosTa / 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 ht 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 xk1 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 argG( 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: ~ GHP1z 1 GTP1 z ~ ~ b0 b1 z 1 b0 1 b0 a~1 z 1 GHP1z 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 xn1 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: Gs 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 b1z 1 1 a1 z 1 e e 1 b0 b1z 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 Gs 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 cos2 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 2HP 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 2TPTP Ta ~ b0 1 2 e HPHP Ta cosh 2 1 T HP HP a ~ b1 2 e HPHP Ta cos 1 2 T HP HP a für HP 1 für HP 1 ~ b2 e 2HPHP 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: Gz 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 Gz 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-mF(z) mit m > 0 (12.8) Verschiebungsregel “nach links“ Verschiebung einer Wertefolge um m-Stellen nach links. {fk+m} m1 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 } ekTa 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 {kfk} 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) z1 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 sa 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 ) ba ( 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 ) sa ( 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 ze 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ürk0 z { k } f k z k mit f k = k 0 0 ; fürk0 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 k0 (12.21) Betrachtet man die z-Transformierte der Einheitsimpulsfolge 1 ;für k0 z { k } f k z k mit f k k 0 0 ;für k0 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 + f1z-1 + f2z-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 + a1z-1 + . . . + anz-n) (f0 + f1z-1 + f2z-2 + . . . ) = b0 + b1z-1 + . . . + bmz-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: zg1 (t ) g 2 (t ) zg1 (t ) zg 2 (t ) (12.36) zG1 (s) G2 (s) zG1 (s) zG2 ( 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: zG (s) G (s) zG (s) zG (s) z g1 (t ) g 2 (t ) = zg1 (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)=ZG1(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)=ZG(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 GradZ z n GradN 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 Gz Z z N z ; mit GradZ z GradN 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