如何在Verilog中将二进制数乘以十? 它是那样简单verilog中乘以十的数字
reg [7:0] a,b;
reg[31:0] p;
b= 8'b00001001;
p=a*b;
升级到Windows 8,我的赛灵思工作大气压。需要尽快知道计划阶段。
如何在Verilog中将二进制数乘以十? 它是那样简单verilog中乘以十的数字
reg [7:0] a,b;
reg[31:0] p;
b= 8'b00001001;
p=a*b;
升级到Windows 8,我的赛灵思工作大气压。需要尽快知道计划阶段。
近二十二进制是1010
!对于乘以两个8位数字,结果只需要16位,所以reg [15:0] p
可以。怎么样:
或
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;
当操作数被修复时,现代综合工具往往非常高效。使用'*常数'还可以使这些工具进行功耗优化,并且在推动时机时可以自由选择更快的架构。 – Morgan
你确定a * b给出16位结果吗?我认为在Verilog算术结果中,capasity和它的论点是一样的。 –