?FPGA中乘法器是很稀缺的資源,但也是我們做算法必不可少的資源。7系列及之前的FPGA都是25x18的DSP,UltraScale中是27x18,我們可以通過調(diào)IP Core的方式或者原語的方式來進行乘法操作。在里面可以設(shè)置有符號還是無符號數(shù)乘法。


當(dāng)然,我們也可以直接使用*符合來進行乘法,對于無符號的乘法
reg [7:0] ubyte_a;
reg [7:0] ubyte_b;
(* *)
output reg[15:0] u_res;
always @ ( posedge clk ) begin
if(rst)
u_res else
u_res end
?有符號乘法可以在Verilog中使用signed來標注。
reg signed [7:0] byte_a;
reg signed [7:0] byte_b;
(* *)
reg signed [15:0] res;
always @ ( posedge clk ) begin
if(rst)
res else
res end
當(dāng)然我們也要理解有符號數(shù)乘法的原理,其實就是擴位乘法,把高位都補充為符號位。
有符號數(shù)乘法:
reg [7:0] ubyte_a;
reg [7:0] ubyte_b;
(* *)
reg [15:0] res_manul;
always @ ( posedge clk ) begin
if(rst)
res_manul else
res_manul end
關(guān)于乘法輸出的位寬,我們知道,兩個8bits的無符號數(shù)乘法,結(jié)果的位寬是16bits,但對于兩個8bits有符號數(shù)的乘法,只要兩個數(shù)不同時為-128,即二進制0b1000_0000,那么輸出結(jié)果的高兩位都是符號位,我們只需要取低15bits即可。因此,如果我們可以保證兩個輸入的乘數(shù)不會同時為有符號數(shù)所能表示的負數(shù)最小值,那么乘法結(jié)果的高兩位都是符號位,只取其中一位即可。
審核編輯:符乾江
-
FPGA
+關(guān)注
關(guān)注
1652文章
22238瀏覽量
628748 -
乘法器
+關(guān)注
關(guān)注
9文章
220瀏覽量
38425
發(fā)布評論請先 登錄
定點數(shù)表示實數(shù)的方法以及定點數(shù)在硬件上的運算驗證
E203V2長周期乘法器核心booth算法解讀
通過內(nèi)聯(lián)匯編調(diào)用乘法指令mulh\\mulhsu\\mulhu
e203乘除法模塊(e203_exu_alu_muldiv.v)中的back2back和special case信號的含義
Verilog實現(xiàn)使用Booth編碼和Wallace樹的定點補碼乘法器原理
對于指令集中back2back情況的簡單介紹
蜂鳥乘法器設(shè)計分享
Booth編碼的原理及選擇
改進型乘法器結(jié)構(gòu)設(shè)計
蜂鳥E203內(nèi)核乘法器的優(yōu)化
RISC-V M擴展介紹
Verilog中signed和$signed()的用法
請問AFE5801 AD轉(zhuǎn)換后數(shù)字信號是用有符號數(shù)還是無符號數(shù)表示的?
ADS8688分別設(shè)置0 to 1.25 × VREF和±1.25 × VREF采樣范圍時,得到的16位數(shù)據(jù)是按照有符號數(shù)還是無符號數(shù)進行轉(zhuǎn)換?
KiCad中不同GND符號的含義及應(yīng)用

FPGA中的有符號數(shù)乘法說明
評論