290 79 10MB
German Pages [491] Year 2013
VHDL-Synthese
Entwurf digitaler Schaltungen und Systeme von
Prof. Dr. Jürgen Reichardt Prof. Dr.-Ing. Bernd Schwarz 6., aktualisierte und erweiterte Auflage
Oldenbourg Verlag München
Prof. Dr. Jürgen Reichardt lehrt seit 1995 Informationstechnik an der Hochschule für Angewandte Wissenschaften Hamburg. Seine Arbeitsschwerpunkte sind Digitaler Systementwurf, Digitale Signalprozessoren, HW-SW-Codedesign, System-on-Chip(Soc)-Entwurf. Prof. Dr.-Ing. Bernd Schwarz lehrt seit 1993 an der HAW Hamburg und vertritt die Themenbereiche Digitale Systeme und Computer Engineering.
Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. © 2013 Oldenbourg Wissenschaftsverlag GmbH Rosenheimer Straße 145, D-81671 München Telefon: (089) 45051-0 www.oldenbourg-verlag.de Das Werk einschließlich aller Abbildungen ist urheberrechtlich geschützt. Jede Verwertung außerhalb der Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Bearbeitung in elektronischen Systemen. Lektorat: Dr. Gerhard Pappert Herstellung: Constanze Müller Titelbild: Autor; Gestaltung: Irina Apetrei Einbandgestaltung: hauser lacour Gesamtherstellung: freiburger graphische betriebe GmbH & Co. KG, Freiburg Dieses Papier ist alterungsbeständig nach DIN/ISO 9706. ISBN 978-3-486-71677-1 eISBN 978-3-486-71678-8
Vorwort Das vorliegende Buch entstand in seiner ersten Auflage vor nunmehr mehr als 12 Jahren aus einer Neubewertung der Lehrinhalte der Fächer „Digitaltechnik“ und „Entwurf Digitaler Systeme“ an den Departments Informations- und Elektrotechnik sowie Informatik der HAW-Hamburg. Diese hatte zum Ergebnis, die Hardwarebeschreibungssprache VHDL ((Very High Speed Integrated Circuit) Hardware Description Language) nicht als eigenständige Lehrveranstaltung sondern parallel zur Digitaltechnik zu vermitteln, um darauf aufbauend in den weiteren Lehrveranstaltungen Systementwürfe gestalten zu können. Ein besonderes Ziel dieser Lehrveranstaltungen ist es, den bekannten Beschreibungsformen für Elemente der Digitaltechnik einen Hochsprachenentwurf gegenüberzustellen. Der starke Hardwarebezug der genannten Lehrveranstaltungen setzt dabei voraus, dass überwiegend synthesefähige VHDL-Beschreibungen entwickelt werden. Besonderen Wert legen wir daher auf die Kombination aus Hardwarebeschreibung, Funktionsprüfung durch Simulation und Analyse der Syntheseergebnisse. Den synthesefähigen Hardwarebeschreibungen der ausgewählten Funktionselemente werden, soweit erforderlich, die digitaltechnischen bzw. bei den komplexeren Anwendungen der Kap. 9 und 10 auch die Grundlagen der systemtheoretischen Entwurfsprinzipien zur Seite gestellt. Das Lehrbuch soll als Zielgruppe zunächst die Studierenden der Elektrotechnik und der Informatik an Hochschulen und Universitäten erreichen. Es ist gerade mit seinen Erweiterungen zur Modellierung komplexerer Systeme in den Kapiteln 8, 9 und 10 aber ebenso auf Entwicklungsingenieure1 in der Praxis ausgerichtet, die erstmalig einen VHDL-basierten Digitalentwurf beabsichtigen. Der Verkaufserfolg sowie die sehr positiven Rückmeldungen der Leser zu den bisherigen Auflagen der „VHDL-Synthese“ gab uns mit diesem Ansatz Recht und war uns Ansporn für eine kontinuierliche Weiterentwicklung der Inhalte bis zur nun vorliegenden 6. Auflage. So wurden bereits in den letzten Auflagen unterschiedliche Systeme ergänzt bzw. überarbeitet, in denen die in den Kap. 1 bis 7 erlernten Grundlagen an konkreten Aufgabenstellungen vertieft werden. Diese reichen in der nun vorliegenden 6. Auflage vom Entwurf eines einfachen RISC-Prozessors in Kap. 8 über die Implementierung digitaler Filter in Kap. 9 bis hin zur Implementierung von Zustandsdifferenzengleichungen für Beobachter in Kap. 10, die für digitale Regelungen z.B. in der elektrischen Antriebstechnik benötigt werden. _________________ 1
Wir bitten die Leserinnen um Verständnis, dass wir im Folgenden die männlichen Berufsbezeichnungen verwenden. Wir haben uns wegen der Kürze und der unseres Erachtens besseren Lesbarkeit für diese Formulierungen entschieden.
Vorwort
VI Weitere Änderungen bzw. Ergänzungen dieser Auflage sind:
Die Einführung der standardisierten VHDL-Bibliothek numeric_std in Kap. 5 und deren Nutzung für alle nachfolgenden arithmetischen Anwendungen.
Die Ergänzung des Kap. 3 um einen Abschnitt zur Modellierung von VHDLTestumgebungen.
Die Verwendung eines Dual-Port RAM-Bausteins als Speicher für die Instruktionen und Daten des RISC-Prozessors in Kap. 8.
In Kap. 9 die Ergänzung um das Modell eines systolischen FIR-Filters sowie die Neubewertung der Implementierungsergebnisse durch neuere FPGA-Implementierungswerkzeuge für Xilinx FPGAs (ISE 13.4).
Wir danken unseren Studenten, die durch vielfältige Diplom-, Bachelor- und MasterArbeiten in den letzten 12 Jahren wertvolle Beiträge zur systematischen Weiterentwicklung dieses Lehrbuches beigetragen haben. Weiterer Dank gilt den Lektoren des OldenbourgVerlages, die uns mit Rat und Tat bei der Erstellung des Buches geholfen haben.
Hamburg, Oktober 2012
J. Reichardt, B. Schwarz
Inhaltsverzeichnis 1 1.1
Einleitung und Übersicht 1 Motivation ................................................................................................................ 1
1.2
Ziele und Organisation dieses Buches ..................................................................... 2
1.3
Syntaxnotation ......................................................................................................... 6
2 2.1
Synthese einfacher Schaltnetze 7 Entity, Architektur und Signale................................................................................ 7
2.1.1
Deklaration und Verwendung lokaler Signale ....................................................... 10
2.1.2
Richtungsmodi von Signalschnittstellen ................................................................ 11
2.1.3
Deklaration von Bussignalen ................................................................................. 13
2.2
Simulation von VHDL-Entwürfen ......................................................................... 13
2.3
Schaltnetze mit Boole’schen Gleichungen ............................................................. 16
2.4
Synthese selektiver und bedingter Signalzuweisungen .......................................... 19
2.5
Übungsaufgaben .................................................................................................... 24
3 3.1
Entwurf digitaler Funktionselemente mit Prozessen 27 Prozesse ................................................................................................................. 27
3.1.1
Deklaration und Ausführung von Prozessen .......................................................... 28
3.2
Schaltnetze mit sequentiellen Anweisungen .......................................................... 31
3.2.1
Die case-Anweisung .............................................................................................. 32
3.2.2
Die if-Anweisung ................................................................................................... 36
3.2.3
Schleifenkonstrukte................................................................................................ 39 3.2.3.1 for loop .................................................................................................... 40 3.2.3.2 while loop ................................................................................................ 41
3.3
Einfache Schaltwerke ............................................................................................. 43
3.3.1
D-Flipflops und Register ........................................................................................ 44 3.3.1.1 VHDL-Beschreibung mit Signalen ......................................................... 44 3.3.1.2 Testbench zum D-Flipflop ....................................................................... 46 3.3.1.3 Entwurf von Registern............................................................................. 48 3.3.1.4 Verwendung von Variablen in taktsynchronen Prozessen ...................... 48
VIII
Inhaltsverzeichnis
3.3.2
Johnson-Zähler mit Taktteiler ................................................................................ 50
3.3.3
Parametrisiertes Schieberegister ............................................................................ 52
3.4
Erzeugung von Latches .......................................................................................... 55
3.5
Vermeidbare Synthesefehler .................................................................................. 57
3.5.1
Kombinatorische Schleifen .................................................................................... 57
3.5.2
Fehlverhalten durch unvollständige Empfindlichkeitslisten .................................. 59
3.6
RTL-Syntheserichtlinien ........................................................................................ 60
3.6.1
D-Flipflops und Register in getakteten Prozessen ................................................. 62
3.6.2
D-Latches und kombinatorische Logik .................................................................. 62
3.7
VHDL-Testbenches ............................................................................................... 63
3.8
Übungsaufgaben .................................................................................................... 68
4 4.1
Tri-State- und Don’t-Care-Modellierung 75 Die Datentypen std_ulogic und std_logic .............................................................. 75
4.2
Realisierung von Tri-State-Ausgangsstufen........................................................... 78
4.3
Don’t-Care-Werte als Ausgangssignal ................................................................... 83
4.4
Don’t-Care-Werte als Eingangssignal.................................................................... 85
4.5
Konversion der Datentypen bit und bit_vector ...................................................... 88
4.6
Übungsaufgaben .................................................................................................... 90
5 5.1
Arithmetik und Synchronzähler 93 Arithmetik-Operatoren und zugehörige Datentypen .............................................. 93
5.2
Komparator SN74xx85 .......................................................................................... 96
5.3
Entwurf von Synchronzählern................................................................................ 98
5.4
Arithmetik mit den Datentypen signed und unsigned .......................................... 103
5.4.1
Entwurf eines kombinierten Addierers / Subtrahieres.......................................... 105
5.5
Integer-Arithmetik ............................................................................................... 107
5.6
Konversionsfunktionen und indizierter Zugriff auf Feldelemente ....................... 110
5.7
Arithmetik mit Synopys Bibliotheken.................................................................. 113
5.8
Hinweise zur Verwendung der Datentypen ......................................................... 114
5.9
Übungsaufgaben .................................................................................................. 115
6 6.1
Entwurf von Zustandsautomaten 119 Automatenvarianten ............................................................................................. 119
6.2
Moore-Automat für eine Impulsfolgenerkennung ............................................... 122
6.3
Entwurfsbeispiel für einen Mealy-Automaten ..................................................... 126
Inhaltsverzeichnis
IX
6.4
VHDL-Syntaxvarianten ....................................................................................... 132
6.4.1
Die Zwei-Prozess-Darstellung ............................................................................. 133
6.4.2
Die Mehr-Prozess-Darstellung ............................................................................. 135 6.4.2.1 Schnittstellensynchronisation ................................................................ 135 6.4.2.2 Maßnahmen zur Taktfrequenzerhöhung ................................................ 137 6.4.2.3 Maßnahme zur Reduzierung der Latenzzeit .......................................... 139
6.4.3
Die Ein-Prozess-Darstellung ................................................................................ 141
6.4.4
Vergleich der Syntaxvarianten ............................................................................. 142
6.5
Zustandscodierung ............................................................................................... 143
6.5.1
Strategien der Zustandscodierung ........................................................................ 144
6.5.2
Umsetzung der Zustandscodierung in VHDL ...................................................... 145
6.5.3
Auswirkungen der Zustandscodierung auf die Syntheseergebnisse ..................... 146
6.6
Übungsaufgaben .................................................................................................. 152
7 7.1
Struktureller VHDL-Entwurf 155 Ziele und Methoden der Systempartitionierung ................................................... 156
7.2
Struktureller Entwurf mit Komponenten.............................................................. 159
7.2.1
Struktureller Entwurf eines 4 zu 2 Prioritätsencoders .......................................... 161 7.2.1.1 Komponentendeklaration ...................................................................... 163 7.2.1.2 Komponenteninstanziierung und port map-Anweisung ........................ 163 7.2.1.3 Konfiguration zur Auswahl von Modellarchitekturen ........................... 165 7.2.1.4 Modellparametrisierung ........................................................................ 166 7.2.1.5 Iterative Instanziierung .......................................................................... 168
7.2.2
Entwurf einer skalierbaren Addier/Subtrahier-Einheit......................................... 170
7.2.3
Kopplung von Signalen in strukturellen VHDL-Beschreibungen ........................ 175
7.3
Strukturierung mit Unterprogrammen .................................................................. 178
7.3.1
Lokale Prozeduren und Funktionen ..................................................................... 178
7.3.2
Definition und Einsatz von packages ................................................................... 183
7.4
Herstellerspezifische Komponenten und Komponentengeneratoren ................... 186
7.4.1
Instanziierung von RAM- und ROM-Zellen mit Prozessen ................................. 186
7.4.2
Komponentengeneratoren .................................................................................... 192
7.5
Unterstützung durch Synthesewerkzeuge ............................................................ 198
7.6
Übungsaufgaben .................................................................................................. 200
X
Inhaltsverzeichnis
8 8.1
Entwurf eines RISC-Prozessors 203 Spezifikation der Prozessorfunktionen................................................................. 204
8.1.1
Das Programmiermodell ...................................................................................... 204
8.1.2
Der Instruktionssatz ............................................................................................. 205
8.1.3
Instruktionsformate .............................................................................................. 206
8.2
Prozessorarchitektur und -programmierung ......................................................... 207
8.3
VHDL-Realisierung ............................................................................................. 210
8.3.1
Registerfile ........................................................................................................... 211
8.3.2
Instruktions- und Datenspeicher .......................................................................... 214
8.3.3
Instruction Fetch (IF) ........................................................................................... 217
8.3.4
Instruction Decode (ID) ....................................................................................... 218
8.3.5
Execute (EX) ........................................................................................................ 221
8.3.6
Memory Access (MEM) ...................................................................................... 223
8.3.7
Top-Level-Architektur des RISC-Prozessors....................................................... 226
8.3.8
Einfache Testbench für den RISC-Prozessor ....................................................... 229
8.4
Entwurfsverifikation ............................................................................................ 230
8.4.1
Vermeidung von RW-Hazards ............................................................................. 232
8.4.2
Vermeidung von C-Hazards................................................................................. 233
8.4.3
Speichern und Lesen des Datenspeichers............................................................. 235
8.5
FPGA-Implementierung....................................................................................... 236
9 9.1
Modellierung digitaler Filter 239 FIR-Filter ............................................................................................................. 241
9.1.1
Parallele FIR-Filterstrukturen .............................................................................. 241
9.1.2
Zahlendarstellung im Q-Format ........................................................................... 246 9.1.2.1 Addition mit vorzeichenrichtiger Erweiterung der Summanden ........... 248 9.1.2.2 Binäre Multiplikation ............................................................................ 249
9.1.3
Filterskalierung und Beispielfilter........................................................................ 250
9.1.4
VHDL-Modelle paralleler FIR-Filterstrukturen................................................... 254 9.1.4.1 Kopplung von unterschiedlichen Taktbereichen ................................... 254 9.1.4.2 Basismodell der Direktform .................................................................. 257 9.1.4.3 Direktform mit symmetrisch balanciertem Addiererbaum .................... 265 9.1.4.4 Direktform mit unsymmetrisch balanciertem Addiererbaum ................ 269 9.1.4.5 Linear-Phasen-Struktur ......................................................................... 279 9.1.4.6 Transponierte Form mit reduzierter Anzahl der Multiplizierer ............. 289
Inhaltsverzeichnis
9.1.5
XI
9.1.4.7
Systolische FIR Filter ............................................................................ 294
9.1.4.8
Vergleich der Implementierungsergebnisse und Timinganalysen ......... 298
Sequentielle FIR-Struktur mit MAC-Einheit ....................................................... 300 9.1.5.1 Multiplizierer-Akkumulatoreinheit ....................................................... 303 9.1.5.2 Ringpuffer für die Abtastwerte .............................................................. 305 9.1.5.3 Koeffizienten-ROM............................................................................... 307 9.1.5.4 Sequenzsteuerung mit einem Zustandsautomaten ................................. 308 9.1.5.5 Simulations- und Syntheseergebnisse ................................................... 312
9.1.6
Taktschemata der Filterdatenpfade ...................................................................... 316 9.1.6.1 Audiodatenrate ...................................................................................... 317 9.1.6.2 Hohe Datenraten .................................................................................... 318
9.2
IIR-Filter .............................................................................................................. 319
9.2.1
Koeffizientenberechnung und Beispielfilter ........................................................ 319
9.2.2
Parallele Strukturen für IIR-Filter 2. Ordnung ..................................................... 324
9.2.3
VHDL-Modelle für Varianten der Direktform II ................................................. 327 9.2.3.1 Transponierte Struktur der Direktform II .............................................. 327 9.2.3.2 Modifizierte Direktform II .................................................................... 335 9.2.3.3 Implementierungsergebnisse und Timinganalyse.................................. 338
9.2.4
Sinusgenerator als synthesefähige Testbench ...................................................... 339
9.2.5
Entwurfsschritte für IIR-Filter ............................................................................. 346
9.3
FPGA-Entwurf mit Simulink ............................................................................... 347
10 10.1
Zustandsdifferenzengleichungen für Beobachter 351 Zeitinvariante und lineare Systeme ...................................................................... 354
10.1.1 Zeitliche Diskretisierung ...................................................................................... 355 10.1.2 VHDL-Modell für die Zustandsdifferenzengleichungen ..................................... 359 10.2
Numerische Integration von gekoppelten Differentialgleichungen...................... 367
10.2.1 Rechteck- und Trapezintegration ......................................................................... 368 10.2.2 VHDL-Modell der kombinierten numerischen Integration .................................. 372 10.2.3 Prozessorelement mit Mehrzyklus-Datenpfad ..................................................... 380 10.2.3.1 Algorithmisches Zustandsdiagramm ..................................................... 381 10.2.3.2 Datenpfad mit Mehrfach-Ressourcennutzung ....................................... 383 10.2.3.3 VHDL-Modellierung des Prozessorelementes ...................................... 388
XII
Inhaltsverzeichnis
10.3
Vergleich der Implementierungsergebnisse ......................................................... 397
10.4
Nichtlineare, gekoppelte Integralgleichungen ...................................................... 402
10.4.1 Odometrie mit einem Einspur-Fahrzeugmodell ................................................... 403 10.4.2 VHDL-Modell des nichtlinearen Doppelintegrators ............................................ 407 11 11.1
Anhang 421 VHDL-Codierungsempfehlungen ........................................................................ 421
11.2
Checkliste zum VHDL-basierten Entwurf digitaler Systeme .............................. 425
11.3
Liste der VHDL-Schlüsselworte .......................................................................... 429
11.4
Lösungen zu den Übungsaufgaben ...................................................................... 429
11.4.1 Lösungen zu den Aufgaben in Kap. 2.5 ............................................................... 430 11.4.2 Lösungen zu den Aufgaben in Kap. 3.7 ............................................................... 432 11.4.3 Lösungen zu den Aufgaben in Kap. 4.6 ............................................................... 438 11.4.4 Lösungen zu den Aufgaben in Kap. 5.7 ............................................................... 441 11.4.5 Lösungen zu den Aufgaben in Kap. 6.6 ............................................................... 446 11.4.6 Lösungen zu den Aufgaben in Kap. 7.7 ............................................................... 451 12
VHDL-Syntaxübersicht und Bibliotheken
457
13
Literaturverzeichnis
467
14
Sachregister
473
1
Einleitung und Übersicht
1.1
Motivation
Die Entwicklung von mikroelektronischen Schaltungen auf hohem Abstraktionsniveau wird durch die beiden nachfolgenden Trends bestimmt: Starker Anstieg der Entwurfskomplexität bei drastisch reduzierten Entwicklungszeiten (Time to market). Zugleich entwickelt sich der Markt für mikroelektronische Produkte von Computeranwendungen immer weiter hin zu Kommunikations- und Consumer-Anwendungen. Exemplarisch sollen hier nur das rasante Wachstum des Mobilfunkmarktes sowie die neuartigen Applikationen, die sich aus dem Zusammenwachsen der Computer und digitaler Fernsehsysteme im Zusammenhang mit der Internet-Entwicklung ergeben, genannt werden. In der Industrie reichen herkömmliche Wege über grafische Schaltplaneingaben auf Logikelementebene schon seit längerem nicht mehr aus, um in den kurzen Entwicklungszyklen wettbewerbsfähig zu bleiben. Ein neuer Ansatz beim Schaltungsentwurf ist die Hardwarebeschreibung durch Hochsprachen, der durch eine zunehmende Zahl von CAE-Werkzeugen zur Schaltungssimulation und -synthese unterstützt wird. Ein besonderer Vorteil dieses Konzepts ist die gemeinsame Nutzung einer einheitlichen Modellierung für Simulation und Synthese. Dabei dient die Simulation der Verifikation der Entwurfsidee und die Synthesewerkzeuge setzen die Hardwarebeschreibung automatisch in Schaltpläne und LogikgatterNetzlisten um. Letztere werden für die herstellerspezifische Implementierung der Schaltung auf Hardwareplattformen wie ASICs (Application Specific Integrated Circuits), FPGAs und CPLDs benötigt. Zusammen mit dem Einsatz der CAE-Werkzeuge führt die Hardwareentwicklung auf Basis von Hochsprachen dazu, dass die Vielfalt der implementierungsspezifischen Entwurfsdetails stark reduziert wird. Der Entwickler kann sich so mehr dem Systementwurf widmen und wird in die Lage versetzt, in kürzerer Zeit komplexere Schaltungen zu entwerfen. Die Realisierung digitaler Systeme mit FPGAs, die bis zu zwei Millionen Logikzellen1 bieten [55], erfordert eine Beschreibung auf Basis komplexer Komponenten, wie z.B. ALUs (Arithmetic Logic Units), Steuerwerken und On-Chip RAM/ROM-Speicher. Durch Nutzung von Top-Down bzw. Bottom-Up Entwurfsstilen sowie durch Einsatz wiederverwendbarer Komponenten lässt sich eine im Vergleich zum Schaltplanentwurf höhere Abstraktionsebene des Systementwurfs erreichen [16], [42]. _________________ 1
Logikzelle: Kombination aus einer Look-Up-Tabelle mit vier Eingängen und einem DatenFlipflop
1 Einleitung und Übersicht
2
Als Modellierungssprachen für den beschriebenen Entwurfsstil haben sich weltweit die beiden Sprachen Verilog und VHDL etabliert, die den Markt in der Vergangenheit etwa zu gleichen Teilen dominierten [56]. Verilog war überwiegend im amerikanischen Markt vertreten, hat sich jedoch in Europa gegenüber VHDL weniger durchsetzen können. Seit Mitte der 90er Jahre ist auch in den USA ein erheblicher Anstieg der VHDL-Nutzung zu beob-achten [57]. Seit wenigen Jahren wird insbesondere für Anwendungen, bei denen es auf eine gemeinsame Hardware-Software-Modellierung ankommt, auch SystemC [68] zur Simulation bzw. Synthese digitaler Hardware eingesetzt. Dabei handelt es sich um eine standardisierte C++-Klassenbibliothek, für die es erst seit kurzem Synthesewerkzeuge gibt [69]. Aus den oben genannten Gründen und aufgrund der IEEE-Standardisierung sowie der daraus resultierenden Portierbarkeit der Entwicklungsergebnisse zwischen unterschiedlichen CAE-Umgebungen bzw. Bausteinen wurde die Sprache VHDL für die Lehre und das vorliegende Buch ausgewählt. Die in allen Hardwarebeschreibungssprachen verwendeten Konzepte sind jedoch recht ähnlich, womit das Erlernen einer weiteren Sprache nach Studium dieses Buches recht leicht fallen sollte. Einen Vergleich findet der Leser z.B. in [2]. VHDL wurde erstmalig 1987 und nachfolgend in den Jahren 1993, 2002 und 2008 durch die IEEE-Norm 1076 standardisiert [3]. Der synthesefähige Syntaxanteil von VHDL, der nur eine Teilmenge des gesamten Sprachumfangs darstellt, wurde 1999 durch die Norm 1076.6 standardisiert [20]. Die in den Synthesewerkzeugen implementierten Möglichkeiten gehen jedoch teilweise über diesen Standard hinaus. Aus diesem Grund wurde im vorliegenden Buch besonderer Wert darauf gelegt, nur eine sicher synthesefähige Untermenge zur Hardwarebeschreibung einzusetzen. Als Erprobungsgrundlage dienten überwiegend die PC-basierten Werkzeuge Aurora der Fa. Viewlogic [10], FPGA-Express der Fa. Synopsys [5] und XST der Fa. Xilinx [81].
1.2
Ziele und Organisation dieses Buches
Die besondere Aufgabe, die wir uns mit diesem Buch gestellt haben, besteht darin, die digitaltechnischen Entwurfselemente mit den VHDL-Modellierungselementen zusammenzuführen. Dabei werden folgende immer wiederkehrende Entwurfsschritte bearbeitet: Digitaltechnische Problembeschreibung Hardwarebeschreibung mit VHDL Verifikation des VHDL-Codes durch Simulation Analyse des Syntheseergebnisses. Schrittweise erfolgt eine Steigerung der zu vermittelnden Syntaxkomplexität. Dies geschieht parallel zum wachsenden Funktionsumfang der modellierten Komponenten. So wird die Hardware-Modellierung mit VHDL aus Sicht der Digitaltechnik von einfachen kombinatorischen Logikfunktionen, Flipflops, gesteuerten Zählern und Zustandsautomaten bis zu komplexen Systemen wie einem RISC-Prozessor bzw. verschiedenen Implementierungsvarianten digitaler Filter dargestellt.
1.2 Ziele und Organisation dieses Buches
3
Aufgrund der Vielzahl möglicher VHDL-Beschreibungen für eine Problemstellung haben wir es angestrebt, jeweils wiederverwendbare und erweiterbare VHDL-Module vorzustellen. Dazu gehört auch, dass die Syntheseergebnisse als technologieunabhängige Schaltpläne sorgfältig aufbereitet und erläutert werden. Für den Leser soll sich dadurch als Lernziel ein geschulter Blick ergeben, mit dem er die plausible Übereinstimmung der synthetisierten Flipflops, Latches und Schaltnetze mit seiner Entwurfsvorstellung prüfen kann. Das vorliegende Buch soll kein vollständiges VHDL-Syntaxlexikon darstellen, stattdessen wird ein synthesefähiger VHDL-Syntaxvorrat aus Sicht der digitaltechnischen Zielvorstellungen erlernt. Nicht synthesefähige Syntax wird als solche ausdrücklich erläutert und nur im Zusammenhang mit rein simulationstechnischen Aspekten genutzt. Dazu gehören zum einen die Formulierung von Stimuligeneratoren in VHDL-Testumgebungen und zum anderen die Modelle für nicht VHDL-basierte Schaltungsmakros. Die FPGA-Hersteller liefern diese optimierten Hardwaremakros, die bei der Synthese in die Netzlisten eingebunden werden können, in der Regel zusammen mit VHDL-Modellen, die das Verhalten dieser Schaltungsfunktionen nachbilden. Dabei reicht die Komplexität der Makros von einfachen RAM- und ROM-Speichern über spezielle mathematische Operationen bis hin zu IPBlöcken (IP = Intellectual Property), die z.B. Bus-Interfaces oder parametrisierbare Filterstrukturen darstellen. Die Simulation einer Hardwarebeschreibung ist im Lernprozess sowie in der praktischen Entwicklungstätigkeit ein entscheidender Schritt zur Verifikation eines Entwurfes. Zum Nachvollziehen der Beispielentwürfe des Buches sowie zur Überprüfung der eigenen Lösungen zu den Übungsaufgaben wird dringend empfohlen, einen VHDL-Simulator bzw. ein Synthesewerkzeug einzusetzen. Eine Einführung in die Benutzung von ModelSim bzw. ISE/Webpack findet der Leser auf der Homepage der Autoren. Die einzelnen Kapitel dieses Lehrbuches lassen sich grob gefasst drei HardwareSyntheseschwerpunkten zuordnen: Logik-Synthese, Schaltwerk-Synthese, Struktur-Synthese hierarchischer Systeme. Die in der Literatur dafür benutzten Beschreibungsformen sind mit folgenden Begriffen klassifizierbar [13], [15], [42], [43]: Verhaltensbeschreibung: Modellierung des Ein-/Ausgangsverhaltens von digitaltechnischen Komponenten. Prinzipiell ist zu unterscheiden, ob die Modelle synthesefähig sind (Datenflussdarstellung), oder ob sie nur für die Simulation geeignet sind (algorithmische Darstellung). Strukturbeschreibung: Mit hierarchischen Strukturmodellen werden die Signalkopplungen zwischen den Komponenten beschrieben. Im vorliegenden Lehrbuch bilden Hardwarebeschreibungen mit der Datenflussdarstellung den Kern der Ausführungen. Diese Hardware-Verhaltensbeschreibung wird in den IEEEStandards als Darstellung auf der Register Transfer Ebene (RTL = Register Transfer Level) präzisiert [42], [43]. Darin werden die Schaltungen mit ihren Registern und der dazwischen liegenden kombinatorischen Logik beschrieben. Der VHDL-IEEE-Synthesestandard [20] wurde für RTL-Beschreibungen entwickelt.
4
1 Einleitung und Übersicht
Das Buch ist neben dieser Einführung in 9 weitere Kapitel und einen Anhang gegliedert, dabei werden die drei oben genannten Themenbereiche wie folgt behandelt: In den Kapiteln 2 bis 4 sollen mit elementaren VHDL-Konstrukten digitale Grundkomponenten realisiert werden. Darauf aufbauend erfolgt in zwei weiteren Kapiteln eine Darstellung des Entwurfs komplexerer Komponenten, wie z.B. von Komparatoren, Zählern und Automaten. Nach einer Vorstellung der Strukturierungsmethoden digitaler Systeme mit VHDL werden die bisher erlernten Konzepte an zwei völlig unterschiedlichen Beispielen umgesetzt: Einem einfachen RISC-Prozessor sowie Implementierungsvarianten digitaler Filter. Der erste Themenbereich beginnt im Kapitel 2 mit der Vorstellung der wesentlichen syntaktischen Grundstrukturen eines VHDL-Codes zur Beschreibung einfacher Schaltnetze mit Entwurfseinheiten (Entities) und Architekturen. Dazu gehören auch Signale und deren nebenläufige Wertzuweisung. Schon in diesem einführenden Kapitel wird der Leser auf Möglichkeiten hingewiesen, den eigenen Entwurf mittels geeigneter VHDL-Testumgebungen zu simulieren. Zur Erweiterung der allein mit nebenläufigen Anweisungen stark eingeschränkten Modellierungsmöglichkeiten wird in Kapitel 3 die Beschreibung von Schaltnetzen und Schaltwerkelementen mit Prozessen und den zugehörigen sequentiellen Anweisungen erläutert. Diese erlauben zunächst Verzweigungen, die entweder Multiplexer oder Prioritätsencoder generieren. Schleifenkonstrukte können entweder der Erzeugung einer endlichen Anzahl regelmäßiger Hardwareelemente oder aber der Abarbeitung getakteter Vorgänge dienen. Dazu werden Paritätsgeneratoren vorgestellt, bei denen auch auf den Unterschied zwischen VHDL-Signalen und -Variablen eingegangen wird. Als Beispiele einfacher Schaltwerke werden D-Flipflops und Register sowie ein Zähler mit Schaltwerktabelle und ein parametrisiertes Schieberegister entworfen. Die speziellen Möglichkeiten, die der Einsatz von Prozessen in Testumgebungen liefert, werden ebenfalls in diesem Kapitel aufgezeigt. In Kapitel 4 werden mehrwertige Datentypen eingeführt, mit denen sich über die einfache 0-1-Darstellung digitaler Signale hinaus, unter anderem hochohmige Buszustände (TriState-Treiber) sowie Don’t-Care-Einträge in Wahrheitstabellen umsetzen lassen. Der zweite Themenbereich, der die Modellierung komplexerer Komponenten vorstellt, beginnt in Kapitel 5 mit der Einführung arithmetischer Operatoren, die für die mehrwertigen Datentypen definiert sind. Darauf aufbauend wird der Entwurf von Komparatoren, Addierern und Subtrahierern erläutert. Auch einfache Schaltwerke wie gesteuerte Zähler werden hier behandelt. Ergänzend wird in diesem Kapitel der Integer-Datentyp eingeführt, mit dem sich besonders vorteilhaft indizierte Feldzugriffe, wie sie z.B. bei der Speicheradressierung erforderlich sind, beschreiben lassen. Die Umsetzung der aus der Digitaltechnik bekannten Automatenstrukturen behandelt Kapitel 6. Dabei wird am Beispiel eines Automaten zur seriellen Sequenzerkennung auf geeignete Abbildungsvarianten der Automatenkomponenten auf VHDL-Prozesse und die Darstellung der Zustandscodierung eingegangen. Die Realisierung von Signalsynchronisationen und des Komponentenpipelinings zur Taktfrequenzerhöhung in Systemen mit gekoppelten Automaten wird ebenfalls vorgestellt. Im dritten Schwerpunkt werden in Kapitel 7 die wesentlichen Schritte zum VHDL-Entwurf digitaler Systeme vorgestellt. Dazu gehört neben der Vorstellung einer Entwurfsmethodik die Abbildung auf Strukturmodelle, die durch gekoppelte Komponenten und Netzlisten
1.2 Ziele und Organisation dieses Buches
5
repräsentiert werden. Als weitere Strukturierungsmittel werden in diesem Kapitel Unterprogramme erläutert. Als Ausblick wird die Einbindung herstellerspezifischer, parametrisierbarer Schaltungsmakros in den VHDL-Code diskutiert. In den Kapiteln 8 und 9 werden zwei Beispiele für digitale Systeme mit unterschiedlichem Schwerpunkt vorgestellt: Während beim schrittweisen Entwurf eines RISC-Prozessors mit vierstufiger Pipeline im Kapitel 8 die Methodik des Systementwurfs im Vordergrund steht, wird im Kapitel 9 besonderer Wert auf die Simulations- und Synthesesemantik von Entwurfsvarianten digitaler FIR- und IIR-Filter gelegt. Dabei erfolgt eine vergleichende Bewertung des Implementierungsaufwands dieser Strukturen. Das Kapitel 10 behandelt die Modellierung von gekoppelten Zustandsdifferenzengleichungen, wie sie in Beobachtersystemen der Regelungstechnik genutzt werden. Die Grundlagen digitaler Integrationsverfahren für lineare und nichtlineare Systembeschreibungen sowie die Architektursynthese von Einzyklus-, Mehrzyklus- und von Pipeline-Modellen sind Gegenstand dieses weiterführenden Kapitels. Insbesondere diese drei Kapitel gehen über die üblicherweise in der Digitaltechnik gelehrten Lehrinhalte hinaus und richten sich an Studierende höherer Semester. Am Ende der Kapitel 2 bis 7 ist jeweils eine Reihe von Übungsaufgaben zur Entwicklung digitaler Grundkomponenten zusammengestellt. Der Anhang enthält neben einer Musterlösung zu den Übungsaufgaben auch komprimierte Hinweise mit Codierungsempfehlungen, die einen synthesegerechten VHDL-Entwurf ermöglichen, eine Checkliste zur Systematik des Entwurfs digitaler Systeme unter Verwendung von VHDL sowie eine Liste der VHDL-Schlüsselworte. Dateien mit Quellcodes für Beispiellösungen sowie weitere Informationen zu diesem Buch finden Sie unter dem URL: http://users.etech.haw-hamburg.de/users/reichardt/ und auf den Internetseiten des Verlags (www.oldenbourg-wissenschaftsverlag.de > VHDL-Synthese > Zusatzmaterial).
1 Einleitung und Übersicht
6
1.3
Syntaxnotation
Anhand zweier exemplarischer VHDL-Syntaxbeschreibungen soll kurz auf die in diesem Buch verwendete Bezeichnungsweise eingegangen werden: entity is [generic();] port(); [< Entitydeklarationen >;] end ; architecture of is [< Architekturdeklarationen >;] begin {;} end ;
Grundsätzlich wird VHDL-Code bzw. die VHDL-Syntaxbeschreibung auch im Fließtext als Courier Font dargestellt. VHDL-Schlüsselworte bzw. -Trennzeichen sind fett gedruckt. Elemente in spitzen Klammern stellen Bezeichner oder andere, untergeordnete Elemente der Syntaxbeschreibung dar (z.B. ). Die in eckigen Klammern angegebenen Syntaxelemente sind optional und werden in den einführenden Beispielen weggelassen (z.B. [generic( );] ) In geschweiften Klammern { } angegebene Syntaxkonstrukte können beliebig oft wiederholt werden. Elemente einer Liste alternativer Möglichkeiten von Syntaxkonstrukten werden durch den Vertikalstrich | getrennt. Während die ersten fünf Notationselemente im oben angegebenen Beispiel wieder zu finden sind, stellt die nachfolgende Syntaxbeschreibung ein Beispiel für das letzte Element dar: for | others | all: use entity .();
Eine vollständige Syntaxübersicht findet der Leser im Kap. 12, in dem eine Zusammenstellung der Fa. Qualis [58] reproduziert ist. Unter dem URL: http://users.etech.hawhamburg.de/users/schubert/vorles.html lässt sich eine deutschsprachige VHDL-Syntaxbeschreibung im PDF-Format über das Internet herunter laden.
2
Synthese einfacher Schaltnetze
In diesem Kapitel werden die grundlegenden VHDL-Konzepte erläutert. Ausgehend von vollständigen Beispielen wird der VHDL-Sprachschatz schrittweise, problemorientiert erweitert. Dabei werden zunächst die Begriffe entity und architecture erklärt, die die Schnittstellen einer Logikeinheit bzw. deren Funktion beschreiben. Es werden Signale definiert, denen ein digitaler Wert mit nebenläufigen Anweisungen zugewiesen wird. Am Ende des Kapitels wird erläutert, wie die VHDL-Entwürfe mittels geeigneter Testumgebungen simuliert werden können. Nach dem Durcharbeiten soll der Leser in der Lage sein, synthesefähige VHDL-Beschreibungen für einfache kombinatorische Schaltungen auf Gatterebene entwerfen zu können. Dazu gehört zunächst nur die korrekte Verwendung der Datentypen bit und bit_vector sowie der problemorientierte Umgang mit den port-Modi in, out und buffer. Die syntaktischen und semantischen Unterschiede der bedingten und selektiven Signalzuweisungen sollen verstanden sein. Die Funktion des inout port-Modus wird später im Kapitel 4 erläutert, da zugehörige praktische Anwendungen den Datentyp std_logic_vector erfordern, der erst in diesem Kapitel eingeführt wird.
2.1
Entity, Architektur und Signale
Die in der nachfolgenden Liste aufgeführten VHDL-Elemente sind als grundlegende Strukturelemente jeder VHDL-Beschreibung anzusehen: In der mit entity bezeichneten Entwurfseinheit werden die Schnittstellen eines VHDL-Funktionsblocks nach außen beschrieben. In einem Vergleich eines Board-Designs mit einem VHDL-Quellcode stellt eine entity den zu bestückenden IC-Gehäusetyp dar, der durch die Anzahl und die Bezeichnung der Anschlüsse eindeutig definiert ist. Die Deklaration der Anschlüsse innerhalb der entity erfolgt mit Hilfe einer port-Anweisung. Die architecture beschreibt das Innenleben, d.h. die Funktionalität des VHDLCodes. Jeder entity muss (mindestens) eine architecture zugeordnet sein. In obiger Vorstellung beschreibt also die Architektur, welche Funktion bzw. welcher Chip sich in dem Gehäuse befindet. Ein port-Signal beschreibt die Kommunikation einer entity nach außen. In unserem Modell werden port-Signale verwendet, um verschiedene integrierte Schaltkreise
2 Synthese einfacher Schaltnetze
8
(ICs) auf einem Board (Platine) miteinander zu verknüpfen. Innerhalb einer Architektur werden lokale Signale erforderlich, wenn verschiedene Funktionsblöcke innerhalb eines ICs miteinander verbunden werden sollen. Signale können also auf unterschiedlichen Hierarchieebenen definiert werden. Jedes Signal ist von einem eindeutig zu definierenden Typ. Zur Einführung soll hier zunächst nur der Datentyp bit bzw. bit_vector benutzt werden. Der Wertevorrat des Datentyps bit besteht aus den logischen Werten '0' und '1'. Ein bit_vector stellt einen aus mehreren bit-Signalen bestehenden Bus dar. Dieser Bus kann entweder aufsteigend, z.B. als bit_vector(0 to 7), oder aber abfallend als bit_vector (7 downto 0) bezeichnet werden. Alle Signale müssen einen eindeutigen Namen besitzen, der entweder in der entity oder in der weiter unten erläuterten Signaldeklarationsanweisung (Abschnitt 2.1.1) festgelegt wird. Die Schnittstellen der entity werden als port bezeichnet. Dessen Signalrichtung ist bei der Deklaration anzugeben. Die Syntax eines entity/architecture-Paars besteht aus den beiden Rahmen: entity is [generic();] port(); [< Entitydeklarationen >;] end ; architecture of is [< Architekturdeklarationen >;] begin {;} end ;
Als erstes Beispiel zeigt Code 2-1 die vollständige VHDL-Beschreibung eines Multiplexers mit vier Dateneingängen nach Bild 2-1. -- mux4x1.vhd -- Selektive Signalzuweisung --------------------------entity MUX4X1 is port( S: in bit_vector(1 downto 0); E: in bit_vector(3 downto 0); Y: out bit); end MUX4X1; architecture VERHALTEN of MUX4X1 is begin with S select -- Auswahlsignal Y => => => => => => =>
"S6,S4,S1,S0,S2,S5,S3" is SEG RESET, CLK => CLK, EN => EN_CNT_S, WE => WE_R_S, DIN => XN(19 downto 4), SAMP => SAMP_I); MAC: MAC_FIR generic map( WIDTH => WIDTH ) port map ( CLK => CLK, CLR_REG => CLR_REG, EN_REG => EN_REG, EN_SAT => EN_SAT, COEF => COEF_I, SAMP => SAMP_I, YN => YN ); Z_REG: process(CLK) -- Zustandsaktualisierung begin if (CLK = '1' and CLK'event) then if (RESET = '1') then ZUSTAND {sequential_statement}} end case [LABEL]; [LABEL:] [while expr] loop {sequential_statement} end loop [LABEL]; [LABEL:] for ID in range loop {sequential_statement} end loop [LABEL]; next [LOOPLBL] [when expr]; exit [LOOPLBL] [when expr]; return [expression]; null;
{expr [after TIME,]} | unaffected; [LABEL:] [postponed] with expr select SIGID expr,} )] port map ( {[PORTID =>] SIGID | expr,} )]; LABEL: entity [LIBID.]ENTITYID [(ARCHID)] [[generic map ( {GENID => expr,} )] port map ( {[PORTID =>] SIGID | expr,} )]; LABEL: configuration [LIBID.]CONFID [[generic map ( {GENID => expr,} )] port map ( {[PORTID =>] SIGID | expr,} )]; LABEL: if expr generate [{parallel_statement}] end generate [LABEL];
5. PARALLEL STATEMENTS LABEL: block [is] [generic ( {ID : TYPEID;} );
LABEL: for ID in range generate [{parallel_statement}] end generate [LABEL];
[generic map ( {[GENID =>] expr,} );]] [port ( {ID : in | out | inout TYPEID } ); [port map ( {[PORTID =>] SIGID | expr,} )];] [{declaration}] begin
6. PREDEFINED ATTRIBUTES TYPID’base Base type TYPID’left Left bound value TYPID’right Right-bound value
[{parallel_statement}]
TYPID’high Upper-bound value
end block [LABEL];
TYPID’low Lower-bound value
[LABEL:] [postponed] process [( {SIGID,} )]
TYPID’pos(expr) Position within type
[{declaration}] begin
TYPID’val(expr) Value at position TYPID’succ(expr) Next value in order
[{sequential_statement}]
TYPID’pred(expr) Previous value in order
end [postponed] process [LABEL];
TYPID’leftof(expr) Value to the left in order
[LBL:] [postponed] PROCID({[PARID =>] expr,});
TYPID’rightof(expr) Value to the right in order
[LABEL:] [postponed] assert expr
TYPID’ascending Ascending type predicate
[report string]
TYPID’image(expr) String image of value
[severity note | warning | error | failure];
TYPID’value(string) Value of string image
[LABEL:] [postponed] SIGID = ‘left ?
based literal ::=
SIGID’delayed[(TIME)] Delayed copy of signal
integer # hexint [. hexint] # [E[+|-] integer]
SIGID’stable[(TIME)] Signals event on signal
bit string literal ::= B|O|X “ hexint “
SIGID’quiet[(TIME)] Signals activity on signal
comment ::= -- comment text
SIGID’transaction Toggles if signal active SIGID’event Event on signal ? SIGID’active Activity on signal ? SIGID’last_event Time since last event SIGID’last_active Time since last active SIGID’last_value Value before last event SIGID’driving Active driver predicate SIGID’driving_value Value of driver OBJID’simple_name Name of object OBJID’instance_name Pathname of object OBJID’path_name Pathname to object
7. PREDEFINED TYPES BOOLEAN True or false INTEGER 32 or 64 bits NATURAL Integers >= 0 POSITIVE Integers > 0 REAL Floating-point BIT ‘0’, ‘1’ BIT_VECTOR(NATURAL) Array of bits CHARACTER 7-bit ASCII STRING(POSITIVE) Array of characters
© 1995-1998 Qualis Design Corporation. Permission to reproduce and distribute strictly verbatim copies of this document in whole is hereby granted.
TIME hr, min, sec, ms, us, ns, ps, fs DELAY_LENGTH Time >= 0
8. PREDEFINED FUNCTIONS NOW Returns current simulation time DEALLOCATE(ACCESSTYPOBJ) Deallocate dynamic object FILE_OPEN([status], FILEID, string, mode) Open file FILE_CLOSE(FILEID) Close file
1995-1998 Qualis Design Corporation
Qualis Design Corporation Elite Consulting and Training in High-Level Design Phone: +1-503-670-7200 FAX: +1-503-670-0809 E-mail: [email protected] com Web: http://www.qualis.com Also available: 1164 Packages Quick Reference Card Verilog HDL Quick Reference Card
1995-1998 Qualis Design Corporation
12 VHDL-Syntaxübersicht und Bibliotheken
462
UX01Z Resolved U, X, 0, 1 & Z STD_ULOGIC_VECTOR(na to | downto na) Array of STD_ULOGIC STD_LOGIC_VECTOR(na to | downto na) Array of STD_LOGIC
1164 PACKAGES QUICK REFERENCE CARD Revision 2.1
1.3. OVERLOADED OPERATORS Description
Left
bitwise-and u/l,uv,lv
Operator
Right
and, nand u/l,uv,lv
bitwise-or
u/l,uv,lv
or, nor
u/l,uv,lv
() Grouping [ ] Optional
bitwise-xor
u/l,uv,lv
xor, xnor
u/l,uv,lv
{} Repeated | Alternative
bitwise-not
bold As is CAPS User Identifier
1.4. CONVERSION FUNCTIONS
italic VHDL-93 c commutative
From
To
Function
b ::= BIT
u/l
b
TO_BIT(from[, xmap])
bv ::= BIT_VECTOR
uv,lv
bv
TO_BITVECTOR(from[, xmap])
u/l ::= STD_ULOGIC/STD_LOGIC
b
u/l
TO_STDULOGIC(from)
uv ::= STD_ULOGIC_VECTOR
bv,uv
lv
TO_STDLOGICVECTOR(from)
lv ::= STD_LOGIC_VECTOR
bv,lv uv TO_STDULOGICVECTOR(from)
un ::= UNSIGNED
not
u/l,uv,lv
sg ::= SIGNED in ::= INTEGER
2. IEEE’S NUMERIC_STD
na ::= NATURAL
2.1. PREDEFINED TYPES
sm ::= SMALL_INT
UNSIGNED(na to | downto na) Array of
(subtype INTEGER range 0 to 1)
STD_LOGIC SIGNED(na to | downto na) Array of
1. IEEE’S STD_LOGIC_1164 1.1. LOGIC VALUES
STD_LOGIC
2.2. OVERLOADED OPERATORS Op
Right
Return
‘X’/’W’ Strong/Weak unknown
abs
sg
sg
‘0’/’L’ Strong/Weak 0
-
sg
sg
‘U’ Uninitialized
Left
‘1’/’H’ Strong/Weak 1
un
+,-,*,/,rem,mod
un
un
‘Z’ High Impedance
sg
+,-,*,/,rem,mod
sg
sg
‘-’ Don’t care
un
+,-,*,/,rem,mod c
na
un
sg
+,-,*,/,rem,mod c
in
sg
STD_ULOGIC Base type
un
,=,=,/=
un
bool
Subtypes:
sg
,=,=,/=
sg
bool
STD_LOGIC Resolved STD_ULOGIC
un
,=,=,/= c
na
bool
X01 Resolved X, 0 & 1
sg
,=,=,/= c
In
bool
X01Z Resolved X, 0, 1 & Z
2.3. PREDEFINED FUNCTIONS
UX01 Resolved U, X, 0 & 1
SHIFT_LEFT(un, na) un
1.2. PREDEFINED TYPES
1995-1998 Qualis Design Corporation
1995-1998 Qualis Design Corporation
12 VHDL-Syntaxübersicht und Bibliotheken
463
SHIFT_RIGHT(un, na) un
SHIFT_LEFT(un, na)
un
SHIFT_LEFT(sg, na) sg
SHIFT_RIGHT(un, na)
un
SHIFT_RIGHT(sg, na) sg
SHIFT_LEFT(sg, na)
sg
ROTATE_LEFT(un, na) un
SHIFT_RIGHT(sg, na)
sg
ROTATE_RIGHT(un, na) un
ROTATE_LEFT(un, na)
un
ROTATE_LEFT(sg, na) sg
ROTATE_RIGHT(un, na)
un
ROTATE_RIGHT(sg, na) sg
ROTATE_LEFT(sg, na)
sg
RESIZE(sg, na) sg
ROTATE_RIGHT(sg, na)
sg
RESIZE(un, na) un
RESIZE(sg, na)
sg
STD_MATCH(u/l, u/l) bool
RESIZE(un, na)
un
STD_MATCH(ul, ul) bool
3.4. CONVERSION FUNCTIONS
STD_MATCH(lv, lv) bool
From
To
Function
STD_MATCH(un, un) bool
un,bv
sg
SIGNED(from)
STD_MATCH(sg, sg) bool
sg,bv
un
UNSIGNED(from)
2.4. CONVERSION FUNCTIONS
un,sg
bv
BIT_VECTOR(from)
From
To
Function
un,sg
in
TO_INTEGER(from)
un,lv
sg
SIGNED(from)
na
un
TO_UNSIGNED(from)
sg,lv
un
UNSIGNED(from)
in
sg
TO_SIGNED(from)
un,sg
lv
STD_LOGIC_VECTOR(from)
un,sg
in
TO_INTEGER(from)
4. SYNOPSYS’ STD_LOGIC_ARITH
na
un
TO_UNSIGNED(from, size)
4.1. PREDEFINED TYPES
in
sg
TO_SIGNED(from, size)
UNSIGNED(na to | downto na) Array of STD_LOGIC
3. IEEE’S NUMERIC_BIT
SIGNED(na to | downto na) Array of
3.1. PREDEFINED TYPES
STD_LOGIC
UNSIGNED(na to | downto na) Array of BIT
SMALL_INT Integer subtype, 0 or 1
SIGNED(na to | downto na) Array of BIT
4.2. OVERLOADED OPERATORS
3.2. OVERLOADED OPERATORS Left
Left
Op
Right
Return
abs
sg
sg
-
sg
sg
Op
Right
Return
abs
sg
sg,lv
-
sg
sg,lv
un
+,-,*,/
un
un,lv
un +,-,*,/,rem,mod un
un
sg
+,-,*,/
sg
sg,lv
sg +,-,*,/,rem,mod sg
sg
sg
+,-,*,/ c
un
sg,lv
un +,-,*,/,rem,mod c
na
un
+,- c
in
un,lv
sg +,-,*,/,rem,mod c in
sg
sg
+,- c
in
sg,lv
un ,=,=,/=
un
bool
un
+,- c
u/l
un,lv
sg ,=,=,/=
sg
bool
sg
+,- c
u/l
sg,lv
un ,=,=,/= c
na
bool
un
,=,=,/=
un
bool
sg ,=,=,/= c
in
bool
sg
,=,=,/=
sg
bool
3.3. PREDEFINED FUNCTIONS
un
,=,=,/= c
in
bool
1995-1998 Qualis Design Corporation
1995-1998 Qualis Design Corporation
un
12 VHDL-Syntaxübersicht und Bibliotheken
464 sg
,=,=,/= c
in
bool
lv
,=,=,/=
lv
bool
4.3. PREDEFINED FUNCTIONS
lv
,=,=,/= c
in
bool
SHL(un, un) un
SHR(un, un) un
6.2. CONVERSION FUNCTIONS
SHL(sg, un) sg
SHR(sg, un) sg
From
To
Function
EXT(lv, in) lv
zero-extend
lv
in
CONV_INTEGER(from)
SEXT(lv, in) lv
sign-extend
4.4. CONVERSION FUNCTIONS
7. SYNOPSYS’ STD_LOGIC_MISC
From
To
Function
7.1. PREDEFINED FUNCTIONS
un,lv
sg
SIGNED(from)
AND_REDUCE(lv | uv)
u/l
sg,lv
un
UNSIGNED(from)
OR_REDUCE(lv | uv)
u/l
sg,un
lv
STD_LOGIC_VECTOR(from)
XOR_REDUCE(lv | uv)
u/l
un,sg
in
CONV_INTEGER(from)
in,un,sg,u un
CONV_UNSIGNED(from,size)
in,un,sg,u sg
CONV_SIGNED(from,size)
in,un,sg,u lv CONV_STD_LOGIC_VECTOR(from,size)
5. SYNOPSYS’ STD_LOGIC_UNSIGNED 5.1. OVERLOADED OPERATORS Left
Op
Right
Return
+
lv
lv
lv
+,-,*
lv
lv
lv
+,-c
in
lv
lv
+,- c
u/l
lv
lv
,=,=,/=
lv
bool
lv
,=,=,/= c
in
bool
5.2. CONVERSION FUNCTIONS From
To
Function
lv
in
CONV_INTEGER(from)
6. SYNOPSYS’ STD_LOGIC_SIGNED 6.1. OVERLOADED OPERATORS
8. CADENCE’S STD_LOGIC_ARITH 8.1. OVERLOADED OPERATORS Left
Op
Right
Return
u/l
+,-,*,/
u/l
u/l
lv
+,-,*,/
lv
lv
lv
+,-,*,/c
u/l
lv
lv
+,-c
in
lv
uv
+,-,*
uv
uv
uv
+,-,*c
u/l
uv
uv
+,-c
in
uv
lv
,=,=,/= c
in
bool
uv
,=,=,/= c
in
bool
8.2. PREDEFINED FUNCTIONS SH_LEFT(lv, na)
lv
SH_LEFT(uv, na)
uv
SH_RIGHT(lv, na)
lv
SH_RIGHT(uv, na)
uv
ALIGN_SIZE(lv, na)
lv
ALIGN_SIZE(uv, na)
uv
ALIGN_SIZE(u/l, na)
lv,uv
C-like ?: replacements: COND_OP(bool, lv, lv)
lv
Op
Right
Return
COND_OP(bool, uv, uv)
uv
abs
lv
lv
COND(bool, u/l, u/l)
u/l
+,-
lv
lv
8.3. CONVERSION FUNCTIONS
lv
+,-,*
lv
lv
From
To Function
lv
+,-c
in
lv
lv,uv,u/l
in
TO_INTEGER(from)
lv
+,- c
u/l
lv
in
lv
TO_STDLOGICVECTOR(from,size)
Left
1995-1998 Qualis Design Corporation
1995-1998 Qualis Design Corporation
12 VHDL-Syntaxübersicht und Bibliotheken in uv TO_STDULOGICVECTOR(from,size)
465 sg
sla,sra,sll,srl,rol,ror sg
sg
and,nand,or,nor,xor,
uv
sla,sra,sll,srl,rol,ror
xnor
9. MENTOR’S STD_LOGIC_ARITH 9.1. PREDEFINED TYPES UNSIGNED(na to | downto na) Array of
sg
sg uv
sg uv
9.3. PREDEFINED FUNCTIONS ZERO_EXTEND(uv | lv | un, na)
same
ZERO_EXTEND(u/l, na)
lv
SIGN_EXTEND(sg, na)
sg
9.2. OVERLOADED OPERATORS
AND_REDUCE(uv | lv | un | sg)
u/l
Left
u/l u/l
STD_LOGIC SIGNED(na to | downto na) Array of STD_LOGIC Op
Right
Return
OR_REDUCE(uv | lv | un | sg)
abs
sg
sg
XOR_REDUCE(uv | lv | un | sg)
-
sg
sg
9.4. CONVERSION FUNCTIONS
u/l
+,-
u/l
u/l
From
uv
+,-,*,/,mod,rem,** uv
uv
u/l,uv,lv,un,sg in
TO_INTEGER(from)
lv
u/l,uv,lv,un,sg in
CONV_INTEGER(from)
u/l
TO_STDLOGIC(from)
lv
+,-,*,/,mod,rem,** lv
To
Function
un
+,-,*,/,mod,rem,** un
un
bool
sg
+,-,*,/,mod,rem,** sg
sg
na
un
TO_UNSIGNED(from,size)
bool
na
un
CONV_UNSIGNED(from,size)
sg
TO_SIGNED(from,size)
sg
CONV_SIGNED(from,size)
un sg
,=,=,/=
un
,=,=,/=
sg
bool
in
not
un
un
in
not
sg
sg
na
un
na TO_STDULOGICVECTOR(from,size)
un
and,nand,or,nor,xor un
lv
sla,sra,sll,srl,rol,ror lv
lv
un
sla,sra,sll,srl,rol,ror un
un
lv TO_STDLOGICVECTOR(from,size) uv
© 1995-1998 Qualis Design Corporation. Permission to reproduce and distribute strictly verbatim copies of this document in whole is hereby granted.
Qualis Design Corporation Elite Consulting and Training in High-Level Design Phone: +1-503-670-7200 FAX: +1-503-670-0809 E-mail: [email protected] com Web: http://www.qualis.com Also available: VHDL Quick Reference Card Verilog HDL Quick Reference Card
1995-1998 Qualis Design Corporation
1995-1998 Qualis Design Corporation
13 Literaturverzeichnis [1]
Schlicht, Nützliche Konventionen; Elektronik 22 1996
[2]
D. J. Smith, Hdl Chip Design: A Practical Guide for Designing, Synthesizing & Simulating Asics & Fpgas Using Vhdl or Verilog; Doone Publications 1996
[3]
Standard 1164-1993, IEEE Standard Multivalue Logic System for VHDL Model Interoperability; IEEE Standards Departement New York 1994
[4]
ISE WebPACK ist ein Simulations- und Synthesewerkzeug der Fa. Xilinx 2012 http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.htm
[5]
FPGA-Express Softwaredokumentation, Synopsys Inc. 1998 URL: http://www.synopsys.com
[6]
D. Pellerin, D. Taylor, VHDL Made Easy; Prentice-Hall Upper Saddle River 1997
[7]
G. Lehmann, B. Wunder, M. Selz; Schaltungsdesign mit VHDL; Franzis-Verlag Poing 1994
[8]
J.F. Wakerly, Digital Design Principles and Practices; Prentice-Hall Upper Saddle River 4th edition 2006
[9]
Datenbuch der Serie 74LS, Texas Instruments Deutschland Freising
[10]
Aurora Softwaredokumentation, Viewlogic Inc. 1997 URL: http://www.mentor.com
[11]
J. Bhasker, A VHDL Synthesis Primer; Star Galaxy Publishing 2nd edition 1998
[12]
J. Bhasker, Die VHDL Syntax; Prentice-Hall Upper Saddle River 1996
[13]
J.R. Armstrong, F.G. Gray, VHDL Design Representation and Synthesis, Prentice-Hall Upper Saddle River 2nd edition 2000
[14]
P.J. Ashenden, The VHDL Cookbook; University of Adelaide South Australia URL://ftp.cs.adelaide.edu.au/pub/VHDL-Cookbook
[15]
R. Airiau, J.M. Berge, V. Olive, Circuit Synthesis with VHDL; Kluwer Academic Publishers Boston Dordrecht 1994
[16]
K. tenHagen, Abstrakte Modellierung digitaler Schaltungen; Springer Verlag Berlin, Heidelberg 1995
[17]
A. Bleck, M. Goedecke, S. Huss, K. Waldschmidt, Praktikum des modernen VLSI-Entwurfs; Teubner-Verlag Stuttgart 1996
[18]
E. Hering, K. Bressler, J. Gutekunst, Elektronik für Ingenieure; VDI-Verlag Berlin 1994
[19]
R.H. Katz, G. Borriello, Contemporary Logic Design; Pearson Prentice-Hall 2nd edition 2005
468
13 Literaturverzeichnis
[20]
Standard 1076.6, Standard for VHDL Register Transfer Level Synthesis; IEEE Standards Departement New York 1999
[21]
Private Mitteilung der Fa. Synopsys Inc.
[22]
XILINX, Documentation and Literature http://www.xilinx.com/support/library.htm 2007
[23]
AMPP Catalog, Altera Corporation San Jose CA-USA 1996
[24]
Core Solutions Products Catalog, XILINX-Corp. San Jose CA-USA 1998
[25]
FPGA Data Book And Design Guide; Actel Corp. Sunnyvale CA-USA 1995
[26]
Altera Data Book; Altera Corp. San Jose CA-USA 1995
[27]
Electronic Design Interchange Format Version 2.0.0; Electronic Industries Association Washington DC 1987
[28]
J. Teich, Ch. Haubelt, Digitale Hardware/Software Systeme, Synthese und Optimierung; Springer Verlag Berlin Heidelberg 2. Auflage 2007
[29]
G. De Micheli, Synthesis and Optimization of Digital Circuits; McGraw-Hill New York 1994
[30]
Lattice Data Book 1994; Lattice Semiconductor Corporation; Hillsboro Oregon USA
[31]
Standard 1076.3, VHDL Synthesis Packages; IEEE Standards Departement New York 1995
[32]
Standard 1076-1993, IEEE Standard VHDL Language Reference Manual; IEEE Standards Departement New York 1994
[33]
R.S. Pressman, Software Engineering a Practitioner's Approach; McGraw-Hill New York 1997
[34]
C. Siemers, Prozessorbau; Carl Hanser Verlag München Wien 1999
[35]
W. Oberschelp, G. Vossen, Rechneraufbau und Rechnerstrukturen; Oldenbourg Verlag München 10. Auflage 2006
[36]
G. Scarbata, Synthese und Analyse digitaler Schaltungen; Oldenbourg Verlag München 2. Auflage 2001
[37]
P.J. Ashenden, The Designer's Guide to VHDL; Morgan Kaufmann Publishers Inc. San Francisco 3rd edition 2008
[38]
CUPL-Software Documentation, Logical Devices Inc; Denver Colorado URL: http://www.logicaldevices.com
[39]
B. Cohen, VHDL Answers to Frequently Asked Questions; Kluwer Academic Publishers Boston Dordrecht 2nd edition 1998
[40]
Texas Instruments, AHC/AHCT Logic Databook Advanced High_Speed CMOS Data Book 1997
[41]
D.D. Gajski, Principles of Digital Design; Prentice-Hall Upper Saddle River New Jersey 1997
[42]
B. Cohen, VHDL Coding Styles and Methodologies; Kluwer Academic Publishers Boston Dordrecht London 2nd edition 1999
[43]
D.L. Perry, VHDL, Programming by Example; McGraw-Hill New York 4th edition 2002
13 Literaturverzeichnis
469
[44]
C.H. Roth, L.K. John, Digital Systems Design using VHDL; Thomson Engineering 2nd edition 2007
[45]
R. Ernst, I. Könenkamp, Digitale Schaltungstechnik für Elektrotechniker und Informatiker; Spektrum Akademischer Verlag Heidelberg 1995
[46]
Texas Instruments, Digital Design Seminar; Reference Manual 1998
[47]
ACTEL, Digital Library CD. FPGA Device Data and Application Notes; Sunnyvale California USA 1999
[48]
XILINX, Synthesis and Simulation Design Guide v13.4; UG626 2012 http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_4/sim.pdf
[49]
G. De Micheli, R. Brayton, A. Sangiovanni-Vincentelli, Optimal State Assignment for Finite State Machines; IEEE Transactions on CAD/ICAS, Vol. CAD-4, No. 3, page 269, July 1985
[50]
St.K. Knapp, Accelerate FPGA-Macros with One-Hot Approach; Electronic Design, Penton Publications September 1990
[51]
Advanced Micro Devices, PAL Device Data Book and Design Guide Sunnyvale California USA 1995
[52]
Ch. Siemers, A. Sikora, Taschenbuch der Digitaltechnik; Carl Hanser Verlag München 2. Auflage 2007
[53]
M. Wannemacher, Das FPGA Kochbuch; International Thomson Publishing Company Bonn 1998
[54]
S.D. Brown, R.J. Francis, J. Rose, S.G. Vranesic, Field-Programmable Gate Arrays; Kluwer Academic Publishers Boston Dordrecht London 1992
[55]
XILINX, Virtex-7 FPGA Family, 2012 http://www.xilinx.com/products/silicon-devices/fpga/virtex-7/index.htm
[56]
M. Jain, The VHDL-Forecast; IEEE-Spectrum p. 36, June 1993
[57]
VHDL-International Markterhebung 1997; URL: http://www.vhdl.org
[58]
VHDL Quick Reference Card, 1164 Packages Quick Reference Card; Qualis Design Corporation; URL: http://www.qualis.com, 1998
[59]
ModelSim PE Version 10.1c 2012 URL: http://model.com/content/modelsim-pe-student-edition-hdl-simulation
[60]
Design Automation Standards Commitee of the IEEE Computer Society, P1497 „DRAFT Standard for Standard Delay Format (SDF)“
[61]
IEEE 1076.4 TAG (Technical Actin Group), Standard VITAL ASIC Modeling Specifications IEEE P1076.4
[62]
J.L. Hennessy, D.A. Patterson, Computer Architecture; Morgan Kaufmann Publishers San Francisco 5th ed. 2011
[63]
D.A. Patterson, J.L. Hennessy, Computer Organization and Design; Morgan Kaufmann Publishers San Francisco 4th ed. 2011
[64]
Using Block SelectRAM + Memory in Spartan-II FPGAs; XilinxXAPP 173 URL: http://www.xilinx.com
[65]
Der Tabellen-Assembler HASM wurde von Dr.-Ing. H.P. Hohe entwickelt
[66]
Zum Intel HEX-Format s. z.B. http://www.cs.net/lucid/intel.htm
470
13 Literaturverzeichnis
[67]
J. Reichardt, B. Schwarz, VHDL-Synthese; Oldenbourg Wissenschaftsverlag München 5. Auflage 2009
[68]
Informationen zu SystemC unter http://www.systemc.org
[69]
Für die Synthese des SystemC-Codes wurde das Programm sc2v verwendet http://www.opencores.org/projects.cgi/web/sc2v/overview
[70]
E.C. Ifeachor; B.W. Jervis, Digital Signal Processing, A Practical Approach; Prentice-Hall 2nd edition 2002
[71]
St.W. Smith, Digital Signal Processing; A Practical Guide for Engineers and Scientists; Elsevier-Newnes 2002; pdf-files available from http://www.dspguide.com; Copyright © 1997-2006 by Steven W. Smith
[72]
R.G. Lyons, Understanding Digital Signal Processing; Prentice-Hall 3rd ed. 2010
[73]
A. Bateman, I.Paterson-Stephens, The DSP Handbook. Algorithms, Applications and Design Techniques; Prentice-Hall 2002
[74]
D.Ch. v. Grünigen, Digitale Signalverarbeitung; Fachbuchverlag Leipzig Hanser Verlag 4. Auflage 2008
[75]
A.V. Oppenheim, R.W. Schafer, J.R. Buck, Zeitdiskrete Signalverarbeitung; Pearson Studium 2. Auflage 2004
[76]
A. Nischwitz, P. Haberäcker, Computergrafik und Bildverarbeitung; Band 2 Bildverarbeitung; 3. Auflage, Vieweg-Teubner 2011
[77]
T. Bose, Digital Signal and Image Processing; Wiley 2003
[78]
W. Wolf, FPGA-Based System Design; Prentice-Hall 2nd printing 2004
[79]
H. Veendrick, Deep-Submicron CMOS ICs, From Basics to ASICs; Kluwer Academic Publishers 2nd edition 2000
[80]
U. Meyer-Baese, Digital Signal Processing with Field Programmable Gate Arrays; Springer Verlag 3rd edition 2007
[81]
XILINX, XST User Guide v12.4; UG627 2010; http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_1/xst.pdf
[82]
ALTERA Devices; http://www.altera.com
[83]
XILINX, System Generator for DSP; www.xilinx.com
[84]
XILINX, Spartan 3 Generation FPGA User Guide; UG331 2011; http://www.xilinx.com/support/documentation/user_guides/ug331.pdf
[85]
The MathWorks, Signal Processing and Communications http://www.mathworks.de
[86]
Synopsys, Synplify Pro; http://www.synopsys.com/Tools/Implementation/FPGAImplementation/ FPGASynthesis/Pages/SynplifyPro.aspx
[87]
XILINX, Core Generator; http://www.xilinx.com/support/sw_manuals/sysgen_bklist.pdf
[88]
P.J. Ashenden, Digital Design; An Embedded System Approach Using VHDL; Morgan Kaufmann 2008
[89]
XILINX, AccelDSP Synthesis Tool; http://www.xilinx.com/tools/acceldsp.htm
[90]
J. Reichardt, Lehrbuch Digitaltechnik; Oldenbourg Wissenschaftsverlag München 2. Auflage 2011
13 Literaturverzeichnis
471
[91]
XILINX, Spartan-6 FPGA DSP48A1 Slice User Guide UG389 2009; http://www.xilinx.com
[92]
XILINX, Virtex-5 FPGA XtremeDSP Design Considerations User Guide UG193 2010; http://www.xilinx.com
[93]
J.O. Krah, FPGAs in der Automatisierungstechnik; http://www.elektroniknet.de; 04.08.2011
[94]
S. Mathapati, FPGA-Based High Performance AC Drives; Dissertation Uni Paderborn; 2011
[95]
S. S. Haykin, Adaptive Filter Theory; Prentice Hall 4th edition 2001
[96]
H. Unbehauen, Regelungstechnik II; Zustandsregelungen, digitale und nichtlineare Regelsysteme; Vieweg-Teubner 9. Auflage 2007
[97]
G. F. Franklin, J. D. Powell, A. Emami-Naeini, Feedback Control of Dynamic Systems; Pearson 6th edition 2008
[98]
A. N. Sloss, D. Symes, Ch. Wright, ARM System Developer’s Guide; Morgan Kaufmann, Elsevier 2004
[99]
Ch. Schneider, Ein System-on-Chip-basiertes Fahrspurführungssystem; Bachelor’s Thesis HAW Hamburg 2011; http://opus.haw-hamburg.de/volltexte/2011/1397/pdf/BA_Schneider.pdf
[100]
M. Kirschke, FPGA-basierte MPSoC-Plattform zur Integration eines Antikollisionssystems in die Fahrspurführung eines autonomen Fahrzeugs, Masters’s Thesis HAW Hamburg 2012; http://opus.haw-hamburg.de/volltexte/2012/1769/pdf/ma_kirschke.pdf
[101]
FAUST-Projekt HAW-Hamburg; http://www.informatik.haw-hamburg.de/faust.html
[102]
St. Pareigis, B. Schwarz, F. Korf, FAUST: Entwicklung von Fahrerassistenz- und autonomen Systemen; Mobilität und Echtzeit, Informatik Aktuell, Springer 2007
[103]
B. Schwarz, Ein FPGA-basiertes System-on-Chip in der Echtzeitbildverarbeitung; Eingebettete Systeme, Informatik Aktuell, Springer 2010
[104]
B. Schwarz, SoC-Fahrzeug mit CCD-Kamera und Spartan-3A-DSP FPGA zur automatischen Spurführung; SoC-Fz-WS11.wmv; http://www.informatik.haw-hamburg.de/schwarz.html
[105]
D. Schetler, Automatischer Ausweichassistent mit einer Laserscannerbasierten Abstandsregelung für ein fahrerloses Transportsystem; Master’s Thesis HAW Hamburg 2007; http://opus.haw-hamburg.de/volltexte/2008/473/
[106]
B. Schwarz, SCV Sensor Controlled Vehicle mit Laserscanner-basiertem Ausweichassistenten; SCV_Ausweichassistent.mpg; http://www.informatik.haw-hamburg.de/schwar.html
472
13 Literaturverzeichnis
[107]
N. Liu, Ein automatischer Parkassistent auf Basis einer LaserscannerAbstandserfassung für ein fahrerloses Transportsystem; Master’s Thesis HAW Hamburg 2008; http://opus.haw-hamburg.de/volltexte/2008/608/pdf/Liu_Masterarbeit.pdf
[108]
H. Wilken, M. Kirschke, B. Schwarz, Dual-MicroBlaze Xilkernel System Eyes Automotive Apps; Xilinx Xcell journal Issue 77 2011
[109]
R. Weber, CORDIC-Implementierung in einem Fahrspurführungssystem auf einer Plattform mit gekoppelten SoCs; Bachelor’s Thesis HAW Hamburg 2011; http://opus.haw-hamburg.de/volltexte/2011/1408/
[110]
D. Mellert, Modellierung einer Video-basierten Fahrspurerkennung mit dem Xilinx System Generator für eine SoC-Plattform; Bachelor’s Thesis HAW Hamburg 2010; http://opus.haw-hamburg.de/volltexte/2010/1054/pdf/ba_mellert.pdf
[111]
J. Reichardt, B. Schwarz, VHDL-Synthese; Oldenbourg Wissenschaftsverlag München 6. Auflage 2012; Begleitmaterial zum Kapitel 10 http://www.oldenbourg-verlag.de/wissenschaftsverlag/vhdl-synthese/
14 Sachregister A Abhängigkeitsnotation 426 Abtastperiode 254 ACTEL 186 Addierer 4, 33 Addierer/Subtrahierer 170 steuerbar, kaskadierbar 105 Addiererbaum balancierter 242, 265, 273 Adressdecoder 111 Aggregat 9, 106, 261, 310, 392 (others => 'Z') 79 Akkumulator 262, 303, 359 Algorithmic-State-Machine 380 ALTERA 126, 186 Alternativoperator | 34, 86 ALU 204, 221 Antivalenz 21 Anweisung nebenläufige 4, 14, 28, 156, 159 sequentielle 4, 27, 29, 31, 178 architecture 7 Architektur 4 Argumentliste 181 Arithmetik verteilte 193, 246 Arithmetikoperator 94 Arithmetische Operationen 246, 389 array 187 ASIC 1, 155 ASM-Block 383 Assembler 231 assert 63 Attribut ENUM_ENCODING 145 'event 31 'length 111
'range 166, 179 SAFE_RECOVERY_STATE 151, 392 attribute 189 Auflösungsfunktion 76, 114 Aufzählungstyp 123, 145 Aurora 2, 84, 181 Ausgangsflipflop 132, 137 Ausgangsschaltnetz 120, 125, 131, 140 Ausgangssignalsynchronisation 138, 141 Automat 4, 308 Drei-Prozess 133, 135 Ein-Prozess 133, 143 Mehr-Prozess 142 Zwei-Prozess 133, 146 zyklischer 142
B begin 10 Bezeichner 9 Bibliothek ieee.std_logic_1164 75 std.textio 68 bit 8, 114 bit_vector 8 Bit-String 9, 35, 36, 68 Black-Box 186, 195 Blockdiagramm 155, 427 Block-RAM 188, 204 Blockschaltbild 159 boolean 16 Boole'scher Ausdruck 37 Bottom-Up-Entwurf 155 buffer 11, 99, 175 Bus 8, 13 Buskommunikation 75, 81 Bussignalzuweisung 13 Busteilnehmer 81
14 Sachregister
474
C CAE-Werkzeug 1 case 32 C-Hazard 207, 221, 233 CLB 148 clock edge process 44 Clock Skew 46 Clock-Enable 126 Code-Umsetzer Binär-BCD 83 Codierung Binäre 199 einschrittige 144 explizite 145 One-Hot 144, 148, 199 sequentielle 134, 144 Compilation 166, 198 component 14, 160 constant 183 conv_integer 187 Core Generator 192, 194 CPLD 1, 17, 125, 155 CPU 203, 205
D Datenflussdarstellung 3 Datenpfad 60, 155, 300, 386, 426 Datentyp abgeleiteter 108 bit 8, 114 bit_vector 8 Empfehlung 114 integer 4, 93, 107 mehrwertiger 4 natural 52, 108 positive 108 selbstdefiniert 29 signed 93 std_logic 75, 83 std_logic_vector 93 std_ulogic 75, 83 unsigned 93 Datenübertragung parallele 122 serielle 122 Defaultwert 57, 62, 128 Deklaration 29 Deklarationsteil 164
DeMorgan 22, 45, 49, 85, 131 Design Reuse 155 Designhierarchie 199 D-Flipflop 30, 43, 62 Differenzengleichung 241, 319 Differenzengleichungen 357, 370, 407 Timinganalyse 398 Digitaler Signalprozessor 347 Digitalfilter 192, 239 Distributed-RAM 186, 188 D-Latch 62 Don't-Care 4, 75, 83, 85 Durchsatz 408 DUT 63
E EDIF-Netzliste 195 Eingangsflipflop 137 Eingangssignal synchrones 130 Eingangssignalsynchronisation 138 Ein-Prozess-Modell 354, 359 Elaboration 166, 198 elsif 36 Empfindlichkeitsliste 29, 44, 65 unvollständige 59 vollständige 62 ENABLE 123 entity 7 Entwurf struktureller 155 Entwurfseinheit 4 Entwurfsvorgaben synthesespezifische 60 ENUM_ENCODING 145 exit when 39 EX-Phase 207
F Fahrzeugmodell 405 false 16 Feldzugriff indiziert 93, 111 Festkommaarithmetik 239 Filterskalierung 250 Finite State Machine 119 FIR-Filter 192, 239 Linear-Phasen-Struktur 279 linearphasig 244
14 Sachregister sequentielle Struktur 300 Syntheseergebnis 264, 266, 279, 282, 314 Systolisches Array 294 Timinganalyse 298 transponierte Form 245, 289 Flanke abfallende 61 ansteigende 61 Flipflop 28, 48, 60, 62, 182 Matrixstrukturen 111 taktzustandsgesteuert 55 Folgezustand 139 falscher 138 for loop 32, 166, 173 for-Schleife 39, 40 FPGA 1, 18, 125, 148, 155, 186 FPGA-Evaluationsboard 190 FPGA-Express 2, 85, 181 Freigabeeingang 44 Freigabesignal 100, 112 Frequenzgang 252, 322 Frequenzteiler 50 FSM 119, 308, 392 function 157, 178 Fundamentalmatrix 355 Funktion 178, 183 Boole'sche 21
G generate 168 generic 40, 52, 166, 330 generic map 167, 174 Gray-Codierung 312 Grenzwerte 39 Groß-/Kleinschreibung 9 Guard-Bit 240, 248, 249, 319, 335
H Hardware kombinatorische 27 sequentielle 27 Hardwaremakro 3 Hardware-Software-Cosimulation 347 Hazard 207 hexadezimal 35 Hierarchische Strukturierung 156 Huffman-Normalform 133
475
I identifier 9 ID-Phase 207 IEEE-Standard 1076.6 186 IEEE-Standard 2 1076.3 145 1076.6 61 1164 75, 183 Syntheserichtlinien 30, 43 IEEE-Standard 1076-1993 429 IF-Phase 207 if-then-else 32, 36, 37 IIR-Filter 239, 319 bilineare z-Transformation 319 Direktform I 324 Direktform II 324 modifizierte Direktform II 335 Signallaufzeitpfad 324, 338 Timinganalyse 338, 398 transponierte Direktform II 324, 327 Impulsantwort 253 in 9 Initialisierung 47, 164 inout 11, 81 Instanz 160, 163 Instanziierung 66 iterative 168 Instruktionsformat 206 Instruktionssatz 206 Instruktionssatz-Simulator 230 integer 107, 187, 330 Integerarithmetik 173, 360 Integration analytische 355 numerische 368 Intel HEX-Format 206 Intellectual Property 3, 155, 186 Interruptanforderung 161 IP-Block 3, 186, 193 ISE-Implementierungswerkzeug 237
J Johnson-Zähler 50 JTAG-Interface 186
14 Sachregister
476
K Koeffizienten symmetrische 244, 246, 260, 279, 321 Kommentar 9 Komparator 4, 96 Komponente 155, 157, 160 Komponentendeklaration 160, 163, 183 Komponentengenerator 192 Komponenteninstanziierung 160, 163 Komponentenkonfiguration 160 Konfiguration 165 Konfigurationsdatei 20 Konstante 29, 145, 181 Konversionsfunktion 88, 96, 111 arithmetische 110 To_bit 88 To_bitvector 88, 104 To_StdLogicVector 104 To_StdULogic 88 To_StdULogicVector 88
L Latch 23, 28, 60, 62, 182 transparentes 55, 124 Latenz 132, 138, 139, 194, 408 Latenzerhöhung 137, 141 Laufindex 39 Laufzeitausgleich 243 Laufzeitfehler 46 Laufzeitpfad kritischer 61 library 77, 157, 184 Logik kombinatorische 28, 48, 57, 60, 62, 120 sequentielle 28, 119 Logikminimierung 23, 84, 134 Lokalität 157 Look-Up-Tabelle 18, 148
M MAC-Einheit 239, 300 Makrozelle 147 MATLAB 197 Simulink 347 System Generator 349 MATLAB-Funktion butter 323 c2d 357
cheby1 323 ellip 323 fir1 193, 252 impz 253 plot 253 ss 357 stepz 253 sysd.a 358 tf2sos 323 Mealy-Automat 121, 126, 308 verkettet 132, 141 Medvedev-Automat 121 Mehrzyklus-Datenpfad 380 MEM-Phase 207 metastabil 138 metastabiler Zustand 226 Mikroprozessor 203 Minimierungsfähigkeit 19 Minimum-Bit-Change 144 MIPS 207 ModelSim 13, 195 Analogdarstellung 263 Modulgenerator 199 Modulo-Operator mod 109 Moore-Automat 119, 122, 135, 139, 308 Multiplexer 8, 19, 21, 60, 381, 386 Multiplikation 242, 249, 360, 389
N natural 52 Netzliste 155 Neunwertige Logik 87 next when 39 NOP 207 null 32, 56
O oktal 35 open 164 Operator arithmetischer 4 assoziativer 18 Boole'scher 16, 18 logischer 18 Optimierung Architektur 198 Logik 198 Optimierungsalgorithmen 134
14 Sachregister order named 164, 178 positional 164, 178 others => 13 out 10 Overflowsignal 170
P package 157, 178, 183, 210 body 184 Deklaration 184 PAL 147 Parameter aktuelle 167 Parametrisierung 40, 166 Paritätsgenerator 40, 64, 179 serieller 42 PCI-Bus 155 Pipeline 207, 309, 408 Pipelining 4, 60, 132, 138, 243, 289 Place and Route 195 PLD 23 port 7, 8, 160 Port Actual 163 Local 163 port map 14, 163, 167, 174 port-Modus 7, 9, 11, 175 port-Signal 7 PRESET asynchroner 62 Priorität 18 Prioritätsencoder 20, 36, 97, 161 Prioritized-Adjacency 144 procedure 178 process 27 Produktterm 144 Prozedur 183 Prozedurdefinition 180 Prozess 28, 156, 159 getakteter 61 kombinatorischer 124, 128 mit Empfindlichkeitsliste 29 ohne Empfindlichkeitsliste 29 Prozessorelement 300, 380 Prozessorsystem 161 Pseudotetrade 83 Pseudozustand 51, 128, 131
477
Q Q-Format 239, 247, 360, 372, 388, 411
R RAM 186, 305 RAM_STYLE 189 read 68 readline 68 Register 43, 48, 62 Register Transfer Level 3, 60 Registerbelegungsplan 385 Registerfile 111, 210, 211 Registerkette 258 Register-Prozess 388 Rekursion 408 Rekursiver Aufruf 178 RESET asynchroner 62, 100, 122 automatischer 102 synchroner 261 Resolution Function 76, 114 Response-Monitor 63 Ressource Sharing 199, 380 Retiming 139 return 178 Ringpuffer 305 Ripple-Carry-Addierer 180 RISC 205 ROM 186, 189, 307 Sinus-Tabelle 408 RTL 3, 60 Rücksetzeingang asynchroner 44 RW-Hazard 207, 232
S Sättigungsfunktion 303 Schaltungsmakro 98, 99 Addierer, Subtrahierer 104 Schaltwerktabelle 4, 51 Schieberegister 4, 242 ladbares 52 parametrisiertes 52 Schleife 31 kombinatorische 55, 57, 63, 132, 369 Schleifenabbruch 39 Schleifenabbruchbedingung 41 Schleifenindex 40
14 Sachregister
478 Schleifeniteration 39 Schleifensteuerung 266, 273 Schlüsselwort 429 Schnittstellensynchronisation 135 SDA-Arithmetik 193 SDF-Format 195 Second Order Section 319 Kaskaden 319 select 9 sensitivity list 29 sequentiell 28 Setup-Zeit 53, 138 Sieben-Segment-Encoder 190 signal 10 Signal 4, 27 Aktualisierung 38 hochohmiger Zustand 78 Initialisierung 77 internes 10 lokales 8, 28 Signalattribut 179 Signalflussgraph 320, 359, 372 Signalflussrichtung 9 Signalkonflikt 76 Signallaufzeit 20, 395 Signallebensdauer-Tabelle 385 Signalrückführung 11 Signaltreiber 114 Anzahl 76 Signaltyp schwacher 75 starker 75 Signalzuweisung bedingte 7, 20, 21, 24, 86 nebenläufige 17, 179 selektive 7, 9, 19, 21, 24 taktsynchrone 44 unbedingte 9, 38 unvollständige 57 signed 93 Simulation 13 funktionale 102 Simulationseffizienz 114, 141 Skalierung L1-Norm 251 L∞-Norm 319, 328 Slice 189, 236 Spartan-3 236 Spartan-FPGA 186 Speicherverhalten 23 simuliertes 59
Spezifikation 63 Sprungantwort 197, 253, 263, 303, 323, 331, 364, 375 statisch 39 statische Timing-Analyse 236 Statussignal 155 std_logic 87, 114 std_ulogic 87, 114 Steuerautomat 308 Steuerpfad 155, 300, 380, 426 Steuersignal 155 Stimuli 63 Stimuliprozess 129 STRING 145 Strukturbeschreibung 3 Strukturen reguläre 157 Strukturhazard 51 Strukturmodell 4, 159, 165 subtype 108 Synchronisation 4, 29, 254 Synchronisationsmaßnahmen 137 Synopsys 85, 113 Syntax 3, 6, 457 System on a Chip 155 Systemarchitektur 428 SystemC 230 Systementwurf 425, 426 Systempartitionierung 157, 427
T Tabellenassembler 203, 206 Taktbereiche unterschiedliche 254 Taktflankenabfrage 29, 44 Taktfreigabeeingang 44 Taktfrequenz maximale 61 Taktfrequenzerhöhung 136, 137 Takttor 55 Testbench 14, 63, 128, 196, 333 Testumgebung 4, 14, 128 Testvektor 63, 67 Timinganalyse 265, 297 Timingpfad 139 Timingsimulation 195, 287, 291, 303, 331, 374, 395 Top-Down-Entwurf 155, 160 Top-Entity 159, 174 Trapezintegration 407
14 Sachregister Tri-State-Treiber 4, 78, 81, 112, 199 true 16 Typ-Casting 103 type 183
U Übergangsschaltnetz 53, 120, 124, 125, 131, 139 Überladung 88 Überlauf 105, 305 Überlaufeffekt 240, 325 Überlaufschutz 249 Überlaufsignal 159 Übertrag 93, 100, 105 Übertragssignal 170 Übertragungsfunktion 241, 320 unsigned 93 Unterprogramm 159, 178 use 77, 183, 184
V variable 28 Variable 4, 27, 29, 34, 38, 48, 62, 106, 258, 359 Lesen einer 50 Variablenzuweisung 34 unvollständige 57 Vektorverbreiterung vorzeichenrichtig 96 Vergleichsoperator 94 Verhaltensbeschreibung 3, 159 Verhaltensmodell 165, 195 Verkettungsoperator 66 Verkettungsoperator & 34, 53, 106, 248 Verschiebungsoperator z–1 241, 320, 359, 372 Verzweigung 31 VHDL-Simulator 3 VHDL-Syntax 457 Viewlogic 84 Virtex-FPGA 186 Volladdierer 16, 33 Vorbereitungssignal 159
479
W Wahrheitstabelle 35, 67 Abkürzung 85 wait 178, 182 wait for 30, 66, 130, 256 wait until 29 WB-Phase 207 when 9 when others 20, 32, 51, 87, 149 while loop 32, 256 while-Schleife 39, 41 with 9 WORK 165 write 68 writeline 68
X XILINX 126, 186 XST 2, 186, 189, 398
Z Zahlenbasis 35, 108 Zähler 4 einfacher 98 gesteuerter 93, 99 Überlauferkennung 109 Vorwärts / Rückwärts 121 Zieltechnologie 198 Zustand metastabiler 132, 138, 139 Zustandsautomat 51, 119, 155, 427 Zustandsbit 121 Zustandscodierung 4, 119, 143, 396 Zustandsdiagramm 137, 308 Zustandsminimierung 134 Zustandsregister 123, 145 Zustandsspeicher 120, 125 Zustandsvektor 121 Zweierkomplement 93, 239, 246 Zweispeicher-Flipflop 56