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
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.
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
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?
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.
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.
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.
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.
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
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
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
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
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"