# como utilizar una memoria RAM



## Ricardo_c (Ago 6, 2010)

hola a todos q tal como están 
quisiera q me ayuden porfavor tengo un circuito q es un contador y este contador realiza su funcion al presionar uno de 8 pulsores q tengo lo que quisiera es poder guardar el conteo q viene de cada pulsador  por ejemplo si presione el pulsador 3 y en mi display me sale el numero 1 luego presiono el pulsador 5 y mi display sale 2. claro esto es atraves de un contador con su decodificador  si vuelvo a presionar el numero 3 en mi display deseo q me muestre el orden en q lo presione osea 1 pense q podria usar una memoria RAM 7489 pero no tengo muy claro como conectarla para q cumpla lo q explique si alguien me puede ayudar estaria muy agradecido.


----------



## Scooter (Ago 6, 2010)

Eso sin un micro es complicado.
Tendrías que usar un contador para que cada vez que pulses guarde en una posición diferente y el control de las líneas de escritura.
Luego te hará falta un circuito para leer la ram etc. Según tus especificaciones tendría que ir leyendo la memoria hasta encontrar uno igual y mostrar la posición, pero si no hay uno igual, añadirlo al final...
No entiendo muy bien que es lo que quieres hacer pero en lógica discreta me parece demasiado complicado.


----------



## Ricardo_c (Ago 6, 2010)

hola scooter 
disculpa si no me exprese bien y no me entendiste te pongo mi diagrama para q me puedas entender mejor me puedes decir como poner el diagrama



ya ese es mi diagrama ahi deseo incorporar mi ram


----------



## MrCarlos (Ago 6, 2010)

Hola Ricardo_c

Creo que de nuevo andas buscando el Turnero.

Fíjate Bien: las salidas Q’s del contador cuyos datos quieres guardar las debes conectar a las entradas D’s del 7489.
Esto debe hacerse en cierto orden, Si las salidas del contador se llaman: Q1, Q2, Q3, Q4 las debes conectar a D1, D2, D3, D4 del 7489 respectivamente.
Q1->D1
Q2->D2
Q3->D3
Q4->D4

Aquí está una pequeña explicación de las funciones del 7489:

A0, A1, A2, A3 Address (Direcciones).
D1, D2, D3, D4 Data Input (Entrada De Datos).
Q1, Q2, Q3, Q4 Data Output (Salida De Datos).
ME Memory Enable (Habilitador De Memoria).
WE Write Enable (Habilitador De Escritura).

Para guardar algo en la memoria se deben cumplir ciertas cosas:
ME debe ser 0.
WE debe ser 0.
A0, A1, A2, A3 Debe tener una combinación de 1's y 0's que te dan la dirección donde se guardarán los datos.
D1, D2, D3, D4 Debe tener una combinación de 1's y 0's Que son los datos que pretendes guardar.

Para leer los datos que hay en una determinada dirección se deben cumplir ciertas cosas:
ME debe ser 0.
WE debe ser 1.
A0, A1, A2, A3 Debe tener una combinación de 1's y 0's que te dan la dirección donde guardaste los datos.
Q1, Q2, Q3, Q4 tiene la combinación de 1's y 0's que habías guardado en aquella dirección.

En alguno de mis mensajes te pedí algo o te pregunté algo pero no obtuve respuesta, probablemente no te llego el correo electrónico que se genera automáticamente.

Si ya tienes el Turnero me alegro, si no te lo adjunto, está desarrollado con el SoftWare CircuitMaker 2000; espero te sirva.
saludos
a sus ordenes


----------



## Ricardo_c (Ago 9, 2010)

hola MrCarlos
quisiera  agradecerte por responderme y por compartir tu circuito me  resulta muy útil, yo he hecho uno que lo muestro a continuación y por favor quisiera q me des una ayudita para colocar mi memoria 7489 me estado informando y ya se como trabaja, tambien gracias a tu explicacion. mi memoria lo quiero colocar en el primer display q esta en la parte superior del esquema esa parte es mi contador de orden de llegada esa parte es la que deseo guardar para poder leerla 
	

	
	
		
		

		
			





en la parte inferior donde estan colocados los pulsadores es un codificador de decimal a binario del cual de las salidas despues de la etapa de los inversores pienso conectar a A0,A1,A2,A3 (direcciones) para q direccione en el orden de los pulsadores. he estado probando la memoria ya q no lo puedo simular en el proteus por q no hay ese codigo y me he percatado q cuando WE esta  a nivel 0 la informacion es guardada (escritura) pero a las salidas Q1,Q2,Q3,Q4 se obtine los datos de entrada pero invertidos ps sus salidas son negadas claro. pero cuando WE pasa a un nivel 1 empieza la etapa de lectura entonces cuando presiono un boton para saber en q orden llego pulso el boton y me aparece el dato en las salidas pero cuando suelto el dato desaparece en las salidas supongo q es por el direccionamiento ya q en el codificador se vuelve a cero; tendria q colocar mi direccionamiento despues de mi registro q esta en la parte inferior, bueno es un contador 74192 q lo estoy usando como registro. bueno por esta razon es que coloque un registro en la parte superior el 7475 para q me retenga la informacion dada por la memoria en el proceso de lectura. 
conecte entre el contador y la memoria en la parte de entrada de datos un 74126 q es un tristate para q cuando requiera leer no entren datos a las entradas, esto es necesario? o no importa si entra datos cuando la RAM esta seleccionada para leer  en el esquema puedes apreciar los tristate q estan conectados con el contador de la salida de estos (tristate) he colocado D1,D2,D3,D4  de la memoria y las salidas Q1,Q2,Q3,Q4 las conecte al registro 7475 que se encuentra ahi q te explique para q lo estoy usando, y como las salidas de la memoria me salen el complemento de los datos de entrda estoy tomando las salidas negadas del registro para invertir los datos q me entrega la memoria y poder mandar al codificador los datos reales. no le prestes atencion a los tristate q estan con niveles logicos esos solo lo puse para darme una idea de como trabajaria mi memoria pero no es parte del esquema q tengo.
De esta manera q te explique he conectado mi memoria pero no me graba lee muy bien no se que puede ser si tuvieses algun circuito con memoria o si me lo pudieses implementar en el mio o explicarme como conectarlo te lo agradecería mucho.
Ah se me olvidaba ahi vas a ver un flip flop este lo estoy usando para poder darle el nivel a WE . el pin ME lo estoy conectando directo a nivel 0 y el flip flop uso para dar el nivel 0 o 1 al WE .
cuando energizo todo el sistema  la salida Q del flip flop esta en 0 entonces si WE y ME estan a 0 la memoria deberia escribir cuando finaliza la carrera quiero ver los puestos en que llego cada competidor entonces pulso el boton q da SET al flip flop y en la salida de este Q obtengo el nivel alto 1    osea WE a 1 que seria para que la RAM lea y ademas los pines habilitadores de los tristate tambien estan conectados a la salida Qnegada para q en un inicio esten activados y los datos ingresen de manera normal cuando pulso el boton para realizar el SET del flip flop aparte de mandar a nivel 1 a WE pongo a nivel 0 a los pines habilitadores de los tristate teniendo gan impedancia en estas compuertas e impidiendo el ingreso de datos en el proceso de lectura como te dije anteriormente tu crees que esto es necesario? . A por siacaso del flipflop al q me refiero es el JK 7476 el otro flip flop q esta ahi es tipo D 7474 y lo estoy usando para controlar el rebote q se da cuando cuenta.
Esta es mi forma de como hacerlo si estoy equivocado te agradeceria que me orientes porfavor o si tienes algun esquema de como conectar la RAM o si lo puedes hacer en mi esquema espero y me puedas responder te agradesco de antemano 
saludos


----------



## MrCarlos (Ago 9, 2010)

Hola Ricardo_c

A ver si entendí:
Cuando termine la carrera quieres ver en qué lugar llegó determinado corredor.
Además pretendes guardar el turno en que llegó determinado corredor (1, 2, ....Etc) en la localidad correspondiente.
O sea: presionas el botón 5 y en los Display’s debe aparecer 5(Numero de corredor) 3(Turno en que llego).
Supuestamente cuando el corredor 5 llegó, presionó su botón y en la dirección 5 se guardó el 3 porque llegó en 3Er. Lugar.

Entiendo también que cuando terminó la carrera presionas un botón y aparece el turno en que llegó ese número de corredor pero al soltar el botón desaparecen los datos. Creo esto, para mi, es correcto pues cuando presionas un botón aparecen los datos, si lo sueltas es mejor que se borren de los Display’s.

No entiendo claramente qué haces con los tristate pero en ese párrafo haces una pregunta a la cual respondo: mientras estes leyendo de la RAM (WE=1, ME=0) lo que tenga en las entradas D’s no importa, no le afectan a la RAM. Y si las salidas Q’s de la RAM son el complemento de lo que Guardaste en determinada dirección.

Podrías decirme el Número de identificación de los circuitos integrados que estás utilizando en el esquema que adjuntaste,? No logro distinguirlos.

Tengo que hacer algún truco para simular en algún programa el RAM que utilizas.

saludos
a sus ordenes


----------



## Ricardo_c (Ago 10, 2010)

hola MrCarlos
disculpa que te moleste tanto lo q interpretaste de lo que te escribi esta correcto



ahi esta el archivo en proteus para que distingas bien los circuitos integrados y para que los puedas distinguir mejor y veas como funciona si no tienes proteus los integrados son decodificador 74147, contador 74192 decodificador 7447 en la parte de arriba del esquema la parte del contador puse un registro 7475 para hacer que me grabe cuando la memoria lea pero como tu dices q es mejor q se borre entonces no lo consideres en la parte de abajo despues del codificador uso inversores 7404 y luego uso otro contador 74192 pero yo lo estoy usando como registro y seguido de ese otro decodificador 7447. para dar el clock al contador de arriba q me da el orden de llegada uso un 7430 o un 7420 es la misma compuerta no ma que una tiene mayor numero de entradas, y para activar mi contador de la parte inferior que estoy usando como registro uso otro 7430 al cual estan colocados todos los pulsadores. tambien observaras que hay un flip-flop tipo D este es para corregir el rebote y no se saltee a la hora de contar el orden de llegada como ya te explique en el mensaje anterior.
yo trate de simularlo en proteus pero no existe ese codigo de memoria asi q no puedo hacerlo tu crees que puedo agregarle componentes a la libreria del proteus para poder hacer la simulacion?


----------



## Scooter (Ago 10, 2010)

Si se usan mas de 4 ó 5 ICs yo usaría un micro, pero en fin...


----------



## Ricardo_c (Ago 10, 2010)

hola scooter
yo tambien pienso lo mismo pero el profesor no quiere con microcontrolador o microprocesador y hay otro problema que yo no se programarlos asi que si me pudieses enseñar me serviria mucho para otros proyectos. gracias de por tu aporte.


----------



## Scooter (Ago 10, 2010)

Pues ánimo entonces, espero que no te lo haba montar y se conforme con simular.

Habían unos ICs muy útiles para contadores, con un solo IC tenías contador 0-9999 latch, decodificador a 7 segmentos, multiplexor etc. Lo siento pero no recuerdo la referencia, eran 79hc926 o algo así.


----------



## MrCarlos (Ago 10, 2010)

Hola Ricardo_c

Cómo vez si agregas un conmutador para cambiar la RAM de Leer a Escribir y viceversa ?

Analiza el ultimo esquema que adjuntaste y vi la compuerta NAND de 74LS30, las entradas que no utilices las debes conectar al positivo.

Tengo el Proteus pero no puedo modificar y menos salvar el esquema que enviaste; solo puedo ejecutar y ver como funciona.

En CircuitMaker Trae una RAM con la que simulé la 7489. Nota Lo Siguiente:
La RAM de Circuit Maker es de más capacidad que la 7489. Así que solo utilizo las primeras direcciones de memoria A0, A1, A2, A3 Las demás las conecto a tierra para que no afecten.
De las entradas / salidas de la RAM solo utilizo IO0, IO1, IO2, IO4. Estas son las Q’s de tu RAM pero no son el complemento como en Tú RAM.
La entrada CS es ME en Tú RAM.
La entrada WE es WE en Tú RAM.

Observa U10 en el esquema, sus salidas pasan atraves de U14 si está habilitado y las salidas de este van hacia el ROM por las líneas llamadas D1, D2, D4, D8. Como la señal WE es cierta esos datos serán guardados en la ROM.

Cuando el último corredor llega a la meta puedes cambiar el conmutador W / R con lo que el ROM se habilitará para ser leído. Al mismo tiempo la señal WE hace que U13 deje pasar los datos en la ROM hacia el Decodificador U11.

Cualquier botón que presiones aparecerá en los Display’s el número de corredor y el turno en que llegó.

Espero este esquema te sirva

saludos
a sus ordenes
PD: si no tienes CircuitMaker puedes encontrar un enlace, para bajarlo, en algún tema de este foro.


----------



## Ricardo_c (Ago 10, 2010)

hola Mr Carlos 
te pasaste estoy muy agradecido por la ayuda que me estuviste brindando y por todos los aportes que me enseñaste yo tambien por mi parte estuve investigando y ya casi tengo el 90% del proyecto solo me faltan ajustar unas cuantas cosas para q me salga pero estoy seguro q me va a resultar, nuevamente gracias y si necesitas alguna cosa o una informacion si te puedo ayudar yo encantado, bueno Carlos estamos en contacto para cualquier cosa ps cuidate saludos

hola Scooter
gracias por tu aporte sobre el integrado buena informacion


----------



## Ricardo_c (Ago 12, 2010)

hola MrCarlos
que tal como estas mi profesor de electronicos III me ha dejado un proyecto para realizar, se trata de que agamos un proyecto con alta frecuencia por ejemplo transmisores, wokitoki, etc el que sea pero tiene que ser un proyecto bueno para tener buena nota pero sobre todo por q deseo aprender sobre este campo, he estado buscando informacion acerca del tema y encontrado sobre los IRF. sobre esto tambien el profe nos hablo nos dijo q con estos componente son los q se usan actualmente donde se trabaja con alta frecuencia asi que si tienes un buen proyecto te garadeceria que lo suvieras al foro por favor


----------



## MrCarlos (Ago 12, 2010)

Hola Ricardo_c

Creo que ese nuevo tema que mencionas -un proyecto con alta frecuencia por ejemplo transmisores, wokitoki-
Deberías de colocarlo en un subforo de DISEÑO ANALÖGICO -> Circuitos De Radio.
Digo Para no revolver corpus con semana santa.

Yo, desafortunadamente no tengo circuitos de ese tipo, generalmente me nace una idea y empiezo a buscar información y la voy desarrollando esa idea.

Hace tiempo pensé hacer una alarma para auto pero no de las que intentan robarlo y emite un sonido.
La idea básica es tener un transmisor el rango de frecuencia de 27Mhz. Y un Pequeño receptor para escuchar cuando se activa la alarma por intento de robo.

En aquel tiempo me hice esta pregunta: si en mi receptor suena la alarma qué voy ha hacer?.. Voy corriendo a golpear al ladrón? O que voy ha hacer? ....analiza las consecuencias que de ello surgen.
Creo que lo mejor es notificar a las autoridades y que ellas “sigan” al vehículo para localizarlo, Por medio de la señal de RF. Y que ellas actúen en consecuencia.

Esta alarma es silenciosa, para el ladrón,....
En fin creo que este nuevo proyecto deberías de colocarlo en un tema adecuado.

saludos
a sus ordenes


----------



## Ricardo_c (Ago 20, 2010)

hola Mr Carlos 
disculpa q no haya entrado antes a agradecerte lo q pasa es q he estado en semana de examenes y no he tenido mucho tiempo pero gracias por lo de RF he estado buscando algunos proyectos y ya voy a implementar uno. mas bien si no es mucha molestia quisiera hacerte una pregunta he diseñado un contador, bueno es como un reloj en conteo regresivo yo programo por ejemplo 42:45 esto quiere decir 42 minutos y 45 segundos y de ahi va contando descendente lo he hecho con 4 contadores 74192 los he puesto en cascada  por ejemplo  42:00 y luego me deberia salir  41:59 pero como es propio del contador cuando cuenta descendente en vez de que en el segundero me salga 59 me sale 99 lo que deseo es hacer una programacion para que en ese contador mande a 5 y no a nueve como un reloj ps espero q me ayas entendido y me puedas ayudar te agradesco de antemano


----------



## MrCarlos (Ago 20, 2010)

Hola Ricardo_c

Supongo que para programar los 42:45 (Es ejemplo) utilizas las entradas D’s, Pins 9, 10, 1, 15, de los contadores 74192 y por medio de la entrada PL, Pin 11, Pasas lo de las D’s a las Q’s. Y luego ya cuenta en forma descendente.

Entonces el contador cuenta +/- así:
42:45... 44, 43, 42, 41, 40...... 30... 20... 10... 09, 08, 07, 06, 05, 04, 03, 02, 01, 00, 99 exacto aquí hay que programar las D’s para que los contadores se restablezcan a 41:59 aplicando un pulso a la entrada PL.
Pero, como dije, supongo que utilizas las entradas D’s para programar 42:45 debes hacer una circuiteria para, programar 42:45 “Ó” programar al número adecuado cuando está contando.

Ahora bien, ya que llegue a 00:00 qué quieres que haga ?
Que se detenga ?
Que reinicie de nuevo a 42:45 ?

saludos
a sus ordenes


----------



## Ricardo_c (Ago 20, 2010)

hola Mr Carlos
esa parte de cuando llega a cero ya la tengo resuelta esa parte de programar a 5 es mi dificultad no se si tendras algun esquemita q me pueda ayudar gracias

las entradas D no las utilizo para programar programo mediante el up pin 5 cada contador tiene un pulsador con el cual programo mas bien esas entradas las uso para  resetear cuando estoy programando ya que solo quiero q me llegue hasta 5 en 6 vuelve a cero mediante un pulso a PL pero esto es para dos contadores ya q este sistema solo quiero que llegue hasta 59:59 ese es su tope maximo para programar con los contadores q me dan 9 no tengo problema por q el 74192 cuenta hasta 9 y cuando doy otro pulso se regresa a 0 pero con los q dan 5 esos si tengo q hacer lo q te explique anteriormente y no puedo mandar esa señal al MR porque como estan conectados todos los MR de cada contador para un reseteo completo del sistema. si mando esta señal resetearia lo q programe en los otros contadores y cada contador deberia ser independiente para la programacion


----------



## MrCarlos (Ago 20, 2010)

Hola Ricardo_c

En mi mensaje anterior te expliqué como se logra hacer lo que estás requiriendo.

Pero en fin, té adjunto una imagen conteniendo un circuito que te pudiera servir.

saludos
a sus ordenes


----------



## Ricardo_c (Ago 23, 2010)

hola Mr Carlos 
gracias por tu aporte me servio de mucho ya pude terminar mi proyecto saludos


----------

