Tengo un diseño usando un LPC1788 junto con un módulo SDRAM de ISSI ( IS42S32800D ). Esta es una interfaz de 32 bits.
He descartado este diseño y he hecho un prototipo con un fabricante de PCB que hace prototipos de 6 capas. El prototipo de PCB funciona bien. Entonces pensé que obtendría el PCB fabricado en un lote de pequeño volumen (100) de mi proveedor habitual de PCB. Les di la información acumulada que mi prototipo usó para asegurar que no hubiera problemas.
¡Sin embargo! Tengo problemas masivos con la placa de producción. Al principio no pude obtener ninguna respuesta de la SDRAM con el mismo código que usé en mi placa prototipo. La placa anterior funcionaba a 120Mhz, así que estaba seguro de que algo estaba mal con esta nueva placa. Luego encontré una publicación en la que las personas sugirieron usar el Modo repetidor en las líneas de datos SDRAM (no había usado esto anteriormente) y esto generó una respuesta de la SDRAM, sin embargo, no es estable. Puedo escribir en aproximadamente 16 direcciones, pero luego, con lecturas posteriores, los datos devueltos (en cada dirección) son los datos que escribí al final (probablemente debido al modo de repetidor). Cuando desactivo el modo repetidor, los datos devueltos son 0xFFFFFFF. Ahora estoy tratando de conectarme a 48Mhz, la configuración más baja para la que tengo tiempos.
Estoy usando las mismas resistencias de terminación (en las líneas de datos) de 22 ohmios en ambas placas, las líneas de datos tienen un promedio de 3 cm de largo. La línea del reloj mide 2.4cm de largo. Las líneas de dirección tienen un promedio de 3.8 cm de largo.
¿Está esto fuera de especificaciones? ¿Debería retrasar el reloj más si es sustancialmente más corto? Estoy realmente atrapado aquí, ya que no he cambiado nada sobre el diseño que esperaba para una fabricación sin problemas para estas placas.
Maximum Data Line Length: 59mm (Although this includes the branch to the NAND Flash)
Minimum Data Line Length (Ctrl to Res): 18mm
Maximum Address Line Length: 44mm
Minimum Address Line Length: 24mm
CLK: 24.5mm
CKE: 25mm
CAS: 28mm
RAS: 28.7mm
Aquí está la configuración de la pila de PCB para el prototipo original (en funcionamiento):
Aquí está la configuración de la pila de PCB para los PCB de producción (que no funcionan)
Aquí está el enrutamiento para la SDRAM:
fuente
Respuestas:
Esa es una pésima acumulación. Sus núcleos deben ser de 0.2 mm y el equilibrio de su grosor debe estar en el preimpregnado entre las capas 3 y 4 (Interior 1 e Interior 2).
La razón de esto es que, para cualquier señal en una traza, debe haber una ruta de corriente de retorno en el avión justo debajo de ella. La corriente de retorno en el plano intentará minimizar la inductancia (es decir, el área del bucle), lo que significa que intentará seguir bajo el rastro de la señal. Si la traza de la señal está lejos del avión, buscará otras trazas para encontrar una ruta de retorno. Esto es electromagnética que estás luchando.
Además, al tener capas internas a diferentes distancias de sus planos de referencia (recuerde, ¡todos los rieles de suministro se ven como suelos en CA!) En comparación con las distancias de la capa externa, crea un cambio de impedancia cada vez que intercambia capas (aunque esto se puede contrarrestar con traza cambios de ancho, aunque me pareció que valía la pena solo una vez), y aumenta significativamente el potencial de diafonía y otras interferencias.
Otra cosa que debe verificar son los materiales utilizados: hay más de 20 materiales diferentes que se llaman a sí mismos "FR-4", por ejemplo. Lo que suelo usar se llama 370-HR. Se comporta bastante bien con señales de alta velocidad de 100-500 MHz.
Con respecto a la línea del reloj, IIRC en mi último diseño de SDRAM. Tenía el reloj configurado para que su borde sucediera último (su trazo fue más largo en 1 cm), después de que todas las líneas de dirección y datos se estabilizaron. Entonces, sí, vale la pena intentar retrasar el reloj. No necesitaba ningún control de impedancia en las líneas SDRAM.
Sus resistencias de terminación deben colocarse lo más cerca posible de los controladores de línea. Si no están dentro de unos 0,5 cm, pueden causar reflejos en sí mismos, lo que da como resultado un exceso y un zumbido. En mi humilde opinión, la longitud de traza de 3 cm es muy corta para necesitar resistencias de terminación (las uso comenzando alrededor de 6-10 cm); ¿Has intentado sacarlos?
Otra cosa que debe verificar son sus aviones: ¿tiene rastros de señal que crucen cortes de avión? Este es un gran no-no, porque obliga a la corriente de retorno a tomar una ruta larga alrededor del corte.
Finalmente, la velocidad de borde es un gran problema en estos diseños. Muchos chips tienen tiempos de subida y bajada innecesariamente cortos, y la reducción de la frecuencia del reloj no tiene ningún efecto sobre esto. Estos bordes rápidos son excelentes para crear reflejos. Esto es lo que sus resistencias terminadoras de 22 ohmios están tratando de arreglar: ralentizan los bordes. Sin embargo, si realmente lo está presionando, se puede utilizar una herramienta como HyperLynx de Mentor Graphics para encontrar el diseño de terminación óptimo.
Algunos libros que puedo recomendar que cubren todo esto y mucho más, y los juramos en el trabajo:
Estos libros cubren la reducción de EMI, el diseño de blindaje, el apilamiento de PCB, el control de impedancia, el desacoplamiento de la fuente de alimentación y mucho más. Además, el Sr. Ott enseña seminarios sobre este tema (viene con una copia gratuita de su libro).
fuente
En este tipo de frecuencia, creo que es poco probable que los problemas de tipo de longitud de pista sean un problema importante, ciertamente para problemas de retraso. A medida que los problemas comenzaron con una nueva PCB, lo primero que debería hacer sería probar la continuidad de todas las líneas (contra la hoja de datos, no su esquema, en caso de que su esquema tenga errores), y alcance cada pin para verificar que las formas de onda estén en menos plausible: incluso si su alcance no es capaz de verificar los detalles de sincronización, debería ser bastante obvio si hay pines abiertos o en corto.
Hacer este tipo de cosas sin un alcance adecuado está plagado de peligros potenciales: ¿cómo sabe cuánto margen tiene? Incluso si funciona, ¿cómo sabe si está o no en el borde y si es vulnerable a fallas de campo / producción debido a tolerancias, temperatura o fase de la luna?
fuente
2do complemento Asumimos que su diseño fue probado con margen y el código fue perfecto en sus preguntas. (no) Le sugiero que verifique lo siguiente;
¿Está utilizando un bucle for / next o un código discreto como;
Recuerdo haber depurado mi primer diseño CMOS de un estudiante de posgrado de Física para una placa de lógica de temporizador conmutable de grabación sísmica portátil. No había firmware ni uC, pero nunca hizo un análisis de tolerancia en el peor de los casos y el hardware tenía condiciones de carrera por todas partes cuando una docena más de placas fueron construidas y depuradas por mí mismo. El Profesor de Sísmica trajo al Jefe del Departamento de Física para preguntar por qué no podía depurar los tableros, luego tuve que aconsejarle que la variación de componentes expusiera muchos defectos de diseño llamados condiciones de carrera de sincronización debido a las condiciones metaestables y al borde del reloj utilizado. Todavía no entendía, luego le pedí que me dijera cuántos dedos desplegué mientras levantaba la mano antes de que alcanzara el nivel de mi cintura de menor a mayor. Luego dijo, no puedes hacer eso y esperar una respuesta correcta. Dije, precisamente. Esa es una condición de carrera primitiva. Se vuelven menos obvios con más niveles de complejidad. U de Manitoba 1973.
Primero agregado: ¿Qué esquema de terminación de bus usó? Se prefiere el método (1). ¿Está limpio 1.25Vdc?
La constante dieléctrica en tableros y # de capas de pre-impregnación controlan la impedancia de la línea de banda y la tira microscópica junto con el ancho de trazo y el espacio.
Hay muchas calculadoras Z gratuitas en línea para stripline.
Puede intentar medir la capacitancia en pistas grandes o planos de tierra y comparar ambas tablas desnudas.
Observe también las señales con un alcance de alta velocidad y observe el patrón de ojo de datos de sobreimpulso y reloj <>.
Tiene que haber una explicación simple para los errores, pero no es fácil de encontrar. Pero una vez que encuentre la causa raíz ... no volverá a cometer ese error.
agregado: Otro error que encontré es que el diagrama de altura de su pila no indica el grosor de la capa de Cu y no es suficiente para caber en 6 capas a menos que sea incorrecto o el grosor de Cu sea 0.039 mm (NO;)
fuente