banner
Heim / Nachricht / DisplayPort: Unter der Haube
Nachricht

DisplayPort: Unter der Haube

Jun 15, 2023Jun 15, 2023

Letztes Mal haben wir uns alle Dinge angesehen, die DisplayPort für seine Benutzer einzigartig machen. Was ist mit den Dingen, die es für Hacker einzigartig machen? Sehen wir uns alle Möglichkeiten an, die Ihnen DisplayPort bei Ihren modernen Tech-Abenteuern bieten kann.

Mit DisplayPort gibt es den I2C-Bus, den wir immer zusammen mit VGA, DVI und HDMI gesehen haben, nicht mehr – er wurde durch den AUX-Bus ersetzt. AUX ist ein bidirektionales 1-MHz-Diffpair – etwas zu komplex für einen billigen Logikanalysator, aber möglicherweise etwas, das man mit den PIOs des RP2040 in den Griff bekommen könnte. Hacking-Gedanken beiseite, es handelt sich um einen transparenten Ersatz für I2C, sodass die Software nicht neu geschrieben werden muss – zum Beispiel erfolgt die Durchleitung von I2C-Geräten normalerweise über AUX, sodass EDID-Daten weiterhin in einem separaten EEPROM-Chip auf dem Monitor gespeichert werden können oder eDP-LCD-Panel.

AUX ist nicht nur ein Differentialbus, sondern eher pseudodifferentiell wie USB2 – zum Beispiel werden AUX_P und AUX_N separat verwendet, mit einer Kombination aus 1 MΩ- und 100 kΩ-Pullups und Pulldowns, die unterschiedliche Zustände der physischen Verbindung signalisieren – zum Beispiel a Pullup auf AUX+ und ein Pulldown auf AUX- bedeuten, dass ein externes Gerät angeschlossen wurde. Wenn Sie erfahren möchten, welche Widerstandskombination was bedeutet, können Sie in der DisplayPort-Spezifikation nachlesen, die nicht offen verbreitet wird, aber auch nicht schwer zu bekommen ist.

Außerdem erfolgt das Training der DisplayPort-Verbindung über AUX. Um dies zu ermöglichen, wird ein Teil des externen Speichers des DisplayPort-Controllers normalerweise über den AUX-Kanal verfügbar gemacht, und zwar über einen Mechanismus namens DPCD. Wenn Sie ein wenig graben und „DPCD“ als Schlüsselwort verwenden, können Sie leicht in die untergeordneten Details Ihrer DisplayPort-Verbindung gelangen. Ein Teil der DPCD-Speicherzuordnung ist statisch und einige Teile sind FIFOs, in die Sie Daten hinein- oder herausleiten können. Sie können online eine Vielzahl von Dokumenten finden, die die DPCD-Struktur beschreiben – hier ist zunächst ein Stück Bash, das auf Linux-Grafiktreibern für AMD und Intel funktioniert und Ihnen die ersten 16 Bytes von DPCD zeigt:

# sudo dd if=/dev/drm_dp_aux0 bs=1 skip=256 count=16 |xxd00000000: 0084 0000 0000 0000 0108 0000 0000 0000 ................[...]

Insbesondere das 4. Nibble (Ziffer) beschreibt hier die Anzahl der Lanes für die hergestellte DisplayPort-Verbindung – wie Sie sehen können, verwendet mein Laptop eine Vier-Lane-Verbindung. Außerdem muss möglicherweise der Pfad /dev/drm_dp_aux0 für Ihr Gerät angepasst werden. Falls Sie jemals Ihren DP-Link debuggen möchten, kann Ihnen ein solcher direkter Zugriff auf den DPCD-Speicherplatz sehr hilfreich sein! Kommen wir zunächst zu anderen praktischen Aspekten.

Was ist, wenn Sie ein eDP-Display zur Hand haben und es in einem Projekt wiederverwenden möchten? Zunächst möchten Sie die Pinbelegung kennen. Bei Laptop-Displays sind die Pinbelegungen des eDP-Panels einigermaßen standardisiert – es gibt drei Pinbelegungen, eine davon 30-Pin 2-Lane, eine 40-Pin 2-Lane mit zusätzlichen USB- und I2C-Pins für die Verkabelung eines Touchscreens und eine 40-Pin 2-Lane. Pin-Anschluss mit 4 Spuren und ohne Touchscreen-Unterstützung; Weitere Details zu diesen Pinbelegungen finden Sie hier. Es gibt noch andere Pinbelegungen, aber sie sind selten – mein Freund hat bisher ein Display in einem Wacom-Tablet gefunden, das die 30-Pin-Pinbelegung verwendet, aber die Pins umdreht, sodass Pin 1 auf Pin 30 des Anschlusses abgebildet wird und so weiter ; Dies hat leider zu magischem Rauch geführt. Allerdings ist dies selten und eine schnelle Beobachtung der Leiterplattenspur oder sogar eine Überprüfung mit einem Multimeter erspart Ihnen solche Probleme, wenn Sie sich nicht sicher sind. Außerdem beantwortet das Panel-Datenblatt alle Ihre Fragen, wenn nicht sogar alle.

Wenn Ihre Pinbelegung die 30-polige ist, haben Sie Glück – es gibt eine große Auswahl an Treiberplatinen mit derselben Hardware und auf das Panel zugeschnittener Firmware; Es gibt auch generische Boards, die in der Regel gut mit 1920 x 1080-Panels funktionieren, der in den letzten fünf Jahren beliebtesten Auflösung für Laptop-Bildschirme. Es sieht jedoch so aus, als ob diese Boards gewisse Abkürzungen machen, wenn es um die DisplayPort-Link-Verwaltung geht – egal, ob sie Link-Trainingsparameter des Panels übernehmen, für das sie programmiert sind, oder vielleicht liegt es am Pixelformat, aber meine Erfahrung hat gezeigt – Wenn Sie eine Platine ergattern können, die für die Programmierung Ihres speziellen Panels gekennzeichnet ist, sollten Sie genau das in Betracht ziehen. Andernfalls startet es möglicherweise nicht oder es treten visuelle Schnittstellen oder seltsames Flackern auf. Andererseits habe ich, als ich mich mit der Wiederverwendung von Laptop-Displays beschäftigt habe, ein paar Boards gefunden, bei denen die DP-Panel-Auflösung mit Jumpern eingestellt werden kann, und diese haben sich als mehr als universell genug erwiesen, also wenn Sie können Schnappen Sie sich eines zusammen mit Ihrer vorprogrammierten Platinenbestellung und Sie werden möglicherweise mit einer größeren Kompatibilität belohnt, als Sie es für Ihre weiteren eDP-Bastelabenteuer erwarten würden.

Wenn es um eDP-Displays für Tablets geht, ist die Standardisierung deutlich geringer, aber mit den Datenblättern oder sogar Schaltplänen des Panels kommt man durchaus zurecht. Manchmal gibt es sogar gebrauchsfertige DisplayPort-Breakouts für eine bestimmte Art von Display, aber das ist selten und Sie möchten vielleicht Ihren eigenen ausbauen. Natürlich ist es nicht so praktikabel, eine 2,7-Gbit/s-Verbindung mit Überbrückungskabeln zu verbinden. Dies ist kein PCIe, was bedeutet, dass Sie sich auf das Gebiet begeben, Ihre eigene DisplayPort-tragende Leiterplatte zu zeichnen. Wir rüsten Sie entsprechend aus.

Natürlich verwendet DisplayPort wie jede moderne Schnittstelle mit hoher Bandbreite Differenzialpaare. Nun wäre dies nicht die erste Schnittstelle, für die wir kontrollierte Impedanzpaare zeichnen müssen – die Grundlagen finden Sie im Artikel zum PCIe-Diffpair-Routing. Natürlich gibt es Unterschiede zwischen PCIe- und DisplayPort-Routing – zunächst einmal benötigt DisplayPort eine Impedanz von 100 Ohm, im Gegensatz zu 85 Ohm bei PCIe; kein großes Problem und die Paarparameter werden nicht einmal allzu unterschiedlich sein. Allerdings gibt es noch weitere Einschränkungen – dadurch entfällt bei DisplayPort der „Wet String“-Faktor.

Denken Sie daran, wie ich erwähnt habe, dass Sie für PCIe nicht alle Paare auf die gleiche Länge bringen müssen. Nun, das ist nun das Problem: Sie müssen alle Differentialpaare für DisplayPort auf die gleiche Länge bringen, zusätzlich zu der Kompensation des Intra-Paar-Versatzes, die Sie noch vornehmen müssen. In KiCad ist das Werkzeug dafür der Taste 8 zugeordnet und Sie können damit einzelne Paare verlängern, indem Sie Wackelbewegungen hinzufügen, wie Sie sie höchstwahrscheinlich bereits auf Leiterplatten gesehen haben.

Laut Spezifikation kann der Unterschied zwischen den Paaren nun insgesamt zwischen 5 cm und 1 cm betragen, abhängig von der DisplayPort-Verbindungsgeschwindigkeit. Sie denken vielleicht, dass Sie hier etwas Spielraum haben, aber es ist besser, wenn Sie Ihre Unterschiede auf den Bereich von 1 mm bis 2 mm Millimeter beschränken – ein Teil Ihres Spielraums ist möglicherweise bereits von Ihrer GPU, Ihrer Verkabelung oder Ihrem Monitor „aufgebraucht“. Kurz gesagt, alle Teile des DP-Links, die Sie nicht kontrollieren.

Abgesehen von der Längenanpassung zwischen Paaren ist auch das DisplayPort-Link-Training nicht so entgegenkommend. Sie können Paare nicht mehr jederzeit umtauschen, um Ihr Routing schöner zu machen, so verlockend das auch sein mag – die DisplayPort-Verbindung behandelt das nicht mit Freundlichkeit. Positiv zu vermerken ist, dass dies mehr oder weniger das Ende dessen darstellt, was Sie wissen müssen, um die Differentialpaare der Hauptverbindung zu routen.

Das ist genug, um in den DisplayPort-Pool einzutauchen – aber zunächst möchte ich Sie auf eine letzte Sache aufmerksam machen, die Sie wissen sollten. Sie haben etwas über die Hauptverbindungspaare gelernt, Sie haben etwas über den AUX-Bus gelernt – ich möchte Sie auf das HPD-Signal aufmerksam machen. Trotz der Existenz des AUX-Busses ist HPD ein erforderliches Signal für eine DisplayPort-Verbindung, da AUX in gewisser Weise genau wie USB 2.0 ist – ein Display (Gerät, Senke) kann nicht sprechen, bis es angesprochen wird; HPD ist seine Art, Aufmerksamkeit zu erregen und die Abfrage zu vermeiden, die USB verwenden muss. Es handelt sich auch um ein Signal, das zum Hotplug von Displays verwendet wird, offenbar notwendigerweise eine Ergänzung zu der Methode, die bei den AUX-Paaren verwendet wird, um zu erkennen, wann ein Display angeschlossen wurde. Kurz gesagt: Stellen Sie sicher, dass Sie HPD nicht auslassen.

Hoffentlich habe ich Ihnen heute genügend Informationen bereitgestellt, damit Sie sich mit einem DisplayPort-Link vertraut machen können, wann immer Sie sich entscheiden, eine solche Verantwortung zu übernehmen! Wir würden es versäumen, nicht ausführlicher auf den DisplayPort-Altmodus einzugehen – die Schnittstelle zweier weit verbreiteter moderner Technologien, DisplayPort und USB-C. Beim nächsten Mal werden wir dafür sorgen, dass Sie auch damit vertraut werden, und zwar mit der Tiefe, die Sie hoffentlich schätzen werden. Bis dahin – wir machen Ihnen den Einstieg in die modernen Bereiche der Display-Technologie einfacher!