Syntax 使Verilog模块对关闭的开关敏感

Syntax 使Verilog模块对关闭的开关敏感,syntax,parameters,verilog,Syntax,Parameters,Verilog,这将使Verilog模块对时钟和正在打开的复位开关敏感: always @(posedge clk, posedge rst) 如何将其更改为对关闭的开关敏感?如果您希望您的块对关闭的开关敏感,您需要在开关输入的名称前加一个负边缘,例如,“开关线”: 如果您只想让触发器在时钟周期的每个正边缘检查开关的状态 always @(posedge clock, posedge reset) if (!switch_line) // ... else // ... 您是在

这将使Verilog模块对时钟和正在打开的复位开关敏感:

always @(posedge clk, posedge rst)

如何将其更改为对关闭的开关敏感?

如果您希望您的块对关闭的开关敏感,您需要在开关输入的名称前加一个负边缘,例如,“开关线”:

如果您只想让触发器在时钟周期的每个正边缘检查开关的状态

always @(posedge clock, posedge reset)
  if (!switch_line)
     // ...
  else 
     // ...
您是在尝试模拟触发器、锁存器还是某种新型硬件?通常,只有触发器和锁存器对时钟信号感兴趣。具有异步复位的触发器被建模为

 always @(posedge clock, posedge reset)
对于同步复位,从灵敏度列表中删除复位信号

根据用户的评论,另一个选项是只插入复位信号的go信号。连接此模块时,可以执行以下操作:

mymodule UUT(
  .clock(clock),
  .reset(~go),
  //...
);

如果你否定go,你将得到与重置相同的行为,只是反转(例如,信号从1->0开始)。

除非你以非常低的时钟频率运行,否则按钮状态的变化将比时钟周期慢得多。因此,将按钮输入视为异步信号不是一个好主意。相反,您可能希望对输入进行采样,也可能希望消除故障

作为最低限度的样本,通过寄存器对输入进行采样,然后让您的控制FSM查看该寄存器,并在检测到预期更改时移动到适当的状态。这意味着需要设计1-2个周期来“反应”按钮更改。但是,同样,除非时钟频率非常低,否则周期将足够短,以至于没有人会注意到几个周期的延迟


如果将信号连接到重置,则按下按钮(bad)会松开所有状态信息,并突然出现两个重置信号。这样的设计可能会奏效,但这是一种糟糕的设计方法,会使您的设计对噪音等敏感。

将使用go按钮代替重置按钮。如果松开go按钮,则系统将进入空闲状态。因此,释放go按钮就像按下重置按钮一样。您可以将go信号连接到此模块上的重置信号。否则,您可以在上面的触发器的verilog中用“go”替换重置。
mymodule UUT(
  .clock(clock),
  .reset(~go),
  //...
);