Desarrollo del módulo en iMX8 desde NXP. Características de la transferencia de rastreo DDR

Saludos, Habr!



Hace algún tiempo, NXP presentó la línea de procesadores iMX8. Sería extraño perder una oportunidad y no desarrollar un nuevo módulo. A quién le importan los matices, pido un corte (muchas fotos livianas).

Introducción (skip)


Durante mucho tiempo nos hemos "enganchado" a los productos NXP, en términos de procesadores, y siempre seguimos las últimas actualizaciones de la compañía. Cuando se lanza un nuevo producto, compramos una referencia y recibimos muestras a través de distribuidores para que los programadores comiencen de inmediato el desarrollo del chip, y los apparatchiks, al completar la primera iteración, reciben rápidamente un modelo de producto. El soporte técnico desempeña un papel importante en todo esto, que proporciona SDK y HDK y responde preguntas de programadores y apparatchiks. Mientras que los primeros inician el software y comienzan a adaptarlo a nuestras tareas, los segundos preparan la segunda iteración de la placa con los errores corregidos, si los hay (por ejemplo, el módulo del procesador en el chip iMX7 desarrollado por el cliente se encargó desde la primera iteración, y el segundo fue puramente cosmético, el módulo en iMX6UL / ULL, desarrollado por primera vez para nuestros proyectos y luego convertido en un producto separado,también casi sin cambios después del primer lanzamiento). Al desarrollar hierro, preservamos parcialmente los circuitos de referencia (siempre que esto no dañe la calidad del producto), de modo que el acoplamiento del software y el hardware sea rápido e indoloro. Cada nueva iteración conduce a nuevas pruebas, que no solo deben volver a ejecutarse, sino también complementarse, teniendo en cuenta todos los cambios. Cada nueva descarga de gerberas del proyecto requiere verificación (producción de muestras y sus pruebas) antes de comenzar la serie. Por lo general, el módulo desarrollado es una solución universal y se utiliza en nuestros diversos proyectos. Además, algunos clientes solicitan la personalización del módulo, por ejemplo, en términos de agujeros de montaje, tipos de conectores, configuración o todo a la vez, para usar como producto terminado en sus futuros desarrollos.Al desarrollar hierro, preservamos parcialmente los circuitos de referencia (siempre que esto no dañe la calidad del producto), de modo que el acoplamiento del software y el hardware sea rápido e indoloro. Cada nueva iteración conduce a nuevas pruebas, que no solo deben volver a ejecutarse, sino también complementarse, teniendo en cuenta todos los cambios. Cada nueva descarga de gerberas del proyecto requiere verificación (producción de muestras y sus pruebas) antes de comenzar la serie. Por lo general, el módulo desarrollado es una solución universal y se utiliza en nuestros diversos proyectos. Además, algunos clientes solicitan la personalización del módulo, por ejemplo, en términos de agujeros de montaje, tipos de conectores, configuración, o todo a la vez, para usar como producto terminado en sus futuros desarrollos.Al desarrollar hierro, preservamos parcialmente los circuitos de referencia (siempre que esto no dañe la calidad del producto), de modo que el acoplamiento del software y el hardware sea rápido e indoloro. Cada nueva iteración conduce a nuevas pruebas, que no solo deben volver a ejecutarse, sino también complementarse, teniendo en cuenta todos los cambios. Cada nueva descarga de gerberas del proyecto requiere verificación (producción de muestras y sus pruebas) antes de comenzar la serie. Por lo general, el módulo desarrollado es una solución universal y se utiliza en nuestros diversos proyectos. Además, algunos clientes solicitan la personalización del módulo, por ejemplo, en términos de agujeros de montaje, tipos de conectores, configuración, o todo a la vez, para usar como producto terminado en sus futuros desarrollos.para que el acoplamiento de las partes de software y hardware sea rápido e indoloro. Cada nueva iteración conduce a nuevas pruebas, que no solo deben volver a ejecutarse, sino también complementarse, teniendo en cuenta todos los cambios. Cada nueva descarga de gerberas del proyecto requiere verificación (producción de muestras y sus pruebas) antes de comenzar la serie. Por lo general, el módulo desarrollado es una solución universal y se utiliza en nuestros diversos proyectos. Además, algunos clientes solicitan la personalización del módulo, por ejemplo, en términos de agujeros de montaje, tipos de conectores, configuración o todo a la vez, para usar como producto terminado en sus futuros desarrollos.para que el acoplamiento de las partes de software y hardware sea rápido e indoloro. Cada nueva iteración conduce a nuevas pruebas, que no solo deben volver a ejecutarse, sino también complementarse, teniendo en cuenta todos los cambios. Cada nueva descarga de gerberas del proyecto requiere verificación (producción de muestras y sus pruebas) antes de comenzar la serie. Por lo general, el módulo desarrollado es una solución universal y se utiliza en nuestros diversos proyectos. Además, algunos clientes solicitan la personalización del módulo, por ejemplo, en términos de agujeros de montaje, tipos de conectores, configuración, o todo a la vez, para usar como producto terminado en sus futuros desarrollos.Cada nueva descarga de gerberas del proyecto requiere verificación (producción de muestras y sus pruebas) antes de comenzar la serie. Por lo general, el módulo desarrollado es una solución universal y se utiliza en nuestros diversos proyectos. Además, algunos clientes solicitan la personalización del módulo, por ejemplo, en términos de agujeros de montaje, tipos de conectores, configuración o todo a la vez, para usar como producto terminado en sus futuros desarrollos.Cada nueva descarga de gerberas del proyecto requiere verificación (producción de muestras y sus pruebas) antes de comenzar la serie. Por lo general, el módulo desarrollado es una solución universal y se utiliza en nuestros diversos proyectos. Además, algunos clientes solicitan la personalización del módulo, por ejemplo, en términos de agujeros de montaje, tipos de conectores, configuración, o todo a la vez, para usar como producto terminado en sus futuros desarrollos.

Esta es la forma en que generalmente pasamos de la salida del procesador a la llegada de nuestro nuevo producto. A veces es simple y rápido, pero sucede que tienes que hacer mejoras serias en poco tiempo, que aparecen durante las pruebas.

¿Dónde empezar?


No profundizaré en el trabajo preparatorio que precede al inicio del proyecto: esta es la coordinación de TOR, la elaboración de un cronograma de trabajo, la aprobación de estimaciones, etc. Hablaré sobre los primeros pasos que pueden ayudar a reducir significativamente el tiempo de desarrollo del proyecto, usando el iMX8 en Altium Designer como ejemplo. No será algo sobrenatural y abstruso, creo que muchos lo hacen, pero tal vez no todos.

Lo más aterrador, tal vez, cuando miro la documentación de un procesador o un circuito listo para usar, es la posibilidad de rastrear la RAM. Tarde o temprano, todos se enfrentan a esto, pero, como dicen, es mejor más tarde, si existe esa oportunidad. Bueno, si solo usa un chip en el dispositivo, entonces puede ser más fácil hacer el seguimiento usted mismo. A continuación se muestra un ejemplo de una traza DDR3L para Xilinx (placa de 4 capas). Diseñado desde cero, no hay quejas.



Figura 1. Traza de DDR3L RAM para Xilinx XC7A35T-1FTG256

Pero cuando necesita 4 tablillas, e incluso en diferentes lados del tablero, para reducir el tamaño. El siguiente es un ejemplo de un módulo en el iMX6Q.



Figura 2. Trace 4 chips RAM DDR3 para NXP iMX6Q (2 en la parte superior, 2 en la parte inferior, uno debajo del otro)

Tampoco es una tarea abrumadora, pero no veo el punto (repito, desafortunadamente no siempre es así) si se puede simplificar mientras se mantiene la calidad de un producto depurado y probado (en nuestro caso, es una referencia que puede "tocar" ) En la primera iteración, lo principal es que el chip se inicia y tantas interfaces funcionan como sea posible. Esto significa que al menos la memoria está trabajando con nosotros, se suministra toda la energía necesaria y la pila de la placa se selecciona correctamente. Se llevará a cabo un trabajo adicional en la dirección de mejorar los parámetros de la placa en términos de rendimiento periférico. Entonces, la primera prioridad para nosotros es la memoria (operativa y no volátil) y el poder.

No es un secreto que para un procesador que se produce en masa y cuenta con el respaldo del fabricante, por regla general, puede encontrar un conjunto completo de documentación (las excepciones son productos bajo la NDA, nuevos productos sin soporte, etc.). Yo, en la primera etapa, solo me interesarán unos pocos documentos: esta es una hoja de datos, un esquema y un rastro del tablero de referencia. Además, todo depende de la forma en que se transferirá esta documentación y en qué sistema CAD trabaja. Solo trabajo en Altium Designer y, por lo tanto, no puedo usar circuitos y pcb de los fabricantes, ya que generalmente vienen en diferentes formatos. Otro problema de convertir proyectos de programas de terceros es la falta de coincidencia de los campos de la base del componente y, como resultado, la imposibilidad de descargar la lista de elementos. Y, lo que es realmente triste es la falta de conexiones entre los componentes (no siempre, pero con mayor frecuencia).

En este artículo quiero hablar sobre cómo puede transferir parcialmente un proyecto a Altium con un circuito convertido y una PCB.

El paquete integrado de Altium Designer, llamado Asistente de importación, le permite importar archivos de otros sistemas CAD. Personalmente, esto va acompañado de un baile constante con una pandereta, ya que además de Altium, por ejemplo, Allegro debe instalarse, pero no hablaré de eso. Está dedicado a videos y artículos individuales en Internet. La conversión, generalmente, pero no siempre, no le permite obtener un borrador de trabajo, lo cual no necesito. Para nuestro trabajo, necesitamos un archivo pcb y preferiblemente un esquema. Por ejemplo, usaré el proyecto de referencia en iMX8 - "MCIMX8M-EVK-DESIGNFILES".



Fig. 3. Placa de referencia MCIMX8M-EVK-DESIGNFILES

Como planeo desarrollar un módulo, no necesitaré la mayoría de las interfaces; se implementarán en la placa base. Incluso la imagen muestra que debe reducirse mucho al organizar los componentes y desde la pcb solo puedo tomar el rastro LPDDR4 (MT53B768M32D4NQ-062) y PMIC (controlador de alimentación para el procesador MC34PF4210A1ES). eMMC y la tarjeta SD están lejos del chip, tendrán que volver a rastrearse, pero esto no es un problema.

Biblioteca de componentes


Para mi biblioteca del proyecto MCIMX8M-EVK-DESIGNFILES, tomé solo algunos componentes, incluidos el procesador, la memoria y el PMIC.

Veamos el componente iMX8. A continuación se muestra una captura de pantalla de la biblioteca. MIMX8MQ7DVAJZXA tiene 14 partes combinadas en un componente. Esta separación le permite distribuir aún más las interfaces en diferentes hojas (partes del circuito, que se combinan en un proyecto). Por ejemplo, "PARTE A" se trata de USB, "PARTE D" es MIPI DSI, "PARTE G" es todo SAI, etc. Mirando hacia el futuro, diré que mi proyecto tiene solo 12 hojas de esquemas, respectivamente, combiné algunos de los elementos para facilitar la lectura.



Fig.4. Esquema MIMX8MQ7DVAJZXA

Al tener dicho componente después de la importación, evité crearlo desde cero, lo que redujo significativamente la probabilidad de errores en el circuito. Ahora sobre lo que tendrá que ser arreglado en los parámetros del componente.



Fig.5. Esquemas MIMX8MQ7DVAJZXA

Para diferentes componentes, el número de parámetros puede ser diferente, pero algunos campos deben ser los mismos para que luego pueda cargar la lista de componentes para ordenar y ensamblar. Los campos de la izquierda se importaron de la referencia. A la derecha, que necesito para seguir trabajando. Las resistencias, por ejemplo, tienen más parámetros, condensadores aún más, etc. En mi ejemplo, el conjunto mínimo requerido de parámetros con los encabezados que necesito.

De la misma manera, convertí y modifiqué la RAM y el controlador de energía. Luego, creo un nuevo proyecto (aproximadamente sabiendo cuántas hojas tendré), transfiero partes de los circuitos con encuadernación allí y reemplazo los componentes importados con los míos. El resultado son piezas de circuitos que son muy similares al original. En este artículo no hablaré sobre la estructura del proyecto, la relación entre las hojas, etc., así que sigamos adelante.

La parte más simple del trabajo ya está hecha. Ahora puede comenzar la segunda etapa: esta es la transferencia del componente pcb de la biblioteca.

Aquí es casi lo mismo que antes, pero en lugar de los parámetros: las capas. En mis componentes uso un conjunto fijo de capas. Además del estándar "top", "top overlay", "top past", etc., por ejemplo, en "mecánica 1" dibujo un esquema de componente, su modelo 3D y pongo un ".Designator" - esto se hace para que luego fue más fácil descargar el dibujo de ensamblaje (y otros). Todos los campos adicionales que no uso se eliminan. Por lo tanto, me quedan unos 15, en lugar de 24, como era después de la importación. A menudo, para BGA y QFN, es necesario cambiar la apertura de la máscara de las almohadillas, hacer otros ajustes en las capacidades de producción, etc.



Fig.6. pcb MIMX8MQ7DVAJZXA

Ahora en las propiedades esquemáticas necesita conectar el componente con pcb. Para comprender mejor todo lo escrito anteriormente, puede ver videos instructivos sobre cómo crear una biblioteca para Altium.

En las dos primeras etapas preparatorias, logré crear componentes de biblioteca que ahora se pueden usar en el proyecto. Me llevó mucho menos tiempo que si lo estuviera haciendo desde cero.

Transferencia de seguimiento


La tercera etapa es la más difícil: es la transferencia de parte de la traza del panel de referencia al proyecto. Tienes que tener mucho cuidado. Por lo general, los errores de importación generan errores de transferencia (entre entornos de desarrollo), por lo que solo necesita "pedir prestado" lo que necesita, algo que requeriría mucho tiempo y esfuerzo. Especialmente no recomiendo mover vias, polígonos, recortes en polígonos y las reglas para DRC (Diseño -> Reglas ...).

El iMX8 se traza en 10 capas, por lo que usaré la misma pila con la misma secuencia de capas. Para la conveniencia de trabajar con el proyecto MCIMX8M-EVK-DESIGNFILES, ocultaré todos los polígonos.



Fig.7. Placa de referencia MCIMX8M-EVK-DESIGNFILES. tarjeta de circuito impreso

Se ve aterrador. Muy atemorizante. Parece que con esto ya puedes cerrar el Altium y llorar. Para mayor comodidad, puede ocultar capas innecesarias, pero esto no ayudará radicalmente, pero por capas se verá más o menos simple. DDR está divorciado en 4 capas, pero tampoco puse fondo por accidente (ver más abajo).



Fig.8. Rastreo de LPDDR4 MCIMX8M-EVK-DESIGNFILES por capas

Si ha alcanzado este punto en su proyecto, entonces la mitad del trabajo de transferencia, o tal vez todo el proyecto, ya se ha realizado.

Tal vez ya has adivinado lo que hay que hacer a continuación. Sí, solo queda copiar capa por capa correctamente. Te diré cómo lo hago para evitar errores simples.

En primer lugar, abro la placa de referencia y la mía, con los componentes cargados desde el circuito en dos monitores (esta opción es más conveniente para el desarrollo). Copio el procesador y la memoria de la placa de referencia a mí mismo (esto es necesario para exponer estos componentes teniendo en cuenta la traza existente).



Fig.9. Disposición mutua de la memoria y el procesador (referencia a la izquierda)

Después de eso, es necesario instalar el procesador y la memoria de nuestra placa encima de los instalados correctamente, y luego simplemente eliminar los componentes copiados de la referencia.



Fig.10. Ubicación correcta del procesador y la memoria

Las líneas de comunicación excesivas pueden ocultarse temporalmente y proceder a transferir el seguimiento directamente.

Deberá usar dos formas de copiar cables. El primero es el más simple y más largo: copiar los conductores uno a la vez. No es necesario que copie todas las conexiones de esta manera; tomará mucho tiempo, pero a veces es conveniente. Por ejemplo, tome las señales de los golpes en los pads AE14, AD14, AE12 y AD12. Haga clic en RMB en el explorador, seleccione el elemento del menú Buscar objetos similares ..., en la ventana que aparece, marque el nombre del explorador y la capa (puede copiar inmediatamente desde todas las capas, incluidos los agujeros).



Fig.11. Copie un conductor en una capa (arriba)

A continuación, presione Ctrl + C y coloque el mouse en la plataforma del procesador. Vamos a nuestro tablero y presionamos Ctrl + V y pegamos. Repetimos para los cuatro conductores y colocamos agujeros en los pads de memoria para ir al fondo: hay resistencias. Si realizó copias en todas las capas, entonces las resistencias serán más fáciles de instalar.



Fig. 12. Copiando un solo conductor

Figura 12. (derecha) hay un conductor separado (con una cruz del mouse): este es un ejemplo de cómo copiar el conductor en todas las capas con un vias. La esencia del método es que cuando copia el conductor y lo "configura en el pad", toma el nombre del pad (debe tener cuidado: si copia el conductor a otro pad, tomará el nombre del otro pad).

Incluso ahora puede transferir todos los conductores desde la referencia a su placa usted mismo, pero hay una manera más fácil (hay varios de ellos, pero centrémonos en uno), es excelente para copiar grupos de conductores en una capa. Para comenzar a copiar los conductores de la segunda (y la siguiente) capa, es necesario transferir los conductores superiores de todas las almohadillas del procesador, de lo contrario, la conexión de los conductores se romperá (necesitamos transferir vías desde la parte superior a otras capas, de modo que los conductores estén unidos a ellos) .



Fig.13. Copie todos los conductores con vias al principio

Ahora tengo todos los pads eliminados del procesador y se pueden usar en otras capas. Es decir, en otra capa, puedo atar los conductores sin temor a que se conviertan en NoNet (conductores que cuelgan "en el aire" que no se recogieron). A continuación, transferiré la capa 6 (la tercera, si nos fijamos en la Fig. 8.), para mostrar otro truco. De todos modos, seleccione, copie con encuadernación en cualquier agujero o almohadilla y pegue.



Fig.14. Copiar todos los conductores con vías desde la capa 6

¿Qué es el hack? Entonces, además del rastreo de RAM, logré sacar las interfaces del procesador, que ya se agruparán en ciertas partes de la placa. En el chip, los buses de datos individuales se encuentran en lugares específicos. Por ejemplo, en iMX8, en la parte inferior izquierda del CSI, justo arriba de NAND, etc., es decir, de todos modos no se pueden mostrar de una manera diferente.

Después de que se hayan transferido todas las capas necesarias, es necesario eliminar todas las vías y conductores NoNet (al copiar cinco capas, habrá cinco vías en cada placa en cada placa). Luego organizo manualmente vía, al mismo tiempo que verifico todas las conexiones. Con cierta habilidad, todo el trabajo de transferencia llevará varias horas.

Fondo


En la figura 8. Mostré la capa inferior, que también quiero transferir. Pero lo principal no son los conductores (no hay tantos), sino la disposición de los componentes. Hay 132 elementos debajo del chip y la RAM. Por lo general, no copio esta capa, sino que simplemente configuro el pasivo y la referencia (abriendo dos tableros en diferentes monitores). Esta opción es adecuada si no ha cambiado el tamaño de los componentes a uno más grande, de lo contrario tendrá que modificar.



Fig.15. Componentes en la parte posterior de la placa del módulo



Fig. 16. Traza final debajo del procesador y memoria de las capas de señal

Epílogo


En resumen, puedo decir que este método de transferencia es bastante simple (no excluyo que haya otros). Si comienza con tarjetas simples en 4 capas, puede aprender rápidamente cómo transferir trazas más complejas, sin gastar grandes recursos en ellas. Sobre esto, creo, el artículo puede completarse.

Para la "semilla", diré que en el tablero resultante hay 156 polígonos y, si alguien está interesado, puedo escribir un artículo sobre cómo se colocaron en este módulo, qué dificultades surgieron debido a las pequeñas dimensiones (dimensiones del módulo 81 mm * 58 mm) y qué debería ser considerado.

¡Gracias por la atención!

All Articles