PCIe für Hacker: Unsere M.2-Karte ist fertig
HeimHeim > Nachricht > PCIe für Hacker: Unsere M.2-Karte ist fertig

PCIe für Hacker: Unsere M.2-Karte ist fertig

Oct 21, 2023

Wir haben letzte Woche mit der Entwicklung einer PCIe-Karte begonnen, einem Adapter von M.2 E-Key zu E-Key, der eine zusätzliche Verbindung zum E-Key-Steckplatz hinzufügt – nützlich für die vollständige Nutzung einiger seltener, aber ausgefallener E-Keys. Schlüsselkarten. Mittlerweile ist der Schaltplan fertig, die Platzierung der Komponenten ist herausgefunden und wir müssen nur noch die Differentialpaare verlegen – sollte doch einfach sein, oder? Anschnallen.

PCIe benötigt TX-Paare, die an einem anderen Ende mit RX verbunden sind, wie z. B. UART – und das ist nicht verhandelbar. Connectors verwenden die hostseitige Benennung und umgekehrt. Wie das Diagramm zeigt, verbinden wir den TX des Sockels mit dem RX des Chips und umgekehrt; Sollten wir jemals verwirrt sein, hilft uns der Laptop-Schaltplan dabei, die Dinge klarzustellen. Zusammenfassend lässt sich sagen, dass wir nur die Namen auf dem Link zum PCIe-Switch umdrehen müssen, da der PCIe-Switch als Gerät auf der Karte fungiert; Die beiden Verbindungen vom Switch gehen zum E-Key-Sockel, und für die Zwecke dieses Sockels fungiert der PCIe-Switch als Host.

Beim anfänglichen Routing dieser Platine habe ich eine weitere wichtige Sache für PCIe völlig vergessen: Serienkondensatoren an jedem Datenpaar auf der Host-TX-Seite der Verbindung. Wir benötigen hier drei Kondensatorpaare – auf der TX-Seite des PCIe-Switch-Uplinks und zwei Paare auf der TX-Seite des Switches – auch hier erfolgt die Benennung hostseitig. Das fiel mir erst ein, als ich mit dem Verlegen aller Diffpaare fertig war, und nach einigem Überlegen beschloss ich, dass dies meine Chance ist, 0201-Kondensatoren auszuprobieren. Dafür habe ich die Fußabdrücke aus [Christophs] wunderbarem Projekt mit dem Titel „Auswirkung der Mondphase auf Grabsteine“ genommen – bei einem solchen Namen müssen diese Fußabdrücke einfach gut sein.

Wir haben bereits in einem der PCIe-Artikel über Differenzpaarberechnungen gesprochen, und es gab auch ein Demo-Video! Lassen Sie uns jedoch die Berechnungen für dieses Beispiel wiederholen – ich zeige Ihnen, wie Sie mit ein paar lustigen Abkürzungen von „Informationen zur PCB-Fab-Website“ zu „richtigen Breiten- und Abstands-Differenzpaaren“ gelangen. Unser Aufbau besteht wiederum aus Signalen auf den äußeren Schichten, die sich auf die direkt darunter liegende Bodenschicht beziehen. Leider verstehe ich noch nicht, wie man die Differenzimpedanz für Signalschichten berechnet, die zwischen zwei Masseebenen liegen, das heißt – wenn es Kommentatoren gibt, die bereit sind, dieses Wissen zu teilen, würde ich mich über Ihren Beitrag sehr freuen! Im Moment sehe ich jedenfalls keinen greifbaren Nutzen aus einer solchen Vereinbarung.

Dieses Mal verwende ich einen 4-lagigen 0,8-mm-Aufbau, da die Platine sonst nicht in einen M.2-Sockel passt. Gemäß den Designregeln kann ich die Leiterbahnen und Abstände auf 3,5 mil (0,09 mm) reduzieren, im Gegensatz zu den üblichen 6 mil (0,16 mm) Leiterbahnen, die ich bei der Herstellung allgemeiner 2-Lagen-Platinen gewohnt bin. Zunächst wähle ich hier die Stapelvariante 7628 – der Hauptunterschied zwischen den Stapeln besteht hier in der Prepreg-Dicke und der Dielektrizitätskonstante, die sich auf die minimal mögliche Diffpair-Dicke und den minimal möglichen Abstand auswirkt.

Ich bin auf der JLCPCB-Stackup-Seite nach Parametern gesucht und habe die Parameter von der Bestellseite übernommen – Sie können diese Parameter in das Fenster „Datei => Board-Setup“ auf der Registerkarte „Netzklassen“ eingeben. Nachdem wir dort die Standardparameter durch die impedanzgesteuerten 4-Schicht-Prozessparameter ersetzt haben – Abstand, minimale Leiterbahnbreite, Durchkontaktierungsgröße usw. –, erhalten wir einige sehr schöne Parameter, auf die wir zurückgreifen können, wenn es jemals eine Engstelle gibt, und eine Möglichkeit um eine einigermaßen dichte Komponentenplatzierung zu erreichen.

Streben wir heute eine punktgenaue Differenzimpedanz von 85 Ohm an – ein großartiges Ziel, wo immer Sie es sich leisten können. Wiederum Leiterbahnen oben, ununterbrochene Grundebene direkt darunter, über die gesamte Länge der Paare. Für den „7628“-Aufbau bedeutet das, dass zwischen den Paaren und der Erde 0,21 mm Material mit 4,6 Er vorhanden sind – geben Sie diese beiden Werte in den Rechner ein, belassen Sie die Kupferdicke bei 35 µm (1 Unze Kupfer), und wir können mit dem Leiterbahnraum herumspielen und Breitenwerte bis zu unserer Grenze von 0,09 mm – was uns zu einer Option mit 0,225 mm Breite und 0,09 mm Zwischenraum führt. Platztechnisch ist das allerdings nicht so toll.

Sie müssen jedoch nicht beim Standard-Stackup bleiben! Nach kurzer Überlegung wechselte ich zum Aufbau „3313“ – mit 4,05 Er und 0,1 mm dickem Prepreg zwischen Ober- und Mittelschicht. Es scheint etwas teurer zu sein, aber es sieht auf dem kleinen Platz, den ich habe, etwas einfacher aus, es zu verlegen. Dies führte mich zu 0,135-mm-/0,09-mm-Paaren unter Beibehaltung der gleichen Differenzimpedanz von 85 Ohm. Jetzt muss ich nur noch diese Parameter in die Tabelle „Netzklassen“ eingeben und jedes Mal, wenn ich „6“ drücke, beginne ich sofort mit dem Zeichnen eines Differenzpaars mit einer Impedanz von 85 Ohm.

Der IC ist platziert, die Diffpair-Parameter sind abgestimmt – wir können mit dem Zeichnen beginnen. Denken Sie daran, dass das Umdrehen der Polarität des PCIe-Paares kein Verbrechen ist, sondern eine Verpflichtung, Ihnen das Routing zu erleichtern. Irgendwie wurde es in diesem Design kein einziges Mal benötigt.

Sie brauchen jedoch ein wenig Geduld – das Differentialpaar-Zeichnen in KiCad ist nicht immer reibungslos; Wenn Sie seltsame Probleme haben, bei denen ein Ende des Paares nicht richtig mit dem anderen Ende verbunden werden kann, sind Sie nicht allein. Für mich war das Zeichnen dieser Paare ein wenig ärgerlich. Es ist denkbar, dass ich es mit etwas zu tun habe, das gemeinhin als Skill-Problem bezeichnet wird – vielleicht gibt es eine Einstellung, die mir nicht auffällt, da solche „keine Verbindung herstellen“-Probleme manchmal durch DRC-Einschränkungen verursacht werden. In diesem Fall wird Ihnen jedoch in der Leiste oben eine Warnung angezeigt.

Denken Sie daran, dass jedes Mal, wenn Ihr Diffpair von der oberen zur unteren Ebene oder umgekehrt wechselt, auch die Referenzebenen geändert werden, von In1 auf In2 – und Sie sollten Erddurchkontaktierungen in der Nähe der Diffpair-Durchkontaktierungen hinzufügen, damit der Erdrückstrom fließen kann auch entlang des Paares. Wie üblich sind vier Durchkontaktierungen ideal, drei gut, zwei in Ordnung und eine nicht ideal, aber besser als Null.

Sobald wir Diffpairs gezeichnet und Massedurchkontaktierungen hinzugefügt haben, müssen wir uns noch um eine letzte Sache kümmern. Während PCIe-Paare nicht alle die gleiche Länge haben müssen, müssen die beiden Leiterbahnen, aus denen jedes Paar besteht, von Ende zu Ende gleich sein. Zu diesem Zweck können Sie das Differenzialpaar-Skew-Korrekturwerkzeug verwenden, das der Ziffer 9 auf der Tastatur zugeordnet ist. Dadurch wird der längeren Spur ein Wackeleffekt hinzugefügt, und zwar an der Stelle, an der ein Wackeleffekt am besten passt.

Beim Zeichnen von Platinen können Sie häufig eine interne GND- und eine VCC-Schicht verwenden – da technisch gesehen sowohl VCC als auch GND als Referenzebenen für Hochgeschwindigkeitssignale verwendet werden können. Da wir jedoch Diffpairs zwischen der oberen und der unteren Ebene kreuzen, hätten sie dann unterschiedliche Referenzen, und das ist für mich immer noch unerforschtes Terrain – ich bin mir nicht sicher, ob es Probleme mit dem Rückstrom geben würde. Ich habe mit einer 1,2-V- und einer GND-internen Ebene begonnen, aber danach, als ich meine Platinen auf ihre Vernunft überprüfte und diesen Artikel schrieb, sprach ich mit anderen Ingenieuren und las noch einmal einen interessanten Kommentarthread unter dem ersten PCIe-Diffpair-Artikel und beschloss, beide internen Ebenen als GND zu verwenden.

Wenn es um die äußeren Schichten geht, in denen sich die Diff-Paare befinden, sollten Sie die Erdungsfüllung entfernen oder an einen anderen Ort verlegen, damit die Erdungsfüllung um das Paar herum die Impedanz des Diff-Paars beeinflusst – wenn Sie dies tun, ist die Wahrscheinlichkeit hoch, dass Sie eine Erdungssperre sehen Schauen Sie sich jede PCIe-Karte an, die Sie besitzen. Hier werde ich Diffpairs auf den äußeren Schichten verlegen, aber ich werde den Boden auf diesen nicht vollständig entfernen und stattdessen Keepouts verwenden. Zunächst einmal ist die Erdung kühl – es handelt sich um zusätzliches Kupfer, das dazu beitragen kann, die Wärme vom Schalter, vom Schaltregler oder von beiden abzuleiten. Zweitens war JLCPCB in letzter Zeit seltsam, wenn es um Bodenauffüllungen auf dichten Brettern ging, und das möchte ich vermeiden.

Wie weit sollte der Keepout dann gehen? Die 5L-Regel (fünf Leiterbahnbreiten entfernt) ist eine gute Lösung, oder Sie können einfach den gesamten Bereich auslassen, in dem Sie die Differentialpaare ziehen. Für uns bedeutet 5L 5 * 0,135 mm oder 0,685 mm Abstand zwischen dem Paar/Via und der Bodenfüllung. Die 5L-Regel ist keine feste Grenze – halten Sie sich so weit wie möglich daran, aber machen Sie sich keine Sorgen darüber, dass hier und da ein paar Durchkontaktierungen vorhanden sind. Denken Sie daran, dass es beim Verkabeln von PCIe wichtig ist, dass der String nass ist.

Verwenden Sie für Stromkabel möglichst dicke Leiterbahnen, wo immer Sie Platz haben. Natürlich müssen Sie keine 2-mm-Leiterbahn dorthin ziehen, wo Sie 3,3 V anlegen möchten, aber 0,6-mm- oder 1-mm-Leiterbahnen auf einem 3,3-V-1-A-Pfad zu haben, ist ziemlich normal – manche werden sagen, dass es übertrieben ist, aber wenn Sie Wenn Sie genügend Platz haben, bringt es kaum etwas, es nicht zu tun. Wenn Sie sich fragen, womit Sie durchkommen können, gibt es Leiterbahnbreiten-Rechner, die Ihnen Temperaturanstiegs- und Induktivitätswerte liefern, aber in den meisten Fällen ist es ein Kinderspiel, die Leiterbahn dicker zu machen.

Nachdem wir PCIe- und Stromsignale verkabelt haben, bleiben noch ein paar Dinge übrig. Es könnte verlockend sein, sie auf den inneren Bodenschichten zu verlegen – versuchen Sie jedoch, der Versuchung zu widerstehen, denn es gibt normalerweise einen besseren Weg; Ununterbrochene innere Ebenen gelten allgemein als gutes Mojo für Diffpairs und für Signale im Allgemeinen. Ziehen Sie stattdessen andere nicht standardmäßige Optionen in Betracht, die weniger schädlich sind – zum Beispiel ist es in Ordnung, Lötpads von einem Footprint zu entfernen, wenn das Pad nicht verwendet wird, und das werde ich tun, um eines der PEST-Signale durch die Oberseite zu ziehen Schicht.

Dieser Entwurf trifft in vielerlei Hinsicht ins Schwarze. Es ist kompakt, bietet Platz für alles, was Platz haben soll, und die Stromversorgung an Bord ist mehr als angemessen. Natürlich gibt es ein paar mögliche Probleme, die ich vorhersehen kann und die ich überprüfen werde, sobald diese Boards hergestellt sind.

Ein PCIe-Switch arbeitet mit hohen Geschwindigkeiten, daher ist es sinnvoll, dass der Stromverbrauch etwas hoch sein könnte, und das Gleiche gilt auch für die Wärmeableitung – tatsächlich werden Sie Chips mit höherer Portanzahl wie diese sehen, die bei Chinesen mit aufgeklebten Kühlkörpern bedeckt sind Adapter; Meine größte Sorge ist der Stromverbrauch – eine M.2-E-Key-Karte wird voraussichtlich höchstens 2 A verbrauchen, und der Spitzenstromverbrauch des Switches zusammen mit der eingesteckten Karte selbst könnte dieses Budget mit Sicherheit übersteigen.

Um das zu lösen, füge ich einen separaten Stromeingang hinzu und zeichne Leiterbahnen so, dass es bei Bedarf einfach ist, den 1,2-V-Regler-3,3-V-Eingang von der Stromversorgung der E-Key-Karte zu trennen. Meine zweite Sorge bezüglich des Stromverbrauchs ist jedoch die Wärmeableitung – es gibt nicht viel thermische Masse auf dieser Platine und der Erdungspfad ist nicht sehr geradlinig, sodass der Chip unter Last theoretisch überhitzen könnte. Sobald der Adapter an einen Laptop angeschlossen ist, wäre auch kein Platz mehr für einen Kühlkörper – wir werden sehen, wie problematisch das in der Praxis ist.

Jedes Board kann ein kleines Experiment sein, und dieses hier hat definitiv ein paar Dinge, die ich noch nie zuvor ausprobiert habe. Ich habe dieses Board zu meiner letzten Leiterplattenbestellung hinzugefügt und sobald es eintrifft, werde ich das Endergebnis auf die eine oder andere Weise mit euch allen teilen. Bis dahin sind die Dateien auf GitHub und ich hoffe, dass die Geschichte dieses Boards Ihnen viele Einblicke in das Design mit PCIe gibt!