2つの7ビットの数値を乗算してVerilogで乗算しようとしていますが、何らかの理由で問題が発生しているようです。結果が0〜9の10進数であるときに乗算が機能する(1の出力を生成する)ように見えますが、9より大きい結果は1の出力を生成しないように見えます。 "Operand1"および "Operand2 "技術的には4ビット(小数点以下9桁)のみですが、問題を解決するかどうかを判断するために7ビットの数値に切り替えることを試みました。Verilogにおける乗算の問題
この特定のモジュールは、物理スイッチを使用してバイナリでusrによって提供された答えをチェックし、答えが正しくない場合は0を返し、正しい場合は1を返します。他のすべての演算(加算、減算、除算)は完全に機能します。ここで
は私のコードです:
module checkAnswer(OpSel, negFlag, Operand1, Operand2, usrAnswer, Correct);
input [1:0]OpSel;
input [6:0]Operand1, Operand2;
input negFlag;
input [6:0]usrAnswer;
output reg Correct;
always @ (*)
case (OpSel)
2'b00:
if ((Operand1%10 + Operand2%10) == usrAnswer)
Correct = 1'b1;
else
Correct = 1'b0;
2'b01:
if ((negFlag && (Operand2 > Operand1) && ((Operand1%10 - Operand2%10) == -1*usrAnswer)) || ((Operand1 >= Operand2) && ((Operand1%10 - Operand2%10) == usrAnswer)))
Correct = 1'b1;
else
Correct = 1'b0;
2'b10:
if ((Operand1%10 * Operand2%10) == usrAnswer)
Correct = 1'b1;
else
Correct = 1'b0;
2'b11:
if ((Operand1%10/Operand2%10) == (usrAnswer))
Correct = 1'b1;
else
Correct = 1'b0;
default: Correct = 1'b0;
endcase
endmodule
はお時間をいただき、ありがとうございます!
私はそのことを考えていなかったなんて信じられません!どうもありがとうございます! – Lorenzi