我在输入端有27MHz的频率,想要在输出端获得400Hz,100Hz和1Hz的频率。但是当我模拟它时,我得不到任何它未定义的东西,我不知道什么是错的。
码
entity clk_div is
port
(
clk : in std_logic;
clock_set : in std_logic;
clk1_out : out std_logic;
clk100_out : out std_logic;
clk400_out : out std_logic
);
end entity;
architecture rtl of clk_div is
signal q : std_logic_vector(24 downto 0);
begin
process (clk)
begin
if(rising_edge(clk)) then
q <= q+1;
end if;
end process;
clk1_out <= q(24); -- 1Hz freq
clk400_out <= q(15); --400Hz freq
clk100_out <= q(17); --100Hz freq
end rtl;
答案 0 :(得分:2)
q
永远不会被初始化,所以当你向它添加一个时,结果就没有被定义。
您需要以下内容:
signal q : std_logic_vector(24 downto 0) := (others => '0');
此外,您正在对std_logic_vector执行数学运算。不推荐这样做;您应该查看使用numeric_std
包,并使您的计数器类型为unsigned
。