Pi.MX8 Projekt - Layout des Boards Teil 3

Lukas Henkel
|  Erstellt: Juni 21, 2024  |  Aktualisiert am: Juli 1, 2024
Pi.MX8_Kapitel_V

Kapitel

1
Introduction and Overview
| Created: January 18, 2024
2
Component placement and layout planning
| Created: February 06, 2024
3
Board Layout Part 1
| Created: February 22, 2024
4
Board Layout Part 2
| Created: March 21, 2024
5
Board Layout Part 3
| Created: June 24, 2024
6
PCB Assembly (and Testing)
| Coming soon

Willkommen zu einer neuen Folge des Pi.MX8 Open-Source-Computermodul-Projekts! In dieser Serie beschäftigen wir uns mit dem Design und dem Testen eines System-on-Module, das auf einem i.MX8M Plus Prozessor von NXP basiert.

In der letzten Aktualisierung haben wir die Vorbereitungen für das Layout abgeschlossen. Dies umfasste das Erstellen der Impedanzprofile, das Hinzufügen der Designregeln gemäß den Spezifikationen des Platinenherstellers und das Definieren von Bereichen, in denen spezielle Designregeln gelten sollen. Wir haben auch das Routing der LPDDR4-Schnittstelle abgeschlossen, allerdings noch ohne Längenabstimmung (vorerst).

Test of button

Bevor wir mit der Längenabstimmung der DRAM-Schnittstelle beginnen, werden wir uns das Routing der verbleibenden Schnittstellen auf dem Pi.MX8-Modul ansehen. Es gibt einige Hoch- und Niedriggeschwindigkeitsbusse auf der Platine, von denen einige breite parallele Busse sind, die viel Routingplatz beanspruchen. Um jedem Interface genügend Platz zuweisen zu können, werden wir zunächst einen groben Grundriss für jede Routingebene auf dem Modul erstellen.

Routingplanung

Der Routingplan wird uns helfen zu bestimmen, wie wir alle Hoch- und Niedriggeschwindigkeitsschnittstellen über die verfügbaren Signallagen verteilen. Indem wir im Voraus einen groben Leitfaden erstellen, können wir sicherstellen, dass wir genügend Routing-Fläche auf der Schicht zur Verfügung haben, an der wir gerade arbeiten. Dies hilft uns auch, Schichtübergänge zu minimieren und die Menge an Nacharbeit während des Routingprozesses zu reduzieren.

Es gibt mehrere Möglichkeiten, die Layoutplanung einzurichten, die hauptsächlich von den verfügbaren Werkzeugen abhängen. Wir benötigen lediglich ein einfaches Zeichenwerkzeug, das es uns erlaubt, über ein vorhandenes Bild zu skizzieren. In diesem Beispiel werden wir Inkscape verwenden.

In Inkscape können wir ein Hintergrundbild hinzufügen, das die Komponentenplatzierung und die ungerouteten Schnittstellen in Form von farbigen Luftdrähten zeigt. Beachten Sie, dass die Stromnetze in diesem Screenshot ausgeblendet sind, da wir uns nur auf die Netze konzentrieren werden, die auf den Signallagen geroutet werden. Im Schaltplan haben wir auf jedem Stromnetz eine Netzklassendirektive platziert, was es einfach macht zu identifizieren, welche Netze auf den Ebenen geroutet werden, indem einfach die zugehörige Netzklasse im Layout-Editor ein- oder ausgeblendet wird.

Für das eigentliche Routing fügen wir einfach Linien in Inkscape hinzu, um die Schnittstellen darzustellen, die wir auf der entsprechenden Ebene routen möchten. Wir können die Breite dieser Linien anpassen, um darzustellen, wie viele Signale in der Schnittstelle geroutet werden. Die Farbe der Linie kann aus dem Hintergrundbild ausgewählt werden, um leichter zu identifizieren, welche Schnittstelle dargestellt wird.

Da auch für die Ebenenübergänge Platz auf allen Ebenen zugewiesen werden muss, können wir am Ende jeder Linie einen Block hinzufügen, der den Ebenenübergang detailliert.

Layout planning in Inkscape with an Alum Designer screenshot as a background image

Layoutplanung in Inkscape mit einem Altium Designer Screenshot als Hintergrundbild

Sobald wir den oben beschriebenen Prozess für jede Routingebene wiederholt haben, können wir mit dem eigentlichen Routingprozess beginnen.

Routing der obersten Ebene

Mit einer Routing-Strategie an Ort und Stelle, beginnen wir damit, die Schnittstellen auf der obersten Schicht zu verlegen. Da wir das Fanout-Routing für die Komponenten auf der obersten Schicht bereits erledigt haben, können wir den gesamten verbleibenden Platz für das Signalrouting verwenden. Es ist nicht viel Platz übrig, aber was wir haben, kann immer noch genutzt werden, um das Routing auf den inneren Signallagen durch strategisches Platzieren von VIAs in Regionen, die das Routing auf den inneren Lagen später nicht stören werden, zu erleichtern. Dies ist ein weiterer Vorteil der Planung eines Layouts im Voraus, sonst wären diese Regionen in diesem Stadium nicht definiert.

Top layer routing of the PiMX8 module

Routing der obersten Schicht des PiMX8-Moduls

Beim Platzieren von Leiterbahnen auf der obersten Schicht sollten wir auch berücksichtigen, dass wir etwas Platz benötigen, um Funktionen wie Fiducials oder Beschriftungen auf der obersten Schicht hinzuzufügen. Mit Laser geätzte Datenmatrix-Codes können ebenfalls entweder eine solide Kupferfläche oder ein Bereich ohne Leiterbahnen erfordern, um einen homogenen Kontrast zu bieten, was bedeutet, dass diese Bereiche nicht für das Routing verwendet werden können.

Routing der inneren Signallagen

Die meisten Verbindungen werden auf den beiden inneren Signallagen platziert, die wir im Layer-Stack-Manager definiert haben. Beginnen wir mit dem Verlegen aller hochgeschwindigkeits-synchronen Schnittstellen. In unserem Fall könnten dies die MIPI-CSI, MIPI-DSI und LVDS Schnittstellen sein. Diese Schnittstellen verwenden alle eine Niederspannungsdifferenzsignalübertragung und führen eine dedizierte Taktleitung sowie mindestens zwei Datenleitungen. Sie benötigen viel Routingplatz, da die Länge jeder Datenleitung innerhalb eines bestimmten Zeitfensters an die Taktleitung angeglichen werden muss. Das Anpassen der Länge mehrerer Differenzialpaare kann viel Platz erfordern, da es sehr wahrscheinlich ist, dass eines oder mehrere Paare innerhalb der Schnittstelle eine signifikante Verzögerung einführen, die berücksichtigt werden muss. Indem wir diese Schnittstellen zuerst verlegen, können wir sicherstellen, dass später genügend Raum für die Längenanpassung zur Verfügung steht.

Das Platzieren von Rücklaufpfad-VIAs in der Nähe der Lagenübergänge dieser Hochgeschwindigkeits-Differenzialpaare ist ebenfalls wichtig, um die Signalintegrität zu gewährleisten. Die Rücklaufpfad-VIAs können Platz auf mehreren Lagen beanspruchen, daher sollten diese VIAs platziert werden, sobald ein Signalübergang erfolgt ist.

Als Nächstes können wir die anderen Hochgeschwindigkeitsschnittstellen wie PCIe, USB, HDMI und Ethernet routen. Diese Schnittstellen haben weniger strenge Anforderungen an die Längenabgleichung zwischen den Paaren, sodass wir nicht so viel Platz für den Längenabgleich aufwenden müssen. Eine solide Rückwegverwaltung und grundlegende Ansätze für das Hochgeschwindigkeitsdesign bei diesen Signalen sind dennoch sehr wichtig, auch wenn sie auf der Prioritätenliste für das Routing an zweiter Stelle stehen.

Zuletzt können wir die verbleibenden Schnittstellen mit niedrigerer Geschwindigkeit wie SDIO, GPIO, RGMII und andere verschiedene Busse wie UART oder I2C und SPI routen. Diese Schnittstellen arbeiten immer noch mit hohen Flankenraten, was bedeutet, dass wir sie immer noch als Hochgeschwindigkeitssignale behandeln müssen.

Routing inner signal layer 1

Routing der inneren Signallage 1

Routing inner signal layer 2

Routing der inneren Signallage 2

Routing der unteren Lage

Im Falle des PiMX8-Boards können wir die untere Lage in Bezug auf den verfügbaren Platz als eine innere Routinglage behandeln. Die meisten aktiven Komponenten sind auf der oberen Lage des Moduls platziert, wobei nur eine Handvoll Spannungsregler und passive Komponenten wie Entkopplungskondensatoren und Konfigurationswiderstände auf der unteren Lage verbleiben.

Die Routingpriorität auf der Unterseite entspricht der der inneren Lagen, daher beginnen wir mit den MIPI-CSI, MIPI-DSI und LVDS-Schnittstellen. Auf dem PiMX8-Modul kann ein Hochgeschwindigkeits-Multiplexer zwischen den DSI- und LVDS-Ports wählen. Dieses Bauteil wird nahe dem Board-zu-Board-Steckverbinder auf der Unterseite platziert. Aufgrund des Pinouts des Multiplexers gibt es eine signifikante Verzögerung auf einer der Signalleitungen, die mit dem Mux verbunden sind. Wir müssen dies während des Längenabgleichs genauer betrachten, aber wir müssen etwas Platz auf der Unterseite reservieren, um eine größere Verzögerung zuzulassen.

Multiplexer pinout with one long line in the interface

Multiplexer-Pinbelegung mit einer langen Leitung in der Schnittstelle

Bottom layer routing PiMX8 module

Routing auf der Unterseite PiMX8-Modul

Es gibt einige Szenarien auf dem PiMX8-Modul, die während der Verzögerungsabstimmung besondere Aufmerksamkeit erfordern. Wir werden intensiv X-Signale nutzen, um einige dieser Herausforderungen zu bewältigen. Was genau diese Herausforderungen sind und wie wir X-Signale einsetzen können, um eine präzise Verzögerungsabstimmung über ein von mehreren Schnittstellen geteiltes Bauteil zu ermöglichen, wird Teil des nächsten Updates sein. Bleiben Sie dran!

Über den Autor / über die Autorin

Über den Autor / über die Autorin

Lukas is a passionate hardware designer with more than 10 years of experience in the electronics industry. As a co-founder of his own engineering services company, he has had the privilege of working on many exciting projects, taking on challenges ranging from precision analogue design to high-speed PCB layout and power electronics.

As a strong supporter of the open-source philosophy, Lukas has made it his goal to give anyone interested an insight into the construction and functioning of modern electronic devices. Driven by that goal, he has founded the company Open Visions Technology (OV Tech GmbH), which aims to bring highly repairable, fully documented state-of-the-art consumer hardware to the market.

Lukas firmly believes that with today's online access to know-how and tools, anyone with an idea, drive, and passion can create extraordinary things. He is looking forward to being part of an enthusiastic community and is excited to see how people bring their ideas to life.

Ähnliche Resourcen

Verwandte technische Dokumentation

Zur Startseite
Thank you, you are now subscribed to updates.