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


當(dāng)然,我們也可以直接使用*符合來進(jìn)行乘法,對(duì)于無符號(hào)的乘法
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
?有符號(hào)乘法可以在Verilog中使用signed來標(biāo)注。
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)然我們也要理解有符號(hào)數(shù)乘法的原理,其實(shí)就是擴(kuò)位乘法,把高位都補(bǔ)充為符號(hào)位。
有符號(hào)數(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)于乘法輸出的位寬,我們知道,兩個(gè)8bits的無符號(hào)數(shù)乘法,結(jié)果的位寬是16bits,但對(duì)于兩個(gè)8bits有符號(hào)數(shù)的乘法,只要兩個(gè)數(shù)不同時(shí)為-128,即二進(jìn)制0b1000_0000,那么輸出結(jié)果的高兩位都是符號(hào)位,我們只需要取低15bits即可。因此,如果我們可以保證兩個(gè)輸入的乘數(shù)不會(huì)同時(shí)為有符號(hào)數(shù)所能表示的負(fù)數(shù)最小值,那么乘法結(jié)果的高兩位都是符號(hào)位,只取其中一位即可。
審核編輯:符乾江
-
FPGA
+關(guān)注
關(guān)注
1646文章
22054瀏覽量
618820 -
乘法器
+關(guān)注
關(guān)注
9文章
212瀏覽量
37979
發(fā)布評(píng)論請(qǐng)先 登錄
對(duì)于在STM32CubeMx使用FMC中的NAND FLASH里面配置這些時(shí)間有什么說明嗎?
Verilog中signed和$signed()的用法

請(qǐng)問AFE5801 AD轉(zhuǎn)換后數(shù)字信號(hào)是用有符號(hào)數(shù)還是無符號(hào)數(shù)表示的?
ADS8688分別設(shè)置0 to 1.25 × VREF和±1.25 × VREF采樣范圍時(shí),得到的16位數(shù)據(jù)是按照有符號(hào)數(shù)還是無符號(hào)數(shù)進(jìn)行轉(zhuǎn)換?
乘法型DAC的更新速率、采樣速率以及乘法帶寬是怎么定義的呀?有什么關(guān)系?
原理圖符號(hào)和PCB封裝有什么不同?

KiCad中不同GND符號(hào)的含義及應(yīng)用

求助,LMX2572LP參考時(shí)鐘路徑中的乘法器MULT的輸入頻率范圍問題求解
嵌入式電子元器件符號(hào)大全
FPGA Verilog HDL有什么奇技巧?
LM70 SPI/MICROWIRE 10位帶符號(hào)數(shù)字溫度傳感器數(shù)據(jù)表

什么是一種將模擬信號(hào)數(shù)字化的技術(shù)
LMH6518輸出異常的原因?
FPGA在人工智能中的應(yīng)用有哪些?
LM12454/LM12458/LM12H458 12位符號(hào)數(shù)據(jù)采集系統(tǒng)數(shù)據(jù)表

評(píng)論