Forum: FPGA, VHDL & Co. S-Video Signal auf LCD


von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Hi,

ich bin gerade am Überlegen, ob ich versuche folgendes Projekt zu 
realisieren. Und zwar möchte ich ein S-Video Signal digitalisieren (z.B. 
mit TVP5150AM1 von TI) und danach das digitalisierte Bild mit Hilfe 
eines FPGAs (Deinterlacing und Scaling) auf einem LCD Display ausgeben 
(z.B. auf Sony PSP TFT).
Gesteuert wird das ganze dann vielleicht noch von einem kleinen 
Mikrocontroller, der irgendwelche Parameter setzen kann (z.B. Auflösung 
oder dergleichen).

Hat in diese Richtung schon jemand Erfahrung?? Von der Video 
Digitalisierung hab ich momentan eher wenig Ahnung... meine Erfahrungen 
beschränken sich  eher auf die Hardware-Synthese in Xilinx FPGAs. Hat 
wer irgendwelche guten Tipps bezüglich Algorithmen betreffend dem 
Deinterlacing und Scaling! Ich denke, dass vorallem der notwendige 
Speicher hier ausschlaggebend sein wird!?
Wenn jemand sowas in die Richtung schon gemacht hat... wie 
groß/leistungsfähig muss der FPGA in etwa sein (grobe Schätzung)?!

Danke euch,
Andreas

von Gast (Gast)


Lesenswert?

Mit S-Video meinst du Luminanz und Chrominanz getrennt als 2 Signale, 
oder?

Das Problem dürfte die Demodulierung der Farbe werden, da sie in 
Quadraturamplitudenmodulierter Form vorliegt, d.h. zwei 
Amplitudenmodulierte Sinusschwingungen (B-G, R-G), die zueinander um 90° 
Phasenverschoben sind und zu einem Signal addiert wurden.

Den Aufwand für eine Demodulation weiß ich nicht ...

Aber ein *En*coder passt in einen 200k-FPGA schon rein ...

Grüße
Gast

von Benedikt K. (benedikt)


Lesenswert?

Das möchte er ja mit einem externen IC machen. Der TVP5150 liefert dann 
YUV als 8bit YUYV Stream mit 27MByte/s.

Ohne das Deinterlacing und Scaling passt das ganze in den kleinsten FPGA 
den es gibt. Je nach Intelligenz des Deinterlacers kann man aber auch 
problemlos größere FPGAs voll bekommen.

von Kest (Gast)


Lesenswert?

Alles hängt davon ab, welche Interpolations-Algos Du für Deinterlacing 
und Scaling brauchst. Wenn Du z.B. bilineare Interpolation nimmst, dann 
brauchst Du eigentlich nur 2 Zeilen im Speicher (ausrechnen kannst Du ja 
selber, wieviel das an Blockrams ist)

Skalieren ist dann etwas komplizierter, aber eigentlich auch nicht, wenn 
man das schon mal gemacht hat. Wenn Du noch nie was damit zu tun gehabt 
hast, dann wähle das FPGA nicht zu klein. Abschätzen kann ich jetzt 
spontan nicht, aber Du brauchst Zeilenspeicher!

Ich habe beides schon gemacht und kann sagen, dass Deinterlacer ruhig 
"dumm" sein kann ;-) Einfache Interpolation der Zeilen reicht für viele 
Anwendungen völlig aus! Motioncompensation versuch erst gar nicht ;-)

Grüße,
Kest

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Hi,

sorry, dass ich mich etwas länger nicht zu Wort gemeldet hab. Schonmal 
ganz herzlichen Dank für die Antworten.

Also... hab mir jetzt noch etwas genauer das ganze überlegt. Hab ja 
bereits geschrieben, dass ich gerne ein Playstation Portable Display für 
die Anzeige verwenden würde. Dafür wäre das Scaling und Deinterlacing 
eigentlich relativ einfach.
Das PSP LCD hat eine Auflösung von 480x272 Pixel. Das S-Video Signal hat 
720x576 Pixel (bzw. die Halbbilder dann 720x288px). D.h. vertikal würde 
mir das Halbbild schon ganz gut für das Display passen. Die 16 Pixel, 
die im Halbbild zuviel sind, könnt ich fürs erste auch einfach 
weglassen. Und horizontal wärs im einfachsten Fall so, dass ich jedes 
dritte Pixel auslasse.

Soweit so gut. Das Problem, das ich nun sehe ist, dass über S-Video die 
Halbbilder mit 50 Hz reinkommen und das LCD aber typisch mit 60Hz die 
Bilder wiedergeben will. D.h. mir werden irgendwann die Daten zum 
Ausgeben zu wenig werden und das Bild passt nicht mehr.
* Abhilfe: entsprechender Speicher dazwischen um zumindest 2 Bilder 
zwischenzuspeichern.
* Problem: bei 3 Byte RGB und 720x576px sind das 1,2 MB pro Bild. 
Sinnvoll wäre also eine SDRAM. Nur dafür brauchts dann auch wieder einen 
Memory Controller... STOPP... also das muss einfacher gehen, oder?! 
Vielleicht ein Display mit 50Hz nehmen!? Hat schonmal wer versucht das 
PSP LCD mit 50Hz anzusteuern?

BTW. da über S-Video eigentlich nur ein Menü dargestellt wird, ist die 
zeitliche Abfolge in meinem Fall nicht so kritisch. Aber wenn das ganze 
ein Video wäre, dann würde für die Wiedergabe mit 60 Hz ja auch noch 
eine Interpolation zwischen den Bildern notwendig sein, damit die 
Bewegungen nicht verfälscht werden, oder??

mfg
Andreas

von Benedikt K. (benedikt)


Lesenswert?

Andreas Auer schrieb:
> Das PSP LCD hat eine Auflösung von 480x272 Pixel. Das S-Video Signal hat
> 720x576 Pixel (bzw. die Halbbilder dann 720x288px). D.h. vertikal würde
> mir das Halbbild schon ganz gut für das Display passen. Die 16 Pixel,
> die im Halbbild zuviel sind, könnt ich fürs erste auch einfach
> weglassen. Und horizontal wärs im einfachsten Fall so, dass ich jedes
> dritte Pixel auslasse.

Das Display hat 16:9, das TV Bild 4:3. Sieht nicht gut aus wenn alles 
verzerrt ist, funktioniert aber.

> Soweit so gut. Das Problem, das ich nun sehe ist, dass über S-Video die
> Halbbilder mit 50 Hz reinkommen und das LCD aber typisch mit 60Hz die
> Bilder wiedergeben will.

Das LCD läuft vermutlich auch mit 50Hz. Ich habe zumindest noch kein 
Display gesehen, das so timingkritisch war, dass man die Framerate nicht 
um ein paar 10% nach unten drehen konnte.
Es sollte ja leicht sein das mal ausprobieren.

> * Problem: bei 3 Byte RGB und 720x576px sind das 1,2 MB pro Bild.

Speicher doch YUV, dann brauchst du nur 2/3 des Speichers.

> Aber wenn das ganze
> ein Video wäre, dann würde für die Wiedergabe mit 60 Hz ja auch noch
> eine Interpolation zwischen den Bildern notwendig sein, damit die
> Bewegungen nicht verfälscht werden, oder??

Das wird kaum gemacht, außer bei Geräten der oberen Preisklasse. Die 
einfachen Mini TFT TVs haben 320x240 und werden direkt mit 50Hz 
betrieben. Die Halbbilder liegen direkt übereinander.

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Benedikt K. schrieb:
> Das Display hat 16:9, das TV Bild 4:3. Sieht nicht gut aus wenn alles
> verzerrt ist, funktioniert aber.

Das wär jetzt nicht so tragisch, weil es sich wie gesagt im Grunde nur 
um ein Menü handelt, das ausgegeben wird. Und am 16:9 Fernseher ist es 
eigentlich auch ok.

> Das LCD läuft vermutlich auch mit 50Hz. Ich habe zumindest noch kein
> Display gesehen, das so timingkritisch war, dass man die Framerate nicht
> um ein paar 10% nach unten drehen konnte.

Laut Datenblatt läufts noch mit ca. 52Hz wobei es hier anscheinend zum 
Flackern kommen kann.

> Es sollte ja leicht sein das mal ausprobieren.

Stimmt... und wird mir wohl auch nichts anderes übrig bleiben.

> Das wird kaum gemacht, außer bei Geräten der oberen Preisklasse. Die
> einfachen Mini TFT TVs haben 320x240 und werden direkt mit 50Hz
> betrieben. Die Halbbilder liegen direkt übereinander.

Ok, danke für die Info... hab mir schon gedacht, dass solche Geräte im 
oberen Preissegment liegen.

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.