selección de chips SDRAM

4

Necesito almacenar 1.5Gb / s de datos de video a través de SDRAM, lo que resulta en una combinación de entrada y salida de 3Gb / s.

Este es mi pensamiento hasta ahora:

La longitud de ráfaga de escritura / lectura se establece en máx (16 ciclos de reloj), y CL es de 3 ciclos de reloj, lo que significa que por cada 16 relojes, necesito al menos otro 3. Por lo tanto, 19% de sobrecarga para CL solo entre ráfagas.

Cambiar bancos / filas es otro de 15 ciclos de reloj (RP + WR + RC). El número máximo de escrituras en ráfaga que puedo hacer sin cambiar las filas es de 64 (según la guía de usuario de Xilinx spartan 6 MCB página 17). Esto requiere 77 relojes (64 escrituras de 16 bits * 1.19 para la sobrecarga de CL) y requiere 15 relojes adicionales para la configuración (o 20%) entre filas.

3Gb / s * 1.19 * 1.20 = 4.28 Gb / s.

Estoy considerando la posibilidad de sincronizar un dispositivo LPDDR a 166Mhz, que da 332Mhz para ambos bordes del reloj. Si uso un dispositivo con una longitud de palabra de 16 bits, obtengo 332Mhz * 16 bit = 5.3 Gb/s , dentro de mi especificación de manera bastante cómoda. Quizás este dispositivo?

Mi pregunta principal es: ¿Estoy en el camino correcto aquí? Esta es la primera vez que he tenido que diseñar una placa que contenga SDRAM, ¿estos números se ven bien? ¿Hay alguna manera de configurar el chip para minimizar aún más la sobrecarga? ¿Hay algo más que deba considerar? Lo último que quiero es seleccionar un dispositivo, construir el tablero y luego descubrir que mi elección es demasiado pequeña / lenta para mi aplicación.

    
pregunta stanri

2 respuestas

3

Puedes hacerlo un poco mejor que esto; Debido a que las transferencias de ráfagas solo usan las rutas de datos mientras están en progreso, puede superponer ráfagas con transferencias de señales de dirección.

Para que pueda prepararse para transferir la próxima ráfaga mientras la ráfaga actual está en progreso; del mismo modo, puede abrir el siguiente banco y configurar RAS para ello antes de que se realice la transferencia del banco actual. Inicie la próxima transferencia real, luego vuelva para precargar este banco.

Es más complejo, y tendrías que leer los documentos de Spartan-6 MCB en caso de que no lo permitan; Estaba haciendo rodar mi propio controlador cuando hice esto.

En cualquier caso, parece que no lo necesitarás, pero es bueno saber que está ahí.

Un problema mayor es que querrá detenernos cada 8 y pasar un poco de tiempo generando un pulso de actualización (y precargas a su alrededor). Podría decirle que no lo haga en mi propio núcleo (hasta un descanso conveniente, pero que no supere los 70 años) y luego agregué un truco similar al núcleo Virtex-5 MIG para este propósito, pero no creo que pueda controlar las actualizaciones. en espartano-6. Entonces, si esto es un problema, necesitarás un amortiguador elástico en algún lugar para ponerte al día.

    
respondido por el Brian Drummond
0

LPDDR no es completamente sencillo: hay múltiples etapas para una simple lectura o escritura. Por ejemplo, las filas deben abrirse (con un comando ACTIVO) antes de que puedan leerse, pero una vez leídas, puedes leer muchos bytes en secuencia.

En la hoja de datos que vinculó, si observa la Fig. 22, verá un diagrama de tiempo de lectura y ráfaga, con 4 palabras de datos transmitidas consecutivamente. La transacción toma 5 tics de reloj, y debe ir precedida por un comando ACTIVO, y el tRCD debe transcurrir antes de comenzar a leer (otro tic + 15-22ns dependiendo de la velocidad). Si tuviera que hacer esto para cada lectura, no lograría un gran ancho de banda.

Sin embargo, puede amortizar el costo del comando ACTIVE y tRCD si emite más comandos de lectura que van a la misma fila (Fig. 23), puede continuar leyendo dos palabras por ciclo de reloj de la misma fila.

Esto se complica aún más por el acuerdo bancario, ya que puede emitir el comando ACTIVE a un banco para prepararlo, y luego (durante el requisito del tRCD) comenzar a leer desde un banco ya activado, lo que "esconde" el retraso. .

En resumen, particularmente en las aplicaciones de video donde tiene una gran cantidad de datos consecutivos, puede acercarse mucho al uso del ancho de banda teórico completo. Qué tan cerca depende de su controlador de memoria y qué tan bien puede producir un diseño de memoria que puede usar para ocultar activaciones, etc.

    
respondido por el Martin Thompson

Lea otras preguntas en las etiquetas