如何在verilog中为任务中的reg分配不合理值



我遇到了这个错误。尽管我全部寻求网络,但我找不到好的答案。

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

错误:VCP2648 CONTROL_UNIT_TASKS.V:(60,50(:reg Initializer必须是常数:dr == 10'b000000000000?1'b1: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

最新更新