L'azienda Raspberry Pi ha sviluppato quello che è probabilmente il computer a scheda singola più popolare e ampiamente utilizzato sul mercato. Questi potenti computer a scheda singola sono stati a lungo utilizzati non solo nell'ambito dei maker e degli hobbisti, ma anche in quello industriale.
Con l'espansione dell'area di applicazione, il formato di queste schede sta emergendo come uno standard 'de facto' per i computer a scheda singola e i moduli. L'introduzione del modulo di calcolo CM4 alla fine del 2020 ha segnato l'istituzione di un nuovo standard di formato per i sistemi su modulo.
Da allora, vari SoC di produttori come Allwinner e Rockchip, insieme a robusti FPGA, si sono integrati senza problemi nel formato CM4 ampiamente adottato.
Il modulo Pi.MX8 si unirà alla lista dei moduli compatibili con CM4.
Con tutta questa varietà di SoM compatibili disponibili, perché dovremmo investire tempo nel progettare un'altra variante?
La risposta è semplice: quando costruiamo un sistema complesso e talvolta costoso intorno a un modulo computer, vogliamo anche avere la sovranità di progettazione sul modulo stesso. Vogliamo avere accesso ai dati sorgente dello schema e del layout, vogliamo essere in grado di decidere noi stessi il BOM del modulo in caso di carenze di componenti e, cosa più importante, vogliamo avere accesso alla documentazione di tutti i componenti utilizzati sul PCB.
Tutto ciò è possibile solo nel contesto di un progetto completamente open-source, utilizzando componenti con documentazione facilmente disponibile.
Immagine della precedente revisione del layout di Pi.MX8
In questo e nei seguenti articoli esamineremo la progettazione di un modulo compatibile con CM4 completamente open-source. Alla fine del nostro viaggio, i dati sorgente per il modulo compatibile con CM4 saranno pubblicati affinché chiunque possa esaminarli, modificarli o costruirvi sopra!
Il blocco costruttivo principale che dobbiamo definire prima di scegliere qualsiasi componente periferico è il System-on-Chip. C'è un SoC che soddisfa tutti i requisiti per una documentazione facilmente accessibile ed è ampiamente utilizzato nell'industria, l'i.MX8M Plus di NXP.
Questo SoC è disponibile in diverse varianti, che vanno da due a quattro core Cortex-A53 con una frequenza fino a 1,8 GHz. Inoltre, un secondo core cortex M7 e un acceleratore di apprendimento automatico integrato sono disponibili all'interno di questa serie di processori.
Caratteristiche hardware del SoC i.MX8M Plus - fonte immagine: Sito Web NXP
L'i.MX8 offre quasi tutte le interfacce periferiche come il BCM2711 utilizzato sul modulo Raspberry Pi CM4 con una grande eccezione:
Sull'i.MX8 è disponibile solo un'interfaccia HDMI rispetto ai due porte disponibili sul BCM2711. Questa limitazione potrebbe essere superata utilizzando un ponte DSI a HDMI. Per mantenere il numero di componenti e la complessità bassi, questo IC non sarà integrato sul nostro modulo per ora.
A parte la seconda interfaccia HDMI, l'i.MX8 si adatta perfettamente alla nostra applicazione!
Il diagramma a blocchi ad alto livello del modulo consiste di solo alcuni componenti chiave. Il blocco centrale è l'i.MX8 SoC che fornisce tutte le interfacce per i componenti periferici necessari. In poche parole, stiamo costruendo una scheda di espansione per il processore i.MX8:
Diagramma a blocchi del Pi.MX8
Iniziamo esaminando l'alimentazione del sistema. Il circuito integrato di gestione dell'alimentazione (PMIC) fornisce diverse tensioni necessarie per il SoC, ma è anche progettato per fornire energia a interfacce come il connettore della scheda SD.
Il PMIC è anche responsabile di garantire la corretta sequenza di accensione e spegnimento, che può diventare piuttosto complicata per SoC più grandi.
NXP offre un PMIC che è stato appositamente sviluppato per l'uso con i processori per applicazioni i.MX 8M. Questo IC fornisce fino a 11 linee di tensione generate da una combinazione di convertitori buck e LDO. Le tensioni di base per il SoC sono generate da convertitori buck poiché il requisito di corrente è piuttosto elevato alle basse tensioni operative. La linea di tensione, che alimenta i quattro core A53, è generata da un convertitore buck bifase integrato nel PMIC per soddisfare l'alta domanda di corrente.
Il PMIC che utilizzeremo è il PCA9450.
Un NOR flash di bassa capacità può essere utilizzato per memorizzare dati specifici della scheda così come un mezzo di avvio. Il SoC i.MX8, tra gli altri, supporta diverse interfacce SPI per accedere al mezzo di avvio. In questo caso, stiamo utilizzando un'interfaccia SPI quadrupla per connetterci a un NOR flash SPI da 32MB.
Il dispositivo è un IS25WP256D-RHLE di Integrated Silicon Solution, Inc.
Questo specifico pacchetto e schema di pin è disponibile anche da diversi produttori, rendendo possibile la sostituzione del componente in caso di problemi di disponibilità.
L'Ethernet PHY deve supportare velocità gigabit così come il protocollo di tempo preciso per essere compatibile con la funzionalità CM4. L'interfaccia con il SoC dovrebbe essere un'interfaccia media indipendente gigabit ridotta (RGMII). Questo tipo di interfaccia è supportato da una vasta varietà di PHY Ethernet per applicazioni embedded.
Utilizzeremo il LAN8840 di Microchip Technology.
Questo PHY supporta sia velocità gigabit sia la marcatura temporale di alta precisione secondo IEEE 1588-2008 (v2). Il pacchetto QFN48 è anche relativamente compatto, il che consente di risparmiare prezioso spazio sulla scheda sul modulo.
Utilizzeremo memoria DDR4 a basso consumo sul modulo Pi.MX8. Diversi produttori forniscono IC LPDDR4 nello stesso pacchetto e schema di pin, il che rende più facile reagire a problemi di disponibilità o supportare diverse capacità di memoria. Samsung e Micron sono i produttori più comunemente utilizzati per i dispositivi LPDDR4. Utilizzeremo dispositivi che supportano un bus largo 32 bit a velocità di trasferimento di 3733 Mbps.
Il Pi.MX8 può essere equipaggiato con diverse capacità di memoria:
Tabella delle Capacità di Memoria
Il Coral Edge TPU può essere utilizzato per accelerare il calcolo delle reti neurali su dispositivi embedded. Il Coral TPU è spesso utilizzato sotto forma di scheda di espansione M.2 ed è disponibile anche in un piccolo pacchetto LGA.
Questo modulo contiene il processore tensoriale così come l'IC di gestione dell'energia necessario per il funzionamento del TPU. Dobbiamo fornire un'interfaccia PCIe a questo modulo per sfruttare la potenza di elaborazione disponibile.
Poiché questo modulo è specifico solo per un piccolo numero di casi d'uso ed è relativamente costoso, lo implementeremo come una variante di assemblaggio.
WiFi e Bluetooth Low Energy sono tra le interfacce wireless più comunemente utilizzate per le applicazioni IoT. Utilizzeremo un modulo MURATA LBEE5PK2BC come soluzione completamente integrata.
Questo modulo fornisce sia W-LAN che Bluetooth minimizzando il numero di componenti esterni necessari. Non tutte le applicazioni necessitano di connettività wireless, motivo per cui anche il modulo WiFi/BLE sarà implementato come una variante di assemblaggio.
Un modulo eMMC fornisce fino a 32GB di capacità di archiviazione al modulo Pi.MX8. Come per la DRAM LPDDR4 possiamo scegliere tra molti produttori per il modulo di archiviazione eMMC che aderiscono allo stesso standard di pacchetto e pinout. Uno dei produttori più comunemente utilizzati per i moduli eMMC è SanDisk.
L'eMMC sarà implementato anche come una variante di assemblaggio al fine di risparmiare sui costi del BOM per le applicazioni che non hanno una grande richiesta di capacità di archiviazione dei dati.
Prima di passare alla fase successiva di impostazione dello schema elettrico e del design del PCB, diamo un'occhiata rapida ai requisiti di spazio per tutti i componenti che abbiamo appena selezionato.
A questo scopo possiamo impostare i componenti della libreria PCB e posizionarli all'interno del contorno del PCB del formfactor CM4.
Prova di montaggio dei componenti principali
Tutti i componenti principali si adattano al primo strato all'interno del contorno del formfactor CM4. Questo posizionamento approssimativo mostra anche che rimane poco spazio per componenti più grandi sul lato superiore. L'altezza accoppiata dei connettori board-to-board che stiamo utilizzando è di soli 2mm. Questo limita l'altezza dei componenti che possiamo posizionare sul lato inferiore del PCB. Idealmente, tutti i componenti principali saranno posizionati sul lato superiore della scheda per evitare qualsiasi collisione con parti che potrebbero essere posizionate sulla scheda portante sotto il modulo.
Aggiornamenti entusiasmanti in arrivo! Con la selezione dei componenti completata, il nostro viaggio continua per finalizzare gli schemi nell'aggiornamento imminente. Hai notato qualcosa di mancante nello screenshot del layout del PCB all'inizio? Questo perché è una revisione più vecchia, e stiamo riprogettando l'intero PCB per incorporare la nuova funzionalità. Unisciti a noi in questo percorso e segui i progressi in tempo reale attraverso il visualizzatore A365 incorporato e il nostro spazio di lavoro pubblico! Non perdertelo—rimani sintonizzato per la trasformazione emozionante!