Я создал этот простой счетчик mod16, используя плату basys3, и что-то не так с моими часами.Сам код работает, однако один отсчет (с «1» на «2» и т. Д.) Длится 40 секунд вместо 1 секунды!Я попытался понизить "clk_vector", если условие до 1, но это тоже не помогло.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity mod_16_k is
Port ( switch : in STD_LOGIC_VECTOR (3 downto 0);
CLK1 : in STD_LOGIC;
reset : in STD_LOGIC;
led : out STD_LOGIC_VECTOR (15 downto 0));
end mod_16_k;
architecture Behavioral of mod_16_k is
signal clk_vector :integer;
signal clk_vec2 :std_logic_vector(15 downto 0);
begin
zegar_wew : process(CLK1)
begin
if(CLK1'event and CLK1 = '1') then
clk_vector <= clk_vector + 1;
if(clk_vector = 100000000) then
clk_vec2 <= std_logic_vector(unsigned(clk_vec2) + 1);
end if;
end if;
end process;
led <= clk_vec2;
end Behavioral;
.XDC строки для часов:
Если мыпроверьте таблицу basys3, часы подключены к порту "W5".
У вас есть идеи, в чем здесь проблема?Это может быть связано с обнаружением нарастающего фронта clk, однако все изменения (от 1 до 2 и т. Д.) Длятся ~ 40 секунд.