Prototipo SDRAM vs problemas de producción

11

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): ingrese la descripción de la imagen aquí

Aquí está la configuración de la pila de PCB para los PCB de producción (que no funcionan) ingrese la descripción de la imagen aquí

Aquí está el enrutamiento para la SDRAM: Enrutamiento SDRAM

James
fuente
3
¿El control de impedancia fue el mismo entre proto y series de producción?
dext0rb
No estoy seguro. No sé lo suficiente sobre la integridad de la señal para definir adecuadamente estos parámetros para las casas de juntas. Sentí que si especificaba los parámetros sin saber lo que estaba haciendo, causaría problemas en lugar de solucionarlos.
James
¿Y les pagó para verificar la impedancia (que @dextorb le sugirió que controlara)?
Brian Carlton
No es la longitud promedio lo que importa. Es el mínimo y máximo dentro del grupo.
Brian Carlton
1
¿Cómo se ve la integridad de la señal en la traza del reloj en los pines SDRAM?
Brian Carlton

Respuestas:

10

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).

Mike DeSimone
fuente
El libro de Henry Ott es una biblia para mí en 1980. Sin embargo, antes de leerlo, ya era experto en ver fugas de RF en un diseño mecánico / eléctrico, incluso antes de que comenzaran las pruebas de EMC. Las ranuras, los radiadores, las antenas dieléctricas y los cables de bus de E / S eran la mejor antena para entrar y salir.
Tony Stewart Sunnyskyguy EE75
Buena información aquí, de acuerdo con la simulación Hyperlynx basada en mis datos de simulación ingresados, se requieren resistencias de 22 ohmios, de lo contrario, la forma de onda en las líneas de datos (impulsadas en 1ns de tiempo de subida) desde la SDRAM están horriblemente distorsionadas y algunas reflexiones cruzan el voltaje de referencia.
James
Además, la recomendación de apilamiento es buena. Hay una pequeña diferencia en el apilamiento entre el prototipo y el fabricante. Estoy agregando los diagramas a la Pregunta para que los vea. Además, he estado leyendo Integridad de la señal simplificada por Eric Bogatin. Buena información aquí, pero tomará un tiempo asimilar y asimilar lo suficiente como para comenzar un nuevo diseño de tablero con sus recomendaciones.
James
Por lo que vale, OP originalmente tenía lo que parecían fotos de Altium. Altium tiene su propio conjunto de herramientas de integridad de señal que pueden usar archivos IBIS. También puede examinar la diafonía. Pero necesita la información de apilamiento exacta para hacer esto.
ajs410
1
Entonces, en este punto, estoy más preocupado por las resistencias. Parecen estar en medio de las huellas en lugar de estar en los conductores a los que pertenecen. En estas aplicaciones, es mejor no usar paquetes de resistencias, sino usar resistencias individuales pequeñas. Si debe usar paquetes de resistencias, debe tomarse el tiempo para hacer un trabajo mucho mejor intercambiando las resistencias para que el diseño sea menos loco. Eso es todo lo que puedo decir de su diseño, que no tiene contornos de paquete y hace que la mitad de las capas sean difíciles de ver.
Mike DeSimone
4

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?

mikeselectricstuff
fuente
2

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;

  1. Configure el IO para que tenga una velocidad rápida y desactive los filtros de entrada
  2. Habilite el modo de entrada en el reloj
  3. Configure el bit de rotación (9?) Para aumentar la velocidad de rotación de los pines de la interfaz SDRAM
  4. Habilite el modo de repetidor ya que son bidireccionales y no deben dejarse flotando en una entrada cmos.
  5. Cambie la tensión de alimentación para determinar la sensibilidad al error.
  6. el modo de reinicio predeterminado para un pin del bus de datos es FUNC = 0X00, MODE = 0X02, HYSTERESIS = HABILITADO, INVERT = DESHABILITADO y SLEW = STANDARD
  7. ¿Su llamada a PINSEL_ConfigPin () con un nuevo valor de función, restablece el MODO a INACTIVO (sin resistencia pull-down / pull-up) y apaga la HISTERESIS?
  8. ¿Está utilizando un bucle for / next o un código discreto como;

    • LPC_IOCON-> P3_0 | = 1; // D0 @ P3.0
    • LPC_IOCON-> P3_1 | = 1; // D1 @ P3.1
    • LPC_IOCON-> P3_2 | = 1; // D2 @ P3.2 etc.
  9. ¿Afirma volver a habilitar el pin WE siempre que sea necesario?
  10. ¿Lo usas? * pPIN & = ~ (0x00000007); // Borrar bits de función "

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ó? autobús Se prefiere el método (1). ¿Está limpio 1.25Vdc?


  1. ¿Pagó por las TIC en estos tableros? prueba de tabla desnuda es imprescindible
  2. ¿Especificó la impedancia en sus instrucciones de diseño de gerber?
  3. ¿Ejecutó simulaciones en su diseño con tolerancias?
  4. 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;)

Tony Stewart Sunnyskyguy EE75
fuente
Solo un comentario para OP: veo que OP está utilizando Altium Designer, y hay una calculadora de impedancia integrada en el software. ¡No lo he usado mucho pero sé que está allí en alguna parte!
dext0rb
2
Mientras cablea una traza (presione W en la vista de PCB), presione la tecla Tab y verá la impedancia estimada.
ajs410
generalmente para baja complejidad Cantidad 100 PWB's No pagaría por ICT (prueba), pero estos tienen pistas ciegas, así que ... algo para considerar ... y medir la capacitancia en una placa desnuda V + <> GND
Tony Stewart Sunnyskyguy EE75
No pagué por el control de impedancia en estos tableros. Las líneas simuladas en Hyperlynx (MentorGraphics) mostraron formas de onda bastante perfectas (o bien dentro de las especificaciones) basadas en mi diseño enrutado. Para modelar esto, recreé cada línea de transmisión y junto con los modelos IBIS. No tengo un alcance de ancho de banda suficiente para investigar adecuadamente las señales reales = (
James
1
Hola @TonyStewart, gracias por tu apoyo. 1) El tablero prototipo no requería una rotación rápida. Habilitado sin cambio en efecto. 2) No estoy seguro de lo que esto significa: ¿el reloj es una salida? 3) La histéresis se dejó habilitada. Deshabilitado sin cambio en efecto. 4) Mayor rotación no habilitada en proto. Habilitado sin cambio en efecto. 5) No probado. 7) La función Pin Config no altera otros bits. 8) Código discreto para pines de control, para bucle para datos / dirección 9) ¿Cuándo necesito habilitar WE? ¿El controlador EMC debería hacer esto por mí? 10) Los bits se anotan antes de establecerse. Tengo otro prototipo en orden, esté aquí la próxima semana.
James