在Verilog中,〜和?有什么区别?

时间:2016-04-06 06:30:15

标签: verilog blocking nonblocking

  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
    

1 个答案:

答案 0 :(得分:2)

  • !是合乎逻辑的
  • ~是按位的

换句话说:

  • !a表示&#34; a不是0&#34;
  • ~a表示&#34;反转a&#34;
  • 的位

对于你的第二个问题:

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

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