banner
Nachrichtenzentrum
Umfangreiche Erfahrung gepaart mit modernster Ausrüstung

PCIe für Hacker: Eine M.2-Kartenreise

May 14, 2024

Ich habe ein paar M.2-Adapter für mich selbst und die meiner Freunde entworfen, und nachdem ich diese Designs online gefunden hatte, fragten mich die Leute nach maßgeschneiderten Adaptern. Eine dieser Anfragen ist recht konkret – ein Adapter, der eine weitere PCIe-Verbindung zu einem E-Key-M.2-Steckplatz hinzufügt, der Art von Steckplatz, die man in Laptops für WLAN-Karten verwendet.

Sehen Sie, die M.2-Spezifikation erlaubt zwei separate PCIe-Links, die mit dem E-Key-Steckplatz verbunden sind; Abgesehen von einigen wirklich alten WiGig-fähigen Karten nutzen dies jedoch keine WLAN-Karten, und die Hersteller haben den Anschluss einer zweiten Verbindung schon lange aufgegeben. Dennoch gibt es einige Karten wie den Google Coral M.2 E-Key Dual AI Accelerator und den kürzlich angekündigten uSDR, die tatsächlich den zweiten Link benötigen – ansonsten steht nur die Hälfte ihrer Kapazität zur Verfügung.

Es ist nicht klar, warum sowohl Google als auch WaveletSDR einen Dual-Link-E-Key-Sockel entwickelt haben, da solche selten vorkommen; Für die Google-Karte beschweren sich viele Leute darüber, dass das von ihnen gekaufte Board einfach nicht vollständig funktioniert. Um in einer solchen Situation Abhilfe zu schaffen, müssen Sie theoretisch nur einen zweiten PCIe-Link von irgendwoher besorgen und ihn dann mit dem Sockel verkabeln – und die perfekte Möglichkeit hierfür ist die Anschaffung eines PCIe-Switch-Chips. Sie verlieren etwas an Bandbreite, da die Uplink-PCIe-Verbindung des Switches nur begrenzt schnell sein kann; Für Dinge wie diesen KI-Beschleuniger ist das kein großes Problem, da es vor allem darum geht, das zweite Gerät zugänglich zu machen. Für den oben genannten SZR könnte es sich als nutzlos herausstellen, oder Sie könnten etwas gewinnen, aber etwas verlieren – das wissen Sie erst, wenn Sie es versuchen!

Das ist ein Hacker-freundliches Problem, das wir aus Spaß und mit Lernmöglichkeiten lösen können! Mit einem ausreichend kleinen PCIe-Switch-Chip könnten wir eine M.2-Kartenplatine herstellen, die auch über einen M.2-Sockel verfügt, und einen PCIe-Switch dazwischen platzieren, um den eingehenden PCIe-1x-Link in zwei ausgehende 1x-Links aufzuteilen.

Darüber hinaus wurde dieses Problem sogar schon einmal gelöst. Dieser genaue Adapter wurde bereits von jemandem online hergestellt – er ist jedoch eindeutig nicht Open Source und sein Ersteller hat nie damit begonnen, ihn zu verkaufen, da er angeblich kein Interesse daran habe. Der Adapter, den wir heute entwerfen, wird vollständig und ordnungsgemäß offen sein – jeder kann seinen eigenen Adapter wie diesen herstellen lassen, wenn er einen benötigt, daraus lernen oder ihn in etwas anderes umwandeln.

Auf der PCIe-Switch-Seite habe ich letztes Mal einen kleinen, günstigen und wenig erforschten PCIe-Switch-Chip erwähnt – den ASM1182e, der in der Lage ist, aus einem zwei PCIe-x1-Links zu erstellen. Es ist problemlos bei Aliexpress erhältlich, wird auf vielen PCIe-Split-Karten aus China verwendet, kostet nach Versand 6 US-Dollar und scheint wartungsarm zu sein – geringe Anzahl externer Komponenten, eigenständiger Betrieb, einfache Verkabelung. Leider haben wir einfach kein Datenblatt dafür, das ich finden könnte – es gibt jedoch eine Menge Informationen, die wir verwenden können, um unsere eigenen Platinen zu erstellen, und ich zeige Ihnen, wie Sie möglicherweise sogar Chips entwerfen können wenn Sie ihre Datenblätter nicht haben.

Heute lösen wir ein seit langem bestehendes Problem für eine Hardware-Nische, indem wir einen M.2-Adapter mit insgesamt drei PCIe-Links entwickeln und einen PCIe-Switch-Chip rückentwickeln, ohne dass Datenblätter verfügbar sind. Ich möchte dieses Board auch als Herausforderung dicht packen und Ihnen zeigen, was es braucht, von einer schematischen Seite bis hin zu einer zusammengebauten Karte.

Ich verwende eines meiner M.2-Adapterdesigns als Basis für dieses Design – insbesondere einen A+E-Key-zu-M-Key-Adapter, mit dem Sie eine SSD in den WLAN-Kartensteckplatz eines Laptops einsetzen können. Das hier ist eine zweischichtige Platine, denn das könnte es sein, aber heute reichen zwei Schichten nicht aus – dieses Design benötigt vier Schichten, da die korrekte Verlegung der PCIe-Links und die Erdung überall sonst viel zu intensiv werden würden! Wenn Sie das Design einer anderen Person für Ihre Zwecke wiederverwenden können, tun Sie dies auf jeden Fall – dieses hat getestete Symbole und Fußabdrücke, was bedeutet, dass ich weniger Variablen erneut überprüfen muss! Dadurch müssen wir eine M.2-Karte nicht von Grund auf neu entwerfen.

Das Gleiche gilt für den Referenzschaltplan, von dem wir den ASM1182 rückentwickeln können – insbesondere von einem in Massenproduktion hergestellten Laptop. Heute haben wir Glück – Clevo ist eines der wenigen Unternehmen, das eine Tradition in der Veröffentlichung von Schaltplänen für seine Laptops hat (oder hatte), was wahrscheinlich auch daran liegt, dass sie im Gegensatz zu allen anderen Laptop-Herstellern tatsächlich ihre eigenen Mainboards entwerfen. Die einzige andere Laptop-Firma, die ich gesehen habe, die Schaltpläne veröffentlicht hat, ist Framework, deren Mainboard an Subunternehmer vergeben wird (die Norm im Laptop-Bereich) und bei der es sich um eine Teilplatine handelt, bei der alle möglicherweise NDA-konformen Teile entfernt wurden. Auf dem Schaltplan, nach dem wir heute suchen, gibt es keinerlei Vertraulichkeitsvermerke – trotzdem gebe ich keinen Link an, aber es ist zweifellos das erste Ergebnis in Ihrer bevorzugten Suchmaschine, insbesondere wenn Sie nach P75xZM_ESM.pdf suchen.

Für die Zwecke des Schreibens dieses Artikels ist es ein Glück, dass dieser spezielle Schaltplan in keiner Weise problematisch erscheint. Offenbar ist es ziemlich ungewöhnlich, dass Unternehmen Deaktivierungsanfragen an Schaltplan-Hosting-Sites richten, aber diese mit Informationen gefüllten PDFs befinden sich bestenfalls in einer rechtlichen Grauzone, wenn es um die Verbreitung geht – Sie werden sehen, dass argumentiert wird, dass sie unter irgendeine Form fallen geistiges Eigentum, und Sie erinnern sich vielleicht an einen Streit mit Apple über die „Anzeige von Schaltplänen im Stream“, der Louis Rossmann ins Rampenlicht rückte. Das heißt, wenn Sie persönlich jemals einen online gefundenen Schaltplan für Reverse-Engineering- und Designzwecke verwenden, selbst wenn darauf überall „VERTRAULICH“ steht, gibt es keinen Hinweis darauf, dass Sie einem Risiko ausgesetzt sind – das machen die Leute schon seit Ewigkeiten mit ThinkPads , Apple-Technologie und sicherlich hier und da zufällige Laptops.

Was haben wir aus diesem Schema herausgefunden? Nun, die gesamte Seite 93 des Datenblatts ist dem ASM1182 gewidmet, mit einem vollständigen, getesteten und funktionierenden Schaltkreis, der tatsächlich in einem Laptop geliefert wurde. Es ist zwar kein Datenblatt, aber es hat ein Symbol mit Pin-Namen und ist vollständig verdrahtet, sodass es für uns mehr als genug ist, den Schaltkreis zu kopieren; Es werden sogar Beschreibungen für Riemenstifte aufgeführt, was in Schaltplänen selten zu finden ist. Außerdem ist es im Grunde die einzige Information darüber, die ich online finden konnte, und ich habe auf jeden Fall gesucht!

Es gibt noch eine weitere Referenzquelle – ein Open-Source-KiCad-Board mit einem ASM1184, ein wunderbares Projekt von [will127534], mit dem Sie vier NVMe-SSDs an einen Raspberry Pi CM4 anschließen können, und unser Hacker hat das ASM1184 gerade so weit zurückentwickelt, dass es hergestellt werden kann ein voll funktionsfähiges Board. Es gibt auch ein paar zusätzliche Informationen zum Strombedarf – wir sehen zum Beispiel, dass alle Stromanschlüsse mit der gleichen Spannung miteinander verbunden sind und es nicht so aussieht, als ob wir tatsächlich mehrere 3,3-V- oder 1,2-V-Stromschienen benötigen, selbst wenn das der Fall ist Pin-Namen sind unterschiedlich. Das Verbinden aller Pins untereinander ist etwas, was der Laptop-Schaltplan auch tut, allerdings auf Umwegen, daher ist es gut, Sicherheit zu haben.

Eine Sache, die im Schaltplan nicht aufgeführt ist, ist der QFN-Gehäusetyp des ASM1182 – also der Pad-Abstand. Unser ASM1184 zeigt jedoch, dass er einen Rastermaß von 0,5 mm hat, was meiner Meinung nach innerhalb der IC-Familie gleich bleiben wird, und KiCad verfügt über 48-Pin-QFN-Footprints mit einem Rastermaß von 0,5 mm, die perfekt zu dieser Anforderung zu passen scheinen. Genau wie beim Pi Pico gibt es rund um das Gehäuse 3,3-V- und 1,2-V-Pins – für 1,2 V habe ich mich ursprünglich für eine innere Ebene entschieden, aber 3,3 V könnten hinter den Pins, zwischen ihnen und dem Erdungspad, herumlaufen. Ich habe mich dafür entschieden, die Größe des Erdungspads zu verringern – das kann man auf einem QFN einigermaßen sicher machen, und mein Ziel ist es, dort sowohl 1,2-V-Durchkontaktierungen anzubringen als auch eine zusätzliche Leiterbahn ziehen zu können. Hierfür eignet sich die Größe des Erdungspads von 4 mm perfekt und verringert sich von den ursprünglichen 5,3 mm.

Obwohl wir kein Datenblatt haben und der Chip einigermaßen kompliziert ist, scheinen wir letztendlich alles zu haben, was wir zum Entwerfen einer Platine benötigen könnten! So viel Glück werden Sie nicht immer haben – aber jetzt wissen Sie, dass unzugängliche Datenblätter nicht das Ende sind.

Ich habe das ASM1182-Symbol in KiCad neu erstellen lassen und das Routing des Schaltplans war super einfach – ausgehend von dem M.2-Buchse-zu-Buchse-Adapterdesign, das ich hatte, habe ich das ASM1182 hinzugefügt und die Signale der drei verdrahtet PCIe-Links, einer zum Kartenrand und zwei zum Onboard-Sockel, kopierten praktisch alles, was der Laptop-Schaltplan enthielt, und begannen dann mit der Auswahl der Komponenten-Grundfläche, der Schätzung der Platzierung der Platinenkomponenten und der Überlegung, wie das Design aussehen könnte.

Wie üblich sind 80 % einer erfolgreich gerouteten Leiterplatte die richtige Platzierung der Komponenten, 80 % gute Routing-Entscheidungen und die restlichen 80 % sind größtenteils Hellsehen – wenn Sie bei der letzten Frage nicht gut sind, machen Sie sich keine Sorgen, seien Sie einfach vorbereitet ein- oder zweimal Teile der Platine neu zu gestalten.

Hier war die Komponentenplatzierung täuschend einfach – ich habe einen vorhandenen M.2-Adapter als Basis für den Umriss genommen und den Verbindungspins des M.2-Sockels PCIe-Switch-Ausgangsverbindungen so zugewiesen, dass das PCIe-Diffpair-Routing größtenteils kurz und lang ist süß. Danach habe ich den PCIe-Schalter auf der Unterseite so platziert, dass auf zwei intensiver aussehenden Seiten ausreichend Platz für das PCIe-Diffpair-Routing und auf der anderen Seite etwas Platz für alle Widerstände der PCIe-Schalterkonfiguration vorhanden ist. Dennoch ist es hilfreich, dass ich schon seit einiger Zeit Platinen entwerfe und ein Auge für eine gute Komponentenplatzierung habe – wenn man am Anfang ist, kann es sein, dass man es beim ersten Mal nicht richtig hinbekommt, also machen Sie sich etwas Zeit und fragen Sie die Leute für eine Designüberprüfung und notieren Sie sich, was andere Leute tun, wenn sie ihre eigenen Boards entwerfen.

Für den Zusammenbau einer solchen Platine wäre mehr oder weniger eine Schablone erforderlich – ein ASM1182 mit 0,5 mm Rastermaß und ein M.2-Sockel bedeuten, dass die Lötkolbenmontage ziemlich aufwändig ist und die Schablonenherstellung im Vergleich schnell geht. Ich verwende auf dieser Platine 0402-Komponenten – da ich sie sowieso schabloniere, gibt es keinen guten Grund, dies nicht zu tun, und größere Komponenten würden viel mehr Platz auf der Platine beanspruchen. Es muss auch eine beidseitige Montage erfolgen – ich wette nicht darauf, dass unter der eingesetzten Karte vertikaler Platz für irgendwelche Komponenten vorhanden ist und dass die Hälfte des Platzes auf der oberen Ebene von der Kartenkante und dem Sockel eingenommen wird bedeutet für uns einen großen Nachteil bei der einseitigen Platzierung. Normalerweise ist es nicht so komfortabel, eine Platine mit Komponenten auf beiden Seiten zu schablonieren, aber hier möchte ich es trotzdem versuchen und es doppelseitig machen, und es sollte trotz aller Probleme immer noch möglich sein, es zu schablonieren.

Alles in allem wird dies ein einigermaßen einfach zu entwerfendes und zu bauendes Board sein, solange wir die Dinge gut planen! Wenn Sie eine solche Platine verlegen, können Sie zunächst mit den empfindlichen Hochgeschwindigkeitssignalen beginnen und dabei die Stromschienen und die Erdung im Auge behalten. Dann können Sie die Stromschienen und die Erdung verlegen und dabei die Signale mit geringer Bedeutung im Auge behalten. Wichtigkeitssignale. Hier löste die Drehung des ICs in eine der vier Richtungen die meisten Routing-Probleme – indem beide PCIe-Ausgangsverbindungen dort platziert wurden, wo sie erwartet wurden, und die Upstream-Verbindung so gedreht wurde, dass sie problemlos von der Karte geroutet werden kann Kantenverbinder.

Für einen IC ist die richtige Stromversorgung erforderlich, und noch mehr für einen schnellen PCIe-Switch. Ich habe kein Datenblatt, auf das ich mich beziehen kann, wenn es um Spitzen- und Leerlaufverbrauchswerte geht, aber in dem Schaltplan des Laptops, der mir vorliegt, ist ein eigener 2-A-Linearregler für die 1,2-V-Schiene vorhanden. Ich persönlich werde mich für den Schaltregler SY8089 entscheiden, ein bewährtes Teil eines bekannten chinesischen Herstellers. Da einige der Pins als AVDD gekennzeichnet sind, vermute ich, dass eine gewisse Rauschunterdrückung wünschenswert sein könnte, aber bisher verbinden beide Schaltpläne, die wir gesehen haben, lediglich alle Strompins mit den nicht analogen vorangestellten Pins.

In der Regel benötigen Sie einen Kondensator pro IC-Stromanschluss. Meine übliche Taktik besteht darin, eine Menge Kondensatoren in den Schaltplan einzufügen, sie entsprechend den Stromanschlüssen, die ich sehe, rund um den Chip zu platzieren und die überzähligen anschließend zu löschen. Ich habe gesehen, dass Leute zur Entkopplung sowohl 1 uF- als auch 100 nF-Kappen verwenden, aber es ist nicht klar, ob hier ein großer Vorteil von 1 uF gegenüber 100 nF besteht – ich werde an den meisten Orten 100 nF-Kappen verwenden, weil sie etwas kleiner sind billiger, und fügen Sie ein oder zwei uF an Stellen hinzu, an denen der Strom möglicherweise schwerer fließen kann, und zwar spurweise weiter von der Stromquelle entfernt. Dies sind natürlich keine exakten Werte – es handelt sich eher um einen Bereich, und das Vorhandensein eines Kondensators an einem Stromeingang ist oft viel wichtiger als sein ganz spezifischer Wert, was die IC-Entkopplung betrifft, außerdem variiert die resultierende Kapazität ohnehin stark. abhängig von der angelegten Spannung, der Temperatur und den Fertigungstoleranzen des Kondensators. Dies sind die Regeln für Entkopplungskondensatoren, die ich und viele andere bei eigenen Designs befolgen. Wenn Sie mehr über Faustregeln und tatsächliche Gründe für die Auswahl und Platzierung von Entkopplungskondensatoren erfahren möchten, stehen Ihnen zahlreiche Informationen zur Verfügung gestartet.

Dennoch handelt es sich hierbei um wichtige Kondensatoren, die einen digitalen Chip mit seinem stark spitzen Stromverbrauchsmuster auf einer stabilen Spannung ohne Stromausfall halten sollen und den Strom ergänzen, der durch den Weg von der Stromversorgung fließt – ein Weg, der tendenziell langwierig ist und elektrisch dornig, hohe Induktivität und alles. Am Ende habe ich besonders darauf geachtet, dass alle Stromanschlüsse irgendwo in der Nähe Kondensatoren haben, und zwei 1uF-Kondensatoren in weiter entfernten 3,3-V- und 1,2-V-Bereichen hinzugefügt. Auch hier handelt es sich eher um eine auf Vibrationen basierende Platzierung, aber sie funktioniert in der Regel gut. Jeder Entkopplungskondensator muss einen guten Weg sowohl zu seiner Stromschiene als auch zu GND haben – Durchkontaktierungen wirken Wunder für GND, da wir auf der gesamten Platine zwei GND-Schichten haben, und für 3,3 V mit 1,2 V Spuren unter dem IC oder sogar auf internen Schichten sollte auch gut funktionieren.

Jetzt haben wir mindestens 80 % dieser Platine fertiggestellt – es ist Zeit, sie zu verlegen. Erinnern Sie sich an die Routing-Reihenfolge? Zuerst Hochgeschwindigkeit, dann Strom und Masse, dann Signale von geringer Bedeutung. Wenn die Hochgeschwindigkeitssignale nicht funktionieren, könnte das Board genauso gut kaputt sein, und es ist ziemlich schwer, im Nachhinein noch etwas dagegen zu tun. Wenn die Stromverteilung nicht funktioniert, funktioniert die Platine nicht richtig, aber daran lässt sich leichter etwas ändern. Und wenn Signale von geringer Bedeutung verwechselt werden, kann man sie in der Regel leicht verfälschen!

Daher beginnen wir unser Routing mit Diffpairs – nächste Woche werden wir die Platinenparameter in einen Rechner eingeben, um Leiterbahnbreite und -abstand zu ermitteln, die Paare so richtig zu zeichnen, wie es der Platz auf der Platine zulässt, und ihre Länge ein wenig anpassen – mit einem Video auch eine Demonstration!