|
|
Projekt VGA Core in VHDLvon J.S. Ein einfacher VGA-Core in VHDL zur Implementierung in eigene designs zwecks direkter Ausgabe digital repräsentierter Analogsignale.
[Bearbeiten] MotivationOftmals besteht die Notwendigkeit, eine grössere Zahl sich schnell ändernde Signale innerhalb eines FPGA-Designs visuell darzustellen, hat aber nicht die Möglichkeit, eine ausreichend schnelle Schnittstelle zu implementieren und zu nutzen. Änderungen an FFT-Daten oder Bilddaten, parallele Signalwege mehrere AD-Eingänge können vom Auge mit bis zu 20 Bildern je Sekunde erfasst werden und erforderten grosse Datenraten zu einem PC hin sowie weitere Auswertesoftware. Mit einer direkten Ausgabe kann der Aufwand vereinfacht- und Hürden, wie Latenz bei PCs und Bandbreite oder Kanalbreite bei Oszilloskopen überwunden werden. Für die Beobachtung von flächenförmigen Datenanordnungen wie Registerbänken oder sporadischen Fehlern bieten sich Datenfelder mit Markierungen und Farbwerten an, die man als Matrix darstellt. [Bearbeiten] SignalerzeugungJe nach gewünschter Auflösung ist ein bestimmtes Videotiming einzuhalten. [Bearbeiten] Tabelle[Bearbeiten] Links[Bearbeiten] Datenspeicherung[Bearbeiten] unbufferedDie Daten werden idealerweise zum Zeitpunkt der Entstehung ausgegeben. Damit entfällt eine aufwändige Pufferung oder ein Video-RAM. [Bearbeiten] bufferedWenn Systemtakt und H-Frequenz nicht zusammenpassen oder Daten nicht permanent periodisch anfallen, reicht für die Daten ein asynchrones FIFO, das maximal einmalig je Bild beschrieben- und durch den H-Takt ausgelesen wird. [Bearbeiten] Ausgabe[Bearbeiten] 1-Bit VersionHier erfolgt die Ausgabe digital, also nur mit einem Bit je Farbkanal. Es werden 5 Leitungen benötigt. Damit sind 7 Farben und Schwarz darstellbar. Wie man trotzdem mehr Farben bekommt, wird im Projekt unten dargestellt. [Bearbeiten] Mehrbit-VersionHier erfolgt die Ausgabe ebenfalls digital, allerdings mit mehreren Bits je Farbkanal. Es werden damit 3 x n + 2 Leitungen benötigt. Zur Anwendung kommt ein Widerstandsnetzwerk vom Typ R-2R, wie es z.B. auf dem Spartan 3A board von Digilent / Trenz realisiert ist. Die Widerstände bilden in Zusammenwirkung mit den Terminierungswiderständen und der Leitungsimpedanz einen Spannungsteiler. [Bearbeiten] DAC - VersionHier wird der Farbwert je Kanal an einen Video-DAC übertragen [Bearbeiten] ApplikationsbeispieleNachfolgend befinden sich einige von usern bereitgestellte fertig synthetisierte files zum Laden in den jeweiligen FPGA. Wer das Projekt auf seine Plattform portiert, bitte das file auch einstellen. [Bearbeiten] Spartan 3E[Bearbeiten] Board-BeschreibungDer core muss an folgende Eigenheiten des boards angepasst werden: Das board läuft mit 50MHz Quarz, besitzt nur einen 1-Bit-Anschluss je VGA-Farbe und wird daher interlaced (s.u.). Es werden die 4 Input buttons verwendet, von denen einer als Reset fungiert. Dieser wurde auf den Drehencoder umgemappt. Wichtig für das S3E: Die Steuerleitungen für das Flash müssen gfs. programmiert werden. Siehe Projekt. Ansonsten wird nichts verwendet. Das Laden geht über das Platform-Flash (embedded JTAG Adapter). [Bearbeiten] Testbildgenerator 800x600 (J.S.)Testbildgenerator für das Spartan 3E-board von digilent: Vga test.bit Das Spartan 3E-board wird mit einem 3-Bit Anschluss betrieben, womit eigentlich nur 7 Farben möglich wären. Im Beispieldesign werden jeweils 2 benachbarte Farben im Spektrum multiplext, z.B. Rot und Gelb zu Orange oder Blau und Schwarz zu Dunkelblau. So entstehen etwa 30 verschiedene, nutzbare Farben. Das Multiplexen wird mit einem selbstschwingenden Takt bewerkstelligt. Genaueres dazu im Projekt oder hier: Farbmultiplexfunktion (Stand 2007) Zusätzlich bewegt sich ein Cursor/Ball durchs Bild, um zu zeigen, wie man selektiv Objekte einblenden kann. In ähnlicher Weise liesse sich ein Oszilloskop realisieren. Das Bild entspricht exakt der Ausgabe der Version im folgenden ISE-Projekt: Jsvgademo s3e.zip [Bearbeiten] VGA-Oszilloskop mit FFT 1280x1024(J.S.)Das file Datei:Jsoscvgacore1280 s3e.bit demonstriert ein VGA-Oszilloskop, einen IIR-Filter eine FFT und die Echtzeitausgabe entlang von x und y. Es erzeugt eine Wellenform, filtert diese in 2 Stufen und stellt sie im bekannten 10x8 Raster dar. Die hierfür gewählte Auflösung beträgt gegenüber der VGA-Demo 1280x1024, da diese einfach in das typische Oszi-Raster mit jeweils 128 Punkten passt. Aufgrund der Echtzeitausgabe wird kein Video-RAM benötigt. Die Wellen werden als Punkte (gelb) und Linien (violett) dargestellt. Ferner schaltet die Demo selbsttätig die Filtereingänge (gelb / violett) auf einen FFT-Core, dessen scan-Bereich und Ausgang in der jeweiligen Farbe angezeigt wird. Das Umschalten erfolgt mit jedem Überlauf der Bildzählers. Das Design ist absichtlich auf ein file zusammenkopiert und trennt nur zwischen Signal-Generator und Video-Mixer. Dieser kann entfallen, wenn man keine interlacten Farben haben möchte oder braucht. Leider lässt der begrenzte Platz im S3E keine erweiterten Funktionen wie Zoom etc zu. Bereits die FFT musste in der Amplituuden-Auflösung reduziert werden. Das Projekt kommt noch. Eigene Module können eingehängt werden, indem man sich auf die bereitgestellten Video-X und Video-Y Koordinaten bezieht und die Latenzen, die bei einer umständlicheren Berechung entstehen, anpasst. Die Latenz beträgt derzeit je nach Implementierung 2-3 Takte. Wichtig: Das Design nutzt zwei verkette DCMs, um auf die "krumme" Frequenz von 135MHz zu kommen, die für die Darstellung nötig ist. Trotz der hohen Frequenz und analoger Verbindung ist das Bild relativ scharf. Getestet wurde mit 2 TFT-Monitoren, die beide etwas brauchen, bis sie sich auf das Bild zentriert haben. Bei Monitoren, welche die Wiederholrate von 75Hz nicht können, wäre gfs der geringere Modus mit 70Hz machbar. Dazu sind dann 108MHz Horizontaltakt nötig. [Bearbeiten] Logic Analyzer[Bearbeiten] Spektrum Analyzer[Bearbeiten] Spartan 3Atodo [Bearbeiten] Altera Cyclone IV DE-115 (Terasic)Das C4 board von Terasic ist ein ideales board mit allem drauf, was für professionelle Anwendungen nötig ist. Es wird zusammen mit einem extension board verwendet, das ADCs und DACs sowie weitere Audio-In-Outs zur Verfügung stellt. Es ist vollständig mit der freien Webedition programmierbar und kommt zudem mit einer System-Builder-Software. Ein Video-DAC mit hoher Analoggüte ist integriert. Wenn das nicht reicht, kann über die SAMTEC-Stecker ein third party DVI-Video-Board angeschlossen werden. MainBoard:
Extension Board:
[Bearbeiten] Wellenformgenerator nach LaPlaceBildung eines Kreises durch sinusförmige Grundwelle und einigen sinusförmigen Oberwellen nach LaPlace/Fourier. Das System produziert bis zum 20MHz + 7 Oberwellen bis zu 160MHz. Ein Funktionsgenerator mit FPGA [Bearbeiten] Relevante Beiträge
[Bearbeiten] Projekte |