Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Grupo: 2MM15
Memoria RAM
Memoria ROM
Por otro lado, la constante de tiempo grande asociada con la larga pila de
transistores causa la memoria NAND ser más lento para acceder que su contraparte
NOR.
Fig. 1 (a) matriz de pseudo-nMOS 4 × 3 tipo NOR MP-ROM; (b) Pseudo-nMOS de tipo NAND equivalente
Conjunto de MP-ROM; (c) contenido de la memoria; (d) Implementación utilizando puertas convencionales.
Desarrollo
Memoria RAM
En la práctica el objetivo era, desarrollar una memoria RAM, la cual pudiera almacenar números
en código ASCCI, para posteriormente, mostrarlos en un display de 7 segmentos. A continuación,
en la ilustración1 se muestra el diagrama de bloques para el funcionamiento del sistema.
Utilizando una capacidad de memoria de 15 localidades, se utilizaron los switch para ingresar una
palabra en ASCII, un botón fue designado para cambiar la localidad a la que se ingresa y dos switch
son los encargados de seleccionar la modalidad de escritura o lectura.
Una vez ingresado el valor en la memoria, este se verá reflejado (ya sea en modo escritura o
lectura) en el display de 7 segmentos.
----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 31.10.2019 07:27:23
-- Design Name:
-- Module Name: RAM - Behavioral
-- Project Name:
-- Target Devices:
-- Tool Versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
entity RAM is
Port ( clk : in std_logic;
btn_in : in std_logic;
sw1: in std_logic_vector(3 downto 0);
sw2: in std_logic_vector(7 downto 0);
w:in std_logic;
r:in std_logic;
anod: out std_logic_vector(7 downto 0);
segm:out std_logic_vector(7 downto 0);
btn_out : out std_logic );
end RAM;
end if;
end if;
end process;
--------------------------------------------------------------------------
estado:process(btn,sw1)
begin
if (btn'event and btn='1') then
state<=sw1; -- LOCALIDAD
end if;
end process estado;
--------------------------------------------------------------------------
WR: process(state,w,r,sw2)
begin
case(state)is
when "0001"=>
if (w='1'and r='0') then
m1<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m1<=m1;
baff<=m1;
end if;
end if;
when "0010"=>
if (w='1'and r='0') then
m2<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m2<=m2;
baff<=m2;
end if;
end if;
when "0011"=>
if (w='1'and r='0') then
m3<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m3<=m3;
baff<=m3;
end if;
end if;
when "0100"=>
if (w='1'and r='0') then
m4<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m4<=m4;
baff<=m4;
end if;
end if;
when "0101"=>
if (w='1'and r='0') then
m5<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m5<=m5;
baff<=m5;
end if;
end if;
when "0110"=>
if (w='1'and r='0') then
m6<=sw2;
baff<=sw2; --- Escritura/lectura
else if(w='0'and r='1') then
m6<=m6;
baff<=m6;
end if;
end if;
when "0111"=>
if (w='1'and r='0') then
m7<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m7<=m7;
baff<=m7;
end if;
end if;
when "1000"=>
if (w='1'and r='0') then
m8<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m8<=m8;
baff<=m8;
end if;
end if;
when "1001"=>
if (w='1'and r='0') then
m9<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m9<=m9;
baff<=m9;
end if;
end if;
when "1010"=>
end if;
end if;
when "1100"=>
if (w='1'and r='0') then
m12<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m12<=m12;
baff<=m12;
end if;
end if;
when "1101"=>
if (w='1'and r='0') then
m13<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m13<=m13;
baff<=m13;
end if;
end if;
when "1110"=>
end if;
end if;
when "1111"=>
if (w='1'and r='0') then
m15<=sw2;
baff<=sw2;
else if(w='0'and r='1') then
m15<=m15;
baff<=m15;
end if;
end if;
when others=>
m1<=m1;
m2<=m2;
m3<=m3;
m4<=m4;
m5<=m5;
m6<=m6;
m7<=m7;
m8<=m8;
m9<=m9;
m10<=m10;
m11<=m11;
m12<=m12;
m13<=m13;
m14<=m14;
m15<=m15;
end case;
segmen: process(baff)
begin
anod<="10111111";
case(baff) is
when "00110000" =>segm<="00000011";--0
when "00110001" =>segm<="10011111" ;--1
when "00110010" =>segm<="00100101" ;--2
when "00110011" =>segm<="00001101" ;--3
when "00110100" =>segm<="10011001" ;--4
when "00110101" =>segm<="01001001" ;--5
when "00110110" =>segm<="01000001" ;--6
when "00110111" =>segm<="00011111" ;--7
when "00111000" =>segm<="00000001" ;--8
when "00111001" =>segm<= "00001001"; --9
when "01000001" =>segm<= "00010001"; --A
when "01000101" =>segm<= "01100001"; --E
when "01001001" =>segm<= "10011110"; --I
when "01001110" =>segm<= "00000010"; --O
when "01010101" =>segm<= "10000011"; --U
when others =>segm<= "11111111"; --U
end case;
end process segmen;
end Behavioral;
Memoria ROM
Para la realización de nuestra memoria ROM, se implementó un vector de 4 elementos para tener
acceso a las direcciones de memoria, así como de un vector compuesto de 15 elementos para
poder almacenar los 15 caracteres (vocales y números) .
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
end Behavioral;
Conclusiones
Terán León Fernando Rafael: Las memorias hoy en día son la base del almacenamiento de la
información para todo tipo de dispositivo electrónico, por lo cual son un elemento imprescindible
en nuestra vida hoy en día. Al implementar la lógica con la que trabajan las memorias ROM y RAM,
nos es posible poder implementarlas de manera física mediante circuitos lógicos combinacionales,
ya sea con compuertas AND, NAND u OR.
Fajardo Aguirre José Ignacio: Para el desarrollo de esta práctica, se utilizó un programa con base en
el funcionamiento combinatorio, creemos posible mejorar el sistema y código, la complejidad de
este radicó en la comprensión del funcionamiento como tal de las memorias para posteriormente
plasmarlo en el sistema
Castañedo Hernández Juan Eduardo: Con la culminación de esta práctica se entendió sobre los
diferentes tipos de memorias que puede haber, las funciones que desempeña cada una y la
importancia que tienen, así mismo se aprendió de manera satisfactoria el debido diseño y la manera
apropiada en la que cada una de estas debe de ser programada para su correcto funcionamiento.