Autor Tema: SDRAM 133MHz layout  (Leído 2562 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
SDRAM 133MHz layout
« en: 17 de Julio de 2009, 08:21:01 »
Hola,

estoy haciendo una placa con un MX21 (ARM9 freescale) + 2 x16bit SDRAM (133MHz) + 1 NOR flash.

He leido las notas de aplicacion de Micron (fabricante SDRAM) y datasheets de memoria y procesador (su controlador de SDRAM). De los datasheets puedo extraer los siguientes datos:

Controlador SDRAM del procesador (señales de salida):
- Clock edge = 1ns
- Setup time = 2ns (address, data) or 3ns (cs, cas, ras,.... other)
- Hold time= 2ns (all)

Memoria MT48LC16M4A2 de Micron (señales de entrada):
- Signals setup time: 1.5ns
- signals hold time: 0.8ns

Sin atender a otros problemas como crosstalk, o integridad de la señal,... si mantenemos todas las pistas de la misma longitud (match length) seguro que funciona. Intento meter el diseño en 4 capas (2 de señal y 2 planos), y es implosible cumplir esto. No es problema, porque se permite ciertas tolerancias de diferencia de longitud entre las pistas. Lo importante es cumplir con los tiempos 'de setup' y 'hold'. Si se cumplen en el conjunto procesador-memoria todo OK.

En un microstrip, la señal viaja a unos 54ps/cm, luego unos 2cm de diferencia entre 2 señales apenas significan 100ps de retraso de una respecto a la otra.

Por otro lado, de las notas de aplicacion de Micron extraigo estas recomendaciones:
- Alrededor de 1cm de tolerancia entre diferentes grupos de señal (por ej. una señal del grupo de address (A0), y una señal del grupo de datos (D0)
- Alrededor de 1cm de tolerancia entre 2 señales de DATOS de diferentes grupos (por ej. cada grupo lo froma 8 bits, así que por ej. D0 y D12 pertenecen a grupos de datos diferentes).
- Alrededor de 1.27mm de tolerancia entre 2 señales de DATOS del mismo grupo (por ej. D0 y D4).
- Alrededor de 1cm de tolerancia entre la señal de reloj y cualquier otra (por ej. SDCLK y A0).

Estos consejos de Micron se me antojan un poco restrictivos, sobretodo el de 1.27mm.

Si nos fijamos en los tiempos de arriba:
- el procesador pone la señal (por ej. A0) 2ns antes del flanco de reloj (subida)
- a la SDRAM, le vale con tenerlo 1.5ns antes del flanco, luego nos sobran 0.5ns
- el procesador mantiene la señal (por ej. A0) 2ns después del flanco de reloj (subida)
- a la SDRAM le vale co tenerlo 0.8ns, luego sobran 1.2ns

Con estos datos en la mano, y poniéndonos en el límite, teniendo en cuenta la velocidad de desplazamiento de una señal microstrip (54ps/cm):
- 0.5ns de margen de seguridad en setup time, equivale a unos 500/54, es decir aprox. 10cm

Con estos datos en la mano, no son muy restrictivas las recomendaciones de Micron?? obviamente las dan sin conocer que procesador le conectas(el cual puede tener tiempos menos favorables que el que uso).

Alguien con experiencia en estos diseños me puede aconsejar?? obviamente tratare de seguir los consejos de Micron, pero ni de coña podré cumplir con esas tolerancias si el diseño lo hago en 4 capas. Cno estos números, me da la sensación de que aún teniendo 2 o 3 cm de tolerancia entre algunas señales y reloj, no habrá mayor problema.

En otros temas, el ancho de las pistas lo hare de 6mil, y las distancia entre ellas de unos 9mil, estando estas pistas a una distancia de aprox. 5mil de su plano adyacente (alrededor de 55ohm de impedancia caracteristica).

Tambien intento evitar poner resistenicas terminadoras en serie, para reducir reflexiones, ya que me llevaria a poner un monton de resistenicas o pack de resistencias.

Algún consejo sobre el tema de ajustar las longitudes de las pistas? es que match length suena muy bien, y en castellano suena feo jeje

EDIT: no lo he comentado, pero tambien hay un margen de tiempo similar cuando hablamos en el sentido contrario (datos en el procesador de entrada, y datos en al SDRAM como salida). En este caso, el SDCLK (reloj) tiene que llegar a la SDRAM, y luego la señal de dato llegar al procesador (se suman los tiempos y es peor caso).

Un saludo. Dani.
« Última modificación: 17 de Julio de 2009, 08:39:39 por damago »