This is an old revision of the document!
Digitaltechnik Praktikum Versuch 2 - Einf眉hrung Quartus
In diesem Versuch lernen Sie die FPGA Synthesesoftware Quartus von Altera kennen. Das Ziel ist es das FPGA so zu konfigurieren, dass mit Hilfe der Schalter SW die roten Leuchtdioden LEDR ein- und ausgeschaltet werden k枚nnen.
Vorbereitung
Im f眉r das Altera DE1 Board finden Sie auf den Seiten 24 bis 27 eine Beschreibung der LEDs, der Schalter SW und der Taster KEYS. Im des DE1 Boards k枚nnen Sie nachschauen an welchen Pins die LEDs und die Schalter angeschlossen sind. Diese Anschl眉sse sind auch im Handbuch in Tabellen 4.1 bis 4.3 angegeben. Beispielsweise ist LEDR0 an Pin R20 des FPGA angeschlossen. Auf der , die zu dem Altera DE1 Board geh枚rt, befindet sich eine Tabelle , in denen diese Zuordnung von Signalnamen wie LEDR0 zu den Pins des FPGA aufgef眉hrt ist.
Starten einer Shell unter Ubuntu
Starten Sie das Terminal durch klicken auf das Terminalsymbol.
Jetzt haben Sie ein ge枚ffnetes Terminalprogramm.
脺berblick 眉ber einige Unix Shellbefehle
Befehl | Beispiel | Beschreibung |
---|---|---|
ls | ls -la | Anzeige der Dateien im aktuellen Verzeichnis |
pwd | pwd | Anzeige des Pfads vom aktuellen Verzeichnis |
mkdir | mkdir projects | Erzeugen eines neuen Verzeichnisses 鈥減rojects鈥� |
cd | cd projects | Wechsel in das Verzeichnis 鈥減rojects鈥� |
cd | cd .. | Wechsel in das h枚here Verzeichnis ausgehend vom aktuellen Verzeichnis |
man | man ls | Aufruf des Handbuchs f眉r den Befehl 鈥渓s鈥� |
rm | rm hallo.txt | L枚schen der Datei 鈥渉allo.txt鈥� |
less | less hallo.txt | Anschauen der Datei 鈥渉allo.txt鈥�. Beenden mit 鈥渜鈥� |
vi hallo.txt | Editor starten f眉r die Datei hallo.txt |
Laden der Designdaten vom git Server
Die Designdaten f眉r das Digitaltechnikpraktikum sind auf dem . Der Zugriff erfolgt 眉ber das git Programm. Auf dem git server befindet sich das mit den Dateien f眉r das Praktikum.
Richten Sie ein Verzeichnis 鈥減rojects鈥� in Ihrem home directory ein. Das Homedirectory ist 鈥�/home/caeuser鈥�. Wechseln Sie in das Verzeichnis 鈥減rojects鈥� und laden Sie mit 鈥済it鈥� die Designdaten vom git Server.
mkdir projects cd projects git clone https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum.git ls -la
Das sollte dann so aussehen:
Wechseln sie dann in das Verzeichnis 鈥渄igitaltechnikpraktikum鈥� und dann in das Verzeichnis 鈥渟rc鈥�. Starten Sie dort einen Editor und schauen sich die Datei 鈥渓edsw_rtl.vhd鈥� an.
cd digitaltechnikpraktikum cd src ls -la emacs ledsw_rtl.vhd
Im Emacs Editor werden nach dem Start zwei 鈥淏uffer鈥� angezeigt. Tippen Sie
CTRL-x 1
um nur den Buffer mit der VHDL Datei anzuzeigen. Die VHDL Datei beschreibt ein Design mit 10 Eing盲ngen 鈥淪W鈥� und 10 Ausg盲ngen 鈥淟EDR鈥�. In der Architektur werden die Eing盲nge 鈥淪W鈥� auf die Ausg盲nge 鈥淟EDR鈥� geschaltet. Damit sollen die roten LEDs abh盲ngig von den Schaltern 鈥淪W鈥� ein- und ausgeschaltet werden.
Synthese mit Altera Quartus - Manuelles Aufsetzen des Projektes
In diesem Versuch lernen Sie drei Varianten zum Aufsetzen eines Quartusprojektes kennen
- Manuelles Aufsetzen eines Quartusprojektes mit Hilfe des Assistenten.
- Aufsetzen und Synthese mit eine tcl Skript.
- Synthese auf Basis von Makefiles
Im ersten Anlauf wird das Projekt manuell mit Hilfe des Assistenten aufgesetzt. Im Projekt gibt es ein Verzeichnis 鈥減nr鈥�. Dieser Name steht f眉r 鈥淧lace And Route鈥� und umfasst die Designdaten f眉r die Synthese einer Schaltung f眉r das FPGA. Wechseln Sie in das Verzeichnis 鈥渓edsw-manual鈥�.
cd cd projects cd digitaltechnikpraktikum cd pnr cd ledsw-manual
In diesem Verzeichnis befindet sich eine Datei 鈥渓edsw_pin_assignments.csv鈥�. Diese Datei enth盲lt die Pinkonfiguration f眉r die Schalter 鈥淪W鈥� und die Leuchtdioden 鈥淟EDR鈥� Sie k枚nnen sich die Datei mit
less ledsw_pin_assignments.csv
anschauen. Zum Verlassen von 鈥渓ess鈥� dr眉cken Sie 鈥渜鈥�. Starten Sie jetzt die Altera Quartus Software mit 鈥渜uartus鈥�
quartus
Es erscheint folgendes Fenster.
Dr眉cken Sie 鈥淐reate a new project鈥�.
W盲hlen Sie als Projektnamen 鈥渓edsw鈥� und als Namen f眉r die Toplevelentity auch 鈥渓edsw鈥�. Achten Sie darauf, dass das working directory 鈥渄igitaltechnikpraktikum/pnr/ledsw-manual鈥� ist. In diesem Verzeichnis werden die (u.a. tempor盲re) Projektdateien gespeichert.
Im n盲chsten Schritt m眉ssen dem Projekt die VHDL Dateien hinzugef眉gt werden. In diesem Projekt gibt es nur die eine Datei 鈥渓edsw_rtl.vhd鈥�. W盲hlen Sie die Datei aus und klicken Sie auf 鈥淎DD鈥�.
Danach muss der FPGA Typ ausw盲hlt werden, der sich auf der Platine befindet. W盲hlen Sie als Familie 鈥淐yclone II鈥� und als Baustein 鈥淓P2C20F484C7鈥�.
Danach k枚nnen Sie beim Assistenten immer auf 鈥淲eiter鈥� klicken und dann den Assistenten beenden. Das Projekt sollte dann so aussehen:
Starten Sie jetzt die 脺bersetzung der VHDL Datei mit 鈥淧rocessing 鈫� Start Compilation鈥�.
Die Synthese sollte durchlaufen. Allerdings treten zwei wichtige Warnmeldungen auf.
Die eine Meldung sagt aus, dass f眉r Ein- und Ausg盲nge keine Pins auf dem FPGA festgelegt sind. Die andere Meldung besagt, dass alle ungenutzten Pins vom FPGA als 鈥淥utput driving Ground鈥� geschaltet sind. Das ist nicht gut, wenn an diesem Pin z.B. ein Schalter angeschlossen ist, der auf VDD geschaltet ist. Dann gibt es einen Kurzschluss.
Man kann die nicht angeschlossenen Pins auch im 鈥淧in Planner鈥� anschauen.
Dort sieht man, dass f眉r die Anschl眉sse 鈥淟EDR鈥� und 鈥淪W鈥� noch keine Pinfestlegung erfolgt ist. Das 鈥淟ocation鈥� Feld ist noch leer.
Um die Pins festzulegen wird jetzt mit 鈥淎ssignments 鈫� Import Assignments鈥� die Datei 鈥渓edsw_pin_assignments.csv鈥� eingelesen.
Wenn man dann den 鈥淧in Planner鈥� nochmal 枚ffnet, sieht man die Zuordnung der Ein- und Ausg盲nge zu den Pins auf dem FPGA.
Jetzt muss noch festgelegt werden, dass unbenutzte Pins als Eing盲nge geschaltet werden. W盲hlen Sie dazu 鈥淎ssignments 鈫� Device鈥�.
und dann 鈥淒evice and Pin Options鈥�
W盲hlen Sie dann bei 鈥淯nused Pins鈥� die Option 鈥淎s input tri-stated鈥�.
Sie m眉ssen dann die Synthese nochmal neu starten mit 鈥淧rocessing 鈫� Start Compilation鈥�. Nach erfolgreicher Synthese k枚nnen Sie den 鈥淧rogrammer鈥� starten mit 鈥淭ools 鈫� Programmer鈥�.
Wenn Sie kein Board angeschlossen haben, dann sieht das Fenster so aus:
Synthese mit Altera Quartus - Projekt aufsetzen mit Skript
Alternativ zum Aufsetzen mit der interaktiven GUI kann man das Projekt auch mit einem Skript konfigurieren. Der Vorteil dieses Verfahrens ist, dass immer klar ist wie das Projekt konfiguriert wurde. Man kann zu jedem Zeitpunkt auf Basis der VHDL Dateien und der Skripte das Projekt neu aufsetzen. Jede einigerma脽en professionelle Entwicklung nutzt deshalb Skripte als Basis.
Eine h盲ufig verwendete Skriptsprache f眉r CAE Software ist tcl. Auch Altera verwendet tcl um die Verwendung der GUI zu vermeiden. Wechseln Sie in das Verzeichnis ledsw-scripted.
cd cd digitaltechnikpraktikum cd pnr cd ledsw-scripted
In diesem Verzeichnis befinden sich zwei tcl Skripten.
Erzeugen und Konfigurieren des Projektes
Das Skript sorgt f眉r die folgenden Schritte beim Aufsetzen des Quartusprojektes.
- Konfigurieren des Projektnamens
- Festlegen des FPGA Typen
- Hinzuf眉gen der VHDL Dateien
- Konfigurieren der Pins
Das Skript wird ausgef眉hrt mit:
quartus_sh -t create_quartus_project_settings.tcl
Nachdem das Skript gelaufen ist, befindet sich in dem Verzeichnis die Quartus Projektdatei 鈥渓edsw.qpf鈥�. Sie k枚nnen das Projekt mit der Quartus GUI anschauen mit:
quartus ledsw.qpf
Starten der Synthese
Das Skript sorgt f眉r die Schritte
- Analyse und Elaborieren des VHDL Codes
- Starten der Synthese und Fitting auf das FPGA
- Erzeugen des Synthesereports 鈥渇lowsummary.log鈥�
Starten Sie das Skript mit
quartus_sh -t quartus_project_flow.tcl
Nach diesem Schritt befindet sich im Verzeichnis die Datei 鈥渇lowsummary.log鈥� mit dem Synthesebericht und die Datei 鈥渓edsw.sof鈥�. Die sof Datei ist die Konfigurationsdatei f眉r das FPGA, die jetzt mit dem Programmer auf das Board geladen werden kann.
Download der FPGA Konfigurationsdatei mit dem Programmer
Danach k枚nnen Sie das Board programmieren mit
quartus_pgm -c USB-Blaster --mode jtag --operation="p;ledsw.sof"
Jetzt k枚nnen mit den Schaltern 鈥淪W鈥� die roten Leuchtdioden auf dem Board an- und ausgeschaltet werden.
Synthese mit Altera Quartus - Make basiert
Nach der skriptbasierten Synthese der Schaltung wird jetzt die endg眉ltige Variante basierend auf dem Tool 鈥渕ake鈥� eingef眉hrt. Alle folgenden Projekte werden mit make aufgesetzt. Das Verfahren mit make ist 盲hnlich dem Verfahren mit den Skripten - auch bei Make werden solche Skripte aufgerufen. Bei dem Skriptverfahren gibt es zwei Skripte. Ein Skript erstellt das Projekt und ein Skript startet die Synthese. F眉r das Tool make gibt man in einer Datei 鈥渕akefile鈥� an welche Dateien von einem Skript erzeugt werden und welche Dateien f眉r den Schritt gebraucht werden (die Abh盲ngigkeiten). Make 眉berwacht dann diese Abh盲ngigkeiten und wenn sich irgendeine Datei 盲ndert (z.B. eine VHDL Datei), dann ruft make alle notwendigen Schritte auf um das Projekt zu aktualisieren.
Die makefiles im Digitaltechnikpraktikum sind aufgeteilt. Es gibt jeweils ein makefile pro Projekt und ein makefile f眉r alle Projekte, da die meisten Schritte in jedem Projekt gleich sind und sich nur die VHDL Dateien und die Pins vom FPGA 盲ndern.
Wechseln Sie in das Verzeichnis 鈥渄igitaltechnikpraktikum/pnr/ledsw-make鈥�.
cd cd projects cd digitaltechnikpraktikum cd pnr cd ledsw-make
In diesem Verzeichnis befinden sich zwei Dateien. Die Datei enth盲lt die Informationen f眉r das Tool 鈥渕ake鈥�. Die Liste der VHDL Dateien f眉r die Synthese wird aus der Datei aus dem Simulationsverzeichnis geladen. Danach wird das allgemeine makefile f眉r alle Syntheseprojekte mit 鈥渋nclude ../makefile鈥� geladen.
In diesem sind verschiedene 鈥淭argets鈥� angegeben. Targets k枚nnen Dateien oder Namen sein. Ein Target ist beispielsweise die Datei 鈥渇lowsummary.log鈥�. In Zeile 40 steht, dass das Target 鈥渇lowsummary.log鈥� abh盲ngt von der Quartusprojektdatei ledsw.qpf und dem Skript ../../scripts/quartus_project_flow.tcl. Die Datei ledsw.qpf ist wieder ein eigenes Target. In Zeile 28 steht das 鈥渓edsw.qpf鈥� von den VHDL Dateien, von dem Skript und der Pinkonfigurationsdatei abh盲ngt. In den folgenden Zeilen 29 bis 35 steht, wie die Projektdatei ledsw.qpf erzeugt wird. Daneben gibt es noch 鈥淧HONY Targets鈥� wie z.B. qproject. Dieses Target h盲ngt von ledsw.qpf ab.
Um ein Target zu erzeugen muss man make aufrufen. Wenn man kein Target angibt, wird das erste Target genommen, dass gefunden wird. Das ist hier 鈥渉elp鈥� und zeigt die m枚glichen Targets an.
make
Um das Quartusprojekt zu erzeugen, muss man make mit dem Target 鈥渜project鈥� aufrufen.
make qproject
Man sieht wie jetzt quartus mit dem Skript zum Erzeugen eines Projektes gestartet wird. Der Sinn von make wird deutlich, wenn man danach 鈥渕ake qproject鈥� ein zweites Mal aufruft.
fritz@ubuntu:~/projects/digitaltechnikpraktikum/pnr/ledsw-make$ make qproject make: Nothing to be done for `qproject'.
Das Programm make hat erkannt, dass das Projekt schon erzeugt ist und neuer ist als alle abh盲ngigen Dateien. Deshalb muss quartus nicht noch einmal gestartet werden, denn das Projekt ist aktuell. Wenn Sie jetzt beispielsweise die Datei 鈥渓edsw_pins.tcl鈥� 盲ndern und nochmal 鈥渕ake qproject鈥� starten, dann wird Quartus wieder gestartet um das Projekt neu zu bauen. Sie k枚nnen das ausprobieren wenn Sie mit dem Programm 鈥渢ouch鈥� die Datei 鈥渓eds_pins.tcl鈥� mit einem neuen 脛nderungszeitstempel versehen, so als ob Sie die Datei ge盲ndert h盲tten.
touch ledsw_pins.tcl make qproject
Mit 鈥渕ake clean鈥� k枚nnen alle erzeugten Dateien gel枚scht werden. Mit 鈥渕ake prog鈥� wird die Belegungsdatei ledsw.sof auf das FPGA geladen. make sorgt daf眉r, dass alle notwendigen Schritte (Projekt konfigurieren / Synthese starten) vorher ausgef眉hrt werden. Mit
make quartus
wird das Projekt erzeugt und Quartus mit der graphischen Benutzeroberfl盲che gestartet.
Fragen
Folgende Fragen sollte man beantworten k枚nnen.