Cel03 P11 Eq8

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

UNIVERSIDAD AUTÓNOMA METROPOLITANA

AZCAPOTZALCO

División de C.B.I.
Departamento de Electrónica

LABORATORIO DE DISEÑO LÓGICO

PRÁCTICA No. 11.


“MEMORIAS RAM”
Equipo 8

Integrantes:
González Gutiérrez Jose Alfredo 2192004249
Muñoz Anzures José Manuel 2182004808
Sánchez Alonso Israel 2203031512

Profesor:
Sánchez Rangel Francisco Javier

Grupo: CEL03
Trimestre: 21 - O
Fecha de entrega: 29 - Enero – 2022.
OBJETIVOS:
1. Conocer el funcionamiento de las memorias RAM.
2. Diseñar en VHDL una memoria RAM.

MARCO TEÓRICO.
Describir que es una memoria RAM.
Es aquella que acepta información nueva y la almacena para usarla después. El
proceso de almacenamiento de información nueva en la memoria se le conoce como
operación de escritura en memoria. El proceso de transmisión de la información
almacenada en la memoria se le conoce como lectura de la memoria.
La información binaria se almacena en la memoria en grupo de bits, que se llaman
palabras. Una palabra es una entidad de bits que entra y sale de la memoria como
unidad.
Un grupo de unos y ceros puede representar:
1. Un número.
2. una instrucción.
3. uno o varios caracteres alfanuméricos.
4. u otra información codificada en binario.
Un grupo de ocho bits se llama byte. La mayor parte de las memorias emplean
palabras que son múltiplos de ocho bits. Generalmente, la capacidad de una unidad
de memoria se indica como la cantidad de bytes que puede almacenar.

Diagrama a bloques de una memoria RAM.


La comunicación entre una memoria y su medio ambiente se logra por medio de:
•Líneas de entrada y salida de datos,
•Líneas de selección de dirección
•Líneas de control que indican la dirección de la transferencia de la información.

Diagrama de una memoria RAM.

Operación de escritura.
1. Aplique la dirección binaria de la palabra deseada a las líneas de dirección.
2. Aplique los bits de datos que deben almacenarse a las líneas de entrada de datos.
3. Active la entrada Write.

Diagrama de bloques de la escritura de una memoria RAM.


Operación de lectura.
1. Aplique la dirección binaria de la palabra deseada a las líneas de dirección.
2. Active la entrada Read.

Diagrama de bloques de la lectura de una memoria RAM.

Entradas de control de un chip de memoria.

Entradas de control de una memoria.

Celda de RAM estática.


Modelo de Rebanadas de Bits de RAM.

Chip de RAM de 16 palabras por 1 Bit.


Búfer de tres estados.

Búfer de tres estados que forman una línea Multiplexada de OL.

Mencionar los distintos tipos de memorias RAM que existen y comentar cómo
funcionan.
Según las operaciones permitidas sobre la memoria:
De sólo lectura:
Las cuales son un medio de almacenamiento utilizado en ordenadores y dispositivos
electrónicos, que permite solo la lectura de la información y no su escritura,
independientemente de la presencia o no de una fuente de energía.
ROM (read-only memory)
• PROM (Programmable read-only memory)
• EPROM (Erasable programmable read-only memory)
• EEPROM (memoria programable y borrable eléctricamente solo de lectura.)
De lectura y escritura:
La memoria de lectura-escritura es un tipo de memoria de computadora en la que
se puede escribir y de la que se puede leer con relativa facilidad, es decir, utilizando
señales eléctricas normalmente asociadas a la ejecución de un software, y sin
ningún otro proceso físico. El término relacionado RAM (para "memoria de acceso
aleatorio") significa algo diferente; se refiere a la memoria que puede acceder a
cualquier lugar de la memoria en una cantidad de tiempo constante.
El término también podría referirse a las ubicaciones de memoria que tienen
permisos de lectura y escritura. En los sistemas informáticos modernos que utiliza
la segmentación de la memoria, cada segmento tiene una longitud y un conjunto de
permisos (por ejemplo, lectura, escritura, ejecución) asociados a él.
RAM (memorias de acceso aleatorio)
• SRAM (Estática)
• DRAM (Dinámica)
Según la estabilidad de la información almacenada:
Volátiles:
La información almacenada en la memoria se pierde al cortar la alimentación.
Ejemplo: RAM.
No volátiles:
Retienen la información aún sin alimentación, el contenido es memorizado sin
consumo energético. Ejemplo: ROM.
Según el soporte físico de almacenamiento:
Eléctrico: Memorias de semiconductores estáticas (biestables) y dinámicas
(condensadores).
Magnético: Disquetes. Discos Duros.
Óptico: CD y DVD.
Mecánico: Tarjetas perforadas.
DESARROLLO TEÓRICO.
Diseñe en VHDL una Memoria RAM de 16x8, la memoria debe tener salida con
buffers de tres estados.
El diagrama a bloques de la memora RAM se muestra en la Figura no. 1.

Basándonos en el diagrama a bloques de la memoria RAM podemos definir lo que


son las entradas en las cuales tenemos Din de 8 bits, lo mismo que los datos de
salida son de 8 bits, para poder direccionar estas localidades de memoria
necesitamos 4 bits de direcciones que sería otra entrada (adrs) por que 2 4 = 16, un
reloj como entrada (CLK), re para la operación de escritura y we para la operación
de lectura. Esto lo podemos declarar en la entidad.
Posteriormente como deben de desplegar en los displays de 7 segmentos debemos
de utilizar componentes el código para este es el siguiente:
library ieee;
use ieee.std_logic_1164.all;
entity Display is
port(Bin: in std_logic_vector(3 downto 0);
Seven: out std_logic_vector(6 downto 0));
end Display;
architecture Display_arch of Display is
begin
with Bin select
Seven <= "1000000" when "0000",
"1111001" when "0001",
"0100100" when "0010",
"0110000" when "0011"
"0011001" when "0100",
"0010010" when "0101",
"0000010" when "0110",
"1111000" when "0111",
"0000000" when "1000",
"0010000" when "1001",
"0001000" when "1010",
"0000011" when "1011",
"1000110" when "1100",
"0100001" when "1101",
"0000110" when "1110",
"0001110" when others;
end Display_arch;
Para el programa principal primeramente definimos las bibliotecas a utilizar las
cuales son las siguientes:

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; --Para el incremento del contador del divisor de
frecuencia
use ieee.numeric_std.all; --Para poder utilizar el tipo de datos array.
Posteriormente declaramos la entidad conforme a lo que mencionamos al principio:
entity R is
port (CLK: in std_logic;
we,re: in std_logic;
ADRS: in std_logic_vector(3 downto 0);
Din: in std_logic_vector(7 downto 0);
Dout: buffer std_logic_vector(7 downto 0);
Display_ADRS,Display_Dat: out std_logic_vector(6 downto 0);
Display_A: out std_logic_vector(6 downto 0):="0001000";
Display_D: out std_logic_vector(6 downto 0):="0100001");
end R;
En la arquitectura antes del begin declaramos un nuevo tipo de dato el cual es un
array, así como también la señal mem: memtype y una señal para la memoria de
salida de datos.
También determinamos señales para los displays y decodificador de binario a 7
segmentos, por últimos las señales del reloj de 1 Hertz aproximadamente y un
Divisor de frecuencia para utilizar en la tarjeta DE2.
Después del begin declaramos lo que es el divisor de frecuencia tal y como lo hemos
hecho en prácticas anteriores. Posteriormente vamos con la memoria RAM, al
momento de la subida del reloj si se abilita el we=’1’ a la localidad de memoria
direccionada por el bus de direcciones se le carga el dato de entrada, pero este bus
de direcciones se convierte a un entero sin signo por que se declaró std_logic. La
señal de salida mout se le asigna al buss de datos de salidas, se cierran procesos
anteriores para posteriormente al dato de salida se le asigna el dato que está en la
localidad de memoria del bus de direcciones ADRS cuando está habilitado “re”.
Con instanciación se codifican los displays para poder mostrar en la tarjeta DE2.
El código de la arquitectura en general sería el siguiente:

architecture R_arch of R is
type memtype is array (0 to 15) of std_logic_vector(7 downto 0);
signal mem: memtype;
signal mout: std_logic_vector(7 downto 0);

signal ADRS_al: std_logic_vector(3 downto 0);


signal Display_Dat_A1: std_logic_vector (6 downto 0);

signal Reloj: std_logic;


signal Div: std_logic_vector(25 downto 0);

component Display is
port(Bin: in std_logic_vector(3 downto 0);
Seven: out std_logic_vector(6 downto 0));
end component;
component Displays is
port(Bin: in std_logic_vector(7 downto 0);
Seven: out std_logic_vector(6 downto 0));
end component;

begin
Divisor de frecuencia

process(CLK)
begin
if CLK 'event and CLK='1' then
Div <= Div + 1;
end if;
end process;

Reloj <= Div(25);

--Memoria RAM

process (CLK)

begin
if CLK 'event and CLK = '1' then
if we = '1' then
mem(to_integer(unsigned(ADRS))) <= Din;
end if;
Dout <= mout;
end if;
end process;

mout <= mem(to_integer(unsigned(ADRS))) when re='1' else (others=>'0');

ADRS_al <= ADRS;

--Display

Display0: Display port map (ADRS_al,Display_ADRS);


Display1: Displays port map (Dout,Display_Dat_A1);

Display_Dat <= Display_Dat_A1 when re = '1' else "1111111";

end R_arch;
DESARROLLO EXPERIMENTAL.
Implemente en VHDL la memoria RAM diseñada y compruebe su
funcionamiento. La dirección y el dato de salida de la memoria RAM se deben
desplegar en los displays de la tarjeta de desarrollo DE2.
Una vez empleadas las bases se procedió realizar el diseño de nuestro programa,
donde en primera instancia se declara nuestro componente, pues se aprecia la
implementación de la biblioteca, la identidad, donde se declara la biblioteca ieee así
como en la arquitectura, además el std_ logic_vector. Posteriormente como deben
de desplegar en los displays de 7 segmentos debemos de utilizar componentes el
código para estos son los siguientes.

Imagen 1.1.- Programa del diseño de la Memoria RAM.


Posteriormente nuestro programa principal, donde se introducen las bibliotecas y el
numeric_std, por los tipos de datos a usar, además de los displays a emplear,
además de las señales que se usaron, entradas y salidas a declarar, así como la
arquitectura y el divisor de frecuencia. Este diseño se muestra a continuación.

Imagen 1.2.- Programa Completo del diseño de la Memoria RAM.


Posteriormente se revisó el circuito lógico que se obtuvo en el cual se aprecia como
está conformado, donde se aprecia las entradas y las salidas, así como también,
los el bloque de la memoria, además de los MUX utilizados, nuestros bloques
displays, tam bien nuestro registro de 8 bits y los demás elementos que lo
conforman, este se muestra a continuación.

Imagen 1.3.- Circuito FPGA o RTL del diseño de la Memoria RAM.

Luego, como decodificador


se hizo usodedeBinario a 7 segmentos.
nuestra memoria, se reviso como esta conformada esta
pues al abrirla podemos apreciar su estructura y esos bloques que la conforman.

Imagen 1.4.- Circuito FPGA o RTL donde se muestra cómo se conforma


la Memoria RAM.
Similarmente se realizó lo mismo para los display, pues al abrirlos se puede ver
como esta conformado por los MUX y este aplica para ambos componentes pues
son iguales.

Imagen 1.5.- Circuito FPGA o RTL donde se muestran los MUX del Display de la Memoria RAM.

Posteriormente se realiza la simulación de comprobación donde damos el valor al


reloj, donde puede hacer variar el reloj dependiendo el lapso que sea conveniente,
pues se aprecian las salidas y los elementos para el display. Después se realiza la
simulación donde apreciamos que los datos empleados son los correctos, esto se
muestra a continuación.
Imágenes 1.6.- Simulación DHL del diseño de la Memoria RAM.
Finalmente se realiza la asignación de pines para cada una de las entradas y salidas
que se usaron, con ayuda del manual de pines, para así poder obtener nuestro
archivo sof, para poder hacer uso de la tarjeta DE2, en la cual verificaríamos si este
diseño funcionaba adecuadamente.

Imágenes 1.7.- Asignación de pines del diseño de la Memoria RAM.


Usando la tarjeta DE2 pudimos verificar el funcionamiento de nuestro diseño En la
imagen apreciamos nuestra memoria funcionando pues podemos apreciar en un
display, en uno se aprecia el ADRS, mientras que en el otro se aprecia el dato, en
la imagen apreciamos al ADRS en estado 3, mientras que en el de dato vemos el F
en estado 3.

Imágenes 1.8.- Resultado usando la tarjeta DE2 del diseño de la Memoria RAM.

MATERIAL Y EQUIPO.
• Computadora PC.
• Software Quartus II.
• Tarjeta de desarrollo ALTERA DE2.

BIBLOGRAFÍA Y/O PÁGINAS WEB.


• MANO, KIME; “FUNDAMENTOS DE DISEÑO LÓGICO Y DE COMPUTADORAS”;
3ª EDICIÓN; ED. PEARSON 2005.
• MAXINEZ, ALCALÁ; “VHDL: EL ARTE DE PROGRAMAR SISTEMAS
DIGITALES”; ED. CECSA 2010.
• SÁNCHEZ RANGEL; NOTAS DEL CURSO DE DISEÑO LÓGICO.
• SCHNADOWER; “FUNDAMENTOS DE DISEÑO DIGITAL Y VHDL”; UAM 2013.
• QUARTUS II HANDBOOK VERSION 13.0, VOLUME 1: DESIGN AND
SYNTHESIS; ALTERA 2013.
• DE2 DEVELOPMENT AND EDUCATION BOARD, USER MANUAL; ALTERA
2012.

CONCLUSIONES.

González Gutiérrez Jose Alfredo.


En esta práctica se conoció el funcionamiento de las memorias de acceso aleatorio
(RAM) las cuáles se caracteriza por almacenar nueva información binaria dentro de
un conjunto de palabras conformadas por n bits (regularmente se utiliza múltiplos
de ocho bits) , a este proceso se le denomina escritura, una vez guardados los datos
es posible consultarlos al activar la operación de lectura, no obstante estás
memorias poseen el inconveniente de que si se les corta el suministro de energía la
información resguardada se perderá.
Es de suma importancia tener en cuenta que los datos gestionados por la RAM
pueden representar: instrucciones, números, alguna codificación en binario o
caracteres alfanuméricos.
No hay que perder de vista que estas memorias consisten en una integración a gran
escala puesto que internamente contienen un cierto número de flip flops conectados
a compuertas lógicas con la finalidad de almacenar los bits, asimismo es
conveniente añadir decodificadores a fin de acceder a cada una de las direcciones
de memoria, de esta manera se podrá ejecutar alguna de las dos operaciones,
siempre y cuando se habilite el selector del chip.
Ciertamente resulta conveniente representar a la RAM por medio de un bloque que
en primera instancia específica la capacidad de la memoria señalando el número de
palabras como 2^k de n bits por registro, acompañado de las señales R/W', CS
seguidas de los buses de direcciones, entrada y salida de datos.
Ahora bien en lo que respecta al diseño de la RAM en VHDL, previamente surge la
necesidad de analizar los arreglos, debido a que estos facilitan declarar un nuevo
tipo de dato con ciertas características específicas, para este caso en particular la
nueva herramienta permite establecer mediante líneas de código la capacidad de
almacenamiento, dado que se indican el número de palabras seguido del tamaño
de ellas afín de crear una señal con las cualidades anteriormente mencionadas,
adicionalmente es obligatorio añadir el paquete use ieee.numeric_std.all puesto
que las direcciones de memoria deben ser convertidas a enteros sin signo, en
general para completar el desarrollo de la memoria se deben agregar algunas
señales, postulados PROCESS y si el diseño lo requiere las instanciaciones
correspondientes.
Con los nuevos conocimiento adquiridos fue posible realizar el diseño del proyecto
propuesto en esta práctica, el cuál fue muy representativo ya que en un principio
cuando se estudió la teoría tanto el concepto de palabra, escritura y lectura
resultaban sencillos de comprender, sin embargo muy abstractos, cabe recalcar que
eso se soluciona al momento de contemplar la funcionalidad de la memoria una vez
que se cargó el archivo.sof a la tarjeta de desarrollo ALTERA DE2, por ende fue
muy fácil asimilar la escritura de los bits en cada una de las direcciones de memoria
puesto que todo se veía reflejado en los displays de 7 segmentos, lo mismo se
cumple para la escritura a la que se le añadieron buffers de tres estados.

Muñoz Anzures José Manuel


En la práctica se aprendo el funcionamiento de las memorias RAM, pues como
vimos con aquellas que acepta información nueva y la almacena para usarla
después. El proceso de almacenamiento de información nueva en la memoria se le
conoce como operación de escritura en memoria. El proceso de transmisión de la
información almacenada en la memoria se le conoce como lectura de la memoria.
Así como que las memorias emplean palabras que son múltiplos de ocho bits.
Generalmente, la capacidad de una unidad de memoria se indica como la cantidad
de bytes que puede almacenar.
Considerando de los datos gestionados por la RAM pueden representar números,
alguna codificación en binario o caracteres alfanuméricos, además de que la
información binaria se almacena en la memoria en grupo de bits, que se llaman
palabras. Una palabra es una entidad de bits que entra y sale de la memoria como
unidad.
Esto nos ayudó para la elaboración de nuestro diseño, pues se hizo uso de lo ya
mencionado, además de tomar en cuenta las operaciones de escritura y lectura de
las memorias RAM. Además, se tomaron en cuenta algo de lo aprendido de los flip
flop. En esta práctica nos basamos n el diagrama presentado, así como se pudo
determinar las entradas las cuales son Din de 8 bits, igual para las salidas,
considerando los 4 bits de direcciones, la entrada ADRS y de reloj (CLK), además
de re de escritura y we para la lectura. Así como los displays de 7 segmentos.
También se declaró un nuevo tipo de dato el cual es un array, así como también la
señal mem: memtype y una señal para la memoria de salida de datos. Luego se
determinó señales para los displays y decodificador de binario a 7 segmentos, por
últimos las señales del reloj de 1 Hertz aproximadamente y un Divisor de frecuencia
para utilizar en la tarjeta DE2, este último se usó como en prácticas anteriores.
Una vez obtenidos los diseños de cada uno de los ejercicios se procedió a obtener
el circuito lógico de cada uno, en donde aprecio los elementos que los componían,
posteriormente se hizo la simulación de comprobación donde ahí se le daba el lapso
a nuestra entrada CLK, así mismo se realizó la asignación de pines las cual se logró
con el catálogo de pines propuesto, finalmente se obtuvo el archivo .sof el cual
reproduciríamos en la tarjeta DE2 Altera la cual fue proporcionada por el profesor,
en nuestro caso tuvimos unas complicaciones al momento de ejecutarlo pues aun
cuando el diseño era correcto se tuvo dificultades a la hora de poder mostrar lo
requerido en los displays.

Sánchez Alonso Israel


Esta práctica se trató sobre lo que todos hemos escuchado alguna vez, se trata de
las memorias RAM pero posiblemente lo que no sabíamos es su significado esto es
“Memoria de acceso aleatorio” recordamos que esta memoria RAM adquiere
información nueva y la almacena para utilizarla después, para almacenar esta
información se lleva a cabo un proceso llamado operación de escritura en memoria
y así como hay un proceso de escritura también hay un proceso determinado para
la transmisión de la información almacenada al cual se le denomina como lectura
de la memoria.
Además, se aprendió como es que funcionan estas memorias, así como también el
cómo representarlas mostrando un diagrama de bloques en donde pudimos notar
que contiene el tamaño de la memoria representado como 2k, un buss de n líneas
de entrada de datos, así como también le corresponde un buss de n líneas de salida,
buss de direcciones para seleccionar a una localidad de memoria y los procesos de
Read y Write que nos indican si va a leer o escribir.
En si para esta práctica debimos de tener en cuenta claramente algunos de los
conocimientos que adquirimos en las practicas anteriores ya que se utilizan los flip
– flops así como también las compuertas básicas para el diseño de estas.
Posteriormente seguimos aprendiendo cosas nuevas al momento de realizar una
memoria RAM que se solicitaba en la presente práctica, utilizando el programa
VHDL se utilizaron principalmente bibliotecas nuevas o más bien utilizadas por
primera vez en el curso como lo es use ieee.numeric_std.all; la cual se declara para
poder utilizar el tipo de datos array lo cual también es algo que se utilizó por primera
vez el cual está formado por múltiples elementos del mismo tipo, o también pueden
considerarse como vectores por esta misma razón, estos vectores ya hemos
utilizado anteriormente, así como también aprendimos a declararlos en dicho
programa.
Algo que fue un poco más notorio a comparación de otras prácticas y diseños de
circuitos realizados anteriormente fue la declaración de varias señales todo estos
para ir generando la memoria y aún más aparte por que debían de mostrar en los
displays de 7 segmentos, ciertamente la elaboración de la memoria no fue tan
complicada, personalmente el representar esta memoria en los displays de 7
segmentos fue lo más complicado de hecho fue en lo único que se falló y esto se
pudo notar al momento de poner a prueba cada una de nuestras memorias en la
tarjeta DE2 de Altera después de generar el código y asignar los pines para así
poder generar el archivo .sof el cual se baja por el profesor.
A pesar de esto pudimos ver cual debía ser el correcto funcionamiento de estos
displays que representaban lo que es la memoria RAM diseñada, esto hizo que
fuera aún más llamativo e interesante de lo que ya era.

También podría gustarte