Guten Tag, Habr!

Entwicklung eines HDMI-Glasfaser-Verlängerungskabels für 300 Meter. Verweigerung des Rückkanals (Datenübertragung über ein Glasfaserkabel). EDID vom Monitor klonen.
Der HDMI-Standard wird häufig in vielen Bereichen verwendet, in denen Sie das Bild auf dem Bildschirm anzeigen möchten. Persönlich konnte ich das Signal über ein HDMI-Kabel bis zu einer Entfernung von 10 Metern übertragen (es war einfach nicht mehr erforderlich). Ich denke, dass Sie das Bild ohne Qualitätsverlust auf eine Entfernung von 30-40 m übertragen können. Die Hauptnachteile beim Anbringen eines solchen Kabels sind der Durchmesser und die Größe der Steckverbinder direkt. Der einfachste Weg, das Kabel auszuschließen, ist die Verwendung eines drahtlosen Verlängerungskabels. Ich denke, es wird möglich sein, 100-150 Meter zu erreichen, aber ich werde nicht sicher sagen. Leider erlauben nicht alle Objekte aus dem einen oder anderen Grund die Verwendung von drahtlosen Netzwerken. Und wenn Sie noch weiter brauchen?
Abb. 1. HDMI-Kabel und Optik (LC)Natürlich ist die Optik wahrscheinlich nicht die beste Option für die Übertragung von Videos, aber bei Verwendung von stationären PCs und Monitoren ist sie sogar nichts. Die erste These ist der Durchmesser des optischen Kabels (in meinem Fall 2-3 mm) und der Durchmesser des Glasfaserkabelsteckers. Das zweite ist natürlich die Entfernung. Mit Blick auf die Zukunft werde ich sagen, dass die Tests an einem 300 m langen Kabel mit einem Durchmesser (extern) von 3 mm durchgeführt wurden.
Elementare Basis
Bei der Entwicklung der Elementbasis fiel die Wahl unerwartet auf das chinesische Unternehmen SiFotonics, das sich auf diese Art von Ausrüstung spezialisiert hat. Zunächst haben wir ihre Produkte untersucht und zwei Debugs erhalten, die wir mit einem dreihundert Meter langen optischen Kabel verbunden und sichergestellt haben, dass alles einwandfrei funktioniert. Sie haben auch optische SFP-Empfänger / Sender (ROSA / TOSA), Serializer / Deserializer, Treiber usw.
Arbeitsprinzip
Um die Geräte anzuschließen und zu betreiben, müssen Sie zwei optische Kabel anschließen und Strom (Micro-USB-Kabel) anschließen. Wenn wir eine Analogie zu einem herkömmlichen HDMI-Kabel geben, in dem I2C zum Austauschen einer EDID-Tabelle vorhanden ist, ist alles gleich - ein Kanal für die Datenübertragung, der zweite - für die Übertragung der EDID vom Monitor auf die Grafikkarte. Daten werden mit einer Geschwindigkeit von 10 Gbit / s übertragen. Wenn Sie das Kabel des Rückkanals abreißen, verschwindet das Bild immer wieder. In diesem Moment schlichen sich einige Zweifel ein und ob irgendwelche Servicedaten oder Synchronisationsmarkierungen im Rückkanal übertragen werden oder ob die Geräte Verbindungen untereinander überwachen ...
Abb. 2. Die Zusammensetzung der ModuleDie erste Iteration des Boards, auch ein Layout, hat eine Größe von 20 x 45 mm. Mit einem „seitlichen“ Stromanschluss, um die Verteilung von Strombussen auf Mülldeponien zu vereinfachen. Insgesamt 4 Schichten herausgestellt. Warum diese Leiterplattenkonfiguration schlecht ist, werde ich später schreiben. Tricky Debugging-Entwickler verwendeten 0201 passiv, was ich absolut nicht wollte, also verwendete ich 0402 und einen Kondensatorbrei unter dem Chip.
Abb. 3. 3D-Modell des Layouts der QuellmodulplatineWie ich oben schrieb, bestand meine Aufgabe nicht nur darin, ein Paar mit einem Arbeitsabstand von 300 Metern zu bilden, sondern auch den Rückkanal der Optik zu entfernen. Schon in der Entwicklungsphase haben wir uns entschlossen, uns nicht auf die Fertigstellung der chinesischen Software einzulassen (obwohl uns freundlicherweise alle Quellen zur Verfügung gestellt wurden), da dies zum einen eine Reihe seltsamer Codezeilen in einem unverständlichen Compiler ist und zum anderen SiFotonics Flash-Chips liefern kann Dies ist sehr praktisch, da es sehr schwierig ist, Geräte im Rahmen der Produktion zu flashen. Damit der Leser nicht denkt, dass ich übertreibe, wenn ich über die Schwierigkeiten spreche, werde ich ein Foto des Programmierstandes geben.
Abb. 4. Stehen Sie für Programmierung und DiagnoseJa, ja, wie Sie wahrscheinlich bereits vermutet haben, werden die JTAG-Kontakte für die Programmierung an Micro-USB-Kontakte und an einige HDMI-Kontakte ausgegeben, die früher GND waren. Ich muss sofort sagen, dass dies die Qualität der Arbeit nicht beeinträchtigt hat. Also steh auf. Um den Chip zu programmieren, müssen Sie zuerst eine Schaltung des Ständers zusammenbauen und den Chip mit einer speziellen Software in den Programmiermodus versetzen. Als nächstes müssen Sie eine andere Schaltung zusammenbauen und die andere Software verwenden, um die Karte zu flashen. Danach geht es automatisch in den Arbeitsmodus.
Im Allgemeinen scheint es mir, dass dies selbst für 1000 Stück unpraktisch ist.
Kehren wir zum umgekehrten Kanal zurück. Zum Speichern von EDID-Tabellen benötigen wir ein EEPROM, und wir müssen seine Adresse im laufenden Betrieb ändern. Er nahm den N24C02UDTG in einem US-8-Miniaturpaket. Zum Programmieren verwende ich den Mikrocontroller STM32F031G4U6, ebenfalls in dem kleinsten Paket, das im öffentlichen Bereich zu finden ist - UFQFPN-28. Ich habe auch den Netzschalter TPS27081ADDCR genommen. Und hier ist was ich habe:
Abb. 5. Implementierungsschema für das EDID-KlonenDie Idee ist wie folgt. Diese Schaltung ist auf dem Sendemodul implementiert (dasjenige, das mit dem PC verbunden ist). Um einen EDID-Monitor zu klonen, stellt das Gerät eine Verbindung zum Monitor her. Standardmäßig sollte die EEPROM-Adresse auf unserem Modul nicht mit der EEPROM-Adresse im Monitor übereinstimmen (während des Lesens), dh es kann sich um eine andere handeln, z. B. habe ich das A0-Bein verwaltbar gemacht. Zum Zeitpunkt des Anschlusses an den Monitor wird das EEPROM mit Strom versorgt und der Zweig A0 wird bis zum logischen Widerstand "0" hochgezogen. Zwei EEPROMs mit denselben Adressen hängen am i2c-Bus, dies ist jedoch nicht kritisch, da wir noch nicht mit ihnen arbeiten. In meiner Schaltung gibt es auch eine Taste und eine LED zur Anzeige von Strom- / Firmware-EDID / Fehlern. Durch kurzes Drücken der Taste wird die Adresse geändert und der Mikrocontroller kann mit dem Lesen / Schreiben der EDID beginnen. Wir setzen das EEPROM mit Strom zurück (nur für den Fall), wenn wir das Signal von der Taste empfangen haben, lesen die EDID des Monitors und schreiben es sofort auf unseren Chip. Wir blinken dreimal mit der LED und schalten das EEPROM aus. Das Lesen / Schreiben erfolgt sofort, sodass das Blinken erzwungen verzögert wird, damit der Benutzer versteht, dass etwas passiert. Das heißt, wir beginnen zu blinken, wenn es bereits möglich ist, loszulassen. Wenn etwas nicht stimmt, zünden Sie die LED nicht an.
Schließen Sie als nächstes das Modul an den PC an und sehen Sie sofort den neuen Monitor in den Einstellungen. Das Problem ist gelöst.
Zur Programmierung brachte der Mikrocontroller den SWD-Bus mit.
Abb. 6. Rückseite der ModulplatineEigenschaften
Nach all der Arbeit mit dem EDID-Klonen entfernte ich den umgekehrten optischen Kanal und alles funktionierte einwandfrei. In diesen Experimenten kam die Stromversorgung von einem USB-PC. Während des Startvorgangs schaltet der Computer (auf jeden Fall meiner) die USB-Stromversorgung für einen Moment aus und das BIOS-Bild blinkt auf dem Monitor - dies ist nicht kritisch. Dann habe ich die Rückkanalmodule von den Geräten entfernt und nach diesem Blinken hat sich das Bild nicht mehr erholt. Und genau das lag am Fehlen eines TOSA-Moduls am Monitorgerät. Ich habe versucht, die Anwesenheit eines Lasers zu emulieren, aber alles ohne Erfolg. Ich bin mir fast sicher, dass dieses Problem durch Firmware gelöst werden kann, aber wir haben uns entschieden, nicht darauf einzugehen. Ein Wunder geschah, als ich beide Geräte (Empfänger und Sender) an Netzteile anschloss (wie es übrigens in der Arbeitserklärung angegeben wurde). Das Bild hörte auf zu blinken und verschwand dementsprechend. Wenn Sie die Stromversorgung der Geräte während des Betriebs verzerren, wird das Bild problemlos wiederhergestellt.
Abb. 7. Schaltkreis des Sendermoduls (Laser)Nun zurück zur Leiterplattenkonfiguration und zum seitlichen Stromanschluss. Diese Implementierung war zunächst unpraktisch und nur für das Layout geeignet. Im Freigabegerät habe ich die Breite der Platine auf 16,3 mm reduziert und den Stromanschluss anstelle des optischen Moduls des Rückkanals eingesetzt. Auf diese Weise können Sie mehrere Geräte in eine Grafikkarte aufnehmen. Ansonsten hat mich der Stromanschluss gestört und die Platine war sehr breit.
Abb. 8. Schmale Empfänger- und SenderplatinenHier gab es natürlich viele Umverdrahtungen und Umlagerungen von Bauteilen. Die Versorgungsbereiche wurden komplett überarbeitet, um diese Größen zu optimieren und den Micro-USB-Anschluss zu übertragen. Wie Sie sich vorstellen können, sind die Gehäuse für beide Geräte identisch, daher befinden sich die Platinenkonfiguration, die Anschlüsse und das optische Modul gleich. Das Gehäuse ist aus Aluminium gefräst und ein Kühlkörper für Prozessor und Treiber. Die Vorsprünge für diese Komponenten sind innen gefräst, sodass sie auch auf die gleiche Weise angeordnet sind.
Fazit
Derzeit werden vier Gerätepaare verlötet, Tests werden an einem langen Kabel auf verschiedenen Monitoren und Fernsehgeräten durchgeführt. Es gibt keine Beschwerden über die Arbeit. Wir prüfen nur auf FullHD und darunter.
Vielen Dank und bis bald!