¿El pin A15 en un Z80 dice si la CPU está dirigiéndose a la ROM o RAM?

0

Estoy diseñando una computadora simple y sencilla para aficionados, similar a una Arduino, que utiliza una CPU Z80. El problema que estoy encontrando es cómo la CPU se dirige a la memoria. Sé que el Z80 usa los pines A0-A15 para formar un bus de direcciones, pero al leer "El manual del microordenador Z80", enlace , página 118 (En el libro, no en el control deslizante en la parte inferior de la página web), segundo párrafo debajo de "Interfaz ROM y RAM", dice que el pin A15 se usa para diferenciar entre la CPU que se dirige a la ROM o RAM. Dice que cuando A15 es bajo, entonces se está abordando la ROM, y cuando A15 es alto, entonces se está abordando la RAM. ¿Es esto cierto?

Si es así, ¿estaría en lo correcto al decir que eso llevaría mi bus de direcciones de 16 bits a uno de 15 bits, ya que uno de esos pines de dirección se usa para saber si la CPU está utilizando ROM o RAM? ¿No tendría más sentido que AND MREQ y M1 se conecten con el chip habilitado en la ROM, para que la ROM esté activa cada vez que el Z80 esté en modo de obtención de código de operación?

La razón por la que pregunto esto es porque me gustaría que la CPU tuviera 64K de ROM y RAM, si esto es posible.

Soy nuevo aquí, por lo que cualquier ayuda es muy apreciada, pero si hice algo mal, por favor, dímelo y lo arreglaré.

    
pregunta Shades

2 respuestas

7

Mira el esquema en la página siguiente. A15 está conectado al chip seleccionado de la ROM y la RAM para que esto suceda. No es una función del Z-80 en sí, es una función de cómo se presenta la memoria externa.

Buena elección: el Z80 fue el segundo microprocesador con el que trabajé (en un TRS-80), y el primero en el que me pagaron para desarrollar software (a los 13 años: tienes que amar a las empresas familiares). p>     

respondido por el TimWescott
4

En términos generales, un sistema de memoria de bus requiere un address decoder .

El proyecto sobre el que está leyendo parece usar una forma degenerada de esto, a menudo llamada "decodificación parcial de la dirección", donde se utiliza una línea de dirección para diferenciar entre dos dispositivos de memoria. Cada uno de los dos estados posibles de A15 direccionaría 32768 bytes de memoria; si cualquiera o ambos dispositivos de memoria conectados a las mitades respectivas son más pequeños que esto (es decir, usa menos de 14 líneas de direcciones conectadas), entonces esa memoria alias o se repetirá en múltiples direcciones dentro de ese rango. Tal esquema es inútil, pero a menudo se justifica para sistemas pequeños que no pretenden tener tanta memoria física como el espacio de direcciones del procesador podría soportar.

Tu objetivo de tener 64K de ROM y también 64K o RAM será problemático. Debido a que el Z80 es una máquina de arquitectura de Von Neumann, los programas y los datos existen en el mismo espacio de direcciones, y no hay una forma lista para diferenciarlos mediante señales de hardware. En particular, su idea de usar la señal /MREQ no es viable, porque esta señal se usa tanto para el acceso a la memoria de datos como para el código, y existe más bien para diferenciar todos los tipos de acceso a la memoria del acceso de E / S.

Por lo general, los sistemas pequeños, incluidos aquellos basados en el Z80 que desean instalar más memoria física que la que el procesador puede abordar directamente, deben utilizar el cambio de banco. Este es un esquema de gestión bastante complicado por el cual se utiliza un pestillo en algún lugar del espacio de E / S para alterar el comportamiento del decodificador de direcciones. Por ejemplo, una ROM BIOS se puede cambiar a una parte del espacio de direcciones que se encuentra sobre la RAM, o tal vez se use una porción de 4K o 8K del espacio de direcciones como una "ventana" en un área más grande de memoria, comenzando desde una dirección base dentro de la región que debe escribirse en un registro de E / S mapeado.

Si está diseñando algo desde cero, su deseo de tener tanta memoria debería apuntar a utilizar algo que no sea un Z80 tradicional. Los procesadores embebidos de 32 bits (que pueden ocupar 4 gigabytes) son extremadamente económicos y eficientes en el consumo de energía en estos días. Y hay algunos derivados extendidos de Z80 que pueden brindar un mejor soporte nativo para mayores cantidades de memoria.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas