iMX6ULL. Transição para módulos de processador


Bom dia
Atenção, muito texto e fotos. No mercado, você pode encontrar muitas variações de PCs de placa única com blindagens ou soluções all-in-one. Alguns são personalizados para tarefas específicas, por exemplo, coleta e exibição de dados, outros são universais e incluem todos os tipos de interfaces para todas as ocasiões. Diferenças significativas também são observadas na configuração, tipos de fixação, conectores, fator de forma, etc. Por que desenvolver seu dispositivo, você pergunta, se você pode escolher um existente? Alguns anos atrás, ao transformar o IMX6Q - "BD-SL-i.MX6" da Freescale (leia NXP), surgiu a idéia de criar um módulo que ...

1. Cobrimos nossas necessidades de placas de prototipagem no IMX6. Naquela época, já havia vários projetos implementados nesse chip. Vale a pena explicar que, tendo seu próprio módulo e desenvolvendo uma placa-mãe para um projeto específico, você pode testar rapidamente todos os periféricos, "elevar" o software, fazer alterações e transferir tudo para as 8 camadas necessárias para o IMX6Q (a linha desses chips não se limita ao quad além do QUAD, há também DUAL e SOLO - todos "pino a pino", o que oferece ampla oportunidade para implementar dispositivos com diferentes funcionalidades com base em uma "placa"). Deixe-me lembrá-lo de que a placa-mãe pode ser de 4 ou até duas camadas, o que acelera significativamente o tempo de sua produção e reduz os custos.

2. Use o módulo como um componente e forneça ao cliente uma opção: transfira tudo para uma placa ou use como está. Para ser sincero, direi que o uso de módulos adquiridos para projetos comerciais não é considerado. Em primeiro lugar, não é possível encontrar um módulo adequado a todos (existem muitos conectores, ou poucos, ou não há furos de montagem ou a placa é grande etc.), em geral, aqueles que procuraram por suas necessidades entenderão), mas, em segundo, seu próprio desenvolvimento é sempre mais confiável. Você pode me jogar tomates, mas eu confio apenas em mim.

3. Dê ao cliente a oportunidade de desenvolver seu dispositivo com base em nosso módulo. Sim - isso também ficou em demanda, mas não o que foi descrito acima (sobre a complexidade da seleção de um módulo), mas o fato de ser um desenvolvimento e produção russos desempenha um grande papel. Aparentemente, a palavra "substituição de importação" influenciou bastante nossa indústria e desenvolvimento, inclusive.

Início IMX6

Brevemente sobre o principal, mas isso não será a essência do artigo. Nosso primeiro módulo no IMX6Q é usado e agora está em desenvolvimento, com dimensões 50x75mm. SO Linux e Android.


Fig. 1. Módulo no IMX6Q

Não listarei suas interfaces, vantagens e desvantagens. Ele exibe quase tudo o que possui um chip, e isso é suficiente para a implementação de muitos projetos. A bordo está o eMMC, conectores de interface, física e energia de gigabits Ethernet. Uma breve digressão terminou, agora o ponto.

A que chegamos

A linha IMX6 não termina nos chips acima. O IMX7, IMX8 em várias versões já apareceu, mas estamos interessados ​​na versão mais fraca em dimensões menores, com funcionalidade aparada - estas são IMX6UL / IMX6ULL (elas também são "pin-to-pin" entre si). Chamamos a atenção para isso não apenas dessa maneira, mas porque várias tarefas apareceram ao mesmo tempo relacionadas à voz sobre Ethernet via SIP, bem como à necessidade de desenvolver dispositivos em pequenas dimensões e sem a possibilidade de dissipação de calor. O IMX6UL possui um kit muito bom para conectar periféricos:


Fig. 2. Diagrama de Blocos IMX6UL

Quem tem uma imagem pequena pode acessar o site da NXP e ver os detalhes da linha desses chips. Uma das conveniências de usar esse processador é seu corpo. A afinação de seus contatos é de 0,8 mm e o bloco de contatos é de 0,356 mm (BGA), o que significa exatamente que a placa pode ser executada em 4 camadas (o que, em princípio, é feito na placa de referência NXP para esse chip). Usamos uma versão de 14x14mm (também há 9x9mm em incrementos de 0,5mm).

Por que é NXP, não Broadcom, ST, Ali ou algum outro gigante de processadores? De fato, o ponto principal é a disponibilidade de chips, suporte técnico e multiplataforma. Depois de criar o módulo no IMX6Q, transportamos o software com relativa facilidade para IMX6UL / IMX6ULL. Os chips são pino a pino, portanto, após depurar o software na UL, você pode mudar para uma ULL mais barata. O segundo é baixo consumo de energia e, como resultado, baixo calor. Intencionalmente, não forneço os parâmetros técnicos dos processadores; portanto, há muita "água" no artigo e essas informações estão disponíveis ao público.

Um dos projetos interessantes implementados no IMX6UL é um dispositivo de voz sobre Ethernet - um telefone SIP, mas essencialmente um interfone.


Fig. 3. telefone SIP.

Sobre os principais

O coração do projeto é o IMX6, no qual o SO está girando com o cliente SIP instalado. Antes de inicializar o Linux, o u-boot (carregador de inicialização) é carregado com um SPI Flash separado. A separação do gerenciador de inicialização e do firmware principal foi feita não por acidente (ao contrário da referência), mas para tornar o dispositivo resistente com um desligamento inesperado. Se você começar a falar sobre ubifs e a seção somente leitura no NAND, estou muito chateado. A prática mostrou que mesmo os melhores chips NAND têm o direito de morrer, e eles fazem isso de maneira inesperada. Há uma interface RMII para comunicação com o mundo externo, e um switch Ethernet LAN9303 - 10/100 (este IMX não suporta gigabit) está instalado na placa e foram necessárias duas portas. O IMX6UL possui duas portas RMII com roteamento, mas havia a necessidade de exatamente duas interfaces independentes na forma de um hub.

O NAND é usado para armazenar firmware e arquivos (paramos no Samsung K9F1G08U0D no pacote TSOP48. Não começamos a cuspir e não fechamos o artigo, pois a memória nesse fator de forma é muito barata em pequenos lotes em comparação com o BGA63). Um chip de memória DDR3 é o K4B4G1646D, codec ADAU1761. O codec vale uma olhada mais de perto. Antes disso, o SGTL5000 era usado em vários projetos, mas com o ADAU, a vida se tornou muito mais divertida. Você pode escrever um artigo separado sobre ele, mas tentarei resumir sua essência no meu projeto. O microcircuito não apenas possui 6 entradas analógicas, 7 saídas e, é claro, uma interface I2S, Analog Devices, juntamente com o codec, também lançou um software especializado para escrever firmware para o DSP embutido. Quem estiver interessado e quem não souber, pode ler o que é DSP e com que é consumido.


Fig. 4. Diagrama de Blocos ADAU1761

Ao escrever software, em primeiro lugar, os programadores tocaram o suficiente com todos os tipos de funções de distorção, cancelamento de eco, filtragem e mixagem de som. É muito impressionante de ouvido, vou lhe dizer. A interface é muito amigável, muitas configurações, filtros, conversões, a capacidade de redirecionar o som, etc.


Fig. 5. SigmaStudio por Analog Devices

O projeto envolve 4 canais (entrada / saída), pois existem alto-falantes e microfones estéreo embutidos, além de conectores para conectar os externos.

Uma placa periférica está conectada à placa (na Fig. 3), apenas com um codec, um scanner de teclado matricial, etc., não escreveu sobre ele.

Um dos conectores RJ45 é usado para a fonte de alimentação PoE; o chip Si3402 da Silicon Laboratories é usado como um dispositivo alimentado (PD). O circuito de comutação foi usado quase padrão sem isolamento galvânico com uma saída de 12V (a tensão é ajustada pelos resistores). Um pouco distraído por alguém interessado no tópico de PoE + com isolamento galvânico, há um chip muito bom da TI - LM5072MH-80. Provou-se em vários projetos.

As fontes de alimentação secundárias são implementadas no DC / DC ST1S10PHR - não as mais baratas, nem as de alta frequência, mas funcionam perfeitamente e são acessíveis por carros. Em geral, temos um zoológico inteiro de DC / DC e LDO para diferentes necessidades, mas quando a qualidade é importante, selecionamos fabricantes conhecidos.

A placa também possui um cartão USBHOST, USBOTG e SD. Via USB e SD, você pode rolar / atualizar o firmware. Há também uma atualização pela rede, mas isso já se aplica ao software e à interface da web.

Um pouco sobre rastreamento

Você pode publicar infinitamente gerberas e pedaços de cartões de rastreio, mas eu não farei isso, mas tocarei apenas nos pontos principais e críticos. A ordem das camadas das placas é padrão:

- TOP - sinal com polígono terrestre
- GND - polígonos retificados
- POWER - locais de teste de alimentos
- INFERIOR - sinal com polígono terrestre

1. DDR3. Com o layout de memória independente, você precisa ter cuidado, então eu não fiz isso, mas tomei a referência como exemplo. Apenas duas camadas (superior e bot) são usadas para rastreamento, as outras duas camadas não estão envolvidas. Vias 0,203 / 0,406 mm, espessura da linha 0,114 mm. Troquei apenas as linhas de terra sob o processador e as tornei um pouco mais grossas - até 0,3 mm. A camada GND acabou sendo um bom ponto em que eu tive que desenhar uma interface RGB, o que não é totalmente correto, mas simplesmente não vi outra opção com meu número de interfaces na placa.


Fig. 6. rastreamento de memória


Fig. 7. Aterros e terra

Ao conectar a placa, você precisa dedicar mais tempo à energia e aos aterros sanitários. É muito mais fácil desenvolver placas de 4 camadas com o mesmo esquema, existe uma extensão no rastreamento de condutores de sinal e sempre há duas camadas para uma boa fonte de alimentação, que também pode ser usada com competência em linhas de dados não críticas. A faixa de potência principal que quase sempre faço é de 3,3V, o resto dentro dela. Todos os aterros sanitários de alta tensão são feitos com grandes lacunas para eliminar interferências.

2. O PoE, como escrevi anteriormente, é implementado no chip Si3402. É produzido estritamente em quatro camadas da placa, com grandes lacunas dos polígonos principais. Eu acho que começará em duas camadas, mas ninguém garante qualidade. Ao projetar unidades de fonte de alimentação, geralmente sigo a placa de avaliação de microcircuitos e, ao testar, verifico as formas de onda dos sinais dados na documentação. Se você não pode fazê-lo na referência, devido ao tamanho ou à configuração do quadro, você deve ser guiado apenas pela experiência e bom senso.

Na camada de energia para PoE, uma faixa de 12V é selecionada. As camadas restantes são usadas para sinais e polígonos de terra PoE - GND_EXT. Todos os polígonos estão estritamente um sob o outro, sem sobrepor polígonos adjacentes em outras camadas. A distância entre os polígonos PoE e os principais é de cerca de 1 mm. Ao desenvolver PoE com isolamento galvânico, geralmente faço adicionalmente um recorte com uma fresa (na fabricação de placas de circuito) sob um transformador e optoacopladores de feedback.


Fig. 9. PoE. TOP

3. Periféricos. Eu tive que fazer a fiação da placa no chip M3616 da ALi Corporation, ela tem apenas 292 esferas, mas observe a qualidade do processador em termos de facilitar o rastreamento da placa. Quão claramente todas as interfaces são exibidas na ordem certa. Atenção, a placa é criada em duas camadas e a RAM é completamente em uma.


Fig. 10. Aterros e terra

No IMX6UL / IMX6ULL, tive que mexer nas interfaces. Na fig. 6. Você pode ver a força dos condutores e não há espaço suficiente para as vias, e você precisa se retirar da 5ª fila de bolas. O principal aqui é observar a impedância em pares diferenciais (por exemplo, USB) e não ir muito longe com as vias, pois isso danificará as faixas de terra e potência.

E ainda o módulo

O que não faz, mas ainda recebe um módulo. Quando o número de projetos no IMX6UL / IMX6ULL excedeu as expectativas, e a principal funcionalidade foi escrita, foi decidido mudar para um sistema modular, como na última vez, e até fazê-lo com elegância.


Fig. 11. módulo mx6ull-m02c em IMX6UL / IMX6ULL

Por que elegante?

  1. O módulo é fabricado no formato “on board” e não possui conectores de interface, possibilitando usá-lo como um “microcircuito”.
  2. Na floresta, ele tem apenas tudo o que você precisa: um chip, DDR3, NAND, SPI, física Ethernet, um alimentador de 1,35V (que permite fornecer apenas uma tensão de 3,3V ao módulo), quartzo e passivo.
  3. Instalação unidirecional. Nem toda solução modular pode se gabar da ausência de componentes na parte inferior. Isso oferece várias vantagens ao mesmo tempo: remoção de calor da placa-mãe, a possibilidade de localizar o módulo (uma vez que não há recorte na placa para componentes salientes) e a produção mais barata dos próprios módulos (menos o estêncil, virar a placa durante a instalação etc.).
  4. Almofadas ao redor do tabuleiro. Não há pontos de sinal de solda no módulo.
  5. As dimensões do módulo são de apenas 45x36mm.
  6. De alguma forma, vou falar sobre um dos dispositivos desenvolvidos neste módulo, mas, por enquanto, uma foto da placa-mãe para depuração e gravação de software.


Fig. 12. Módulo IMX6UL / IMX6ULL na placa

A placa é de duas camadas e possui conectores de interface necessários para a inicialização e operação. Nessas placas, realizamos testes internos de refrigeração e aquecimento durante a operação, verificamos a estabilidade do trabalho sob carga e depuramos o software.

Conclusão

O que exatamente um sistema modular oferece ao desenvolver dispositivos?

- Com o módulo existente, o tempo de desenvolvimento de uma placa com interfaces externas leva apenas alguns dias (desde que todas as interfaces sejam compreensíveis e usadas anteriormente no desenvolvimento).
- Os layouts de placas de circuito impresso são muito mais baratos, pois na maioria dos casos você pode criar uma placa de duas ou de quatro camadas com classe inferior.
- A velocidade de obtenção da placa-mãe é muito maior, pois você não precisa soldar os componentes relacionados ao módulo.
- A transição do layout para a versão de lançamento é mais rápida e fácil (se você ainda decidir criar uma solução de placa única).

Obviamente, todos os projetos são diferentes e, às vezes, o circuito periférico é muito mais complicado que o próprio processador, mas a depuração de módulos individuais é sempre mais fácil, principalmente se o desenvolvimento de um projeto for realizado por vários engenheiros.

Dentro de um artigo, é muito difícil escrever o que você quiser. A descrição de um único projeto exige muitas letras, mas quero abordar vários projetos, compartilhar minhas impressões sobre diferentes periféricos, sobre microcircuitos usados, recursos de rastreamento de interface etc. Mas o principal é parar a tempo.

PS: link de origem github.com/trotill/adk_yocto

Obrigado pela atenção!

Source: https://habr.com/ru/post/pt411151/


All Articles