[[dtpr_versuch_3]]

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_3 [2014/03/28 15:02]
beckmanf first
dtpr_versuch_3 [2020/09/28 15:32]
beckmanf Modelsim Images / new gitlab
Line 1: Line 1:
-===== Digitaltechnik Praktikum ​Versuch 3 - Simulation mit Modelsim =====+===== Digitaltechnik Praktikum - Tutorial ​Simulation mit Modelsim =====
  
-In diesem ​Versuch ​lernen Sie den Schaltungssimulator Modelsim ​und die Buildumgebung für die Simulationen auf Basis von make im Praktikum ​kennen. Als Beispiel wird die ledsw Schaltung aus [[dtpr_versuch_2|Digitaltechnik Praktikum ​Versuch 2 - Einführung Quartus]] verwendet. ​+In diesem ​Tutorial ​lernen Sie den Schaltungssimulator Modelsim kennen. Als Beispiel wird die ledsw Schaltung aus [[dtpr_versuch_2|Digitaltechnik Praktikum - Einführung Quartus]] verwendet. ​
  
 ==== Simulation mit Modelsim - Manuelles Aufsetzen des Projektes ==== ==== Simulation mit Modelsim - Manuelles Aufsetzen des Projektes ====
Line 16: Line 16:
 In diesem Verzeichnis befinden sich schon zwei Dateien, die allerdings erst später bei der make basierten Umgebung verwendet werden. Für die Simulation der Schaltung werden zwei VHDL benötigt: In diesem Verzeichnis befinden sich schon zwei Dateien, die allerdings erst später bei der make basierten Umgebung verwendet werden. Für die Simulation der Schaltung werden zwei VHDL benötigt:
  
-  * [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​ledsw_rtl.vhd|ledsw_rtl.vhd]] +  * [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​src/​ledsw_rtl.vhd|ledsw_rtl.vhd]] 
-  * [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​t_ledsw.vhd|t_ledsw.vhd]]+  * [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​src/​t_ledsw.vhd|t_ledsw.vhd]]
  
-die sich beide im [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​tree/​master/​src|src Verzeichnis]] des Projektes befinden. Starten Sie jetzt die Modelsim Simulationssoftware im Verzeichnis "​sim/​ledsw"​. ​+die sich beide im [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​tree/​master/​src|src Verzeichnis]] des Projektes befinden. Starten Sie jetzt die Modelsim Simulationssoftware im Verzeichnis "​sim/​ledsw"​. ​
  
 <​code>​ <​code>​
Line 25: Line 25:
 </​code>​ </​code>​
  
-{{ ::​modelsim01.jpg?800 | Modelsim Start}} ​+{{ ::​modelsim01.jpg | Modelsim Start}} ​
 Drücken Sie "​Jumpstart"​ Drücken Sie "​Jumpstart"​
-{{ ::​modelsim02.jpg?800 | Modelsim Create Project}} ​+{{ ::​modelsim02.jpg | Modelsim Create Project}} ​
 und dann "​Create Project"​. ​ und dann "​Create Project"​. ​
-{{ ::​modelsim03.jpg?800 | Modelsim Project Name}} ​+{{ ::​modelsim03.jpg | Modelsim Project Name}} ​
 Geben Sie als Projektnamen "​ledsw"​ ein.  Geben Sie als Projektnamen "​ledsw"​ ein. 
-{{ ::​modelsim04.jpg?800 | Modelsim Add Existing Files}} ​+{{ ::​modelsim04.jpg | Modelsim Add Existing Files}} ​
 Fügen Sie die beiden VHDL Dateien zum Projekt hinzu. ​ Fügen Sie die beiden VHDL Dateien zum Projekt hinzu. ​
-{{ ::​modelsim05.jpg?800 | Modelsim Add File Dialog}} ​+{{ ::​modelsim05.jpg | Modelsim Add File Dialog}} ​
 Geben Sie dazu die Dateien mit den relativen Pfaden an. Also Geben Sie dazu die Dateien mit den relativen Pfaden an. Also
  
Line 39: Line 39:
   * ../​../​src/​t_ledsw.vhd   * ../​../​src/​t_ledsw.vhd
  
-{{ ::​modelsim06.jpg?800 | Modelsim Project View}} ​+{{ ::​modelsim06.jpg | Modelsim Project View}} ​
 Danach erscheinen die beiden VHDL Dateien im Projektfenster. ​ Danach erscheinen die beiden VHDL Dateien im Projektfenster. ​
-{{ ::​modelsim07.jpg?800 | Modelsim Compile All}} +{{ ::​modelsim07.jpg | Modelsim Compile All}} 
 Die VHDL Dateien müssen für die Simulation zunächst übersetzt werden. Starten Sie Übersetzung mit "​Compile -> Compile All"​. ​ Die VHDL Dateien müssen für die Simulation zunächst übersetzt werden. Starten Sie Übersetzung mit "​Compile -> Compile All"​. ​
-{{ ::​modelsim08.jpg?800 | Modelsim Library Switch}} ​+{{ ::​modelsim08.jpg | Modelsim Library Switch}} ​
 Wechseln Sie dann in Ansicht der Library. Dort wird das Ergebnis der Übersetzung der VHDL Quelldateien dargestellt. ​ Wechseln Sie dann in Ansicht der Library. Dort wird das Ergebnis der Übersetzung der VHDL Quelldateien dargestellt. ​
-{{ ::​modelsim09.jpg?800 | Modelsim Library View}} ​+{{ ::​modelsim09.jpg | Modelsim Library View}} ​
  
 Zum Start der Simulation müssen Sie auf t_ledsw / tbench Architecture Doppelklicken. Dann wird der Simulator gestartet und die Daten aus der Library werden geladen. Die Simulation ist noch nicht gestartet. ​ Zum Start der Simulation müssen Sie auf t_ledsw / tbench Architecture Doppelklicken. Dann wird der Simulator gestartet und die Daten aus der Library werden geladen. Die Simulation ist noch nicht gestartet. ​
-{{ ::​modelsim10.jpg?800 | Modelsim Simulation View}}+{{ ::​modelsim10.jpg | Modelsim Simulation View}}
 Links in der Simulatoransicht können Sie die Designhierarchie anschauen. Bei diesem einfachen Design ist der toplevel die Testbench "​t_ledsw",​ in der das Design "​ledsw_i0"​ instantiiert ist. Um nach der Simulation auch den Signalverlauf von Signalen im Design beobachten zu können, müssen Sie die Signale zum Aufzeichnen auswählen. ​ Links in der Simulatoransicht können Sie die Designhierarchie anschauen. Bei diesem einfachen Design ist der toplevel die Testbench "​t_ledsw",​ in der das Design "​ledsw_i0"​ instantiiert ist. Um nach der Simulation auch den Signalverlauf von Signalen im Design beobachten zu können, müssen Sie die Signale zum Aufzeichnen auswählen. ​
-{{ ::​modelsim11.jpg?800 | Modelsim Add Waves}}+{{ ::​modelsim11.jpg | Modelsim Add Waves}}
 Wählen Sie dazu in der Simulatoransicht mit der rechten Maustaste das Kontextmenü bei "​t_ledsw"​ und wählen Sie "Add to -> Wave -> All items in region"​. Damit werden alle Signale in der Testbench "​t_ledsw",​ also die beiden Signale "​switches"​ und "​redleds"​ in das Waveform Fenster übernommen. ​ Wählen Sie dazu in der Simulatoransicht mit der rechten Maustaste das Kontextmenü bei "​t_ledsw"​ und wählen Sie "Add to -> Wave -> All items in region"​. Damit werden alle Signale in der Testbench "​t_ledsw",​ also die beiden Signale "​switches"​ und "​redleds"​ in das Waveform Fenster übernommen. ​
-{{ ::​modelsim12.jpg?800 | Modelsim Waveform View}}+{{ ::​modelsim12.jpg | Modelsim Waveform View}}
 Wenn Sie das Waveform Fenster anklicken sehen Sie die beiden Signale. ​ Wenn Sie das Waveform Fenster anklicken sehen Sie die beiden Signale. ​
-{{ ::​modelsim13.jpg?800 | Modelsim Run -all}}+{{ ::​modelsim13.jpg | Modelsim Run -all}}
 Jetzt starten Sie die Simulation mit "​Simulate -> Run -> Run -all"​. ​ Jetzt starten Sie die Simulation mit "​Simulate -> Run -> Run -all"​. ​
-{{ ::​modelsim14.jpg?800 | Modelsim Waveform Window maximize}}+{{ ::​modelsim14.jpg | Modelsim Waveform Window maximize}}
 Um das Simulationsergebnis im Waveform Fenster anzuschauen,​ können Sie das Fenster durch drücken auf den "​+"​ Knopf größer machen. ​ Um das Simulationsergebnis im Waveform Fenster anzuschauen,​ können Sie das Fenster durch drücken auf den "​+"​ Knopf größer machen. ​
-{{ ::​modelsim15.jpg?800 | Modelsim View Full}}+{{ ::​modelsim15.jpg | Modelsim View Full}}
 Um den gesamten Verlauf der Signale zu sehen drücken Sie auf den Knopf mit der Lupe (siehe Pfeil), oder wählen das Menü "Wave -> Zoom -> Zoom Full". Sie können im Waveformfenster auch einfach die Taste "​F"​ auf der Tastatur drücken. ​ Um den gesamten Verlauf der Signale zu sehen drücken Sie auf den Knopf mit der Lupe (siehe Pfeil), oder wählen das Menü "Wave -> Zoom -> Zoom Full". Sie können im Waveformfenster auch einfach die Taste "​F"​ auf der Tastatur drücken. ​
  
 Jetzt haben Sie das Simulationsergebnis angeschaut. Im folgenden wird erläutert wie Sie vorgehen müssen um den Inhalt von VHDL Dateien zu ändern und die Simulation neu zu starten. Dazu wird hier als Beispiel ein neuer Simulationsvektor "​1010111111"​ ergänzt. Dazu muss die Datei "​t_ledsw.vhd"​ geändert werden. ​ Jetzt haben Sie das Simulationsergebnis angeschaut. Im folgenden wird erläutert wie Sie vorgehen müssen um den Inhalt von VHDL Dateien zu ändern und die Simulation neu zu starten. Dazu wird hier als Beispiel ein neuer Simulationsvektor "​1010111111"​ ergänzt. Dazu muss die Datei "​t_ledsw.vhd"​ geändert werden. ​
-{{ ::​modelsim16.jpg?800 | Modelsim back to Project View}}+{{ ::​modelsim16.jpg | Modelsim back to Project View}}
 Gehen Sie dazu zurück in die Projektansicht und doppelklicken Sie auf "​t_ledsw.vhd"​. ​ Gehen Sie dazu zurück in die Projektansicht und doppelklicken Sie auf "​t_ledsw.vhd"​. ​
-{{ ::​modelsim17.jpg?800 | Modelsim Edit t_ledsw.vhd}} ​+{{ ::​modelsim17.jpg | Modelsim Edit t_ledsw.vhd}} ​
 Jetzt ist das Editorfenster innerhalb von Modelsim geöffnet und Sie können den Inhalt der Datei ändern. ​ Jetzt ist das Editorfenster innerhalb von Modelsim geöffnet und Sie können den Inhalt der Datei ändern. ​
-{{ ::​modelsim18.jpg?800 | Modelsim Compile All again}}+{{ ::​modelsim18.jpg | Modelsim Compile All again}}
 Nach der Änderung müssen Sie das Projekt neu kompilieren mit "​Compile -> Compile all"​. ​ Nach der Änderung müssen Sie das Projekt neu kompilieren mit "​Compile -> Compile all"​. ​
-{{ ::​modelsim19.jpg?800 | Modelsim Reload Simulation}}+{{ ::​modelsim19.jpg | Modelsim Reload Simulation}}
 Danach müssen die Simulationsdaten neu geladen werden. Drücken Sie dazu auf den mit dem Pfeil markierten Knopf "​Restart"​. Alternativ können Sie auch über das Menü "​Simulate -> Restart"​ gehen. ​ Danach müssen die Simulationsdaten neu geladen werden. Drücken Sie dazu auf den mit dem Pfeil markierten Knopf "​Restart"​. Alternativ können Sie auch über das Menü "​Simulate -> Restart"​ gehen. ​
-{{ ::​modelsim20.jpg?800 | Modelsim Reload Simulation Window}}+{{ ::​modelsim20.jpg | Modelsim Reload Simulation Window}}
 Es erscheint ein Dialogfenster zum Simulationsneustart. Drücken Sie auf "​Ok"​. ​ Es erscheint ein Dialogfenster zum Simulationsneustart. Drücken Sie auf "​Ok"​. ​
-{{ ::​modelsim21.jpg?800 | Modelsim Run -all via Button}}+{{ ::​modelsim21.jpg | Modelsim Run -all via Button}}
 Jetzt ist die Simulation neu geladen und zurückgesetzt. Starten Sie die Simulation über den mit dem Pfeil markierten Knopf oder das Menü "​Simulate -> Run -> Run -all"​. ​ Jetzt ist die Simulation neu geladen und zurückgesetzt. Starten Sie die Simulation über den mit dem Pfeil markierten Knopf oder das Menü "​Simulate -> Run -> Run -all"​. ​
-{{ ::​modelsim22.jpg?800 | Modelsim Waveform with new Vector}}+{{ ::​modelsim22.jpg | Modelsim Waveform with new Vector}}
 Wenn sie danach das Waveformfenster anschauen sehen Sie den zusätzlichen Simulationsvektor. Wenn sie danach das Waveformfenster anschauen sehen Sie den zusätzlichen Simulationsvektor.
  
 +==== Simulation mit Modelsim - Aufsetzen des Projektes mit Make ====
  
 +Wie bei der Synthese mit Quartus kann auch die Simulation mit make gestartet werden. ​
 +
 +<​code>​
 +cd
 +cd digitaltechnikpraktikum
 +cd sim
 +cd ledsw
 +</​code>​
 +
 +Wenn Sie im Simulationsverzeichnis einfach "​make"​ eintippen, dann werden die möglichen make targets gezeigt.
 +
 +<​code>​
 +fritz@ubuntu:​~/​projects/​digitaltechnikpraktikum/​sim/​ledsw$ make
 +"​make"​ does intentionally nothing. Type:
 +  "make mproject"​ to create a new modelsim project only
 +  "make compile"​ to compile all VHDL sources in batch mode
 +  "make modelsim"​ to start modelsim with graphical user interface
 +  "make sim" to start modelsim gui with the top testbench of the project
 +  "make clean" to remove all generated files
 +</​code>​
 +
 +Sie können das Projekt mit den zugehörigen Dateien aufsetzen und die graphische Benutzeroberfläche mit 
 +
 +<​code>​
 +make modelsim
 +</​code>​
 +
 +starten. Wenn Sie gleich alle Toplevelsignale in das Waveformfenster übertragen und die Simulation starten wollen, dann können Sie das mit 
 +
 +
 +<​code>​
 +make sim
 +</​code>​
 +
 +Wenn ihr Code allerdings noch Fehler enthält, dann wird die graphische Oberfläche nicht gestartet. Sie können dann besser mit "make modelsim"​ die GUI starten und dann dort mit "​Compile->​Compile All" die VHDL Dateien übersetzen. Mit
 +
 +<​code>​
 +make clean
 +</​code>​
 +
 +werden alle temporär erzeugten Dateien gelöscht.
 +
 +In der Datei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​sim/​ledsw/​makefile|makefile]] wird der Name des Projektes festgelegt. Aus dem Projektnamen wird ein Name für die Testbench nach dem Muster t_<​project>​.vhd abgeleitet. Zusätzlichen werden alle Dateien, die in der Datei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​sim/​ledsw/​makefile.sources|makefile.sources]] aufgelistet sind, zu dem Projekt hinzugefügt. Hier müssen also alle Dateien aufgelistet werden, die zu dem Projekt gehören.
 +
 +In dem Beispiel hier sind ist die Datei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​src/​t_ledsw.vhd|t_ledsw.vhd]] die Testbench und [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​src/​ledsw_rtl.vhd|ledsw_rtl.vhd]] die Datei, die später für das FPGA synthetisiert wird.
  • dtpr_versuch_3.txt
  • Last modified: 2020/09/28 15:32
  • by beckmanf