FPGA 乘法器的設計

2021-07-30 11:55:52 字數 1382 閱讀 5089

乘法算是基本運算之一,廣泛應用在數字訊號處理中,濾波器中乘法運算必不可少,實現乘法器的方法很多,各有各的優缺點,常見的有移位相加法,加法樹法,查表法,混合法……

在我們用語言設計電路時,初學時在實現乘法運算時通常很簡單的用*號操作,但是這種方法談不上設計乘法器,其最終的硬體實現要根據綜合器綜合的結果,好的綜合器可以綜合出想要的結果,但是實際上這種粗放的設計通常得到的都是劣等的乘法運算,無法滿足對乘法速率的要求,在濾波電路中要求資料序列進入接著進行大量的乘法運算,當所設計的乘法器其的速度小於資料進入的速度的時候就會導致結果錯……

1,以為相加乘法器其,對兩個二進位制數進行相乘運算,運用列式求法我們可以得知,乘法最終就是由加法和移位運算構成的,由此可以用高速度的加法和移位實現乘法操作,具體**如下:

begin

dout=0;

for(i=0;i

end

2,上面的設計中,由於產生了大量的組合邏輯,這就帶來了大量的延遲從而使乘法器的速率受到限制,為了提高速度,可以採用流水線的方法,將組合邏輯分割成乙個乙個小的組合邏輯,中間加上觸發器用來鎖存資料,這樣就可以大大提高頻率,引入觸發器僅僅是帶來了延遲而已,具體**實現如下

begin//流水線實現

din_a_buf<=din_a;

din_b_buf<=din_b;

buf0<=din_b_buf[0]?din_a_buf:0;

buf1<=din_b_buf[1]?din_a_buf<<1:0;

buf2<=din_b_buf[2]?din_a_buf<<2:0;

buf3<=din_b_buf[3]?din_a_buf<<3:0;

buf4<=din_b_buf[4]?din_a_buf<<4:0;

buf5<=din_b_buf[5]?din_a_buf<<5:0;

buf6<=din_b_buf[6]?din_a_buf<<6:0;

buf7<=din_b_buf[7]?din_a_buf<<7:0;

buf01<=buf0+buf1;

buf23<=buf2+buf3;

buf45<=buf4+buf5;

buf67<=buf6+buf7;

buf02<=buf01+buf23;

buf46<=buf45+buf67;

dout<=buf02+buf46;

end

此種乘法器叫做加法樹式乘法器,此方法被廣泛使用……

3,查表法,就是建乙個表,裡面存放了所有的乘法結果,乘數和被乘數用來作為位址去裡面的乘積,此種方法可以大大提高乘法的速率,但是當乘法位數很大時會要求產生很大的**,所以此種方法適合位數較小的乘法,特別適合有乙個乘數為固定的乘法,如濾波器中的乘法就可以採用此種方法設計……

4,混合,顧名思義就是結合以上各種方法的乘法器……

fpga乘法器設計要點

fpga乘法器設計 fpga乘法器相通過左移實現,位數最好定義為引數,可在上層模組中對其進行重定義防止引腳浪費,通過觸發器的設計使面積功耗不會因為位數增加有太大影響。演算法實現 當輸入確認鍵按下時,所有暫存器全部清零,計數器cnt賦值size 1,新一輪計算開始,cnt賦值0,當cnt小於size時...

fpga中例化乘法器 FPGA乘法器的應用

這是兩個 位ain,bin 結果為位 yout 的例子。module mux 4 clkrst n start ainbin yout done input clk晶元的時鐘訊號。input rst n 低電平復位 清零訊號。定義為 表示晶元復位 定義為 表示復位訊號無效。input start 晶...

Booth乘法器設計

1.乘法器原理 在計算兩個補碼相乘時,可以通過booth演算法來實現定點補碼一位乘的功能。布斯 booth 演算法採用相加和相減的操作計算補碼資料的乘積,booth演算法對乘數從低位開始判斷,根據後兩個資料位的情況決定進行加法 減法還是僅僅進行移位操作。討論當相乘的兩個數中有乙個或二個為負數的情況,...