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.