在VHDL中检测std_logic信号的上升沿

时间:2013-03-06 12:17:19

标签: vhdl

我有一个触发器,它使用clk输入信号来处理其他信号。这意味着,我没有使用系统的时钟既不是输入。因此,当我这样做时:

architecture sampler_a of sampler_e is
  signal S0_s   : std_logic := '0';  
begin
  -- In my block this is not only a not. I put this to simplify things.
  S0_s <= not(S0_i);                   
  S0_o <= S0_s;

  process(S0_i)
  begin
    --Also with rising edge does not work
    if (S0_s'event and S0_s= '1') then
        BitReady_o <= '1';
    end if;   
  end process;
end sampler_a;

BitReady在模拟中没有变化(在modelsim中)。这里std_logic的使用是否不正确? 请注意,我不想生成一个时钟周期宽的脉冲,因为我的电路以异步方式工作。

1 个答案:

答案 0 :(得分:2)

该过程仅对S0_i敏感,但仅对S0_s上的事件进行测试(这些事件永远不会与S0_i事件处于相同的增量周期内)。因此,这个过程永远不会做任何事情。

将其敏感度列表更改为S0_s,如果应该有效。 但是,正如目前所写,BitReady_o成为'1'后,无法将其返回'0'