simplifique el acceso a la memoria de E / S externa con una micro pequeña

1

Estaba leyendo la hoja de datos AT28C256 de atmel y dice que para una operación de escritura:

  

Un pulso bajo en la entrada WE o CE inicia un ciclo de escritura. La dirección está bloqueada en el borde descendente de WE o CE, lo que ocurra último. Los datos están bloqueados por el primer flanco ascendente de CE o WE.

Para una operación de lectura indica:

  

Cuando CE y OE son bajos y WE es alto, los datos almacenados en la ubicación de memoria determinada por los pines de dirección se verifican en las salidas.

Sin embargo, no he encontrado este tipo de documentación en la hoja de datos del ram estático 62256.

¿Este tipo de comportamiento solo funciona para ciertos chips ROM / RAM?

y también, ¿sería suficiente el siguiente circuito para acceder a la memoria sin contención de bus?

Y aquí está mi código para hacer E / S en el ram:

Para escribir:

CE equ P3.5
ADDR equ P3.7
MODE equ P1.7
IO equ P1

clr ADDR    ;set high address switch line low
mov IO,#10h ;set high memory address
clr MODE    ;switch to write mode
setb ADDR   ;save high memory address and write decision into 74hc574
clr ADDR    ;turn switch line low again
mov IO,#23h ;set low memory address
clr CE      ;store low address (I'm relying on AT28C256 datasheet here...)
mov IO,#66h ;set data
setb CE     ;store data

Para leer (donde tengo un problema):

CE equ P3.5
ADDR equ P3.7
MODE equ P1.7
IO equ P1

clr ADDR    ;set high address switch line low
mov IO,#10h ;set high memory address
setb MODE    ;switch to read mode
setb ADDR   ;save high memory address and write decision into 74hc574
clr ADDR    ;turn switch line low again
mov IO,#23h ;set low memory address
clr CE      ;store low address and request reading
mov IO,#0FFh ;prepare for read within 1uS of lowering CE to prevent bus contention
setb CE     ;disable read

Sé que el micro en este circuito está incompleto, pero por simplicidad, el cristal que usaré es de 20Mhz y el micro no está en modo de reinicio.

¿Podré salir adelante usando este circuito y el código de arriba para almacenar y recuperar datos de la memoria externa? ¿O no tengo más remedio que agregar un segundo conjunto de flip-flops octales o usar un microcontrolador más grande? Estoy tratando de mantener las cosas pequeñas.

    
pregunta

1 respuesta

2

Cuando leí la hoja de datos de Cypress 62256, el chip no tiene un pestillo de dirección interno; espera que el bus de dirección sea estable, con la dirección completa, durante una operación de lectura o escritura. Mire el dibujo de Switching Wafeforms en las páginas 8 y 9 de la hoja de datos.

Para cumplir con esto, tendrá que escribir los dos bytes de la dirección en pestañas separadas que impulsan el bus de direcciones.

Para leer la memoria RAM, escriba ambos byes de la dirección en los pestillos, luego establezca CE y OE bajos, luego lea los datos, finalmente establezca OE y CE altos. (piense que CE y OE se pueden alternar).

    
respondido por el Peter Bennett

Lea otras preguntas en las etiquetas