Zwei Fragen.
Ich habe ein Xilinx Spartan 6 FPGA, das nur HDMI-Ein- und Ausgänge hat. Gibt es eine Anleitung oder einen vorab geschriebenen Code, mit dem ich Bilder an den Bildschirm senden kann? Ich habe keine Ahnung, wie ich anfangen soll, und ich konnte keine Ressourcen finden.
Zweitens, der Grund, warum ich das mache, ist, dass ich Atari 2600-Code verwenden und ändern möchte, den ein Typ auf einem Spartan 3E mit VGA implementiert hat. Ist es überhaupt möglich, den Videoaspekt meines Projekts einfach anzupassen?
Jede Hilfe, Ressourcen oder Ratschläge wäre sehr dankbar!
Antworten:
Die Atlys-Karte verwendet TDMS-Eingänge, daher benötigen Sie einen HDMI-Decoder, der diese Eingänge verwendet und VSYNC, HSYNC, DE und DATA erzeugt. Xilinx beschreibt den DVI-Codierungs- und -Decodierungsprozess in einigen Anwendungshinweisen. Diese werden jeweils mit Beispielcode geliefert. Xilinx-Login erforderlich:
Der Beispielcode befindet sich in Verilog, obwohl das Konvertieren der obersten Ebene in VHDL, wenn Sie dies bevorzugen, eine relativ triviale Übung ist.
Hier ist eine Abbildung aus dem ersten Anwendungsbericht, die die Grundvoraussetzung des Empfängers zeigt:
Da der Spartan 6 über eine integrierte SERDES-Hardware verfügt, können diese im Rahmen des Deserialisierungsprozesses verwendet werden. Es gibt einen Synchronisationsprozess, der die Uhr wiederherstellt und sicherstellt, dass alle Kanäle synchron sind. Schließlich wird eine 8b / 10b-Decodierung angewendet, um die RGB-Kanaldaten zu erzeugen.
Sobald die Videosignale wiederhergestellt wurden, können Sie diese Signale an die gewünschte Verarbeitung weiterleiten oder an einen Encoder, der sie erneut aus den HDMI-Anschlüssen sendet.
Wenn Sie über das TFTMOD-Display verfügen, können Sie die Daten einfach an das Display weiterleiten, indem Sie die DE- und DATA-Signale an die entsprechenden FPGA-Pins anschließen. Das Referenzhandbuch für die TFT-Karte ist nützlich, um Informationen zum Timing des Displays zu erhalten, obwohl ich festgestellt habe, dass das Timing des Deserialisiererausgangs in Ordnung war.
Sie können die UCF-Datei aus diesem Projekt für die Einschränkungen für HDMI und dieses Projekt für die MODTFT-Einschränkungen verwenden, wenn Sie diese Karte verwenden.
Das einzige, was zu beachten ist, ist, dass das Xilinx-Beispiel keine EDID-Informationen verarbeitet. Wenn Sie die Karte nur zum Weiterleiten von Daten verwenden, können Sie die EDID-Leitungen direkt durchleiten und sie einen Tag lang aufrufen. In anderen Szenarien müssen möglicherweise die EDID-Daten auf dem FPGA verarbeitet werden. Im Grunde ist es nur I2C. Die OpenCores-I2C-Schnittstelle ist ziemlich solide, oder Sie können Ihre eigene codieren. Soweit ich weiß, ist die Wikipedia-Tabelle zum Datenformat für EDID 1.3 korrekt.
quelle
Nur um zu ergänzen, was eine vorherige Antwort erklärt hat:
Ein DVI / HDMI-Sender kann ein guter Ausgangspunkt sein, da Sie direkt Videos aufnehmen können.
Die HDMI / DVI-Videoübertragung über eine TMDS-Verbindung ist logisch in Stufen unterteilt, wie in Abbildung 1 dargestellt: Entwurf eines TMDS-Senders zur Implementierung einer TMDS-Videoschnittstelle im Spartan-6-FPGA
TMDS-Encoder: Konvertieren Sie Pixeldaten von einer Videoquelle, HDMI-Hilfs- / Audiodaten sowie HSYNC und VSYNC in drei 10-Bit-Symbolströme
Die Serialisierer (10: 5-Getriebe und OSERDES2 5: 1-Konvertierung) führen in zwei Schritten eine 10-Bit-Parallel-Seriell-Konvertierung für alle drei Streams durch und senden sie dann an drei Kanäle mit Differenzialausgangspaaren (TMDS-Puffer).
Beide Stufen erfordern eine Taktschaltung, um die Taktsignale (mit den Frequenzen des Pixelreferenztakts und seiner Vielfachen) richtig zu erzeugen (PLL) und zu verteilen (BUFPLL, BUFG).
Der Kern des Senders ist natürlich der Encoder-Block. Sie können mit dem DVI-Encoder beginnen, da er im Vergleich zum HDMI-Encoder einfach ist. Sowohl HDMI als auch DVI haben viele Aspekte gemeinsam, einschließlich der physischen TMDS-Verbindung, des aktiven Videokodierungsalgorithmus und der Definitionen der Steuertoken.
Der Anwendungshinweis enthält auch 2 Designs. Ein einfacher, aber guter Start ist die "SMPTE HD-Farbbalkengenerierung mit programmierbarem Video-Timing". Es sendet ein Farbbalkengenerator-Video über viele Bildschirmmodi, die über die Schiebeschalter ausgewählt werden können. Dieses Design ist nützlich, da wir den Farbbalkengenerator gegen eine andere Videoquelle austauschen können und dennoch einige Videos erhalten können, die den ursprünglichen Senderblock beibehalten.
Ich hoffe das hilft!
quelle
Hier ist der Text eines Referenzdesigns, das Sie von der Board-Seite herunterladen können, auf die Sie verlinkt haben:
Sie können sich auch die Referenzdesigns ansehen, die mit dem industriellen Videoverarbeitungskit Xilinx spartan 6 geliefert werden. http://www.em.avnet.com/en-us/design/drc/Pages/Xilinx-Spartan-6-FPGA-Industrial-Video-Processing-Kit.aspx (klicken Sie auf den Link Support-Dateien, Avnet-Login erforderlich ).
Es gibt wahrscheinlich auch mehr Referenzdesigns für verschiedene fpgas.
Auch wenn Sie das Audio oder die Verschlüsselung nicht implementieren, ist hdmi im Grunde dasselbe wie dvi.
quelle
Das folgende Tutorial, das ein miniSpartan6 verwendet, ist sehr detailliert und einen Blick wert: http://zerocharactersleft.blogspot.com/2015/04/diy-fpga-based-hdmi-ambient-lighting.html
quelle