Forum: FPGA, VHDL & Co. VGA Controller VHDL Speicheranbindung


von Manuel S. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich benötige für ein Projekt einen VGA Controller mit einer Auflösung 
von 800x600 im sichtbaren Bereich. Dazu habe ich die VHDL Datei im 
Anhang gefunden.

Mit Xilinx ISE Schematic Editor und ISim komme ich mittlerweile soweit 
klar, habe mit VHDL aber keine Erfahrung.
CPLD soll ein XC95144XL werden.

Mein Problem liegt nun in der effizienten Anbindung eines SRAMs.
Theoretisch werden 480k Adressen benötigt also käme ein SRAM mit 512k 
Adressen in Frage. Die Auflösung soll 16Bit betragen.

Der VGA Controller hat nun 2 Zähler:

Hcount 11Bit - 1. sichtbare Pixel Adresse = 0d0000 - bis 0d1056 (ende 
Backporch)

Vcount 11Bit - 1. Zeile Adresse = 0d0000 - bis 0d0605 (ende Vsync)

Ich könnte nun beide Busse nebeneinander zum SRAM führen, hätte aber 
dann eine Breite von 21Bit. Ein SRAM mit 32Mbit ist aber um einiges 
teurer als ein 8Mbit.

Wie kann ich das Problem lösen?
Adressbus = (Hcount<800)*((Vcount<600)+1)?

Viele Grüße
Manuel

von Duke Scarring (Gast)


Lesenswert?

Manuel S. schrieb:
> CPLD soll ein XC95144XL werden.
Das könnte knapp werden. Hast Du schonmal versucht das Ganze zu 
synthetisieren?

Manuel S. schrieb:
> Der VGA Controller hat nun 2 Zähler:
Dann mach noch einen dritten Zähler. Den mußt Du mit Hsync zurücksetzten 
und der wird nur incrementiert, wenn Du im sichtbaren Bereich bist.

Duke

P.S.: Mach Dir eine Testbench dazu, da kannst Du das Signalspiel schön 
sehen.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Manuel S. schrieb:
> Hallo,
>
> ich benötige für ein Projekt einen VGA Controller mit einer Auflösung
> von 800x600 im sichtbaren Bereich. Dazu habe ich die VHDL Datei im
> Anhang gefunden.
>

Willst du Text darstellen oder Grafik?

Wenn du nur Text darstellen willst, kommst du sogar mit weniger Speicher 
aus.

Ein VGA Timing Datei mit Testbench habe ich auch ins Netz gehangen. Das 
ist immer wieder der gleiche Spaß.
Die Pixelfrequenz muss stimmen.Zwei Zähler für die Zeilen- und 
Spaltenposition.



http://www.dossmatik.de/ghdl/tb_vga.vhd
http://www.dossmatik.de/ghdl/vga640_480.vhd

Hier kannst du in dem Bild auf der Titelseite sehen was dann rauskommt.
http://www.dossmatik.de/ghdl/ghdl_unisim.pdf

von Manuel S. (Gast)


Angehängte Dateien:

Lesenswert?

Ich möchte Grafik und Texte darstellen. Ein STM32 soll die Daten ins Ram 
schreiben. Eventuell würden auch 640x480 reichen.

Um in die ganze Sache herein zu kommen habe ich mir das Projekt von 
U.Radig angesehen, allerdings hat das nur 256 Spalten und 512 Zeilen, 
wovon je 2 gleich sind und auch nicht alles im sichtbaren Bereich liegt.
Ein XC95144XL sollte reichen.

Einzigstes Problem liegt in der Ram Adressierung.
Habe mal einen 3. Zähler angehangen, was soweit zu funktionieren 
scheint, nur springt der in der Simulation unerklärlicherweise immer an 
der gleichen Stelle auf 0 ohne Clear Signal.

von Manuel S. (Gast)


Lesenswert?

Fehler gefunden. Das AND für CLR muss 5 Kanäle haben für die Signale 
vcount2,4,5,6,9
Dumm, dass man den kurzen Impuls im Simulator nicht sieht.

Hat jemand vielleicht noch eine bessere Idee zur Adressierung?

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.