【问题标题】:T flip flop VHDL codeT触发器VHDL代码
【发布时间】:2018-06-26 18:01:53
【问题描述】:

我正在学习VHDL,我遇到了以下代码:

Entity fft is 
  port (t, r: in bit; q: out bit);
End  entity;

Architecture fft_df of fft is
signal state: bit :='0';

Begin

state <='0' when r='1' else
         not state when t='0' and t'event else
         state;

q<=state;

End;

嗯,我怀疑这段代码做了什么,以及这是否是带复位的 T 触发器的行为或数据流描述。 然后,not state when t='0' and t'event 的含义是什么? (我想 T 触发器在下降沿工作)。

谢谢大家。

【问题讨论】:

  • 你的代码中有两个进程,因为信号分配是进程。代码本身看起来像是对具有异步复位的寄存器的非常不寻常的描述。但这在我看来并不是一种好的编码风格。
  • 我的意思是,这是一个数据流描述(fft_df 代表 t 触发器数据流)并且在下降沿工作。
  • 欢迎来到 Stack Overflow。如果您遵循指南here,您更有可能得到有用的答案。你的问题到底是什么?
  • 我只需要了解上面的代码是做什么的,以及该代码是否是 VHDL 数据流方法。 @MatthewTaylor
  • 那么,您能否编辑您的问题以更正您的错字?

标签: vhdl flip-flop


【解决方案1】:

我缺少时钟输入。一个 T 触发器(带有异步复位)实际上可以用

来描述
entity tff is 
    port (clk, reset, t: in bit; q: out bit);
end entity;

architecture rtl of tff is begin
    q <= '0' when reset = '1' else
        not q when rising_egde(clk) and t = '1';
end;

或者更常见的写成:

architecture rtl of tff is begin
    tff_proc : process(clk, reset) begin
        if reset = '1' then
            q <= '0';
        elsif rising_egde(clk) then
            if t = '1' then
                q <= not q;
            end if;
        end if;
    end process;
end;

附言读取输出需要在 VHDL-2008 模式下编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多