Forum: FPGA, VHDL & Co. 4x DVI Videosignal


von Donni D. (Gast)


Lesenswert?

Hey Leute,

Erst mal zu meinem Vorhaben: ich möchte gern 4 DVI Outputs mit einem 
FPGA realisieren. Dazu habe ich mir dieses Board rausgesucht: 
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=941
Da es kein bezahlbaren FPGA Bzw ein DevelopmentBoard mit genügend TMDS 
Pins gibt habe ich mich mal nach DVI Chips umgesehen. Da fiel mir der 
TFP410 ins Auge: http://www.ti.com/lit/ds/symlink/tfp410.pdf
Hat von euch schon jemand mit dem Chip gearbeitet? Wenn ich mich nicht 
irre müsste ich pro GPIO Header (36 IOs) 2 DVI Schnittstellen realisiert 
bekommen, wenn ich in dem 12-Bit DoubleEdge Mode arbeite.

Meine FPGA Bzw VHDL Kentnisse sollten dazu ausreichen denke ich, habe 
das im Studium aktuell und da läuft es steht gut (Realisierung einer 
kleinen CPU, serielle Schnittstellen, Sensor Auswertungen etc).
Eher bedenklich finde ich den Hardware Teil. Wie komplex ist es das 
ganze zu Layouten für eine 1280x960 Auflösung? Gibt es eine 
Beispielbeschaltung für den TFP410 an einem DVI Stecker? Oder spricht 
sonst etwas gegen mein Vorhaben oder habt ihr bessere Ideen?

Liebe Grüße
Donnidonis

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


Lesenswert?

Donni D. schrieb:
> Oder spricht sonst etwas gegen mein Vorhaben
Was soll es denn werden?
Wofür sind die 4 DVI Ausgänge?
Woher kommen die Daten/Bilder?

von Tobias L. (murxwitz)


Lesenswert?

Ich kann mich dran erinnern, dass ein Spartan 6 TMDS auf allen IOs kann, 
benoetigt halt die externen Terminierungswiderstaende. Dann reichen 4x2 
Pins.

https://www.xilinx.com/support/documentation/application_notes/xapp495_S6TMDS_Video_Interface.pdf

Solange die IOs vom Chip zum Stecker differentiell gerouted sind, sollte 
es machbar sein. Evtl. halt nicht mit max. Takt und 10m Kabel.

von Donni D. (Gast)


Lesenswert?

Lothar M. schrieb:
> Donni D. schrieb:
>> Oder spricht sonst etwas gegen mein Vorhaben
> Was soll es denn werden?
> Wofür sind die 4 DVI Ausgänge?
> Woher kommen die Daten/Bilder?

Ich habe vor vier alte 19" Monitore als einen 'großen' Monitor zu 
betreiben. Und bevor ich was fertiges nehme wollte ich es gern mal 
selbst probieren und mal sehen wie weit ich komme und es halt 
hoffentlich auch schaffe. Die Daten werden erst mal random generiert. 
Später würde ich sie per Netzwerk von dem HPS entgegen nehmen, da wäre 
dann vielleicht ein anderes Board interessanter mit einem SDRAM auf FPGA 
Seite um die Daten dann per DMA rüber zu schieben oder ähnliches. Da bin 
ich mir noch nicht sooo sicher, würde mich erst einmal darum kümmern das 
ich einen DVI Output hinbekomme, dann 4, dann den Input etc.

@Tobias L.
Wegen den xilinx, naja habe an der Uni Altera mit Quartus benutzt, auch 
schon den NIOS und ähnliches benutzt, da würde ich schon gern bei der 
ganzen Toolchain bleiben. Wobei es natürlich gut klingt mit den TMDS 
Leitungen.

von boeserfisch (Gast)


Lesenswert?

Moin,

ich würde da am ehesten noch zu einem ECP3 (Lattice) greifen, wenns TMDS 
sein soll. Auf dem Spartan wird das ein rechtes Getweake, mal ganz 
abgesehen von der totalen Bandbreite, da wäre noch einiges zu klären.
Das ganze noch mit entsprechend RAM zu spicken wird ein stattliches 
Projekt, da punktet ein Spartan6 wieder dank memorycontroller.
Was Routing angeht: Sich in Skew-problematiken von lvds-signalen 
einlesen. Bei TMDS geht softes Lane-Deskewing

von Donni D. (Gast)


Lesenswert?

boeserfisch schrieb:
> Moin,
>
> ich würde da am ehesten noch zu einem ECP3 (Lattice) greifen, wenns TMDS
> sein soll. Auf dem Spartan wird das ein rechtes Getweake, mal ganz
> abgesehen von der totalen Bandbreite, da wäre noch einiges zu klären.
> Das ganze noch mit entsprechend RAM zu spicken wird ein stattliches
> Projekt, da punktet ein Spartan6 wieder dank memorycontroller.
> Was Routing angeht: Sich in Skew-problematiken von lvds-signalen
> einlesen. Bei TMDS geht softes Lane-Deskewing

Das Problem bei den meisten Development Boards ist, dass so viel 
Hardware dran ist und deshalb die ganzen TMDS Ports benutzt sind. Ich 
würde trotz allem gerne bei Altera bleiben und es mit den TFP410 
probieren, oder sind die sehr schwer zu nutzen? Sah jetzt nicht soooo 
wild aus. Frage ist nur wie es mit dem Platinenlayout bei 1280*960 wird?

von Edi M. (Gast)


Lesenswert?

Ich suche da auch noch noch einer einfachen OEM-Lösung und zwar für 
diese Anwendung: Beitrag "Roh-TFTs und Videomultiplexer für Bildwandfunktion gesucht"

Ich fahre da momentan über einen Multiplizierer/Slitter, also 1920x1080 
auf 3840 zu 2160 interpoliert und dann auf 4 verteilt. Das Ganze 
nochmal, um auf insgesamt 16 Monitore zu kommen.

von Donni D. (Gast)


Lesenswert?

Edi M. schrieb:
> Ich suche da auch noch noch einer einfachen OEM-Lösung und zwar für
> diese Anwendung: Beitrag "Roh-TFTs und Videomultiplexer für Bildwandfunktion gesucht"
>
> Ich fahre da momentan über einen Multiplizierer/Slitter, also 1920x1080
> auf 3840 zu 2160 interpoliert und dann auf 4 verteilt. Das Ganze
> nochmal, um auf insgesamt 16 Monitore zu kommen.

Genau sowas möchte ich realisieren. Würde es aber gerne alleine 
probieren. Einfach weil es Spaß macht und ich was lernen will.

von Donni D. (Gast)


Lesenswert?

Und wie sieht es mit dem Chip aus? Könnte der gut funktionieren? Hat da 
jemand schon was gemacht und vielleicht schon mal ne Platine mit gebaut? 
Hardware Design habe ich nur sehr wenig Erfahrung und da würde ich gern 
wissen ob es für die Auflösung von 1280x960 schon speziell geroutet 
werden muss oder ähnliches, Abstände einhalten zu xy und etc.

von Strubi (Gast)


Lesenswert?

Donni D. schrieb:
> Und wie sieht es mit dem Chip aus? Könnte der gut funktionieren?
> Hat da
> jemand schon was gemacht und vielleicht schon mal ne Platine mit gebaut?
> Hardware Design habe ich nur sehr wenig Erfahrung und da würde ich gern
> wissen ob es für die Auflösung von 1280x960 schon speziell geroutet
> werden muss oder ähnliches, Abstände einhalten zu xy und etc.

Ich habe damit nix gemacht, und tendiere allgemein dazu, alles im FPGA 
zu erledigen, wenns physikalisch irgendwie geht. Ansonsten gelten halt 
die oben schon genannten Punkte: Schau, dass es mit dem Skew passt, d.h. 
du keine unterschiedlichen Verzögerungen der Video-Datenleitungen auf 
dem Board hast, und der Chip möglichst nahe an den FPGA I/Os liegt. Dann 
solltest du ev. noch ein Testdesign mit Constraints bei gegebenem 
Pixelclock (dürfte wohl um 74 MHz liegen) machen und die Timings 
verifizieren. Wenn du auch nach dem Transceiver (DVI) keinen Skew 
einführst und keine riesige Platine hast, brauchst du dir wegen der 
Abstände auch keinen Kopf machen. Ansonsten bist du mit dem 
Impedanzrechner und was Kicad z.B. sonst an differentiellen 
Routing-Features bietet auf der sicheren Seite.
Das alleine genügt dann mal für einen DVI-Kanal.
Wenn du alles auf n*m aufblasen willst, sehe ich da nur Anwendungen wie 
Videogeneratoren oder Video-Scaling. Für ein n*m*x*y-Bild ist schnell 
mal die Fahnenstange f_max erreicht.
Da ist eine einfache Lösung mit gut synchronisierten Mediaboxen (sowas 
wie RPi könnte es tun) und schnellem Netzwerk die pragmatischere.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Donni D. schrieb:
> Und wie sieht es mit dem Chip aus? Könnte der gut funktionieren?

Naja, warum soll der denn nicht gut funktionieren? Der ist doch genau 
dafuer gemacht.

Donni D. schrieb:
> Hardware Design habe ich nur sehr wenig Erfahrung und da würde ich gern
> wissen ob es für die Auflösung von 1280x960 schon speziell geroutet
> werden muss oder ähnliches, Abstände einhalten zu xy und etc.

Das sind natuerlich nicht die idealen Voraussetzungen fuer so ein 
Design. Rechne dir halt mal die seriellen Takte aus - mal als Best-Case, 
mit 50Hz Framerate und ohne Blanking: 1280*960*50*10=614MHz. Mit 
Blanking und ggf. 60Hz halt entsprechend mehr. Das musst du halt aufs 
PCB bringen. Die Kapitel 9+10 im Datenblatt vom TFP410 stehen nicht aus 
Jux und Dollerei da.

Und auch auf der parallel-Seite wird das Layout sicher nicht ganz 
trivial werden, wenn du da irgendwelche "Dual-Edge" Geschichten machen 
willst.
Aber: Viel Feind - viel Ehr...

Achja: Um ein Bild in 4 Teilbilder zu zerlegen wirst du nicht mehr ohne 
externes RAM auskommen; Blockrams in FPGAs reichen eher nur fuer eine 
(oder ein paar) Zeilen aus.

Gruss
WK

von Donni D. (Gast)


Lesenswert?

Dergute W. schrieb:
> Achja: Um ein Bild in 4 Teilbilder zu zerlegen wirst du nicht mehr ohne
> externes RAM auskommen; Blockrams in FPGAs reichen eher nur fuer eine
> (oder ein paar) Zeilen aus.

Dafür habe ich mir nun extra ein Bosrd rausgesucht, welches einen 64MB 
RAM Baustein drauf hat. So einen Baustein habe ich auch schon 
erfolgreich genutzt über den NIOS Core von Altera, auf diesem Board 
damals: 
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=502
Ich brauche auch gar nicht 60Hz oder sonstiges, ich will erst einmal das 
es läuft, auch wenn es nur 4 oder 5 Hertz sind.

Dergute W. schrieb:
> Und auch auf der parallel-Seite wird das Layout sicher nicht ganz
> trivial werden, wenn du da irgendwelche "Dual-Edge" Geschichten machen
> willst.

Ja die DualEdge brauche ich, um die Hälfte der Datenleitungen 
einzusparen. Aber da wäre es für den Anfang wohl besser einfach erstmal 
den SingleEdge Mode zu nehmen um besser verifizieren zu können ob alles 
läuft, danach kann ich ja immer noch umstellen.


Dann habe ich jetzt glaube ich erst einmal genug Infos und Anhaltspunkte 
um einen ersten Versuch zu starten. Danke euch für die Infos und 
Anregungen.

Eine Sache wäre noch:
Habe eben gesehen das es auch fertige Boards gibt wie dieses hier für 
den TFP410: 
http://www.digikey.com/product-detail/en/digi-key-evaluation-boards/DKSB1007A/906-1000-ND/2177062 
, aber es sieht für mich im Datenblatt so aus als wäre nicht alle 
Datenpins nach außen geführt, manche liegen per Jumper direkt auf Masse 
oder 3V3. Mit so einem Board könnte ich mir natürlich viel Arbeit 
sparen. Ich finde leider keins wo direkt alle Signale nach außen geführt 
sind. Kennt da von euch jemand was schöneres? Zur Not kann ich aber dort 
mein Schaltplan etwas abgucken

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Donni D. schrieb:
> Ich brauche auch gar nicht 60Hz oder sonstiges, ich will erst einmal das
> es läuft, auch wenn es nur 4 oder 5 Hertz sind.

Aeeeh - ich fuerchte doch. Ich glaub' nicht, dass ein Monitor so ein 
verkorkstes DVI-Signal mit z.b. 1280x960 bei 5 Hz Framerate darstellen 
kann.
Du solltest dir erstmal die EDID deiner Monitore angucken, welche 
Aufloesungen mit welchen Pixelclocks, etc. die unterstuetzen.
Bei 5Hz Framerate waerst du auch mit dem Pixeltakt unter dem Minumum von 
25MHz, die der TFP braucht.

Donni D. schrieb:
> Aber da wäre es für den Anfang wohl besser einfach erstmal
> den SingleEdge Mode zu nehmen um besser verifizieren zu können ob alles
> läuft, danach kann ich ja immer noch umstellen.

Nein, da ist es besser, im Layout jeweils die Laengen der einzelnen 
Busleitungen gleich so zu matchen dass es auch mit DDR passt. Und bei 
der Anbindung ans FPGA drauf zu achten, dass/wie du das evtl. um eine 
1/2 clk verschobene Taktsignal erzeugen kannst.

Bei dem SDRAM Interface koennte auch die max. Datenrate interessant 
werden. Wenn der olle NIOS nicht rechtzeitig seine Daten aus dem SDRAM 
kriegt, wartet er halt ein paar Takte. Bei Video geht das nicht. Da 
wirds sehr haesslich aussehen.
Alleine ein 1280x960@50Hz mit jeweils 8bit RGB Daten in ein SDRAM zu 
schaufeln, macht fast 1.5GBit/sec Transfer aus. Und dann muss es ja auch 
noch 4x wieder rausgeschaufelt werden...
Da solltest du vorher ein paar Abschaetzungen machen, ob das ueberhaupt 
hinhauen kann; wie hoch der Speichertakt dann sein muss, etc.

Gruss
WK

von Donni D. (Gast)


Lesenswert?

Dergute W. schrieb:
> Aeeeh - ich fuerchte doch. Ich glaub' nicht, dass ein Monitor so ein
> verkorkstes DVI-Signal mit z.b. 1280x960 bei 5 Hz Framerate darstellen
> kann. Du solltest dir erstmal die EDID deiner Monitore angucken, welche
> Aufloesungen mit welchen Pixelclocks, etc. die unterstuetzen.
> Bei 5Hz Framerate waerst du auch mit dem Pixeltakt unter dem Minumum von
> 25MHz, die der TFP braucht.

Okay stimmt das habe ich nicht bedacht, ich dachte er würde die Daten 
Puffern und halt wenn alles da ist die Daten darstellen. Dann würde ich 
einfach mit der Auflösung runter gehen, sodass dann die Datenraten etc. 
geringer werden. Mein Ziel ist es erstmal ein Bild raus zu bekommen, 
auch wenn es erstmal random generierte Pixel hat, nur eben über den 
TFP410 Chip.

Dann werde ich wohl erstmal mit 640x480 anfangen müssen und Stück für 
Stück mich weiter nach oben Tasten :D

von Donni D. (Gast)


Lesenswert?

Hat zufällig noch jemand ein Bosrd wie dieses gefunden?
http://www.digikey.com/product-detail/en/digi-key-evaluation-boards/DKSB1007A/906-1000-ND/2177062
Wenn es keine gibt, was würde es kosten eine Platine in der Größe 
herstellen zu lassen? Den Chip, die Buchse plus eine Headerleiste? Kann 
man die direkt Bestückt bestellen? Habe sonst immer auf fertige 
BreakoutBoards gesetzt.

von J. S. (engineer) Benutzerseite


Lesenswert?

Bestücker machen das erst ab einer gewissen Auftragsgrösse. Da kommst Du 
keines falls billiger, als mit der Platine. Das Problem ist eher, es an 
den FPGA zu bringen. DVI erfordert meist symmetrische LVDS-Kopplung, 
weil man per DVI sehr hohe Auflösungen übertragen können muss. Das 
erfordert dann z.B. 24Bit DDR-Betrieb, wie beim DVI-Baord von AVNET. 
Damit habe ich vor ein paar Jahren mal ein Testdesign entwickelt. War 
für das AVNET 150er Spartan6 System. Habe dem damaligen Silica 
Vertriebler sogar das testfile gesendet, damit sie auch mal was sehen 
:-)

Bei Deinen Anforderungen der geringen Auflösungen würde Ich zu einem VGA 
raten:
Beitrag "Re: 5-Bit-VGA bei "modernen" Geräten"

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.