Usando SRAM asíncrono en una CPU casera

2

Estoy construyendo una CPU casera y ahora he llegado al punto de diseñar la parte SRAM. Planeo usar una memoria RAM estática simple de 32 K x 8 bits (como la CY62256N de Chipre). Mi preocupación es que la parte es asíncrona pero quiero que actúe como una parte síncrona.

En el resto de mi diseño, los registros se escriben en el borde ascendente del reloj con el nuevo valor requerido ya en las líneas de datos. Durante el resto del período de reloj, la nueva instrucción se procesa y se puede colocar un nuevo valor en las líneas de datos. Esto está bien porque el registro solo se actualiza en el flanco ascendente y no más tarde, a pesar de que el reloj sigue siendo alto.

Supongo que este enfoque no funcionará con la SRAM asíncrona. Me preocupa que el flanco ascendente del reloj actualizará la SRAM, pero si el reloj sigue siendo alto cuando se actualiza el valor de las líneas de datos para la siguiente instrucción, se producirá otra actualización que no se desea.

¿Existe alguna técnica común para lograr lo que necesito?

    
pregunta Phil Wright

3 respuestas

1

En general, cualquier parte real tendrá lo que puede considerarse como contamination delay que es el propagation delay entre un cambio en la dirección o entrada de control, hasta que los valores antiguos de las salidas dejen de ser válidos y comiencen a transición hacia un nuevo valor, muy probablemente a través de varios intermedios no válidos.

Si puede garantizar que la activación de la dirección y las salidas de control del procesador se produzcan en un momento muy cercano (o incluso después) del bloqueo de las entradas de la memoria, es probable que un retraso finito de la contaminación garantice que reciba valores válidos. .

Sin embargo, tenga en cuenta que una memoria síncrona típica impone un retardo adicional en la tubería, mientras que una memoria asíncrona solo tendrá demoras de propagación. Agregar un registro de canalización adicional en las líneas de dirección haría que una memoria asíncrona actúe más como una sincrónica, al menos mientras haga temporización.

    
respondido por el Chris Stratton
0

SRAM es como un cierre transparente. Cuando un ciclo de escritura está en curso (CE y WR están bajos) los datos en el bus se almacenarán en la RAM en la dirección actual. Durante este tiempo, las líneas de dirección deben ser estables, de lo contrario se podrían escribir varias ubicaciones de memoria. Al final del ciclo de escritura (cuando WR y / o CE pasan a un nivel alto), la RAM continúa almacenando todos los datos almacenados en él.

Al igual que con un registro cronometrado, debe cumplir con los tiempos de configuración de datos y la dirección de la memoria RAM. Sin embargo, la SRAM es mucho más lenta que un registro típico, por lo que su tiempo de acceso probablemente se extienda hasta "el resto del período de reloj". Si su dirección y / o líneas de datos solo son válidas justo antes del flanco ascendente del reloj, entonces podría bloquearlas e iniciar el ciclo de escritura en el flanco ascendente, y luego finalizar el ciclo de escritura en algún momento posterior (por ejemplo, cuando el reloj se detenga) . Por supuesto, no podrá volver a acceder a la RAM hasta que finalice el ciclo de escritura actual.

    
respondido por el Bruce Abbott
0

Estoy tratando de resolver este problema solo presionando / arrastrando cuando el reloj está bajo.

           _______         _______         __
clock    _/       \_______/       \_______/

/fetch   ___                 _______________ 
enables     \_______________/               \

/instr.  _________         __________________
latch             \_______/    

/execute     _______________
enables  ___/               \_______________/       

/execute _________________________         __
latches                           \_______/
(inc. /wr)

Hago esto usando el reloj como bit alto en un decodificador BCD y solo usando las salidas 0-7. Obtengo una decodificación de destino de instrucciones de 3 bits y cortos periodos de retención de un IC

Las señales de habilitación se retrasan con un contador y puertas lógicas.

    
respondido por el fadedbee

Lea otras preguntas en las etiquetas