[[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 [2020/09/28 13:34]
beckmanf quartus images compile
dtpr_versuch_2 [2021/03/29 09:57] (current)
gmo
Line 1: Line 1:
  
-===== Digitaltechnik Praktikum ​Versuch 2 - Einführung Quartus =====+===== Digitaltechnik Praktikum - 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. ​+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 ​
  
 +  * 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 ====
  
Line 13: Line 19:
 {{ ::​dtpr-start-terminal.jpg | Start des Terminal}} {{ ::​dtpr-start-terminal.jpg | Start des Terminal}}
  
-Starten Sie das Terminal ​durch klicken auf das Terminalsymbol+Starten Sie das Terminal ​über das Menu "​System Tools -> LX Terminal"​
  
 {{ ::​dtpr-terminal.jpg | Fenster mit Terminal}} {{ ::​dtpr-terminal.jpg | Fenster mit Terminal}}
Line 34: Line 40:
 ==== 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. Auf dem git server befindet sich das [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum|Projekt Digitaltechnikpraktikum]] mit den Dateien für das Praktikum.+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.
  
 {{ ::​dtpr-mkdir-projects.jpg | Anlegen des Projektverzeichnisses}} {{ ::​dtpr-mkdir-projects.jpg | Anlegen des Projektverzeichnisses}}
Line 43: Line 49:
 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 68: Line 74:
 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. 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 162: Line 162:
 ** 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 185: 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. ​
  
  
Line 207: 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 229: 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 ====
  
Line 246: Line 260:
 </​code>​ </​code>​
  
-In diesem Verzeichnis [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​tree/​master/​pnr/​ledsw-make|ledsw-make]] befinden sich zwei Dateien. Die Datei [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​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://git.etech.fh-augsburg.de/​friedrich.beckmann/​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://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​pnr/​makefile|pnr/​makefile]] mit "​include ../​makefile"​ geladen. ​+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://git.etech.fh-augsburg.de/​friedrich.beckmann/​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://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​scripts/​create_quartus_project_settings.tcl|create_quartus_project_settings.tcl]] und der Pinkonfigurationsdatei [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​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. +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.  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. 
Line 265: Line 279:
  
 <​code>​ <​code>​
-fritz@ubuntu:​~/​projects/​digitaltechnikpraktikum/​pnr/​ledsw-make$ make qproject+caeuser@vcae:​~/​projects/​digitaltechnikpraktikum/​pnr/​ledsw-make$ make qproject
 make: Nothing to be done for `qproject'​. make: Nothing to be done for `qproject'​.
 </​code>​ </​code>​
Line 284: Line 298:
 wird das Projekt erzeugt und Quartus mit der graphischen Benutzeroberfläche gestartet. ​ wird das Projekt erzeugt und Quartus mit der graphischen Benutzeroberfläche gestartet. ​
  
-==== Fragen ==== 
  
-Folgende Fragen sollte man beantworten können. 
  
    
  • dtpr_versuch_2.1601292843.txt.gz
  • Last modified: 2020/09/28 13:34
  • by beckmanf