Forum: Mikrocontroller und Digitale Elektronik Hitachi SX14Q004 Farben


von Matt (Gast)


Lesenswert?

Hallo Leute,

Ich möchte das Hitachi SX14Q004 STN Panel(resistance type) mit einem 
FPGA(Spartan 3A) ansteuern.

Datenblatt:
[http://docs-europe.electrocomponents.com/webdocs/0784/0900766b80784957.pdf]

Dieses Display hat eine Auflösung von 320(960 RGB)x240
So wie ich das Datblatt verstanden habe, kann man nur 8 Farben 
darstellen.
Das wäre für eine Videoaufnahme etwas sehr wenig.
Allerdings bin ich ein neuling in digitaler Videotechnick.

Ich habe im Forum schon nach ähnlichen Beiträgen gesucht, aber nichts 
gefunden was mein Problem behandelt.

Wenn man T = 55us wählt kann man mit 75fps arbeiten.
Ich habe einen Videoinput mit 25fps, dass bedeutet ich sende einfach 
drei bilder und bekomme so 512 Farben. Da ich immer vom MSB weg runter 
gehe.

Würde das so funktionieren??

Danke für eure Hilfe, schon im Vorraus

von Benedikt K. (benedikt)


Lesenswert?

Matt wrote:

> So wie ich das Datblatt verstanden habe, kann man nur 8 Farben
> darstellen.

Ja.

> Wenn man T = 55us wählt kann man mit 75fps arbeiten.

Ich würde auf 100Hz oder 125Hz gehen.

> Ich habe einen Videoinput mit 25fps,

Wenn das PAL ist, dann hast du 50Hz mit 2 Halbbildern.

> dass bedeutet ich sende einfach drei bilder und bekomme so 512 Farben. Da ich 
immer vom MSB weg runter gehe.

Du willst also die Bits binär nacheinander senden? Das geht so nicht.
Mit 3 Bildern kannst du 4 Zustände pro Farbe darstellen, nämlich 0/3, 
1/3, 2/3 und 3/3. Das macht 2bit pro Farbe, also 64bit insgesamt.
Du brauchst im Prinzip eine PWM, die in jedem Bild erhöht wird. Und mit 
diesem PWM Wert vergleichst du deine Farbinformationen.
Wenn das LCD mit einer höheren Framerate als das Videosignal läuft, dann 
musst du das Bild zwischenspeichern. Bei 4bpp wären das 300kBit. Könnte 
vom Blockram her bei einem kleineren FPGA knapp werden. Notfalls halt 
externes RAM.
Um mehr Farben zu bekommen musst du entweder mehr PWM Stufen machen. Da 
dadurch aber die effektive Framerate reduziert wird, ist hier iregenwann 
Schluss. Daher verwendet man meist noch ein Dithering um Pseudofarben zu 
erzeugen.

PS: Keine Ahnung ob die das beim SX14Q004 behoben haben, aber das 
SX14Q001 ist extrem empfindlich auf der CL1 Leitung. Wenn da auch nur 
der kleinste Überschwinger drauf ist, macht das LCD irgendeinen Mist.

von Matt (Gast)


Lesenswert?

Erstmal danke für die rasche antwort.
Also ich glaub ich hab das vorhin etwas ungenau beschrieben.

Genauer: Ich bekomme von einem Videodecoder (ADV7183B) alle 37ns 
(13,5MHz)
drei 8-bit vectoren (RGB), also eine Farbtiefe von 24bpp.
Ich möchte mir von allen dreien(RGB), natürlich von allen in einer Zeile 
und einem Frame, das MSB nehmen und ausgeben, danach nehme ich das 
nächste bit usw..

Das bedeutet in Summe(25fps) 9bit R(2:0), G(2:0), B(2:0)

dadurch gebe ich mit 75fps meine drei Bilder aus, jedoch wird es für das 
Auge wie ein 25fps Bild mit 512 Farbne wircken. So hab ich mir das 
vorgestellt. Liege ich da völlig falsch?

von Matt (Gast)


Lesenswert?

Aja hab was vergessen: kannst du mir irgendeinen link oder so schicken, 
wo dithering genauer beschr. ist, oder tutorials. Darüber hab ich schon 
gelesen, allerdings nichts detailierteres gefunden.

von Benedikt K. (benedikt)


Lesenswert?

Matt wrote:

> Das bedeutet in Summe(25fps)

Wie zuvor schon geschrieben: Es sind 50fps.


> dadurch gebe ich mit 75fps meine drei Bilder aus, jedoch wird es für das
> Auge wie ein 25fps Bild mit 512 Farbne wircken. So hab ich mir das
> vorgestellt. Liege ich da völlig falsch?

Ja, du liegst falsch.
Ein Beispiel:
Bitmuster 110 = 2/3, Bitmuster 011 = 2/3. Auf dem LCD ergibt das die 
gleiche Farbe, aber 110 ist heller als 011.

Matt wrote:
> Aja hab was vergessen: kannst du mir irgendeinen link oder so schicken,
> wo dithering genauer beschr. ist, oder tutorials.

Kenne ich jetzt auswendig keine. Ordentlich macht man es z.B. so:
http://de.wikipedia.org/wiki/Floyd-Steinberg-Algorithmus

Quick&Dirty ist viel einfacher:
Die 2 höchstwertigen Bits werden für die Graustufen mit PWM genutzt.
Die nächsten z.B. 2bits für Dithering. Diesen Wert rundet man zur 
nächsthöheren oder nächstniedrigeren PWM Stufe. Den Fehler der durch das 
Runden entsteht, addiert man auf und addiert dazu den nächsten Pixel. 
Das führt dazu, dass im Mittel über eine Zeile mehr Zwischenwerte 
erzeugt werden, da ein Pixel mal auf und der danebenliegende abgerundet 
werden.

von Matt (Gast)


Lesenswert?

aso, jetzt verstehe ich das mit den 2bit von vorhin.
das mit den 50fps ist mir schon klar, nur kann ich nicht ganze Bilder 
ausgeben. Muss ich unbedingt zuerst alle odd und dann alle even 
ausgeben?

Wenn nicht kann ich das mit den 3 bildern sowieso vergessen.

Also würdest du mir dithering empfehlen, es sieht so aus als bliebe mir 
nichts anderes übrig.

danke

von Benedikt K. (benedikt)


Lesenswert?

Matt wrote:

> das mit den 50fps ist mir schon klar, nur kann ich nicht ganze Bilder
> ausgeben. Muss ich unbedingt zuerst alle odd und dann alle even
> ausgeben?

Du kannst entweder abwechselnd ODD und EVEN ausgeben, oder du kannst 
auch nur eines von beiden verwenden. Das ist im Grunde egal, da das LCD 
sowieso nur etwa die halbe Auflösung hat als das Eingangssignal.
Da 50Hz auch zu wenig sind, sollte man das Bild auf jedenfall 
zwischenspeichern, und dabei kann man ja auswählen welche Halbbilder man 
speichert.

> Also würdest du mir dithering empfehlen, es sieht so aus als bliebe mir
> nichts anderes übrig.

Empfehlen ist relativ. Sowohl PWM als auch Dithering sind beide nicht 
perfekt, je nachdem wie sehr bewegt die Bilder sind, kann es sein, dass 
Dithering sinnvoller ist, als bei stehenden Bildern. In der Praxis 
verwendet man meist eine Kombination aus beiden. Die größeren Controller 
verwenden meist 16 Stufen PWM und 4 Stufen Dithering. Ich habe mit 8 
Stufen PWM + 8 Stufen Dithering gute Erfahrungen gemacht. PWM oder 
Dithering alleine ist nur bei wenigen Farbstufen sinnvoll.

von Matt (Gast)


Lesenswert?

ok, dann verusche ichs auch mit beidem. Muss mich da allerdings noch 
einarbeiten.

Danke für deine Hilfe

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.