Forum: FPGA, VHDL & Co. VGA Signale programmieren mit colormap?


von you2 (Gast)


Lesenswert?

Moin.

Ich will VGA Signal generieren und habe auf meinem Entwicklungsboard 
einen Video DAC integriert.
Die Synchron-Sugnale habe ich schon und ich steuere auch den VideoDAc an 
(hoffe auch rihctig) nur passiert nicht viel. Der Bildschirm geht an und 
er wird auch heller, abe man sieht eben kein Testbil (bei mir einfach 
grün) Muss ich denn eine eigene Colormap programmieren? Ich dachte die 
ist im Video DAC enthalten????
HILFE! DANK!

von Benedikt (Gast)


Lesenswert?

Colormap ? Welcher DAC ?
Setzt du auch im HSync/VSync Bereich die Farben auf schwarz, damit der 
Monitor diese als Referenzwert annehmen kann ?

von TheMason (Gast)


Lesenswert?

@you2

ohne meckern zu wollen :

-welches board
-welcher fpga
-welcher dac
-schaltplan zum board
-sourcen
-vhdl/verilog/schematic
-timing
-auflösung

es fehlen zuviele informationen. ums mit anderen worten zu sagen :

- glaskugel in reparatur.

bitte etwas mehr infos. rätselraten solls ja auch nicht sein oder ? :-)

von you2 (Gast)


Lesenswert?

Bei dem VideoDAC haneldt es sich um den ADV7125 von DAnalog Device. Ich 
benutze das Ev. Board ML402 mit einem Virtex 4 XC4VSX35. Ich 
programmiere mit dem dem Xilinx Blockset unter Simulink (Matlab) und 
will ein 640x480 VGA (60Hz) Testbild generieren (einfach grünes Bild).

Hoffe das reicht an Info.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Das ist nur ein dreifach DAC, ohne irgendwelche Farbtabellen.
http://www.analog.com/UploadedFiles/Data_Sheets/ADV7125.pdf
Die einzige Video-Spezialität sind die SYNC und BLANK - Eingänge.
Mit der positiven Taktflanke werden die Daten übernommen, PowerSAVE, 
BLANK und SYNC müssen natürlich den richtigen Pegel haben.

von you2 (Gast)


Lesenswert?

Das Bedeutet jetzt für mich? Muss ich nun eine  Colormap erstellen oder 
was?

von guest (Gast)


Lesenswert?

Nee,

der ADV7125 ist ja nichts anderes als ein 3-fach D/A-Wandler.
Du musst während des sichtbaren Bereiches den D/A-Wandler für
das grüne Signal auf einen Wert setzen und die beiden für das
rote und blaue Farbsignal auf 0.

Gruß

Ralf

von you2 (Gast)


Lesenswert?

DA smache ich ja. Aber woher weiß ich denn wie hoch der Wert sein soll. 
Zur Zeit gebe ich einen 8 Bit Wert für Grün raus (255). R und B sind 0. 
Muss ich jetzt das Ausgangssignal definieren, d.h. in der .XCF Datei 
Parameter hinzufügen?

von Thomas H. (mac4ever)


Lesenswert?

R=0
G=255
B=0
... und du bekommst einen grünen Bildschirm ? Na dann ist doch alles 
i.O. ;)
Grün ist auf Anschlag und die anderen Farben sind auf 0 ... was hättest 
Du anderes erwartet ?

edit: Versuch doch mal zusätzlich R=255 und B=255. Wenn zum Schluss der 
Bildschirm weiß ist, dann hast du grundsätzlich alles richtig verdrahtet 
:)

von you2 (Gast)


Lesenswert?

Mein Problem ist ja noch, dass ich noch keine Farebn sehne kann. Wenn 
ich das mit den RGB Farben richtig verstanden habe, liegen die Werte 
immer zwisceh 0 und 0,7 V. Ich frage mich nur gerade, wie ich diese 
Signale denn generiere? Oder geht das automatisch im VideoDAC.
Ich schicke momentan einfach über festgelegte PINS vom FPGA zum Video 
DAC für RGB jeweils 8 Bit (momentan 0/255/0). Reicht das aus. ich bin 
greade etwas verwirrt!

von Jörg (Gast)


Lesenswert?

Also einfach Grün (oder eine beliebige andere Farbe) zu erzeugen
sollte ja kein Problem sein, einfach die entsprechenden digitalen
Farbeingangssignale setzen (Grün=11111111 Rot=00000000 etc.), eine
LUT-Tabelle gibts bei Deinem DAC nicht.

Falls (wie Du schreibst) überhaupt kein Bild kommt (d.h. kein Grün
siehst), liegt's entweder an Fehlern in Deinen H/V-Sync-Signalen oder
aber die SYNC/BLANK-Signale des DAC werden fehlerhaft generiert.
BLANK/SYNC müssen im XCF-File eingetragen sein.

Gruss

Jörg

von you2 (Gast)


Lesenswert?

Die H_Sync und V_sync habe ich mir am Oszi angeschaut. Sieht für mich 
eigentlich richtig aus. Bei dem ~BLANK und ~SYNC bin ich mir nicht 
sicher. was würde ich denn im UCF oder XCF File als Parameter angeben?
Ich gebe eine "O" aus wenn aus dem Register im FPGA die 8Bit 
rausgeschrieben werden. So hab ich mir das zumindest vorgestellt!
Hat denn jemand zufällig ein bissel Ahnung von diesem ADV 7125?
 Ich steig das im Datenblatt nich so richtig durch!

von Jörg (Gast)


Lesenswert?

U.U. hast Du zwei Probleme:

  1.  H/V-Sync etc. sind nicht richtig
  2.  DAC nicht richtig angesteuert (SYNC/BLANK falsch, Farbe aber 
richtig)

Mache vieleicht folgendes: Dein Board hat sicherlich noch 5 digitale
Ausgänge. Verwende 2 davon für H/V-Sync, die anderen 3 für RGB.
Trage diese in UCF-File ein, verbinde Ausgänge mit VGA-Pins und schau
dann mal, ob ein Bild zu sehen ist (setze für RGB z.B. = 0,1,0). Dann
brauchst Du Dich um Deinen DAC keine sorgen machen. Falls das klappt,
dann kannst Du Dich um den DAC kümmern.

Ach ja (1): H/V-Sync sowie RGB brauchen Widerstand, bei mir H/V-Sync mit
82.5 Ohm, RGB mit 270 Ohm, hängt aber von dein Ausgängen ab!!!!

Ach ja (2): Wenn Du nichts siehst, ist entweder H/V-Sync fehlerhaft oder
Du setzt RGB während der Blank-Phasen nicht auf NULL.

viel Spass

Jörg

von Thomas H. (mac4ever)


Lesenswert?

Jetzt hab ich deinen ersten Post auch verstanden :) Ich hatte es so 
gelesen, als würdest Du einfach nur einen grünes Bild vor dir sehen ... 
mein Fehler

Das mit Signalgenerierung musst Du nicht per Hand machen. Wenn der 
VideoDAC 8Bit Eingänge hat dann heißt das, dass bei "11111111" der 
maximale Wert am Ausgang raus kommt ( also deine 0,7 V).

Wie Jörg schon geschrieben hat, wird es wohl am Timing liegen. Schau Dir 
also mal deinen Text für die Sync-Impulse an. Ich hab mir zwar das 
Datenblatt angeschaut, aber aus Sync und Blank werde ich mit dieser 
Beschreibung auch nicht schlau :(

Ich hab hier was gefunden: 
http://www-mtl.mit.edu/Courses/6.111/labkit/vga.shtml
Die benutzen den selben VideoDAC generieren sich aber HSync und VSnyc 
selber und reichen es am DAC vorbei ...

von you2 (Gast)


Lesenswert?

ICh sende nur RGB Daten während der Display Time nach.
Leider kann ich die VGA Schnittstelle nur über mein VideoDAC ansteuern.

Kannst du mir denn sagen, wie das SYNC und BLANK Signal des VideoDAC 
auszusehen hat? Ich verstehe es nicht richtig im Datenblatt!
PSAVE hab ich solange auf 0 (da low active), solange Daten zum 
Übertragen da sind.

von Jörg (Gast)


Lesenswert?

Soweit ich das Datenblatt verstanden habe (Seite 7 ist wichtig),
brauchst Du am DAC Sync nicht (~Sync <= 0), ist nur bei Kabeln/Monitoren
erforderlich, die Sync über Grün erwarten. Setze auch PSAVE immer
auf 0, Stromsparen ist im Moment ja nicht Dein Problem.

Bleibt nur noch BLANK: Du generierst ja V/H-Sync, hast also Zähler für
X- und Y-Position. Kurz VOR und NACH V/H-Sync=0 (Bild/Zeile startet)
hast Du eine sog. Blank-Phase (Front-Porch und Back-Porch). Während
dieser Phasen (inkl. V/H-Sync=0-Phase) ist BLANK and DAC auf '0' zu
setzen, was die analogen RGB-Ausgänge am DAC auf Blank-Level setzt 
(Farbe=Schwarz), sonst auf '1'. Die RGB-Werte kannst Du die ganze Zeit
auf z.B. 0,255,0 (=Grün) setzen (BLANK zieht Signale während Porch-Phase 
automatisch auf Schwarz), dann müsste eigentlich ein Bild zu sehen sein.

Gruss

Jörg

von Umberto (Gast)


Lesenswert?

Meine Schande! Hat der Kerl schon einen DAC und kriegt trotzdem keine 
Farben hin. Unser eins muss Farben multiplexen, um Zwsichenwerte zu 
kriegen.

von you2 (Gast)


Lesenswert?

Danke Jörg. Wred das gleich mal so anpassen. nur noch eine kurze Frage:
Wenn BLANK, PSAVE und SYNC LOW active sind, muss ich die dann nicht 
eigentlich auf "1" setzen, damit diese nicht aktiv sind???
Und ncoh mal kurz eine Frage:
Ich generiere mit dem H_Timing Generator (VHDL) ebenfalls die VGA_CLK. 
Diese ist bei mir dann 25 MHz. Jetzt steht im Datenblatt keine genaue 
angabe zur CLK sondern nur eine Besipielrechnung für ein Bild mit eienr 
1024x1024 Auflösung: Dot Rate = (Hriz. Res.)x(vert. Res.)x(Refresh 
Rate)/ (Retrace Faktor). Für den "Retrace Factor" haben die 0.8, warum 
auch immer.Wenn ich das jetzt alles für meine Auflösung berechne 
(640x480) dann bekomme ich eine CLK Rate von 23.,04 MHz. Also 2MHz 
geringer als die von mir verwendete.
Könnte da eventuell auch ein Problem entstehen????

DANKE

von Mathi (Gast)


Lesenswert?

Für 640x480 bei 60Hz legt VESA nach VDMT einen Pixeltakt von 25,175MHz 
fest. Also bist Du recht nah dran. Du musst aber sicherlich trotzdem die 
Pixel pro Zeile leicht anpassen. Falls Du das genauer wissen willst, bei 
der VESA kann man ein Excelsheet zur Berechnung von Bildparametern 
herunterladen.

von lkmiller (Gast)


Lesenswert?

Wir haben heute sogenannte Multisync-Monitore, die so fast alles 
darstellen können, was einen H-Sync und einen V-Sync generiert (und 
darüberhinaus noch einige Signale, wo der eine oder der andere oder 
beide fehlen).

Da geht es nicht um 2MHz hin- oder her.
Und der Pixeltakt an sich wird sowieso nicht übertragen.


>
> nur noch eine kurze Frage:
> Wenn BLANK, PSAVE und SYNC LOW active sind, muss ich die dann nicht
> eigentlich auf "1" setzen, damit diese nicht aktiv sind???
>
Probier das doch einfach aus, du hast doch ein Oszi.

von Jörg (Gast)


Lesenswert?

Sorry, mein Fehler: PSAVE,SYNC sind LowActive, müssen also gleich '1'
gesetzt werden, BLANK ist auch LowActive, wird also im "sichtbaren"
Bereich auf '0', im "blanken" Bereich auf '1' gesetzt.

Schau Dir mal folgendes Beispiel an (fast Unten, 640 X 480):

  http://www.derepas.com/fabrice/hard

kein Vorzeigecode, funktioniert aber und muss nur noch an den DAC
angepasst werden.
Wenn Du nun 1024x1024 haben möchtest, reichen 25MHz nicht aus, ist
aber auch keine Standard-Auflösung (glaube ich zumindestens).
VGA-Monitore sind aber sehr tolerant bzgl. Frequenzen und Auflösungen
(vorsicht aber bei zu hohen Frequenzen => 
Kernschmelze,Monitoruntergang).

Gruss

Jörg

von Rene B. (themason) Benutzerseite


Lesenswert?

@you2

ich weiß zwar nicht obs schon geschrieben worden ist, aber das grün beim 
sync brauchst du nur wenn die auflösung/der monitor ein sync-on-green 
braucht.
bei der std auflösung von 640x480 bzw 640x400 braucht man das wohl 
nicht.
es gibt da unter elektronik-kompendium bzw. elektronik-werkstatt eine 
auflistung mit den gängigsten auflösungen sowie deren timing. weiterhin 
steht da auch noch drin ob du das sync-on-green brauchst.
müsste den link mal raussuchen.

von you2 (Gast)


Lesenswert?

Vielen Dank für Euro HIlfe!

Es hat endlich geklappt. Der Fehler lag in der VGA Clock. Die habe ich 
wohl nicht richtig generiert. aber jetz geht es!

DANKE!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.