使用verilogHDL實現乘法器

2020-12-08 電子發燒友

使用verilogHDL實現乘法器

電子發燒友 發表於 2018-12-19 13:30:25

本文在設計實現乘法器時,採用了4-2和5-2混合壓縮器對部分積進行壓縮,減少了乘法器的延時和資源佔 用率;經XilinxISE和QuartusII兩種集成開發環境下的綜合仿真測試,與用VerilogHDL語言實現的兩位陣列乘法器和傳統的 Booth編碼乘法器進行了性能比較,得出用這種混合壓縮的器乘法器要比傳統的4-2壓縮器構成的乘法器速度提高了10%,硬體資源佔用減少了1%。

1 引言

Verilog HDL是當今最為流行的一種硬體描述語言,完整的Verilog HDL足以對最複雜的晶片和完整的電子系統進行描述[1]。本文採用Verilog HDL語言來設計實現4-2和5-2混合壓縮器構成的乘法器的設計,並與另外實現的兩種乘法器從速度,面積和硬體資源佔用率等方面進行了性能比較,得出用這種改進壓縮器要比兩位陣列乘法器和傳統的4-2壓縮器構成的乘法器速度提高了10%,硬體資源佔用減少了2%。

2 兩位陣列乘法器

陣 列乘法器基於移位與求和算法。兩位陣列乘法器是對乘數以2bit進行判斷,這樣可以在部分積的數目上比一位判斷陣列乘法器減少1倍;另外,陣列乘法器結構 比較規範,利於布局布線,但是陣列乘法器存在進位問題,運算速度比較慢,所需時鐘周期長,時延大。以下是兩位判斷的乘法器的Verilog HDL語言部分程序:

module imult _radix_2(prod,ready,multiplicand,multiplier,start,clk);

……

case ( {product[1:0]} )

2『d0: pp = {2』b0, product[31:16] };

2『d1: pp = {2』b0, product[31:16] } + multiplicandX_1;

2『d2: pp = {2』b0, product[31:16] } + multiplicandX_2;

2『d3: pp = {2』b0, product[31:16] } + multiplicandX_3;

……

3 改進Booth編碼乘法器

陣列乘法器雖然佔用相對較少的硬體面積,可是運算速度非常慢,不能滿足高速運算的要求。為了得到高速的乘法器,可以從兩個方面來提高乘法器的計算速度:減 少部分積數目;提高部分積壓縮速度。通常減少部分積數目採用二階的Booth編碼實現;可用4-2壓縮器構成的Wallace樹來提高部分積求和速度。本 文採用4-2壓縮器和5-2壓縮器的混合Wallace樹來進一步提高求和速度。www.51kaifa.com

改進Booth算法通過對二進位補碼數據重新編碼,壓縮PP(部分積)數目,以提高運算速度。其中,壓縮率取決於編碼方法,如果採用三位編碼,可壓縮 1/2的PP,再對所得的n/2個部分積進行求和運算。在電路實現中還可採用混合握手協議和管道傳輸方式,可以降低電路的功耗,僅佔Amulet3i乘法 器的每次運算的能量消耗的50%【2】,另外,也可以採用混合邏輯乘法器設計【3】。Booth算法電路圖在文獻[4]中有具體介紹。

3.1 4-2壓縮器

4-2壓縮器使用2個CSA(Carry-save Adders保留進位加法器),將5個數據(4個實際數據和一個進位)相加產生3個數(Sun, Carry和Cout)。4-2壓縮器結構圖如圖1所示【4】。

圖1 由2個CSA構成的4-2壓縮器

4-2壓縮器是進行部分積壓縮最常用到的部件,與全加器相比,具有電路簡單、連線規則的優點.傳統4-2壓縮器輸入與輸出的邏輯關係表達式[8]為:www.51kaifa.com

表達式中:In1~In4為部分積輸入信號;Cin為鄰近壓縮器進位輸入;Sum為偽和;Carry和Cout為進位輸出,其權值相同。由圖及表達式知, 輸出進位與輸入進位式相互獨立的,即輸出並不由輸入產生,這樣就能保證部分積同時且獨立地相加。4-2壓縮器對部分積進行壓縮的圖如圖2【5】所示:

圖2 4-2壓縮器組結構圖

由4-2壓縮器進行部分積壓縮的Booth乘法器的Verilog HDL描述部分程序如下:

module Booth_radix_4(prod,ready,multiplicand,multiplier,start,clk);

……

dug dug0(PP0,mult[2:0]);

……

count count1(clock,sum0,carry0,PP0,PP1,PP2,PP3,cout0,cin0);

count count2(clock,sum1,carry1,PP4,PP5,PP6,PP7,cout1,cout0);

……

count count3(clock,sum,carry,sum0,carry0,sum1,carry1,cout,cin0);www.51kaifa.com

……

3.2 4-2和5-2混合壓縮器

4-2壓縮器在很大程度上減少了部分積的求和速度,但是它有一個缺點是Sum(偽和信號)比Carry(進位信號)的產生速度慢,因此,進位信號必須等待偽和信號的產生,這樣又造成了壓縮速度的降低和功耗的增加.可以用異或門和2-1數據選擇器對電路進行變換【6】,這種結構能同時產生偽和信號和進位信號,並且關鍵路徑的延遲也只有全加器的1.5倍【8】。為進一步壓縮部分積的求和級數,加快壓縮速度,本文同時採用了4-2壓縮器和5-2壓縮器混合邏輯設計。5-2壓縮器的結構圖如圖3【7】所示,

圖3 5-2壓縮器的結構圖

5-2 壓縮器有7個輸入In1~In5(權值相同),3個進位輸出(權值相同)和一個偽和(權值比進位輸出低一位),這種結構的壓縮器結構規整,且僅有6個異或 門的延遲。文獻[8]中給出了5-2壓縮器的輸入與輸出的邏輯關係表達式。整個壓縮器結構圖如圖4所示:

圖4 本文採用的整個壓縮器結構

由4-2和5-2混合壓縮器實現的改進Booth乘法器的Verilog HDL描述部分程序如下:

module Booth_radix_5(prod,ready,multiplicand,multiplier,start,clk);

……

dug dug0(PP0,mult[2:0]);

dug dug1(PP1,mult[4:2]);

……

count count1(clock,sum0,carry0,PP0,PP1,PP2,PP3,cout0,cin0);

……

sum sum1(clock,sum,carry,In16,sum0,carry0,sum1,carry1,cout,cin0,cin1);

……

4邏輯仿真及性能比較

本文在Xilinx ISE和Quartus II兩種集成開發環境下, 對以上3種結構的乘法器進行了編譯、綜合、適配、時序仿真以及功率分析,其中輸入信號的字寬為32bit。有仿真工具Xilinx ISE和Quartus II進行的仿真結果報告文件,很容易做出對這3種乘法器的性能比較,如表1所示。

有性能比較表知:陣列乘法器面積最小,功耗小,但是運行速度慢;單純使用4-2壓縮器的Booth乘法器在資源佔用率和速度上要比陣列乘法器提高約1倍, 功耗略大於陣列乘法器;而本文設計採用的乘法器方案有效提高了乘法器的運算能力,應用在FPGA上工作頻率可達256.61MHz,要比傳統的4-2壓縮 器構成的乘法器在速度上提高了10%,硬體資源佔用減少了約1%。

4結論

不同架構的乘法器在性能上都存在優點和缺點,在選擇乘法器時,應根據應用場合的要求在速度、面積和功耗等方面綜合考慮,本文採用Xilinx ISE和Quartus II兩種集成開發環境對所實現的乘法器綜合進行測試,更能準確顯示不同結構的乘法器的性能優勢,幫助用戶快速選擇合適的乘法器。本文設計採用的乘法器方案要比傳統的4-2壓縮器構成的乘法器在速度上提高了10%,硬體資源佔用減少了約1%,有效提高了乘法器的運算能力。

本文作者創新點: 本文採用4-2和5-2混合壓縮器對部分積進行壓縮,減少了乘法器的延時和資源佔用率;並用Verilog HDL語言實現了兩位陣列乘法器和傳統的Booth編碼乘法器。同時在Xilinx ISE和Quartus II兩種集成開發環境下進行綜合仿真測試,這更有利於比較乘法器的性能優勢,便於用戶更準確地選擇適合應用場合的乘法器。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 基於FPGA的高速流水線浮點乘法器設計與實現
    作為衡量微處理器 性能的主要標準,主頻和乘法器運行一次乘法的周期息息相關。因此,為了進一步提高微處 理器性能,開發高速高精度的乘法器勢在必行。同時由於基於IEEE754 標準的浮點運算具 有動態範圍大,可實現高精度,運算規律較定點運算更為簡捷等特點,浮點運算單元的設計 研究已獲得廣泛的重視。
  • 應用於CNN中卷積運算的LUT乘法器設計
    ,進行乘法運算通常都是使用FPGA中的DSP,這樣算力就受到了器件中DSP資源的限制。利用xilinx器件中LUT的結構特徵,設計出的乘法器不但能靈活適應數據位寬,而且能最大限度降低LUT資源使用。 Xilinx ultrascale器件LUT結構 在這裡簡要介紹一下ultrascale系列器件中的LUT結構,有助於後邊對乘法器設計思路的理解。
  • 使用跨導運算放大器的乘法器除法器
    使用跨導運算放大器的乘法器除法器
  • 一種基於存儲的乘法器查找表的近似優化方法
    雖然該類乘法器已被廣泛使用於移動無線通信等對電路工作速度與功耗均有一定要求的應用中,不過它也有著缺陷,即用於預存儲乘法結果的LUT所佔用的面積資源過大,當輸入具有m比特時,該乘法器使用傳統存儲方式需要存儲的所有可能的乘法結果為2 m 種,所以當m較大時,乘法器所佔用的LUT規模過大。  為了降低基於存儲結構中LUT的規模,前人已經做了不少研究。
  • 【HDL系列】乘法器(4)——圖解Wallace樹
    參考往期文章《進位保存加法器原理與設計》以下是加數W1-W39的Wallace結構例子:                加法樹:來自《A Suggestion for a FastMultiplier》在乘法器中,乘法的積為許多個部分和之和。Wallace結構可以加快乘法器的計算速度。
  • mc1496模擬乘法器構成的調幅器電路圖
    打開APP mc1496模擬乘法器構成的調幅器電路圖 本站 發表於 2009-03-22 11:25:35 mc1496模擬乘法器構成的調幅器電路圖MC1496
  • 數學運算(二)——無符號數乘法器結構
    數學運算(一)—— 無符號數加法器數學運算(二)——無符號數乘法器結構數學運算(三)——無符號數除法器(待更)
  • 使用FPGA實現高效並行實時上採樣
    FIR濾波器所需的乘法器數量。此外,由於生成UPSAMPLED VALUE(1)每個係數會使用兩次,用戶可以「摺疊」該實現方案,比如在相乘之前讓R1和R8相加,這樣就可以去掉四個乘法器。最後得到的設計僅使用18個乘法器每時鐘周期就可產生四個上採樣值。需要注意的是按上文介紹的設計方法,每個原始樣本值會原樣從並聯濾波器輸出。我們使用圖5所示的可綜合VHDL[5]模型評估圖4所示電路的性能。
  • 加法器和乘法器簡介及設計
    加法器和乘法器屬於數據通道部分。 一般對數據通道有如下要求:首先是規整性以優化版圖,其次是局域性(時間、空間,算子相鄰布置)以使版圖緊湊,正交性(數據流、控制流)以便規整布線,另外還需要層次化和模塊化。
  • 基於MSP430系列微控制器的FFT算法實現
    硬體乘法器模塊支持8/16位x8/16位有符號,或者無符號的乘法運算,並可以選擇「乘法與累加」功能。採用MSP430系列微控制器實現FFT算法具有超低功耗、低電壓工作、低成本、分析速度快等優點,它比採用專用晶片和DSP晶片價格便宜,比採用FPGA晶片容易實現。
  • 四象限乘法器/除法器在伽瑪相機中的應用
    AD734還可以作為調製器、解調器、寬帶增益控制器、直流均方根轉換器、壓控放大器、振蕩器和濾波器使用,用途非常廣泛。   1AD734的基本結構及功能  AD734是一個高精度、高速四象限模擬乘法器/除法器,他與符合工業標準的模擬乘法器/除法器AD534引腳互相兼容,其傳遞函數為W=XY/U。他具有以下特點:  (1) 高精度:0.1%的典型誤差。
  • 關於硬體實現FFT逆運算
    前面的文章我們介紹了關於FFT的硬體實現。關於FFT的逆運算IFFT,其實就是將實現FFT的過程反過來執行就可以了。在實現過程中要注意很多問題。同 FFT一樣,效率問題。在採用流水線的方式下,實部計算和虛部計算均採用兩塊RAM實現流水線。結構如上圖。在這種方式下,FPGA的片上RAM會消耗很多。為了節省RAM,可以採用一塊RAM的流水線方式。在實現過程中要注意對RAM操作的reading-during-write,之前的文章介紹過了。這種方式速度會降低一半。最節省的方式是使用控制器方式,但速度更低。
  • 基於Spartan-3 FPGA的DSP功能實現方案
    與此同時,這些器件還包括諸如嵌入式18×18位乘法器、大塊存儲器(18kb)、分布式RAM以及移位寄存器等關鍵DSP資源。這些高級特性意味著採用Spartan-3 FPGA,能以比其它競爭FPGA低得多的價位實現DSP算法。
  • 利用FPGA實現的FFT變換設計
    因此對FFT算法及其實現方法的研究具有很強的理論和現實意義。本文引用地址:http://www.eepw.com.cn/article/266000.htm  1 FFT算法及其實現方法  現場可編程門陣列FPGA是一種可編程使用的信號處理器件,其運算速度高,內置高速乘法器可實現複雜累加乘法運算;同時其存儲量大,無需外接存儲器就可實現大量數據運算;而且算法實現簡單,通過VHDL程式語言可輕鬆實現功能開發
  • 利用Xilinx FPGA實現高效並行實時上採樣
    如圖3所示,由於在通過FIR濾波器的每M個樣本中有M-1個樣本為0,就M=4、使用31抽頭FIR濾波器的情況而言(如圖4所示),您可以將濾波器分解開,並行產生M個輸出。採用這種實現方案,並行FIR濾波器的工作頻率為ADC的基本時鐘頻率,而非ADC時鐘頻率的M倍。如圖4所示,您可以設定窗口SINC函數的係數Cw(n)來最大限度地減少實現該FIR濾波器所需的乘法器數量。
  • 基於FPGA的高速流水線FFT算法實現
    FPGA(現場可編程門陣列)是一種具有大規模可編程門陣列的器件,不僅具有專用集成電路(ASIC)快速的特點,更具有很好的系統實現的靈活性。FPGA可通過開發工具實現在線編程。與CPLD(複雜可編程邏輯器件)相比,FPGA屬寄存器豐富型結構,更加適合於完成時序邏輯控制。因此,FPGA為高速FFT算法的實現提供了一個很好的平臺。
  • 使用了可變電導放大器的電壓控制放大器(VCA)
    本電路則採用可變GM型OP放大器,靠外電壓使互導發生變化,從而實現VCA。電路工作原理CA3080是一種被稱為OTA的IC它是一種差動輸入/電流輸出型的OP放大器。偏流IA的輸入辦法:為了能使與控制電壓VC成正比的電流流過,可使用基極接地的PNP電晶體。如基極電流忽略不計,輸入電流I1N=(VC-VBE)/R4,當電壓VC低於VBE≈0.5V時,IA則幾乎等於0,沒有放大功能。
  • 基於改進的CORDIC算法的FFT復乘及其FPGA實現
    在FFT運算中,核心操作是蝶形運算,而蝶形運算的主要操作是向量旋轉,實現向量旋轉可用複數乘法運算來實現,但複數乘耗費了FFT運算中大量的乘法器資源。CORDIC算法只需簡單的移位與加減運算就能實現向量旋轉,具有使用資源少、硬體規模小等優勢。因此在FFT蝶形運算中用其代替傳統FFT運算中的複數乘法器,可以獲得更好的性能。
  • 詳解FPGA如何實現FP16格式點積級聯運算
    編者按:通過使用Achronix Speedster7t FPGA中的機器學習加速器MLP72,開發人員可以輕鬆選擇浮點/定點格式和多種位寬,或快速應用塊浮點,並通過內部級聯可以達到理想性能。
  • 基於FPGA的高效FIR濾波器設計與實現
    該方法先通過MATLAB設計出一個具有具體指標的FIR濾波器, 再對濾波器係數進行處理, 使之便於在FPGA中實現, 然後採用基於分布式算法和CSD編碼的濾波器結構進行設計, 從而避免了乘法運算, 節約了硬體資源,其流水線的設計方式也提高了運行速度。Matlab和Modelsim仿真表明, 該設計功能正確, 能實現快速濾波。