0

Verilogで2進数を10倍するにはどうすればよいですか? それは同じくらい簡単ですか

reg [7:0] a,b;
reg[31:0] p;
b= 8'b00001001;
p=a*b;

Windows 8 にアップグレードし、私のザイリンクスは ATM で動作しています。計画段階でできるだけ早く知る必要があります。

4

2 に答える 2

2

バイナリでほぼ-10は1010!2つの8ビット数を乗算する場合、結果に必要なのは16ビットだけなので、そうreg [15:0] pします。どうですか:

 always @( a )
     p = a * 8'd10; 

また

wire [13:0] p;
assign p = a * 4'd10;
于 2012-11-12T15:31:24.590 に答える
0

乗算をビット シフトに変換する際の HDL 合成ツールの性能はよくわかりません。このコードの乗数を誤って合成したくはありません (CPU がこれに乗数を使用する可能性は低いです)。

wire [7:0] a;
wire [11:0] shift2;
wire [11:0] shift1;
wire [11:0] result;

assign shift2 = a << 3; // a * 8
assign shift1 = a << 1; // a * 2
assign result = shift2 + shift1;
于 2012-11-14T01:47:08.043 に答える