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

FPGAs für Maker

Book Description

  • Fokussierung auf FPGAs- Einführung in die Hardwarebeschreibungssprache VHDL- konsequente Orientierung an Maker-Bedürfnissen- Schritt-für-Schritt-Erklärungen- getestete und nachbausichere Designbeispiele- Vorstellung mehrerer FPGA-Entwicklungswerkzeuge verschiedener Hersteller- Kurzvorstellung von FPGA-Boards- Website mit Quellcode zu allen Designbeispielen

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Vorwort
  5. Inhaltsverzeichnis
  6. Teil I: Einführung
    1. Kapitel 1: Wieso FPGAs für Maker?
    2. Kapitel 2: Struktur und Verwendung dieses Buchs
    3. Kapitel 3: FPGA-Grundlagen
      1. 3.1 Was ist ein FPGA?
      2. 3.2 Entwicklungsablauf im Überblick
      3. 3.3 VHDL-Einführung
      4. 3.4 Eine erste Dosis VHDL
      5. 3.4.1 Erste Testbench
      6. 3.5 Notwendige Ausstattung
  7. Teil II: Einfache Schaltungen
    1. Kapitel 4: Los geht’s – das erste FPGA-Projekt
      1. 4.1 Einführung
      2. 4.2 Vorbereitendes Experiment und Workflow
        1. 4.2.1 Anlegen eines Projekts
        2. 4.2.2 Anlegen einer neuen VHDL-Quelldatei
        3. 4.2.3 Erstellen einer Schaltungsbeschreibung in VHDL
        4. 4.2.4 Überprüfen der ersten Schaltung
        5. 4.2.5 Die Verbindung zwischen Schaltung und FPGA-Pins definieren
        6. 4.2.6 »Herstellen« der Schaltung
        7. 4.2.7 Download der Konfiguration auf das FPGA-Board
        8. 4.2.8 Austesten der Schaltung auf dem FPGA-Board
        9. 4.2.9 Durchfuhrung von Schaltungsänderungen
      3. 4.3 Logik-Gatter
      4. 4.4 Simulation
      5. 4.5 Zusammenfassung
    2. Kapitel 5: »Hello World« – es blinkt
      1. 5.1 Getaktete Digitalsysteme
        1. 5.1.1 D-Flip-Flop
        2. 5.1.2 D-Latch
      2. 5.2 Zähler
      3. 5.3 Simulation des Binärzählers
      4. 5.4 Ein Teiler für die LED
      5. 5.5 Blinken mit Hardware
      6. 5.6 Verfeinerter Binärzähler
      7. 5.7 Zusammenfassung
    3. Kapitel 6: VHDL-Intermezzo
      1. 6.1 Sprachstandards
      2. 6.2 Struktur eines VHDL-Files
      3. 6.3 VHDL-Statement
      4. 6.4 Concurrent ↔ Sequential
        1. 6.4.1 process zur Generierung von sequentiellen Schaltungselementen
        2. 6.4.2 VHDL-Code mit process für die Simulation
        3. 6.4.3 process zum Erzeugen von kombinatorischer Logik
      5. 6.5 Ein wenig mehr VHDL
        1. 6.5.1 Kommentare
        2. 6.5.2 Schlüsselwörter
        3. 6.5.3 Groß- und Kleinschreibung, »white space«
        4. 6.5.4 Datentypen
          1. 6.5.4.1 Vektor-Signale
        5. 6.5.5 Operatoren
      6. 6.6 Ausgewählte VHDL-Konstrukte und -Designmuster
        1. 6.6.1 Enable
        2. 6.6.2 Reset und Initialisierungen
          1. 6.6.2.1 Asynchroner Reset
          2. 6.6.2.2 Synchroner Reset
          3. 6.6.2.3 Wahl des Reset-Typs
        3. 6.6.3 Multiplexer
        4. 6.6.4 Tri-State-Buffer
      7. 6.7 Synchrone Digitalsysteme
      8. 6.8 Universelle Grundstruktur
        1. 6.8.1 Binärzähler – noch einmal
        2. 6.8.2 Modulozähler
        3. 6.8.3 Schieberegister
          1. 6.8.3.1 Schieberegister Serial-In, Serial-Out
          2. 6.8.3.2 Schieberegister mit Rotation
      9. 6.9 Zusammenfassung
    4. Kapitel 7: Bausteine und Entwurfsmuster
      1. 7.1 Clock-Signale
        1. 7.1.1 Clock-Signal für langsame Schaltungsteile
        2. 7.1.2 Kontrolle eines Clock-Signals
      2. 7.2 Verwendung von IP
        1. 7.2.1 IP-Instantiierung
      3. 7.3 Synchronisierung und Entprellung
        1. 7.3.1 Synchronisierung
        2. 7.3.2 Entprellen
          1. 7.3.2.1 Motivation
          2. 7.3.2.2 Prinzip und Realisierung
        3. 7.3.3 Komplettes Beispiel einer »gehärteten« Schaltung
      4. 7.4 Zustandsautomat
        1. 7.4.1 Tastenabfrage
      5. 7.5 Zusammenfassung
    5. Kapitel 8: Siebensegmentanzeigen
      1. 8.1 Aufbau und Funktion
      2. 8.2 Einfacher Test mit einem Element
      3. 8.3 Umwandlung von Binärcode in eine Hex-Zahlendarstellung
      4. 8.4 Umwandlung von Binärcode in eine Dezimalzahlendarstellung
      5. 8.5 Mehr als ein Digit – Multiplexing
      6. 8.6 Komplettbeispiel
        1. 8.6.1 Komplettbeispiel mit Zusatz-Siebensegment-Display-Board
      7. 8.7 Zusammenfassung
    6. Kapitel 9: Spielereien mit Leuchtdioden
      1. 9.1 Als die Lichter laufen lernten
      2. 9.2 Dimmen einer LED
        1. 9.2.1 PWM
        2. 9.2.2 PWM-Testbench
        3. 9.2.3 PWM-Test mit Hardware
      3. 9.3 RGB-LEDs
        1. 9.3.1 Erster Test
        2. 9.3.2 Dimmen einer RGB-LED
      4. 9.4 Zusammenfassung
  8. Teil III: Weiterführendes und Projekte
    1. Kapitel 10: Wie kommt man weiter?
      1. 10.1 FPGA-Board
      2. 10.2 FPGA-Entwicklungsumgebung und Workflow
      3. 10.3 VHDL
    2. Kapitel 11: Digitaluhr auf FPGA-Basis
      1. 11.1 Merkmale der Digitaluhr
      2. 11.2 Anforderungen an die Hardware
      3. 11.3 Entwicklung des Schaltungskonzepts
        1. 11.3.1 Teil 1 – Stunden und Minuten
        2. 11.3.2 Teil 2 – Siebensegmentanzeige
        3. 11.3.3 Übrige Teile
      4. 11.4 Implementierung
        1. 11.4.1 Implementierung von clkgen
          1. 11.4.1.1 Erste Version
          2. 11.4.1.2 Simulation der ersten Version
          3. 11.4.1.3 Zweite Version
          4. 11.4.1.4 Dritte Version (mit Stellen der Uhr)
        2. 11.4.2 Implementierung der Display-Ansteuerung
          1. 11.4.2.1 Implementierung von calc segdata
          2. 11.4.2.2 Implementierung von trans segdata
      5. 11.5 Integration
      6. 11.6 Zusammenfassung
    3. Kapitel 12: Ansteuerung eines RGB-LED-Matrix-Displays
      1. 12.1 Grundlagen
        1. 12.1.1 Hardware und Funktion
          1. 12.1.1.1 Elektrische Daten
          2. 12.1.1.2 Timing
      2. 12.2 Schaltung zur Display-Ansteuerung
        1. 12.2.1 Display-Controller
        2. 12.2.2 Test des Display-Controllers
        3. 12.2.3 Objektdarstellung auf einem Matrix-Display
        4. 12.2.4 Objektdarstellung auf Halb-Displays
          1. 12.2.4.1 Erster Test
          2. 12.2.4.2 Automatische Erzeugung der Zeilenadressen
          3. 12.2.4.3 Version mit korrigierten Zeilenadressen und Spaltenadressen
        5. 12.2.5 Objektdarstellung auf dem Gesamt-Display
          1. 12.2.5.1 Animiertes Objekt
      3. 12.3 Pong
      4. 12.4 Zusammenfassung
    4. Kapitel 13: Ausflug zu Verilog
      1. 13.1 Einstieg in Verilog
      2. 13.2 Einbinden eines Verilog-Moduls in ein VHDL-Projekt
      3. 13.3 Simulation bei der Verwendung von Verilog-Modulen
  9. Teil IV: Anhang
    1. A VHDL-Kurzübersicht
      1. A.1 entity
      2. A.2 architecture
      3. A.3 component
      4. A.4 process
        1. A.4.1 process mit sensitivity list
        2. A.4.2 process ohne sensitivity list
      5. A.5 Datentypumwandlungen
        1. A.5.1 Umwandlung integer → std_logic_vector
        2. A.5.2 Umwandlung unsigned → std_logic_vector
        3. A.5.3 Umwandlung std_logic_vector → unsigned
      6. A.6 Initialisierung mit others
      7. A.7 Bedingte Ausführung
        1. A.7.1 concurrent statements
          1. A.7.1.1 when
          2. A.7.1.2 select
        2. A.7.2 sequential statements
          1. A.7.2.1 if
          2. A.7.2.2 case
        3. A.7.3 Vorsicht Latch!
    2. B FPGA-Werkzeugketten
    3. C Altera-Werkzeugkette »Quartus Prime Lite Edition«
      1. C.1 Anlegen eines neuen Projekts
      2. C.2 Anlegen eines neuen VHDL-Files
      3. C.3 Einbinden eines schon vorhandenen VHDL-Files
      4. C.4 Analyse und Synthese
      5. C.5 Pin Planning
      6. C.6 Place & Route, Erzeugung des Bitstreams
      7. C.7 Download
    4. D Lattice-Werkzeugkette »Diamond«
      1. D.1 Anlegen eines neuen Projekts
      2. D.2 Anlegen eines neuen VHDL-Files
      3. D.3 Einbinden eines schon vorhandenen VHDL-Files
      4. D.4 Eingabe von Constraints
      5. D.5 Synthese, Mapping, Place & Route
      6. D.6 Generierung der Konfigurationsdaten
      7. D.7 Download
    5. E Microsemi-Werkzeugkette »Libero SoC«
      1. E.1 Anlegen eines neuen Projekts
      2. E.2 Anlegen eines neuen VHDL-Files
      3. E.3 Einbinden eines schon vorhandenen VHDL-Files
      4. E.4 Synthese
      5. E.5 Definition von I/O-Constraints
      6. E.6 Erzeugen der Konfigurationsdaten
      7. E.7 Download
    6. F Xilinx-Werkzeugkette »ISE«
      1. F.1 Anlegen eines neuen Projekts
      2. F.2 Anlegen eines neuen VHDL-Files
      3. F.3 Anlegen von I/O-Constraints
      4. F.4 Einbinden eines schon vorhandenen VHDL-Files
      5. F.5 Implementierung
      6. F.6 Erzeugung des Bitstreams
      7. F.7 Download
    7. G Vergleich der Werkzeugketten
    8. H FPGA-Boards für Maker
      1. H.1 Einige Bezugsquellen
      2. H.2 Board-Übersicht
      3. H.3 Boards, Boards, Boards
        1. H.3.1 Altera
          1. H.3.1.1 DE0
          2. H.3.1.2 DE0-Nano
        2. H.3.2 Lattice
          1. H.3.2.1 MachXO3LF StarterKit
        3. H.3.3 Microsemi
          1. H.3.3.1 AGLN-Nano-Kit
        4. H.3.4 Xilinx
          1. H.3.4.1 Papilio
          2. H.3.4.2 NEXYS3
          3. H.3.4.3 ARTY
          4. H.3.4.4 BASYS3
          5. H.3.4.5 NEXYS4 DDR
  10. Glossar
  11. Literaturverzeichnis
  12. Index
  13. Fußnoten
    1. Kapitel 3: FPGA-Grundlagen
    2. Kapitel 4: Los geht’s – das erste FPGA-Projekt
    3. Kapitel 5: »Hello World« – es blinkt
    4. Kapitel 6: VHDL-Intermezzo
    5. Kapitel 7: Bausteine und Entwurfsmuster
    6. Kapitel 8: Siebensegmentanzeigen
    7. Kapitel 10: Wie kommt man weiter?
    8. Kapitel 11: Digitaluhr auf FPGA-Basis
    9. Kapitel 12: Ansteuerung eines RGB-LED-Matrix-Displays
    10. A VHDL-Kurzübersicht
    11. C Altera-Werkzeugkette »Quartus Prime Lite Edition«
    12. E Microsemi-Werkzeugkette »Libero SoC«
    13. F Xilinx-Werkzeugkette »ISE«