VHDL-Synthese, 7th Edition

Book description

Die Hardwarebeschreibungssprache VHDL (Very High Speed Integrated Circuit Description Language) dient dem Entwurf der Hardwarekomponenten für komplexe Computer- und Consumer-Anwendungen. In diesem Lehrbuch wird, immer vor dem Hintergrund der Digitaltechnik, eine Einführung in Grundkonzepte aber auch detaillierter Einblick in die konkrete Synthese anhand von Beispielen gegeben.

Inhaltliche Neuerungen der 7. Auflage:

  • Durchgängige Verwendung des IEEE-Standards zur VHDL-Arithmetik
  • Auf vielfachen Wunsch der Leser: Ergänzung um einen Abschnitt zum VHDL-Entwurf von Testbenches
  • Ergänzung des Kapitels "FIR-Filter" um die Modellierung systolischer FIR- Filter
  • Erweiterung um ein neues Kapitel zur VHDL Implementierung der numerischen Integration. Dieser Abschnitt ermöglicht die Hardware-Modellierung nichtlinearer Systeme, z.B. in der Regelungstechnik.

Table of contents

  1. Cover
  2. Titel
  3. Impressum
  4. Vorwort
  5. Inhalt
  6. 1 Einleitung und Übersicht
    1. 1.1 Motivation
    2. 1.2 Ziele und Organisation dieses Buches
    3. 1.3 VHDL Entwurfsmethodik
    4. 1.4 Syntaxnotation
  7. 2 Synthese einfacher Schaltnetze
    1. 2.1 Entity, Architektur und Signale
      1. 2.1.1 Deklaration und Verwendung lokaler Signale
      2. 2.1.2 Richtungsmodi von Signalschnittstellen
      3. 2.1.3 Deklaration von Bussignalen
    2. 2.2 Simulation von VHDL-Entwürfen
    3. 2.3 Schaltnetze mit Boole'schen Gleichungen
    4. 2.4 Synthese selektiver und bedingter Signalzuweisungen
    5. 2.5 Übungsaufgaben
  8. 3 Entwurf digitaler Funktionselemente mit Prozessen
    1. 3.1 Prozesse
      1. 3.1.1 Deklaration und Ausführung von Prozessen
    2. 3.2 Schaltnetze mit sequentiellen Anweisungen
      1. 3.2.1 Die case-Anweisung
      2. 3.2.2 Die if-Anweisung
      3. 3.2.3 Schleifenkonstrukte
        1. 3.2.3.1 for loop
        2. 3.2.3.2 while loop
    3. 3.3 Einfache Schaltwerke
      1. 3.3.1 D-Flipflops und Register
        1. 3.3.1.1 VHDL-Beschreibung mit Signalen
        2. 3.3.1.2 Testbench zum D-Flipflop
        3. 3.3.1.3 Entwurf von Registern
        4. 3.3.1.4 Verwendung von Variablen in taktsynchronen Prozessen
      2. 3.3.2 Johnson-Zähler mit Taktteiler
      3. 3.3.3 Parametrisiertes Schieberegister
    4. 3.4 Erzeugung von Latches
    5. 3.5 Vermeidbare Synthesefehler
      1. 3.5.1 Kombinatorische Schleifen
      2. 3.5.2 Fehlverhalten durch unvollständige Empfindlichkeitslisten
    6. 3.6 RTL-Syntheserichtlinien
      1. 3.6.1 D-Flipflops und Register in getakteten Prozessen
      2. 3.6.2 D-Latches und kombinatorische Logik
    7. 3.7 VHDL-Testbenches
    8. 3.8 Übungsaufgaben
  9. 4 Tri-State- und Don’t-Care-Modellierung
    1. 4.1 Die Datentypen std_ulogic und std_logic
    2. 4.2 Realisierung von Tri-State-Ausgangsstufen
    3. 4.3 Don’t-Care-Werte als Ausgangssignal
    4. 4.4 Don’t-Care-Werte als Eingangssignal
    5. 4.5 Konversion der Datentypen bit und bit_vector
    6. 4.6 Übungsaufgaben
  10. 5 Arithmetik und Synchronzähler
    1. 5.1 Arithmetik-Operatoren und zugehörige Datentypen
    2. 5.2 Komparator SN74xx85
    3. 5.3 Entwurf von Synchronzählern
    4. 5.4 Arithmetik mit den Datentypen signed und unsigned
    5. 5.5 Integer-Arithmetik
    6. 5.6 Konversionsfunktionen und indizierter Zugriff auf Feldelemente
    7. 5.7 Arithmetik mit Synopys Bibliotheken
    8. 5.8 Hinweise zur Verwendung der Datentypen
    9. 5.9 Übungsaufgaben
  11. 6 Entwurf von Zustandsautomaten
    1. 6.1 Automatenvarianten
    2. 6.2 Moore-Automat für eine Impulsfolgenerkennung
    3. 6.3 Entwurfsbeispiel für einen Mealy-Automaten
    4. 6.4 VHDL-Syntaxvarianten
      1. 6.4.1 Die Zwei-Prozess-Darstellung
      2. 6.4.2 Die Mehr-Prozess-Darstellung
        1. 6.4.2.1 Schnittstellensynchronisation
        2. 6.4.2.2 Maßnahmen zur Taktfrequenzerhöhung
        3. 6.4.2.3 Maßnahme zur Reduzierung der Latenzzeit
      3. 6.4.3 Die Ein-Prozess-Darstellung
      4. 6.4.4 Vergleich der Syntaxvarianten
    5. 6.5 Zustandscodierung
      1. 6.5.1 Strategien der Zustandscodierung
      2. 6.5.2 Umsetzung der Zustandscodierung in VHDL
      3. 6.5.3 Auswirkungen der Zustandscodierung auf die Syntheseergebnisse
    6. 6.6 Übungsaufgaben
  12. 7 Struktureller VHDL-Entwurf
    1. 7.1 Ziele und Methoden der Systempartitionierung
    2. 7.2 Struktureller Entwurf mit Komponenten
      1. 7.2.1 Struktureller Entwurf eines 4 zu 2 Prioritätsencoders
        1. 7.2.1.1 Komponentendeklaration
        2. 7.2.1.2 Komponenteninstanziierung und port map-Anweisung
        3. 7.2.1.3 Konfiguration zur Auswahl von Modellarchitekturen
        4. 7.2.1.4 Modellparametrisierung
        5. 7.2.1.5 Iterative Instanziierung
      2. 7.2.2 Entwurf einer skalierbaren Addier/Subtrahier-Einheit
      3. 7.2.3 Kopplung von Signalen in strukturellen VHDL-Beschreibungen
    3. 7.3 Strukturierung mit Unterprogrammen
      1. 7.3.1 Lokale Prozeduren und Funktionen
      2. 7.3.2 Definition und Einsatz von packages
    4. 7.4 Herstellerspezifische Komponenten und Komponentengeneratoren
      1. 7.4.1 Instanziierung von RAM- und ROM-Zellen mit Prozessen
      2. 7.4.2 Komponentengeneratoren
    5. 7.5 Unterstützung durch Synthesewerkzeuge
    6. 7.6 Übungsaufgaben
  13. 8 Entwurf eines RISC-Prozessors
    1. 8.1 Spezifikation der Prozessorfunktionen
      1. 8.1.1 Das Programmiermodell
      2. 8.1.2 Der Instruktionssatz
      3. 8.1.3 Instruktionsformate
    2. 8.2 Prozessorarchitektur und -programmierung
    3. 8.3 VHDL-Realisierung
      1. 8.3.1 Registerfile
      2. 8.3.2 Instruktions- und Datenspeicher
      3. 8.3.3 Instruction Fetch (IF)
      4. 8.3.4 Instruction Decode (ID)
      5. 8.3.5 Execute (EX)
      6. 8.3.6 Memory Access (MEM)
      7. 8.3.7 Top-Level-Architektur des RISC-Prozessors
      8. 8.3.8 Einfache Testbench für den RISC-Prozessor
    4. 8.4 Entwurfsverifikation
      1. 8.4.1 Vermeidung von RW-Hazards
      2. 8.4.2 Vermeidung von C-Hazards
      3. 8.4.3 Speichern und Lesen des Datenspeichers
    5. 8.5 FPGA-Implementierung
  14. 9 Modellierung digitaler Filter
    1. 9.1 FIR-Filter
      1. 9.1.1 Parallele FIR-Filterstrukturen
      2. 9.1.2 Zahlendarstellung im Q-Format
        1. 9.1.2.1 Addition mit vorzeichenrichtiger Erweiterung der Summanden
        2. 9.1.2.2 Binäre Multiplikation
      3. 9.1.3 Filterskalierung und Beispielfilter
      4. 9.1.4 VHDL-Modelle paralleler FIR-Filterstrukturen
        1. 9.1.4.1 Kopplung von unterschiedlichen Taktbereichen
        2. 9.1.4.2 Basismodell der Direktform
        3. 9.1.4.3 Direktform mit symmetrisch balanciertem Addiererbaum
        4. 9.1.4.4 Direktform mit unsymmetrisch balanciertem Addiererbaum
        5. 9.1.4.5 Linear-Phasen-Struktur
        6. 9.1.4.6 Transponierte Form mit reduzierter Anzahl der Multiplizierer
        7. 9.1.4.7 Systolische FIR Filter
        8. 9.1.4.8 Vergleich der Implementierungsergebnisse und Timinganalysen
      5. 9.1.5 Sequentielle FIR-Struktur mit MAC-Einheit
        1. 9.1.5.1 Multiplizierer-Akkumulatoreinheit
        2. 9.1.5.2 Ringpuffer für die Abtastwerte
        3. 9.1.5.3 Koeffizienten-ROM
        4. 9.1.5.4 Sequenzsteuerung mit einem Zustandsautomaten
        5. 9.1.5.5 Simulations- und Syntheseergebnisse
      6. 9.1.6 Taktschemata der Filterdatenpfade
        1. 9.1.6.1 Audiodatenrate
        2. 9.1.6.2 Hohe Datenraten
    2. 9.2 IIR-Filter
      1. 9.2.1 Koeffizientenberechnung und Beispielfilter
      2. 9.2.2 Parallele Strukturen für IIR-Filter 2. Ordnung
      3. 9.2.3 VHDL-Modelle für Varianten der Direktform II
        1. 9.2.3.1 Transponierte Struktur der Direktform II
        2. 9.2.3.2 Modifizierte Direktform II
        3. 9.2.3.3 Implementierungsergebnisse und Timinganalyse
      4. 9.2.4 Sinusgenerator als synthesefähige Testbench
      5. 9.2.5 Entwurfsschritte für IIR-Filter
    3. 9.3 FPGA-Entwurf mit Simulink
  15. 10 Zustandsdifferenzengleichungen für Beobachter
    1. 10.1 Zeitinvariante und lineare Systeme
      1. 10.1.1 Zeitliche Diskretisierung
      2. 10.1.2 VHDL-Modell für die Zustandsdifferenzengleichungen
    2. 10.2 Numerische Integration von gekoppelten Differentialgleichungen
      1. 10.2.1 Rechteck- und Trapezintegration
      2. 10.2.2 VHDL-Modell der kombinierten numerischen Integration
      3. 10.2.3 Prozessorelement mit Mehrzyklus-Datenpfad
        1. 10.2.3.1 Algorithmisches Zustandsdiagramm
        2. 10.2.3.2 Datenpfad mit Mehrfach-Ressourcennutzung
        3. 10.2.3.3 VHDL-Modellierung des Prozessorelementes
    3. 10.3 Vergleich der Implementierungsergebnisse
    4. 10.4 Nichtlineare, gekoppelte Integralgleichungen
      1. 10.4.1 Odometrie mit einem Einspur-Fahrzeugmodell
      2. 10.4.2 VHDL-Modell des nichtlinearen Doppelintegrators
  16. 11 Anhang
    1. 11.1 VHDL-Codierungsempfehlungen
    2. 11.2 Checkliste zum VHDL-basierten Entwurf digitaler Systeme
    3. 11.3 Liste der VHDL-Schlüsselworte
    4. 11.4 Lösungen zu den Übungsaufgaben
      1. 11.4.1 Lösungen zu den Aufgaben in Kap. 2.5
      2. 11.4.2 Lösungen zu den Aufgaben in Kap. 3.7
      3. 11.4.3 Lösungen zu den Aufgaben in Kap. 4.6
      4. 11.4.4 Lösungen zu den Aufgaben in Kap. 5.7
      5. 11.4.5 Lösungen zu den Aufgaben in Kap. 6.6
      6. 11.4.6 Lösungen zu den Aufgaben in Kap. 7.7
  17. 12 VHDL-Syntaxübersicht und Bibliotheken
  18. 13 Literaturverzeichnis
  19. 14 Sachregister
  20. 15 Fußnoten

Product information

  • Title: VHDL-Synthese, 7th Edition
  • Author(s): Jürgen Reichardt, Bernd Schwarz
  • Release date: May 2015
  • Publisher(s): De Gruyter Oldenbourg
  • ISBN: 9783110397840