This is an old revision of the document!
Digitaltechnik Praktikum Versuch 6 - VGA Signal
In diesem ersten Versuch geht es um die Analyse des VGA Signals mit dem Logikanalysator und den Entwurf einer Schaltung zur Erzeugung des horizontalen Synchronisationssignals.
Vorbereitung
Zur Vorbereitung des Versuchs m端ssen Sie sich in die Funktion der VGA Schnittstelle vertraut machen. Die folgenden Links beschreiben die Funktionsweise der VGA Schnittstelle.
Im DE1 Usermanual
ist die Verschaltung des VGA Anschlusses FPGA in Kapitel 4.6 dargestellt.
In der praktischen Pr端fung m端ssen Sie einen Bericht 端ber Ihren Entwurf, die Simulationen und die Messungen abgeben. Deshalb haben Sie hier die Gelegenheit solche Berichte abzugeben. Der Bericht soll folgende Formelemente enthalten
- Titel, Autoren und Datum m端ssen enthalten sein
- Kurze Zusammenfassung mit den wichtigsten Ergebnissen Abstract
- Tabellen numeriert mit Tabellen端berschriften
- Abbildungen numeriert mit Untertiteln
- Alle Abbildungen und Tabellen m端ssen im Text referenziert werden und es muss in Worten beschrieben sein, was dort zu sehen ist
- Literaturverzeichnis nach ISO 690 numerisch (oder IEEE style)
Ich habe eine gemacht, der diese Formelemente enth辰lt. Sie k旦nnen aber auch andere Textverarbeitungsprogramme nutzen. Libreoffice ist auf den Laborrechnern installiert. Die Abgaben werden im PDF Format 端ber Moodle gemacht.
Fragen zur Vorbereitung
- Wozu dient ein VGA Anschluss? Was kann man an einen VGA Anschluss anschliessen?
- Was wird 端ber die drei Anschl端sse R, G und B 端ber den VGA Anschluss 端bertragen?
- Wie schnell k旦nnen sich die Signale an R, G und B bei einer Videoaufl旦sung von 640×480 辰ndern?
- Was sind die minimale und die maximale Spannung der R, G und B Signale?
- Was bedeutet Pixeltakt? Welche Frequenz hat der Pixeltakt bei einer Aufl旦sung von 640×480 Punkten?
- Was passiert in einem R旦hrenmonitor wenn das HSYNC Signal aktiv ist?
- Was passiert in einem R旦hrenmonitor wenn das VSYNC Signal aktiv ist?
- Ist die Frequenz des HSYNC Signals gr旦er oder kleiner als die des VSYNC Signals?
- Was ist die front porch und die back porch time?
- Ist die front porch time f端r das VSYNC Signal l辰nger oder k端rzer als die front porch time f端r das HSYNC Signal?
- Warum kann man die L辰nge des HSYNC Signals in Pixeln und die L辰nge des VSYNC Signals in Zeilen angeben?
- Was ist die typische Leitungsimpedanz eines VGA Kabels?
- Welche Spannung stellt sich am VGA Steckerpin R ein, wenn VGA_R0 bis VGA_R2 auf L und VGA_R3 auf H liegen? Die Namen beziehen sich auf Figure 4.11 im DE1 Usermanual.
- Welche Farbe wird ein Pixel haben, wenn alle Signale VGA_R(3..0), VGA_G(3..0), VGA_B(3..0) auf L liegen?
- Welche Farbe wird ein Pixel haben, wenn alle Signale VGA_R(3..0), VGA_G(3..0), VGA_B(3..0) auf H liegen?
Laboraufgaben
Installieren Sie das Projektverzeichnis mit
git clone https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/eds1.git
Analyse des VGA DAC
Auf dem DE1 Board befindet sich der VGA Digital-Analog Wandler (DAC). Der Schaltplan des DE1 Boards ist hier:
Bei dem DAC soll die statische bertragunskennlinie analytisch und experimentell untersucht werden. Die Ergebnisse werden mit einer idealen Kennlinie verglichen. F端r alle Untersuchungen sind handschriftliche Aufzeichnungen notwendig.
- Es werden vier Teams aus den Laborgruppen gebildet. Zwei Teams untersuchen den DAC analytisch und zwei Teams experimentell. Jedes Team hat maximal vier Mitglieder.
- 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.
- 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 (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.
Analytische Untersuchung des DAC
- Finden Sie im DE1 Schaltplan den DAC.
- Zeichnen Sie ein Ersatzschaltbild eines Farbkanals des DAC. Fassen Sie Reihen- und Parallelschaltungen von Widerst辰nden zusammen. Wie modellieren Sie die digitalen Ausg辰nge des FPGA?
- Erkl辰ren Sie die Funktion des DAC.
- Finden Sie einen analytischen Ausdruck f端r die Ausgangsspannung eines Farbkanals in Abh辰ngigkeit vom digitalen Zustand der Ausg辰nge.
- Starten Sie eine Tabellenkalkulation und berechnen Sie die Ausgangsspannung f端r jeden digitalen Wert.
- Vergleichen Sie die berechneten Werte mit der idealen Kurve.
- Welche Unterschiede gibt es?
- Wie h辰ngt die Linearit辰t vom Lastwiderstand ab?
Experimentelle Untersuchung
- Entwerfen Sie auf dem Papier eine Schaltung mit der Sie die Ausgangsspannung am roten Farbkanal messen k旦nnen. Aus dem Schaltplan soll ersichtlich sein, welche Komponenten des DE1 Boards sie verwenden und wo Sie messen wollen.
- 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.
- 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.
- Berechnen Sie die Werte bei idealem DAC Verhalten.
- Vergleichen Sie das gemessene Verhalten mit dem idealen Verhalten.
Messung und Analyse eines unbekannten VGA Signals
Messung und Analyse in der Gruppe
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 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 HSYNC Signal? Ist es high- oder low-aktiv?
- F端r welchen Zeitraum ist das VSYNC Signal aktiv?
- F端r welchen Zeitraum ist das HSYNC Signal aktiv?
- Mit welcher Frequenz wiederholt sich das VSYNC Signal?
- Mit welcher Frequenz wiederholt sich das HSYNC Signal?
- Wie ist die Bildwiederholfrequenz?
- Wie viele Zeilen hat das VGA Signal pro Bild? Warum?
- Welche Aufl旦sung hat das Bild?
- Geben Sie die front porch und back porch Zeit f端r das HSYNC 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 das Bild, das am Monitor erscheint, wenn Sie das FPGA an einen Monitor anschliessen. Geben Sie die Farben im Bild an.
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.
Bericht
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 ToolsUtilityI/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.
Laden Sie den Bericht im Moodlekurs hoch:
Anschluss eines VGA Monitors an das Board
Wenn Sie mit Ihrer Ausarbeitung fertig sind und ein Betreuer den Bericht abgenommen hat, wird der VGA Monitor an das FPGA angeschlossen und das erwartete Bild mit dem Monitorbild verglichen.
Zul辰ssige Komponenten f端r den Schaltungsentwurf
In den weiteren Versuchen werden Sie auf dem Papier Schaltungen entwerfen. F端r den Schaltungsentwurf sollen Sie die folgenden Grundkomponenten nach Bedarf verwenden.
D-Flipflop
Ein einfaches D Flipflop mit positiver Flankensteuerung und low aktivem Reset.
Das Flipflop kann mit folgendem VHDL Code erzeugt werden:
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;
Register
Ein Register mit einstellbarer Bitbreite.
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;
Im folgenden Beispiel wird das Register direkt auf Basis von Signalen erzeugt:
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;
Multiplexer
Ein Multiplexer mit einstellbarer Bitbreite
Hier ein Codebeispiel f端r einen 2 zu 1 Multiplexer
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;
Und hier ein Beispiel f端r einen 4 zu 1 Multiplexer mit Signalen
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;
Addierer
Ein Addierer mit einstellbarer Bitbreite
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'.
Der Vergleicher steht als VHDL Komponente in src/compare_rtl.vhd zur Verf端gung.
Logik auf Basis von booleschen Ausdr端cken
Logik als Resultat von beliebigen booleschen Ausdr端cken in VHDL.
-- Beispiel sync_o <= a and not(b); active_o <= not(a) and not(b); y_o <= not(a and not(b)) xor c;
Design Clock Enable Generator
Entwerfen Sie jetzt einen Generator, der ein Enablesignal f端r jeden zweiten Takt generiert. Ein Z辰hler mit Enableeingang, der mit 50 MHz Taktfrequenz getaktet ist, w端rde mit diesem Enablesignal mit 25 MHz 鞄看界鞄噛辰鞄鉛艶稼.
Der Generator soll die Ein- und Ausg辰nge gem辰 des vorherigen Bildes haben.
Zusammenarbeit
Bei dieser Aufgabe sollen alle Kursteilnehmer m旦glichst schnell zu einem funktionierenden Entwurf und dann zu einer funktionierenden Implementierung kommen.
Entwurfsphase
In der Entwurfsphase soll auf dem Papier der Entwurf des Enablegenerators erfolgen. Zeichnen Sie einen Schaltplan, benennen Sie Signale und zeichnen Sie geeignete Timingdiagramme auf denen die Signalverl辰ufe der Ein- und Ausg辰nge zu sehen sind.
- Zeichnen Sie ein Timingdiagramm mit dem gew端nschten Signalverlauf.
- 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.
Unabh辰ngig von dem Entwurf bisher sollen Sie auch einen Entwurf auf Basis eines Mooreautomaten machen.
- Geben Sie die Ein- und Ausg辰nge des Automaten an.
- 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.
掘姻一鉛辰姻顎稼乙壊沿鞄温壊艶
Jeweils zwei Gruppen erkl辰ren sich gegenseitig den Entwurf.
- Eine Gruppe erkl辰rt einer anderen Gruppe den Entwurf (3 min).
- Danach k旦nnen Fragen gestellt und der Entwurf diskutiert werden. Notieren Sie nderungen.
- Danach wechseln die Rollen.
Designphase und Verifikation
In der Designphase soll der Entwurf in VHDL umgesetzt und verifiziert werden.
- 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.
- Verifizieren Sie Ihr Design im Simulator. Das Simulationsverzeichnis soll clockengen heissen. Der Dateiname der Testbench soll t_clockengen.vhd lauten.
- 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.
- Dokumentieren Sie das Design, die Simulationsergebnisse und die Messergebnisse in einem Bericht report_<name1>_<name2>_clockengen.pdf und laden Sie den hoch.