[[dtpr_versuch_6]]

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_6 [2013/11/10 19:58]
beckmanf added VGA DAC analysis
dtpr_versuch_6 [2023/04/17 14:12] (current)
beckmanf new module
Line 19: Line 19:
 Im DE1 Usermanual ​ Im DE1 Usermanual ​
  
-https://​www.hs-augsburg.de/​~haf/secure/prototypeboards/DE1_UserManual_v1018.pdf+https://​www.hs-augsburg.de/​~beckmanf/restricted/DE1_V.1.0.1_CDROM/DE1_user_manual/​DE1_UserManual_v1.2.1.pdf
  
-ist die Verschaltung des VGA Anschlusses FPGA in Kapitel 4.6 dargestellt. ​Die Funktion dieser Verschaltung ist hier+ist die Verschaltung des VGA Anschlusses FPGA in Kapitel 4.6 dargestellt. ​
  
-http://www.javiervalcarce.eu/​wiki/​Binary-Weighted_Digital_To_Analog_Converter  +In der praktischen Prüfung müssen Sie einen Bericht über Ihren Entwurf, die Simulationen und die Messungen abgebenDeshalb haben Sie hier die Gelegenheit solche Berichte abzugebenDie Form des Berichts ist  hier: [[:​dt_berichtsform | Form der Berichts]] ​beschrieben.
- +
-beschrieben. ​+
  
 ==== Fragen zur Vorbereitung ==== ==== Fragen zur Vorbereitung ====
Line 47: Line 45:
 ===== Laboraufgaben ===== ===== Laboraufgaben =====
  
-Lassen ​Sie im Labor diese {{:​dtpr-checkliste-v1.pdf|Checkliste V6}} von den Betreuern abzeichnen. ​+Installieren ​Sie das Projektverzeichnis mit
  
 +<​code>​
 +git clone https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​eds1.git
 +</​code>​
 ==== Analyse des VGA DAC ==== ==== Analyse des VGA DAC ====
  
Line 60: Line 61:
   * Die (2er) Gruppen in den Teams arbeiten zunächst unabhängig voneinander und notieren die Ergebnisse auf einem Zettel.   * Die (2er) Gruppen in den Teams arbeiten zunächst unabhängig voneinander und notieren die Ergebnisse auf einem Zettel.
   * Die 2er Gruppen vergleichen dann die Ergebnisse mit den Ergebnissen der anderen Gruppe im Team.    * Die 2er Gruppen vergleichen dann die Ergebnisse mit den Ergebnissen der anderen Gruppe im Team. 
-  * Jedes Team entwirft ein Flipchart mit den Ergebnissen. Jedes Teammitglied muss die Ergebnisse erläutern können. +  * Jedes Team entwirft ein Flipchart mit den Ergebnissen. Jedes Teammitglied muss die Ergebnisse erläutern können. So entstehen insgesamt vier Flipcharts.  
-  * Jedes Team teilt sich auf. Die eine Hälfte des Teams bleibt bei dem eigenen Flipchart um Fragen zu beantworten. Die andere Hälfte (Wanderer) besucht die anderen Flipcharts. ​Bei Zeitzeichen geht jede Wandergruppe eine Station weiter. ​+  * Jedes Team teilt sich auf. Die eine Hälfte des Teams bleibt bei dem eigenen Flipchart um Fragen zu beantworten ​(Erklärer). Die andere Hälfte (Wanderer) besucht ​reihum ​die anderen Flipcharts. ​Beim Zeitzeichen geht jede Wandergruppe eine Station weiter. ​
   * Danach tauschen die Wanderer und die Erklärer ihre Rollen. ​   * Danach tauschen die Wanderer und die Erklärer ihre Rollen. ​
  
Line 80: Line 81:
   - Zeichnen Sie ein Ersatzschaltbild des VGA_R Farbkanals des DAC. Fassen Sie Reihen- und Parallelschaltungen von Widerständen zusammen. Wie modellieren Sie die digitalen Ausgänge des FPGA?   - Zeichnen Sie ein Ersatzschaltbild des VGA_R Farbkanals des DAC. Fassen Sie Reihen- und Parallelschaltungen von Widerständen zusammen. Wie modellieren Sie die digitalen Ausgänge des FPGA?
   - Berechnen Sie die erwarteten Spannungen für VGA_R(3..0) = "​0000"​ und "​1111"​.   - Berechnen Sie die erwarteten Spannungen für VGA_R(3..0) = "​0000"​ und "​1111"​.
-  - Analysieren ​Sie die Schaltung ​"de1_vgadac" ​im ProjektverzeichnisVergleichen Sie die Schaltung ​mit der von Ihnen vorgeschlagenen Schaltung aus Punkt 1. Wie können Sie mit dieser Schaltung die Kennlinie messen? ​+  - Erstellen ​Sie eine Schaltung de1_vgadac ​mit der zu erstellenden VHDL Datei "de1_vgadac_rtl.vhd" ​mit der Sie den roten VGA Kanal über die Schalter SW3 bis SW0 kontrollieren können. Das zugehörige pnr Verzeichnis soll de1_vgadac heissen. 
 +  - Wie können Sie mit dieser Schaltung die Kennlinie messen? ​
   - Messen Sie die Ausgangsspannungen für alle möglichen Wertekombinatonen von VGA_R. ​   - Messen Sie die Ausgangsspannungen für alle möglichen Wertekombinatonen von VGA_R. ​
   - Berechnen Sie die Werte bei idealem DAC Verhalten.   - Berechnen Sie die Werte bei idealem DAC Verhalten.
Line 91: Line 93:
 Zunächst sollen die Signalverläufe eines unbekannten VGA Signals am Ausgang des DE1 FPGA Boards gemessen und  Zunächst sollen die Signalverläufe eines unbekannten VGA Signals am Ausgang des DE1 FPGA Boards gemessen und 
 analysiert werden. In dieser {{:​vga-messungen-fpga-belegung.zip|}} Datei ist für jede Gruppe eine FPGA  analysiert werden. In dieser {{:​vga-messungen-fpga-belegung.zip|}} Datei ist für jede Gruppe eine FPGA 
-Belegungsdatei enthalten. Laden Sie FPGA Belegungsdatei für Ihre Gruppe über den Quartus Programmer auf das FPGA. Ihre Aufgabe ist die Messung und Analyse des Signals mit dem Oszilloskop und dem Logikanalysator. ​Beantworten ​Sie folgende Fragen ​und **notieren Sie die Antworten auf einem Zettel. ** Begründen Sie Ihre Antworten! Skizzieren Sie die gemessenen Signalverläufe+Belegungsdatei enthalten. Laden Sie die FPGA Belegungsdatei für Ihre Gruppe über den Quartus Programmer auf das FPGA. Ihre Aufgabe ist die Messung und Analyse des Signals mit dem Oszilloskop und dem Logikanalysator. ​Im Rahmen eines schriftlichen Analyseberichts müssen ​Sie folgende Fragen ​beantworten
  
   - Welche Polarität hat das VSYNC Signal? Ist es high- oder low-aktiv? ​   - Welche Polarität hat das VSYNC Signal? Ist es high- oder low-aktiv? ​
Line 105: Line 107:
   - Geben Sie die front porch und back porch Zeit für das VSYNC Signal an.    - Geben Sie die front porch und back porch Zeit für das VSYNC Signal an. 
   - Skizzieren Sie den Amplitudenverlauf für die R, G und B Signale. ​   - Skizzieren Sie den Amplitudenverlauf für die R, G und B Signale. ​
-  - Skizzieren Sie das Bild, das am Monitor erscheint, wenn Sie das FPGA an einen Monitor anschliessen. Geben Sie die Farben im Bild an.   ​+  - Skizzieren Sie das Bild, das am Monitor erscheint, wenn Sie das FPGA an einen Monitor anschliessen. Geben Sie die Farben im Bild an.
  
-== Verifikation ​mit der Nachbargruppe ==+Begründen Sie Ihre Antworten und nehmen Sie Messbilder vom Oszilloskop in Ihren Bericht ​mit auf. Zu der Antwort müssen geeignete Messungen (mit Bild) im Bericht vorhanden sein.
  
-Nach der Messung, Analyse und Beantwortung der Fragen müssen Sie in der Lage sein einem Vertreter einer anderen Gruppe Ihre Antworten plausibel zu machen. Wählen Sie einen Vertreter aus Ihrer Gruppe, der in Ihrer Partnergruppe die Ergebnisse prüft. Jetzt werden die Gruppen gemischt und die Ergebnisse nochmal kontrolliert. Der "​Prüfer"​ zeichnet die Ergebnisse der Partnergruppe ab. Warten Sie mit diesem Schritt bis alle Gruppen mit der Analyse fertig sind. +== Bericht ==
  
-== Anschluss eines VGA Monitors an das Board ==+Sie können den Bericht mit Libreoffice auf den Laborrechnern schreiben. Vom Laborrechner können Sie auch auf dem Labordrucker drucken. Laden Sie die Oszilloskopbilder über das Webinterface vom Oszilloskop und verwenden Sie Bilder ohne schwarzen Hintergrund. Die IP Adresse vom Oszilloskop können Sie am Oszilloskop über Tools->​Utility->​I/​O erfahren. Wenn Sie alle Fragen in Ihrem Bericht beantwortet haben, legen Sie den Bericht einem Betreuer vor, der den Bericht mit Ihnen durchgehen wird.
  
-Wenn Sie mit Ihrer Ausarbeitung fertig sind, wird der VGA Monitor an das FPGA angeschlossen und das erwartete Bild mit dem Monitorbild verglichen+Laden Sie den Bericht als pdf Datei mit dem Dateinamen "​eds1_vgadac_<​name1>​_<​name2>​.pdf"​ im [[https://​moodle.hs-augsburg.de/​mod/​assign/​view.php?​id=39202 | Moodlekurs hoch]]
  
-==== Entwurf einer Schaltung zur Erzeugung des horizontalen Synchronisationssignals (HSYNC) ​ ====+== Anschluss eines VGA Monitors an das Board ==
  
-Jetzt sollen ​Sie einen Entwurf für einen HSYNC Generator machen, der das VGA_HS Signal für den VGA Anschluss erzeugt. Das Bild soll eine Auflösung von 640x480 Punkten und eine Bildwiederholfrequenz von etwa 60 Hz haben. Auf dem FPGA Board soll das 50 MHz Taktsignal genutzt werden+Wenn Sie mit Ihrer Ausarbeitung fertig sind und ein Betreuer den Bericht abgenommen hatwird der VGA Monitor an das FPGA angeschlossen und das erwartete Bild mit dem Monitorbild verglichen
  
-{{:​vgatop.jpg|VGA Bildgenerator}}+==== Zulässige Komponenten für den Schaltungsentwurf ====
  
-Der Entwurf soll zunächst komplett ​auf dem Papier ​erfolgen. Versuchen Sie bei Ihrem Entwurf einen Ausblick für die Erzeugung des VSYNC Signals und die RGB Signale zu geben. Für den Entwurf ​sollen ​ausschliesslich ​die folgenden ​Komponenten verwendet werden. Andere, komplexere Komponenten müssen Sie auf Basis der aufgeführten zulässigen Komponenten erstellen  +In den weiteren Versuchen werden Sie auf dem Papier ​Schaltungen entwerfen. Für den Schaltungsentwurf ​sollen ​Sie die folgenden ​Grundkomponenten nach Bedarf verwenden
- +
-=== Zulässige Komponenten ===+
  
 == D-Flipflop == == D-Flipflop ==
Line 130: Line 130:
  
 {{:​dflipflop.jpg|D Flipflop}} {{:​dflipflop.jpg|D Flipflop}}
 +
 +Das Flipflop kann mit folgendem VHDL Code erzeugt werden: ​
 +
 +<code vhdl>
 +entity ff is
 +  port(
 +    clk_i, res_n : in  std_ulogic;
 +    d_i          : in  std_ulogic;
 +    q_o          : out std_ulogic);​
 +end;
 +architecture rtl of ff is
 +begin
 +  q_o <= '​0'​ when res_n = '​0'​ else d_i when rising_edge(clk_i);​
 +end architecture;​
 +</​code>​
  
 == Register == == Register ==
Line 136: Line 151:
  
 {{:​register.jpg|Register}} {{:​register.jpg|Register}}
 +
 +<code vhdl>
 +entity reg is
 +  port(
 +    clk_i, res_n : in  std_ulogic;
 +    d_i          : in  std_ulogic_vector(9 downto 0);
 +    q_o          : out std_ulogic_vector(9 downto 0));
 +end;
 +architecture rtl of reg is
 +begin
 +  q_o <= "​0000000000"​ when res_n = '​0'​ else d_i when rising_edge(clk_i);​
 +end architecture;​
 +</​code>​
 +
 +Im folgenden Beispiel wird das Register direkt auf Basis von Signalen erzeugt: ​
 +
 +<code vhdl>
 +architecture rtl of example is
 +  signal d, q : std_ulogic_vector(9 downto 0);
 +  signal clk, res_n : std_ulogic;
 +begin
 +  q <= "​0000000000"​ when res_n = '​0'​ else d when rising_edge(clk);​
 +  -- weiterer Code
 +  -- 
 +end architecture rtl; 
 +</​code>​
 +
  
 == Multiplexer == == Multiplexer ==
Line 142: Line 184:
  
 {{:​mux.jpg|Multiplexer}} {{:​mux.jpg|Multiplexer}}
 +
 +Hier ein Codebeispiel für einen 2 zu 1 Multiplexer
 +
 +<code vhdl>
 +entity mux is
 +  port(
 +    a_i,​b_i ​        : in  std_ulogic_vector(9 downto 0); 
 +    sel_i           : in  std_ulogic;
 +    y_o             : out std_ulogic_vector(9 downto 0));
 +end;
 +
 +architecture rtl of mux is
 +begin
 +  y <= a_i when sel_i = '​0'​ else b_i; 
 +end architecture; ​  
 +</​code>​
 +
 +Und hier ein Beispiel für einen 4 zu 1 Multiplexer mit Signalen
 +
 +<code vhdl>
 +architecture rtl of example is
 +signal a,b,c,d,y : std_ulogic_vector(9 downto 0);
 +signal sel : std_ulogic_vector(1 downto 0);
 +begin
 +
 +  with sel select
 +  y <=
 +  a when "​00",​
 +  b when "​01",​
 +  c when "​10",​
 +  d when others;
 +  ​
 +  -- weiterer Code 
 +  ​
 +end architecture; ​  
 +</​code>​
  
 == Addierer == == Addierer ==
Line 148: Line 226:
  
 {{:​adder.jpg|Addierer}} {{:​adder.jpg|Addierer}}
 +
 +Der Addierer steht als VHDL Komponente in src/​adder_rtl.vhd zur Verfügung. ​
 +
 +== Vergleicher ==
 +
 +Ein Vergleicher mit ge_o = '​1',​ wenn a >= b, sonst '​0'​. ​
 +
 +{{ :​public:​digilab_vga:​dtpr_v6_compare.jpg?​200 | Vergleicher}}
 +
 +Der Vergleicher steht als VHDL Komponente in src/​compare_rtl.vhd zur Verfügung. ​
  
 == Logik auf Basis von booleschen Ausdrücken == == Logik auf Basis von booleschen Ausdrücken ==
Line 161: Line 249:
  
 {{:​boolean-logic.jpg|Addierer}} {{:​boolean-logic.jpg|Addierer}}
- 
-=== Vorgehen === 
- 
-  - Arbeiten Sie in Ihrer Gruppe einen Entwurf aus. Im Entwurf müssen Schaltpläne und geeignete Timingdiagramme enthalten sein. Sie müssen in der Lage sein, anderen Gruppen den Entwurf zu erläutern. Einigen Sie sich auf einen Gruppensprecher,​ der den Entwurf vorstellt. Kontaktieren Sie in dieser Zeit nicht die anderen Gruppen. (45 min) 
-  - Jeweils vier Gruppen bilden ein Plenum und diskutieren die Entwürfe untereinander. Jede Gruppe stellt dazu Ihren Entwurf den anderen Gruppen vor (5 min). Danach wird der Entwurf diskutiert (5 min).  
-  - Wählen Sie im Plenum einen Entwurf aus, der dem anderen Plenum vorgestellt werden soll  
-  - Definieren Sie gegebenenfalls noch notwendige Änderungen,​ Ergänzungen und Verbesserungen,​ die in der Diskussion aufgefallen sind. (10 min)  
-  - Dieser überarbeitete Entwurf wird dann dem anderen Plenum vorgestellt (5 min) und diskutiert (5 min).    ​ 
- 
 ==== Design Clock Enable Generator ==== ==== Design Clock Enable Generator ====
  
Line 180: Line 259:
 === Zusammenarbeit === === Zusammenarbeit ===
  
-Bei dieser Aufgabe sollen alle Kursteilnehmer möglichst schnell zu einem funktionierenden Entwurf und dann zu einer funktionierenden Implementierung kommen. Sie haben pro Gruppe eine rote und eine grüne Karte. ​  +Bei dieser Aufgabe sollen alle Kursteilnehmer möglichst schnell zu einem funktionierenden Entwurf und dann zu einer funktionierenden Implementierung kommen. ​
- +
-  * Wenn Sie überhaupt nicht mehr weiterwissen,​ dann stellen Sie die ROTE Karte sichtbar auf oder halten Sie sie hoch. +
-  * Wenn Sie mit einer Aufgabe fertig sind, dann stellen Sie die grüne Karte auf. Bieten Sie sofort anderen Gruppen Ihre Hilfe an+
  
 === Entwurfsphase === === Entwurfsphase ===
Line 192: Line 268:
   - Machen Sie einen Entwurf und zeichnen Sie einen Schaltplan. Benennen Sie Ein- und Ausgänge sowie interne Signale.   - Machen Sie einen Entwurf und zeichnen Sie einen Schaltplan. Benennen Sie Ein- und Ausgänge sowie interne Signale.
   - Machen Sie sich Gedanken was Sie benötigen um Ihren Entwurf einer anderen Gruppe zu erklären. ​   - Machen Sie sich Gedanken was Sie benötigen um Ihren Entwurf einer anderen Gruppe zu erklären. ​
-  - Wählen Sie einen "​Prüfer",​ der den Entwurf einer anderen Gruppe beurteilt. ​ 
  
-=== Erklärungsphase ===+Unabhängig von dem Entwurf bisher sollen Sie auch einen Entwurf auf Basis eines Mooreautomaten machen. ​
  
-  - Die Gruppen mischen sich und jede Gruppe erklärt einem anderen Gruppenmitglied den eigenen Entwurf.  +  - Geben Sie die Ein- und Ausgänge des Automaten an.  
-  - Der "​Prüfer"​ zeichnet ​den Entwurf der anderen Gruppe ab.+  - Benennen Sie die notwendigen Zustände 
 +  - Zeichnen Sie den Zustandsgraphen 
 +  - Zeichnen Sie ein Timingdiagramm mit Takt, Zustand und Ausgang des Automaten  
 +  - Geben Sie eine Zustandskodierung an und geben Sie die Zustandsübergangslogik und die Ausgangslogik an.  
 + 
 +=== Erklärungsphase ===
  
-=== Designphase === +Jeweils zwei Gruppen erklären sich gegenseitig den Entwurf. ​
  
-In der Designphase soll der Entwurf ​in VHDL umgesetzt ​werden. ​Laden Sie dazu dieses Projekt {{:​clockengen.zip|}} ​ auf Ihren Rechner.  +  - Eine Gruppe erklärt einer anderen Gruppe den Entwurf (3 min).  
-Der Toplevel ist de1_vgatop für das FPGA beziehungsweise ​die Testbench vgatop_tb+  - Danach können Fragen gestellt und der Entwurf ​diskutiert ​werden. ​Notieren ​Sie Änderungen.  
 +  - Danach wechseln ​die Rollen
  
-  * Schauen Sie sich die VHDL Dateien an und skizzieren Sie die vorhandene Designhierarchie.  +=== Designphase ​und Verifikation === 
-  * Welches Design ist vorhanden, aber nicht Teil des de1_vgatop Designs?+
  
-Sobald Sie die Antwort wissen, setzten Sie die grüne Karte und bieten ​Sie Ihre Hilfe den anderen Gruppen anSobald alle Gruppen fertig sind, demonstrieren die Betreuer wie das clockengen Design in den vgatop eingebaut ​wird. +In der Designphase soll der Entwurf in VHDL umgesetzt ​und verifiziert werden. ​Sie müssen dazu ein neues Designmodul anlegenIn [[dtpr_new_module_howto|How to setup a new Module]] ​wird dies beschrieben.
  
-  - Setzen Sie jetzt Ihr clockengen Design in VHDL um +  - Setzen Sie jetzt Ihr clockengen Design in VHDL um. Legen Sie dazu die VHDL Datei "​clockengen_rtl.vhd"​ an. Verwenden Sie Signalnamen aus Ihrem Papierentwurf. 
-  - Prüfen ​Sie Ihr Design im Simulator +  - Verifizieren ​Sie Ihr Design im Simulator. Das Simulationsverzeichnis soll "​clockengen"​ heissen. Der Dateiname der Testbench soll "​t_clockengen.vhd"​ lauten. 
-  - Wählen ​Sie einen "Prüfer+  - Jetzt soll der Clock Enable Generator auf dem FPGA Board verifiziert werden. Zeigen ​Sie die Signalverläufe auf dem Oszilloskop. Instantiieren Sie das clockengen Design dazu in einem toplevel Modul, das de1_clockengen heissen soll. Die Ports in de1_clockengen sollen die Pins auf dem FPGA repräsentieren. Der Name der vhdl Datei vom Toplevel soll "de1_clockengen_rtl.vhd" ​sein. 
-  - Sobald ​Sie fertig sindsetzten Sie die grüne Karte und bieten ​Sie anderen Gruppen Ihre Hilfe an+  - Dokumentieren ​Sie das Design, die Simulationsergebnisse ​und die Messergebnisse in einem Bericht mit dem Dateinamen "​eds1_clockengen_<​name1>​_<​name2>​.pdf"​ und laden Sie den [[https://​moodle.hs-augsburg.de/​mod/​assign/​view.php?​id=250480|Bericht im Moodlekurs]] hoch.
  
-=== Verifikationsphase === 
  
-Jetzt sollen die Gruppen gegenseitig ihr Design kontrollieren. Dazu geht der "​Prüfer"​ zu einer anderen Gruppe und die verbleibenden Gruppenmitglieder erklären dem "​Prüfer"​ der anderen Gruppe ihr eigenes Design. ​ 
  
  
  • dtpr_versuch_6.1384109923.txt.gz
  • Last modified: 2013/11/10 19:58
  • by beckmanf