了解这个T触发器示例?

时间:2012-04-20 16:35:52

标签: vhdl

我正在阅读一本VHDL书籍并且无法理解他们给出的一个例子。

给出的代码:

-------------------------------------------------------------------
-- RET T Flip-flop model with active-low asynchronous set input. --
-------------------------------------------------------------------
-- library declaration
library IEEE;
use IEEE.std_logic_1164.all;
-- entity
entity t_ff_s is
  port ( T,S,CLK : in std_logic;
  Q : out std_logic);
end t_ff_s;
-- entity
architecture my_t_ff_s of t_ff_s is
  signal t_tmp : std_logic; -- intermediate signal declaration
begin
  tff: process (S,CLK)
  begin
    if (S = '0') then
      Q <= '1';
    elsif (rising_edge(CLK)) then
      t_tmp <= T XOR t_tmp; -- temp output assignment
    end if;
  end process tff;
  Q <= t_tmp; -- final output assignment
end my_t_ff_s;

我不明白的是他们如何为Q分配多个信号。在流程声明之外,它是Q <= t_tmp但在流程内S='0'然后Q <= '1'。这究竟是如何工作的?我对VHDL的理解有限,这对我来说是错误的。基本上,这对我来说就像写作一样:

Q <= '0';
Q <= '1';

任何人都可以帮助我更好地理解这个例子吗?

1 个答案:

答案 0 :(得分:4)

你对这个例子提出质疑是正确的。它坏了。

Q <= '1';

应该是

t_tmp <= '1';

有人意识到他们无法读取输出,引入了t_tmp并且只改变了一半的代码。