Sie sind auf Seite 1von 20

Tutorial zur Programmierung von

Altera/Intel-FPGAs unter Verwen-


dung von Quartus und Modelsim

Prof. Dr.-Ing. Elke Mackensen

Dieses Skriptum erhebt keinen Anspruch auf Vollständigkeit


Stand: Version 1.1

© Alle Rechte vorbehalten. 2018


Nur zu Lehrzwecken an der Hochschule Offenburg
II

Inhaltsverzeichnis

1 Einführendes Projektbeispiel unter Verwendung von VHDL, Quartus und


Modelsim ..................................................................................................................4

1.1 Starten der Quartus-Prime-Software .................................................................4

1.2 Ein neues Projekt in Quartus anlegen ...............................................................6

1.3 Eingabe des VHDL-Modellierung ...................................................................9

1.4 Compilierung (= Synthese) ohne Pin-Assignment ............................................ 11

1.5 Simulation des VHDL-Modells (RTL-Simulation)........................................... 11

1.5.1 Starten von Modelsim ....................................................................... 11

1.5.2 Starten der Simulation....................................................................... 13

1.6 Test der VHDL-Modellierung auf Hardware ................................................... 14

1.6.1 Durchführung einer Pinzuweisung zum FPGA ..................................... 15

1.6.2 Nochmalige Compilierung................................................................. 16

1.6.3 Programmierung des FPGA ............................................................... 16

1.6.4 Test der Funktionalität auf dem FPGA ................................................ 17

2 Simulation mittels Skriptdateien in Modelsim .................................................... 18

3 Empfehlungen ................................................................................................... 20

4 Literatur ........................................................................................................... 20
III

Hinweis zu den in diesem Dokument verwendeten Schriftarten:

Dokumententext Schriftart
Kennzeichnung von Befehlen, Menüaufrufen und Courier, fett
speziellen Bezeichnung in OrcaD
sonstiger Text Normalschrift Arial
Kennzeichnung besonders wichtiger und zu beachten-
der Informationen

Kennzeichnung von wichtigen TIPPS


4

1 Einführendes Projektbeispiel unter Verwendung


von VHDL, Quartus und Modelsim

Im Rahmen des Tutorials sollen Sie ein Exor-Gatter mit Quartus modellieren und mit Modelsim
simulieren, so wie den FPGA des Evaluationboards damit programmieren und dann testen. Ab-
bildung 1 stellt den Schaltplan dar, der als VHDL abgebildet wird. Zum Testen werden auf dem
FPGA-Evaluationboard zwei Schalter (X1, X2) und eine LED (f) verwendet.

Abbildung 1: Zu modellierender Schaltplan des Exorgatters

Für die Erstellung des Tutorials wurde die folgende Software-Version verwendet:
 Quartus Prime Lite Edition 17.0
 ModelSim Intel FPGA Starter Edition 10.5b

1.1 Starten der Quartus-Prime-Software


Jeder logische Schaltkreis welcher mit der Quartus-Prime-Software wird in Quartus-Prime als
Projekt bezeichnet. Die Quartus-Prime-Software arbeitet zu einer Zeit immer nur auf einem Pro-
jekt und hält alle Informationen in einem einzigen Ordner des Dateisystems gespeichert. Legen
Sie deshalb zunächst an einem beliebigen Ort in Ihrem Dateisystem einen Projektordner mit
dem Namen introtutorial an.
Starten Sie nun die Quartus Prime software, z.B durch Doppeklick auf das Quartus-
Prime-Icon. Je nach Leistungsfähigkeit des Rechners kann das Starten der Soft-
ware etwas Zeit in Anspruch nehmen. Es öffnet sich das Programmfenster entspre-
chend Abbildung 2. Das Programm besteht aus unterschiedlichen Fenstern, die einen Zugriff
auf alle Funktionalitäten der Quartus-Prime-Software ermöglichen.
5

Die wichtigsten in Abbildung 2 dargestellten Fenster sind:


 Das Project-Fenster: Hier wird das Projekt und der Inhalt des Projektes hierarchisch darge-
stellt.
 Der Arbeitsbereich: In diesem Bereich findet die Bearbeitung der Projektinhalte statt, z.B.
Bearbeitung von VHDL-Dateien mittels Texteditor
 Der Taskbereich: Hier wird die Ausführung diverser Tasks dargestellt, z.B. das Compilieren.
 Das Messagefenster: Hier werden wichtige Nachrichten/Hinweise angezeigt, z.B. Fehler-
meldungen beim Compilieren.

Project-Fenster
Arbeitsbereich

Taskbereich
Messagefenster

Abbildung 2: Das Quartus-Prime-Programm mit unterschiedlichen Fenstern


6

1.2 Ein neues Projekt in Quartus anlegen


Zunächst muss ein neues Projekt angelegt werden. Gehen Sie hierzu wie folgt vor:
Wählen Sie entweder das Icon New Project Wizard aus dem Startbild-
schirm im Arbeitsbereich von Quartus aus oder wählen Sie den Menüeintrag
File New Project Wizard…
 Es erscheint zunächst ein Instruction-Fenster, bei dem Sie den Next-Button betätigen
müssen.
 Im nächsten Fenster (siehe Abbildung 3) müssen Sie zum einen Ihr zuvor angelegtes wor-
king directory introtutorial auswählen. Zum anderen müssen Sie einen Projekt-
namen und den Namen der top-level-design entity vergeben.
Der Projektname muss der gleiche Name wie
der Name der top-level-design entity sein.

 Da im Rahmen des Tutorial ein Exor-Gatter modelliert wird, vergeben Sie den Namen
exor.

Abbildung 3: Anlegen von Directory, Name, Top-Level-Entity mittels Project Wizard


7

Nach Betätigen des Next-Button erscheint eine Fenster zur Auswahl des Project Types.
Wählen Sie hier Empty Project aus (siehe Abbildung 4).

Abbildung 4: Auswahl des Project Type mittels Project Wizard

Nach Betätigen des Next-Buttons erscheint ein Fenster, mit dem Sie bereits existierende
VHDL-Dateien dem Projekt hinzufügen können (siehe Abbildung 5). Dies ist in unserem Fall
nicht gegeben, deshalb betätigen Sie hier den Next-Button.

Abbildung 5: Auswahl von vorhandenen VHDL-Dateien für ein Project mittels des Project-Wizard
8

Im nächsten Fenster (siehe Abbildung 6) müssen Sie den FPGA-Typ auswählen, auf welchem
der Schaltkreis implementiert werden soll. Wählen Sie hier je nach verwendetem Board, das
Ihnen zur Verfügung steht, den korrekten FPGA-Typen aus. In Tabelle 1 sind diverse Boards,
die im VLSI-Labor zum Einsatz kommen, und die darauf enthaltenen FPGA-Typen, aufgelistet.
Tabelle 1: Evaluation-Boards im VLSI-Labor und darauf enthaltene FPGA-Typen

Evaluation-Board-Typ Darauf enthaltener FPGA-Device-Typ


DE0-Nano Family Cyclone IVE: EP4CE22F17C6
DE0-Nano-SoC Family Cyclone V: 5CSEMA4U23C6
DE2-115 Family Cyclone IVE: EP4CE115F29C7
DE10-Standard Family Cyclon V: 5CSXFC6D6F31C6N

Abbildung 6: Auswahl des FPGA-Typen auf den der Schaltkreis implementiert werden soll
9

Nach Betätigen des Next-Buttons erscheint ein Fenster zur Auswahl der von Third-Party-
EDA-Tools. Ändern Sie hier gemäß Abbildung 7 die Einstellungen für den Simulator.

Abbildung 7: Einstellung für das EDA-Tool ModelSim-Altera

Nach Betätigung des Next-Buttons erscheint ein Summary-Fenster. Hier sollten Sie
nochmals alle vorgenommenen Einstellungen überprüfen. Danach können Sie die Einrichtung
des Projekts mit Finish abschließen. Nach Abschluss erkennen Sie im Projekt-Navigator,
dass das Projekt Exor angelegt wurde.

1.3 Eingabe des VHDL-Modellierung


Um nun die VHDL-Modellierung für Ihr Exor-Gatter einzuge-
ben, wählen Sie den Menüeintrag File > New… Es erscheint
ein Fenster New (siehe Abbildung 8) bei dem Sie VHDL aus-
wählen. Nach Betätigen des OK-Buttons wird ein Text-
Editor-Fenster geöffnet.

Abbildung 8: Auswahl der Art des


neuen Design-Files
10

Speichern Sie die Datei zunächst korrekt ab, in dem Sie den Menüeintrag File > Save As…
Nehmen Sie entsprechend Abbildung 9 die Einstellungen vor (Dateityp: VHDL; Dateiname:
exor).

Abbildung 9: Speicherung des exor-VHDL-Files

Geben Sie nun die VHDL-Modellierung des Exors in den Text-Editor gemäß Abbildung 10 ein:

Abbildung 10: Modellierung des Exor-Gatters in VHDL

Nach Eingabe des VHDL-Modells speichern Sie die Datei aber auch das ganze Projekt (File
> Save Project).
11

1.4 Compilierung (= Synthese) ohne Pin-Assignment


 Compilieren Sie nun Ihr Project, zunächst ohne ein Pin-Assignment. Dies können Sie ent-
weder über das Menü Processing > Start Compilation oder das Start-

Compilation-Icon in der Standard-Icon-Toolbar starten.


 Im Task-Fenster erkennen Sie den Fortschritt der Compilierung. Achten Sie auf eventuelle
Fehlermeldungen im Message-Fenster. Bei fehlerhafter Compilierung müssen Sie die Feh-
ler korrigieren und den Vorgang nochmals starten.

1.5 Simulation des VHDL-Modells (RTL-Simulation)


1.5.1 Starten von Modelsim
 Wählen Sie den Menüeintrag Tools > Run Simulation Tool > RTL Simulation
 Sollte eine Fehlermeldung wegen eines unspezifizierten Modelsim-Pfades auftauchen (sie-
he Abbildung 11) müssen Sie zunächst über das Menü Options > Tools und dort Ge-
neral > EDA Tool Options den Pfad zu Modelsim-Altera setzen (siehe Abbildung 12).

Abbildung 11: Fehlermeldung in Quartus bei nicht spezifiziertem Pfad zu Modelsim

Abbildung 12: Setzen des Pfades für Modelsim-Altera


12

Wenn Sie den Pfad korrekt gesetzt haben (der Pfad in Abbildung 12 bezieht sich auf die aktuel-
le Version 17.0 von Quartus), startet Modelsim automatisch. Modelsim besteht aus mehreren
Fenstern (siehe Abbildung 13). Das Konzept von Modelsim ist in Bezug auf Projekt und Work-
ing-Directory ein ähnliches wie bei Quartus. Prinzipiell könnte man mit ModelsSim beliebige
VHDL-Dateien simulieren, ohne Quartus zu nutzen. Der Vorteil des Startens von Modelsim aus
Quartus heraus ist, dass gewisse grundsätzliche Schritte, die für die Simulation mit Modelsim
notwendig sind (Projekt anlegen, Working Directory definieren, Compilieren) bereits erledigt
sind.
Links im Fenster ist die Library work zu sehen (siehe Abbildung 14). Durch Klicken Sie neben
der work-Library auf das „+“-Zeichen, es erscheint die Entity „exor“. Durch Klicken auf das „+“-
Zeichen neben der Entity erscheint die Architektur logicfunction. ausweiten (Klick auf das „+“
Zeichen).

Libraries, die Objects: Signale etc., die durch die


verwendet werden. Simulation zur Verfügung stehen.

Wave-Fenster: Simulierte Signale


etc. in zeitlicher Abhängigkeit

Transcript-Fenster zur Eingabe von Kommandos und dem


Anzeigen von Meldungen/Hinweisen

Abbildung 13: Modelsim und seine verschiedenen Fenster

Abbildung 14: Library-Fenster mit work-Library


13

1.5.2 Starten der Simulation


 Um die Simulation für das Exor (Entity bzw. Architectur) dieses Moduls zu starten muss
man entweder mit der Maus zweimal auf die Entity exor oder die Architektur logicfunc-
tion klicken, oder den Menüeintrag Simulate > Start Simulation… auswählen. In
letzterem Fall muss man die Entíty/Architektur per Browser auswählen.
Im Wave-Fenster sind noch keine zu betrachtenden Signale definiert. Zudem müssen noch die
Signale für die eigentliche Simulation stimuliert werden und dann die Simulation für eine be-
stimmte Zeitdauer ausgeführt werden. Gehen Sie hierzu wie folgt vor:
 Im Objects-Fenster sieht man die Signale des exor. Diese kann man gemeinsam oder
einzeln anwählen und in das Wave-Fenster rechts ziehen. Dort kann man wiederum die
Signale durch Anklicken anwählen und im Wave-Fenster verschieben.
 Die Stimulation für das Signal legen Sie dadurch fest, dass Sie im Objects- oder Wave-
Fenster mit Rechts-Klick auf das Signal klicken. Es öffnet sich ein Menü, wo Sie Clock
wählen. Dies bietet sich für die Stimulierung periodischer Signale an. Die Stimulation für die
Signale x1 und X2 definieren Sie entsprechend Abbildung 15. Wenn Sie keine Zeiteinheit
mitangeben haben, ist die Einheit automatisch Picosekunden (ps).
 Betrachten Sie sich das Transcript-Fenster, hier wird jeder Befehl, den Sie über ein
Menü etc. ausgeführt haben in einer Transcriptsprache mitprotokolliert.

Abbildung 15: Einstellung der Stimulation für die Signale X1 und X2

 Die Simulation können Sie nun laufen lassen, in dem Sie im Transcript-Fenster den
Befehl „run 600“ eingeben (siehe Abbildung 16). Das Ergebnis der Simulation ist in Abbil-
dung 17 dargestellt. Überprüfen Sie, ob Ihre Simulation korrekt arbeitet.
 Machen Sie sich danach mit den Funktionen von Modelsim vertraut.
14

Abbildung 16: Das Transcript-Fenster mit eingegebenem Kommando run 600

Abbildung 17: Ergebnis der Simulation im Wave-Fenster

1.6 Test der VHDL-Modellierung auf Hardware


Wenn die Simulation in Modelsim das gewünschte Resultat bestätigt hat, dann steht dem Test
auf einem FPGA nichts mehr im Wege.
Hierzu sind drei bzw. vier Schritte notwendig:
 Durchführung einer Pinzuweisung zum FPGA
 Nochmalige Compilierung des VHDL-Codes
 Programmierung des FPGA
 Test der Funktionalität auf dem FPGA
15

1.6.1 Durchführung einer Pinzuweisung zum FPGA


Während bei der unter Abschnitt 1.4 beschriebenen Compilierung Quartus Prime jeden mögli-
chen Pin des ausgewählten FPGAs als Input/Output wählen konnte, möchte man nun dediziert
die Pins des FPGAs zuweisen. Es sei hier auf die User-Manuals der entsprechenden Evalua-
tionboards verwiesen ([1]und [2]). Hier ist im Detail beschrieben, welcher Pin wo am FPGA an-
geschlossen ist.
Für den Test der EXOR-Implementierung ist in Abhängigkeit der beiden im HDL-Kurs verwen-
deten Boards, die in Tabelle 2 beschriebene Pinzuweisung zu treffen:
Signal DE2-115-Evaluierungsboard DE10-Standard-Evaluierungsboard
X1 (Input) SW[17]: PIN_Y23 SW[9]: PIN_AA30
X2 (Input) SW[16]: PIN_Y24 SW[8]: PIN_AC29
f (Output) LED[17]: PIN_H15 LED[9]: PIN_AC22
Tabelle 2: Pinzuweisung für das Exor-Tutorialbeispiel

Rufen Sie den Pin-Planner auf (Menü Assignments > Pin Planner) und weisen Sie den
Signalen gemäß Abbildung 18im unteren Bereich des Pin Planners die richtigen Locations zu

Abbildung 18: Pin Planner Tool mit zugewiesenen Locations (hier am Beispiel des DE2-115-
Evaluierungsboard)
16

1.6.2 Nochmalige Compilierung


Führen Sie nochmals die Compilierung des VHDL-Modells nach der Pinzuweisung durch.

1.6.3 Programmierung des FPGA


Stellen Sie sicher, dass Ihr Evaluationboard
 mit Spannung versorgt ist, und
 über den USB-Byte-Blaster-Anschluss an einen USB-Port des Rechners
angeschlossen ist.

 Der FPGA wird mit dem Programmer programmiert. Rufen Sie diesen über den Menüein-
trag Tools > Programmer auf. Es erscheint das in Abbildung 19 dargestellte Fenster
des Programmers.
 Unter Hardware-Setup muss der USB-Blaster (DE2-115-Evaluierungsboard) bzw. der
DE-SoC (DE10-Standard-Evaluierungsboard) ausgewählt sein.
 Das Konfigurationsfile exor.sof muss im mittleren Fenster vorhanden sein. Falls nicht,
müssen Sie es einlesen. Dies ist ein binäres File was durch den Compiler erstellt wurde
und was für die Programmierung des FPGAs benötigt wird.
 Stellen Sie sicher, dass die Einstellungen wie in Abbildung 19 vorgenommen wurden.
 Die eigentliche Programmierung erfolgt durch Betätigung des Buttons Start. Den Fort-
schritt des Programmierens erkennen Sie am rechts oben zu erkennenden Progress-Bar
im Programmer-Tool.

Abbildung 19: Programmer-Tool (hier am Beispiel des DE2-115-Evaluierungsboard)


17

Hinweis zum DE10-Standard-Evaluierungsboard:


 Sie müssen hier zunächst ein Auto Detect durchführen. Auto Detect findet
auf dem Evaluierungsboard mehrere Devices (siehe Abbildung 20). Wählen Sie
dort SCSXF6D6.
 Danach müssen Sie dann gemäß Abbildung 21 das sof-File laden und danach
können Sie den Programmiervorgang starten.

Abbildung 20: Auswahl diver-


ser Devices nach Durchfüh-
rung von Auto Detect beim
DE10-Standard-
Evaluierungsboard

Abbildung 21: Programmer-Tool


(hier am Beispiel des DE10-
Standard-Evaluierungsboard)

1.6.4 Test der Funktionalität auf dem FPGA


Testen Sie abschließend die Funktionalität auf dem FPGA.
18

2 Simulation mittels Skriptdateien in Modelsim

Die unter Abschnitt 1.5 durchgeführte Simulation in Modelsim hat gezeigt, dass es möglich ist
durch interaktive Konfiguration des Simulators es recht schnell möglich ist einfache Simulatio-
nen durchzuführen. Für größere Projekte ist diese Art der Simulation jedoch nicht effektiv. Hier
bietet sich eine weitere Methode an, um die Simulation in Modelsim durchzuführen, nämlich die
Simulation per Skriptdatei (do-File). Es handelt sich hier um eine reine Textdatei mit der Endung
.do. Die Textdatei enthält letztendlich alle Kommandos, die auch durch den Modelsim-
Simulator per Menü ausgelöst werden könnten. Aus der Protokollierung im Transcriptfenster
(siehe Abschnitt 1.5.2) kann man sich die wichtigsten Befehle herausfiltern.
In Abbildung Abbildung 22 ist beispielhaft das Do-File für die Simulation des Exor-Gatters dar-
gestellt.
Wenn Sie die Simulation per Transcriptfile durchführen möchten, müssen Sie nach dem Starten
der Simulation nur das Skriptfile ausführen. Dies tun Sie in Modelsim über das Menü Tools >
Tcl > Execute Macros…Dort müssen Sie Ihr do-File auswählen, dass dann automatisch
ausgeführt wird.
Versuchen Sie die Simulation des Exors mit einer selbstangelegten Skriptdatei durchzuführen.
Achten Sie auch dort auf die korrekte Ausführung auf Grund von Hinweisen im Transcript-
Fenster von Modelsim.
19

#######################
# Do File Exor #
#######################
# -- Restart Simulation
restart -force -nolist -nowave -nobreak -nolog
onerror {resume}

#--log all waves including the not shown ones


log -r /*

#-- Add the waves needed to be displayed


#-- Two ways can be used to add signals
#-- either each signal by its name and path
#-- or use add wave /*
add wave /*

#--------------------FORCE SIGNALS HERE ---------


#-- Syntax: force signalname value1 time1, value2 time2,…
#-- e.g.
#-- force signal_x 0 0ns, 1 10ns, 0 30ns, Z 100ns
#-- use s, us, ms, ns, ps, fs as timescale
#-- To override the signal of a driver use –freeze
#-- default timescale is ps
#--‘-r’ is used for repetition

#-- X1 wird zum Zeitpunkt 0 auf 1 gesetzt, zum Zeitpunkt 50 ps auf 0 zurückgesetzt;
#-- es handelt sich um ein sich wiederholendes Signal
force X1 1 0, 0 {50 ps} -r {100 ps}
force X2 1 0, 0 {100 ps} -r {200 ps}

Abbildung 22: Do-File zur Simulation des Exor-Gatters


20

3 Empfehlungen

Auf Moodle sind noch weitere pdf-Dateien zum Thema Simulation mit Modelsim bereitgestellt
([3] und [4]). Zwar beziehen sich diese auf ältere Versionen von Modelsim. Es ist jedoch durch-
aus lohnenswert die entsprechende Literatur zu lesen.

4 Literatur

Die folgende Literatur ist auch als pdf-Dateien auf Moodle verfügbar:

[1] Firma Terasic: DE2-115 User Manual. 2003 bis 2013


[2] Firma Terasic: DE10-Standard User Manual. 2003 bis 2013
[3] Modelsim-Tutorial der Firma Synthworks (Getting Started Using Mentor Graphic’s Model-
Sim)
[4] Interstaatliche Hochschule für Technik Buchs: Einführung in Modelsim. V0.7

Das könnte Ihnen auch gefallen