Forum: FPGA, VHDL & Co. Display Controller mit (C)PLD ohne SRAM


von Benjamin Z. (Firma: neuling) (benjamin-z)


Lesenswert?

Hallo,

habe ein TFT Farbdisplay mit 320x240 Pixel, digital RGB Interface.

Mein Prozessor hat ein serielles Interface (SPI) für die 
Displaykommunikation. Speicherzugriff auf den Arbeitsspreicher des 
Prozessors ist mit DMA organisiert, was ja den Prozessor entlastet, aber 
den Bus trotzdem verstopft.

Jetzt die Frage:
Kann man nicht nur 1 bis 2-mal pro Sekunde ein komplettes Bild an einen 
PLD schicken, der sich zwischen Prozessor und Display befindet und die 
Umsetzung realisiert (Daten konvertieren und Erzeugen der 
Sync/CLK-Signale)? Das würde man den Bus (Arbeitsspeicher <-> Prozessor) 
"sauber" halten und man könnte eine extra grafik-Speicher sparen.

Es gib zwar integrierte Lösungen (beisielsweise von Epson), die sind 
aber sehr teuer.

Wie funktioniert das eigentlich bei Notebooks mit shared memory 
Grafikspeicher.

Danke und gruß,
Benjamin

von Joko (Gast)


Lesenswert?

Hi,

>habe ein TFT Farbdisplay mit 320x240 Pixel, digital RGB Interface.
[..]
>Kann man nicht nur 1 bis 2-mal pro Sekunde ein komplettes Bild an einen
>PLD schicken,

ja - wenn Du mir einen CPLD nennst in welchem Du 320x240x16 Bit (falls 
es 16 Bit pro Pixel sein sollten) = 150 kByte zwischenspeichern kannst:
das TFT nämlich mit jedem V-/H-Sync neue Daten haben - und der VSync 
dürfte im Bereich 50/60 Hz liegen

Gruß
Jochen

von Morin (Gast)


Lesenswert?

Was den Shared Memory angeht kann ich dir leider nicht weiterhelfen. Ich 
vermute mal, dass dafür einfach Speicher genommen wird, der im Mittel 
schnell genug für alle Zugriffe ist (entsprechend schnell muss dann 
natürlich auch der Bus sein).

Die "traditionelle" Variante ist ein separater Speicher, der zwar auch 
am Bus hängt, aber über diesen nur angesprochen wird, wenn sich im Bild 
tatsächlich was ändert. Ansonsten wird dieser Speicher über einen 
weiteren Controller ausgelesen (ohne dabei den Bus zu benutzen), der 
dann die Daten an das Display schiebt.

Der Auslese-Controller kann dann z.B. über ein CPLD realisiert sein. Der 
Graphikspeicher muss entweder ein Dual-Port-Speicher sein (um 
gleichzeitige Zugriffe beim Auslesen und über den Bus zu ermöglichen), 
oder eine extra-Schaltung gibt dem Auslesen Vorrang vor dem Bus, indem 
z.B. der Bus angehalten wird (falls möglich) oder der Zugriff auf 
irgendeine Art als fehlerhaft gemeldet wird und wiederholt wird.

von Benjamin Z. (Firma: neuling) (benjamin-z)


Lesenswert?

@ Joko:

Das Bild soll nicht im CPLD gespeichert werden (da das nicht geht). 
Vielmehr gibt er den seriellen Datenstrom des Prozessors gleich wieder 
raus (also eigentlich seriell zu parallel Converter [Schieberegister]) 
plus Sync-Signale). Ein komplettes Bild wird dann zügig geschrieben, 
aber eben nur ein bis zwei Bilder pro Sekunde, um den Bus zw. Prozessor 
und seinem Arbeitsspeicher frei zu halten.

Meinst das dies funktionieren kann? Kann man zwischen den Schreibzyklen 
das Bild halten (Data Enable Pin off).

von Joko (Gast)


Lesenswert?

@ Morin

>Meinst das dies funktionieren kann? Kann man zwischen den Schreibzyklen> >das 
Bild halten (Data Enable Pin off).

Das wird weniger mir dem "Data Enable Pin" zu tun haben, als vielmehr 
mit der Datenerhaltung in den TFT-Transistoren: je 'besser' diese ihren 
Ladezustand halten können, um so länger bleibt das Bild erhalten.
(Default-Zustand, in den sie zurückstreben, ist 'helles Pixel')

Auch wenn der Bildinhalt sich nicht ändert ,schreiben alle Datenblätter 
von TFTs, die ICH kenne, eine 'Refresh-Rate' von <= 20 ms vor.
Das heiß aber nicht, daß das Bild 'unleserlich' wird - nur daß ggf. die 
Spec. nicht eingehalten wird (was aber i.A. nicht so toll ist)

Gruß
Jochen

von Benedikt K. (benedikt)


Lesenswert?

Benjamin Ziebarth wrote:

> aber eben nur ein bis zwei Bilder pro Sekunde, um den Bus zw. Prozessor
> und seinem Arbeitsspeicher frei zu halten.

Was wird das Display zerstören, da dann DC am LCD anliegt, wenn die 
Signale fehlen und sich so alles zersetzt. Zwar nicht sofort, aber im 
Laufe der Zeit. Zunächst wird das Bild nur einbrennen, was man durch 
längeres Ausschalten mehr oder weniger regenerieren kann.

von Falk B. (falk)


Lesenswert?

@ Benedikt K. (benedikt)

>Was wird das Display zerstören, da dann DC am LCD anliegt, wenn die
>Signale fehlen und sich so alles zersetzt.

TFT mit RGB-Interface != einfaches LCD !!!

MFG
Falk

von Benedikt K. (benedikt)


Lesenswert?

Falk Brunner wrote:

> TFT mit RGB-Interface != einfaches LCD !!!

Ja und ?
Trotzdem ist ein TFT ein LCD, und das geht kaputt wenn eine 
Gleichspannung anliegt. Und genau das passiert, wenn die Ansteuersignale 
fehlen. Aus diesem Grund wird auch eine minimale Vertikalfrequenz 
spezifiziert.

von Benjamin Z. (Firma: neuling) (benjamin-z)


Lesenswert?

Okay, also komme ich um den extra Speicher nicht umhin.

Das Schwierigste ist wahrscheinlich die Speicherorganisation, um 
gleichzeitig lesen und schreiben zu können.

@Morin:
Das mit dem Dual-Port-Speicher klingt sehr interssant; ist aber neu für 
mich.

Ich möchte gerne eine CPLD Lösung von Altera nutzen. Kann mir jemand 
einen geeigneten (=günstigen) Typen empfehlen? und einen geeigneten 
Dual-Port-Speicher? Gibt es ein Eval-Board mit diesem Speicher oder 
speziell für diese Applikation?

von Falk B. (falk)


Lesenswert?

@ Benjamin Ziebarth (Firma neuling) (benjamin-z)

>Okay, also komme ich um den extra Speicher nicht umhin.

Ja.

>Das Schwierigste ist wahrscheinlich die Speicherorganisation, um
>gleichzeitig lesen und schreiben zu können.

Mehr oder weniger.

>Das mit dem Dual-Port-Speicher klingt sehr interssant; ist aber neu für
>mich.

Kann man machen. Allerdings sind Dual Port RAMS schwierig zu bekommen. 
Günstiger ist meist die Verwendung von Standard-RAMs.

>Ich möchte gerne eine CPLD Lösung von Altera nutzen. Kann mir jemand
>einen geeigneten (=günstigen) Typen empfehlen? und einen geeigneten
>Dual-Port-Speicher?

Informiere dich doch erstmal über CPLDs und FPGAs. Dann wirst du 
ernüchtert feststellen, dass ein CPLD keine RAMs hat, ein FPGA sehr 
wohl.

> Gibt es ein Eval-Board mit diesem Speicher oder

Ja. Die meisten FPGA-Boards haben ordentlich Speicher drauf.

> speziell für diese Applikation?

Nein.

MFG
Falk

von Benjamin Z. (Firma: neuling) (benjamin-z)


Lesenswert?

> Informiere dich doch erstmal über CPLDs und FPGAs. Dann wirst du
> ernüchtert feststellen, dass ein CPLD keine RAMs hat, ein FPGA sehr
> wohl.

@ Falk Brunner:

Danke für die Antworten.

Ja, es gibt SRAM basierte FPGA's, z. B. Spartan3AN. Leider brauche ich 
sehr viel Speicher (Farbbild): 320x240 Pixel x (gewünschter) Farbtiefe, 
aber nicht so viele I/O Pins. Große (integrierte) Speicher sind nur in 
großen FPGA's möglich, die zu viele Gatter haben und somit (so meine 
Vermutung) teurer sind als die getrennte Lösung (CPLD plus extra SRAM).

Oder liege ich falsch?

von Morin (Gast)


Lesenswert?

Die meisten FPGAs haben integrierten SRAM, aber wie du schon 
festgestellt hast nicht genug für deine Zwecke (außer den allergrößten 
und teuersten). Also externer RAM.

Von DRAM würd ich dir abraten. Das ist zwar die Profi-Lösung, aber auch 
ziemlich kompliziert: da müssen regelmäßig alle Zellen refreshed werden, 
damit sie ihren Wert nicht verlieren. Das muss dann zeitlich mit den 
anderen Zugriffen gemultiplexed werden, entweder von deinem Controller 
(aufwendig) oder intern vom Speicher (wodurch Zugriffe unbestimmt 
verzögert werden können). Also externer SRAM.

Auch da must du immer noch Buszugriffe und Zugriffe für die Ausgabe 
zeitlich multiplexen. Wenn dein Speicher schnell genug ist, kannst du 
einfach immer abwechselnd je einen Zugriff vom Bus, dann einen für die 
Ausgabe erlauben (setzt voraus dass Bus-Zugriffe vom Bus-Slave um mind. 
1 Clock verzögert werden können). Ansonsten (Speicher zu langsam dafür) 
kannst du Zugriffe vom Bus z.B. nur in den Blank-Pausen (Bildschirmrand) 
durchführen.

von Falk B. (falk)


Lesenswert?

@ Benjamin Ziebarth (Firma neuling) (benjamin-z)

>Ja, es gibt SRAM basierte FPGA's, z. B. Spartan3AN.

;-)
Da verwechselst du was. Die Bezeichung "SRAM-basierend" bedeutet, dass 
der Konfigurationsspeicher aus SRAM besteht, als der Speicher, wo die 
Logik festgelegt wird, die du mal durch dein VHDL beschrieben hast. 
Darauf hat man als Anwender aber keinen Zugriff, wozu auch. Der RAM von 
dem die Rede war sind RAM-Blöcke, die man in seiner Anwenderlogik 
verwenden kann. Die ersten Generatioenen von FPGAs (z.B. die 4000 von 
Xilinx) waren auch SRAM basierend, hatten aber keine RAM-Blöcke (jaja, 
Distributed RAM zählen wir hier mal nicht). Die neuen ala Spartan II/3 
whatever haben grosse RAM-Blöcke. Aber wie bereits gesagt immer noch 
viel zu wenig für ein VGA-Bild.

>Vermutung) teurer sind als die getrennte Lösung (CPLD plus extra SRAM).

Genau.

MFG
Falk

von fanvonzierbarth (Gast)


Lesenswert?

armselig ist das hier...

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.