Estoy tratando de hacer que funcione un simple programa de LED parpadeante en mi FPGA y tengo problemas. En lugar de parpadear, el LED permanece encendido todo el tiempo. Intenté escribir mi en pero luego simplemente copié un programa de ejemplo, así que estoy seguro de que el programa está bien.
Este es el tablero que estoy usando: enlace Por lo que he leído, se supone que debe usar DCM para todas las necesidades de reloj, pero en mi ejemplo, acabo de adjuntar mi reloj al reloj global que se supone que es de 100MHz.
¡Cualquier ayuda para mi pobre noobie sería apreciada! A continuación se muestra mi código y mi ucf, que se pueden verificar con el ucf que figura en el enlace anterior.
Por cierto, ¿alguno de ustedes sabe de antemano cómo importar un DCM en ISE? Puedo descubrir cómo usarlo, simplemente no puedo encontrar una referencia de importación.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.std_logic_unsigned.all;
use IEEE.numeric_std.all;
entity counter is
port( clk: in std_logic;
rst: in std_logic;
led: out std_logic;
led2: out std_logic;
sw0: in std_logic);
end counter;
architecture Behavioral of counter is
constant CLK_FREQ : integer := 1000000;
constant BLINK_FREQ : integer := 1;
constant CNT_MAX : integer := CLK_FREQ/BLINK_FREQ/2 - 1;
signal cnt : unsigned(24 downto 0);
signal blink : std_logic := '1';
begin
process(clk)
begin
if (clk='1' and clk'event) then
if cnt = CNT_MAX then
cnt <= (others => '0');
blink <= not blink;
else
cnt <= cnt + 1;
end if;
end if;
end process;
process(sw0)
begin
if sw0 = '1' then
led2 <= '1';
else led2 <= '0';
end if;
end process;
led <= blink;
end Behavioral;
archivo ucf
# Bank = 1, Pin name = IO_L42P_GCLK7_M1UDM, Type = GCLK, Sch name = GCLK
NET "clk" LOC = L15;
# Bank = 1, Pin name = IO_L52N_M1DQ15, Sch name = LD0
NET "led" LOC = U18;
# PlanAhead Generated physical constraints
NET "led2" LOC = M14;
NET "rst" LOC = F5;
NET "sw0" LOC = A10;