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 entweder in Downloadbereich oder hier runterladen kann.

Das FPGA-Board besitz 4 Taster, die mit Key0 bis Key3 bezeichnet werden. Davon wollen wir den Taster Key0 benutzen. Dieser soll beim Drücken eine rote Led, die auf dem Board mit LEDR0 gekennzeichnet ist, zum leuchten bringen. In dieser Aufgabe wird bewußtauf 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. Auf dem DE2-115 Board ist ein Cyclone IV E verbaut, diese Familie wird bei Device family ausgewählt. Die genaue Bezeichnung des FPGA lautet EP4CE115F29C7, dies wird bei Name filter eingetragen. In der Auswahlbox unten muss nu n 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 das Cyclone IV E: EP4CE115F29C7 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.


Die neue erstellte Datei erscheint unter Files im Projekt Navigator. Mit der rechten Maustaste auf die Datei geklickt öffnet sich ein neues Fenster. Mit Set as Top-Level-Entity wird sichergestellt, dass diese Datei später richtig zugeordnet wird. Dieser Schritt ist normalerweise überflüssig sein, sollte aber zur Sicherheit ausgeführt 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 2 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 DE2-115 ist zu entnehmen, dass der Key0 dem Pin M23 und die LEDR0 dem Pin G19 zugeordnet sind. Klickt man unter Location in das freie Feld und gibt dort M23 ein wird automatisch Pin_M23 eingetragen. Mit ENTER bestätigen (nicht vergessen!). Das Gleiche macht man dan bei der LEDR0 mit G19.












Nach dem Eintragen wechseln die Felder die Farbe. Das Fenster kann nach der Eingabe einfach geschlossen werden.

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 links 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 Board muss es in den ersten USB-Port ganz links gesteckt werden. 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.


Mit Add File wird nun das zu übertragende Projektfile ausgewählt. Dieses befindet sich im Ordner output_files (falls dies nicht anders eingestellt wurde). Das Projektfile trägt die Endung .sof




Mit Start wird die Übertragung gestartet.

Das Ergebnis überrascht jetzt allerdings. Die rote Led LEDR0 leuchtet, obwohl keine Taste gedrückt wurde! Das hängt mit der Verschaltung der Taster auf dem Board zusammen. Diese sind mit einem Pull-UP Widerstand auf High-Level (logisch 1) gezogen und werden durch das Drücken mit GND verbunden (logisch 0). Daher leuchtet die Led, obwohl der Taster nicht gedrückt wurde. Beim Drücken erlischt dann die Led. möchte man den eigendlich erwarteten Zustand wiederherstellen, muss im VHDL File folgende Änderung vorgenommen werden.

   led_aus <= a_ein;

wird zu

   led_aus <= not a_ein;

Damit ist das erste Projekt abgeschlossen. Das fertige Projekt kann hier im zip-Format heruntergeladen werden.