La compañía Raspberry Pi ha desarrollado lo que probablemente sea el ordenador de placa única más popular y utilizado en el mercado. Estos potentes ordenadores de placa única han sido utilizados desde hace tiempo no solo en el ámbito de los aficionados y el bricolaje, sino también en el espacio industrial.
A medida que se expande el área de aplicación, el factor de forma de estas placas está emergiendo como un estándar 'de facto' para los ordenadores de placa única y módulos. La introducción del módulo de cómputo CM4 a finales de 2020 marcó el establecimiento de un nuevo estándar de factor de forma para los sistemas en módulos.
Desde entonces, diversos SoCs de fabricantes como Allwinner y Rockchip, junto con robustos FPGAs, se han integrado sin problemas en el ampliamente adoptado factor de forma CM4.
El módulo Pi.MX8 se unirá a la lista de módulos compatibles con CM4.
Con toda esta variedad de SoMs compatibles disponibles, ¿por qué deberíamos invertir tiempo en diseñar otra variante más?
La respuesta es simple: cuando construimos un sistema complejo y a veces costoso alrededor de un módulo de computadora, también queremos tener soberanía de diseño sobre el propio módulo. Queremos tener acceso a los datos fuente del esquemático y del diseño, queremos poder decidir sobre la BOM del módulo nosotros mismos en caso de escasez de componentes, y lo más importante, queremos tener acceso a la documentación de todos los componentes utilizados en el PCB.
Todo esto solo es posible en el contexto de un proyecto completamente de código abierto, utilizando componentes con documentación fácilmente disponible.
Imagen de la revisión anterior del diseño de Pi.MX8
En este y los siguientes artículos estaremos investigando el diseño de un módulo compatible con CM4 completamente de código abierto. ¡Al final de nuestro viaje, los datos fuente para el módulo compatible con CM4 serán publicados para que cualquiera pueda revisarlos, modificarlos o construir sobre ellos!
El bloque de construcción principal que debemos definir antes de elegir cualquiera de los componentes periféricos es el Sistema en Chip. Hay un SoC que cumple con todos los requisitos para una documentación fácilmente accesible y es ampliamente utilizado en la industria, el i.MX8M Plus de NXP.
Este SoC está disponible en varias variantes, que van desde dos hasta cuatro núcleos Cortex-A53 con una frecuencia de hasta 1.8 GHz. Además, un núcleo secundario cortex M7 y un acelerador de aprendizaje automático integrado están disponibles dentro de esta serie de procesadores.
Características del hardware del SoC i.MX8M Plus - fuente de la imagen: Sitio web de NXP
El i.MX8 proporciona casi todas las interfaces periféricas como el BCM2711 utilizado en el módulo Raspberry Pi CM4 con una excepción importante:
Solo una interfaz HDMI está disponible en el i.MX8 en comparación con los dos puertos disponibles en el BCM2711. Esta limitación podría ser superada utilizando un puente de DSI a HDMI. Para mantener el número de componentes y la complejidad bajos, este IC no se integrará en nuestro módulo por ahora.
Aparte de la segunda interfaz HDMI, ¡el i.MX8 es perfecto para nuestra aplicación!
El diagrama de bloques de alto nivel del módulo consta de solo unos pocos componentes clave. El bloque de construcción central es el SoC i.MX8 que proporciona todas las interfaces para los componentes periféricos necesarios. En pocas palabras, estamos construyendo una placa de expansión para el procesador i.MX8:
Diagrama de bloques del Pi.MX8
Comencemos por mirar el suministro de energía para el sistema. El circuito integrado de gestión de energía (abreviado PMIC) proporciona varias líneas de voltaje necesarias por el SoC, pero también está diseñado para suministrar energía a interfaces como el conector de la tarjeta SD.
El PMIC también es responsable de asegurar la secuencia correcta de encendido y apagado, lo cual puede volverse bastante complicado para SoCs más grandes.
NXP ofrece un PMIC que ha sido especialmente desarrollado para su uso con los procesadores de aplicación i.MX 8M. Este IC proporciona hasta 11 líneas de voltaje generadas por una combinación de convertidores buck y LDOs. Los voltajes centrales para el SoC son generados por convertidores buck ya que el requerimiento de corriente es bastante alto a los bajos voltajes de operación. La línea de voltaje, que suministra los cuatro núcleos A53, es generada por un convertidor buck de dos fases integrado en el PMIC para satisfacer la alta demanda de corriente.
El PMIC que vamos a utilizar es el PCA9450.
Un NOR flash de baja capacidad puede ser utilizado para almacenar datos específicos de la placa así como un medio de arranque. El SoC i.MX8, entre otros, soporta varias interfaces SPI para acceder al medio de arranque. En este caso, estamos utilizando una interfaz SPI cuádruple para conectar a un flash NOR SPI de 32MB.
El dispositivo es un IS25WP256D-RHLE de Integrated Silicon Solution, Inc.
Este paquete específico y disposición de pines también está disponible de diferentes fabricantes, lo que hace posible cambiar el componente en caso de problemas de disponibilidad.
El PHY de ethernet necesita soportar velocidades gigabit así como el protocolo de tiempo preciso para ser compatible con la funcionalidad CM4. La interfaz con el SoC debería ser una interfaz de medios independientes de gigabit reducida (RGMII). Este tipo de interfaz es soportado por una amplia variedad de PHYs de ethernet para aplicaciones embebidas.
Vamos a utilizar el LAN8840 de Microchip Technology.
Este PHY soporta tanto velocidades gigabit como estampado de tiempo de alta precisión según IEEE 1588- 2008 (v2). El paquete QFN48 también es relativamente compacto lo que ahorra espacio valioso en la placa del módulo.
Vamos a utilizar memoria DDR4 de bajo consumo en el módulo Pi.MX8. Varios fabricantes proporcionan ICs LPDDR4 en el mismo paquete y disposición de pines lo que facilita reaccionar a problemas de disponibilidad o para soportar múltiples capacidades de memoria. Samsung y Micron son los fabricantes más comúnmente utilizados para dispositivos LPDDR4. Vamos a utilizar dispositivos que soportan un bus de 32 bits a velocidades de transferencia de 3733 Mbps.
El Pi.MX8 puede estar equipado con varias capacidades de memoria:
Tabla de Capacidades de Memoria
El Coral Edge TPU se puede utilizar para acelerar el cálculo de redes neuronales en dispositivos embebidos. El Coral TPU se utiliza a menudo en forma de tarjeta de expansión M.2, y también está disponible en un pequeño paquete LGA.
Este módulo contiene el procesador tensorial así como el IC de gestión de energía necesario para operar el TPU. Necesitamos proporcionar una interfaz PCIe a este módulo para hacer uso de la potencia de procesamiento disponible.
Dado que este módulo es específico para solo un pequeño número de casos de uso y es relativamente caro, lo implementaremos como una variante de ensamblaje.
WiFi y Bluetooth de baja energía son una de las interfaces inalámbricas más comúnmente utilizadas para aplicaciones IoT. Utilizaremos un módulo MURATA LBEE5PK2BC como una solución totalmente integrada.
Este módulo proporciona tanto W-LAN como Bluetooth mientras minimiza la cantidad de componentes externos necesarios. No todas las aplicaciones necesitan conectividad inalámbrica, por lo que el módulo WiFi/BLE también se implementará como una variante de ensamblaje.
Un módulo eMMC proporciona hasta 32GB de capacidad de almacenamiento al módulo Pi.MX8. Al igual que con la DRAM LPDDR4, podemos elegir entre muchos fabricantes para el módulo de almacenamiento eMMC que se adhieren al mismo estándar de paquete y disposición de pines. Uno de los fabricantes más comúnmente utilizados para módulos eMMC es SanDisk.
El eMMC también se implementará como una variante de ensamblaje para ahorrar costos de BOM en aplicaciones que no tienen una alta demanda de capacidad de almacenamiento de datos.
Antes de pasar a la siguiente etapa de configuración del esquemático y diseño de PCB, echemos un vistazo rápido a los requisitos de espacio para todos los componentes que acabamos de seleccionar.
Para este propósito podemos configurar los componentes de la biblioteca de PCB y colocarlos dentro del contorno del PCB del factor de forma CM4.
Ajuste de prueba de los componentes clave
Todos los componentes clave encajan en la capa superior dentro del contorno del factor de forma CM4. Esta colocación preliminar también muestra que queda poco espacio para componentes más grandes en el lado superior. La altura acoplada de los conectores de placa a placa que estamos utilizando es de solo 2 mm. Esto limita la altura de los componentes que podemos colocar en el lado inferior del PCB. Idealmente, todos los componentes clave se colocarán en el lado superior de la placa para evitar cualquier colisión con partes que podrían colocarse en la placa portadora debajo del módulo.
¡Actualizaciones emocionantes por delante! Con la selección de componentes completa, nuestro viaje continúa para finalizar los esquemáticos en la próxima actualización. ¿Notas algo que falta en la captura de pantalla del diseño del PCB al inicio? Eso es porque es una revisión antigua, y estamos redirigiendo todo el PCB para incorporar la nueva funcionalidad. ¡Acompáñanos en este viaje y sigue el progreso en tiempo real a través del visor embebido de A365 y nuestro espacio de trabajo público! No te lo pierdas: ¡mantente atento para la emocionante transformación!