Das Unternehmen Raspberry Pi hat den wohl beliebtesten und am weitesten verbreiteten Einplatinencomputer auf dem Markt entwickelt. Diese leistungsstarken Einplatinencomputer werden schon lange nicht mehr nur in der Maker- und Hobbyistenszene eingesetzt, sondern auch im industriellen Bereich.
Mit der Ausweitung des Anwendungsbereichs etabliert sich der Formfaktor dieser Boards als 'de facto' Standard für Einplatinencomputer und Module. Die Einführung des Compute-Moduls CM4 Ende 2020 markierte die Etablierung eines neuen Formfaktorstandards für System-on-Modules.
Seitdem haben sich verschiedene SoCs von Herstellern wie Allwinner und Rockchip zusammen mit robusten FPGAs nahtlos in den weit verbreiteten CM4-Formfaktor integriert.
Das Pi.MX8-Modul wird der Liste der CM4-kompatiblen Module beitreten.
Bei all dieser Vielfalt an kompatiblen SoMs, warum sollten wir Zeit investieren, um eine weitere Variante zu entwerfen?
Die Antwort ist einfach: Wenn wir ein komplexes und manchmal kostspieliges System um ein Computermodul herum aufbauen, wollen wir auch über die Gestaltungshoheit des Moduls selbst verfügen. Wir möchten Zugang zu den Schaltplan- und Layout-Quelldaten haben, wir möchten im Falle von Komponentenknappheit selbst über die BOM des Moduls entscheiden können und vor allem möchten wir Zugang zur Dokumentation aller auf der Leiterplatte verwendeten Komponenten haben.
All dies ist nur im Rahmen eines vollständig Open-Source-Projekts möglich, das Komponenten mit leicht zugänglicher Dokumentation verwendet.
Bild der vorherigen Pi.MX8 Layout-Revision
In diesem und den folgenden Artikeln werden wir uns mit dem Entwurf eines vollständig Open-Source CM4-kompatiblen Moduls beschäftigen. Am Ende unserer Reise werden die Quelldaten für das CM4-kompatible Modul zur Überprüfung, Modifikation oder Weiterentwicklung veröffentlicht!
Der Kernbaustein, den wir definieren müssen, bevor wir irgendwelche Peripheriekomponenten wählen, ist das System-on-Chip. Es gibt ein SoC, das alle Anforderungen an leicht zugängliche Dokumentation erfüllt und in der Industrie weit verbreitet ist, der i.MX8M Plus von NXP.
Dieser SoC ist in mehreren Varianten verfügbar, die von zwei bis vier Cortex-A53-Kernen reichen, die mit bis zu 1,8 GHz getaktet sind. Zusätzlich ist ein sekundärer Cortex M7 Kern und ein integrierter Beschleuniger für maschinelles Lernen in dieser Prozessorserie verfügbar.
Hardwaremerkmale des i.MX8M Plus SoC - Bildquelle: NXP-Website
Der i.MX8 bietet fast alle Peripherieschnittstellen wie der BCM2711, der im Raspberry Pi CM4-Modul verwendet wird, mit einer wichtigen Ausnahme:
Nur eine HDMI-Schnittstelle ist beim i.MX8 verfügbar, verglichen mit zwei Ports beim BCM2711. Diese Einschränkung könnte durch die Verwendung einer DSI-zu-HDMI-Brücke umgangen werden. Um die Anzahl der Teile und die Komplexität niedrig zu halten, wird dieser IC vorerst nicht in unser Modul integriert.
Abgesehen von der zweiten HDMI-Schnittstelle ist der i.MX8 eine großartige Wahl für unsere Anwendung!
Das hochrangige Blockdiagramm des Moduls besteht aus nur wenigen Schlüsselkomponenten. Der zentrale Baustein ist der i.MX8 SoC, der alle Schnittstellen für die notwendigen Peripheriekomponenten bereitstellt. Einfach ausgedrückt, wir bauen ein Breakout-Board für den i.MX8-Prozessor:
Blockdiagramm des Pi.MX8
Beginnen wir mit der Betrachtung der Stromversorgung für das System. Der Power Management IC (kurz PMIC) liefert mehrere Spannungsschienen, die vom SoC benötigt werden, ist aber auch darauf ausgelegt, Strom für Schnittstellen wie den SD-Kartenanschluss zu liefern.
Der PMIC ist auch verantwortlich für die Sicherstellung der korrekten Einschalt- und Ausschaltsequenz, was bei größeren SoCs ziemlich kompliziert werden kann.
NXP bietet einen PMIC an, der speziell für die Verwendung mit den i.MX 8M Anwendungsprozessoren entwickelt wurde. Dieser IC liefert bis zu 11 Spannungsschienen, die durch eine Kombination aus Buck-Konvertern und LDOs erzeugt werden. Die Kernspannungen für den SoC werden von Buck-Konvertern erzeugt, da der Strombedarf bei den niedrigen Betriebsspannungen recht hoch ist. Die Spannungsschiene, die die vier A53 Kerne versorgt, wird von einem zweiphasigen Buck-Konverter im PMIC erzeugt, um den hohen Strombedarf zu befriedigen.
Der PMIC, den wir verwenden werden, ist der PCA9450.
Ein NOR-Flash mit geringer Kapazität kann verwendet werden, um plattenspezifische Daten sowie ein Bootmedium zu speichern. Der i.MX8 SoC unterstützt unter anderem mehrere SPI-Schnittstellen, um auf das Bootmedium zuzugreifen. In diesem Fall verwenden wir eine Quad-SPI-Schnittstelle, um eine 32MB SPI NOR-Flash anzuschließen.
Das Gerät ist ein IS25WP256D-RHLE von Integrated Silicon Solution, Inc.
Dieses spezifische Paket und Pinout ist auch von verschiedenen Herstellern erhältlich, was es möglich macht, die Komponente im Falle von Verfügbarkeitsproblemen auszutauschen.
Der Ethernet PHY muss Gigabit-Geschwindigkeiten sowie das Precision Time Protocol unterstützen, um mit der CM4-Funktionalität kompatibel zu sein. Die Schnittstelle zum SoC sollte eine reduzierte Gigabit-Media-Independent-Interface (RGMII) sein. Dieser Schnittstellentyp wird von einer Vielzahl von Ethernet PHYs für Embedded-Anwendungen unterstützt.
Wir werden den LAN8840 von Microchip Technology verwenden.
Dieser PHY unterstützt sowohl Gigabit-Geschwindigkeiten als auch hochpräzises Zeitstempeln gemäß IEEE 1588-2008 (v2). Das QFN48-Paket ist ebenfalls relativ kompakt, was wertvollen Platz auf dem Modul spart.
Wir werden Low-Power-DDR4-Speicher auf dem Pi.MX8-Modul verwenden. Mehrere Hersteller bieten LPDDR4-ICs im gleichen Paket und Pinout an, was es einfacher macht, auf Verfügbarkeitsprobleme zu reagieren oder mehrere Speicherkapazitäten zu unterstützen. Samsung und Micron sind die am häufigsten verwendeten Hersteller für LPDDR4-Geräte. Wir werden Geräte verwenden, die einen 32-Bit breiten Bus mit Übertragungsgeschwindigkeiten von 3733 Mbps unterstützen.
Der Pi.MX8 kann mit mehreren Speicherkapazitäten ausgestattet werden:
Tabelle der Speicherkapazitäten
Die Coral Edge TPU kann verwendet werden, um die Berechnung von neuronalen Netzwerken auf eingebetteten Geräten zu beschleunigen. Die Coral TPU wird oft in Form einer M.2-Erweiterungskarte verwendet und ist auch in einem kleinen LGA-Paket erhältlich.
Dieses Modul enthält den Tensor-Prozessor sowie den für den Betrieb der TPU notwendigen Energiemanagement-IC. Wir müssen diesem Modul eine PCIe-Schnittstelle bereitstellen, um die verfügbare Verarbeitungsleistung nutzen zu können.
Da dieses Modul nur für eine kleine Anzahl von Anwendungsfällen spezifisch ist und relativ teuer ist, werden wir es als eine Montagevariante implementieren.
WiFi und Bluetooth Low Energy sind eine der am häufigsten verwendeten drahtlosen Schnittstellen für IoT-Anwendungen. Wir werden ein MURATA LBEE5PK2BC-Modul als vollständig integrierte Lösung verwenden.
Dieses Modul bietet sowohl W-LAN als auch Bluetooth und minimiert die Anzahl der benötigten externen Komponenten. Nicht jede Anwendung benötigt eine drahtlose Konnektivität, weshalb das WiFi/BLE-Modul ebenfalls als eine Montagevariante implementiert wird.
Ein eMMC-Modul bietet bis zu 32GB Speicherkapazität für das Pi.MX8-Modul. Wie bei dem LPDDR4 DRAM können wir zwischen vielen Herstellern für das eMMC-Speichermodul wählen, die dem gleichen Paket- und Pinout-Standard entsprechen. Einer der am häufigsten verwendeten Hersteller für eMMC-Module ist SanDisk.
Der eMMC wird ebenfalls als eine Montagevariante implementiert, um die BOM-Kosten für Anwendungen zu sparen, die keinen hohen Bedarf an Speicherkapazität haben.
Bevor wir zum nächsten Schritt übergehen, das Schaltplan- und PCB-Design einzurichten, werfen wir einen schnellen Blick auf die Platzanforderungen für alle Komponenten, die wir gerade ausgewählt haben.
Zu diesem Zweck können wir die PCB-Bibliothekskomponenten einrichten und sie innerhalb des PCB-Umrisses des CM4-Formfaktors platzieren.
Testanpassung der Schlüsselkomponenten
Alle Schlüsselkomponenten passen auf die obere Schicht innerhalb des CM4-Formfaktor-Umrisses. Diese grobe Platzierung zeigt auch, dass wenig Platz für größere Komponenten auf der Oberseite bleibt. Die gepaarte Höhe der von uns verwendeten Board-to-Board-Steckverbinder beträgt nur 2mm. Dies beschränkt die Höhe der Komponenten, die wir auf der Unterseite der Leiterplatte platzieren können. Idealerweise werden alle Schlüsselkomponenten auf der Oberseite der Platine platziert, um Kollisionen mit Teilen zu vermeiden, die möglicherweise auf dem Trägerboard unter dem Modul platziert werden.
Spannende Updates stehen bevor! Mit der Auswahl der Komponenten abgeschlossen, geht unsere Reise weiter, um die Schaltpläne im kommenden Update zu finalisieren. Etwas im PCB-Layout-Screenshot am Anfang vermisst? Das liegt daran, dass es sich um eine ältere Revision handelt, und wir die gesamte Leiterplatte neu verlegen, um die neue Funktionalität zu integrieren. Begleiten Sie uns auf dieser Fahrt und folgen Sie dem Echtzeit-Fortschritt durch den eingebetteten A365-Viewer und unseren öffentlichen Arbeitsbereich! Verpassen Sie nicht – bleiben Sie dran für die spannende Transformation!