Problema con la lógica de pegado/descodificación de memoria en un proyecto 6502

Tengo un problema para entender el siguiente esquema, específicamente la sección "Glue Logic (Memory Decoding)" en la mitad inferior central:

circuito

Esta es una computadora de tablero simple basada en una CPU 6502 con RAM, ROM y un D-Latch que sirve como IO (visto en la esquina inferior derecha que controla un solo LED). El mapa de memoria es

  • $0000 - $3FFF: RAM (16K)
  • $4000 - $7FFF: E/S (16K)
  • $8000 - $FFFF: ROM (32K)

La única señal que no entiendo es /RAMSEL. Como se muestra en el esquema, A15 y A14 se utilizan para direccionar los tres chips (U2, U3 y U7). /RAMSEL alimenta a /CE (habilitación de chip) del chip de RAM (U3) que está activo en nivel bajo, por lo que si quiero leer o escribir desde la RAM, /RAMSEL tiene que estar en nivel bajo (0).

Supongamos que quiero leer el valor ubicado en $ 1000 en RAM (por ejemplo, LDA $ 1000 en el ensamblaje 6502). Espero que el bus de direcciones sea de $ 1000, que en binario es b0001000000000000. Como se puede ver, las señales A15 y A14 son bajas (0), lo que hace que /RAMSEL sea alto (1) a través de la lógica de pegado. Por lo tanto, la señal en /CE es alta, lo que hace que el chip RAM no se pueda leer, ya que estará en modo de alta impedancia.

Por otro lado, si quiero leer desde una ubicación de ROM diga $F000/b1111000000000000, A15 y A14 son altos (1) y a través de la lógica de pegamento /ROMSEL será bajo (0) (para que el chip de ROM se pueda leer ya que su pin /CE es bajo) y /RAMSEL será alto(1) haciéndolo ilegible. Lo mismo se aplica a la señal IOSEL.

Entonces, según entiendo este esquema, las señales para leer/escribir en ROM y E/S funcionan bien, pero no para el chip de RAM. ¿Estoy leyendo mal la lógica del pegamento?

EDITAR: este esquema está tomado de este libro , en caso de que se lo pregunte.

Estoy de acuerdo. El /RAMSEL es incorrecto para el mapa de memoria dado. U5B necesita ser una puerta OR
Lo había adivinado, pero me preguntaba, ya que esto proviene de un libro y él usa la misma lógica de pegamento para otro proyecto; no esperaría que ese error suceda dos veces. Así que pensé que simplemente podría estar malinterpretando el esquema, pero parece que después de todo tengo razón.
No sería un Arte Negro si no engañaras a los no iniciados...

Respuestas (2)

Tiene razón, /RAMSEL es incorrecto para el mapa de memoria dado. U5B debe ser una puerta OR.

Gracias, esa es la respuesta correcta. Usar el 74HC04 para invertir A15 y A14 antes de introducirlos en U5B hará el truco. ¡Muchas gracias!

En lugar de líneas de dirección, la salida de U5-A y la salida de U5-C deben alimentarse a U5-B para obtener la selección de RAM adecuada sin usar otro chip o puerta. (Romselect NAND ioselect = ram seleccionar)

Gracias, eso también funcionaría, supongo, incluso podría probar esto una vez que regrese a este proyecto. Actualmente estoy trabajando en un emulador de ROM para acompañarlo, se ve bien hasta ahora, pero necesito ordenar los componentes.