2012-11-12 64 views
0

如何在Verilog中將二進制數乘以十? 它是那樣簡單verilog中乘以十的數字

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

升級到Windows 8,我的賽靈思工作大氣壓。需要儘快知道計劃階段。

回答

2

近二十二進制是1010!對於乘以兩個8位數字,結果只需要16位,所以reg [15:0] p可以。怎麼樣:

​​

wire [13:0] p; 
assign p = a * 4'd10; 
+0

你確定a * b給出16位結果嗎?我認爲在Verilog算術結果中,capasity和它的論點是一樣的。 –

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; 
+0

當操作數被修復時,現代綜合工具往往非常高效。使用'*常數'還可以使這些工具進行功耗優化,並且在推動時機時可以自由選擇更快的架構。 – Morgan