2017-05-31 16 views
0

私はこのエラーに直面しました。私はネット全体を探していますが、良い答えは見つかりませんでした。Verilogのタスクのregに不定値を割り当てる方法は?

タスクの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 

誰も私を助けている場合、私は感謝します。ありがとう。

+1

初期化中にあなたがまた三項演算子を避けることができます。あなたは次のようなことをすることができます: - isDR_Zero = DR == 10'h0; isAC_Zero = AC == 10'h0; –

答えて

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 
+0

このような単純な間違い。大変ありがとう。 – Arman

関連する問題