0

我在使用清除和重置对 T 触发器进行编码时遇到问题。如下图所示,t_in 作为使能输入运行,将从 mod-m 计数器设置为 1 或 0。然后 to_ldspkr 将切换。clr_FF 将清除触发器。

链接到框图

链接框图

我现在确定我应该如何编写这个触发器。这是我的代码,但它不起作用:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;


entity T_FF is
    port(
        from_t_in : in std_logic;
        clk, reset : in std_logic;
        from_clr_FF : in std_logic;
        to_ldspkr : out std_logic
    );
end T_FF;

architecture Behavioral of T_FF is
    signal temp: std_logic;
    signal r_reg, r_next : std_logic;

    begin
    process(reset, clk, from_clr_FF, r_reg)
    begin
        if(reset = '1') then
            r_reg <= '0';   
        elsif(from_clr_FF = '1') then
            r_next  <= '0';
        elsif(clk'event and clk='1') then
            if(from_t_in = '1') then
                temp <= not temp;
            end if;
        end if;
    end process;
    to_ldspkr <= temp;
end Behavioral;
4

1 回答 1

0

temp 未初始化。我猜你不需要 r_reg 和 r_next。只需用 temp 替换它们,这样它就会在重置时被初始化。r_reg 在灵敏度中是不需要的。

于 2014-12-03T16:54:39.330 回答