La société Raspberry Pi a développé ce qui est probablement l'ordinateur monocarte le plus populaire et le plus utilisé sur le marché. Ces puissants ordinateurs monocarte sont utilisés depuis longtemps non seulement dans le milieu des amateurs et des bricoleurs, mais aussi dans le domaine industriel.
À mesure que le domaine d'application s'élargit, le format de ces cartes émerge comme un standard 'de facto' pour les ordinateurs monocartes et les modules. L'introduction du module de calcul CM4 fin 2020 a marqué l'établissement d'un nouveau standard de format pour les systèmes sur modules.
Depuis lors, divers SoC de fabricants comme Allwinner et Rockchip, ainsi que des FPGA robustes, se sont intégrés sans problème dans le format largement adopté du CM4.
Le module Pi.MX8 rejoindra la liste des modules compatibles CM4.
Avec toute cette variété de SoM compatibles disponibles, pourquoi devrions-nous investir du temps à concevoir une autre variante ?
La réponse est simple : lorsque nous construisons un système complexe et parfois coûteux autour d'un module informatique, nous voulons également avoir la souveraineté de conception sur le module lui-même. Nous voulons avoir accès aux données sources du schéma et de l'agencement, nous voulons pouvoir décider nous-mêmes de la nomenclature du module en cas de pénurie de composants, et surtout, nous voulons avoir accès à la documentation de tous les composants utilisés sur le PCB.
Tout cela n'est possible que dans le contexte d'un projet entièrement open-source, utilisant des composants dont la documentation est facilement disponible.
Image de la révision précédente de l'agencement du Pi.MX8
Dans cet article et les suivants, nous examinerons la conception d'un module compatible CM4 entièrement open-source. À la fin de notre parcours, les données sources pour le module compatible CM4 seront publiées pour que quiconque puisse les examiner, les modifier ou s'en inspirer !
Le bloc de construction principal que nous devons définir avant de choisir l'un des composants périphériques est le System-on-Chip. Il existe un SoC qui répond à tous les critères pour une documentation facilement accessible et est largement utilisé dans l'industrie, le i.MX8M Plus de NXP.
Ce SoC est disponible en plusieurs variantes, allant de deux à quatre cœurs Cortex-A53 cadencés jusqu'à 1,8 GHz. De plus, un second cœur cortex M7 et un accélérateur d'apprentissage automatique intégré sont disponibles dans cette série de processeurs.
Caractéristiques matérielles du SoC i.MX8M Plus - source de l'image : Site Web NXP
Le i.MX8 fournit presque toutes les interfaces périphériques comme le BCM2711 utilisé sur le module Raspberry Pi CM4 avec une exception majeure :
Seule une interface HDMI est disponible sur le i.MX8 comparée aux deux ports disponibles sur le BCM2711. Cette limitation pourrait être contournée en utilisant un pont DSI vers HDMI. Pour maintenir le nombre de composants et la complexité au plus bas, ce CI ne sera pas intégré sur notre module pour l'instant.
Autre que la seconde interface HDMI, le i.MX8 est parfaitement adapté à notre application !
Le schéma de bloc de haut niveau du module se compose de quelques composants clés. Le bloc de construction central est le SoC i.MX8 qui fournit toutes les interfaces pour les composants périphériques nécessaires. En résumé, nous construisons une carte d'extension pour le processeur i.MX8 :
Schéma de bloc du Pi.MX8
Commençons par examiner l'alimentation électrique du système. Le circuit intégré de gestion de l'alimentation (abrégé PMIC) fournit plusieurs tensions nécessaires pour le SoC, mais est également conçu pour alimenter des interfaces comme le connecteur de carte SD.
Le PMIC est également responsable de garantir la séquence correcte de mise sous tension et d'extinction, ce qui peut devenir assez compliqué pour les SoC plus importants.
NXP propose un PMIC spécialement développé pour être utilisé avec les processeurs d'application i.MX 8M. Ce circuit intégré fournit jusqu'à 11 rails de tension générés par une combinaison de convertisseurs buck et de LDOs. Les tensions de cœur pour le SoC sont générées par des convertisseurs buck car le besoin en courant est assez élevé aux faibles tensions de fonctionnement. Le rail de tension, qui alimente les quatre cœurs A53, est généré par un convertisseur buck à deux phases intégré dans le PMIC pour satisfaire la forte demande en courant.
Le PMIC que nous utiliserons est le PCA9450.
Un flash NOR de faible capacité peut être utilisé pour stocker des données spécifiques à la carte ainsi qu'un support de démarrage. Le SoC i.MX8, entre autres, prend en charge plusieurs interfaces SPI pour accéder au support de démarrage. Dans ce cas, nous utilisons une interface SPI quadruple pour se connecter à un flash NOR SPI de 32MB.
Le dispositif est un IS25WP256D-RHLE de Integrated Silicon Solution, Inc.
Ce package spécifique et ce brochage sont également disponibles chez différents fabricants, ce qui permet de remplacer le composant en cas de problèmes de disponibilité.
L'Ethernet PHY doit supporter des vitesses gigabit ainsi que le protocole de temps précis pour être compatible avec la fonctionnalité CM4. L'interface avec le SoC devrait être une interface média indépendante gigabit réduite (RGMII). Ce type d'interface est pris en charge par une grande variété de PHY Ethernet pour les applications embarquées.
Nous utiliserons le LAN8840 de Microchip Technology.
Ce PHY prend en charge à la fois les vitesses gigabit ainsi que le marquage temporel de haute précision selon IEEE 1588- 2008 (v2). Le boîtier QFN48 est également relativement compact, ce qui permet d'économiser un espace précieux sur la carte du module.
Nous utiliserons de la mémoire DDR4 basse consommation sur le module Pi.MX8. Plusieurs fabricants fournissent des circuits intégrés LPDDR4 dans le même boîtier et brochage, ce qui facilite la réaction aux problèmes de disponibilité ou le soutien de plusieurs capacités de mémoire. Samsung et Micron sont les fabricants les plus couramment utilisés pour les dispositifs LPDDR4. Nous utiliserons des dispositifs prenant en charge un bus de 32 bits à des vitesses de transfert de 3733 Mbps.
Le Pi.MX8 peut être équipé de plusieurs capacités de mémoire :
Tableau des capacités de mémoire
Le Coral Edge TPU peut être utilisé pour accélérer le calcul des réseaux neuronaux sur des appareils embarqués. Le Coral TPU est souvent utilisé sous forme de carte d'extension M.2, et est également disponible dans un petit boîtier LGA.
Ce module contient le processeur tensoriel ainsi que le circuit intégré de gestion de l'alimentation nécessaire pour faire fonctionner le TPU. Nous devons fournir une interface PCIe à ce module pour utiliser la puissance de traitement disponible.
Comme ce module est spécifique à seulement un petit nombre de cas d'utilisation et est relativement coûteux, nous allons l'implémenter comme une variante d'assemblage.
Le WiFi et le Bluetooth basse énergie sont l'une des interfaces sans fil les plus couramment utilisées pour les applications IoT. Nous utiliserons un module MURATA LBEE5PK2BC comme solution entièrement intégrée.
Ce module fournit à la fois le W-LAN et le Bluetooth tout en minimisant le nombre de composants externes nécessaires. Toutes les applications n'ont pas besoin de connectivité sans fil, c'est pourquoi le module WiFi/BLE sera également implémenté comme une variante d'assemblage.
Un module eMMC offre jusqu'à 32 Go de capacité de stockage au module Pi.MX8. Comme pour la DRAM LPDDR4, nous pouvons choisir parmi de nombreux fabricants pour le module de stockage eMMC qui respectent le même standard de boîtier et de brochage. L'un des fabricants les plus couramment utilisés pour les modules eMMC est SanDisk.
L'eMMC sera également implémenté comme une variante d'assemblage afin d'économiser sur le coût de la nomenclature pour les applications qui n'ont pas une forte demande de capacité de stockage de données.
Avant de passer à l'étape suivante de la configuration du schéma et de la conception du PCB, jetons un coup d'œil rapide aux besoins en espace pour tous les composants que nous venons de sélectionner.
À cette fin, nous pouvons configurer les composants de la bibliothèque PCB et les placer à l'intérieur du contour du PCB du format CM4.
Essai d'ajustement des composants clés
Tous les composants clés s'ajustent sur la couche supérieure dans le contour de format CM4. Ce placement approximatif montre également qu'il reste peu d'espace pour les composants plus grands sur le côté supérieur. La hauteur d'accouplement des connecteurs de carte à carte que nous utilisons est seulement de 2mm. Cela limite la hauteur des composants que nous pouvons placer sur le côté inférieur du PCB. Idéalement, tous les composants clés seront placés sur le côté supérieur de la carte pour éviter toute collision avec des pièces qui pourraient être placées sur la carte porteuse en dessous du module.
Des mises à jour excitantes à venir ! Avec la sélection des composants terminée, notre voyage continue pour finaliser les schémas dans la prochaine mise à jour. Vous avez remarqué quelque chose manquant dans la capture d'écran de l'agencement du PCB au début ? C'est parce que c'est une ancienne révision, et nous réacheminons entièrement le PCB pour intégrer la nouvelle fonctionnalité. Rejoignez-nous pour le voyage et suivez les progrès en temps réel à travers le visualiseur A365 intégré et notre espace de travail public ! Ne manquez pas cela—restez à l'écoute pour la transformation passionnante !