Forum: FPGA, VHDL & Co. Grundlagenfrage: Grafikspeicher


von Peter Reither (Gast)


Lesenswert?

Hallo,

beim (noch konzeptionellen, theoretischen) Design einer FPGA-basierten 
Schaltung stehe ich vor einem konzeptionellen Problem: Ich möchte 
externen RAM als Grafikspeicher verwenden. Mittels FPGA bilde ich zwei 
Komponenten ab, ein System welches den Grafikspeicher füllt, und eine 
Grafikeinheit, die die Signale auf ein LCD überträgt. Da die Übertragung 
zum Display (auf Grund der Beschränkungen des entsprechenden Controllers 
und der seriellen Schnittstelle) sehr langsam ist, möchte ich den 
Lesevorgang der Grafikeinheit nicht unterbrechen, während gerade von der 
anderen Einheit geschrieben oder gelesen wird.

Habt ihr eine Idee wie ich das am sinnvollsten realisieren kann? Mir 
schwebt beispielsweise ein vorgeschalteter Puffer vor, der bei sinkender 
Taktflanke in den Speicher übernommen wird, jedoch stelle ich mir das 
für die Lesevorgänge als Schwierig vor. Außerdem hat der Baustein nur 
eine Adress- und Datenleitung... Irgendwie komme ich hier nicht weiter.

Ein weiterer Punkt: Das Display kann auch partiell aktualisiert werden, 
es muss also nicht immer der komplette Bildschirminhalt übertragen 
werden. Dazu habe ich mir überlegt die beschriebenen Bereiche irgendwie 
zu flaggen, damit nur die Übertragen werden. Habt ihr dafür einen 
Ansatz, oder eine bessere Idee?

Danke im Voraus!

von Stefan Noack (Gast)


Lesenswert?

Ein dual-port RAM könnte die Lösung sein.

von Peter Reither (Gast)


Lesenswert?

Funktioniert aber nur mit teuren Bausteinen oder Block-RAM, oder?

von Duke Scarring (Gast)


Lesenswert?

Peter Reither schrieb:
> Dazu habe ich mir überlegt die beschriebenen Bereiche irgendwie
> zu flaggen, damit nur die Übertragen werden. Habt ihr dafür einen
> Ansatz, oder eine bessere Idee?
Der Ansatz klingt doch gut: ein tag/ flag für die zu übertragenden 
Bildschirmzeilen und eine State Machine die alle Nase lang mal 
nachschaut und die Übertragung anwirft.

Duke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter Reither schrieb:
> Mir schwebt beispielsweise ein vorgeschalteter Puffer vor, der
> bei sinkender Taktflanke in den Speicher übernommen wird
Du bist da viel zu nah dran an den Bäumen und siehst so den Wald nicht 
mehr...

Es ist eigentlich ganz einfach: du brauchst von 2 Seiten aus Zugriff auf 
1 RAM. Das kannst du jetzt realisieren, indem du
1. gleichzeitig drauf zugreifst (DP-RAM)  oder
2. nacheinander drauf zugreifst (Multiplexer)
Die meisten machen es auf die Variante 2, weil genügend schnelles 
single-Port RAM viel billiger ist, als genügend großese Dual-Port RAM.

Also brauchst du einfach "nur" ein doppelt so schnelles RAM, bei dem du 
in der ersten Hälfte eines "Zyklus" (Pixel, Zeile, Tupel...) die Daten 
für das Display ausliest, und in der zweiten Hälfte evtl. anstehende 
Daten hineinschreibst.

Peter Reither schrieb:
> Das Display kann auch partiell aktualisiert werden,
Nenn doch einfach mal Ross&Reiter:
Was ist denn das KONKRET für ein Display?
Hat das Display selber schon "Intelligenz" (Verwaltung, Speicher...)?
Und wenn du schon dabei bist: welches RAM? Wie groß?
Und auch: welches FPGA?

von Fitzebutze (Gast)


Lesenswert?

Moin,

vielleicht sollte man erst mal folgende Weichen stellen:

1) Display hat selbst Memory
   a) Blit-Buffer Befehle verfügbar? Dann kann Block-RAM genutzt werden.
   b) Wenn nicht: RAM-Typ und Geschwindigkeit relativ egal.
2) Display hat kein adressierbares Memory, muss synchron refresht werden
   a) Statisches RAM: Simpel
   b) DDR o. SDRAM: Eher komplex, Zeilencache für Burst-Transfers nötig.


Zu 1)a) gibt es hier ein Beispiel, da wird über eine Soft-CPU ein 
simples TFT angesteuert: http://tech.section5.ch/news/?p=251
Von 2)b) würde ich wegen der Komplexität eher abraten.

von Duke Scarring (Gast)


Lesenswert?

Fitzebutze schrieb:
> Von 2)b) würde ich wegen der Komplexität eher abraten.
Das ist im SVGA-Core der grlib realisiert. Allerdings braucht man dann 
auch die entsprechende Busbandbreite. Gerade bei höher Auflösung  mit 
hoher Farbtiefe kann es eng werden.

Duke

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.