Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

FPGA Praktikum WS2000/2001 6.Woche: VGA Monitoransteuerung.

Ähnliche Präsentationen


Präsentation zum Thema: "FPGA Praktikum WS2000/2001 6.Woche: VGA Monitoransteuerung."—  Präsentation transkript:

1 FPGA Praktikum WS2000/ Woche: VGA Monitoransteuerung

2 VGA Grafik zPrinzip einer Braunschen-Röhre zVGA Signale zAnschluß an den FPGA zAufgaben

3 Die Braunsche-Röhre zVakuumröhre mit einem Elektronenstrahl, der ein Beschichtung auf der Vorderseite einen Punkt zum leuchten bringt. zDer Elektronenstrahl kann abgelenkt werden zDie Intensität des Strahls kann gesteuert werden.

4 Bildaufbau zDer Strahl baut jedes Bild Zeile für Zeile und Punkt für Punkt nacheinander auf. zEr läuft eine Zeile von links nach rechts ab. zDie Intensitätsschwankung gibt die Helligkeit der Punkte auf der Zeile an. zDann läuft er schnell an den Anfang der nächsten Zeile zurück. Dabei muß der Strahl ausgeschaltet sein. zAm Ende der letzten Zeile läuft der Strahl an den Anfang des Bildes zurück. (Austastlücke)

5 Problemstellung: zUm ein Bild darzustellen, muß der Elektronenstrahl genau zum richtigen Zeitpunkt die richtige Intensität haben zAufeinanderfolgende Bilder müssen richtig positioniert werden zBeim Zeilenrücklauf muß der Elektronenstrahl abgeschaltet sein

6 Ansteuerung zEin VGA Monitor wird über 5 Signale gesteuert: zHSYNC (Horizontale Synchronisation, Ende einer Zeile) zVSYNC (Vertikale Synchronisation, Ende eines Bildes) zRote Intensität zGrüne Intensität zBlaue Intensität

7 Sync Signale zDas HSYNC Signal kennzeichnet das Ende einer Zeile zDas VSYNC Signal kennzeichnet das Ende eines Bildes zDa die meisten Monitore einen Schwingkreis mit diesen Signalen synchronisieren müssen die Signale zeitlich sehr gleichmäßig sein. zAußerdem müssen die Signalzeiten in einem vom Monitor vorgegebenen Bereich liegen. zBei manchen Monitoren (fixed frequency, Fernseher) müssen sogar genau vorgeschriebene Timings eingehalten werden.

8 Video Timing zWer schon mal einen Monitor oder eine Grafikkarte gekauft hat, ist über die Timinggrenzwerte gestolpert: yVertikalfrequenz: Bilder pro Sekunde x25 Hz beim Fernseher, xz.B. 50 bis 100 Hz bei meinem 17“ Monitor yHorizontalfrequenz: Zeilen pro Sekunde xAuch unsichtbare Zeilen der Austastlücke werden mitgezählt x15 kHz Fernseher x30 kHz bis 90kHz bei meinem 17“ Monitor xD.h.: Mein Monitor kann offiziell den guten alten Spiele-Modus mit 320x200 Punkten bei 60 Bildern/s (ca. 14kHz) nicht darstellen. yEine Verletzung des Timings kann den Monitor beschädigen!

9 Beispieltiming für den SVGA Modus mit 31,5 MHz zVertikalfrequenz: ca. 60 Bilder/s y(16,784 ms pro Bild) z480 Sichtbare Zeilen pro Bild zHorizontalfrequenz: 31,5 kHz y31,77 µs pro Zeile y31,77 µs * 480 = 15,25 ms für den Sichtbaren Teil des Bildes y16,784 ms - 15,25 ms = 1,534 ms vertikale Austastlücke y1,534 ms / 31,77 µs = 48 Zeilen Austastlücken yInsgesamt also 528 Zeilen z640 Pixel pro Zeile in sichtbaren 25,17 µs y31,77 µs - 25,17 µs = 6,6 µs horizontale Austastlücke y640 / 25,17 µs = 25,4 MHz Pixelfrequenz

10 HSYNC Timing zAufbau einer Zeile yDie HSYNC Signale werden für jede Zeile gesendet, auch während der Vertikalen Austastlücke yHSYNC Puls ist 3,77 µs lang auf dem Wert ‘0‘.

11 HSYNC Timing zDamit es bei allen läuft, sollte die Schaltung mit 19,202 MHz arbeiten. zDann ergeben sich die folgenden Werte: y610 Pixel pro Zeile (31,77 µs) y512 sichtbare Pixel (26,66 µs statt 25,17 µs) ydie restlichen 98 Pixel sind schwarz yDer HSYNC Puls startet bei Pixel 520 yder HSYNC Puls endet vor Pixel 592 yDurch verschieben des HSYNC Pulses läßt sich das Bild links/rechts verschieben.

12 VSYNC Timing zAufbau eines Bildes

13 VSYNC Timing zDas Bild besteht aus 529 Zeilen z480 Zeilen sind sichtbar z49 Zeilen sind schwarz zDer VSYNC Puls ist zwei Zeilen lang ‘0‘: zZeilen 494 und 495

14 Intensitätssteuerung zDer Monitor bekommt vom FPGA drei Intensitätssignale gesendet. zJe eins für die Grundfarben Rot, Grün und Blau. zJedes Signal kann über einen einfachen 2-Bit Analog/Digitalwandler auf vier verschiedene Spannungswerte gesetzt werden zDamit sind 2 3*2 = 2 6 = 64 verschiedene Farben möglich. zAm bequemsten faßt man im VHDL-Code die sechs Signale zu einem Vektor zusammen:  RGB <= R(1 downto 0) & G(1 downto 0) & B(1 downto 0);

15 Pinbelegung  Für die UCF Datei: zNET HSYNCB LOC=P180; NET VSYNCB LOC=P181; NET R LOC=P194; NET R LOC=P193; NET G LOC=P192; NET G LOC=P191; NET B LOC=P189; NET B LOC=P188;

16 Schaltung eines VGA Farbausganges

17 2-Bit D/A Wandler z3,3V Ausgangsspannung am FPGA Pin zRed = „00“ yAusgangsspannung 0V zRed = „01“ ySpannungsteiler 1000  zu (470  || 75  )=65  yAusgangsspannung 201 mV zRed = „10“ ySpannungsteiler 470  zu (1000  || 75  )=70  yAusgangsspannung 390 mV zRed = „11“ ySpannungsteiler (1000  || 470  )=320  zu 75  yAusgangsspannung 627 mV

18 Aufgabe 6.1: Generierung des VGA Timings zBaut eine Schaltung, die HSYNC und VSYNC mit dem beschriebenen Timing erstellt. zVerwendet dazu einen X Zähler von 0 bis 610 und einen Y Zähler von 0 bis 528 aus STD_LOGIC_VECTOR y (Wieviele Bits benötigen die Zähler?) zSimuliert mit einem 19,2 MHz Takt mindestens 700 Taktzyklen und überprüft, ob die HSYNC Timing richtig ist. (72 Pixel lang, alle 610 Pixel) zImplementiert, und testet ob im Logfile mindestens 19,2 MHz Taktfrequenz angegeben sind. zNur weitermachen, wenn diese Überprüfungen positiv ausfallen! zFalls euer Rechner schnell genug ist, überprüft auch das VSYNC Timing. Andernfalls prüft wenigstens, ob der Y Zähler einmal pro Zeile zählt.

19 Aufgabe 6.2: Ein schwarzes Testbild zIm Diplomandenraum steht ein zusätzlicher Monitor. zZuhause müßt Ihr ständig umstöpseln, oder euch irgendwoher einen zweiten Monitor besorgen. zLadet die Schaltung in den FPGA, schließt einen Monitor an und steuert gegebenenfalls das Reset Signal an. zDer Monitor sollte nicht pfeifen, kein rollendes Bild zeigen oder rote Warnlampen aufblinken lassen oder sich abschalten. zEs sollte ein stabiles, schwarzes Bild zu sehen sein. zFalls nicht: Schnell Monitor ausschalten und Kontakt zu Till aufnehmen.

20 Aufgabe 6.3: Ein buntes Testbild zIm Diplomandenraum steht ein zusätzlicher Monitor. zBenutzt die obersten Bits des X Zählers, um dem RGB Farbausgang Werte zuzuweisen. Beispielsweise für Streifen Schwarz, Blau, Rot, Lila:  RGB <= H(7) & H(7) & “00“ & H(6) & H(6) zDenkt daran, daß ab Zeile 480 wieder RGB=“000000“ gelten muß. zTestet, ob Ihr die Streifen seht. zGebt die VHDL Dateien für 6.3, den Bitstream für 6.3 und das Simulationsskript aus Aufgabe 6.1 ab bei

21 Nützliche VHDL Infos zUnbedingt zusätzlich die Bibliothek std_logic_unsigned verwenden:  use IEEE.std_logic_unsigned.all zZähler: yif rising_edge(clk) if zaehler < 609 then -- zaehlt von 0 bis 609 = 610 Pixel zaehler <= zaehler + 1; else zaehler <= “ “; end if;

22 Nützliche VHDL Infos zTaktet alle Ausgangssignale in Register. Die 52ns Verzögerung die dadurch entstehen sind egal, wenn alle Signale gleichmäßig verzögert werden. zDies erhöht die mögliche Taktfrequenz, da die externen Signallaufzeiten von den internen getrennt werden. zWer möchte kann auch intern noch mehrere Pipelinestufen einbauen.

23 Aufgabe 6.4: Bilder (Einführung) zWenn man die X- und Y-Zähler als Adressen eines ROMs verwendet, kann man ein Bild darstellen, das in dem ROM gespeichert ist. zWenn man obere Adressbits nicht anschließt, wiederholt sich das Bild mehrmals, wenn man untere nicht anschliest, werden die Bildpunkte größer. zSchließt man z.B. XCOUNT(6 downto 3) und YCOUNT(6 downto 3) an ein ROM mit 8 Adressleitungen, so enthält das Bild 16x16 Bildpunkte, die jeweils 8x8 Pixel auf dem Monitor groß sind. Das Bild kann sich in X-Richtung also 4 mal wiederholen. zMan kann z.B. ein 1-Bit breites ROM verwenden und dann abhängig vom Wert des Bits eine von zwei Farben anzeigen (palette), oder man speichert in einem 6-Bit breiten ROM direkt die Farbe. (direct color)

24 Aufgabe 6.4: Bilder (Einführung) zInsgesamt stehen in dem FPGA 14 BlockROMs mit je 4096 Bits zur Verfügung. zMöglich Aufteilungen sind daher: y2-Farben, 256x196, 12 BlockROMs y4-Farben, 196x128, 12 BlockROMs y8-Farben, 128x128, 12 BlockROMs y64-Farben, 128x64, 12 BlockROMs

25 Aufgabe 6.4: Bilder (Aufgabe) zGeneriert ein ROM, daß die Daten für ein einfaches Bild enthält. (Z.B. zwei diagonale Linien) zDas Bild soll mindestens 16x16 Pixel groß sein. zSucht euch aus, wieviele Farben Ihr haben wollt, und ob Ihr eine Palette oder direct color verwenden wollt. zBaut das ROM so in eure Schaltung ein, daß das Bild auf dem Monitor zu sehen ist. z(Das sollten nur ein paar Drähte sein)

26 Zusatzaufgabe 6 (schwer, nur für gelangweilte Studenten) zDer Prozessor enthält ein DPRAM, daß je einen Port zum PC und zur ALU besitzt. zStatt des Ausgaberegisters kann man dort ein DPRAM einbauen, daß einen Schreib-Port zum Prozessor hat, und einen Leseport zur VGA Grafik zFür die VGA Grafik ersetzt das RAM dann das ROM zDer Prozessor kann jetzt Grafik in das RAM malen. (Probiert mal ein Rechteck zu füllen)


Herunterladen ppt "FPGA Praktikum WS2000/2001 6.Woche: VGA Monitoransteuerung."

Ähnliche Präsentationen


Google-Anzeigen