Direccionamiento de memoria con hexadecimal

0

Si tenemos un componente de memoria genérico que es \ $ 2 ^ {16} \ times8 = 524288 \ $ Bits de ancho y una CPU que tiene un bus de direcciones que tiene \ $ 17 \ $ Bits de ancho. ¿Cómo podría ubicar esta memoria para comenzar desde la dirección \ $ 10000 \ $ (hexadecimal "Hex") y cuál es la dirección final correspondiente? ¿Alguien podría dar consejos o sugerencias?

    
pregunta ELEC

2 respuestas

1

El número importante no es 524288, es \ $ 2 ^ {16} \ $ 65536, o hex 10000.

Una memoria m x 8 devolverá 8 bits cuando reciba una dirección de memoria amplia de m-bit. Por lo tanto, su chip de memoria de bus de dirección amplia de 16 bits podrá proporcionar el contenido de todas sus ubicaciones de memoria utilizando solo 16 señales de bus de dirección.

El rango de direcciones de la memoria de 16 bits normalmente sería de 0 a 65535, o hexadecimal FFFF.

Entonces, agregar el hex 10000 a 0, debería ser muy fácil, y agregar el hex 10000 a FFFF también debería ser fácil si entiendes cómo funciona la adición binaria.

Editar:
El ancho del bus de direcciones del procesador efectúa el cálculo, porque el bus de direcciones es la única forma para darle una dirección a la memoria. No hay magia.

Sí, la adición de números hexadecimales (o una representación binaria subyacente) se interpreta como la suma, la diferencia es que una operación binaria es muy simple. A menudo convertimos números hexadecimales a binarios para hacer la suma, y luego convertimos el binario de nuevo a hexadecimal, para que sea más fácil de leer y escribir.

Estás agregando utilizando una forma compacta de binario (hex).
Cuando los dígitos no cero que se agregan están en diferentes posiciones de 'columna', es sencillo, porque no hay acarreo. Como ejemplo concreto, 15 (hex F ), más 16 (hex 10 ), es hexadecimal 1F .

hex 10000 es binario 1_0000_0000_0000_0000
hex FFFF os binary 1111_1111_1111_1111
Dejaré esta adición para que la hagas.

EDIT 2:
Esto aún deja abierta la pregunta sobre cómo asignar el rango de direcciones 0-FFFF de la memoria al rango de direcciones 10000-1FFFF (que usted solicita).

Entonces, si pensamos en usar dos de los chips de memoria \ $ 2 ^ {16} \ $, para crear una memoria con una capacidad y un rango de direcciones de \ $ 2 ^ {17} \ $, entonces podríamos hacer un chip activo para lectura / escritura cuando el bus de dirección transporta el hexágono 0-FFFF, y el otro chip (el que usted desea) está activo con un rango de direcciones de 10000-1FFFF.

Un chip de memoria genérico tendrá algún tipo de señales de selección de chip. El supuesto de diseño es que se podrían combinar varios chips para crear un sistema de memoria con una capacidad mucho mayor y, por lo tanto, un rango de direcciones, que un chip de memoria. Esto tiene mucho sentido, para los fabricantes de CPU y memoria. La CPU puede tener un subsistema de memoria más grande que un chip de memoria, y los fabricantes de memoria pueden vender lotes del mismo chip.

La selección de chip puede ser una única señal, o puede ser varias. Para simplificar, asumamos que la selección de chip es una única señal de entrada a la memoria. El diseñador del sistema de memoria definirá, utilizando expresiones booleanas, combinaciones de señales de bus de dirección de memoria para seleccionar uno de los chips de memoria.

Por lo tanto, debe descubrir cómo usar los 17 bits de dirección de memoria para activar el chip de memoria. Lo que hay que reconocer es que solo puede haber 1 señal no utilizada, ya que el chip usará 16 bits de dirección de memoria directamente (internamente) para seleccionar el valor específico de 8 bits.

Por lo tanto, necesita una expresión booleana que utilizará los bits de dirección de memoria restantes (solo el bit 17), para que 'active' su chip de memoria para el rango de direcciones correcto. Cada dirección a la que debe responder el chip de memoria tiene el bit 17 de dirección establecido en 1.

La única complicación adicional menor puede venir del valor que necesita la selección del chip para "activar" el chip de memoria. Si la selección de chip activa el chip con uno (1), no hay nada más que hacer, la expresión booleana es = el estado de la señal del bus de direcciones 17 (numeración de 1 o 16 que numera las señales de 0). Sin embargo, es común que el chip seleccione 'activar' el chip cuando esté bajo (0), en cuyo caso el estado del bit de dirección debe invertirse.

(Nota al margen. El bus de direcciones tiene solo 17 señales separadas, donde cada señal es un solo 'cable', por lo que el bus tiene 17 cables que transportan señales binarias, combinados, pueden representar todas las permutaciones de 0 y 1 17 cables, es decir, 1_0000_0000_0000_0000 a 1_1111_1111_1111_1111)

    
respondido por el gbulmer
2

Creo que esta es realmente una pregunta de decodificación de direcciones.

Desea asignar la memoria para que ocupe la mitad superior del espacio de direcciones del procesador de 17 bits (un procesador extraño, pero de todos modos) (10000 - 1ffff). Probablemente, esto se puede hacer más fácilmente activando la señal de selección de chip con A16 (lo cual, si se piensa, solo será alto para las direcciones en la mitad superior del espacio de direcciones).

Saludos, Dan.

    
respondido por el Dan Mills

Lea otras preguntas en las etiquetas