# comprobador de memoria ram con eprom



## electroman xxx (Dic 9, 2011)

que tal yo recien empiezo a interesarme por la electronica y no entiendo mucho la tarea que dejo mi profesor resulta que estamos en el tema de memorias y nos ha pedido diseñar un comprobador de memoria ram .nos ha dicho que mostremos y elaboremos en modo de idea de como diseñarianos el comprobador solo quiere que le mostremos el diagrama y nos dijo que los datos lo entremos no con un contador si no con una memoria eprom y no se como hacerlo se que la memoria ram contiene un numero fijo de celdas que van a trabajar segun los datos que ingresas y estos pasan a una salida final y que las entradas(seleccion de celdas), y los datos pueden ser obtenidos a travez de contadores pero no se como hacer para utilizar la eprom y poder usando esta comprobar la ram si me dieran al menos una idea de como empezar a hacerlo les agradeceria mucho 
como dije todavia no he avanzado pero aqui dejo los datashef
ah y que la ram sea 6116 o 7489
gracias++


----------



## MrCarlos (Dic 9, 2011)

Hola electroman xxx

En mi simulador solo encontré el 6116 así que te diré lo poco que sé de esta memoria.

Tiene 11 BIT’s de direcciones de A0 a A10; a este conjunto de BIT’s se le conoce como Address Bus(Bus de direcciones).
2^11=2,048 direcciones donde en cada una se pueden memorizar(Guardar) unos o ceros.

Tiene 8 BIT’s de datos de D0 a D7; a este conjunto de BIT’s se le conoce como Data Bus(Bus de datos).
Para cada dirección hay 8 cajitas donde en cada una puedes memorizar(Guardar) un uno o un cero.

Luego vienen las líneas de control:
CE con rayita arriba. Que quiere decir Chip Enabled, cuando esta entrada es cierta la memoria puede utilizarse, está habilitada(Enabled). 
La rayita arriba quiere decir que es cierta cuando es baja(0).

OE con rayita arriba. Quiere decir Output Enabled. Cuando esta entrada es cierta, el Bus de datos se puede utilizar. Si no es cierta entonces los BIT’s D0 a D7 se ponen en el tercer estado “Abierto”.
Esta característica se utiliza para poder conectar al Bus de Datos varias memorias. 

WE con rayita arriba. Quiere decir Write Enabled. Cuando esta entrada es cierta se pueden memorizar(Grabar) datos por el Bus de datos en cualquier dirección que se ponga en el Bus de Direcciones.
En cambio si esta entrada es falsa entonces la memoria está acondicionada para leer desde cualquier dirección.
Has de cuenta que es una calle, cada casa en esa calle tiene un número que es su dirección. Dentro de esa dirección hay diferentes cosas.

Según entiendo debes utilizar una memoria EPROM para comprobar la 6116.
Pero no mencionas qué quieres comprobar.
A- Que tenga los datos que fueron guardados ?.
B- Que esté vacia ?.
C- Que el contenido de la EPROM pase a la 6116 y posteriormente comprobar que el contenido de ambas es igual ?.

Yo me inclino por la C-.

Para lograrlo la EPROM debe tener algunos datos grabados.
Para pasar los datos de la EPROM a la 6116 debes conectar los BUS(es) en paralelo tanto el de direcciones como el de datos.
Según las líneas de control que tenga la EPROM es como se conectaría. Menciono esto pues líneas de control existen más de las que trae el 6116.
Suponiendo que la EPROM tiene las mismas líneas de control.
Para pasar el contenido de la EPROM a la 6116:
1- Se conecta en ambas memorias el Bus de direcciones, A0 a A0, A1 a A1 y así sucesivamente hasta las A10.
2- se hace lo mismo con el Bus de datos en ambas memorias. Esto lo llaman conectar en paralelo.
3- de algún modo se programa la dirección secuencialmente desde 0 hasta el 2048.
4- A ambas memorias se les hace cierta la entrada OE.
5- Mientras en le EPROM se pone en condición de leer la 6116 se pone en condición de escribir. Con WE en la EPROM debe ser falsa y en la 6116 debe ser cierta.
6- A ambas memorias se les hace cierta la entrada CS. En este instante los datos en la dirección 0 se grabó en la dirección 0 de la 6116.
7- Luego en ambas memorias se pone la entrada CE como falsa, se avanza a la siguiente dirección y se hace cierta la entrada CE..... y así sucesivamente.

Para comprobar que el contenido de la EPROM se memorizo en la 6116 hay que desconectar el Bus de datos entre las memorias y poner, en el bus de direcciones alguna o secuencialemente las direcciones, poner ambas memorias en el estado Lectura con WE y de alguna manera verificar cada que cambiamos de dirección y hacemos cierta la entrada CE que cada BIT del bus de datos sean iguales, si D0 en la EPROM tiene 0 en D0 de la 6116 tambien debe haber 0. Bit Por BIT desde D0 hasta D7 se deben comprobar para cada dirección.

saludos
a sus ordenes


----------



## electroman xxx (Dic 12, 2011)

ok gracias por tu respuesta mrcarlos pero lo q yo qeria o lo q mi profe me pidio es la opcion a no la c
pero de igual forma gracias me sirvio mucho lo q escrivistex polqe no entendia mui bn las memeorias 
si no es mucha molestia si podrias explicarme como seria la opcion a porqe el profexor dijo q nada mas quire complobar los datos guardados por ejemplo dijo si yo le presto una ram a tal chico y luego se la pido como compruebo q en una direccion dada esta su dato q grabe (ejemplo si yo le puse en la direcion 15(1111) el dato "7"(111) como hago para despues q la devolvio encontrar q en esa direcion esta efectinvamentel el dato q le puse y asi no con varias direcciones y sus respectivos datos pero usando la eprom para este fin 

ah y tambien el 6116 tiene direciones y datos y no hay bloqe para las salidas no se como podria ver eso 
gracias ++


----------



## Gudino Roberto duberlin (Dic 12, 2011)

Amigo, cabe aclarar que las memorias RAM que propones utilizar poseen arquitecturas muy diferentes. Por empezar la capacidad de ambas, tambien difieren la cantidad de bits por celda. Una posee un unico bus de datos, mientras que la otra posee entradas y salidas de datos, segun la que implementes diferira el desarrollo. Ademas hace suponer que lo que pretenden es chequear el estado de celdas de la memoria en cuestion. Normalmente lo que se hace es grabar un dato por ejem. en caso de 8 bits (01010101) en la 1er. direccion y luego comparar si esta correcto, luego se procede a grabar en la misma direccion pero con un dato negado es decir (10101010) y por supuesto comparar, con esto se logra conocer que todos los bits de cada celda funcionan correctamente, luego se incrementa una direccion a la RAM y se repite todo el proceso.-
El papel que cumple la memoria EPROM en todo esto, consiste en generar toda la logica secuencial para lograr el cometido. Ademas necesitaras circuitos auxiliares para hacerla funcionar, como contadores de direccion, compuertas de 3er. estado segun se requiera y latch tipo D para generar la seleccion de direcciones y registro de datos en la RAM. SAludos.-


----------



## MrCarlos (Dic 13, 2011)

Hola electroman xxx

Sería Mucho Muy Tardado el comprobar manualmente una memoria.
Vamos a suponer:
Que estamos hablando de memorias que tienen un BUS de datos, Un BUS de direcciones y las entradas de control. 
Los datos entran o salen en paralelo; las direcciones entran en paralelo.
Y del tipo EPROM.
Estas siglas quieren decir: *E*lectrically *P*rogrammable, *R*ead *O*nly *M*emory.
Quiere decir que este tipo de memorias solo se pueden programar y NO reprogramar.
Pero básicamente estos 2 renglones no importan por ahora.

Para verificar el contenido de una memoria solo hay que *comparar* cada dirección, en ambas, y ver si su contenido(Datos) son iguales.
Un comparador sencillo podría ser una compuerta OR exclusiva o NOR exclusiva.
El propio símbolo de estas compuertas nos dice cómo funciona. Hecha a volar tu imaginación: las 2 entradas y la línea curva que las cruza, no se te figura al símbolo “NO ES IGUAL” ?. Desafortunadamente no recuerdo el código ASCII para poder Insertarlo aquí. Pero es el mismo “=” con una diagonal cruzándolo.
Así que si captas esto podrías definir como funciona estas compuertas.
Cuando NO SON iguales, sus entradas, la salida será 1 en la OR por no tener el pequeño circulo en su salida.
Cuando NO SON iguales, sus entradas, la salida será 0 en la NOR por tener el pequeño circulo en su salida.
Entonces podemos utilizar cualquiera de esas compuertas y con 8 de ellas comparar BIT a BIT las salidas de datos de la memoria.
Si ponemos un LED en la salida de la OR con el ánodo conectado a la salida y el cátodo conectado a tierra, este LED encenderá cuando ese BIT en particular NO SEA IGUAL en una memoria que en la otra.
Tambien podríamos utilizar una compuerta NOR exclusiva. Seguro tu ya puedes definir cómo conectar el LED, claro con su respectiva resistencia limitadora de corriente en ambos casos.

Como te menciono, en muy tardado el comprobar manualmente el contenido de las memorias.
Es más fácil y rápido hacerlo con un sistema adecuado para hacerlo a la velocidad que soporta la memoria el cambio de direcciones y la tardanza en aparecer los datos en su BUS.

Ese sistema debe detenerse al primer error que encuentre (error= diferencia de contenido en la memoria).
Ese sistema está hecho pero le falta un programador para que se detenga al llegar a la dirección más alta de la memoria que se está verificando.

Si tienes el ISIS de Proteus corre la simulación que te adjunto y dame tus comentarios. No me preguntes cómo funciona, Tú debes descubrirlo. Si descubres errores házmelos saber.
Hay 2 archivos .hex, cuando asignas el mismo(Mismo Nombre de archivo) a ambas Memorias el sistema llegará hasta la dirección más alta y volverá a comenzar. Aquí es donde falta algo para que se detenga al llegar a la dirección más alta de la memoria.
Si asignas un .hex diferenta a cada memoria, el sistema se detendrá a la primera diferencia que encuentre en los datos.
Por ejemplo:
U1 le asignas Chk Memory's Auto Manual (1).hex
U2 le asignas Chk Memory's Auto Manual (1).hex
El sistema se detendrá a la primer diferencia en el contenido de las memorias.
Si les asignas el mismo .hex no se detendrá.

Te estoy adjuntando el archivo de ISIS de proteus y los 2 .hex. las memorias tienen asignado diferente .hex.

saludos
a sus ordenes


----------



## electroman xxx (Dic 13, 2011)

bno el circuito q mandaste en proteus esta interesante pero no logro apreciar muy bien todo lo que quieres dar a entender es q aun ni el profesor solo siquiera a echo nomas una clase de memorias y deja eso bueno en fin la informacion me ayuda solo q pense que era menos engorroso y mas simple lo de comprobar una ram con una eprom creo q muchas formas no voi a encontrar 
esperare que el profesor explique bien 
lo malo es que dejo a manera de investigar como puedes comprobar una ram usando una eprom y que esa pregunta venia en el proximo examen y es por eso que e estado buscando informacion por todas partes pero ya me di cuenta q no es algo sencillo sino algo complejo 

solo una duda mas para lo que mas o menos pido cual seria la funcion de la eprom a ver si me lo detallas un poco mas ya entendi como trabaja esta pero quiero saver como la uso la eprom para comprobar cualquier ram ya sea 6116 7489 74189 74xx 74xx etc eso nomas seria de ahi me guio


----------



## Gudino Roberto duberlin (Dic 13, 2011)

Hola Amigo, te pregunto algo, como cargarias los datos previamente en la memoria RAM?? para luego comparar??


----------



## MrCarlos (Dic 14, 2011)

Hola Gudino Roberto duberlin

A quién le estás haciendo esas preguntas ??.
Supongo que a electroman xxx.
Pero electroman xxx ya tiene un día sin responder.

Hoy(14/dic/2011 16:40:03) hace un día que preguntó lo siguiente:
solo una duda mas para lo que mas o menos pido cual seria la función de la eprom a ver si me lo detallas un poco mas ya entendi como trabaja esta pero quiero saver como la uso la eprom para comprobar cualquier ram ya sea 6116 7489 74189 74xx 74xx etc eso nomas seria de ahi me guio

Bien electroman xxx, la función de la EPROM es la de proporcionar los datos para ser grabados en la RAM.
Una vez hecho esto se compara el contenido de todas las direcciones en la RAM contra la EPROM.
Si alguna dirección, en la RAM, tiene datos diferentes que en la EPROM el sistema debe notificarlo de alguna manera:
1- Ya sea una alarma audible o visual.
2- Memorizar de algún medio la dirección o direcciones que tienen datos diferentes contra la EPROM.
3- Detener la verificación al encontrar una diferencia.
Etc.
Ten en cuente que parte de tu enunciado dice: diseñar un comprobador de memoria ram.
Pero no está muy claro lo que tu profesor de que quiere que se haga la comprobación.
A- Que recuerde ?. verificar los datos en la RAM que se le grabaron.
B- Comprobar los parámetros de la RAM ?. Esos que vienen en las hojas de datos. 

Gudino Roberto duberlin:
Hablando por ejemplo de la RAM 6116. Ya que otras RAM pudiera ser diferente el procedimiento.
Para cargar los datos previamente en la memoria RAM hay que poner una dirección en su BUS y por el BUS de datos aplicar unos y ceros, se habilitan o deshabilitan las entradas de control: CE, OE, WE. Según convenga para que grabe aquellos datos en la dirección actual.
Si se quiere hacer la grabación de datos secuencialmente habría que empezar por la dirección 0000000000 y terminar en 1111111111 en el BUS de direcciones. Aunque claro se puede hacer aleatoria o descendentemente.

Si vamos a hacer una copia de una memoria a otra, entonces:
El BUS de direcciones de ambas memorias se pone en paralelo, claro si los niveles lógicos son compatibles.
El BUS de datos de ambas memorias se pone en paralelo, claro si los niveles lógicos son compatibles.
Si no, Entonces:
De alguna manera se pone la primer dirección y los datos en sus respectivos BUS(es).
1- Se habilita la RAM con CE, en este caso = 0.
2- Se deshabilitan las salidas con OE, en este caso = 1
3- Se habilita el modo de escribir con WE, en este caso = 0. el tiempo que dure en cero depende de sus especificación.
4- Se deshabilita el modo de escribir con WE, en este caso = 1. Quedando en modo de lectura.
5- Se incremente la dirección y se ajustan los datos en sus respectivos BUS(es). Regresamos a 3- para grabar.
Y así hasta llegar a la dirección máxima o hasta la dirección que queremos grabar.
Cabe mencionar que si estamos haciendo una copia, en la memoria de donde estamos sacando los datos deben estar: habilitadas las salidas, estar en modo de lectura y la(s) entrada(s) Chip Enable habilitadas.

saludos
a sus ordenes


----------



## electroman xxx (Dic 17, 2011)

hola mr carlos bno ahora solo quiero saver el funcionamiento de la eprom como se grva y todo eso creo q lo del comprovador ya no necesito ,igual gracias me ayudo bastante para saver mas es interesante todo lo q pusistes como digo ahora solo quiero q me expliques como se grava una eprom sola ya no con ram ni nada de eso estoi trabajando con la 2764 y la estoi empezando a entenderla gracias por todo y ya no te molestare +
gvrcias


----------



## MrCarlos (Dic 17, 2011)

Hola electroman xxx

Hablando de la EPROM 2764:
Básicamente es la mismo procedimiento que para grabar una memoria RAM.
Se le pone una dirección.
Unos datos.
Se habilitan las señales de control para ponerla en modo de grabar.

Sin embargo hay que tener en cuenta lo mencionado en sus hojas de datos al respecto de las señales de control
VPP(1). PGM(27). OE(22). CE(20).

Para borrar ese tipo de EPROM se hace con luz ultravioleta (UV) y al borrarle todas las direcciones tienen un uno en todos los BIT’s de datos.
Las hojas de datos de este IC y de muchos otros más las puedes conseguir en:
http://www.alldatasheet.com/

saludos
a sus ordenes


----------



## electroman xxx (Ene 12, 2012)

bien con los datos amigos ahora me gustaria si pueden ayudarme con este problema Se tiene una memoria EPROM 2k y otra memoria RAM de 2k, ambas grabadas.Se pide diseñar un circuito que encuentre datos iguales en las mismas direcciones y estos datos pasarlos a una memoria RAM e tratado de enpezarloa hacer pero aun no doi con la idea


----------



## MrCarlos (Ene 12, 2012)

Hola electroman xxx

Quiere Decir Que Hay 3 Memorias:
1er La EPROM De 2K
2da La RAM     De 2K
3er La RAM Donde se grabará el contenido de aquellas direcciones en la* EPROM De 2K* y La *RAM De 2K* que sean iguales... Cierto ??.

Pero en qué dirección de la tercera memoria se guardarán los datos que sean iguales ??.
Si es en la misma dirección donde son iguales no hay mucho problema pero si es en una dirección diferente entonces hay que hacer otro circuito Para direccionar esta tercer memoria.

Para comparar el contenido de las diferentes direcciones puedes utilizar 8 compuertas NOR-Exclusivas; Son 8 BIT’s en el BUS de datos. 
Las compuertas NOR-Exclusivas Funcionan Así:
Cuando NO son iguales, sus entradas, dan un 0.
Cuando SI son iguales, sus entradas, dan un 1.

De modo que cuando el contenido de cualquier dirección, en las memorias 1er y 2da, sean iguales, tendrás todas las salidas de las 8 compuertas NOR-Exclusivas a nivel alto(1).

Esas 8 salidas las metes a una compuerta AND de 8 entradas y cada que la salida de esta AND sea nivel alto(1) grabas los datos en la 3er memoria.

saludos
a sus ordenes


----------



## electroman xxx (Ene 18, 2012)

gracias por lo escrito no se si me podran ayudar con esto diseñar un circuito que permita leer las celdas del 328 byte al 407byte con una RAM de 1k no entiendo eso pienso q es muy complicado a ver por lo menos una idea v+


----------



## MrCarlos (Ene 19, 2012)

Hola electroman xxx

Una RAM De 1K, que en realidad es de 1024 Direcciones.
Pero no mencionas de cuantos BIT’s de salida. 
O si sabes el número de identificación pues mejor.

Por otra parte:
Creo que puedes realizar Tú mismo ese circuito.
Fíjate en los que te he adjuntado. Los puedes modificar para adaptarlos a lo que estás requiriendo.

Para Leer una RAM de 1K o cualquier otra se pone la primer dirección (328) en el BUS de direcciones y en el BUS de datos le pones unos LED’s o unos Display’s Hexagecimales para mirar el contenido de la dirección.
Luego se avanza a la siguiente dirección y se miran los datos que hay en esa dirección; así hasta la última dirección (407).

Si lo quieres hacer un tanto automático entonces utiliza un generador de pulsos variable; por ejemplo el 555.
La salida de este 555 se la aplicas a 3 contadores conectados en cascada BINARIOS.
Esos 3 contadores deben ser programables y compatibles con la RAM que vas a utilizar.
El contador de las centenas lo programas a 3.
El contador de las decenas lo programas a 2.
El contador de las unidades lo programas a 8.
A este contador se le aplican los pulsos del 555.

Tienes que hacer una circuiteria formada de compuertas para detectar cuando los contadores lleguen a 408 (Está bien 408) se genere un pulso para con él programar los contadores a 328.

Tambien se puede elaborar ese “Detector de cuenta” con 3 comparadores de magnitud.
Esos comparadores se conectan en cascada.
Utilizas la salida A=B. 
Por las Entradas A metes las salidas de los contadores, las Q’s, y por las entradas B les programas el número 408 (Está bien 408). Así que cuando los contadores lleguen a 408 INMEDIATAMENTE se generará un pulso en A=B con lo que puedes restablecer los contadores al número que se les programó (328).
Tienes que programar la entrada A=B a nivel alto y las entradas A>B y A<B a nivel bajo.

Puedes agregarle 3 Display’s Hexagecimales en el BUS de direcciones para que veas la dirección.

saludos
a sus ordenes


----------

