如何在 Task 和 Verilog 中为 reg 赋值?

How to assign inconstant value to reg in Task , In Verilog?

我遇到过这个错误。虽然找遍了整个网络,但我没有找到好的答案。

我想为任务中的 reg 分配条件值。 错误是这样的:

Error: VCP2648 Control_Unit_Tasks.v : (60, 50): Reg initializer must be a constant: DR==10'b0000000000?1'b1:1'b0";

我为出现此错误的任务编写的代码是这样的:

task Registers_Inc_Generator(output PC_inc,DR_inc,AC_inc, input [7:0]D,T, input[5:0]B, input[9:0] AC,DR, input R,Z);
reg isDR_Zero=(DR==10'b0000000000)?1'b1:1'b0;
reg isAC_Zero=(AC==10'b0000000000)?1'b1:1'b0;
endtask

如果有人帮助我,我将不胜感激。谢谢

错误信息很容易解释。当你有

reg isDR_Zero=(DR==10'b0000000000)?1'b1:1'b0;

您正在初始化一个变量。您只能将变量初始化为常量值。相反,您必须先 声明 变量,然后 分配 给它们:

  task Registers_Inc_Generator(output PC_inc,DR_inc,AC_inc, input [7:0]D,T, input[5:0]B, input[9:0] AC,DR, input R,Z);
    begin
      reg isDR_Zero;
      reg isAC_Zero;
      isDR_Zero=(DR==10'b0000000000)?1'b1:1'b0;
      isAC_Zero=(AC==10'b0000000000)?1'b1:1'b0;
    end
  endtask