# ¿Realizar una memoria rom con Flip-flops?



## luigi2304 (Jul 3, 2007)

Al que me pueda ayudar se lo agradecere

Me he cansado de buscar por Internet alguna forma de realizar una memoria rom con Flip-flops y me gustaria saber si alguien tiene idea de como se hace, es para un proyecto de mi escuela. no importa que Flip-Flop utilice ni de cuantos bits almacene, solo quiero saber la estructura principal.

Por favor,  urge.


----------



## Angel Larreal (Jul 4, 2007)

mmm ... Con FF D puedes hacer un registro de los bits que te de la gana pero seria mas bien una RAM porque a lo que le quites la energia se vuela todo lo que tenias escrito 

Estoy casi siguro que no hay forma de hacer una MEMORIA ROM con FLIP FLOPS 
no hay forma que dejen escrito algo alli, le quiten la energia, le vuelvan a inyectar energia y siga con los datos dentro


----------



## Apollo (Jul 5, 2007)

Hola a todos 

Yo concuerdo totalmente con Angel.

No creo posible armar una ROM con FF ya que el circuito va a retener los datos siempre y cuando tenga energía. Al apagar el circuito, perderás todos los datos almacenados. Este tipo de memoria es la RAM.

La única manera de retener los datos es usando algun tipo de memoria ROM. Las cuáles son inmunes a la pérdida de energía.

Espero y te sea util esta información

Saludos al foro


----------



## kupa1416 (Nov 21, 2010)

cual es el diseño de una memoria ram con FF D


----------



## MrCarlos (Nov 23, 2010)

Hola kupa1416
La encontrarás en el siguiente enlace

Mensaje #2
https://www.forosdeelectronica.com/f25/banco-datos-flip-flop-74ls74-43082/#post358416

saludos
a sus ordenes


----------



## tiopepe123 (Nov 23, 2010)

Si añades una bateria tienes una NVRAM o algo asi como una imitacion barata de ram.

Las memorias rom suelen fabricarse por encargo porque es una produccion mu barata pero solo para cantidades enormes,

http://www.nablaman.com/relay/

http://www.instructables.com/id/DIY-CMOS-RAM-Memory/
http://www.instructables.com/id/DIY-RAM-Memory-Register-Style/step3/The-Circuit/


----------



## gustavo08 (May 7, 2013)

disculpen me podrian ayudar en explicarme como puedo diseñar e implementar una memoria RAM de 2x2 (usando flip-flops)


----------



## Romyggar (May 7, 2013)

gustavo08 dijo:


> disculpen me podrian ayudar en explicarme como puedo diseñar e implementar una memoria RAM de 2x2 (usando flip-flops)



Hola gustavo08,

Pues, para ayudarte, pienso que deberías especificar mas sobre el contexto del proyecto (por ejemplo, si esta "memoria" se va usar en otro circuito). 

Lo que se me ocurre es lo siguiente:

*1- Necesitas 4 flip-flops Tipo D*, que actuaran de registros de almacenamiento (se pueden hacer a partir de flip-flops tipo J-K, pero se consiguen facilmente). Referencias: *Flip-Flops* - 
*Circuito Integrado*

Esta CI (74LS175), tiene varias entradas de control útiles y ademas tiene 4 F-F en un solo chip , pero el CI 74LS74 tiene un control mas discreto de cada flip flop, pero tiene 2 F-F en cada chip. TE recomiendo mas el 74LS74, ya que pienso que será mas facil de manupular.

*2- Necesitas 1 multiplexor de 4 a 2 *( o armarse uno con compuertas logicas). En una memoria RAM (simple) se tiene un registro de dirección y un registro de datos; con el Mux el registro de dirección sera la linea de selección, el registro de datos será la salida del mux. En este caso como es una memoria de 2x2, se necesita 1 bit en el registro de selección (selecciona entre el registro 0 de la RAM y el registro 1), se necesitan 2 bits en el registro de datos (porque es una memoria de 2 bits).

3- Se necesita una señal de reloj constante para que los datos se vean reflejados a la salida de la memoria 2x2 (señal de reloj que hace funcionar a los flio-flops). Con un integrado LM555 se puede armar en segundos una señal de reloj (de unos 100KHz.

*4. Conectar la linea de selección del Mux* a un dip-switch (hay que tener cuidado con los rebotes de los interruptores manuales, por lo general poniendo resistencias de pull-up y down + un condensador resulta efectivo). Y conectar las salidas de los flip flops a las entradas del Mux, luego las nuevas salidas de la memoria son las 2 salidas del mux

*5. Conectar leds en las salidas del mux*.

*Para cargar datos en la memoria* se necesita un de-multiplexor 2 a 4 (dmux) (que hace lo inverso al mux, tienes 2 entradas y 4 salidas, con una linea de selección entre los grupos de salidas A y B ( A y B son 2 grupos de lineas de 2 bits)

*1. Se necesita otro dip-sw* para hacer la selección de funciones de la memoria (WRITE/LOAD), 

*2. Se necesita el dmux *para decidir en cual registro (0 o 1) se van a cargar los datos, la linea de selección de este va atada a la linea de selección del MUX anterior.

*3. Listo.*

En resumen, *tu memoria 2x2, necesita LEER, ESCRIBIR, DIRECCIONAR; *pro lo que parece complejo el diseño pero en cuanto tenga un diagrama esquemático te quedará mas claro.

Hasta pronto


----------



## gustavo08 (May 8, 2013)

muchas gracias por la ayuda...
por el momento solo es un proyecto simple ya que el maestro va a un ritmo lentisimo.... por el momento solo ha enseñado multiplexores, demultiplexores y flip-flop....


----------



## MrCarlos (May 9, 2013)

Hola gustavo08

Según mencionas en tu mensaje #7 (Como sub. tema) *memoria ram de 2x2 con flip-flop.*
Quiere decir que el BUS de direcciones tendrá 2 BIT’s y el BUS de datos también tendrá 2 BIT’s.
Así que tendrás 4 direcciones de memoria de 2 BIT’s:
00 Dirección 0
01 Dirección 1
10 Dirección 2
11 Dirección 3

Para cada BIT de datos se requiere un Flip-Flip, no mencionas que tipo. Te sugiero que sean tipo D.
Así que serían 8 Flip-Flop’s tipo D. 
De modo que solo se podrá memorizar los números del 0 al 3.

Creo que no es una gran cantidad de dispositivos, esta sería la lista de materiales:

*QTY PART-REFS VALUE CODE --- --------- ----- ---- *
*Resistors---------*
3 R1-R3 10k M10K 
*Integrated Circuits-------------------*
4 U1-U4 74LS74 
6 U5-U8,U12,U13 74LS125 
1 U9 74LS04 
1 U10 74LS47 
1 U11 74LS138 
*Miscellaneous-------------*
1 RN1 350R 
1 RN2 2k 
2 SW1,SW3 THUMBSWITCH-HEX 
1 SW2 SW-SPDT 
1 SW4 NC Button 
2 SW5,SW6 NO Button


El circuito, el cual se puede mejorar, inclusive hacerlo con otros componentes, está adjunto.
Espero te sirva.

saludos 
a sus ordenes


----------



## gustavo08 (May 9, 2013)

muchisimas gracias por su ayuda y conocimientos se les agradece mucho! ud si son maestros!


----------



## Romyggar (May 9, 2013)

gustavo08 dijo:


> muchas gracias por la ayuda...
> por el momento solo es un proyecto simple ya que el maestro va a un ritmo lentisimo.... por el momento solo ha enseñado multiplexores, demultiplexores y flip-flop....



Amigo *gustavo08*

Ya hice una simulación del circuito que mencionaba en mi respuesta anterior. Resultó que solo con 1 multiplexor y 1 AND funciona según tus especificaciones.

En archivos adjuntos esta el circuito esquemático y el archivo de simulación (usé Cricuit Maker 2000 para realizarlo)

*Descripción del Circuito*

*1-* Usé los siguientes elementos:

- 5 Interruptores tipo Dip-Switch (puedes reemplazar el Dip-sw del Master reset por 1 Pulsador Normalmente Abierto). *Todos los interruptores van polarizados (Pull-up = 5V DC o Pull Down = GND)*, tu decides cual de las dos configuraciones, te recomiendo PULL-UP.
- Una fuente de pulsos de reloj (como decía antes, usa un LM555 en configuración biestable)
- 74LS74 x2 (Flip-Flop Tipo D con Set y Reset)
- 74LS157 x1 (Multiplexor 2 a 1)
- 74LS08 x1 (Compuerta Lógia AND)
- LEDs polarizados a 5V DC x2

*2-* Explicación del Funcionamiento

- Se tiene 1 selector de Dirección (Dir), que sirve para acceder al registro 0 y registro 1 (Como son 2 registros solamente, con 1 bit de selección basta, si fueran mas de 2 registros, necesitaríamos otra lógica de selección mas eficiente),

- Se tiene 1 selector de Escritura/Lectura (WR), Que sirve para decidir que acción se realizará en el registro seleccionado con Dir.

- Se tiene 2 selectores de Datos (Bit0 y Bit1): Con estos se introducen los datos a escribir cuando WR = 1.

- Se tiene un Selector(o pulsador) de Reset: Este pone en 0.0 (Bit0 = 0, Bit1 = 0) todos los registros de la memoria.

- *Para Leer datos:* primero establece WR = 0 y luego Dir = X( la dirección de datos que se desea).

- *Para Escribir datos:* Primero establece WR = 0, Luego Dir = X, Luego establece Bit0 y Bit1 con los datos que deseas escribir, Luego WR = 1 (para escribir los datos), luego WR = 0.

- *Para borrar Datos:* Solo se pueden borrar datos universalmente, se debe presionar o establecer RST = 0, luego RST = 1 (si es un pulsador solo se presionaría el botón y listo).



Espero y te se sea de ayuda o de guía este circuito, y te agradezco por publicar tu duda en este foro, me hiciste desempolvar conceptos de  la U, hace años ya que no regresaba a la electrónica Digital 

Salu2.

PD: Aquí te dejo algunos enlaces útiles:
- Circuit Maker 2000 (Trial Version) y Licencia (bajo tu propia responsabilidad)
http://www.identi.li/index.php?topic=59889

- Hoja de datos del LM555.
http://www.ti.com/lit/ds/symlink/lm555.pdf

- LM555 como reloj
https://www.forosdeelectronica.com/f11/biestable-555-a-51611/
http://electronicavm.files.wordpress.com/2011/04/c-i-555.pdf

- Hoja de datos del 74LS74 (Fairchild)
http://www.datasheetcatalog.org/datasheets/70/375703_DS.pdf

- Hoja de datos del 74LS157 (Motorola)
http://ac.dcti.iscte.pt/Recursos/Catalogo/sn74ls157rev5.pdf

- Hoja de datos del 74LS08 (Fairchild)
http://www.datasheetcatalog.org/datasheets/70/375337_DS.pdf

- Configuración Pull-Up - Pull Down
http://www.tuelectronica.es/tutoriales/electronica/resistencia-pull-up-y-pull-down.html
http://electronicayrobotica.wordpre...acion-de-resistencias-en-pull-up-y-pull-down/

- Polarización de LEDs a 5V DC.
http://personales.ya.com/katraska/diodos.htm
https://www.forosdeelectronica.com/f27/resistencia-coloca-led-6046/

- Interruptor Dip-Sw.
http://es.wikipedia.org/wiki/Interruptor_DIP

- Pulsador Normalmente Abierto (NA)
http://www.ite.educacion.es/formacion/materiales/47/cd/mod2/2c_1.htm
http://es.wikipedia.org/wiki/Circuito_de_conmutación


----------

