如何在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和它的論點是一樣的。 –