Q
quan228228
Guest
8051年、私は、ブロックですシノプシスDW02_macの。シミュレーションが正しいです。しかし
動作時私は実行FPGAのではない、見つけることができますマックは。
マックfunciotnはc * b ;
たとえば、
= 16'h0001、b = 16'hffffは、c = 32'h0000_0000;
FPGAの結果は32'h0000_00001です。
シミュレーション結果は32'hffff_ffffです。
コードのFPGAシンセシスまたはか障害が関連?それとも、DW02_macはlibに対応するが?
どうぞ教えてください。どうも有難う。
DW02_mac.vは次のよう。
モジュールDW02_mac
(B、Cのは、TCは、MAC);
パラメータA_width = 8;
パラメータB_width = 8;
ポートリストの宣言の順序/ /
入力[A_width - 1:0];
入力[B_width - 1:0]のB;
入力[A_width B_width - 1:0]℃;
入力のTC;
出力[A_width B_width - 1:0]のMAC;レッグ[A_width B_width - 1:0]のMAC;
関数[A_width B_width - 1:0] signed_mult;
入力[A_width - 1:0];
入力[B_width - 1:0]のB;
レッグ[A_width - 1:0] a1の。
レッグ[B_width - 1:0] B1に。
レッグ[A_width B_width - 1:0] c1を。
始める
/ /はsynthesis_offをシノプシス
開始する場合(([はA_width - 1] === 1'bxは|は| Bが[はB_width - 1] === 1'bx))
signed_mult =(A_width B_width(1'bx));
最後に、他
/ /はsynthesis_onをシノプシス
始める
(場合、[A_width - 1] === 1'b1)
a1を= -;
他
a1の=;
場合)(Bの[B_width - 1] === 1'b1
B1に= - Bの;
他
B1に= Bの;
c1は= a1の* B1に。
(場合、[A_width - 1]!== Bの[B_width - 1])
signed_mult = - c1の;
他
signed_mult = c1の;
終了
終了
endfunctionが
常に開始
開始(TCは=== 1'b1)場合は、/ /乗算を締結
のMAC <= signed_mult(AとB) Cを。
最後に他の開始
のMAC <= *とB C;
最後に/ /場合
@(またはTCまたはBまたはC);
最後に/ /プロセス
endmodule追加分後に1時間44:
私は不思議sythesisable場合は関数が。ダビデ
動作時私は実行FPGAのではない、見つけることができますマックは。
マックfunciotnはc * b ;
たとえば、
= 16'h0001、b = 16'hffffは、c = 32'h0000_0000;
FPGAの結果は32'h0000_00001です。
シミュレーション結果は32'hffff_ffffです。
コードのFPGAシンセシスまたはか障害が関連?それとも、DW02_macはlibに対応するが?
どうぞ教えてください。どうも有難う。
DW02_mac.vは次のよう。
モジュールDW02_mac
(B、Cのは、TCは、MAC);
パラメータA_width = 8;
パラメータB_width = 8;
ポートリストの宣言の順序/ /
入力[A_width - 1:0];
入力[B_width - 1:0]のB;
入力[A_width B_width - 1:0]℃;
入力のTC;
出力[A_width B_width - 1:0]のMAC;レッグ[A_width B_width - 1:0]のMAC;
関数[A_width B_width - 1:0] signed_mult;
入力[A_width - 1:0];
入力[B_width - 1:0]のB;
レッグ[A_width - 1:0] a1の。
レッグ[B_width - 1:0] B1に。
レッグ[A_width B_width - 1:0] c1を。
始める
/ /はsynthesis_offをシノプシス
開始する場合(([はA_width - 1] === 1'bxは|は| Bが[はB_width - 1] === 1'bx))
signed_mult =(A_width B_width(1'bx));
最後に、他
/ /はsynthesis_onをシノプシス
始める
(場合、[A_width - 1] === 1'b1)
a1を= -;
他
a1の=;
場合)(Bの[B_width - 1] === 1'b1
B1に= - Bの;
他
B1に= Bの;
c1は= a1の* B1に。
(場合、[A_width - 1]!== Bの[B_width - 1])
signed_mult = - c1の;
他
signed_mult = c1の;
終了
終了
endfunctionが
常に開始
開始(TCは=== 1'b1)場合は、/ /乗算を締結
のMAC <= signed_mult(AとB) Cを。
最後に他の開始
のMAC <= *とB C;
最後に/ /場合
@(またはTCまたはBまたはC);
最後に/ /プロセス
endmodule追加分後に1時間44:
私は不思議sythesisable場合は関数が。ダビデ