Diseño de una RAM, utilizando chips 4x2, con capacidad para 8 direcciones

Esta es una pregunta típica de examen, y he visto algunas publicaciones muy útiles al respecto, pero todavía tengo muchas dudas.

Dado un circuito integrado de ciertas dimensiones, para este ejemplo un 4x2, tengo que diseñar una memoria RAM con x direcciones e y bits cada una. Aquí hay un ejemplo del circuito que tengo que usar:

ingrese la descripción de la imagen aquí

  • A0, A1 – líneas de dirección
  • D0, D1 – líneas de datos
  • R/W – línea de lectura/escritura
  • CS – Línea de selección de chips

Con los IC1 tendré que hacer una memoria RAM con 8 direcciones , de 8 bits cada una , indicando la línea CS (Chip Selection) de la memoria .


Hasta ahora, lo que puedo deducir de esto es que IC1 tiene 4 celdas o direcciones, y cada una puede contener 2 bits. Entonces, si necesito 8 direcciones, eso significaría que necesito tener 2 IC1, pero luego no contendrían suficientes bits, lo que significa que necesito dos más (usando solo los pines de datos).

Estoy muy confundido sobre cómo hacer estos diseños, ya que nunca tuve la oportunidad de construir ninguno en un escenario de laboratorio. Espero que alguien pueda darme algunos consejos o mostrarme cómo se pueden conectar estos chips para crear la memoria deseada. No estoy buscando solo la respuesta al ejemplo porque tendré que construir otras RAM con diferentes chips.


Esto es lo que se me ocurrió:

ingrese la descripción de la imagen aquí

Distinguir entre expansión de ancho y expansión de profundidad, cada una es independiente de la otra y requiere un enfoque separado.
Las puertas AND que ha dibujado están al revés y no tienen ningún sentido.
Sí, sabía que eso no podía ser correcto @duskwuff pero simplemente no puedo entender cómo negar uno de los bancos. Si pudiera usar dos chips para hacer esto, solo tendría que usar un inversor antes de conectar la línea CS a uno de ellos. He actualizado mi borrador.
Has dejado esto a medio hacer. Si lo termina, la respuesta correcta será útil para otros usuarios del sitio.
@TonyM No se preocupe, lo terminaré pronto, estoy muy ocupado con otros temas en este momento. Estoy muy agradecido por toda la ayuda que todos me brindaron y por desafiarme a seguir adelante con esta pregunta, y tan pronto como lo haga bien, actualizaré esto :)
Como prometí @TonyM, publiqué una respuesta propia con lo que creo que es la forma correcta de negar el banco superior, espero haberlo logrado esta vez.

Respuestas (2)

Necesitas dos bancos de cuatro fichas. Los cuatro chips en cada banco simplemente tienen sus señales A0, A1, CS, R/W conectadas y su D0/D1 conectado a D0/D1, D2/D3, D4/D5, D6/D7.

La señal CS de cada banco tiene que ser calculada por una lógica usando el CS externo y la señal A2 externa. Dos compuertas AND y un inversor.

Estos son todos los consejos que necesita.

Gracias por los consejos, he agregado mi borrador a la pregunta. ¿Estoy obligado a usar AND y el inversor para lograr lo que quiero, o es solo una cuestión de ser más organizado?
A tu borrador le falta la lógica A2. Necesita algún medio para generar la señal CS para el banco superior frente al banco inferior. Solo uno de ellos puede estar activo cuando el CS externo está activo. Eso se hace con las dos puertas AND y el inversor único.
Gracias por soportarme hasta ahora @Janka, actualicé mi borrador, pero siento que no usé las puertas AND correctamente. Estoy empezando a entender esto, simplemente no estoy seguro de cómo se realiza la conexión y la inversión entre varios bancos. Si tuviera que usar solo dos chips, solo tendría que hacer la inversión antes de conectarme al CS de uno de ellos.
Primero debe revisar cómo funcionan las puertas AND. Luego, recuerde que tiene que alimentar las señales externas CS y A2 en ellos, y obtener como resultado la CS superior interna y la CS inferior.
Sabía que esos AND eran demasiado incompletos, actualicé mi borrador nuevamente. Me he estado familiarizando con las puertas, pero simplemente no puedo entender cómo negar un banco completo, y dónde entra el otro Y. Odio pedir la solución resuelta, pero ¿considerarías mostrarme cuál es mi borrador? ¿Está perdido?
@BlindRoach, ahora está tan cerca con solo el decodificador de direcciones, como probablemente se haya dado cuenta. Esto se resuelve mejor dibujando una tabla de verdad: le permitirá ver claramente lo que debe hacer el decodificador. Puedes resolverlo todo desde aquí, todo el circuito. Dibuje una tabla de verdad con entradas (CS, A2) y salidas (selLoBank, selHiBank) y luego complétela con lo que necesita que haga. Solo entonces debe pensar en sus puertas AND y NOT. Sigue adelante :-)
Necesita dos CS internos, uno para el banco superior y otro para el banco inferior. El CS del banco superior es alto cuando el CS externo y A2 son altos. ¿Te parece razonable? El CS del banco inferior es alto cuando el CS externo es alto y A2 es bajo . ¿Ahora lo entiendes?

Después de todos los consejos que todos me dieron, y repasando la construcción de circuitos, esto es lo que se me ocurrió.

ingrese la descripción de la imagen aquí

Ahora veo lo que estaba mal con todos mis otros borradores, ya que todavía no estaba muy seguro de cómo funcionaba el CS. Para estar seguro de que entendí esto, hice otra memoria, esta vez un 4x2 usando 2x1s. Aquí está mi solución:

ingrese la descripción de la imagen aquí

Elegí colocar las fichas en un orden diferente para asegurarme de saber lo que estaba haciendo y no solo copiar la última pregunta.