1

我有一个触发器,它使用来自对其他信号的处理的信号作为 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 不正确吗?请注意,我不想产生一个时钟周期宽的脉冲,因为我的电路以异步方式工作。

4

1 回答 1

2

该过程仅对 敏感S0_i,但仅测试 on 上的事件S0_s(这些事件与事件从不在同一个增量周期中S0_i)。因此,该过程永远不会做任何事情。

将其敏感性列表更改为S0_s,如果应该工作。但是,正如目前所写,一旦BitReady_o变为'1',就无法将其返回到'0'

于 2013-03-06T13:05:20.067 回答