FPGAs für Maker -  Cord Elias

FPGAs für Maker (eBook)

Fachbuch-Bestseller
Eine praktische Einführung in programmierbare Logik

(Autor)

eBook Download: PDF | EPUB
2016 | 1. Auflage
454 Seiten
dpunkt (Verlag)
978-3-96088-031-8 (ISBN)
Systemvoraussetzungen
Systemvoraussetzungen
36,90 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
Field Programmable Gate Arrays (FPGAs) sind relativ komplexe programmierbare Logikbausteine. Mithilfe von FPGAs können mittlerweile jedoch auch Maker und Elektronikbastler eigene Chips entwerfen. Wie das geht, zeigt Ihnen dieses Buch. Zunächst wird erklärt, was FPGAs sind und wie sie funktionieren. Es folgt eine Einführung in die Hardwarebeschreibungssprache VHDL, die für die Projekte in diesem Buch verwendet wird. Danach wird Schritt für Schritt anhand zunächst ganz einfacher Beispiele erläutert, wie man eine Schaltung mithilfe eines FPGA realisiert. Im weiteren Verlauf werden die Schaltungen anspruchsvoller. Den Abschluss bildet ein Projekt, bei dem das Spiel 'Pong' in Hardware realisiert wird. Die Anzeige erfolgt auf einem RGB-LED-Matrix-Display, dessen Ansteuerung per FPGA im Detail beschrieben wird. Die Projekte im Buch werden auf Basis kostenlos verfügbarer FPGA-Entwicklungsumgebungen der Hersteller Altera, Lattice, Microsemi und Xilinx sowie günstiger FPGA-Boards konkret umgesetzt. Dabei wird auf die Übertragbarkeit auf andere Systeme geachtet. Die verwendeten Entwicklungsumgebungen und FPGA-Boards werden außerdem kurz vorgestellt. Cord Elias konzentriert sich primär auf die Vermittlung von Fähigkeiten zum selbstständigen Umgang mit FPGAs. Er nimmt die Leserinnen und Leser an die Hand und leitet sie sicher durch eine Vielzahl von Details. Dass der Spaß dabei nicht zu kurz kommt, versteht sich von selbst. Der Quellcode zu allen Design-Beispielen steht zum Download bereit.

Dipl.-Ing. Cord Elias hat über 20 Jahre Industrieerfahrung im Bereich 'Embedded Systems'. Seit einigen Jahren ist er in diesem Fachgebiet als selbstständiger Berater tätig. Seine Schwerpunkte beinhalten modellbasierte Entwicklung und automatische Codegenerierung.

Dipl.-Ing. Cord Elias hat über 20 Jahre Industrieerfahrung im Bereich "Embedded Systems". Seit einigen Jahren ist er in diesem Fachgebiet als selbstständiger Berater tätig. Seine Schwerpunkte beinhalten modellbasierte Entwicklung und automatische Codegenerierung.

Vorwort 5
Inhaltsverzeichnis 7
I Einführung 11
Wieso FPGAs für Maker? 13
Struktur und Verwendung dieses Buchs 15
FPGA-Grundlagen 19
Was ist ein FPGA? 19
Entwicklungsablauf im Überblick 26
VHDL-Einführung 30
Eine erste Dosis VHDL 31
Notwendige Ausstattung 37
II Einfache Schaltungen 39
Los geht's – das erste FPGA-Projekt 41
Einführung 41
Vorbereitendes Experiment und Workflow 44
Logik-Gatter 70
Simulation 79
Zusammenfassung 87
„Hello World“ – es blinkt 89
Getaktete Digitalsysteme 89
Zähler 94
Simulation des Binärzählers 98
Ein Teiler für die LED 101
Blinken mit Hardware 101
Verfeinerter Binärzähler 104
Zusammenfassung 107
VHDL-Intermezzo 109
Sprachstandards 109
Struktur eines VHDL-Files 109
VHDL-Statement 111
Concurrent Sequential 113
Ein wenig mehr VHDL 120
Ausgewählte VHDL-Konstrukte und -Designmuster 131
Synchrone Digitalsysteme 138
Universelle Grundstruktur 139
Zusammenfassung 151
Bausteine und Entwurfsmuster 153
Clock-Signale 153
Verwendung von IP 161
Synchronisierung und Entprellung 168
Zustandsautomat 179
Zusammenfassung 186
Siebensegmentanzeigen 187
Aufbau und Funktion 187
Einfacher Test mit einem Element 189
Umwandlung von Binärcode in eine Hex-Zahlendarstellung 190
Umwandlung von Binärcode in eine Dezimalzahlendarstellung 193
Mehr als ein Digit – Multiplexing 197
Komplettbeispiel 200
Zusammenfassung 207
Spielereien mit Leuchtdioden 209
Als die Lichter laufen lernten 209
Dimmen einer LED 211
RGB-LEDs 221
Zusammenfassung 228
III Weiterführendes und Projekte 229
Wie kommt man weiter? 231
FPGA-Board 231
FPGA-Entwicklungsumgebung und Workflow 232
VHDL 236
Digitaluhr auf FPGA-Basis 237
Merkmale der Digitaluhr 237
Anforderungen an die Hardware 237
Entwicklung des Schaltungskonzepts 238
Implementierung 241
Integration 266
Zusammenfassung 273
Ansteuerung eines RGB-LED-Matrix-Displays 275
Grundlagen 275
Schaltung zur Display-Ansteuerung 284
Pong 316
Zusammenfassung 329
Ausflug zu Verilog 331
Einstieg in Verilog 331
Einbinden eines Verilog-Moduls in ein VHDL-Projekt 333
Simulation bei der Verwendung von Verilog-Modulen 338
IV Anhang 341
VHDL-Kurzübersicht 343
entity 343
architecture 343
component 344
process 346
Datentypumwandlungen 347
Initialisierung mit others 349
Bedingte Ausführung 349
FPGA-Werkzeugketten 353
Altera-Werkzeugkette „Quartus Prime Lite Edition“ 357
Anlegen eines neuen Projekts 358
Anlegen eines neuen VHDL-Files 365
Einbinden eines schon vorhandenen VHDL-Files 368
Analyse und Synthese 369
Pin Planning 370
Place & Route, Erzeugung des Bitstreams
Download 372
Lattice-Werkzeugkette „Diamond“ 377
Anlegen eines neuen Projekts 378
Anlegen eines neuen VHDL-Files 383
Einbinden eines schon vorhandenen VHDL-Files 385
Eingabe von Constraints 387
Synthese, Mapping, Place & Route
Generierung der Konfigurationsdaten 389
Download 390
Microsemi-Werkzeugkette „Libero SoC“ 395
Anlegen eines neuen Projekts 396
Anlegen eines neuen VHDL-Files 400
Einbinden eines schon vorhandenen VHDL-Files 404
Synthese 406
Definition von I/O-Constraints 407
Erzeugen der Konfigurationsdaten 409
Download 410
Xilinx-Werkzeugkette „ISE“ 411
Anlegen eines neuen Projekts 412
Anlegen eines neuen VHDL-Files 415
Anlegen von I/O-Constraints 420
Einbinden eines schon vorhandenen VHDL-Files 423
Implementierung 425
Erzeugung des Bitstreams 426
Download 427
Vergleich der Werkzeugketten 429
FPGA-Boards für Maker 431
Einige Bezugsquellen 431
Board-Übersicht 432
Boards, Boards, Boards 433
Glossar 445
Literaturverzeichnis 449
Index 449
www.dpunkt.de 0

3 FPGA-Grundlagen


3.1 Was ist ein FPGA?


Ein FPGA kann als Ansammlung von Grundelementen wie Gatter, Flip-Flop, Speicherzelle etc. angesehen werden, die in einem gemeinsamen Gehäuse vorhanden sind, aber noch miteinander verdrahtet werden müssen, um eine bestimmte Funktion zu realisieren. Sehr vereinfacht kann ein FPGA auch als vorbestücktes Steckbrett im Mikroformat betrachtet werden. Elemente wie Gatter und Flip-Flops sind schon fertig aufgesteckt, nur die Verdrahtung muss noch vom Anwender vorgenommen werden. Anstatt wie auf dem Steckbrett Drähte einzustecken, werden beim FPGA die elektrischen Verbindungen durch das Schließen von auch schon vorhandenen »Schaltern« vorgenommen. Abbildung 3-1 zeigt den sehr stark vereinfachten prinzipiellen Aufbau eines FPGA. Man erkennt in Abbildung 3-1 Folgendes:

  • Es gibt Grundelemente, die intern flexibel miteinander verbunden werden können (hier: UND-Gatter, Inverter, D-Flip-Flop).

  • Die meisten Pins des Chips können flexibel den Ein- bzw. Ausgängen der internen Elemente zugeordnet werden (die hier dargestellte Aufteilung in Eingangs- und Ausgangspins existiert in der Praxis so nicht, vielmehr sind die meisten Pins sowohl als Eingang als auch als Ausgang konfigurierbar).

  • Es gibt auch spezielle Pins (hier ein Clock-Eingangs-Pin).

  • Weitere spezielle Pins, zum Beispiel zur Spannungsversorgung, sind vorhanden, auch wenn sie hier nicht explizit gezeigt werden.

Die hier als Schalter dargestellten Verbindungspunkte sind bei einem FPGA im Auslieferzustand alle offen. Mit Hilfe der entsprechenden Designsoftware wird festgelegt, welche »Schalter« für die gewünschte Anwendung geschlossen werden. Man kann sofort erkennen, dass beim Definieren der Verbindungspunkte sorgfältig vorgegangen werden muss, weil sonst schnell Fehler passieren können (z.B. das Kurzschließen zweier Eingänge), die unter Umständen zur Zerstörung des Chips führen. Allein aus diesem Grund werden die »Schalterstellungen« nicht manuell definiert, sondern durch eine spezielle Entwicklungssoftware; einmal ganz davon abgesehen, dass selbst einfachste FPGA so komplex sind, dass ein manuelles Definieren der Konfiguration auf Low-Level-Ebene vollkommen unpraktikabel ist.

Abbildung 3-1: FPGA – prinzipieller Aufbau

Weiterhin erwähnenswert ist, dass die Pins in der Regel auch in Hinsicht auf physikalische Details wie I/O-Pegel (z.B. 3.3V, 2.5V, 1.8V; ein FPGA kann auch sehr elegant als Pegel-Konverter eingesetzt werden), max. Ausgangsstrom usw. konfiguriert werden können bzw. müssen. Die spezifischen Details hängen immer vom verwendeten Chip ab und müssen in der Entwicklungspraxis neben vielen anderen Dingen bei der Auswahl eines FPGA für einen bestimmten Anwendungsfall berücksichtigt werden.

Zu den I/O-Pegeln sei an dieser Stelle schon angemerkt, dass heute verfügbare FPGAs in aller Regel nicht 5V-kompatibel sind. Wer z.B. ein FPGA mit einem Arduino Uno »verheiraten« möchte, sollte die Verbindungsleitungen zwischen Arduino und FPGA über für diesen Zweck geeignete Pegelkonverter leiten.

Selbst mit dem in Abbildung 3-1 dargestellten idealisierten Mini-FPGA lassen sich bereits diverse Schaltungen realisieren, von denen in Abbildung 3-2 einige dargestellt sind. Jede Schaltung kann durch einfache Umkonfiguration des FPGA schnell erzeugt werden, ohne dass an der Hardware irgendetwas geändert werden muss. Dieses Merkmal ist besonders für das Rapid Prototyping interessant. FPGAs sind aber auch im Serieneinsatz und haben dort in einigen Bereichen ASICs1 abgelöst (natürlich auch in Abhängigkeit von Faktoren wie Stückzahlen). Beim Serieneinsatz von FPGAs ist ein interessanter Aspekt, dass auch nach der Auslieferung noch vergleichsweise einfach Änderungen am Hardwaredesign vorgenommen werden können, vergleichbar mit einem Software- bzw. Firmwareupdate.

Abbildung 3-2: Beispielschaltungen

Zum Speichern der Konfigurationsinformationen in dem FPGA existieren im Wesentlichen zwei Ansätze:

  • Statisches RAM (SRAM): Hier gehen die Konfigurationsinformationen komplett verloren, sobald das FPGA von der Spannungsversorgung getrennt wird. Das bedeutet, dass beim Hochfahren der Hardware (= Anlegen der Versorgungsspannung) die Konfiguration jedes Mal wieder neu »eingespielt« werden muss. Dazu gibt es verschiedene Verfahren, verbreitet ist die Verwendung spezieller EEPROMS mit SPI-Schnittstelle.

  • Flash-Speicher: Hier bleibt die Konfiguration beim Abschalten erhalten. Auf der anderen Seite benötigt Flash-Speicher mehr Platz auf dem Chip und ist relativ teuer.

In Wirklichkeit ist das Ganze noch wesentlich komplexer als bisher dargestellt. Beispielsweise finden sich in einem typischen FPGA keine einzelnen UND-Gatter etc. Die Basisbausteine bilden vielmehr Elemente, die je nach Hersteller z.B. »Logic elements« oder »Logic Cells« genannt werden. Sie beinhalten als wesentliche Bestandteile ein bis zwei Lookup-Tables und ein oder zwei Flip-Flops sowie Infrastruktur zum Routen der Signale wie Multiplexer (alles abhängig vom Hersteller und vom genauen FPGA-Typ). Mit Hilfe eines Lookup-Table können sämtliche logischen Kombinationen zwischen den Eingangssignalen (für die hier betrachteten FPGAs typisch 3 ... 6) dieses Basisbausteins gebildet werden.

Anhand eines kleinen Beispiels soll ein Lookup-Table erklärt werden. Es soll die Funktion o = (i1|i2)&i3 implementiert werden. Abbildung 3-3 enthält die entsprechende Schaltung.

Abbildung 3-3: LUT-Beispielschaltung

Die (booleschen) Eingangssignale ›il‹, ›i2‹ und ›i3‹ können als Indices für den Lookup-Table angesehen werden, für jede Kombination dieser Eingangswerte ergibt sich ein eindeutiger Ausgangswert ›o‹.

Dieses einfache Beispiel sollte man mit Papier und Bleistift nachvollziehen, wenn es beim ersten Lesen nicht klar ist. Es wäre dann sinnvoll, zunächst den Ausgang des ODER-Gatters als Zwischenwert zu bestimmen und im zweiten Schritt die UND-Verknüpfung dieses Zwischenergebnisses mit dem dritten Eingang zu ermitteln, was dann auch schon das gesuchte Ausgangssignal ›o‹ liefert. Genauso kann man sich auch andere einfache oder auch komplexere Schaltungen überlegen und dazu den entsprechenden Lookup-Table aufstellen. Letztendlich wird man zu dem Schluss kommen, dass jede beliebige kombinatorische Schaltung mit Hilfe eines Lookup-Table realisiert werden kann. Im Web findet man auch Generatoren für Lookup-Tables, z.B. unter http://programming.dojo.net.nz/study/truth-table-generator/.

i1

i2

i3

0

0

0

0

0

0

0

1

0

0

1

0

0

0

1

1

1

1

0

0

0

1

0

1

1

1

1

0

0

1

1

1

1

Tabelle 3-1: Wahrheitstabelle zu Abbildung 3-3

Eine wiederum stark vereinfachte und idealisierte Version einer »Logic Cell« (oder wie auch immer dieses Basiselement vom jeweiligen Hersteller bezeichnet wird) ist in Abbildung 3-4 dargestellt.

Neben dem Lookup-Table (LUT) sind noch ein Multiplexer (MUX) und ein Flip-Flop (FF) dargestellt. Als Flip-Flop-Typ (D, J/K etc.) wird in der Regel das D-Flip-Flop verwendet. Außerdem sind für das Flip-Flop neben Daten- und Clock-Eingang noch Eingänge für Clock-Enable (CE) und Set/Reset (S/R) dargestellt.

Diese Logikzellen werden häufig paarweise zusammengefasst, dieses Konstrukt nennt sich dann zum Beispiel »Slice«. Selbst einfache FPGA, wie sie für Maker interessant sind, enthalten in der Regel wenigstens 1000 Logikzellen.

Neben den Logikzellen befinden sich auf einem FPGA noch weitere Basisbausteine, die hier jetzt nur kurz erwähnt werden (Ausprägung und Menge hängen wieder stark vom FPGA-Typ ab):

  • I/O-Zellen: Spezielle Elemente, welche die Verbindung zwischen den Pins und den weiteren Resourcen des FPGAs herstellen. Zum Teil befinden sich dort auch Flip-Flops, welche z.B. zum Abtasten eines Eingangssignals mit der Basisfrequenz des FPGAs verwendet werden können. Auch spezielle Schaltungen z.B. zum Interfacing mit Schnittstellen wie dem PCI-Bus sind dort untergebracht.

    Abbildung 3-4: Idealisierte Logikzelle

  • PLLs2 und Clock-Manager: FPGA-Boards enthalten häufig einen Quarzgenerator mit einer festen Frequenz, z.B. 100 MHz, der das FPGA mit einem zentralen Clock-Signal versorgt. Für verschiedenste Anwendungen werden jedoch Clock-Signale mit einer anderen Frequenz oder sogar mehrere Clock-Signale benötigt. Dafür sind PLLs und Clock-Manager...

Erscheint lt. Verlag 21.10.2016
Verlagsort Heidelberg
Sprache deutsch
Themenwelt Informatik Weitere Themen Hardware
Schlagworte Einführung • field programmable gate arrays • FPGA • Logikbausteine • Maker • Programmierbare Logik
ISBN-10 3-96088-031-6 / 3960880316
ISBN-13 978-3-96088-031-8 / 9783960880318
Haben Sie eine Frage zum Produkt?
PDFPDF (Wasserzeichen)
Größe: 47,3 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

EPUBEPUB (Wasserzeichen)
Größe: 45,5 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich