Práctica Memorias
Enviado por lalo939393 • 26 de Noviembre de 2013 • 2.139 Palabras (9 Páginas) • 376 Visitas
UPIITA – IPN
Materia: Circuitos Lógicos
Reporte 7. “Memorias”
- González Vázquez Eduardo Daniel
- León Juan Javier
- Vargas Alanis Michell Guadalupe
Equipo #6
LEED
Grupo: 2MM4
Resumen
Se analiza el funcionamiento de las memorias RAM y ROM
Abstract
The functionality of the counters, using the different types and configurations that exist, with multiple examples involved from the toy’s area to more industrial applications so we can observed its versatility and potential to be used in almost any area.
Introducción
Memoria RAM
RAM proviene de ("Random Access Memory") ó memoria de lectura aleatoria: es un dispositivo electrónico que se encarga de almacenar datos e instrucciones de manera temporal, de ahí el término de memoria de tipo volátil ya que pierde los datos almacenados una vez apagado el equipo; pero a cambio tiene una muy alta velocidad para realizar la transmisión de la información.
Memoria ROM
La memoria ROM, es un circuito integrado programado con unos datos específicos cuando es fabricado. Los chips de características ROM no solo se usan en ordenadores, sino en muchos otros componentes electrónicos también. Hay varios tipos de ROM.
Tipos de ROM
Hay 5 tipos básicos de ROM, los cuales se pueden identificar como:
ROM
PROM
EPROM
EEPROM
Memoria Flash
Desarrollo
1.- Implementar en FPGA una memoria de acceso aleatorio RAM de 64 bits con un bus de direcciones de 3 bits y un bus de datos de 8 bits, con terminales de control chip select “CS” y modo lectura o escritura “RD/WR”.
Para el desarrollo de esta memoria se utilizará la tarjeta de desarrollo Nexys 3.
El programa en VHDL quedó de la siguiente manera:
--Programa que simula el funcionamiento de una memoria RAM
entity ram is
Port ( cs : in STD_LOGIC;--Entrada de chip select
clk : in STD_LOGIC;--Reloj interno de la nexys
rdwr : in STD_LOGIC;--Entrada de lectura o escritura
ab : in STD_LOGIC_VECTOR (2 downto 0);--Entradas del selector
c : in STD_LOGIC_VECTOR (7 downto 0);--Control para la escritura
db : inout STD_LOGIC_VECTOR (7 downto 0));--Bus de datos
end ram;
architecture Behavioral of ram is
begin
data:process(cs,ab,c,clk)
variable d: STD_LOGIC_VECTOR (7 downto 0):="00000000";--Salida inicializada
variable d1: STD_LOGIC_VECTOR (7 downto 0):="00000001";--Salida de selector 000
variable d2: STD_LOGIC_VECTOR (7 downto 0):="00000011";--Salida de selector 001
variable d3: STD_LOGIC_VECTOR (7 downto 0):="00000111";--Salida de selector 010
variable d4: STD_LOGIC_VECTOR (7 downto 0):="00001111";--Salida de selector 011
variable d5: STD_LOGIC_VECTOR (7 downto 0):="00011111";--Salida de selector 100
variable d6: STD_LOGIC_VECTOR (7 downto 0):="00111111";--Salida de selector 101
variable d7: STD_LOGIC_VECTOR (7 downto 0):="01111111";--Salida de selector 110
variable d8: STD_LOGIC_VECTOR (7 downto 0):="11111111";--Salida de selector 111
variable p: integer range 0 to 100000:=0;--Variable para divisor de frecuencia
begin
if clk'event and clk='1' then
if p=100000 then--Realiza el divisor de frecuencia
p:=0;
if cs='1' then--Se activa la memoria
if rdwr='1' then--Se selecciona modo lectura
if ab="000" then d:=d1;--Se despliega el dato según el selector
elsif ab="001" then d:=d2;
elsif ab="010" then d:=d3;
elsif ab="011" then d:=d4;
elsif ab="100" then d:=d5;
elsif ab="101" then d:=d6;
elsif ab="110" then d:=d7;
elsif ab="111" then d:=d8;
else d:="00000000";
end if;
else--Se selecciona modo escritura
if ab="000" then d1:=c;--Se modifica el dato seleccionado
elsif ab="001" then d2:=c;
elsif ab="010" then d3:=c;
elsif ab="011" then d4:=c;
elsif ab="100" then d5:=c;
elsif ab="101" then d6:=c;
elsif ab="110" then d7:=c;
elsif ab="111" then d8:=c;
end if;
end if;
else d:="ZZZZZZZZ";--Chip select en 0
end if;
else p:=p+1;
end if;
db<=d;
end if;
end process;
end Behavioral;
Asignación de pines:
net "ab(0)" loc="M8";//Switches para el bus de dirección
net "ab(1)" loc="N8";
net "ab(2)" loc="U8";
net "cs" loc="T5";//Switch de chip select
net "rdwr" loc="V8";//Switch modo lectura o escritura
net "db(0)" loc="U16";//Leds para mostrar la información
net "db(1)" loc="V16";
net "db(2)" loc="U15";
net "db(3)" loc="V15";
net "db(4)" loc="M11";
net "db(5)" loc="N11";
net "db(6)" loc="R11";
net "db(7)" loc="T11";
net "c(0)" loc="V9";//Switches para el control
net "c(1)" loc="T9";
net "c(2)" loc="T10";
net "c(3)" loc="C4";
net "c(4)" loc="B8";
net "c(5)" loc="D9";
net "c(6)" loc="C9";
net "c(7)" loc="A8";
net "clk" loc="V10";//Reloj de la Nexys
Los resultados se muestran en las figuras siguientes:
Figura 1.- Se muestran los datos de la memoria
Figura 2.- Se escriben datos en la memoria
2.- Implementar en FPGA, una memoria ROM de 96 bits, distribuidos
...