如何在 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
我遇到过这个错误。虽然找遍了整个网络,但我没有找到好的答案。
我想为任务中的 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