Cel03 P11 Eq8
Cel03 P11 Eq8
Cel03 P11 Eq8
AZCAPOTZALCO
División de C.B.I.
Departamento de Electrónica
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.
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.
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.
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);
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;
--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;
--Display
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.5.- Circuito FPGA o RTL donde se muestran los MUX del Display de la Memoria RAM.
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.
CONCLUSIONES.