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. Die Form des Berichts ist hier: Form der Berichts beschrieben.
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 鈥淟鈥� und VGA_R3 auf 鈥淗鈥� 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 鈥淟鈥� liegen?
- Welche Farbe wird ein Pixel haben, wenn alle Signale VGA_R(3..0), VGA_G(3..0), VGA_B(3..0) auf 鈥淗鈥� 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 鈥渄e1_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 Tools鈫扷tility鈫扞/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 鈥渃lockengen_rtl.vhd鈥� an. Verwenden Sie Signalnamen aus Ihrem Papierentwurf.
- Verifizieren Sie Ihr Design im Simulator. Das Simulationsverzeichnis soll 鈥渃lockengen鈥� heissen. Der Dateiname der Testbench soll 鈥渢_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 鈥渄e1_clockengen_rtl.vhd鈥� sein.
- Dokumentieren Sie das Design, die Simulationsergebnisse und die Messergebnisse in einem Bericht mit dem Dateinamen 鈥渆ds1_clockengen_<name1>_<name2>.pdf鈥� und laden Sie den hoch.