Tengo un diseño usando un LPC1788 junto con un módulo SDRAM de ISSI ( IS42S32800D ). Esta es una interfaz de 32 bits.
He enrutado 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 fabricaría la PCB en un lote de volumen pequeño (100) de mi proveedor habitual de PCB. Les di la información acumulada que mi prototipo usó para asegurar que no habría 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 120 Mhz, así que estaba seguro de que algo andaba mal con esta nueva placa. Luego encontré una publicación en la que la gente sugería usar el modo repetidor en las líneas de datos 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 las lecturas posteriores, los datos devueltos (en cada dirección) son los datos que escribí en último lugar (probablemente debido al modo 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,4 cm de largo. Las líneas de dirección tienen un promedio de 3,8 cm de largo.
¿Está demasiado fuera de especificación? ¿Debería 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. Esperaba una producción perfecta 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á la ruta para la SDRAM:
Esa es una acumulación pésima. 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 plano justo debajo de ella. La corriente de retorno en el plano intentará minimizar la inductancia (es decir, el área del lazo), lo que significa que intentará seguir el rastro de la señal. Si el rastro de la señal está lejos del avión, buscará otros rastros para encontrar un camino de regreso. 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 ven como tierra en CA!) en comparación con las distancias de la capa externa, crea un cambio de impedancia cada vez que intercambia capas (aunque esto puede contrarrestarse con cambios en el ancho de la traza, aunque descubrí que valió la pena el problema 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, configuré el reloj para que su borde ocurriera en último lugar (su trazo era 1 cm más largo), después de que se estabilizaron todas las líneas de dirección y datos. 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, lo que resulta en un exceso y un timbre. En mi humilde opinión, la longitud del rastro de 3 cm es muy corta para necesitar resistencias de terminación (las uso comenzando alrededor de 6-10 cm); has probado solo a sacarlos?
Otra cosa a revisar son tus planos: ¿Tienes rastros de señal cruzando cortes de plano? 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 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 intentan solucionar sus resistencias de terminación de 22 ohmios: 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 que cubren todo esto y mucho más, y juramos por ellos 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 imparte seminarios sobre este tema (viene con una copia gratuita de su libro).
En este tipo de frecuencia, creo que es poco probable que los problemas de tipo de longitud de pista sean un problema importante, sin duda para los problemas de retraso. Como los problemas comenzaron con una nueva PCB, lo primero que debe 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 está a la altura de verificar los detalles de tiempo, debería ser bastante obvio si hay pines abiertos o en cortocircuito.
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 límite y es vulnerable a fallas de campo/producción debido a las tolerancias, la temperatura o la fase de la luna?
2nd add Asumimos que su diseño fue probado en el margen y que el código era perfecto en sus preguntas. (no) le sugiero que verifique lo siguiente;
¿Está utilizando bucles for/next o código discreto como;
Recuerdo haber depurado mi primer diseño de CMOS de un estudiante de postgrado de Física para una placa lógica de temporizador conmutable de grabación portátil sísmica. 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 yo mismo construí y depuré una docena de placas más. El profesor sísmico trajo al jefe del departamento de física para preguntar por qué no podía depurar las placas, luego tuve que aconsejarle que la variación de los componentes exponía muchas fallas de diseño llamadas condiciones de carrera de tiempo debido a las condiciones metaestables y al borde del reloj utilizado. Él todavía no entendía, entonces le pedí que me dijera cuántos dedos desplegué mientras levantaba la mano antes de que llegara al nivel de mi cintura de abajo hacia arriba. 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. Universidad de Manitoba 1973.
Primero agregado: ¿Qué esquema de terminación de bus usó? Se prefiere el método (1), ¿Está limpio 1,25 V CC?
La constante dieléctrica en los tableros y el número de capas de preimpregnado controlan la impedancia de la línea de banda y la microcinta junto con el ancho y el espacio del trazo.
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 placas desnudas.
También mire las señales con un osciloscopio de alta velocidad y observe el sobreimpulso y el patrón de ojo de datos de 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 su 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 de Cu sea de 0.039 mm (NO;)
dext0rb
Jaime
brian carlton
brian carlton
Jaime
Kaz
Jaime
brian carlton
usuario3624
Jaime
martin thompson
Jaime