Está en la página 1de 11

Escritura y Lectura de memoria

Aaron Santiago Pedraza, Sebastian Garzon, Juan Baquero


{aaronpedraza, sebastian_garzon, juan_baquero}@javeriana.edu.co
Dpto Electrónica-Pontificia Universidad Javeriana
Organización de Computadores
Bogotá, Colombia

​ En el presente documento se presentará el informe correspondiente al diseño e implementación de una memoria la cual
Abstract—
almacenará ocho datos de 3 bits cada uno. Adicionalmente, se visualizan los datos de dos posibles maneras, ingresando la dirección del
dato que se desea visualizar o por un despliegue continuo en el cual se realiza un barrido en la memoria y cada dato se visualiza por
500 ms. Teniendo en cuenta las especificaciones requeridas, re realiza un diagrama en bloques y una máquina de estados finitos para la
implementación del sistema en la tarjeta Terasic DE2-115 y a continuación, se presentan las pruebas de funcionamiento.

Keywords—memoria, bloques, máquina, estados,FSM(finite state machine), RAM(Random-Access Memory), SAM(Sequential-Access


Memory) o DAM(Direct Access Memory).

I. INTRODUCCIÓN (​HEADING 1)​


El proyecto está diseñado para poder leer, guardar y realizar una visualización de una memoria en un display siete segmentos
el cual está diseñado para mostrar el resultado en hexadecimal, este informe contiene de forma específica cuál fue la metodología
que se realizó para el desarrollo del proyecto el cual se basó en identificar entradas en este proyecto , en las cuales entra el dato a
guardar, la posición en la que se quiere guardar (es importante mencionar que el tamaño de la memoria es de ocho bits), además
hay una señal de entrada la cual activa un enable ya sea para guardar, escribir o visualizar, es preciso resaltar que las señales de
entradas nombradas anteriormente son habilitadas por medio switches lo cuales vienen por defecto en la tarjeta desarrollo Terasic
DE2-115, estos switches deben se manipulados por el usuario.
Las salidas del proyecto van a ser visualizadas en un solo display siete segmentos de la tarjeta, el cual va mostrar la posición
de memoria seleccionada y el valor que se encuentra en esta posición, adicionalmente, el sistema está diseñado para poder
mostrar los datos que hay en cada unas de las posiciones de memoria, y así mismo, permite hacer un recorrido visualizando todos
los datos de la memoria durante cuatro segundos.
II. MARCO TEÓRICO

El presente informe se centra en ilustrar acerca de la construcción de una memoria en VHDL, resulta fundamental dar cuenta a
la definición. Empezando por identificar que las memorias están compuestas de un dispositivo más pequeño para almacenar un
dato que en este caso consisten en un flip-flop, asimismo las memorias tienen unos términos definidos para poder acceder al uso
de estas, la cuales se conocen como: ​mapa de memoria​, esto es,la distribución de la memoria, ya sea con un bloque interno que
puede dividir en diferentes secciones para cualquier uso, ​direcciones de memoria​, es un número que identifica la localización de
una palabra dentro de la memoria, ​lectura, se llama así a la operación que permite recuperar los datos almacenados en una o
varias direcciones de memoria, ​escritura, ​es la operación que permite almacenar una serie de palabras dentro de la memoria, estos
pueden ser datos o instrucciones y por último como concepto de las memorias, es el ​tiempo de acceso​, el cual es la medida de
velocidad de respuesta de la memoria es decir el tiempo que transcurre entre que la memoria recibe una dirección y en que el dato
sea válido en la salida.
También las memorias tienen una capacidad de retención, el cual puede ser la ​memoria volátil o la ​memoria no volátil​, donde
la ​memoria volátil requiere la aplicación de una corriente eléctrica para almacenar o grabar la información y además para
mantener esos datos válidos dentro de las células de memoria, y la memoria no volátil​, que no necesita de una corriente eléctrica
para mantener válidos los datos dentro de las células de memoria, además se encuentran diferentes modos de acceso a las
memorias ya sea la RAM(Random-Access Memory), SAM(Sequential-Access Memory) o DAM(Direct Access Memory).
Donde RAM Dispositivo en el cual la localidad actual de memoria no tiene efecto sobre el tiempo que toma la lectura o
escritura, SAM Dispositivo de memoria en el cual el tiempo de acceso depende de la localidad de memoria y DAM Memoria de
acceso directo o semi-aleatorio, es un tipo de memoria que combina el acceso RAM y SAM.

Memoria
III. DISEÑO DEL SISTEMA
A Continuación, en la figura 1 se observa el diagrama en bloques que se implementó para este proyecto, el cual está
conformado de nueve bloques internos, además se pueden observar las señales de entrada y salidas del sistema las cuales se
analizan más adelante.

Fig. 1. Diagrama en bloques general

A. Descripción de Bloques
MEMORIA​: Es el bloque de array de registros donde se guardaran un máximo de 8 datos, ya que el bus de dirección es de 3 bits
(111). Este bloque recibe dos señales, enable y reset provenientes del bloque de control que le permiten habilitarlo o reiniciarlo en
un momento dado, está conectado a la entrada ​data_in de la cual recibe el dato ingresado para almacenarlo. Adicionalmente está
conectado con el bloque decodificador al cual le envía el dato almacenado.

Fig. 2. diagrama esquemático de memoria.

P_P DIRECCIÓN: ​Registro paralelo-paralelo temporal que guardará la dirección ingresada por el usuario para luego leer o
escribir en ella, tiene un tamaño de 3 bits y al igual que el bloque ​memoria, ​recibe las señales de enable y reset del bloque de
control las cuales cumplen las mismas funciones expuestas anteriormente, está conectado a la entrada ​data_in ​de la cual recibe la
dirección en la cual se desea almacenar o visualizar el dato correspondiente, además está conectado con el bloque memoria al cual
le debe enviar la dirección.
Fig. 3. diagrama esquemático de dirección.

CONTADOR 1: ​Cuando se deseé realizar la visualización en modo continuo, es decir, la señal de entrada c_an se encuentre en
´1´ indicando el despliegue continuo de datos en la memoria, este contador realizará el conteo hasta 500 ms el cual es el tiempo
asignado para la visualización de cada dato, este bloque recibe las señales de enable y reset de control y envía una señal a control
indicando que se ha cumplido el tiempo necesario.

Fig. 4. diagrama esquemático de contador 1.

CONTADOR 2: ​Al igual que el contador 1, este contador debe funcionar cuando se deseé la visualización por despliegue
continuo de datos en la memoria pero este cumple la función de llevar el conteo de los datos visualizados, es decir, es el
encargado de que se realice el barrido correctamente en la memoria y recibe las señales de enable y reset de control y envía una
señal a control indicando que se ha completado el barrido en la memoria.
Fig. 5. diagrama esquemático de contador 2.

DECODIFICADOR: ​Este último bloque convierte el dato o la dirección de 4 bits provenientes de la memoria en un bus de 7 bits
para la visualización en hexadecimal en el display siete segmentos.

Fig. 6. diagrama esquemático de decodificador.

CONTROL: ​Se encarga de gestionar todo el proceso, en cuanto a la habilitación de bloques y redirección de información entre
los procesos, además de ser capaz de reiniciar los mismos, sus señales de entrada y salida tienen las siguientes funcionalidades:
● Recibe la señal de ​reset​ que permite reiniciar el sistema en cualquier momento.
● Recibe la señal de ​CLK ​qué es la base de tiempo en la cual funciona el sistema.
● Recibe la señal ​c_an l​ a cual indica el modo de visualización de los datos almacenados en la memoria.
● Recibe la señal ​ok p​ ara indicar que se desea ingresar dirección o dato, leer dato en la dirección o iniciar despliegue.
● Recibe la señal ​w_dn ​que indica el modo de operación, escribir o leer y visualizar dato.
● Envía señales de ​enable/reset ​a los bloques memoria, P-P dirección, Contador 1, Contador 2 y controla los led_Adress y
led_Data de tal manera que, se enciendan en el momento indicado, es decir, cuando se visualice o el sistema esté
disponible para recibir una dirección o un dato.

Fig. 7. diagrama esquemático de control.

MUX: ​Es un multiplexor el cual está diseñado hacia el usuario, ya que este bloque le permite seleccionar a al usuario si desea ver
en el display siete segmentos en que posición de la memoria se encuentra o qué datos hay en cualquier posición.
Fig. 8. diagrama esquemático de mux.

ANTI REBOTE: ​Este bloque permite eliminar el ruido de la señal de entrada del interruptor de la tarjeta, donde esta señal
entrada viene siendo OK, el cual permite ir de un estado a otro lo cual es importante que el antirebote ayude absorbiendo las
transiciones rápidas del interruptor y así generando señales del OK de manera correcta.

Fig. 9. diagrama esquemático de anti rebote.

MUX-DIRECCIÓN:​Para poder realizar un despliegue dinámico de todas las posiciones de las memoria u observar dato por
posición de manera manual, se realiza este multiplexor el cual está encargado de leer un activo o bajo de un switch para así poder
realizar una visualización dinámica o manual.

Fig. 10. diagrama esquemático de mux-dirección.


B. Máquinas de estados
La FSM permite observar cuál va a ser el comportamiento del proyecto pasando de un estado a otro, el cual está divido en tres
procesos, donde el primero va ser que lectura del dato de entrada y almacenarlo en la posición de memoria que se desea guardar,
como se observar en la figura 11.

​Fig. 11. FSM almacenamiento de datos en memoria.

La figura 11 muestra la funcionamiento del proyecto para almacenar un dato en la memoria en cualquier posición que se
desee guardar, por lo cual en el estado cero está a la espera de un Ok negado y w_dn=1,lo cual es un switch en serie , el cual es un
click sobre el pulsador de la tarjeta de desarrollo, una vez se aprieta el pulsador se pasa al estado uno el cual queda a la espera de
introducir un dato en la posición de memoria seleccionada, para esto el usuario tendrá un led le indica cuando debe introducir el
dato, que en el caso de la figura 11 es la variable led_Data=1, qué significa led encendido, para el estado dos se procede cuando
se introduce dato y se oprime OK negado, por lo cual en este estado ya se guarda el dato en la memoria y se pasa al tercer estado
el cual activa el control de memoria y retorna a estado inicial cero.
Una vez se guardan los datos, si el usuario desea observar los datos que están dentro de la memoria el sistema lo permite
mediante la FSM que se observa en la figura 12.
Fig. 12. FSM lectura de datos en memoria.

El modo lectura está compuesto de tres estados,como se observa en la figura 12,así que, el estado cero está a la espera de un
OK negado y los switch en abierto entregando así un w_dn=0 y c_an=0, al cumplir esa condición se procede al estado cuatro,
donde el usuario conoce que está en estado cuatro cuando el led_address está en ON, el cual aguarda hasta que se seleccione un
posición que se desea observar y luego se procede a oprimir un OK negado, para así dirigirse al estado 5 el cual apaga el
led_address y enciende el led_Data, lo cual indica que control_memoria=1,lo cual significa que control envía una señal a
memoria y para así enseñar el dato en en los display de visualización.

Fig. 13. FSM lectura de datos continuamente en memoria.

La figura 13, muestra el FSM para realizar un despliegue continuo de los datos almacenados en la memoria durante 500 ms
para cada uno, para el usuario poder seleccionar esta visualización, se tiene que activar el switch de c_an=1, así se procede al
sexto estado el cual habilita los contadores para así ir mostrando cada dato durante 500 ms y así realizar el despliegue continuo de
los datos.
Fig. 14. FSM general de proyecto.

IV. PRUEBAS DE FUNCIONAMIENTO


Una vez se ha llevado a cabo la implementación del sistema en VHDL, se realiza el siguiente protocolo de pruebas para las
funciones principales del sistema con el fin de determinar el correcto funcionamiento según las especificaciones requeridas y el
diseño planteado tanto en diagrama en bloques como en máquina de estados finitos, a continuación se realizará la comprobación
mediante el uso del simulador ​ModelSim​.
1. Modo escritura:
Para ingresar un dato y almacenarlo, se debe seleccionar o colocar en ´1´ el switch de la tarjeta asignado a la señal w_dn, el
sistema debe mostrar mediante un LED que se debe ingresar la dirección correspondiente a través de los switchs de la tarjeta y al
mismo tiempo, se debe visualizar en el siete segmentos la dirección ingresada, posteriormente, se oprime el pulsador de la señal
ok l​ a cual permite almacenar en el registro ​P-P dirección l​ a dirección. A continuación, el LED debe encenderse e indicar que se
debe almacenar el dato y nuevamente mediante el pulsador de ​ok ​se debe almacenar en la dirección ingresada anteriormente. Para
determinar que se está realizando bien el proceso anteriormente mencionado, mediante el uso de ModelSim, se diseña un
testbench que permita comprobar el funcionamiento en el cual se activa la señal w_dn durante un tiempo y posteriormente se
realiza una posible combinación de 3 bits para la dirección se activa la señal de ​ok y se realiza otra posible combinación de 4 bits
para el dato que se desea almacenar y nuevamente se activa la señal de ​ok​ para indicar que se almacene el dato.

2. Modo lectura continua:


En este modo de lectura, se debe seleccionar mediante el switch asignado a la señal ​c_an, ​para ello es necesario colocar el switch
en ´1´ y posteriormente oprimir el pulsador asignado a la señal de ​ok ​para iniciar el despliegue continuo de datos almacenados en
la memoria, los ocho datos serán mostrados durante cuatro segundos. En el testbench se activa la señal de ​c_an, ​posteriormente se
activa la señal de ​ok ​y se realiza la simulación del barrido en la memoria.

3. Modo lectura por dirección:


En este modo de visualización, se coloca el switch de la tarjeta asignado a la señal ​w_dn en ´0´ para indicar que el sistema va a
estar en modo lectura, adicionalmente la señal ​c_an debe estar en bajo para realizar la visualización de la dirección ingresada, se
oprime el pulsador correspondiente a la señal de ​ok ​y el sistema muestra mediante el LED asignado que se debe ingresar la
dirección, una vez ingresada la dirección, esta se debe visualizar en el siete segmentos, posteriormente se debe oprimir el pulsador
de la señal de ​ok para mostrar el dato almacenado en dicha dirección de la memoria y a la vez se indica mediante el LED la
presencia del dato en el display siete segmentos.

V. RESULTADOS DE SIMULACIÓN

1. Modo escritura:
Como una primera aproximación para comprobar que si se estuviera llevando a cabo el proceso mencionado anteriormente en el
modo de escritura, se realiza la siguiente simulación en ​ModelSim e​ n la cual es posible observar que se establece el ​CLK d​ el
sistema en 20 ns como base de tiempo del sistema, la señal de​ reset​ y ​ok p​ ermanecen inactivas en alto.

Fig. 15. Simulación modo escritura.

En la figura 15 ​se observa que el sistema se encuentra en espera de que la señal ​w_dn ​sea activada para colocar el sistema en
modo escritura, cuando esto ocurre, se activa la señal del ​Led_Address indicando que el sistema está disponible para recibir la
dirección en este caso ‘0000’, esta entrada como se puede observar, siempre se está mostrando en el display y al activar la señal
de ​ok ​colandola en bajo, el sistema cambia de estado y enciende la señal de ​Led_Data ​indicando que está disponible para recibir
el dato el cual es almacenado cuando se vuelve a activar la señal ​ok y​ asi mismo, se visualiza en el display en el proceso de
almacenamiento.

2. Modo lectura continua:

3. Modo lectura por dirección:


En este modo de lectura, se tiene en cuenta que se debe seleccionar el modo de visualización mediante la señal ​c_an e​ n bajo,
como se puede observar en la siguiente figura 16 ​la señal asignada en el tesbench ​c_an_tb p​ ermanece en ‘0’ indicando este modo
de visualización :
Fig. 16. Simulación modo lectura por dirección.

En la figura 16 se puede observar que la primera vez que se activa la señal ​ok_tb, ​una vez esta señal es desactivada se pone en alto
la señal de ​led_address_tb ​indicando que se debe ingresar la dirección que se desea mostrar. Al dejar la dirección ‘0000’ y al
volver a activar la señal de ​ok_tb se puede visualizar que igualmente cuando esta se desactiva, la señal de ​led_data_tb s​ e activa al
mismo tiempo que el dato es visualizado en el display. Finalmente cuando se vuelve a activar la señal ​ok_tb y​ a sea para visualizar
un dato en otra dirección o cambiar de modo en el display se visualiza un ‘0’ al salir de este modo e igualmente se puede observar
que tanto la señal de ​led_data_tb ​como la de ​led_address_tb permanecen inactivas y el sistema vuelve a su estado inicial de
espera.
Luego se ingresa un nuevo dato y se vuelve a visualizar siguiendo el procedimiento anteriormente mencionado.

VI. CONCLUSIONES
El desarrollo de esta primera parte del proyecto permitió entender mejor el funcionamiento de lectura y escritura en un
procesador y cómo estas funciones son esenciales para el funcionamiento de este, cabe resaltar que es indispensable diseñar e
implementar el sistema
El diseño de una memoria VHDL permite entender a escala el funcionamiento de un memoria orientado hacia un
computador,también entender diferentes aspectos como el proceso de visualización de datos o la introducción de estos.
REFERENCIAS
[1]
https://hardzone.es/2018/06/17/ram-single-dual-quad-channel-significado-ventajas/
https://www.academia.edu/4994934/Implementaci%C3%B3n_de_Memorias_RAM_en_dispositivos_FPGA