A empresa Raspberry Pi desenvolveu o que é provavelmente o computador de placa única mais popular e amplamente utilizado no mercado. Esses poderosos computadores de placa única têm sido usados não apenas no cenário de makers e hobbistas, mas também no espaço industrial.
À medida que a área de aplicação se expande, o formato dessas placas está emergindo como um padrão 'de facto' para computadores de placa única e módulos. A introdução do módulo de computação CM4 no final de 2020 marcou o estabelecimento de um novo padrão de formato para sistemas em módulos.
Desde então, diversos SoCs de fabricantes como Allwinner e Rockchip, juntamente com robustos FPGAs, foram integrados sem problemas ao formato amplamente adotado do CM4.
O módulo Pi.MX8 se juntará à lista de módulos compatíveis com CM4.
Com toda essa variedade de SoMs compatíveis disponíveis, por que deveríamos investir tempo projetando mais uma variante?
A resposta é simples: quando construímos um sistema complexo e às vezes caro em torno de um módulo de computador, também queremos ter soberania de design sobre o próprio módulo. Queremos ter acesso aos dados de esquemático e layout, queremos poder decidir sobre a BOM do módulo em caso de escassez de componentes e, mais importante, queremos ter acesso à documentação de todos os componentes usados na PCB.
Tudo isso só é possível no contexto de um projeto totalmente de código aberto, utilizando componentes com documentação prontamente disponível.
Imagem da revisão anterior do layout do Pi.MX8
Neste e nos próximos artigos, estaremos analisando o projeto de um módulo compatível com CM4 totalmente de código aberto. Ao final de nossa jornada, os dados de origem para o módulo compatível com CM4 serão publicados para que qualquer pessoa possa revisar, modificar ou construir a partir deles!
O bloco de construção central que devemos definir antes de escolher qualquer um dos componentes periféricos é o System-on-Chip. Há um SoC que atende a todos os requisitos para documentação facilmente acessível e é amplamente utilizado na indústria, o i.MX8M Plus da NXP.
Este SoC está disponível em várias variantes, variando de dois a quatro núcleos Cortex-A53 com frequência de até 1.8 GHz. Além disso, um núcleo secundário cortex M7 e um acelerador de aprendizado de máquina integrado estão disponíveis nesta série de processadores.
Características do hardware do SoC i.MX8M Plus - fonte da imagem: Site da NXP
O i.MX8 oferece quase todas as interfaces periféricas como o BCM2711 usado no módulo Raspberry Pi CM4 com uma exceção importante:
Apenas uma interface HDMI está disponível no i.MX8, comparado com duas portas disponíveis no BCM2711. Esta limitação poderia ser contornada usando uma ponte DSI para HDMI. Para manter a contagem de peças e a complexidade baixas, este IC não será integrado em nosso módulo por enquanto.
Além da segunda interface HDMI, o i.MX8 é uma ótima escolha para nossa aplicação!
O diagrama de blocos de alto nível do módulo consiste em apenas alguns componentes chave. O bloco de construção central é o SoC i.MX8, que fornece todas as interfaces para os componentes periféricos necessários. Simplificando, estamos construindo uma placa de desenvolvimento para o processador i.MX8:
Diagrama de blocos do Pi.MX8
Vamos começar olhando para o fornecimento de energia do sistema. O circuito integrado de gerenciamento de energia (PMIC, na sigla em inglês) fornece várias tensões necessárias pelo SoC, mas também é projetado para fornecer energia a interfaces como o conector do cartão SD.
O PMIC também é responsável por garantir a sequência correta de ligamento e desligamento, o que pode se tornar bastante complicado para SoCs maiores.
A NXP oferece um PMIC que foi especialmente desenvolvido para uso com os processadores de aplicação i.MX 8M. Este IC fornece até 11 trilhas de tensão geradas por uma combinação de conversores buck e LDOs. As tensões centrais para o SoC são geradas por conversores buck, pois a exigência de corrente é bastante alta nas baixas tensões de operação. A trilha de tensão, que alimenta os quatro núcleos A53, é gerada por um conversor buck de duas fases integrado no PMIC para satisfazer a alta demanda de corrente.
O PMIC que estaremos usando é o PCA9450.
Um NOR flash de baixa capacidade pode ser usado para armazenar dados específicos da placa, bem como um meio de inicialização. O SoC i.MX8, entre outros, suporta várias interfaces SPI para acessar o meio de inicialização. Neste caso, estamos usando uma interface SPI quádrupla para conectar a um flash NOR SPI de 32MB.
O dispositivo é um IS25WP256D-RHLE da Integrated Silicon Solution, Inc.
Este pacote e pinagem específicos também estão disponíveis de diferentes fabricantes, tornando possível a troca do componente no caso de problemas de disponibilidade.
O PHY Ethernet precisa suportar velocidades gigabit, bem como o protocolo de tempo preciso para ser compatível com a funcionalidade CM4. A interface com o SoC deve ser uma interface de mídia independente de gigabit reduzida (RGMII). Este tipo de interface é suportado por uma ampla variedade de PHYs Ethernet para aplicações embarcadas.
Estaremos usando o LAN8840 da Microchip Technology.
Este PHY suporta tanto velocidades gigabit quanto carimbagem de tempo de alta precisão de acordo com o IEEE 1588-2008 (v2). O pacote QFN48 também é relativamente compacto, o que economiza espaço valioso na placa do módulo.
Estaremos usando memória DDR4 de baixo consumo no módulo Pi.MX8. Vários fabricantes fornecem ICs LPDDR4 no mesmo pacote e pinagem, o que facilita reagir a problemas de disponibilidade ou suportar múltiplas capacidades de memória. Samsung e Micron são os fabricantes mais comumente usados para dispositivos LPDDR4. Estaremos usando dispositivos que suportam um barramento de 32 bits com velocidades de transferência de 3733 Mbps.
O Pi.MX8 pode ser equipado com várias capacidades de memória:
Tabela de Capacidades de Memória
O Coral Edge TPU pode ser usado para acelerar o cálculo de redes neurais em dispositivos embarcados. O Coral TPU é frequentemente utilizado na forma de um cartão de expansão M.2, e também está disponível em um pequeno pacote LGA.
Este módulo contém o processador tensorial, bem como o CI de gerenciamento de energia necessário para operar o TPU. Precisamos fornecer uma interface PCIe para este módulo para fazer uso da capacidade de processamento disponível.
Como este módulo é específico para apenas um pequeno número de casos de uso e é relativamente caro, implementaremos como uma variante de montagem.
WiFi e Bluetooth de baixa energia são uma das interfaces sem fio mais comumente usadas para aplicações IoT. Estaremos usando um módulo MURATA LBEE5PK2BC como uma solução totalmente integrada.
Este módulo fornece tanto W-LAN quanto Bluetooth, minimizando a quantidade de componentes externos necessários. Nem toda aplicação precisa de conectividade sem fio, razão pela qual o módulo WiFi/BLE também será implementado como uma variante de montagem.
Um módulo eMMC fornece até 32GB de capacidade de armazenamento para o módulo Pi.MX8. Assim como com o DRAM LPDDR4, podemos escolher entre muitos fabricantes para o módulo de armazenamento eMMC que aderem ao mesmo padrão de pacote e pinagem. Um dos fabricantes mais comumente usados para módulos eMMC é a SanDisk.
O eMMC também será implementado como uma variante de montagem para economizar custos de BOM para aplicações que não têm uma alta demanda por capacidade de armazenamento de dados.
Antes de passarmos para a próxima etapa de configuração do esquemático e design da PCB, vamos dar uma rápida olhada nos requisitos de espaço para todos os componentes que acabamos de selecionar.
Para este propósito, podemos configurar os componentes da biblioteca de PCB e colocá-los dentro do contorno da PCB do formato CM4.
Testando o encaixe dos componentes principais
Todos os componentes principais se encaixam na camada superior dentro do contorno do formato CM4. Este posicionamento preliminar também mostra que resta pouco espaço para componentes maiores no lado superior. A altura combinada dos conectores de placa a placa que estamos usando é de apenas 2mm. Isso limita a altura dos componentes que podemos colocar no lado inferior da PCB. Idealmente, todos os componentes principais serão colocados no lado superior da placa para evitar qualquer colisão com peças que possam ser colocadas na placa de suporte sob o módulo.
Atualizações empolgantes pela frente! Com a seleção de componentes completa, nossa jornada continua para finalizar os esquemáticos na próxima atualização. Notou algo faltando na captura de tela do layout da PCB no início? Isso porque é uma revisão antiga, e estamos refazendo o roteamento de toda a PCB para incorporar a nova funcionalidade. Junte-se a nós nesta jornada e acompanhe o progresso em tempo real através do visualizador embutido do A365 e nosso espaço de trabalho público! Não perca — fique atento para a transformação emocionante!