ROM 32Kx8 a partir de 16Kx16

ROM 32Kx8 a partir de 16Kx16

de Franco Pelua Camacho -
Número de respuestas: 2

Hola, buenas tardes.

Me interesa armar una ROM de 32Kx8 a partir de una de 16Kx16. Como 2^{15} \times 2^3 = 2^{18} = 2^{14} \times 2^4 se puede observar que tanto la ROM que se tiene como la ROM deseada tienen la misma capacidad de 2^8 \; Kbits, por tanto, solo se precisaría un chip de 16Kx16 para armar uno de 32Kx8. 

A partir de esa conclusión, me puse a dibujar el diagrama de la ROM, pero no se si está bien.


Lo que hice fue agregar una entrada extra que uso para multiplexar la salida de la ROM original y solo propagar los 8 bits deseados, conectar la ROM original a fuente para que nunca tenga salida tri-state y poder enchufar la salida a las AND gates y luego chequear el tema del tri-state al final. 

En definitiva, para cada dirección de la ROM original, guardamos dos resultados diferentes. Por ejemplo, si fuese a cargar un programa en esta ROM, lo que me imagino que podría hacer sería cargar dos resultados "contiguos" en la misma dirección, uno contenido en el byte más alto y el otro en el byte mas bajo. 

Supongamos que quiero, por ejemplo, implementar la función identidad: 


¿Esta bien hecho así? Otra pregunta, el ejercicio dice que solo se utilicen compuertas básicas. ¿Eso incluye la compuerta del tri-state (la que es triangular)?

Gracias de antemano, saludos!

En respuesta a Franco Pelua Camacho

Re: ROM 32Kx8 a partir de 16Kx16

de Gustavo Brown -

Hola.

  Esta bien el dibujo del tu circuito (incluyendo el tri state)

El programa que carga la rom original es incorrecto. Para hacerlo tenes que fijarte cuales direcciones de la nueva ROM corresponden a cada dirección de la ROM original.

En este caso, de acuerdo a tu circuito, cada dirección de la ROM original contiene el dato de la dirección (en la parte alta) y de la dirección más 16384 (en la parte baja)

Igualmente no queda muy claro qué sería la identidad en tu ejemplo (la salida es de 8 bits y la entrada de 15 bit por lo que no se puede hacer la identidad)

Saludos,
  Gustavo

En respuesta a Gustavo Brown

Re: ROM 32Kx8 a partir de 16Kx16

de Franco Pelua Camacho -

Hola Gustavo, muchas gracias por tu respuesta. 

Ya veo, porque elegí usar el decimocuarto bit para multiplexar la salida, y cuando el decimocuarto bit es 1 la salida corresponde a la parte más baja del resultado de la ROM interna, entonces por eso es que allí debería guardar el resultado de la dirección + 16384 (que es 2^{14}). 

Si hubiese decidido usar el bit a_0 para multiplexar, y lo hubiese hecho tal que el bit a_0 conectará directo al AND con la parte alta del resultado de la ROM interna, y ese mismo bit conectará negado a la parte baja, entonces ahí sí estaría guardando dos datos (de dos direcciones contiguas) en la misma palabra de memoria, ¿puede ser? 

Con respecto a lo que decís de la identidad, tenes toda la razón. No me había fijado en eso. En definitiva, lo que quería preguntar con ese ejemplo es si ese tipo de máscara es adecuada para guardar dos bytes diferentes en memorias que dan como resultado una palabra. 

Saludos!