Verilog 在条件 if 中使用 @

Verilog using @ with conditional if

您好,我有一个关于 Verilog 语法的问题。

我知道 @ 经常与 always 一起使用。

但我想在变量更改其值时执行一些操作。

例如,我想知道 switch 是否在变化。

所以,我尝试了 if (@posedge switch 或 negedge switch)

但是这样出错了

还有其他方法吗?

提前致谢

如果您想编写一个同步设计(并且您想要这样做;),您必须在一个时钟边沿(通常是上升沿)更改所有信号的状态。

然后要检测开关沿,您必须保存开关值的状态并将其与时钟上升沿的实际值进行比较。

always @(posedge clock)
   begin

       if (switch_old != switch)
             switch_edge <= 1'b1;
       else
             switch_edge <= 1'b0;

       switch_old  <= switch;
   end

同步设计不能做到你所要求的,那就不能合理合成。