SDRAM Prototype vs Production Woes

11

Tengo un diseño que utiliza un LPC1788 junto con un módulo SDRAM de ISSI (IS42S32800D ). Esta es una interfaz de 32 bits.

He distribuido este diseño y tuve un prototipo hecho con un fabricante de PCB que hace prototipos de 6 capas. El prototipo de PCB funciona bien. Entonces pensé que obtendría la PCB fabricada en un lote pequeño (100) de mi proveedor habitual de PCB. Les di la información de apilamiento que usó mi prototipo para garantizar que no habría problemas.

Sin embargo! Tengo problemas masivos con el panel 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 estaba trabajando a 120 MHz, así que estaba seguro de que algo andaba mal con esta nueva placa. Luego encontré una publicación donde las personas sugirieron usar el Modo de repetidor en las líneas de datos de SDRAM (no había usado esto anteriormente) y esto generó una respuesta de SDRAM, sin embargo, no es estable. Puedo escribir en 16 o más direcciones, pero luego, con lecturas posteriores, los datos devueltos (en cada dirección) son los datos que escribí por última vez (probablemente debido al Modo Repetidor). Cuando deshabilito el modo de 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 22Ohms 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 direcciones tienen una longitud promedio de 3.8 cm.

¿Esto está demasiado fuera de especificaciones? ¿Debo retrasar más el reloj si es sustancialmente más corto? Estoy realmente atascado aquí, ya que no he cambiado nada sobre el diseño que esperaba para una fabricación perfecta para estas tablas.

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álaconfiguracióndelapiladePCBparalasPCBdeproducción(quenofuncionan)

Aquí está el enrutamiento para la SDRAM:

    
pregunta James

3 respuestas

9

Eso es un pésimo stackup. Sus núcleos deben ser de 0,2 mm y el balance de su grosor debe estar en el prepreg entre las capas 3 y 4 (Inner 1 y Inner 2).

El motivo de esto es que, para cualquier señal en una traza, debe haber una ruta de retorno de la corriente en el plano 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 la traza de la señal. Si la traza de la señal está alejada del plano, buscará otras trazas para encontrar una ruta de retorno. Esto es electromagnético contra lo 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 parecen a los suelos en AC!) en comparación con las distancias de la capa exterior, usted crea un cambio de impedancia cada vez que intercambia capas (aunque esto puede ser contrarrestado con cambios de ancho de traza, aunque me pareció que merecía la pena el problema solo una vez, y usted aumenta significativamente el potencial de interferencia y otras interferencias.

Otra cosa que debe comprobar es el material utilizado: 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, el IIRC en mi último diseño de SDRAM configuré el reloj para que su borde fuera el último (su trazo fue más largo en 1 cm), después de que todas las direcciones y las líneas de datos se estabilizaron. Así que 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 aproximadamente 0,5 cm, pueden causar reflejos, lo que provocará un exceso y un timbre. En mi humilde opinión, la longitud de traza de 3 cm es muy corta para necesitar resistencias de terminación (las uso a partir de unos 6-10 cm); ¿Has intentado simplemente sacarlos?

Otra cosa que debe verificar son sus aviones: ¿Tiene señales de señales que cruzan los cortes de los aviones? Este es un gran no-no, porque obliga a la corriente de retorno a tomar una ruta larga alrededor del corte.

Finalmente, la tasa de borde es un gran problema en estos diseños. Muchos chips tienen tiempos de subida y caída innecesariamente cortos, y reducir la frecuencia de reloj no tiene efecto en esto. Estos bordes rápidos son ideales para crear reflejos. Esto es lo que sus resistores de 22 ohmios terminadores intentan solucionar: ralentizan los bordes. Sin embargo, si realmente lo está presionando, se puede usar una herramienta como HyperLynx de Mentor Graphics para encontrar el diseño de terminación óptimo.

Algunos libros que te puedo recomendar cubren todo esto y mucho más, y confiamos en ellos en el trabajo:

Estos libros cubren reducción de EMI, diseño de blindaje, apilado de PCB, control de impedancia, desacoplamiento de la fuente de alimentación y mucho más. Además, el Sr. Ott imparte seminarios sobre este tema (viene con una copia gratuita de su libro).

    
respondido por el Mike DeSimone
3

En este tipo de frecuencia, creo que es poco probable que los problemas de tipo de longitud de seguimiento sean un problema importante, ciertamente para los problemas de retraso. Como los problemas comenzaron con una nueva PCB, lo primero que debe hacer es probar la continuidad de todas las líneas (en contra de 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 está a la altura de la verificación de los detalles de tiempo, debería ser bastante obvio si hay algún pasador abierto o corto.

Hacer este tipo de cosas sin un alcance adecuado está lleno de peligros potenciales. ¿Cómo sabes cuánto margen tienes? Incluso si funciona, ¿cómo saber si está o no en el límite y es vulnerable a fallas de campo / producción debido a tolerancias, temperatura o fase de la Luna?

    
respondido por el mikeselectricstuff
2

Segundo agregado Supusimos que su diseño se probó con un margen y el código fue perfecto en sus preguntas. (No) te sugiero que verifiques lo siguiente;

  1. Configure el IO para tener un control rápido y deshabilite los filtros de entrada
  2. Habilitar el modo de entrada en el reloj
  3. Establezca el bit de desplazamiento (9?) para aumentar la velocidad de giro para los pines de la interfaz SDRAM
  4. Habilite el modo de repetidor ya que son bidireccionales y no deben dejarse flotando en una entrada de cmos.
  5. Cambie la tensión de alimentación para determinar la sensibilidad al error.
  6. el modo de restablecimiento predeterminado para un pin de bus de datos es FUNC = 0X00, MODE = 0X02, HYSTERESIS = ENABLED, INVERT = DISABLED, y SLEW = STANDARD
  7. ¿Su llamada a PINSEL_ConfigPin () con un nuevo valor de función, restablece el MODO a INACTIVO (sin resistencia desplegable / desplegable) y desactiva la HISTERESIS?
  8. ¿Está utilizando un bucle for / next o 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, cada vez que sea necesario?
  10. ¿Usas? * pPIN & = ~ (0x00000007); // Borrar bits de funciones "

Recuerdo haber depurado mi primer diseño de CMOS de un estudiante de posgrado de Física para una grabación portátil sísmica, una placa lógica de temporizador conmutable. No había firmware ni uso de la unidad, pero nunca hizo el peor análisis de tolerancia de caso y el hardware tenía condiciones de carrera por todas partes cuando una docena de tableros más fueron construidos y depurados por mí mismo. El Profesor sísmico trajo al Jefe del Departamento de Física para preguntar por qué no podía hacer la depuración de los tableros, luego tuve que recomendarle que la variación de los componentes exponía muchas fallas de diseño llamadas condiciones de carrera de sincronización debido a las condiciones metaestables y el borde del reloj utilizado. Todavía no entendía, entonces le pedí que me dijera cuántos dedos desplegé mientras levantaba la mano antes de que alcanzara mi nivel de cintura de bajo a alto. Luego dijo, no puedes hacer eso y esperar una respuesta correcta. Yo dije, precisamente. Esa es una condición de raza primitiva. Se vuelven menos obvios con más niveles de complejidad. U de Manitoba 1973.

1er agregado: ¿Qué esquema de terminación de bus usaste? se prefiere el método (1), ¿Está limpio 1.25Vdc?

  1. ¿Pagaron las TIC en estos foros? la prueba de tabla es imprescindible
  2. ¿Especificó la impedancia en sus instrucciones de diseño de gerber?
  3. ¿Ejecutó simulaciones en su diseño con tolerancias?
  4. Constante dieléctrica en tableros y #de capas de control pre-preg del impedancia de la línea de banda y microstrip junto con ancho de traza y brecha.

    Hay muchas calculadoras Z en línea gratuitas para stripline.

    Puedes intentar medir la capacitancia en pistas grandes o planos de tierra y comparar ambas tablas vacías.

    También mire las señales con un alcance de alta velocidad y observe el patrón de ojo de datos de sobreimpresión y reloj < & gt ;.

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.

añadido:    Otro error que encontré es que el diagrama de altura de 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 del Cu sea 0.039 mm (NO;)

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas