Decodificación de direcciones

0

Actualmente estoy trabajando en una tarea en la que se supone que debo encontrar la dirección de memoria de la siguiente interfaz de bus externo de un microcontrolador (0 lógico, señal CS)

Sin embargo, no estoy seguro de cómo resolver el problema. Logré encontrar la dirección de memoria de la ROM y la RAM 2.

ROM (HEX): 0000 - 00FF (0000 0000 xxxx xxxx)

RAM 2 (HEX): 8000 - FFFF (1xxx xxxx xxxx xxxx)

Aquí está mi idea de RAM 1: 8000 - FFFF (1xxx xxxx xxxx xxxx)

Las RAM 1 y 2 no pueden tener la misma dirección de memoria, obviamente, ¿qué estoy haciendo mal? ¿Cuál es la dirección de memoria de la RAM 1?

Gracias de antemano!

    
pregunta user3510657

2 respuestas

4

Comencemos etiquetando algunos bits del diagrama para una referencia fácil:

Ahorapodemosdefinirquésignificanlasdiferentesetiquetas.

  • AesALTOsialgunodeA8-A15esALTO.
  • BnoesA
  • CesALTOsiBoE(queesA15)esALTO
  • DesALTOsiBesALTOyENOESALTO.
  • E(comolomencioné)esA15.

Ahorapodemoshaceralgunasexpresionesbooleanas:

  • A=A8+A9+A10+A11+A12+A13+A14+A15
  • B=¬A
  • C=B+E
  • D=B+¬E

Expandido:

  • C=¬A+E
  • D=¬A+¬E

DadoqueCSsiempreestáactivoBAJO,estáinteresadoenlosvaloresFALSOSdeesasexpresiones,losvaloresquehacenquelaexpresióndécomoresultadounarespuestaFALSA.

Entonces,sialgunodeA8-A15esverdadero,entoncesAdebeserverdadero,porlotanto,paraqueAseafalso,NINGUNOdeA8aA15puedeserALTO.Entonces,AseráBAJOparaelrangodedirecciones0b00000000XXXXXXXX(o0x0000-0x00FF)

SiBoEsonverdaderas,entoncesCesverdadera.Porlotanto,ByEtienenqueserfalsosparaqueCseafalso.EesA15,porloqueahorasabemosqueA15debeestarBAJOparagarantizarqueCpuedaserfalso.Atienequeserverdadero,yaqueestánegadoparaformarB.Porlotanto,unodeA8-A14debeseraltoparaqueAseaverdaderoy,porlotanto,B,falso.

Esonosllevaaladirección0b0YYYYYYYXXXXXXXXdondealmenosunodeYdebeseraltoynonosimportaX.Esdecir,entre0b00000001XXXXXXXXy0b01111111XXXXXXX,oenhexadecimal:0x0100a0x7FFF.

DeslomismoqueC,exceptoporelhechodequeEestáinvertida.EsosignificaqueA15debeserALTOparaqueDpuedaserfalso.ComoA15esalto,tenemoslaposibilidaddeestablecerA8-A14bajoyseguirsiendoválidosparaesterango.Entoncesobtenemos0b1YYYYYYYXXXXXXX,o0b10000000XXXXXXXXa0b1111111111XXXXXXXX,oenhexadecimal:0x8000a0xFFFF.

Paraponeresosrangosdedireccionesencontextoconstruyamosunmapadememoriacompleto:

    
respondido por el Majenko
2

Tienes una línea de señal · CS allí. Y tienes una puerta "no" entre A15 y la línea de selección de chips de RAM2, que no existe entre A15 y CS de RAM1. Entonces, en un momento dado, solo un chip RAM está "escuchando". Por lo tanto, no hay colisión de direcciones, y el bit A15 selecciona el chip de RAM.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas