Verilogで2進数を10倍するにはどうすればよいですか? それは同じくらい簡単ですか
reg [7:0] a,b;
reg[31:0] p;
b= 8'b00001001;
p=a*b;
Windows 8 にアップグレードし、私のザイリンクスは ATM で動作しています。計画段階でできるだけ早く知る必要があります。
バイナリでほぼ-10は1010
!2つの8ビット数を乗算する場合、結果に必要なのは16ビットだけなので、そうreg [15:0] p
します。どうですか:
always @( a )
p = a * 8'd10;
また
wire [13:0] p;
assign p = a * 4'd10;
乗算をビット シフトに変換する際の 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;