FPGA-Entwicklung mit Verilog - Erik Bartmann - E-Book

FPGA-Entwicklung mit Verilog E-Book

Erik Bartmann

0,0

Beschreibung

'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:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 345

Veröffentlichungsjahr: 2026

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



FPGA-Entwicklung mit Verilog

Verilog-Projekte mit dem Max1000-Board für Einsteiger und Umsteiger

Erik Bartmann

Bombini Verlag

2026-02-12

© 2026 Bombini Verlag – Alle Rechte vorbehalten

Inhaltsverzeichnis

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

FPGA-Entwicklung mit Verilog

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

1 Einleitung

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

2 Das FPGA-Board MAX1000

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.

2.1 Die Pinbelegung des Boards

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.

2.2 Der Beipackzettel des Boards

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.

2.3 Grundlegende Komponenten

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.

2.4 Eine kleine Modifikation zur späteren Nutzung

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.

3 Die erforderliche Software

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.

3.1 Die Installation von VHDPlus

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.

3.2 Die Installation von Quartus-Prime-Lite

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.

3.3 Die Konfiguration 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

3.4 Der RTL-Viewer von Quartus-Prime

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.

3.5 Logisim evolution

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/

3.6 Die VHDPlus-Entwicklungsumgebung

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.

3.7 Interessante Links

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.

3.7.1 Get started with VHDP

https://vhdplus.com/docs/getstarted/

3.7.2 Hello World

https://vhdplus.com/docs/guides/helloworld/

3.7.3 Die Community

https://vhdplus.com/docs/community/overview/

3.7.4 GitHub-Tutorials

https://github.com/VHDPlus/vhdplus-website

3.7.5 GitHub-Examples

https://github.com/VHDPlus/VHDPlus_Libraries_and_Examples/

3.7.6 Project Chat über Discord

https://discord.com/invite/NCN9VAh

3.8 Die OneWare-Studio-Entwicklungsumgebung

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:

3.8.1 The Next Generation IDE for Electronics

https://one-ware.com/studio/

4 Verilog

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.