• No results found

Radar interviews

Por último veremos con más detalles los pasos necesarios para realizar tanto una lectura como una escritura sobre la memoria.

El primer paso para poder utilizar correctamente la memoria es realizar su inicialización de un modo predeterminado. En primer lugar se debe aplicar una serie de voltajes cumpliendo unas determinadas restricciones. Cuando la fuente de alimentación, los voltajes de referencia y el reloj son estables, se requieren 200 µs para poder aplicar cualquier comando ejecutable, tanto de lectura como de escritura. Una vez que estos 200 µs han pasado, la secuencia de inicialización empieza. Ésta se realiza en los siguientes pasos:

- Un comando de DESELECT o NOP es aplicado y el CKE se pone a alta - Un comando de PRECHARGE es aplicado

- Un comando de LOAD MODE REGISTER es lanzado para cargar el extended

mode registrer (con BA1 = 0 y BA0 = 1) y capacitar el DLL

- Otro comando de LOAD MODE REGISTER es lanzado para cargar el mode

registrer (con BA1 = BA0 = 0), resetear el DLL y programar los parámetros de

operación

- Un comando de PRECHARGE es aplicado, colocando todos los bancos del dispositivo en un estado de espera o estado IDLE

- Una vez en el estado IDLE, dos ciclos de AUTO REFRESH son realizados. Cuando se ha completado la inicialización la DDR SDRAM está preparada para realizar cualquier operación.

Previamente a la ejecución de un comando de lectura o escritura es necesario ejecutar un comando de activacion (comando ACTIVE) mediante el cual se selecciona un banco de la memoria y una fila del mismo para poder utilizarla.

En la figura siguiente vemos como se realiza la activación:

Tiempo mínimo entre dos comandos

de activación Tiempo mínimo entre un comando de activación y un comando de lectura o escritura RA = Dirección de fila BA = Dirección de banco Tiempo mínimo entre dos comandos

de activación Tiempo mínimo entre un comando de activación y un comando de lectura o escritura RA = Dirección de fila BA = Dirección de banco

Como puede observarse es posible lanzar comandos de activación consecutivos pero cumpliendo un cierto tiempo mínimo entre ellos. Si se intenta lanzar dos comandos de activación a filas diferentes pero de un mimo banco, no sólo habrá que esperar este tiempo, sino que también habrá que esperar a que la fila sea cerrada o desactivada mediante el correspondiente comando de PRECHARGE. Si la activación es de filas de bancos diferentes bastaría con cumplir la restricción del tiempo para poder lanzar dos comandos. Entre el lanzamiento de un comando de activación y el de uno de lectura o escritura también se debe esperar un cierto tiempo.

Lectura

Para realizar una operación de lectura sobre la memoria es necesario lanzar un comando de lectura (comando READ).

CA = Dirección de columna BA = Dirección de banco

EN AP / DIS AP = Capacitación / Descapacitación de auto-precarga CA = Dirección de columna

BA = Dirección de banco

EN AP / DIS AP = Capacitación / Descapacitación de auto-precarga

Figura 24: Comando de lectura [R8]

Como se observa en el diagrama anterior tanto el banco como la columna son proporcionados con el comando. También se indica si se desea capacitar o no la auto precarga. Si ésta está capacitada, cada vez que se completa la lectura de una ráfaga la fila a la que se esta accediendo es precargada.

Durante la lectura de cada ráfaga, los datos de salida (DQ) serán válidos una vez que haya transcurrido el CAS latency desde que el comando de lectura se lanzó. A partir de ese momento, en cada flanco positivo o negativo del reloj llegará un nuevo dato hasta que se hayan leído tantos datos como indique el tamaño de las ráfagas. El strobe de los datos (DQS) será transmitido por la memoria a la vez que los datos. Una vez que se ha completado una ráfaga, y asumiendo que ningún otro comando ha sido inicializado, el DQ se pone en alta impedancia. Esto puede verse en la figura que aparece a continuación, donde se muestra la ejecución de una operación de lectura para tres valores diferentes del CAS latency y con tamaño de ráfaga de valor 4 en todos los casos:

Figura 25: Ejecución de un comando de lectura [R8]

Es posible que los datos de una lectura puedan ser concatenados o truncados con los datos de otras lecturas consecutivos. En cualquiera de los casos puede ser mantenido un flujo continuo de datos de forma que el primer dato de una nueva ráfaga siga al último dato de una ráfaga que se haya completado o de una ráfaga truncada.

También puede ocurrir que tras lanzar un comando de lectura se lance el comando BURST TERMINATE o el comando PRECHARGE. A continuación se muestra un ejemplo de la ejecución de estos comandos tras una operación de lectura, suponiendo tamaño de ráfaga de valor 4 y CAS latency 2.

Escritura

Figura 27: Ejecución de un comando de lectura seguido de un comando BURST TERMINATE y de un comando PRECHARGE [R8]

En cualquiera de estos casos, el lanzamiento de dos comandos consecutivos requiere esperar tantos ciclos como pares de datos se quieran leer.

Por último, existe también la posibilidad de lanzar un comando de escritura seguido de un comando de lectura siempre y cuando los datos de la lectura hayan sido completados o truncados previamente.

Figura 28: Ejecución de un comando de lectura seguido de un comando de escritura [R8] Comando READ – Comando BURST TERMINATE

Comando READ – Comando PRECHARGE Comando READ – Comando BURST TERMINATE

Escritura

Para realizar una operación de escritura sobre la memoria es necesario lanzar un comando de escritura (comando WRITE).

Al igual que en el caso de las operaciones de lectura, tanto el banco como la columna son proporcionados con el comando. También se indica si se desea capacitar o no la auto precarga. Si ésta está capacitada, cada vez que se completa la lectura de una ráfaga la fila a la que se esta accediendo es precargada.

Figura 29: Comando de escritura [R8]

Durante la escritura de cada ráfaga, el primer dato válido de entrada se registra en el primer flanco positivo del DQS y a partir de ese momento se registran el resto de los datos en los flancos sucesivos.

Una vez que se ha completado la escritura de una ráfaga, y asumiendo que ningún otro comando ha sido inicializado, el DQ se pone en alta impedancia y cualquier entrada de datos adicional es ignorada. Esto puede verse en la figura que aparece a continuación, donde se muestra la ejecución de una operación de escritura con tamaño de ráfaga de valor 4 y tiempo tDQS entre el lanzamiento del comando WRITE y el primer

flanco positivo del DQS:

Figura 30: Ejecución de un comando de escritura [R8] CA = Dirección de columna

BA = Dirección de banco

Los datos de una operación de escritura pueden ser concatenados o truncados con los de otra. En cualquiera de los casos, se establece un flujo continuo de datos de entrada, de forma que el primer dato de entrada de una nueva escritura siga al último de una ráfaga que se haya completado o de una ráfaga truncada. En la siguiente figura se puede ver el resultado de la ejecución de dos comandos de escritura consecutivos:

Figura 31: Ejecución de comandos de escritura consecutivos [R8]

Es posible lanzar un comando de lectura después de un comando de escritura. Existen dos posibilidades, o bien la lectura se espera hasta que la escritura haya finalizado, o bien se interrumpe la escritura que se este realizando.

Figura 32: Ejecución de un comando de escritura seguido de un comando de lectura [R8]

Comando WRITE – Comando READ sin interrupción de escritura

Por último, después de un comando de escritura puede también lanzarse el comando PRECHARGE. En este caso ocurre lo mismo que con el comando READ, o bien la precarga se realiza una vez que la escritura haya finalizado, o bien se interrumpe la escritura que se este realizando. A continuación se muestran ejemplos con cada una de estas posibilidades:

Figura 33: Ejecución de un comando de escritura seguido de un comando de precarga [R8]

Comando WRITE – Comando PRECHARGE sin interrupción de escritura