Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
'FPGA-Entwicklung mit Verilog' richtet sich an alle, die praktisch in die FPGA-Welt einsteigen oder von VHDL zu Verilog wechseln möchten. Im Mittelpunkt steht dabei das MAX1000-Board, das als durchgängige Hardware-Plattform für alle Beispiele und Projekte dient. Das Buch führt Dich Schritt für Schritt von den Grundlagen der Digitaltechnik über die Verilog-Sprache bis hin zu vollständigen FPGA-Projekten. Du lernst nicht nur die Syntax von Verilog kennen, sondern vor allem, wie daraus funktionierende Schaltungen entstehen. Themen wie Flipflops, Zähler, Lauflichter, Siebensegmentanzeigen, Zustandsautomaten oder serielle Schnittstellen werden praxisnah erklärt und direkt auf dem FPGA umgesetzt. Ein besonderer Schwerpunkt liegt auf dem Verständnis digitaler Zusammenhänge: Warum eine Schaltung so funktioniert, wie sie funktioniert, und wie sich Verilog-Code in reale Hardware übersetzt. Simulation, Testbenches und typische Stolperfallen werden ebenso behandelt wie saubere Strukturierung und nachvollziehbare Designs. Das Buch eignet sich für Hobby-Programmierer, Elektronik-Interessierte und Umsteiger von VHDL, die Verilog systematisch und praxisorientiert erlernen möchten. Vorausgesetzt werden grundlegende Programmierkenntnisse, nicht aber tiefgehende FPGA-Erfahrung. Ziel ist es, Dir das nötige Wissen an die Hand zu geben, um eigene Verilog-Projekte zu verstehen, zu erweitern und selbstständig umzusetzen – ohne unnötigen Ballast, aber mit einem klaren Blick auf die Praxis.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 345
Veröffentlichungsjahr: 2026
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Verilog-Projekte mit dem Max1000-Board für Einsteiger und Umsteiger
Erik Bartmann
Bombini Verlag
2026-02-12
FPGA-Entwicklung mit Verilog
1
Einleitung
2
Das FPGA-Board MAX1000
2.1
Die Pinbelegung des Boards
2.2
Der Beipackzettel des Boards
2.3
Grundlegende Komponenten
2.4
Eine kleine Modifikation zur späteren Nutzung
3
Die erforderliche Software
3.1
Die Installation von VHDPlus
3.2
Die Installation von Quartus-Prime-Lite
3.3
Die Konfiguration von VHDPlus
3.4
Der RTL-Viewer von Quartus-Prime
3.5
Logisim evolution
3.6
Die VHDPlus-Entwicklungsumgebung
3.7
Interessante Links
3.7.1
Get started with VHDP
3.7.2
Hello World
3.7.3
Die Community
3.7.4
GitHub-Tutorials
3.7.5
GitHub-Examples
3.7.6
Project Chat über Discord
3.8
Die OneWare-Studio-Entwicklungsumgebung
3.8.1
The Next Generation IDE for Electronics
4
Verilog
4.1
Verilog und SystemVerilog
4.1.1
Grundlegende Informationen zu Verilog
4.1.2
Ein Modul
4.1.3
Die Logikpegel
4.1.4
Elektrische Signale
4.1.5
Das Konzept der Stärke
4.1.6
Die Konstanten
4.1.7
Die Bus-Signale - Arrays
4.2
Die Operatoren
4.2.1
Die arithmetischen Operatoren
4.2.2
Die logischen Operatoren
4.2.3
Die bitweisen Operatoren
4.2.4
Die Verschiebe-Operatoren
4.2.5
Die Vergleichs-Operatoren
4.2.6
Der Bedingungs-Operator (Ternary Operator)
4.2.7
Der Verkettungs-Operator
4.3
Die Variablen-Zuweisungen
4.3.1
Kontinuierliche Zuweisungen mit assign
4.3.2
Prozedurale Zuweisungen in Blöcken
4.4
Die Datentypen
4.5
Die Kontrollstrukturen
4.5.1
Die Verzweigungen
4.6
Die Schleifen
4.7
Die Kommentare
4.7.1
Der einfache und einzeilige Kommentar
4.7.2
Die Block-Kommentare (auch mehrzeilig)
5
Das FPGA-Design
5.1
Die Anforderungsanalyse und Spezifikation
5.1.1
Die Architektur und der Blockentwurf
5.1.2
Das RTL-Design
5.1.3
Die Simulation und Verifikation
5.1.4
Die Synthese
5.1.5
Die Implementierung
5.1.6
Das Timing-Analyse und die Bitstream-Generierung
5.1.7
Der Download und die Inbetriebnahme
6
Einleitung Digitaltechnik
6.1
Der tiefere Sinn dieses Kapitels
6.2
Die Logik-Grundgatter
6.3
Die Grundgatter
6.4
Die Boolesche Algebra
6.5
Das UND-Gatter (AND-Gate)
6.5.1
Der Verilog-Code
6.6
Der Download auf das MAX1000-Board
6.6.1
Der Compile-Vorgang
6.7
Das ODER-Gatter (OR-Gate)
6.7.1
Der Verilog-Code
6.8
Das NICHT-Gatter (NOT-Gate)
6.8.1
Der Verilog-Code
6.9
Die zusammengesetzten Gatter
6.9.1
Das NAND-Gatter (NAND-Gate)
6.9.2
Der Verilog-Code
6.9.3
Das NOR-Gatter (NOR-Gate)
6.9.4
Der Verilog-Code
6.9.5
Gatterpegel im Überblick
6.10
Ein Flipflop
6.11
Zustandsgesteuertes D-Flipflop
6.11.1
Der Verilog-Code
6.12
Taktflanken gesteuertes D-Flipflop
6.12.1
Der Verilog-Code
7
Das MAX1000-Discoveryboard
7.1
Der Schaltplan
7.2
Das MAX1000-Board
7.3
Die Bauteile
7.3.1
Die Lochrasterplatine
7.3.2
Das Mini-Breadboard
7.3.3
Die Buchsenleisten
7.3.4
Die Taster
7.3.5
Die Schiebeschalter
7.3.6
Die Leuchtdioden
7.3.7
Die Siebensegmentanzeige
7.3.8
Die Transistoren
7.3.9
Die Widerstände
7.3.10
Verschiedene Kabel
7.3.11
Die Lötstation
7.3.12
Die Patchkabel
7.3.13
Ein wenig Werkzeug
7.4
Abschließende Worte
8
Die Ansteuerung der LEDs
8.1
Die LED-Pins am FPGA
8.1.1
Der Verilog-Code - Einfache LED-Ansteuerung
8.2
Das Compiling
8.3
Das Downloading
8.4
Alternative LED-Ansteuerungen
8.4.1
Der Verilog-Code - Die Bit-Ansteuerung
8.4.2
Der Verilog-Code - Die Array-Ansteuerung
8.5
Einen Reset der LED-Ansteuerungen
8.5.1
Der Verilog-Code
9
Die Abfrage eines Tasters
9.1
Der Verilog-Code
9.2
Das Compiling
9.2.1
Schritt 1: VHDL-Signal auswählen
9.3
Das Downloading
9.4
Das Testen der Hardware
9.5
Die Anpassung der Schaltung
10
Blocking und Non-Blocking
10.1
Ein prominentes Beispiel
10.2
Die Blocking-Variante (=)
10.3
Die Non-Blocking-Variante (<=)
10.4
Die Online-Simulation
10.5
Die Offline-Simulation mit iverilog
11
Ein paar Bit- und Byte-Spielereien
11.1
Ein Bit
11.2
Ein Byte
11.3
Der Vergleich zwischen Bits und Bytes
11.4
Negative Werte
11.5
Die Invertierung von Bits
11.6
Schiebeoperationen
11.6.1
Das logische Rechtsschieben
11.6.2
Das logische Linksschieben
11.6.3
Das arithmetische Rechtsschieben
11.6.4
Das arithmetische Linksschieben
11.6.5
Das Links-Rotieren
11.6.6
Das Rechts-Rotieren
11.7
Bits setzen und löschen und toggeln
11.7.1
Bits setzen
11.7.2
Bits löschen
11.7.3
Bits Toggeln
11.8
Wie funktionieren Arrays
11.9
Parameter in Verilog
11.10
localparam
11.11
parameter
12
Wir Rechnen
12.1
Eine Addition
12.2
Der Halbaddierer
12.2.1
Der Verilog-Code
12.2.2
Der Schaltungsaufbau
12.2.3
Der RTL-Viewer für den Halbaddierer
12.3
Der Volladdierer
12.3.1
Der Schaltplan
12.3.2
Der Verilog-Code für den Volladdierer
12.3.3
Der Schaltungsaufbau
12.3.4
Die Simulation mit Logisim Evolution
12.3.5
Der RTL-Viewer für den Volladdierer
12.4
Die Realisierung über Komponenten
12.4.1
Die Verilog-Struktur für den Volladdierer
12.4.2
Der Verilog-Code beider Modelle
12.5
Ein Vier-Bit-Volladdierer
12.5.1
Der Schaltplan
12.5.2
Der Verilog-Code für den 4-Bit-Volladdierer
12.5.3
Der Schaltungsaufbau
12.5.4
Die verwendeten Werte
13
Ein störrischer Taster
13.1
Was ist ein Taster und was sind die Probleme
13.2
Das Entprellen
13.3
Das Debounce-Projekt
13.4
Der Top-Level-Verilog-Code
13.5
Das Taktsignal des MAX1000
14
Eine blinkende LED
14.1
Der Verilog-Code - Einstieg
14.2
Der Verilog-Code - Etwas anders
14.3
Puls-Weiten-Modulation
14.4
Wie funktioniert PWM in Detail
14.5
Der Schaltplan
14.6
Der Verilog-Code
15
Ein Lauflicht
15.1
Das manuelle Toggeln einer LED
15.2
Ein manuelles Lauflicht
15.2.1
Der Verilog-Code
15.3
Ein manuelles Lauflicht - verbessert
15.3.1
Der Verilog-Code
15.4
Ein automatisches Lauflicht
15.4.1
Der Verilog-Code
16
Verschiedene Flipflops
16.1
Das SR-Flipflop mit Flankensteuerung und synchronem Reset
16.1.1
Der Schaltplan
16.1.2
Der Verilog-Code - Synchroner Reset
16.2
Eine Testbench
16.2.1
Der Verilog-Code
16.3
Das SR-Flipflop mit Flankensteuerung und asynchronem Reset
16.3.1
Der Schaltplan
16.3.2
Der Verilog-Code - Asynchroner Reset
16.4
Das D-Flipflop
16.4.1
Der Verilog-Code - Taktgenerierung
16.4.2
Die Takt-Generierung
16.4.3
Der Verilog-Code - Der eigentliche Test
16.5
Ein Schieberegister mit D-Flipflops
16.6
Die Simulation mit Logisim-Evolution
16.6.1
Der Verilog-Code
16.7
Ein D-Flipflop mit Reseteingang - asynchron
16.7.1
Der Schaltplan
16.7.2
Der Verilog-Code
16.7.3
Das Verhalten
16.8
Ein D-Flipflop mit Reseteingang - synchron
16.8.1
Der Schaltplan
16.8.2
Der Verilog-Code
16.8.3
Das Verhalten
16.9
Die Gegenüberstellung beider Reset-Möglichkeiten
16.9.1
Die Simulation
16.9.2
Der Verilog-Code für den asynchronen Reset
16.9.3
Der Verilog-Code für den synchronen Reset
16.10
Das JK-Flipflop
16.10.1
Der Schaltplan
16.10.2
Der Verilog-Code
16.11
Das T-Flipflop
16.11.1
Der Verilog-Code
16.12
Eine Frequenzteilung
16.12.1
Der Verilog-Code
16.12.2
Der RTL-Viewer
17
Digitale Logik - Schaltungssynthese
17.1
Die Wertetabelle
17.2
Minterme und Maxterme
17.3
Schaltungsminimierung mit einem KV-Diagramm
17.3.1
Der Verilog-Code
17.3.2
Der RTL-Viewer für die verwendete Logik
17.4
KV-Diagramm mit drei Eingangsvariablen
17.5
KV-Diagramm mit vier Eingangsvariablen
17.6
Essentielle digitale Rechenregeln
17.6.1
Verknüpfung mit einer Konstanten
17.6.2
Verknüpfung mit einer Konstanten und Eingangssignal
17.6.3
Das Kommutativgesetz
17.6.4
Das Assoziativgesetz
17.6.5
Das Distributivgesetz
17.6.6
Die De Morganschen Gesetze
17.6.7
Einfache und doppelte Negation
17.6.8
Vorrang- und Klammerregel
18
Ein Zähler mit bestimmter Zählfolge
18.1
Die Anzahl der Flipflops
18.2
Der Typ der Flipflops
18.3
Die Zustandsübergänge der JK-Flipflop-Ausgänge
18.4
Die Arbeitstabelle eines JK-Flipflops
18.4.1
Eine Zustandsänderung von 0 → 0:
18.4.2
Eine Zustandsänderung von 0 → 1:
18.4.3
Eine Zustandsänderung von 1 → 0:
18.4.4
Eine Zustandsänderung von 1 → 1:
18.5
Die Eingänge der JK-Flipflops
18.5.1
Der J0-Eingang
18.5.2
Der K0-Eingang
18.5.3
Der J1-Eingang
18.5.4
Der K1-Eingang
18.5.5
Der J2-Eingang
18.5.6
Der K2-Eingang
18.5.7
Zusammenfassung und Umsetzung
18.6
Der Schaltplan
18.7
Der Verilog-Code
19
Die Ansteuerung einer Siebensegmentanzeige
19.1
Die Segmente der Anzeige
19.2
Die Ansteuerungsvarianten
19.3
Das Multiplexing
19.4
Die Ansteuerung einer einzigen Siebensegmentanzeige
19.4.1
Exkurs Transistor
19.5
Der Schaltplan
19.6
Die Realisierung des Codes
19.6.1
Der Verilog-Code
19.6.2
Der Schaltungsaufbau
19.7
Eine Mehrstellige Anzeige
19.7.1
Die Orientierung der einzelnen Stellen (Digits)
19.7.2
Die Ansteuerung der Anoden
19.7.3
Die einzelnen Stellen berechnen
19.7.4
Die Verdrahtung der Anoden
19.7.5
Der Schaltplan
19.7.6
Der Verilog-Code
19.8
Der Impulszähler
19.8.1
Der Schaltplan
19.8.2
Der Verilog-Code
19.9
Die Anzeige des eigenen Zählers
19.9.1
Der Schaltplan
19.9.2
Der Verilog-Code
20
Eine Statemachine
20.1
Eine Ampelsteuerung
20.2
Einige Vorüberlegungen
20.3
Der Schaltplan
20.4
Der Verilog-Code
20.5
Der Schaltungsaufbau
21
Multiplexer
21.1
4-1-MUX (1-Bit)
21.1.1
Die Simulation mit Logisim
21.1.2
Der Verilog-Code für den 4-1-MUX (1-Bit)
21.1.3
Der Schaltplan
21.1.4
Der Schaltungsaufbau
21.1.5
Die Simulation des 4-1-MUX
21.2
4-1-MUX (4-Bit)
21.2.1
Der Verilog-Code für den 4-4-MUX (4-Bit)
21.2.2
Der Schaltplan
21.2.3
Der Schaltungsaufbau
21.3
Demultiplexer
21.3.1
Die Simulation mit Logisim
21.3.2
Der Verilog-Code für den 1-4-DEMUX (1-Bit)
21.3.3
Der Schaltplan
21.3.4
Der Schaltungsaufbau
22
Werte vergleichen
22.1
Der 1-Bit-Komparator
22.1.1
Die Simulation mit Logisim
22.2
Der 2-Bit Komparator
22.2.1
Das KV-Diagramm (A>B)
22.2.2
Die Simulation mit Logisim (A>B)
22.2.3
Das KV-Diagramm (A=B)
22.2.4
Die Simulation mit Logisim (A=B)
22.2.5
Das KV-Diagramm (A<B)
22.2.6
Die Simulation mit Logisim (A<B)
22.2.7
Der Verilog-Code
22.2.8
Der Schaltplan
22.2.9
Der Schaltungsaufbau
23
Negative Zahlen
23.1
Der Verilog-Code
23.2
Der Schaltplan
23.3
Der Schaltungsaufbau
23.4
Ein Umschalten zwischen unsigned und signed
23.4.1
Der Schaltplan
23.4.2
Der Verilog-Code
24
Eine LED-Matrix
24.1
Die LED-Punkt-Matrix
24.2
Das LED-Array
24.3
Der Schaltplan
24.4
Der Verilog-Code - Vorbereitung
24.5
Der Code - Zeichendarstellung
24.6
Der Schaltungsaufbau
25
Die serielle Schnittstelle - UART
25.1
Das Versenden eines Textes vom MAX1000 zum Mikrocontroller
25.1.1
Der Schaltplan
25.1.2
Der Verilog-Code
25.1.3
Der Raspberry Pi Pico
25.1.4
Der MicroPython-Code
25.2
Das Empfangen eines Zeichens vom Mikrocontroller
25.2.1
Der Schaltplan
25.2.2
Der MicroPython-Code
25.2.3
Der Verilog-Code
25.2.4
Die Empfangslogik
25.2.5
Die Startbit-Erkennung
25.2.6
Die Datenbits empfangen
25.2.7
Die LED-Steuerung
25.3
Eine binäre Darstellung
25.3.1
Der MicroPython-Code
26
Die Ansteuerung über SPI
26.1
Die SPI-Kommunikation
26.2
Der Portexpander MCP23S17
26.2.1
Die Funktionsweise und Programmierung
26.3
Der Schaltplan
26.4
Der Verilog-Code
26.4.1
Die Portdefinition
26.4.2
Die FSM-Zustände
26.5
Der Schaltungsaufbau
26.6
Der Unterschied zur Variante über den I
2
C-Bus
Title Page
Cover
Table of Contents
Impressum
Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen.
Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Kommentare und Fragen können Sie gerne an uns richten:
Bombini Verlags GmbH Richard-Wagner-Str. 11 53757 Sankt Augustin E-Mail: [email protected]
Copyright: © 2026 by Bombini Verlag
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.
ISBN 978-3-946496-54-0
Das Thema FPGA - Field Programmable Gate Arrays - ist in der Literatur schon vielfach besprochen und behandelt worden. Es gibt unzählige Bücher, die teilweise sogar frei im Internet herunterzuladen sind und wenn man möchte, dann kann man sich damit eindecken und tage-, monate-, wochen- und jahrelang lesen und studieren, was sicherlich eine Menge Zeit in Anspruch nehmen wird. Da die Anzahl der zur Verfügung stehenden FPGA-Boards ebenfalls erschlagend und gerade ein Einsteiger damit überfordert ist, wird einem die Wahl nicht gerade einfach gemacht, da die Preise der Boards zudem noch ins Unermessliche steigen und fast unbezahlbar sind. Für einen interessierten Leser, der vielleicht nur einmal in das Thema reinschnuppern möchte, um dann zu entscheiden, ob das ganze später auch intensiver weiterverfolgt werden soll oder eben nicht, sind Hardwarekosten von mehreren hundert Euro nicht gerade reizvoll. Und ohne ein passendes FPGA-Board ist das Unterfangen in meinen Augen zum Scheitern verurteilt, denn nur mit Lesen und gegebenenfalls Simulieren eines Projektes macht es zudem wenig Spaß und das soll, so meine Einstellung, oberste Prämisse sein!
In diesem Buch werde ich Sie, den Leser, nach besten Kräften an die Hand nehmen und es so einfach wie möglich gestalten, einen geeigneten Einstieg in die FPGA-Thematik zu finden. Das Buch ist kein Buch für Spezialisten, die sich schon mit FPGAs auskennen und tiefere Zusammenhänge und Erkenntnisse suchen. Es ist ein Buch, das - wie der Titel vermuten lässt - etwas für alle Interessierten Leser ist, die bereit sind, etwas Neues zu machen, weil sie Lust dazu verspüren und weil es eben machbar ist. Bastler und Frickler, wie ich das immer so gerne nenne, sind hier die Zielgruppe, die vielleicht schon mit der Arduino-Plattform erste Berührungen hinsichtlich Programmierung und Elektronik gemacht haben.
In sehr vielen Büchern, die im Moment auf dem Markt sind, werden unterschiedliche oder überhaupt keine Entwicklungsumgebungen zur Erstellung und Verwaltung des Codes angegeben und ebenso verhält es sich bei den FPGA-Boards. Dem möchte ich mit diesem Buch begegnen und eine klare Linie aufzeigen. Aus diesem Grund nutze ich eine freie Entwicklungsumgebung und ein kostengünstiges FPGA-Board für unter 50 Euro, so dass jeder mit recht wenig finanziellem Aufwand einsteigen kann. Falls einem das Thema dennoch nicht zusagen sollte, hält sich der „Schaden” in Grenzen.
Die Entwicklungsumgebung für das FPGA-Boards mit dem Namen VHDPlus ist von Leon Beier und Hendrik Mennen von Protop Solutions UG.
https://vhdplus.com/
Versuchen Sie, die Grundlagen zu ergründen und zu verstehen, denn mit den propagierten neuen und allzu intelligenten Programmiersprachen wie C++, C#, Python und sogar Basic und Co. werden Sie zwar das Programmieren erlernen, doch die eigentlichen Hintergründe, wie alles angefangen hat, werden für Sie vielleicht im Verborgenen bleiben. Wer durchblickt heutzutage noch die Programmierung und die ständigen Updates, die in immer kürzeren Abständen auf uns hernieder prasseln. Lassen Sie sich sagen, dass ich „vom Fach bin”, wie man das so schön sagt, und ich langsam den Kanal dicht habe, ob der Flut von Neuerungen und dem KI-Hype, der uns alle und der Welt so viel geniale Neuerungen bringt, dass wir nicht mehr nachdenken brauchen. „Lehnen Sie sich zurück, denn wir übernehmen alles für Sie.” Wer auf diesen Slogan hereinfällt, dem ist leider nicht mehr zu helfen. Verfallen Sie nicht der Versuchung, die KI (Künstliche Intelligenz) dafür zu nutzen, Probleme für Sie zu lösen. Das ist die dahinterliegende Strategie, um uns zu verdummen und in eine Abhängigkeit zu bringen. Oh Gott, wie kann ich mein Problem lösen? Ich frag mal besser die KI! Genau! Nutzen Sie die KI, wenn Sie schon über eine gewisse Grunderfahrung in der Programmierung verfügen, so wie ich, dann ist das sicherlich in Ordnung.
Machen Sie - nach Möglichkeit - Ihre eigenen Erfahrungen und bilden Sie sich Ihre persönliche Meinung aufgrund von persönlichen Recherchen. Glauben Sie niemals einem anderen Menschen, der meint, es besser zu wissen, sondern Ihrem eigenen inneren Kompass! Wenn ich Themen oder Überschriften in anderen Publikationen lese, die da lauten: „Recherche und Zeitersparnis”, dann bekomme ich das kalte Grausen. Wer in meinen Augen darauf reinfällt, der hat es noch nicht verstanden. Es geht hier nicht um Zeitersparnis, sondern um Bequemlichkeit!
Mit der aggressiven Verbreitung und propagierten Nutzung von ChatGPT und vergleichbarer Systeme sollte man sich die legitime Frage stellen, welche neuen Kompetenzen durch diese Technologien aufgebaut werden (sollen). Wie können derartige KI-Systeme souverän eingesetzt und zum Nutzen der Menschheit verwendet werden? Es besteht - und ich wiederhole mich - die nicht zu unterschätzende Gefahr, dass auf diese Weise essentielle und für den Menschen wichtige Kompetenzen verloren gehen könnten. In diesem Zusammenhang sollte der Begriff „Deskilling” einer näheren Betrachtung unterzogen und diskutiert werden. Damit ist der potenzielle Verlust menschlicher Kompetenzen mit individuellen und kollektiven Folgen gemeint.
Ein zentraler Ausgangspunkt der Überlegungen ist die Beobachtung, dass die aktuellen Debatten rund um ChatGPT stark von einer gewissen überschwänglichen Begeisterung oder Aufbruchsstimmung rund um das Thema sogenannter Future Skills – also Zukunftskompetenzen geprägt ist.
Aber das ist nur meine persönliche Meinung und ich will niemanden missionieren, wie man das so schön sagt.
Erik Bartmann
Planet Erde, Januar 2026
Bevor ich gleich auf die Entwicklungsumgebung eingehe, möchte ich mich jetzt dem Board zuwenden, für das ich mich entschieden habe, weil es klein, handlich, recht übersichtlich strukturiert ist und auch außerordentlich günstig ist. Zudem wird es in Deutschland produziert, was für jeden ein Merkmal sein sollte, das auf Qualität beziehungsweise Zuverlässigkeit hindeutet und der oder die Ansprechpartner kompetent und auch erreichbar sind. Das ist bei sehr vielen Produkten aus Fernost leider nicht gegeben und sollte bei der Wahl von Komponenten in Erwägung gezogen werden, auch, wenn es im ersten Moment noch so günstig erscheinen mag.
Abbildung 2.1:
Das MAX-1000 Development-Board
Das MAX1000 FPGA Development Board ist der preiswerteste Weg, um mit FPGAs und der Entwicklungsumgebung VHDPlus zu beginnen. Das Herzstück des FPGA-Boards besteht aus einem kompakten Intel MAX 10 FPGA mit 8000 Logikelementen. Dieser Einzelchip enthält einen integrierten Flash-Speicher, einen 1Msps 12bit ADC (Analog-Digital-Converter) für analoge Signale und eine 3,3V-Stromversorgung. Zu den weiteren Merkmalen gehören eingebettetes SRAM, DSP-Blöcke, Instant-on (das Laden der Konfiguration) innerhalb von Millisekunden und die Möglichkeit, Intels NIOS II Soft-Core-Embedded-Prozessor zur Ausführung von Mikrocontroller-Aufgaben zu implementieren. Um das Board einfach zu programmieren, ist es mit einem integrierten Arrow USB-Programmer ausgestattet, mit dem das FPGA direkt von einem PC aus programmiert und mit der kostenlosen Intel Quartus Prime Lite Software debugged werden kann, wodurch eine sehr einfache Plug-and-Play-Lösung ermöglicht wird.
Das alles hört sich an, wie bei einer Werbeveranstaltung, wo es darum geht, die angepriesenen Produkte schnell unter die Leute zu bringen und so viel Geld zu verdienen, wie es nur möglich ist. Doch lassen wir uns nicht täuschen, denn es geht hier wirklich um eine fantastische Möglichkeit, einen interessierten Einsteiger, der sich noch nie mit FPGAs auseinandergesetzt hat, an die Hand zu nehmen und ihn kostengünstig mit etwas vertraut zu machen, was vielleicht später seine berufliche Zukunft positiv beeinflussen könnte. Eigentlich sollte es nicht um einen stumpfsinnigen Beruf gehen, bei dem es nur um das primäre Ziel geht, Geld zu verdienen, sondern um eine persönliche Berufung, denn es sollte Spaß machen und nicht in stressige Arbeit ausarten.
Wenn es um die Nutzung des MAX1000-Boards geht, ist natürlich die Pinbelegung sehr wichtig und essentiell. Ich möchte an dieser Stelle einen ersten Eindruck von relevanten Pins liefern, die beim Board bei der Lieferung jedoch nur als Bohrungen in der Platine vorliegen, in die am besten Stiftleisten eingelötet werden. Dann steht der Nutzung des Boards auf einem Breadboard nichts mehr im Wege. Ich komme natürlich noch im Detail darauf zu sprechen. Wirft man einen Blick von oben auf das Board, wobei sich die USB-Buchse oben und die Bauteile auf der zu uns gewandten Seite befinden sollen, dann schaut das wie folgt aus.
Abbildung 2.2:
Das MAX1000-Board von oben gesehen
Zur Kommunikation mit dem Board stehen unterschiedliche I/O-Pins zur Verfügung. Bei manchen handelt es sich nur um Eingänge, wie den AIN- und AINx-Pins (AIN0 bis AIN7), die für analoge Signale zur Verfügung stehen. Andere Anschlüsse sind sogenannte GPIO-Pins, was die Abkürzung für General Purpose Input/Output ist und bedeutet, dass im Moment noch nicht klar ist, ob der jeweilige digitale Anschluss (D0 bis D14) als Ein- oder als Ausgang arbeiten soll. Das gewünschte Verhalten wird erst durch die spätere Definition festgelegt.
Das Board besitzt natürlich für den Anschluss mit dem Computer eine USB-Micro-Buchse, die oberhalb der Platine zu sehen ist. Der entsprechende Stecker des Kabels muss also wie folgt ausschauen.
Abbildung 2.3:
Das USB-Kabel mit Micro-Stecker
Links von der USB-Buchse befindet sich eine kleine rote LED, die immer dann aufleuchtet, wenn der Code aus der Entwicklungsumgebung auf den FPGA geladen wurde, was zeitlich nur sehr kurz ist. Rechts von der Buchse ist eine grüne LED zu sehen, die anzeigt, wenn das Board mit Spannung versorgt ist. Links und rechts an den Board-Außenkanten befinden sich zwei sehr kleine Microtaster, die einerseits für einen Reset (links) und andererseits für einen Test (rechts) genutzt werden können. Mit dem rechten Taster werden wir gleich eines der ersten Experimente durchführen. Wichtig zur Anzeige sind natürlich die acht kleinen LEDs (LED1 bis LED8) unterhalb des rechten Tasters, die ebenfalls für unser erstes Experiment herhalten müssen. Alle Anschlussbezeichnungen, die sich rund um das Board befinden, dienen für analoge und digitale Signale, die in das Board hinein oder herauskommen können. Wir gehen natürlich später genauer darauf ein.
Was ich lustig fand, war die kleine Beschreibung des Boards in Form eines Beipackzettels, der aus der Schachtel fiel und einige nützliche Informationen über Risiken und Nebenwirkungen bereithielt. Da standen zum Beispiel folgende Dinge.
Tabelle 2.1:
MAX1000- Spezifikationen
Wer Lust hat, kann sich nach dem Auspacken des Boards schon einmal von dessen Funktionsfähigkeit überzeugen lassen. Nach der Verbindung mit dem USB-Port des Computers zeigt sich das MAX1000-Board als Wasserwaage, wobei die acht LEDs, je nach Lage in der Längsachse, derart aufleuchten, dass die Neigung wie bei einer realen Wasserwage angezeigt wird. Befindet sich das Board in der Waage, leuchten die mittleren beiden LEDs auf. Wird das Board gekippt, wandert die Anzeige entsprechend zu den außen liegenden LEDs.
Auf der folgenden Abbildung sind die grundlegenden Komponenten des MAX1000-Boards zu sehen, die sich rund um den Kern des Intel MAX 10 FPGA-Bausteins befinden.
Abbildung 2.4:
Die Komponenten rund um den MAX10-FPGA
Es ist zu sehen, dass das MAX1000-Board unter anderem über die beiden Speicherformen FLASH und SDRAM verfügt und in der Kapazität recht ordentlich dimensioniert sind. Diese beiden Elemente sind die Grundvoraussetzung zur Implementierung einer sogenannten Soft-Core-CPU, also zur Etablierung einer CPU, die über einer Hardware-Beschreibungssprache realisiert wurde. Wir kommen noch darauf zu sprechen. Zur Anzeige von Statusinformationen sind 8 LEDs vorhanden und zwei Taster, von denen einer eine Reset-Funktion besitzt und der andere frei genutzt werden kann. Ein Bewegungssensor inklusive Beschleunigungssensor sind ebenfalls implementiert, was für interessante Projekte genutzt werden kann.
Da man als Bastler und Frickler für elektronische Themen natürlich nicht um die Nutzung eines Steckbrettes - in Fachkreisen Breadboard genannt - herumkommt, um darüber elektronische Schaltungen zu realisieren, was übrigens Prototyping genannt wird, muss das Board mit entsprechenden Stiftleisten versehen werden. Dazu sind natürlich grundlegende Lötkenntnisse erforderlich, was jedoch keine große Hürde darstellt. Auf der folgenden Abbildung ist das Board mit den beiden 14-poligen Stiftleisten zu sehen.
Abbildung 2.5:
Das MAX1000-Board mit den beiden 14-poligen Stiftleisten
Es ist natürlich wichtig, dass die Stiftleisten mit den etwas längeren Beinchen nach unten weisen, wie das auf dem umgedrehten Board auf der rechten Seite zu erkennen ist. Diese Modifikation ist auch erforderlich, wenn das Board auf das Experimentierboard aufgesteckt werden soll, das von mir erstellt wurde und sich Discoveryboard nennt.
Ich denke, dass sollte als kleine Einführung zum MAX1000-Board erst einmal genügen, so dass ich zum nächsten Kapitel überleiten möchte, wo es um die Installation der erforderlichen Software geht, damit das MAX1000-Board auch zu etwas Sinnvollem genutzt werden kann.
Damit wir die im Buch erwähnten Projekte umsetzen können, sind verschiedene Programme zu installieren, was jedoch recht leicht zu realisieren ist. Alles kann - mehr oder weniger - über die eigentliche Entwicklungsumgebung VHDPlus gestartet und kontrolliert werden. Gehen wir die Details einmal durch.
Das Herzstück unserer Entwicklungen wird durch die Entwicklungsumgebung - kurz IDE: Integrated Development Environment) VHDPlus bereitgestellt. Die VHDPlus-IDE macht das Schreiben von Code so einfach wie möglich. Mehrere Funktionen wie Code-Vorschläge, Autokorrektur und Fehlerlisten helfen bei der Programmierung des MAX1000-Boards. Die Software ist unter der folgenden Internetadresse zu bekommen.
https://vhdplus.com/docs/getstarted/#install-vhdplus-ide
Falls sich dieser Link einmal ändern sollte, rate ich, die Startseite von VHDPlus
https://vhdplus.com/
auszuwählen und sich von dort aus zum angegebenen Download vorzuarbeiten. Auf dieser Seite befinden sich dann auch die Installationshinweise und die Hardwareunterstützung für das verwendete FPGA-Board. In unserem Fall ist das natürlich der MAX10 Device Support. Zusätzlich muss der zum Programmiergerät passende Treiber installiert werden, um den FPGA zu programmieren. Der VHDPlus Core verfügt über einen ARROW USB Programmer aufgrund seiner zusätzlichen USB zu UART-Schnittstelle. Weitere Informationen sind unter der folgenden Internetadresse zu finden.
https://vhdplus.com/docs/getstarted/drivers/
Der einfachste Weg zur Installation des Treibers erfolgt über den VHDPlus eigenen Paket-Manager, auf den wir noch zu sprechen kommen.
Da VHDPlus die Entwicklungsumgebung zur Erstellung des FPGA-Codes, jedoch nicht für die Kompilierung der Projekte zuständig ist, muss eine weitere Software installiert werden, die von VHDPlus im Hintergrund aufgerufen wird. Beide Softwarepakete arbeiten quasi Hand in Hand und tauschen Informationen untereinander aus. Diese zusätzliche Software nennt sich Quartus und wird in der Prime-Lite-Version ohne zusätzliche Kosten installiert. Wurde diese Software im vorgeschlagenen Standardverzeichnis installiert, sind auf dieser Seite keine weiteren Konfigurationsschritte erforderlich. Die Installationsdatei ist unter dem folgenden Link zu bekommen.
https://download.altera.com/akdlm/software/acdsinst/18.1std/625/ib_installers/QuartusLiteSetup-18.1.0.625-windows.exe
Falls auch dieser Link nicht mehr aktuell sein sollte, finden sich die notwendigen Informationen auf der Startseite von VHDPlus.
Der Start von VHDPlus erfolgt über das angelegte Symbol oder über das Start-Menü von Windows. Im Moment möchte ich lediglich auf die Konfigurationen von VHDPlus eingehen, denn die eigentliche Beschreibung der Entwicklungsumgebung erfolgt am Ende dieses Kapitels. Da nun - fast - alle erforderlichen Softwarepakete installiert sind, sehen wir uns also die Konfiguration unter VHDPlus an, denn dort müssen einige Pfade überprüft und gegebenenfalls Anpassungen vorgenommen werden. Der Aufruf des Paket-Managers erfolgt über Extras > Package Manager.
Abbildung 3.1:
Der Aufruf des Paket-Managers
Im nachfolgenden Dialog-Fenster stehen zahlreiche Möglichkeiten für weitere Softwarepakete zur Verfügung. Die folgenden Pakete sollten für ein reibungsloses Arbeiten vorhanden sein.
Abbildung 3.2:
Erforderliche Softwarepakete im Paket-Manager
Am Anfang sind natürlich nur die VHDPlus-IDE installiert, so dass bei den anderen Paketen die entsprechenden Install-Schaltflächen angeklickt werden müssen. Auf der folgenden Abbildung ist das bei den beiden Software-Paketen GTKWave und GHDL zu sehen, die für die spätere Simulation benötigt werden.
Abbildung 3.3:
Erforderliche Softwarepakete für die Simulation
Letztendlich sehen wir uns die Pfade an, die zur Nutzung eingetragen sein müssen.
Abbildung 3.4:
Der Aufruf der Einstellungen über Settings
Im nachfolgenden Dialog-Fenster können verschiedene Kategorien ausgewählt werden. Fangen wir mit General an und sehen nach, ob der Quartus-Pfad korrekt ist und die Software erkannt wurde. Mit der grünen Umrandung wird signalisiert, dass die Software vorhanden ist und korrekt in VHDPlus eingebunden wurde.
Abbildung 3.5:
Der Pfad für die Quartus-Software
Über Editor kann der Editor hinsichtlich der angezeigten Parameter und Optionen konfiguriert werden.
Abbildung 3.6:
Die Editor-Parameter
Zeichengröße und Font-Family (Zeichensatz) sind selbstredend. Interessant sind die folgenden Merkmale.
Code Completion - Auto-Vervollständigung
Wenn der Code geschrieben wird, versucht die VHDPlus-IDE, Vorschläge für mögliche Schlüsselwörter oder Code-Passagen zu machen, die an dieser Stelle dem Code eingefügt werden können. Angenommen, es geht um die Deklaration eines Input-Signals, dann reicht es in der Regel, die ersten 2 oder 3 Buchstaben einzugeben und es werden von der IDE verschiedene Möglichkeiten zur Vervollständigung in einer Liste angeboten.
Abbildung 3.7:
Code-Completition
Wenn jetzt die markierte Zeile mit der RETURN-Taste bestätigt wird, kommt es zur Übernahme des Listeneintrags in den Editor. Falls diese angebotenen Einträge ignoriert werden sollen, schreibt man im Editor einfach weiter.
Automatic Code formatting - Auto-Code-Formatierung
Wenn der Code eingegeben wird, dann kommt es bei der Aktivierung dieser Option zum automatischen Einrücken des Codes, was maßgeblich zur Übersicht beiträgt.
Automatic bracket creation - Auto-Klammer-Erstellung
Wenn Klammern (rund oder geschweift) eingegeben werden, dann ist es wichtig und notwendig, dass zu einer öffnenden Klammer auch immer eine schließende gehört. Damit die schließende nicht vergessen wird, wird bei aktivierter Option immer das entsprechende Klammerpaar gebildet und die Eingabemarke dazwischen platziert.
Enable folding
Code-Faltung oder auch Code-Folding bezeichnet eine Funktion in Entwicklungsumgebungen, um logisch zusammengehörende Codeabschnitte zu gruppieren. Es ist dann möglich, die betreffenden Abschnitte einfach ein- oder ausblenden, ganz so, als ob ein Blatt gefaltet und wieder auseinandergeklappt würde. Das wird entweder durch ein Minus- oder Pluszeichen mit einem senkrechten Strich zur Gruppierung angezeigt.
Über Languages kann der Editor hinsichtlich der installierten Sprachen konfiguriert werden, auf die ich im Detail jedoch nicht eingehen werde, weil es selbsterklärend ist.
Abbildung 3.8:
Die Languages-Konfigurationen
Über Simulator können die installierten Simulationsprogramme konfiguriert werden.
Abbildung 3.9:
Die Simulator-Konfigurationen
Es ist hier zu sehen, dass der Pfad zur Simulationssoftware Modelsim nicht korrekt ist. Wie wir schon gesehen haben, kann die Simulationssoftware für GHDL in Verbindung mit GTKWave über den Package-Manager von VHDPlus installiert werden. Das ist jedoch für Modelsim nicht möglich. Dazu muss der folgende Download-Link genutzt werden.
https://download.altera.com/akdlm/software/acdsinst/18.1std/625/ib_installers/ModelSimSetup-18.1.0.625-windows.exe
Über Arduino können die Pfade hinsichtlich der Arduino-Installationen konfiguriert werden. In der Regel sind diese nach der Installation über den Package-Manager schon korrekt gesetzt.
Abbildung 3.10:
Die Arduino-Konfigurationen
Über NIOS können Konfigurationen für eingebettete Prozessoren vorgenommen werden. NIOS ist der Produktname eines eingebetteten Prozessors des Chipherstellers Altera, der in Form eines sogenannten Soft Core Prozessors vorliegt. Mit diesem Verfahren kann eine synthetische, also simulierte CPU in einen FPGA implementiert werden.
Abbildung 3.11:
Die NIOS-Konfigurationen
Über Dev. Options können diverse Entwicklungsoptionen manipuliert werden, die jedoch für uns keine Rolle spielen werden. Weitere Informationen sind auf der Herstellerseite zu finden.
Abbildung 3.12:
Die Dev-Options-Konfigurationen
Primär werden wir natürlich die Entwicklungssoftware VHDPlus nutzen, doch diese nutzt unter der Haube die Quartus-Prime-Lite Software, die zum Beispiel beim Compiling, also beim Übersetzen des Codes aufgerufen wird. Normalerweise muss die Entwicklungsumgebung dieser Software nicht aufgerufen werden, um darüber den Verilog- beziehungsweise VHDL-Code zu entwickeln beziehungsweise zu verwalten. Es läuft alles über VHDPlus. Dennoch kann es sinnvoll sein, zum Beispiel den sogenannten RTL-Viewer aufzurufen, und sie sich die Ergebnisse des Compilings anzuschauen. RTL ist die Abkürzung für Register Transfer Level und stelle eine grafische Darstellung des erkannten Schaltplans dar. Der Aufruf bietet wichtige Erkenntnisse, die für einen Anfänger zwar eine gewisse Komplexität darstellt, doch beim Verständnis der Materie hier und da sehr hilfreich sein kann. Hier einige wichtige Punkte.
Die Betrachtung des Syntheseergebnisse, um festzustellen ob die gewünschte Logik implementiert wurde
Eine Durchführung einer visuellen Prüfung des Entwurfs, bevor eine Simulation gestartet wird
Die Lokalisierung eines fehlerhaften Signals im Entwurf
Die Liste ließe sich sicherlich noch um einige Punkte erweitern, soll aber für den Einstieg genügen. Der Aufruf des RTL-Viewers erfolgt über die Quartus-Software, wobei ich in den jeweiligen Kapiteln genauer darauf eingehen werde. In der Toolbar von VHDPlus befindet sich rechts neben der Download-Schaltfläche das Quartus-Symbol.
Bei einem Klick darauf wird die Quartus-Entwicklungsumgebung für das gerade aktive VHDPlus-Projekt geöffnet.
Logisim evolution ist ein kostenloser Logik-Simulator (GNU General Public License), mit dessen Hilfe digitale Schaltungen über eine grafische Oberfläche entworfen und simuliert werden können. Diese Software ist zur Umsetzung der Projekte in diesem Buch nicht zwingend erforderlich, hilft jedoch enorm beim Verständnis der Materie. Der Link zur Software ist wie folgt.
https://github.com/logisim-evolution/logisim-evolution
Hier eine kleine Schaltung eines D-Flipflops mit Zustandssteuerung.
Abbildung 3.13:
Eine Logisim-Schaltung (D-Flipflop mit Zustandssteuerung)
Wer sich für Logisim-evolution interessiert, für den ist vielleicht das ebenfalls im Bombini-Verlag erschienene Buch einen Blick wert.
Bombini-Verlag
https://www.bombini-verlag.de/
Aus Platzgründen kann ich an dieser Stelle nicht die komplette VHDPlus-Entwicklungsumgebung mit all ihren Funktionen erläutern, doch ich möchte einen groben Überblick liefern, was sich wo an welchen Stellen befindet. Später in den einzelnen Projekten werden dann genau die zu nutzenden Merkmale beschrieben. Nach dem Start präsentiert sich die Entwicklungsumgebung wie folgt und wir haben das Programm schon bei der Überprüfung der Konfiguration gesehen und minimal genutzt.
Abbildung 3.14:
Die VHDPlus-Entwicklungsumgebung
Im Grunde genommen können wir die Entwicklungsumgebung in drei Bereiche unterteilen, die hier und da jedoch weitere Unterbereiche vorweisen können. Und natürlich haben wir am oberen Rand die Menüleiste und die Toolbar. Ich habe die drei Bereiche farbig markiert und entsprechende Erläuterungen daruntergesetzt.
Abbildung 3.15:
Die VHDPlus-Entwicklungsumgebung mit ihren Bereichen
Die Farben haben die folgenden Bedeutungen.
Tabelle 3.1:
Farbbedeutungen der VHDPlus-IDE
Informationen zum blauen Bereich
Der Bereich, der auf der linken Seite meistens sichtbar ist, ist der Project-Explorer. In ihm werden alle Dateien, die zum jeweiligen Projekt gehören, in Form einer Baumstruktur angezeigt. Innerhalb des Project-Explorers besteht die Möglichkeit Dateien und Ordner per Drag & Drop zu verschieben. Des Weiteren bietet das Kontext-Menü auf Dateien oder Ordner einen großen Funktionsumfang zur Behandlung des jeweiligen Objektes an.
Abbildung 3.16:
Die Kontext-Menüs des Project-Explorers
Der Library-Explorer beinhaltet diverse Bibliotheken, die für eigene Projekte verwendet werden können. Auch hier gibt es verschiedene Kontext-Menüs.
Abbildung 3.17:
Die Kontext-Menüs des Library-Explorers
Über Source-Control beziehungsweise den Team-Viewer wird eine integrierte Versionskontrolle mit Git angeboten. Darüber ist es sehr einfach, Änderungen in einem Projekt zu verfolgen, zu vergleichen und mit Git-Anbietern wie GitHub, Azure oder anderen zu synchronisieren. Auf diese Weise wird sichergestellt, dass der Code sicher ist und auch im Team an Projekten gearbeitet werden kann.
Informationen zum roten Bereich
Der Bereich, der natürlich intensiv genutzt wird, ist der, wo der Code eingegeben und modifiziert wird. Dort können auch mehrere Dateien geöffnet sein, die über unterschiedliche Tab-Reiter am oberen Rand ausgewählt werden können. Jedes Mal, wenn im Projekt-Explorer eine Datei mit Doppelklick ausgewählt wurde, erscheint deren Inhalt im Code-Bereich mit entsprechendem Tab-Reiter, der den Namen der Datei enthält. Die momentan zu sehende Datei wird im Tab-Reiter farblich hervorgehoben. Um eine Datei zu schließen, muss das kleine Kreuz rechts neben dem Dateinamen angeklickt werden.
Abbildung 3.18:
Zwei geöffnete Dateien im Code-Bereich
Informationen zum grünen Bereich
Der untere grüne Bereich ist der Ausgabebereich, der diverse Informationen hinsichtlich Status, Fehlermeldungen, Serieller Monitor oder JTAG-Konsole liefert. Natürlich ist beim Kompilieren das Output-Fenster sehr wichtig, denn in ihm landen alle Hinweise, die Quartus beim Übersetzungsvorgang bereitstellt. Auch erkannte Fehler im Code werden dort in Rot angezeigt. Möchte man jedoch nur die Fehlermeldungen auf einen Blick sehen, ohne im Wust der Quartus-Meldungen diese ausfindig zu machen, wechselt man die Sicht auf das Code-Errors-Fenster.
Abbildung 3.19:
Output und Code-Errors
Der entscheidende Vorteil des Code-Error-Fensters besteht zudem darin, dass bei einem Doppelklick auf die betreffende Zeile, der Cursor unmittelbar an die Stelle des Problems springt, an der ein Fehler im Code erkannt wurde. Über diverse Einstellungen in der Toolbar des Code-Fensters können Meldungen gefiltert oder es kann nach bestimmten Begriffen gesucht werden.
Abschließend möchte ich noch die Menüleiste und die Toolbar erwähnen, deren Funktionen so vielfältig sind, dass sie hier den Rahmen sprengen würden. Ich nenne im Buch die für uns wichtigen Punkte und verweise dann für den Rest auf die Herstellerseite von VHDPlus.
Abbildung 3.20:
Die Menüleiste und Toolbar
Doch bevor es losgehen kann, muss zuerst ein Projekt angelegt werden. Dazu müssen die folgenden Schritte ausgeführt werden.
Schritt 1: VHDPlus-Projekt erstellen
Über den Menüpunkt File > New > Project kann ein neues Projekt angelegt werden.
Abbildung 3.21:
Ein neues VHDPlus-Projekt anlegen - Schritt 1
Schritt 2: VHDPlus-Projekt-Typ wählen
Im nachfolgenden Dialog muss sowohl ein Projektname, als auch die zu nutzende Sprache gewählt werden. Standardmäßig ist beim Template, also der Vorlage, die Sprache Verilog gewählt. Diese muss für uns gleich geändert werden.
Abbildung 3.22:
Ein neues VHDPlus-Projekt anlegen - Schritt 2
Nach der Eingabe des Namens muss über die Drop-Down-Liste der Template- beziehungsweise Projekt-Typ ausgewählt werden.
Abbildung 3.23:
Ein neues VHDPlus-Projekt anlegen - Schritt 2
Für uns ist das natürlich das Verilog-Project und für spätere Simulationen der darunter zu sehenden Eintrag Verilog-Project with Simulation. Im unteren Bereich sind Beispielprojekte wie Motor and Encoder, Level Shifter, Camera and HDMI und einige mehr zu sehen, die nach der Auswahl zum eigenen Code hinzugefügt werden. Das ist für uns jedoch in diesem Buch kein Thema und wer weitere Informationen dazu benötigt, der möchte bitte die Herstellerseite bemühen.
Schritt 3: VHDPlus-Projekt endgültig anlegen
Im letzten Schritt muss lediglich die Save-Schaltfläche am unteren Rand des Dialogs angeklickt werden. Das Projekt wird angelegt und erscheint mit dem vergebenen Namen im Projekt-Explorer.
Abbildung 3.24:
Ein neues VHDPlus-Projekt anlegen - Schritt 3
Für ein kommendes Projekt merkt sich die Entwicklungsumgebung den zuletzt gewählten Template-Typ, so dass dieser sofort angeboten wird.
Die Toolbar
Die für uns nachfolgend wichtigen Punkte befinden sich in der Toolbar, denn dort können sie ohne langes Suchen und Klicken schnell und unkompliziert ausgewählt werden. Im Grunde genommen kann man von links nach rechts vorgehen und sich durchklicken.
Auswahl des aktiven Projektes über die Drop-Down-Liste (bei mir ist es im Moment das Projekt mit dem Namen Logic)
Das Übersetzen des Codes über die Compile-Schaltfläche starten
Das Runterladen des Codes auf das FPGA-Board über die Download-Schaltfläche
Hier sei noch etwas aus der Erfahrung mit dem Umgang von VHDPlus zu erwähnen. Es ist mir anfänglich immer wieder passiert, dass ich Code über Compile übersetzten wollte, jedoch mit dem falschen aktiven Projekt. Optisch wird das gerade aktive Projekt innerhalb des Project-Explorers dadurch gekennzeichnet, dass der Name im Gegensatz zu den anderen nicht aktiven Projekten fett dargestellt wird.
Abbildung 3.25:
Das aktive Projekt (Gatter_AND) ist fett hervorgehoben
Natürlich befindet sich zusätzliche noch der Name des aktiven Projektes - wie gerade schon erwähnt - in der genannten Drop-Down-Liste links neben der Compile-Schaltfläche, wie das auf der folgenden Abbildung zu erkennen ist. Das aktive Projekt kann auch von dort ausgewählt werden. Aufgrund der Länge des Projektnamens ist der Eintrag etwas verkürzt zu sehen.
Abbildung 3.26:
Das aktive Projekt ist in der Toolbar zu sehen
Wenn es später um den Download, also um das Speichern des Codes auf dem FPGA geht, ist etwas Entscheidendes zu bemerken. Standardmäßig ist das sogenannte Long-Term Programming deaktiviert, wie das auf der folgenden Abbildung zu sehen ist. Dieser Menüpunkt ist unter Extras > Long-Term Programming zu finden.
Abbildung 3.27:
Das Long-Term Programming
Nach dem Download des zuvor kompilierten Codes ist dieser unmittelbar auf dem FPGA verfügbar. Wird jedoch die Spannungsversorgung über den USB-Anschluss entfernt und später wieder verbunden, ist dieser Code nicht mehr vorhanden und es ist standardmäßig die elektronische Wasserwaage aktiv, was dem Auslieferungszustand des MAX1000-Boards entspricht. Wird jedoch Long-Term Programming aktiviert, ist der Code persistent, also fortlaufend verfügbar und übersteht auch eine Spannungsunterbrechung.
Abschließend zu diesem Kapitel möchte ich noch ein paar sehr interessante Links zeigen, hinter denen sich eine Menge an Informationen im Zusammenhang mit VHDPlus verbergen.
https://vhdplus.com/docs/getstarted/
https://vhdplus.com/docs/guides/helloworld/
https://vhdplus.com/docs/community/overview/
https://github.com/VHDPlus/vhdplus-website
https://github.com/VHDPlus/VHDPlus_Libraries_and_Examples/
https://discord.com/invite/NCN9VAh
Abschließend zu diesem Kapitel möchte ich noch eine Entwicklungsumgebung mit dem Namen OneWare-Studio erwähnen. Sie wird von denselben Machern wie VHDPlus programmiert und schaut nach einer Weiterentwicklung von VHDPlus aus. Diesmal handelt es sich jedoch um Open Source. Leider befindet sich die Software noch nicht in einem nutzbaren Stadium, so dass ich zum jetzigen Zeitpunkt VHDPlus präferiere, was kein Problem darstellt. Die Internetadresse lautet:
https://one-ware.com/studio/
Folgende Themen werden besprochen.
Was ist Verilog
Was ist ein Modul
Was sind Logikpegel und elektrische Signale
Was sind Konstanten
Unterschiedliche Operatoren in Verilog
Verschiedene Variablenzuweisungen in Verilog
Einige Kontrollstrukturen in Verilog
Was sind Kommentare
Die digitale Schaltungstechnik hat in den letzten Jahrzehnten enorme Fortschritte gemacht. Von einfachen Logikgattern bis hin zu komplexen System-on-Chip-Designs (SoCs) sind die Anforderungen an Entwicklerinnen und Entwickler stetig gestiegen. Um dieser Komplexität gerecht zu werden, benötigt man leistungsfähige Werkzeuge, mit denen sich digitale Systeme effizient entwerfen, simulieren und verifizieren lassen.
Eines der wichtigsten und am weitesten verbreiteten Werkzeuge in diesem Bereich ist Verilog. Verilog ist eine Hardwarebeschreibungssprache (HDL), die in den 1980er-Jahren entwickelt wurde und heute zu den Standardsprachen in der digitalen Schaltungsentwicklung zählt. Mit Verilog lassen sich sowohl die Struktur als auch das Verhalten digitaler Systeme auf verschiedenen Abstraktionsebenen beschreiben – von der Register-Transfer-Ebene (RTL) bis hin zu Gatter- oder Verhaltensmodellen. Dadurch bildet Verilog die Brücke zwischen der theoretischen Beschreibung einer Schaltung und ihrer späteren Realisierung in Hardware, etwa auf FPGAs oder ASICs.
Mit diesem Buch möchte ich den Leser Schritt für Schritt an die Sprache Verilog heranführen. Ziel ist es, nicht nur die Syntax und Semantik zu vermitteln, sondern auch ein praxisnahes Verständnis für die Entwicklung digitaler Systeme zu schaffen. Diese Einführung ist aus gutem Grund recht einfach gehalten, denn es geht um eine spielerische und seichte Heranführung an eine sehr komplexe Thematik, die jedoch nicht das Ziel sein soll und wird. Es soll Spaß machen und recht schnell zu ersten Erfolgen kommen, ohne dass Frust aufkommt. Dazu werden die folgenden Schwerpunkte behandelt.
Grundlagen der digitalen Logik und die Motivation für Hardwarebeschreibungssprachen.
Aufbau und Syntax von Verilog.
Modellierungstechniken auf unterschiedlichen Abstraktionsebenen.
Simulation und Testbenches (Übersetzung: Messbank, Prüfstand) zur Überprüfung von Designs.
Praktische Beispiele, vom einfachen Schieberegister bis hin zu komplexeren Modulen.
