私が提供する数値と、数値を適切な位置にシフトするために使用したその他のデータに基づいて、商とリマインダーを返すコードを作成しました。
私が今抱えている問題は、より多くの値を次々にテストすると、自分の商をうまく追跡できないことです。以前の計算から残余値を取得しないように 、 cat
レジスタ
を初期化する方法が必要です。
これが私が話していたコードです:
module divide(
input [7:0] a, b,
input [3:0] counter, msb,
output reg [7:0] q,
output reg [7:0] r
);
always @(*) begin
for(i = 0; i < counter + 1 ; i = i+1) begin
sum = s_a + s_b; //previously calculated values
if(sum[8-msb] == 1) begin
assign s_a = s_a;
assign s_b = s_b >>> 1;
cat[counter - i] = 1'b0;
end
else begin
assign s_a = sum;
assign s_b = s_b >>> 1;
cat[counter - i] = 1'b1;
end
assign r = s_a;
assign q = cat;
end
end
endmodule
注: このコードに含まれるすべてのレジスターを宣言しましたが、何らかの理由でここで宣言することはできません。