verilog问题中的零标志

verilog问题中的零标志,verilog,modelsim,Verilog,Modelsim,我正在尝试在verilog中构建一个32位ALU,之前我只做过一点点行为verilog,所以我在使用这段代码时遇到了一些困难: module ZERO_FLAG(flag, control, inputA, inputB); input [2:0] control; input [31:0] inputA, inputB; output flag; reg flag; always @(control or inputA or inputB) begin case

我正在尝试在verilog中构建一个32位ALU,之前我只做过一点点行为verilog,所以我在使用这段代码时遇到了一些困难:

module ZERO_FLAG(flag, control, inputA, inputB);
  input [2:0] control;
  input [31:0] inputA, inputB;
  output flag;

  reg flag;

  always @(control or inputA or inputB) begin
    case (control)
      1: flag <= (|(inputA ~& inputB));
      3'bxxx, 3'bxx0, 3'bxx1, 3'bx0x,
      3'bx00, 3'bx01, 3'bx1x, 3'bx10,
      3'bx11, 3'b0xx, 3'b0x0, 3'b0x1,
      3'b00x, 3'b000, 3'b01x, 3'b010,
      3'b011, 3'b1xx, 3'b1x0, 3'b1x1,
      3'b10x, 3'b100, 3'b101, 3'b11x,
      3'b110, 3'b111: flag <= 0;
    endcase
  end
endmodule
模块零位标志(标志、控制、输入、输入B);
输入[2:0]控制;
输入[31:0]输入,输入B;
输出标志;
注册标志;
始终@(控制或输入或输入B)开始
病例(对照)

1:flag我会尝试将行改写为:

1: flag <= |(~(inputA & inputB));

1:flag我会尝试将该行改写为:

1: flag <= |(~(inputA & inputB));

1:flag不幸的是,Verilog中没有二进制NAND。唯一的二进制位运算符是AND(&)、OR(|)、XOR(^)和XNOR(都是^和^~)。

不幸的是,Verilog中没有二进制NAND。唯一的二进制位运算符是AND(&)、OR(|)、XOR(^)和XNOR(都是^和^~)。

值得一提的是,在IEEE 1364.1-2002 A.8.6中,
~&
是有效的Verilog语法,但只能作为一元运算符使用。这意味着它将只接受右手论证

 &(4'b0000) => 1'b0
 &(4'b0101) => 1'b0
 &(4'b1111) => 1'b1

~&(4'b0000) => 1'b1
~&(4'b0101) => 1'b1
~&(4'b1111) => 1'b0
可用的一元运算符有:

+, -, !, ~, &, ~&, |, ~|, ^, ~^, ^~
其中,&、~&、|、~|、^、~^、^
是缩减运算符,如上所示,将缩减为1位值。
^
表示异或

可用的位运算符包括:

+, -, *, /, %, ==, !=, ===, !==, &&, ||, **,
<, <=, >, >=, &, |, ^, ^~, ~^, >>, <<, >>>, <<<
+,-,*,/,%,==,!=,==,!=,&&&,| |,***,

=,&,|,^,^~,~^,>>,值得一提的是,为了补充IEEE 1364.1-2002 A.8.6中的其他答案,
~&
是有效的Verilog语法,但仅作为一元运算符可用。这意味着它将只接受右手论证

 &(4'b0000) => 1'b0
 &(4'b0101) => 1'b0
 &(4'b1111) => 1'b1

~&(4'b0000) => 1'b1
~&(4'b0101) => 1'b1
~&(4'b1111) => 1'b0
可用的一元运算符有:

+, -, !, ~, &, ~&, |, ~|, ^, ~^, ^~
其中,&、~&、|、~|、^、~^、^
是缩减运算符,如上所示,将缩减为1位值。
^
表示异或

可用的位运算符包括:

+, -, *, /, %, ==, !=, ===, !==, &&, ||, **,
<, <=, >, >=, &, |, ^, ^~, ~^, >>, <<, >>>, <<<
+,-,*,/,%,==,!=,==,!=,&&&,| |,***,

=、&、|、^、^、~^、>>、>,一个甜点,很好用,但显然我应该用&~来代替。当我切换到~^时,它也起作用了,就像我应该使用零标志一样,但这也起作用了!很好,这很有效,但显然我应该用&~来代替。当我切换到~^时,它也起作用了,就像我应该使用零标志一样,但这也起作用了!NB
default:flag NB
default:flag