[[dtpr_versuch_2]]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dtpr_versuch_2 [2014/03/28 07:56]
beckmanf [Synthese mit Altera Quartus - Projekt aufsetzen mit Skript] - Link Scripts to git
dtpr_versuch_2 [2021/03/29 09:57] (current)
gmo
Line 1: Line 1:
-===== !!!!!!!!!!!BAUSTELLE!!!!!!!!!!!!!! ===== 
  
 +===== Digitaltechnik Praktikum - Einführung Quartus =====
  
-===== Digitaltechnik Praktikum Versuch 2 - Einführung ​Quartus ​=====+In diesem Tutorial 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. Sie lernen drei Varianten zum Aufsetzen eines Quartusprojektes kennen ​
  
-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+  * Manuelles Aufsetzen eines Quartusprojektes ​mit Hilfe des Assistenten.  
 +  * Aufsetzen ​und Synthese mit eine tcl Skript 
 +  * Synthese auf Basis von Makefiles
  
 +Dabei wird in den folgenden Versuchen nur die Synthese mit Hilfe von Makefiles verwendet. Allerdings verwenden Sie die grafische Benutzeroberfläche der Software "​Quartus"​ auch um beispielsweise einen Schaltplan anzuzeigen.
 + 
 ==== Vorbereitung ==== ==== Vorbereitung ====
  
-Im [[https://​www.hs-augsburg.de/​~beckmanf/​restricted/​DE1_V.1.0.1_CDROM/​DE1_user_manual/​DE1_UserManual_v1.2.1.pdf|User Manual]] 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 [[https://www2.hs-augsburg.de/​~beckmanf/​restricted/​DE1_V.1.0.1_CDROM/​DE1_schematics/​de1_v11a.pdf|Schaltplan]] 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 [[https://www2.hs-augsburg.de/​~beckmanf/​restricted/​DE1_V.1.0.1_CDROM/CDROM|]], die zu dem Altera DE1 Board gehört, befindet sich eine Tabelle [[https://www2.hs-augsburg.de/​~beckmanf/​restricted/​DE1_V.1.0.1_CDROM/​DE1_lab_exercises/​DE1_pin_assignments.csv|DE1_pin_assignments.csv]],​ in denen diese Zuordnung von Signalnamen wie LEDR0 zu den Pins des FPGA aufgeführt ist. +Im [[https://​www.hs-augsburg.de/​~beckmanf/​restricted/​DE1_V.1.0.1_CDROM/​DE1_user_manual/​DE1_UserManual_v1.2.1.pdf|User Manual]] 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 [[https://www.hs-augsburg.de/​~beckmanf/​restricted/​DE1_V.1.0.1_CDROM/​DE1_schematics/​de1_v11a.pdf|Schaltplan]] 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 [[https://www.hs-augsburg.de/​~beckmanf/​restricted/​DE1_V.1.0.1_CDROM|CDROM]], die zu dem Altera DE1 Board gehört, befindet sich eine Tabelle [[https://www.hs-augsburg.de/​~beckmanf/​restricted/​DE1_V.1.0.1_CDROM/​DE1_lab_exercises/​DE1_pin_assignments.csv|DE1_pin_assignments.csv]],​ in denen diese Zuordnung von Signalnamen wie LEDR0 zu den Pins des FPGA aufgeführt ist. 
  
  
 ==== Starten einer Shell unter Ubuntu ==== ==== Starten einer Shell unter Ubuntu ====
  
-{{ ::ubuntu01.jpg?​800 | Ubuntu Startbildschirm}} +{{ ::dtpr-start-terminal.jpg | Start des Terminal}}
- +
-Starten Sie die Dash Applikation zur Suche von Programmen und geben Sie dort "terminal" ein.  +
- +
-{{ ::​ubuntu02.jpg?​800 | Ubuntu Dash}} +
- +
-Ziehen Sie das Programm "​terminal"​ nach links in die Startleiste. +
- +
-{{ ::ubuntu03.jpg?800 Ubuntu Startleiste mit Terminal}}+
  
-Starten Sie dann das Terminal ​(oder die Shell) durch klicken auf das Terminalsymbol+Starten Sie das Terminal ​über das Menu "​System Tools -> LX Terminal"​
  
-{{ ::ubuntu04.jpg?800 Ubuntu ​mit Terminal}}+{{ ::dtpr-terminal.jpg | Fenster ​mit Terminal}}
  
 Jetzt haben Sie ein geöffnetes Terminalprogramm. Jetzt haben Sie ein geöffnetes Terminalprogramm.
Line 39: Line 35:
 |man| man ls | Aufruf des Handbuchs für den Befehl "​ls"​ | |man| man ls | Aufruf des Handbuchs für den Befehl "​ls"​ |
 |rm| rm hallo.txt| Löschen der Datei "​hallo.txt"​ | |rm| rm hallo.txt| Löschen der Datei "​hallo.txt"​ |
 +|less| less hallo.txt| Anschauen der Datei "​hallo.txt"​. Beenden mit "​q"​|
 +|[[http://​heather.cs.ucdavis.edu/​~matloff/​UnixAndC/​Editors/​ViIntro.html|vi]]| vi hallo.txt| Editor starten für die Datei hallo.txt|
  
 ==== Laden der Designdaten vom git Server ==== ==== Laden der Designdaten vom git Server ====
  
-Die Designdaten für das Digitaltechnikpraktikum sind auf dem [[https://git.etech.fh-augsburg.de|git Server der Fakultät Elektrotechnik]]. Der Zugriff erfolgt über das git Programm. ​+Die Designdaten für das Digitaltechnikpraktikum sind auf dem [[https://gitlab.elektrotechnik.hs-augsburg.de|git Server der Fakultät Elektrotechnik]]. Der Zugriff erfolgt über das git Programm. Auf dem git server befindet sich das [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum|Projekt Digitaltechnikpraktikum]] mit den Dateien für das Praktikum.
  
-{{ ::ubuntu05.jpg?800 Einrichten ​des Projektverzeichnisses}}+{{ ::dtpr-mkdir-projects.jpg | Anlegen ​des Projektverzeichnisses}}
  
-Richten Sie ein Verzeichnis "​projects"​ in Ihrem home directory ein. Das Homedirectory ist "/​home/​caeuser"​. In dieser Anleitung ist das Homeverzeichnis "/​home/​fritz",​ da ich die Anleitung auf meinem Rechner entworfen habe. Wechseln Sie in das Verzeichnis "​projects"​ und laden Sie mit "​git"​ die Designdaten vom git Server.  ​+Richten Sie ein Verzeichnis "​projects"​ in Ihrem home directory ein. Das Homedirectory ist "/​home/​caeuser"​. Wechseln Sie in das Verzeichnis "​projects"​ und laden Sie mit "​git"​ die Designdaten vom git Server.  ​
  
 <​code>​ <​code>​
 mkdir projects mkdir projects
 cd projects cd projects
-git clone https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum.git+git clone https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum.git
 ls -la ls -la
 </​code>​ </​code>​
Line 57: Line 55:
 Das sollte dann so aussehen: ​ Das sollte dann so aussehen: ​
  
-{{ ::ubuntu06.jpg?800 | Projektverzeichnis nach Download}}+{{ ::dtpr-git-clone.jpg | Projektverzeichnis nach Download}}
  
 Wechseln sie dann in das Verzeichnis "​digitaltechnikpraktikum"​ und dann in das Verzeichnis "​src"​. Starten Sie dort einen Editor und schauen sich die Datei "​ledsw_rtl.vhd"​ an.  Wechseln sie dann in das Verzeichnis "​digitaltechnikpraktikum"​ und dann in das Verzeichnis "​src"​. Starten Sie dort einen Editor und schauen sich die Datei "​ledsw_rtl.vhd"​ an. 
Line 65: Line 63:
 cd src cd src
 ls -la ls -la
-gedit ledsw_rtl.vhd+emacs ledsw_rtl.vhd
 </​code>​ </​code>​
  
-{{ ::ubuntu07.jpg?800 gedit mit leds_rtl.vhd}}+{{ ::dtpr-emacs.jpg | emacs mit ledsw_rtl.vhd}}
  
-Die VHDL Datei beschreibt ein Design mit 10 Eingängen "​SW"​ und 10 Ausgängen "​LEDR"​. In der Architektur ​werden ​die Eingänge ​"SW" ​auf die Ausgänge "​LEDR"​ geschaltetDamit sollen die roten LEDs abhängig von den Schaltern "​SW"​ ein- und ausgeschaltet werden+Im Emacs Editor ​werden ​nach dem Start zwei "Buffer" ​angezeigtTippen Sie <​code>​ctrl-x 1</​code>​ um nur den Buffer mit der VHDL Datei anzuzeigen
  
 +{{::​dtpr-emacs-onebuf.jpg| emacs nach dem Umschalten auf einen Buffer mit ctrl-x 1}}
 +
 +Die VHDL Datei beschreibt ein Design mit 10 Eingängen "​SW"​ und 10 Ausgängen "​LEDR"​. In der Architektur werden die Eingänge "​SW"​ auf die Ausgänge "​LEDR"​ geschaltet. Damit sollen die roten LEDs abhängig von den Schaltern "​SW"​ ein- und ausgeschaltet werden.
 ==== Synthese mit Altera Quartus - Manuelles Aufsetzen des Projektes ==== ==== 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 "​pnr"​. Dieser Name steht für "Place And Route" und umfasst die Designdaten für die Synthese einer Schaltung für das FPGA. Wechseln Sie in das Verzeichnis "​ledsw-manual"​. Im ersten Anlauf wird das Projekt manuell mit Hilfe des Assistenten aufgesetzt. Im Projekt gibt es ein Verzeichnis "​pnr"​. Dieser Name steht für "Place And Route" und umfasst die Designdaten für die Synthese einer Schaltung für das FPGA. Wechseln Sie in das Verzeichnis "​ledsw-manual"​.
Line 104: Line 99:
 Es erscheint folgendes Fenster. ​ Es erscheint folgendes Fenster. ​
  
-{{ ::quartus01.jpg?800 | Startbildschirm Quartus}}+{{ ::dtpr-quartus-start.jpg | Startbildschirm Quartus}}
  
 Drücken Sie "​Create a new project"​. ​ Drücken Sie "​Create a new project"​. ​
  
-{{ ::quartus02.jpg?800 | Quartus Projektname}}+{{ ::dtpr-quartus-projectname.jpg | Quartus Projektname}}
  
 Wählen Sie als Projektnamen "​ledsw"​ und als Namen für die Toplevelentity auch "​ledsw"​. Achten Sie darauf, dass das working directory "​digitaltechnikpraktikum/​pnr/​ledsw-manual"​ ist. In diesem Verzeichnis werden die (u.a. temporäre) Projektdateien gespeichert. ​ Wählen Sie als Projektnamen "​ledsw"​ und als Namen für die Toplevelentity auch "​ledsw"​. Achten Sie darauf, dass das working directory "​digitaltechnikpraktikum/​pnr/​ledsw-manual"​ ist. In diesem Verzeichnis werden die (u.a. temporäre) Projektdateien gespeichert. ​
  
-{{ ::quartus03.jpg?800 | Quartus VHDL Datei einfügen}}+{{ ::dtpr-quartus-add-file-1.jpg | Quartus VHDL Datei auswählen}}
  
 Im nächsten Schritt müssen dem Projekt die VHDL Dateien hinzugefügt werden. In diesem Projekt gibt es nur die eine Datei "​ledsw_rtl.vhd"​. Wählen Sie die Datei aus und klicken Sie auf "​ADD"​. ​ Im nächsten Schritt müssen dem Projekt die VHDL Dateien hinzugefügt werden. In diesem Projekt gibt es nur die eine Datei "​ledsw_rtl.vhd"​. Wählen Sie die Datei aus und klicken Sie auf "​ADD"​. ​
  
- +{{ ::dtpr-quartus-add-file-2.jpg | Quartus ​VHDL Datei hinzufügen}}
-{{ ::quartus04.jpg?800 | Quartus ​Projektname}}+
  
 Danach muss der FPGA Typ auswählt werden, der sich auf der Platine befindet. Wählen Sie als Familie "​Cyclone II" und als Baustein "​EP2C20F484C7"​. ​ Danach muss der FPGA Typ auswählt werden, der sich auf der Platine befindet. Wählen Sie als Familie "​Cyclone II" und als Baustein "​EP2C20F484C7"​. ​
  
-{{ ::quartus05.jpg?800 | Quartus Device}}+{{ ::dtpr-quartus-select-fpga.jpg | Quartus ​Select FPGA Device}}
  
 Danach können Sie beim Assistenten immer auf "​Weiter"​ klicken und dann den Assistenten beenden. Das Projekt sollte dann so aussehen: ​ Danach können Sie beim Assistenten immer auf "​Weiter"​ klicken und dann den Assistenten beenden. Das Projekt sollte dann so aussehen: ​
  
-{{ ::quartus06.jpg?800 | Quartus Projekt eingerichtet ohne Pins}}+{{ ::dtpr-quartus-edit-view.jpg | Quartus Projekt eingerichtet ohne Pins}}
  
 Starten Sie jetzt die Übersetzung der VHDL Datei mit "​Processing -> Start Compilation"​. ​ Starten Sie jetzt die Übersetzung der VHDL Datei mit "​Processing -> Start Compilation"​. ​
  
-{{ ::quartus07.jpg?800 | Quartus Start Compilation}}+{{ ::dtpr-quartus-start-compilation.jpg | Quartus Start Compilation}}
  
 Die Synthese sollte durchlaufen. Allerdings treten zwei wichtige Warnmeldungen auf.  Die Synthese sollte durchlaufen. Allerdings treten zwei wichtige Warnmeldungen auf. 
  
-{{ ::quartus08.jpg?800 | Quartus ​Fehlermeldungen ​bei Synthese}}+{{ ::dtpr-quartus-warnings.jpg | Quartus ​Warnungen ​bei Synthese}}
  
 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 "​Output 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. ​ 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 "​Output 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 "Pin Planner"​ anschauen. ​ +Man kann die nicht angeschlossenen Pins auch im "Pin Planner"​ anschauen.
-{{ ::​quartus09.jpg?​800 | Quartus Pin Planner starten}}+
  
-Dort sieht man, dass für die Anschlüsse "​LEDR"​ und "​SW"​ noch keine Pinfestlegung erfolgt ist. Das "​Location"​ Feld ist noch leer.  +{{ ::​dtpr-quartus-start-pinplanner.jpg | Quartus Pin Planner starten}} 
-{{ ::quartus10.jpg?800 | Quartus Pin Planner ohne Zuordnung der Pins}}+ 
 +Dort sieht man, dass für die Anschlüsse "​LEDR"​ und "​SW"​ noch keine Pinfestlegung erfolgt ist. Das "​Location"​ Feld ist noch leer. 
 +  
 +{{ ::dtpr-quartus-pinplanner-nolocation.jpg | Quartus Pin Planner ohne Zuordnung der Pins}}
  
 Um die Pins festzulegen wird jetzt mit "​Assignments -> Import Assignments"​ die Datei "​ledsw_pin_assignments.csv"​ eingelesen. ​ Um die Pins festzulegen wird jetzt mit "​Assignments -> Import Assignments"​ die Datei "​ledsw_pin_assignments.csv"​ eingelesen. ​
  
-{{ ::quartus11.jpg?800 | Quartus Import Assignments}} +{{ ::dtpr-quartus-import-assignments.jpg | Quartus Import Assignments}} 
-{{ ::quartus12.jpg?800 | Quartus Pin Assignment Datei}}+{{ ::dtpr-quartus-select-assignmens.jpg | Quartus Pin Assignment Datei}} 
 + 
 +Wenn man dann den "Pin Planner"​ nochmal öffnet, sieht man die Zuordnung der Ein- und Ausgänge zu den Pins auf dem FPGA.
  
-Wenn man dann den "Pin Planner"​ nochmal öffnet, sieht man die Zuordnung der Ein- und Ausgänge zu den Pins auf dem FPGA.  +{{ ::dtpr-quartus-pinplanner-withpins.jpg | Quartus Pin Planner o.k.}}
-{{ ::quartus13.jpg?800 | Quartus Pin Planner o.k.}}+
  
 Jetzt muss noch festgelegt werden, dass unbenutzte Pins als Eingänge geschaltet werden. Wählen Sie dazu "​Assignments -> Device"​. ​ Jetzt muss noch festgelegt werden, dass unbenutzte Pins als Eingänge geschaltet werden. Wählen Sie dazu "​Assignments -> Device"​. ​
  
-{{ ::quartus14.jpg?800 | Quartus Device Options}}+{{ ::dtpr-quartus-device-options-1.jpg | Quartus Device Options}}
  
 und dann "​Device and Pin Options"​ und dann "​Device and Pin Options"​
  
-{{ ::quartus15.jpg?800 | Quartus Device and Pin Options}}+{{ ::dtpr-quartus-device-options-2.jpg | Quartus Device and Pin Options}}
  
 Wählen Sie dann bei "​Unused Pins" die Option "As input tri-stated"​. ​ Wählen Sie dann bei "​Unused Pins" die Option "As input tri-stated"​. ​
-{{ ::quartus16.jpg?800 | Quartus Unused pin options}}+ 
 +{{ ::dtpr-quartus-unused-pins.jpg | Quartus Unused pin options}}
  
 ** Sie müssen dann die Synthese nochmal neu starten mit "​Processing -> Start Compilation"​.** Nach erfolgreicher Synthese können Sie den "​Programmer"​ starten mit "Tools -> Programmer"​. ** Sie müssen dann die Synthese nochmal neu starten mit "​Processing -> Start Compilation"​.** Nach erfolgreicher Synthese können Sie den "​Programmer"​ starten mit "Tools -> Programmer"​.
  
-{{ ::quartus17.jpg?800 | Quartus Programmer starten}}+{{ ::dtpr-quartus-programmer-start.jpg | Quartus Programmer starten}}
  
-Wenn Sie kein Board angeschlossen ​habendann sieht das Fenster so aus: +Im Programmer muss man dann die Programmierschnittstelle zur Programmierung des FPGA auswählen. Das funktioniert nur, wenn auch tatsächlich ein FPGA Board über USB am Rechner ​angeschlossen ​ist. Falls Sie mit einer virtuellen Maschine arbeitenmuss der USB Port der virtuellen Maschine zugeordnet werden. ​
  
-{{ ::quartus18.jpg?800 | Quartus Programmer ​ohne Platine}}+{{ ::dtpr-quartus-hardware-setup.jpg | Quartus Programmer}}
  
-==== Synthese mit Altera Quartus ​Projekt aufsetzen mit Skript ====+Wenn das FPGA Board angeschlossen und die virtuelle Maschine richtig konfiguriert ist, dann kann man **USB-Blaster [2-2.2]** auswählen.
  
-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+{{::​dtpr-quartus-hardware-select.jpg| Quartus USB Blaster}}
  
-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. ​+Nach dem Kompilieren steht die FPGA Konfigurationsdatei "​ledsw.sof"​ zur Verfügung. Diese Datei muss man mit "Add File" auswählen. Danach kann man den Download der Konfigurationsdatei mit "​Start"​ beginnen. 
 + 
 +{{::​dtpr-quartus-programmer-file.jpg| Quartus Programmer mit USB Blaster}} 
 + 
 +Wenn der Download erfolgreich war, dann sieht man das am grünen "​Progress"​ Balken. 
 + 
 +{{::​dtpr-quartus-programmer-success.jpg| Quartus Programmer nach erfolgreichem Download}} 
 + 
 +Danach kann man auf dem FPGA die roten LED's über die Schalter darunter ein- und ausschalten. 
 + 
 +==== 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. ​
  
 <​code>​ <​code>​
 cd cd
 +cd projects
 cd digitaltechnikpraktikum cd digitaltechnikpraktikum
 cd pnr cd pnr
Line 187: Line 198:
 === Erzeugen und Konfigurieren des Projektes === === Erzeugen und Konfigurieren des Projektes ===
  
-Das Skript [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​pnr/​ledsw-scripted/​create_quartus_project_settings.tcl|create_quartus_project_settings.tcl]] sorgt für die folgenden Schritte beim Aufsetzen des Quartusprojektes. ​+Das Skript [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/-/​blob/​master/​pnr/​ledsw-scripted/​create_quartus_project_settings.tcl|create_quartus_project_settings.tcl]] sorgt für die folgenden Schritte beim Aufsetzen des Quartusprojektes. ​
  
  
   * Konfigurieren des Projektnamens   * Konfigurieren des Projektnamens
 +  * Festlegen des FPGA Typen
   * Hinzufügen der VHDL Dateien   * Hinzufügen der VHDL Dateien
   * Konfigurieren der Pins   * Konfigurieren der Pins
Line 208: Line 220:
 === Starten der Synthese === === Starten der Synthese ===
  
-Das Skript [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​pnr/​ledsw-scripted/​quartus_project_flow.tcl|quartus_project_flow.tcl]] sorgt für die Schritte+Das Skript [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/-/​blob/​master/​pnr/​ledsw-scripted/​quartus_project_flow.tcl|quartus_project_flow.tcl]] sorgt für die Schritte
  
   * Analyse und Elaborieren des VHDL Codes   * Analyse und Elaborieren des VHDL Codes
Line 230: Line 242:
 </​code>​ </​code>​
  
-Jetzt können mit den Schaltern "​SW"​ die roten Leuchtdioden auf dem Board an- und ausgeschaltet werden. ​+Jetzt können mit den Schaltern "​SW"​ die roten Leuchtdioden auf dem Board an- und ausgeschaltet werden. ​Die Variante mit dem Skript kommt ohne GUI aus. Allerdings ist es nicht notwendig jedesmal wenn sich beispielsweise der Code in der VHDL Datei geändert hat auch das Projekt komplett neu aufzusetzen. Das gezielte Ausführen der jeweils notwendigen Skripten wird mit dem im folgenden beschriebenen Make basierten Verfahren gewährleistet. 
 + 
 ==== Synthese mit Altera Quartus - Make basiert ==== ==== Synthese mit Altera Quartus - Make basiert ====
 +
 +Nach der skriptbasierten Synthese der Schaltung wird jetzt die endgültige Variante basierend auf dem Tool "​make"​ 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 "​makefile"​ 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 "​digitaltechnikpraktikum/​pnr/​ledsw-make"​. ​
 +
 +<​code>​
 +cd
 +cd projects
 +cd digitaltechnikpraktikum
 +cd pnr
 +cd ledsw-make
 +</​code>​
 +
 +In diesem Verzeichnis [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​tree/​master/​pnr/​ledsw-make|ledsw-make]] befinden sich zwei Dateien. Die Datei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​pnr/​ledsw-make/​makefile|makefile]] ​ enthält die Informationen für das Tool "​make"​. Die Liste der VHDL Dateien für die Synthese wird aus der Datei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​sim/​ledsw/​makefile.sources|../​../​sim/​ledsw/​makefile.sources]] aus dem Simulationsverzeichnis geladen. Danach wird das allgemeine makefile für alle Syntheseprojekte [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​pnr/​makefile|pnr/​makefile]] mit "​include ../​makefile"​ geladen. ​
 +
 +In diesem [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​pnr/​makefile|pnr/​makefile]] sind verschiedene "​Targets"​ angegeben. Targets können Dateien oder Namen sein. Ein Target ist beispielsweise die Datei "​flowsummary.log"​. In Zeile 40 steht, dass das Target "​flowsummary.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 "​ledsw.qpf"​ von den VHDL Dateien, von dem Skript [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​scripts/​create_quartus_project_settings.tcl|create_quartus_project_settings.tcl]] und der Pinkonfigurationsdatei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​pnr/​ledsw-make/​ledsw_pins.tcl|ledsw_pins.tcl]] abhängt. In den folgenden Zeilen 29 bis 35 steht, wie die Projektdatei ledsw.qpf erzeugt wird. Daneben gibt es noch "PHONY 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 "​help"​ und zeigt die möglichen Targets an. 
 +
 +<​code>​
 +make
 +</​code>​
 +
 +Um das Quartusprojekt zu erzeugen, muss man make mit dem Target "​qproject"​ aufrufen. ​
 +
 +<​code>​
 +make qproject
 +</​code>​
 +
 +Man sieht wie jetzt quartus mit dem Skript zum Erzeugen eines Projektes gestartet wird. Der Sinn von make wird deutlich, wenn man danach "make qproject"​ ein zweites Mal aufruft. ​
 +
 +<​code>​
 +caeuser@vcae:​~/​projects/​digitaltechnikpraktikum/​pnr/​ledsw-make$ make qproject
 +make: Nothing to be done for `qproject'​.
 +</​code>​
 +
 +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 "​ledsw_pins.tcl"​ ändern und nochmal "make qproject"​ starten, dann wird Quartus wieder gestartet um das Projekt neu zu bauen. Sie können das ausprobieren wenn Sie mit dem Programm "​touch"​ die Datei "​leds_pins.tcl"​ mit einem neuen Änderungszeitstempel versehen, so als ob Sie die Datei geändert hätten. ​
 +
 +<​code>​
 +touch ledsw_pins.tcl
 +make qproject
 +</​code>​
 +
 +Mit "make clean" können alle erzeugten Dateien gelöscht werden. Mit "make 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
 +
 +<​code>​
 +make quartus
 +</​code>​
 +
 +wird das Projekt erzeugt und Quartus mit der graphischen Benutzeroberfläche gestartet. ​
 +
 +
 +
 + 
 +
 +
  
  
  
  
 + 
  
  
  • dtpr_versuch_2.1395989807.txt.gz
  • Last modified: 2014/03/28 07:56
  • by beckmanf