VHDL:时钟分频器

时间:2015-04-07 10:04:05

标签: vhdl

我在输入端有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;

1 个答案:

答案 0 :(得分:2)

q永远不会被初始化,所以当你向它添加一个时,结果就没有被定义。

您需要以下内容:

signal q : std_logic_vector(24 downto 0) := (others => '0');

此外,您正在对std_logic_vector执行数学运算。不推荐这样做;您应该查看使用numeric_std包,并使您的计数器类型为unsigned