Beruflich Dokumente
Kultur Dokumente
DGEST TECNOLGICO DE
SNEST MATAMOROS
Alumno(s): Mario Arturo Cruz Colunga Miguel Angel Fierros Pea Hermenegildo Martnez de la Cruz Jorge Alejandro Reyes Torres
H. MATAMOROS, TAM.
Practica 4
Objetivo: Implementar un contador de 8 bits utilizando un divisor de frecuencia mediante programacin vhdl.
Marco terico:
Divisor de frecuencia es un dispositivo electrnico que divide la frecuencia de entrada en una relacin casi siempre entera o racional. La forma de la seal de salida puede ser simtrica o asimtrica. La seal de entrada frecuentemente tiene forma de una onda cuadrada pero tambin puede ser sinusoidal o de otras formas.Suelen estar formados por contadores digitales.
Un contador (en ingls, counter) es un circuito secuencial construido a partir de biestables y puertas lgicas capaz de realizar el cmputo de los impulsos que recibe en la entrada destinada a tal efecto, almacenar datos o actuar como divisor de frecuencia. Habitualmente, el cmputo se realiza en un cdigo binario, que con frecuencia ser el binario natural o el BCD natural (contador de dcadas).
Material: Laptop Kit spartan3e Software aldec HDL, xilinx ISE, adept.
Procedimiento: Se crea nuevo proyecto en aldec HDL Se escribe el cdigo VHDL en el nuevo proyecto
Cdigo VHDL del divisor de frecuencia llibrary ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity clkdiv is port( mclk: in std_logic; clr: in std_logic; clk48: out std_logic ); end clkdiv; architecture clkdiv of clkdiv is signal q: std_logic_vector(23 downto 0); begin process(mclk, clr) begin if clr='1' then q <= x"000000"; elsif mclk'event and mclk ='1' then q <= q + 1; end if; end process; clk48 <= q(23); end clkdiv;
Cdigo VHDL del contador library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter is generic (N: integer :=8); port( clk: in std_logic; clr: in std_logic; q: out std_logic_vector(N-1 downto 0) ); end counter; architecture counter of counter is signal count: std_logic_vector(N-1 downto 0); begin process(clk,clr) begin if clr = '1' then count <= (others => '0'); elsif clk'event and clk ='1' then count <= count + 1; end if; end process; q <= count; end counter;
Cdigo VHDL TOP creado mediante un archivo BDE library IEEE; use IEEE.std_logic_1164.all; entity count is port( mclk : in STD_LOGIC; btn : in STD_LOGIC_VECTOR(3 downto 3); ld : out STD_LOGIC_VECTOR(7 downto 0) ); end count; architecture count of count is component clkdiv port ( clr : in STD_LOGIC; mclk : in STD_LOGIC; clk48 : out STD_LOGIC ); end component; component counter generic( N : INTEGER := 8 ); port ( clk : in STD_LOGIC; clr : in STD_LOGIC; q : out STD_LOGIC_VECTOR(N-1 downto 0) ); end component; signal NET91 : STD_LOGIC; begin U1 : clkdiv port map( clk48 => NET91, clr => btn(3), mclk => mclk ); U2 : counter port map( clk => NET91, clr => btn(3), q => ld( 7 downto 0 ) ); end count;
Observaciones y conclusiones: Se modific el cdigo porque tena dos salidas con frecuencias diferentes y al compilarlo marca un error, porque solo se usaba una salida. Al realizar la programacin el conteo iba muy rpido por lo que se modific el divisor de frecuencia a 3Hz.