Estimados,
En este post, les solicito consejos para tomar la mejor decision acerca de usar SDR o DDR en mi aplicacion.
Usando un FPGA, necesito grabar palabras de 16 bits en una memoria SDRAM (por capacidad).
La memoria MK9 (altera) es bastante pero no suficiente.
Las palabras de 16 bits van a estar ingresando al fpga a razon de 200mhz a tasa continua hasta llenar la memoria, sin pausas de ningun tipo. (planeo hacer una fifo con la memoria interna del fpga para suplir algunos problemas)
Dispongo de lo siguiente (un integrado, no modulos):
- Memoria DDR PC-2100. 133mhz (x2 ya que es ddr) de 16 bits de ancho de bus de datos
- Memora SDR 133mhz de 32 bits de ancho de bus de datos (de una gforce vieja)
Teniendo en cuenta:
- PCB hecha por mi, por lo que las altas frecuencias se van a complicar con los trazos.
- La memoria va a tener que estar un poco alejada del fpga, a 1 pulgada aprox
- Las demoras por refresco y por cambio de fila (me preocupa mas esta ultima).
Cual me convendria? Mi analisis es el siguiente:
- La memoria DDR me permite grabar en estado alto y bajo del clock, por lo que podria llegar a los 200mhz sin mayor problema PERO el bus de direccion (no estoy seguro si es asi en burst) y el de datos (ademas del clock) estarian cambiando de estado a 200mhz, son aproximadamente 30 trazos del PCB cambiando a esa frecuencia
- En la memoria SDR, al ser de 32 bits, estaria "simulando" un DDR ya que juntaria 2 palabras de 16 bits en el fpga y las mandaria a la memoria a 133mhz. En este caso tendria unos 50 trazos del PCB cambiando, pero a 133mhz. Si fuera una SDR de 16 bits ya no me sirve porque no le da el ancho de banda.
Ademas,
En la memoria DDR, no sabria como manejar las pausas de cambio de fila o de refresco mientras tengo que grabar los datos a todo trapo.
En la SDR, al hacerla correr a 133mhz tendria 266mhz efectivos (por mandar 2 palabras a la vez) con lo cual la memoria "lee" la fifo interna del fpga mas rapido de lo que este la llena, haciendo la fifo de "buffer" para cuando la sdram tiene que cambiar de fila o refrescar.
Supongo que podria implementar la misma fifo para la ddr asi que supongamos que no es un problema pero lo queria mencionar.
Mi mayor preocupacion es la integridad de datos debido a los trazos del PCB.
Teniendo en cuenta estas opciones (o alguna otra que puedan sugerir), que me recomendarian usar para el proyecto?
Desde ya, muchisimas gracias
PD: Aclaro que no necesito acceso aleatorio al menos para grabacion. Se empieza a grabar en la direccion 0 y se graba continuo hasta que se llena.
En este post, les solicito consejos para tomar la mejor decision acerca de usar SDR o DDR en mi aplicacion.
Usando un FPGA, necesito grabar palabras de 16 bits en una memoria SDRAM (por capacidad).
La memoria MK9 (altera) es bastante pero no suficiente.
Las palabras de 16 bits van a estar ingresando al fpga a razon de 200mhz a tasa continua hasta llenar la memoria, sin pausas de ningun tipo. (planeo hacer una fifo con la memoria interna del fpga para suplir algunos problemas)
Dispongo de lo siguiente (un integrado, no modulos):
- Memoria DDR PC-2100. 133mhz (x2 ya que es ddr) de 16 bits de ancho de bus de datos
- Memora SDR 133mhz de 32 bits de ancho de bus de datos (de una gforce vieja)
Teniendo en cuenta:
- PCB hecha por mi, por lo que las altas frecuencias se van a complicar con los trazos.
- La memoria va a tener que estar un poco alejada del fpga, a 1 pulgada aprox
- Las demoras por refresco y por cambio de fila (me preocupa mas esta ultima).
Cual me convendria? Mi analisis es el siguiente:
- La memoria DDR me permite grabar en estado alto y bajo del clock, por lo que podria llegar a los 200mhz sin mayor problema PERO el bus de direccion (no estoy seguro si es asi en burst) y el de datos (ademas del clock) estarian cambiando de estado a 200mhz, son aproximadamente 30 trazos del PCB cambiando a esa frecuencia
- En la memoria SDR, al ser de 32 bits, estaria "simulando" un DDR ya que juntaria 2 palabras de 16 bits en el fpga y las mandaria a la memoria a 133mhz. En este caso tendria unos 50 trazos del PCB cambiando, pero a 133mhz. Si fuera una SDR de 16 bits ya no me sirve porque no le da el ancho de banda.
Ademas,
En la memoria DDR, no sabria como manejar las pausas de cambio de fila o de refresco mientras tengo que grabar los datos a todo trapo.
En la SDR, al hacerla correr a 133mhz tendria 266mhz efectivos (por mandar 2 palabras a la vez) con lo cual la memoria "lee" la fifo interna del fpga mas rapido de lo que este la llena, haciendo la fifo de "buffer" para cuando la sdram tiene que cambiar de fila o refrescar.
Supongo que podria implementar la misma fifo para la ddr asi que supongamos que no es un problema pero lo queria mencionar.
Mi mayor preocupacion es la integridad de datos debido a los trazos del PCB.
Teniendo en cuenta estas opciones (o alguna otra que puedan sugerir), que me recomendarian usar para el proyecto?
Desde ya, muchisimas gracias
PD: Aclaro que no necesito acceso aleatorio al menos para grabacion. Se empieza a grabar en la direccion 0 y se graba continuo hasta que se llena.