本文在設計實現乘法器時,采用了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兩種集成開發環境下進行綜合仿真測試,這更有利于比較乘法器的性能優勢,便于用戶更準確地選擇適合應用場合的乘法器。
評論
查看更多