1. SEP
DGEST
INSTITUTO
TECNOLÓGICO
DE
SNEST
MATAMOROS
DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
Diseño Digital con VHDL
Equipo:
Alumno(s):
Núm. de control:
Mario Arturo Cruz Colunga
11260077
Miguel Angel Fierros Peña
11260081
Hermenegildo Martínez de la Cruz
11260095
Jorge Alejandro Reyes Torres
11260108
H. MATAMOROS, TAM.
1 de Noviembre del 2013
2. Practica 9
Objetivo:
Utilizando la entidad de una memoria ROM, Realizar la implementación de un decodificador
de 3 a 8 donde las direcciones sean definidas por 3 SWs deslizables del basys 2 y la salida
sea mostrada con los LEDs.
Desarrollar una memoria ROM que simule un decodificador de BCD a 7 segmentos. Utilizar el
Basys2 para la implementación.
Teroria:
La memoria de solo lectura, conocida también como ROM (acrónimo en inglés de read-onlymemory), es un
medio de almacenamiento utilizado en ordenadores y dispositivos electrónicos, que permite sólo la lectura de la
información y no su escritura, independientemente de la presencia o no de una fuente de energía.
Los datos almacenados en la ROM no se pueden modificar, o al menos no de manera rápida o fácil
Material:
Laptop
Kit spartan3e
Software aldec HDL, xilinx ISE, adept.
Procedimiento:
Se crea nuevo proyecto en aldec HDL
3. Código del decodifidor 3 a 8
Library ieee;
use ieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityromis
port (datos: outstd_logic_vector (7 downto 0);
bus_dir: std_logic_vector(2 downto 0)
);
endrom;
architecture programa of romis
signal dato: std_logic_vector( 7 downto 0);
type memoria isarray (0 to 7) of std_logic_vector(7 downto 0);
constantmem_rom : memoria := ( "00000001",
"00000010",
"00000100",
"00001000",
"00010000",
"00100000",
"01000000",
"10000000");
begin
process (bus_dir)
begin
dato<= mem_rom (conv_integer (bus_dir));
endprocess ;
datos<=dato;
end programa;
códigobcd a 7 segmentos
libraryieee;
use ieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitybcdis
port (a_to_g: outstd_logic_vector (6 downto 0);
bus_dir: std_logic_vector(3 downto 0)
);
endbcd;
architecture programa of bcdis
signal dato: std_logic_vector( 6 downto 0);
type memoria isarray (0 to 9) of std_logic_vector(6 downto 0);
constantmem_rom : memoria := ("1000000",
"1111001",
"0100100",
"0110000",
"0011001",
4. "0010010",
"0000010",
"1111000",
"0000000",
"0010000");
begin
process (bus_dir)
begin
ifbus_dir> "1001" then
dato<= "1111111";
else
dato<= mem_rom (conv_integer (bus_dir));
endif;
endprocess ;
a_to_g<=dato;
end programa;
Observaciones y conclusiones:
Los programas realizaron el funcionamiento correctamente de acuerdo a lo previsto, aunque hubieron algunos
errores al comienzo porque se equivocaron en el nombre de la librería arith.