Das FPGA-Projekt

Die Komplexität der Bedienung der Quartus II-Software macht es erforderlich, diese anhand eines einfachen Beispiels Schritt für Schritt zu erläutern. Alle Schritte sind auch in einem PDF zu finden, das man im Downloadbereich runterladen kann.

Das FPGA-Board besitz 3 Taster, die mit button0 bis button2 bezeichnet werden. Davon wollen wir den Taster button0 benutzen. Dieser soll beim Drücken eine grüne Led, die auf dem Board mit LEDG0 gekennzeichnet ist, zum leuchten bringen. In dieser Aufgabe wird bewußt auf logischen Schaltungen verzichtet, so dass das Programm sehr einfach zu verstehen ist. Angelehnt ist diese Aufgabe an die ersten Schritte im Attiny- bzw. ATMEGA-Projekt.

Starten des Projekt-Wizards

Nach dem Starten der Software kann man mit dem Projekt Wizard ein neues Projekt anlegen. Dieser erleichtert einem die nötigen Einstellungen und erzeugt ein Grundgerüst für das Projekt. Später kann man ganz oder teilweise auf diese Hilfe verzichten.

Seite 1 des Wizards

Für jedes Projekt sollte ein neuer Ordner angelegt werden, da eine große Anzahl von Dateien erzeugt werden. Der Ordner wird in der ersten Spalte ausgewählt. Der Projektname solle möglichst eindeutig sein.
Der Name der Top-Level-Entity ist sehr wichtig und wird später noch benötigt. Es empfiehlt sich, diesen aus dem Projektnamen mit dem Zusatz _top zu bilden. Selbstverständlich kann er auch ganz anders lauten. Die Seite wird mit NEXT bestätigt. Die folgende Seite 2 kann ebenfalls mit NEXT übersprungen werden.


Seite 3 des Wizards

Bei dieser Seite wird das richtige FPGA ausgewählt. Um hier Einstellungen vorzunehmen, muss zuerst der Radiobutton bei Target device richtig eingestellt werden. Auf dem DE0 Board ist ein Cyclone III verbaut, diese Familie wird bei Device family ausgewählt. Die genaue Bezeichnung des FPGA lautet EP3C16F484C6, dies wird bei Name filter eingetragen. In der Auswahlbox unten muss nun das einzige verbleibende FPGA unbedingt markiert werden, dabei wird es blau hinterlegt. Danach kann der Wizard mit FINISH verlassen werden.

VHDL Datei anlegen
Hat man alles richtig gemacht, so erscheint nun links das Cyclone III: EP3C16F484 und die vorher bestimmte Top_Level_Entinty in dem Projekt Navigator. Unter File New kann jetzt eine VHDL-Datei angelegt werden. Dazu öffnet sich ein weiteres Fenster, in dem die Option VHDL ausgewählt wird und diese mit OK bestätigt wird



VHDL Programm erstellen

Die links stehende VHDL-Datei umfasst die ENTITY (Schnittstellenbeschreibung). Der Name der ENTITY muss unbedingt mit dem vorher vergebenen Namen der TOP_LEVEL-ENTITY übereinstimmen, sonst kommt es später zu Fehlermeldungen. Das Programm kann hier als Textfile heruntergeladen werden und mit Copy und Past eingefügt oder selbst getippt werden.
Die erstellte Datei muss nun unter File Save..as mit dem Namen Led_top.vhd gespeichert werden.


Bei den späteren Projekten werden die 3 Taster, die 9 grünen Leds und die 9 Schiebeschalter ständig benutzt. Daher ist es sinnvoll, diese alle schon mal in die Entity einzufügen, um sie später alle nutzen zu können.

Für unser Beispiel brauchen wir allerdings nur die ledG0 und den button0.

clk_50 ist die Systemtaktrate von 50 Mhz, diese werden wir später auch nutzen.


Das eigendliche Programm ist nun sehr kurz. Der Taster ist im geöffneten Zustand auf +3,3V (High) gezogen. Durch Drücken wird er mit der Masse (Low) verbunden. Daher leuchtet die Led, wenn der Taster nicht gedrückt ist. Da dies nicht unserer Idee entspricht, kann mit dem Befehl NOT der logische Pegel umgeschaltet werden.

Syntax Überprüfen und PINs physikalisch zuordnen.

Mit der links markierten Schaltfäche muss nun die erstellte Datei überprüft werden. Dabei werden auch weitere Einstellungen vorgenommen, so dass sich später die PINS auf dem Board physikalisch zuordnen lassen. Dieser Schritt darf deshalb nicht vergessen werden!

Nach dem Lauf, der einige Sekunden dauert, erscheint eine Zusammenfassung. Wichtig ist, dass der Test mit "Successful" abgeschlossen wird und in unserem Fall 24 Pins  bei Total Pins angezeigt werden.



Mit der links markierten Schaltfläche wird der Pin Planer aufgerufen. Für uns wichtig ist nur die Auswahlbox unten. Dort werden die physikalischen Pins eingetragen.













Aus dem Datenblatt des DE0 ist zu entnehmen, welchem Pin, welches Element zuzuordnen ist. Mit der Maus in das freie Feld bei Location klicken und z.B. bei button0 H2 eingeben. Der Rest wird von Quartus automatisch ausgefüllt. Mit Return gelangt man dann in das nächste Location Feld. Nach dem Eintragen kann der Pin-Planer einfach geschlossen werden, es muss nichts gespeichert werden.

Weiter unten wird eine Möglichkeit gezeigt, den umständlichen Pinplanner zu umgehen.

Kompilation des Projektes

Gestartet wird das Kompilen des Projektes mit der links markierten Schaltfläche. Je nach Rechnerleistung dauert der Vorgang mehrere Minuten.

Einrichten des Programmers und Übertragung auf das Board

Wurde der Vorgang erfolgreich "Successful" abgeschlossen, kann das Projekt nun auf das FPGA Board übertragen werden. Dazu muss der Schiebeschalter links unten auf dem Board auf RUN stehen. Gestartet wird die Übertragung mit der rot markierten Schaltfläche.


Zuerst muss nun die richtige Hardware eingerichtet werden. Dazu muss das Board eingeschaltet werden. Dieser Vorgang muss nur einmal durchgeführt werden. Die Einstellungen bleiben bis zum Neustart der Software erhalten.
Mit Hardware Setup wird der USB Blaster ausgewählen (siehe unten).

Falls der USB-Blaster nicht erscheint zuerst einmal das USB-Kabel überprüfen. Auf dem Rechner muss bei der Installation der Treiber ebenfalls installiert worden sein. Ggf. geschieht dies beim ersten Einstecken automatisch, falls es bei der Installation vergessen wurden. Dann den Programmer noch mal neu starten.

Damit ist das erste Projekt abgeschlossen und kann hier im zip-Format heruntergeladen werden. Damit es in Zukunft etwas einfacher und schneller geht, hier die Schritte um jeweils ein neues Projekt anzulegen:

Anlage eines neuen Projektes in Kurzform

1. Es wird vorher ein leeren Ordner für jedes Projekt angelegt.

2. In Quartus wird der Projekt-Wizard aufgerufen (startet automatisch beim Laden) und dort ein neues Projekt angelegt.


In die erste Zeile wird der vorher angelegte Ordner eingetragen
In die zweite Zeile ein Projektname
In die dritte Zeile der Name der top-level entity
Danach auf Use Existing Project Settings...
In dem dann geöffneten Fenster z.B. das Hello-Projekt auswählen.
Die danach erscheinenden Warnmeldungen jeweils mit YES bestätigen.

3. Es wird mit File New ein neues VHDL-File erstellt.

Damit man sich den umständlichen Pinplaner erspart, kann man auch die Zuordnung der Pins direkt in VHDL vornehmen. Diese Grundgerüst sollte man sich dann extra speichern und jedes Mal mit Copy und Paste in das neue VHDL-File einkopieren. So kann man sich viel Arbeit sparen. Das fertige Textfile ist hier zum Download verfügbar.


Man erkennt schön, dass hier genau wie im Pinplanner jedem Schalter, jeder Led und jedem Schiebeschalter ein Pin zugeordnet wird. die Zuordnung ist aus dem D0-Handbuch zu entnehmen. Später werden wir so auch noch die 4 7-Segmentanzeigen zuweisen, so dass wir das Board komplett benutzen können.

4. Jetzt können wir unser eigendliches Programm schreiben. Dies ist für unser Hello-Beispiel schon fertig und kann hier auch als Projekt im zip-Format heruntergeladen werden.