O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

FPGA Hardware-Entwurf, 4th Edition

Book Description

Für einen erfolgreichen Hardware Entwurf sind nicht nur VHDL-Kenntnisse wichtig, sondern auch Kenntnisse der FPGA-Schaltungstechnik und der Design Tools. Das vorliegende Buch stellt die Zusammenhänge zwischen diesen wichtigen Themen dar und bietet eine zielgerichtete Einführung in den Entwurf von digitalen Schaltungen und Systemen mit FPGAs. Beginnend mit den Grundlagen von VHDL sowie der CMOS- und FPGA-Technologie, werden anschließend der synthesegerechte Entwurf mit VHDL und die synchrone Schaltungstechnik auf dem FPGA behandelt. Darüber hinaus werden auch die wesentlichen Entwurfswerkzeuge, wie Logiksynthese oder die statische Timing-Analyse, erläutert. Abgerundet wird das Buch mit einem Kapitel über High-Level Synthese, welche eine Umsetzung von C/C++-Code in eine VHDL-Implementierung ermöglicht. Der Leser erhält anhand vieler Code-Beispiele einen praxisorientierten Zugang zum Hardware-Entwurf mit FPGAs.

  • Zielgerichtete Einführung in den digitalen Schaltungsentwurf
  • Alle notwendigen Kenntnisse für den rechnergestützten Hardwareentwurf

Frank Kesel studierte Elektrotechnik an der Universität Karlsruhe und promovierte an der Universität Hannover. Er war zehn Jahre in der Industrie im digitalen ASIC-Design tätig. Er ist seit 1999 Professor an der Hochschule Pforzheim mit dem Spezialgebiet FPGA-Design.

Table of Contents

  1. Cover
  2. Titelseite
  3. Impressum
  4. Vorwort
  5. Inhaltsverzeichnis
  6. 1 Einleitung
    1. 1.1 Digitaltechnik und die mikroelektronische Revolution
    2. 1.2 Abstraktionsebenen und EDA-Werkzeuge.
    3. 1.3 Ziele und Aufbau des Buches
  7. 2 Modellierung von digitalen Schaltungen mit VHDL
    1. 2.1 Historische Entwicklung von VHDL.
    2. 2.2 Grundlegende Konzepte von VHDL
      1. 2.2.1 Entity und Architecture
      2. 2.2.2 Verhaltensbeschreibungen und Prozesse
      3. 2.2.3 Strukturbeschreibungen
      4. 2.2.4 Testbenches und die Verifikation von VHDL-Entwürfen
      5. 2.2.5 Kompilation von VHDL-Modellen
      6. 2.2.6 Simulation von VHDL-Modellen
      7. 2.2.7 Modellierung von Verzögerungszeiten in VHDL
      8. 2.2.8 Variable und Signal
    3. 2.3 Objekte, Datentypen und Operatoren
      1. 2.3.1 Deklaration und Verwendung von Objekten
      2. 2.3.2 Überladen von Operatoren und Funktionen
      3. 2.3.3 Gültigkeitsbereich von Objekten
      4. 2.3.4 Übersicht über die VHDL-Datentypen und Operatoren
      5. 2.3.5 Attribute
    4. 2.4 Sequentielle Anweisungen
      1. 2.4.1 IF-Verzweigungen
      2. 2.4.2 CASE-Verzweigungen
      3. 2.4.3 Schleifen
      4. 2.4.4 Weitere sequentielle Anweisungen
    5. 2.5 Nebenläufige Anweisungen
      1. 2.5.1 Unbedingte nebenläufige Anweisungen
      2. 2.5.2 Bedingte nebenläufige Anweisungen
    6. 2.6 Unterprogramme und Packages.
    7. 2.7 Auflösungsfunktionen, mehrwertige Logik und IEEE-Datentypen
      1. 2.7.1 Auflösungsfunktionen und mehrwertige Logik
      2. 2.7.2 Die IEEE 1164-Datentypen
    8. 2.8 Weitere Konstruktionen für Strukturbeschreibungen
      1. 2.8.1 Parametrisierung von Komponenten
      2. 2.8.2 Iterative und bedingte Instanzierung
      3. 2.8.3 Bindung von Komponenten
    9. 2.9 Weitere VHDL-Konstruktionen
    10. 2.10 Zusammenfassung zu Kapitel 2
    11. 2.11 Übungsaufgaben.
  8. 3 Digitale integrierte Schaltungen
    1. 3.1 Auswahl von Implementierungsformen für integrierte Schaltungen
    2. 3.2 Grundlagen der CMOS-Schaltungstechnik
      1. 3.2.1 Der MOS-Feldeffekttransistor
      2. 3.2.2 Der CMOS-Inverter
      3. 3.2.3 Statisches Verhalten des CMOS-Inverters
      4. 3.2.4 Dynamisches Verhalten des CMOS-Inverters
      5. 3.2.5 Leistungs- und Energieaufnahme von CMOS-Schaltungen
    3. 3.3 Kombinatorische CMOS-Schaltungen
      1. 3.3.1 Komplementäre statische CMOS Logikgatter
      2. 3.3.2 Pass-Transistor-Logik und Transmission-Gate-Logik
      3. 3.3.3 Tri-State-Treiber.
    4. 3.4 Sequentielle CMOS-Schaltungen
      1. 3.4.1 Das Bistabilitäts-Prinzip
      2. 3.4.2 Taktzustandsgesteuerte Latches
      3. 3.4.3 Taktflankengesteuerte Flipflops
      4. 3.4.4 Metastabilität und Synchronisation
    5. 3.5 MOS Halbleiterspeicher
      1. 3.5.1 Übersicht und Klassifikation von Halbleiterspeichern
      2. 3.5.2 Matrixspeicher-Architekturen
      3. 3.5.3 SRAM Speicherzellen
      4. 3.5.4 EPROM Speicherzellen
      5. 3.5.5 EEPROM Speicherzellen
      6. 3.5.6 Flash Speicherzellen
    6. 3.6 Programmierungstechnologien von MOS-PLDs
      1. 3.6.1 Programmierung mit SRAM-Zellen
      2. 3.6.2 Programmierung mit Floating-Gate-Zellen
      3. 3.6.3 Programmierung mit Antifuses
    7. 3.7 SPLD/CPLD-Architekturen
      1. 3.7.1 Implementierung von Schaltfunktionen mit PROMs
      2. 3.7.2 SPLDs: PLA- und PAL-Strukturen
      3. 3.7.3 CPLDs
    8. 3.8 FPGA-Architekturen
      1. 3.8.1 Multiplexer-Basiszellen
      2. 3.8.2 LUT-Basiszellen
      3. 3.8.3 Verbindungsarchitekturen
      4. 3.8.4 I/O-Blöcke
      5. 3.8.5 Entwicklungstrends bei FPGAs
    9. 3.9 Zusammenfassung zu Kapitel 3
    10. 3.10 Übungsaufgaben.
  9. 4 Von der Register-Transfer-Ebene zur Gatterebene
    1. 4.1 Einführung in die Logiksynthese
      1. 4.1.1 Übersetzung und Inferenz des VHDL-Codes
      2. 4.1.2 Schaltwerkssynthese
      3. 4.1.3 Zeitliche Randbedingungen für die Synthese
      4. 4.1.4 Statische Timing-Analyse
      5. 4.1.5 Das Problem des „Falschen Pfades“
      6. 4.1.6 Umgebung des Designs und Betriebsbedingungen
      7. 4.1.7 Logikoptimierung und Technologieabbildung
      8. 4.1.8 Mehrstufige Logikoptimierung
      9. 4.1.9 Technologieabbildung für SRAM-FPGAs.
      10. 4.1.10 Einfluss der Optimierungsvorgaben auf das Syntheseergebnis
    2. 4.2 Ein 4-Bit-Mikroprozessor als Beispiel
    3. 4.3 Schaltwerke und Zähler
      1. 4.3.1 Steuerwerk des Beispiel-Prozessors
      2. 4.3.2 Einfluss der Zustandscodierung auf das Syntheseergebnis
      3. 4.3.3 Das Problem der unbenutzten Zustände
      4. 4.3.4 Verwendung von Signalen und Variablen in getakteten und kombinatorischen Prozessen
      5. 4.3.5 Beschreibung von Zählern in VHDL.
      6. 4.3.6 Implementierung von Zählern in FPGAs
    4. 4.4 Arithmetische Einheiten
      1. 4.4.1 ALU des Beispiel-Prozessors
      2. 4.4.2 Implementierung von Addierern in FPGAs.
      3. 4.4.3 Implementierung von Subtrahierern in FPGAs
      4. 4.4.4 Implementierung von Multiplizierern in FPGAs
      5. 4.4.5 Ressourcenbedarf von logischen, relationalen und arithmetischen Operatoren
      6. 4.4.6 Mehrfachnutzung von arithmetischen Ressourcen
      7. 4.4.7 Darstellung vorzeichenbehafteter und vorzeichenloser Zahlen
    5. 4.5 Integration von Matrixspeichern: RAM und ROM
      1. 4.5.1 Programmspeicher des Beispiel-Prozessors
      2. 4.5.2 Verwendung von synchronen „Block RAM“-Speichern
      3. 4.5.3 Datenspeicher des Beispiel-Prozessors
      4. 4.5.4 Vergleich von „Distributed RAM“ und „Block RAM“
      5. 4.5.5 Instanzierung von Makros und Verwendung von Makro-Generatoren
    6. 4.6 On-Chip-Busse und I/O-Schnittstellen
      1. 4.6.1 Datenbus des Beispiel-Prozessors
      2. 4.6.2 Multiplexer- und Logik-Busse
      3. 4.6.3 Tristate-Busse
      4. 4.6.4 Vergleich von Tristate-Bus und Logik-Bus
      5. 4.6.5 Paralleler Port des Beispiel-Prozessors
    7. 4.7 Häufig begangene Fehler und weitere Aspekte des RTL-Entwurfs
      1. 4.7.1 Häufige Fehler in getakteten Prozessen (Flipflops).
      2. 4.7.2 Häufige Fehler in kombinatorischen Prozessen (Schaltnetze)
      3. 4.7.3 Optimierung der Schaltung
      4. 4.7.4 Partitionierung des Entwurfs
    8. 4.8 Zusammenfassung zu Kapitel 4
    9. 4.9 Übungsaufgaben.
  10. 5 Physikalische Realisierung und Timing Analyse
    1. 5.1 Entwurfsablauf für FPGAs
    2. 5.2 Physikalischer Entwurf von FPGAs
      1. 5.2.1 Erstellen des Floorplans.
      2. 5.2.2 Platzierung der Komponenten im FPGA
      3. 5.2.3 Verdrahtung der Komponenten im FPGA
      4. 5.2.4 Platzierung und Verdrahtung des Beispiel-Prozessors
    3. 5.3 Einfluss der Verdrahtung auf das Zeitverhalten
      1. 5.3.1 Elektrische Parameter der Verdrahtung.
      2. 5.3.2 Modellierung der Verzögerungszeiten durch das Elmore-Modell
      3. 5.3.3 Induktive und kapazitive Leitungseffekte
      4. 5.3.4 Verdrahtung und Zeitverhalten im FPGA
      5. 5.3.5 Logiksynthese und physikalischer Entwurf
    4. 5.4 Synchroner Entwurf und Taktverteilung.
      1. 5.4.1 Synchrone und asynchrone digitale Systeme
      2. 5.4.2 Flankengesteuerte und pegelgesteuerte Schaltungen
      3. 5.4.3 Ursachen und Auswirkungen von Taktversatz und Jitter
      4. 5.4.4 Taktverteilung in FPGAs
      5. 5.4.5 Synchrone Entwurfstechniken
    5. 5.5 Simulation des Zeitverhaltens mit VHDL
      1. 5.5.1 Modellierung der Schaltung mit VITAL-Komponenten
      2. 5.5.2 Austausch von Timing-Daten mit SDF
      3. 5.5.3 Simulation des Zeitverhaltens mit einem VHDL-Simulator
    6. 5.6 Bestimmung der Chiptemperatur
    7. 5.7 Zusammenfassung zu Kapitel 5
    8. 5.8 Übungsaufgaben.
  11. 6 High-Level Synthese
    1. 6.1 High-Level Synthese und ihre Rolle im Entwurf von SOPCs
    2. 6.2 Entwurfsmetriken
    3. 6.3 Funktion und Arbeitsweise der High-Level Synthese
      1. 6.3.1 Interface- und Algorithmen-Synthese
      2. 6.3.2 Algorithmen-Synthese: Scheduling und Binding
      3. 6.3.3 Algorithmen-Synthese: Extraktion der Steuerlogik
    4. 6.4 HLS-Entwurfsablauf am Beispiel von Vivado HLS
    5. 6.5 Datentypen für die High-Level Synthese
      1. 6.5.1 Standard C/C++-Datentypen.
      2. 6.5.2 Integer-Datentypen mit variabler Bitbreite
      3. 6.5.3 Fixpunkt-Datentypen
    6. 6.6 Interface-Synthese
      1. 6.6.1 Block-Level und Port-Level Interface-Protokolle
      2. 6.6.2 Synthese von AXI4-Interfaces
    7. 6.7 Optimierung von Durchsatz und Latenz
      1. 6.7.1 Pipelining von Funktionen
      2. 6.7.2 Pipelining von Schleifen
      3. 6.7.3 Optimierung von Feldern
      4. 6.7.4 Optimierung von Schleifen durch Entrollen
    8. 6.8 Zusammenfassung zu Kapitel 6
    9. 6.9 Übungsaufgaben
  12. A Anhang
    1. A.1 Verwendete Schaltzeichen, Abkürzungen und Formelzeichen
      1. A.1.1 Schaltzeichen
      2. A.1.2 Abkürzungen
      3. A.1.3 Formelzeichen.
    2. A.2 VHDL-Syntax.
    3. A.3 VHDL-Strukturbeschreibung des Beispiel-Prozessors
    4. A.4 Lösungen der Übungsaufgaben
      1. A.4.1 Übungsaufgaben aus Kapitel 2
      2. A.4.2 Übungsaufgaben aus Kapitel 3
      3. A.4.3 Übungsaufgaben aus Kapitel 4
      4. A.4.4 Übungsaufgaben aus Kapitel 5
  13. Literaturverzeichnis
  14. Index