在 Verilog 中,~ 和之间有什么区别?

In Verilog, What is the difference between ~ and?

  1. 使用 ~ 波浪号和 ! 感叹号表示不或反转信号有什么区别。

    always @(posedge clock) 
    begin
      z=(!x&!y&Q1); 
      Q1=(~x&~y|z);
    end
    
  2. 如果非阻塞 = 被取消并替换为下面的代码,会有什么不同。

    always @(posedge clock) 
    begin
      z<=(!x&!y&Q1); 
      Q1<=(~x&~y|z);
    end
    
  • !合乎逻辑
  • ~ 是按位的

换句话说:

  • !a 表示“a 不是 0”
  • ~a 表示 "invert the bits of a"

第二个问题:

第一个代码片段是错误的。您不能将非阻塞分配用于顺序逻辑。 如果您需要组合逻辑:

always @(x, y, Q1, z) # or always @(*)
begin
  z=(!x&!y&Q1);  // here, you have to use blocking assignment as it is combo logic
  Q1=(~x&~y|z);
end