2016-11-13 3 views
0

iは乗算しようとしている2つの32ビット符号付き分数(1符号ビット、8整数ビット、23小数ビット)Verilogの乗算結果はゼロですか?

最初のものは

32'b0_00000001_00000000000000000000000 // 1.00

あります第二1は

32'b0_00000100_00000000000000000000000 // 4.00

である私には、例えば次のように行うとき

出力は符号付き[31:0] aです。

a = 32'b0_00000001_00000000000000000000000 * 32'b0_00000100_00000000000000000000000を割り当てます。

結果はゼロですか?なぜ4ではないのですか?

親切に私は間違っている部分と私は何をすべきかを教えてください。あなたは32ビット線に64ビット値を代入しようとしている、とVerilogが値を切り捨てられます、だけ結果の下位32ビットを保っているので、どうもありがとうございまし

よろしく

アイザック

答えて

0

これはゼロです。適切な結果を持っているために

、あなたはこのよう行うことができます:D:

module mult; 
    reg [31:0] a = 32'b0_00000001_00000000000000000000000; // 1.0 
    reg [31:0] b = 32'b0_00000100_00000000000000000000000; // 4.0 

    reg [63:0] t; 
    reg [31:0] c; 

    initial begin 
    t = a * b; 
    c = t[54:23]; 

    $display ("%b",c); 
    $finish; 
    end 
endmodule 
+0

あなたの努力と答えをどうもありがとうございました、私は本当に感謝 –

関連する問題