如何在Verilog的任务中为reg分配不定值?

时间:2017-05-31 08:18:29

标签: initialization task verilog assign

我遇到了这个错误。虽然我寻求全网,但我找不到好的答案。

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

  

错误:VCP2648 Control_Unit_Tasks.v:(60,50):Reg初始值设定项必须是常量: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

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

1 个答案:

答案 0 :(得分:2)

错误消息非常明显。当你有

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