[[dtpr_versuch_4]]

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
Next revision Both sides next revision
dtpr_versuch_4 [2014/04/07 21:57]
beckmanf [Digitaltechnik Praktikum Versuch 4 - Kombinatorische Schaltung] - Hierarchie eingefügt
dtpr_versuch_4 [2020/09/28 15:52]
beckmanf checkout changed
Line 1: Line 1:
-===== Digitaltechnik Praktikum Versuch ​- Kombinatorische Schaltung / Hierarchische Schaltung =====+===== Digitaltechnik Praktikum Versuch ​- Kombinatorische Schaltung / Hierarchische Schaltung =====
  
-Das Ziel dieses Versuchs ist die Beschreibung von kombinatorischen Schaltungen mit Hilfe von +Das Ziel dieses Versuchs ist die Beschreibung von kombinatorischen Schaltungen mit Hilfe von
  
   * Booleschen Ausdrücken   * Booleschen Ausdrücken
   * with select Beschreibung   * with select Beschreibung
  
-sowie die hierarchische Beschreibung von Schaltungen. ​+sowie die hierarchische Beschreibung von Schaltungen ​in VHDL. Als praktisches Beispiel werden Sie eine Schaltung entwerfen, die jeweils vier SW Schalter binär interpretiert als Ziffer an einer Siebensegmentanzeige anzeigt. Die Eingänge der Schaltung werden mit den Schaltern verbunden und die Ausgänge werden mit der Siebensegmentanzeige und den roten LED's verbunden. Wenn beispielsweise die Schalter SW3..SW0 auf "​0101"​ stehen, dann soll die Ziffer "​5"​ an der Siebensegmentanzeige angezeigt werden.
  
-Als praktisches Beispiel soll eine Schaltung entworfen werden, die aus vier Eingangssignalen die Steuersignale für eine Siebensegmentanzeige erzeugt. Die Eingänge der Schaltung werden mit den Schaltern verbunden und die Ausgänge werden mit der Siebensegmentanzeige verbunden. ​ 
 ==== Projekt aktualisieren ==== ==== Projekt aktualisieren ====
  
-Um ihre lokalen Projektdateien mit eventuellen neuen Dateien auf dem git Server zu aktualisieren können sie im Verzeichnis "​digitaltechnikpraktikum" ​+Um ihre lokalen Projektdateien mit eventuellen neuen Dateien auf dem git Server zu aktualisieren können sie im Verzeichnis "​digitaltechnikpraktikum"​
  
 <​code>​ <​code>​
-git pull +git pull
 </​code>​ </​code>​
  
-eingeben. Dann werden neue oder geänderte Daten vom git server geladen. ​+eingeben. Dann werden neue oder geänderte Daten vom git server geladen. Wenn auf dem Server Änderungen an Dateien vorgenommen wurden für die Sie auch Änderungen vorgenommen haben, z.B. für die Datei t_ledcomb.vhd,​ dann wird die pull Aktion abgebrochen. In diesem Fall müssen die Dateien zusammengeführt werden, allerdings können Sie auch ihre Änderungen verwerfen. Sie können ihre Änderungen verwerfen und den letzten Stand wiederherstellen mit 
 + 
 +<​code>​ 
 +cd 
 +cd digitaltechnikpraktikum/​src 
 +git checkout . 
 +cd .. 
 +</​code>​ 
 + 
 +Danach sollte die pull Aktion funktionieren.
  
 ==== Beispiel ledcomb_rtl.vhd ==== ==== Beispiel ledcomb_rtl.vhd ====
  
-Im Projektverzeichnis finden Sie als Beispiel für die Darstellung von kombinatorischen Schaltungen die Datei [[https://​git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​ledcomb_rtl.vhd|ledcomb_rtl.vhd]]. Dazu passend gibt es das Simulationsverzeichnis "​sim/​ledcomb"​ und das Syntheseverzeichnis "​pnr/​ledcomb"​. ​+Im Projektverzeichnis finden Sie als Beispiel für die Darstellung von kombinatorischen Schaltungen die Datei [[https://​git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​ledcomb_rtl.vhd|ledcomb_rtl.vhd]]. Dazu passend gibt es das Simulationsverzeichnis "​sim/​ledcomb"​ und das Syntheseverzeichnis "​pnr/​ledcomb"​.
  
-Die Schaltung ledcomb hat als Eingänge die Schalter "​SW"​. Die Ausgänge sind die roten LEDs "​LEDR"​ und die grünen LEDs "​LEDG"​. Die roten LEDS zeigen den Zustand der Schalter an. An den grünen LEDs werden verschiedene boolesche Funktionen dargestellt. In der Schaltung ledcomb gibt es weiterhin zwei Signale s0 und s1. Die Signale können wie Netze in einem Schaltplan verstanden werden. ​+Die Schaltung ledcomb hat als Eingänge die Schalter "​SW"​. Die Ausgänge sind die roten LEDs "​LEDR"​ und die grünen LEDs "​LEDG"​. Die roten LEDs zeigen den Zustand der Schalter an. An den grünen LEDs werden verschiedene boolesche Funktionen dargestellt. In der Schaltung ledcomb gibt es weiterhin zwei Signale s0 und s1. Die Signale können wie Netze in einem Schaltplan verstanden werden.
  
   - Skizzieren Sie die Schaltungen für die Ausgänge LEDG(0), LEDG(1), LEDG(2), LEDG(3)   - Skizzieren Sie die Schaltungen für die Ausgänge LEDG(0), LEDG(1), LEDG(2), LEDG(3)
-  - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(0)?  +  - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(0)? 
-  - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(1)?  +  - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(1)? 
-  - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(2)?  +  - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(2)? 
-  - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(3)? ​+  - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(3)?
   - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(4)?   - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(4)?
-  - Der Ausgang LEDG(4) wird über eine with .. select Anweisung beschrieben. Skizzieren Sie eine Schaltung, die die gleiche boolesche Funktion hat.  +  - Der Ausgang LEDG(4) wird über eine with .. select Anweisung beschrieben. Skizzieren Sie eine Schaltung, die die gleiche boolesche Funktion hat. 
-  - Erläutern Sie wie die Ausgänge LEDG(7..5) von den Eingängen SW(9..6) abhängen. ​+  - Erläutern Sie wie die Ausgänge LEDG(7..5) von den Eingängen SW(9..6) abhängen.
  
-In der Datei [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​t_ledcomb.vhd|t_ledcomb.vhd]] befindet sich die Testbench für das Design in ledcomb.vhd. Starten Sie im Verzeichnis "​sim/​ledcomb"​ die Simulation der Schaltung. Erläutern Sie das Verhalten der Ausgänge LEDG und LEDR im Simulator! ​+In der Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​src/​t_ledcomb.vhd|t_ledcomb.vhd]] befindet sich die Testbench für das Design in ledcomb.vhd. Starten Sie im Verzeichnis "​sim/​ledcomb"​ die Simulation der Schaltung. Erläutern Sie das Verhalten der Ausgänge LEDG und LEDR im Simulator!
  
-Wechseln Sie jetzt in das Verzeichnis "​pnr/​ledcomb",​ starten Sie die Schaltungssynthese und laden Sie das Design auf das FPGA Board. ​+Wechseln Sie jetzt in das Verzeichnis "​pnr/​ledcomb",​ starten Sie die Schaltungssynthese und laden Sie das Design auf das FPGA Board.
  
-  - Prüfen Sie ob das Ergebnis im Simulator mit dem Verhalten auf dem Board übereinstimmt.  +  - Prüfen Sie ob das Ergebnis im Simulator mit dem Verhalten auf dem Board übereinstimmt. 
-  - Welche Tests fehlen für welche Schaltungsteile noch?  +  - Welche Tests fehlen für welche Schaltungsteile noch? 
-  - Prüfen Sie die fehlenden Tests auf dem Board nach.  +  - Prüfen Sie die fehlenden Tests auf dem Board nach. 
-  - Wie und Warum unterscheiden sich die Dateien [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​pnr/​ledcomb/​ledcomb_pins.tcl|ledcomb_pins.tcl]] und [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​pnr/​ledsw-make/​ledsw_pins.tcl|ledsw_pins.tcl]]?​+  - Wie und Warum unterscheiden sich die Dateien [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​pnr/​ledcomb/​ledcomb_pins.tcl|ledcomb_pins.tcl]] und [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​pnr/​ledsw-make/​ledsw_pins.tcl|ledsw_pins.tcl]]
 + 
 +=== Analyse des Syntheseergebnisses === 
 + 
 +Die Quartussoftware erlaubt eine Analyse des Syntheseergebnisses. In Figure 2-1 im [[https://​www.hs-augsburg.de/​~beckmanf/​restricted/​DE1_V.1.0.1_CDROM/​Datasheets/​Cyclone_II/​cyc2_cii5v1_01.pdf|Cyclone II Datenblatt]] ist die Chipstruktur des FPGA dargestellt. Ein Großteil des FPGA besteht aus Logikelementen (LE), die konfigurierbar miteinander verbunden werden können. Ein Logikelement ist in Figure 2-3 im Datenblatt dargestellt. Mit der "​Four-Input LUT" (eine Lookuptabelle mit 4 Eingängen) kann jede boolesche Funktion mit 4 Eingängen und einem Ausgang dargestellt werden. Im Logikelement befindet sich zusätzlich noch ein Flipflop, das in diesem Versuch nicht benutzt wird. Insgesamt befinden sich auf dem FPGA auf dem Board 18752 Logikelemente. Bei der Synthese müssen die Logikelemente konfiguriert werden, d.h. die boolesche Funktion der "​Four-Input LUT" wird festgelegt, und die Logikelemente müssen miteinander verbunden werden. 
 + 
 +Wechseln Sie in das Syntheseverzeichnis,​ starten Sie die Synthese und starten Sie die Quartus GUI. 
 + 
 +<​code>​ 
 +cd 
 +cd digitaltechnikpraktikum/​pnr/​ledcomb 
 +make compile 
 +make quartus 
 +</​code>​ 
 + 
 +Starten Sie mit "Tools → Netlist Viewers → RTL Viewer"​ die graphische Darstellung Ihres VHDL Codes. 
 + 
 +{{  :​ledcomb01.jpg ​ | Quartus RTL Viewer}} 
 + 
 +Sie können für die Ausgänge LEDG(0), LEDG(1), LEDG(2) und LEDG(3) die graphische Darstellung der booleschen Gleichung sehen. Sie können die zusammengefassten Ports wie SW(9..0) auch als einzelne Ports darstellen. Wählen Sie dazu den Port aus, klicken Sie dann auf die rechte Maustaste und wählen Sie "​Ungroup Selected Nodes"​. Der Code aus den "with … select"​ Anweisungen wird als Multiplexer mit konstanten Dateneingängen dargestellt. 
 + 
 +Starten Sie mit "Tools → Chip Planner"​ die Gesamtansicht des FPGA Chips. 
 + 
 +{{  :​ledcomb02.jpg ​ | Quartus Chip Planner}} 
 + 
 +Die hellblauen Felder sind die Felder mit leeren Logikelementen. Zoomen Sie in den Bereich mit den dunkelblauen Feldern. Die belegten Logikelemente sind blau markiert. 
 + 
 +{{  :​ledcomb03.jpg ​ | Quartus Chip Planner Detail}} 
 + 
 +Mit einem Doppelklick auf ein Logikelement können Sie den Inhalt und die Belegung des Logikelementes darstellen. 
 + 
 +{{  :​ledcomb04.jpg ​ | Quartus Chip Planner Logicelement}} 
 + 
 +Starten Sie mit "Tools → Netlist Viewers → Technology Map Viewer (Post Fitting)"​ eine Schaltplananzeige mit der Verschaltung der einzelnen Logikelemente nach der Synthese. 
 + 
 +{{  :​ledcomb05.jpg | Quartus Technology Map Viewer}} 
 + 
 +Mit einem Doppelklick auf die Logikelemente wird die Konfiguration der Lookuptabelle als Schaltplan mit Logikgattern dargestellt. 
 + 
 +  - Weisen Sie nach, dass die Eingänge des Logikelementes,​ dessen Ausgang an LEDG(3) angeschlossen ist, die Eingänge SW(0) und SW(1) sind. 
 +  - Warum hat dieses Logikelement vor LEDG(3) eine ODER Funktion mit den Eingängen SW(0) und SW(1)? 
 +  - Warum wird die Funktion für LEDG(0) nicht mit einem, sondern mit zwei Logikelementen berechnet?​ 
 +  - Warum ist das Logikelement an LEDG(7) als UND Gatter konfiguriert?
  
 ==== Beispiel hierarchisches Design ==== ==== Beispiel hierarchisches Design ====
  
-In der Datei [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​cntones_rtl.vhd|cntones_rtl.vhd]] finden Sie eine Schaltungsbeschreibung für eine Schaltung, die die Anzahl der Einsen an den vier Eingängen zählt. Zu der Schaltung gibt es eine Testbench [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​t_cntones.vhd|t_cntones.vhd]]. Wechseln Sie in das Verzeichnis "​sim/​cntones"​ und starten Sie die Simulation. ​+In der Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​src/​cntones_rtl.vhd|cntones_rtl.vhd]] finden Sie eine Schaltungsbeschreibung für eine Schaltung, die die Anzahl der Einsen an den vier Eingängen zählt. Zu der Schaltung gibt es eine Testbench [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​src/​t_cntones.vhd|t_cntones.vhd]]. Wechseln Sie in das Verzeichnis "​sim/​cntones"​ und starten Sie die Simulation. 
 + 
 +  - Funktioniert die Schaltung für die vorhandenen Testmuster in der Simulation?​ 
 + 
 +Diese Einserzählschaltung soll jetzt genutzt werden um die Anzahl der Einsen an den SW(3..0) und SW(9..6) zu zählen. Das Ergebnis für SW(3..0) soll an LEDG(2..0) und für SW(9..6) an LEDG(7..5) dargestellt werden. 
 + 
 +In der Datei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​blob/​master/​src/​ledcntsw_rtl.vhd|ledcntsw_rtl.vhd]] finden Sie die Schaltungsbeschreibung,​ die die Schaltung cntones zweimal instantiiert und mit den entsprechenden Eingängen und Ausgängen verbindet. Dazu gibt es das Simulationsverzeichnis "​sim/​ledcntsw"​ und das Syntheseverzeichnis "​pnr/​ledcntsw"​. 
 + 
 +  - Überprüfen Sie die Funktion im Simulator 
 +  - An welcher Stelle ist festgelegt, dass jetzt zwei VHDL Dateien für die Simulation notwendig sind? 
 +  - Synthetisieren Sie die Schaltung. 
 +  - Stellen Sie mit dem RTL Viewer die Struktur der Schaltung dar. 
 +  - Überlegen Sie wieviele Logikelemente sie für die Schaltung verbrauchen und begründen Sie dies. 
 +  - Stellen Sie mit dem Technology Map Viewer das Ergebnis der Synthese dar und vergleichen Sie die Anzahl der benötigten Logikelemente mit Ihren Überlegungen. 
 + 
 +==== Aufgabe Siebensegmentanzeige ====
  
-  - Funktioniert die Schaltung ​für die vorhandenen Testmuster in der Simulation? ​+Sie sollen eine Schaltung ​mit einer hierarchischen Schaltungsbeschreibung entwerfen, mit der die Schalter SW(3..0) als Binärdarstellung interpretiert als Hexadezimalzahl an HEX0 angezeigt wird. Weiterhin sollen die Schalter SW(9..6) als Hexdezimalzahl an HEX1 angezeigt werden.
  
-Diese Einserzählschaltung ​soll jetzt genutzt werden um die Anzahl der Einsen an den SW(3..0) und SW(9..6) zu zählen. Das Ergebnis für SW(3..0) soll an LEDG(2..0) und für SW(9..6) an LEDG(7..5) dargestellt werden+  * Erstellen Sie hierzu zunächst eine neue Datei bin2seg_rtl.vhd. ​Diese Schaltung bin2seg ​soll 4 Eingänge bin_i(3..0) und sieben Ausgänge seg_o(6..0) ​habenDiese Schaltung macht die Übersetzung von Binärdarstellung in die Siebensegmentansteuerung. 
 +  * Erstellen Sie eine Testbench in der neuen Datei t_bin2seg.vhd um den Entwurf im Simulator zu überprüfen. 
 +  * Erstellen Sie das Simulationsverzeichnis "​sim/​bin2seg"​ mit den dazugehörigen Dateien um die Simulation durchzuführen. 
 +  * Überprüfen Sie Ihr Design im Simulator
  
-In der Datei [[https://​git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​ledcntsw_rtl.vhd|ledcntsw_rtl.vhd]] finden Sie die Schaltungsbeschreibung,​ die die Schaltung cntones zweimal instantiiert ​und mit den entsprechenden Eingängen und Ausgängen verbindet +In der Datei de1_bin2seg_rtl.vhd soll das Design de1_bin2seg auf Basis der bin2seg Schaltung enthalten seinDort werden ​die Schalter ​und HEX0 und HEX1 Anschlüsse vom FPGA Board mit der bin2seg Schaltung verbunden.
  
 +  * Erstellen Sie die Datei de1_bin2seg_rtl.vhd
 +  * Erstellen Sie eine Testbench t_de1_bin2seg.vhd
 +  * Erstellen Sie ein Simulationsverzeichnis "​sim/​de1_bin2seg"​ mit den notwendigen Dateien
 +  * Überprüfen Sie das Design im Simulator
 +  * Erstellen Sie ein Syntheseverzeichnis "​pnr/​de1_bin2seg"​ mit den zugehörigen Synthesedateien
 +  * Synthetisieren Sie die Schaltung und laden Sie das Design auf das Board.
 +  * Überprüfen Sie die gewünschte Funktion auf dem Board
  
  
  • dtpr_versuch_4.txt
  • Last modified: 2023/04/02 17:03
  • by beckmanf