【摘要】本文介紹了一種使用可編程邏輯器件FPGA和Verilog語言實(shí)現(xiàn)的32位低功耗高速除法器的設(shè)計(jì)。該除法器可以實(shí)現(xiàn)有符號數(shù)運(yùn)算和無符號數(shù)運(yùn)算,主要操作有移位、比較和減法操作。設(shè)計(jì)中采用了一種新的基-16算法,該算法大幅度減少了除法運(yùn)算過程中的移位操作,從而提高了除法器的運(yùn)算速度。在該設(shè)計(jì)中加入了門控時(shí)鐘,從而大幅度減少了動態(tài)功耗。仿真和綜合結(jié)果表明其功能的正確性,運(yùn)行頻率最高可達(dá)530.772MHz,功耗降低了55.98%。
【關(guān)鍵詞】低功耗;高速除法器;基-16算法;門控時(shí)鐘
1.引言
除法器是是微處理器的核心部件之一,也是數(shù)字信號處理領(lǐng)域的基本單元。同時(shí),除法運(yùn)算也是四種算術(shù)運(yùn)算中最復(fù)雜的運(yùn)算單元,它的性能好壞直接關(guān)系到整個電路的性能。用FPGA實(shí)現(xiàn)的除法器能夠以并行運(yùn)算的工作方式,高速可靠的運(yùn)行,并可以以IP核的形式被隨時(shí)調(diào)用,所以在性能和應(yīng)用的靈活性上都有很大優(yōu)勢。本設(shè)計(jì)主要從速度和功耗兩個方面對除法器進(jìn)行了優(yōu)化設(shè)計(jì)。在速度方面通過改進(jìn)算法,減少加法、乘法器的運(yùn)用來改善速度。在功耗方面通過分析功耗產(chǎn)生的原因?qū)ζ溥M(jìn)行改善,有針對性的加入門控時(shí)鐘等方法,最終使電路功耗大幅度降低。
2.高速除法器設(shè)計(jì)
2.1 高速基-16除法器的算法
除法器算法主要分為Non-restoring算法(不恢復(fù)余數(shù)算法)和Restoring算法(恢復(fù)余數(shù)算法)。Non-restoring算法因?yàn)榫哂胁介L固定,控制簡單,邏輯鮮明的特點(diǎn),因而更多的被采用在硬件設(shè)計(jì)中。在該算法中,被除數(shù)若為負(fù)值則要先對其求補(bǔ)碼,變?yōu)檎翟龠M(jìn)行運(yùn)算。在運(yùn)算結(jié)束后對結(jié)果進(jìn)行調(diào)整,得到商和余數(shù)。非恢復(fù)操作每一步所執(zhí)行的加減的判斷,取決于上一步部分余數(shù)和被除數(shù)符號的異或,當(dāng)結(jié)果為1時(shí)加上除數(shù),當(dāng)結(jié)果為0時(shí)減去除數(shù)。
本文將介紹一種基于Non-restoring算法的移位除法器設(shè)計(jì)。與傳統(tǒng)的每次移1位的算法不同,該設(shè)計(jì)中每次移動4位被除數(shù),其商的值就會在0~F之間。每次移位后通過判斷余數(shù)與除數(shù)的倍數(shù)關(guān)系,得到本次的商值及下一次運(yùn)算所需余數(shù)。由于該算法每次被除數(shù)移動4位二進(jìn)制位即24=16,因此我們稱其為基-16算法。
對被除數(shù)每次移動4位與除數(shù)做比較,可以得到商,余數(shù),除數(shù)之間的關(guān)系。每次移位都將產(chǎn)生四位商,即0000~1111中的一組。因此減少了被除數(shù)移位的次數(shù),提高了運(yùn)算速度。
其每一次移位所做運(yùn)算的表達(dá)式如下:
Did=Quo*Dis+Rem
Did代表本次移位后被除數(shù)上高4位與上一次循環(huán)所得余數(shù)左移4位的和。
Quo代表16組商值中所判斷出的商值。Dis代表除數(shù),Rem代表本次循環(huán)所得的余數(shù),在下一次循環(huán)的時(shí)候該余數(shù)需要繼續(xù)向左移動4位。
基16算法的運(yùn)算流程為:
(1)當(dāng)寄存器中置入數(shù)據(jù)后首先判斷除數(shù)是否為0,若為0則說明輸入錯誤,不計(jì)算,重新置數(shù);否則進(jìn)行步驟二;
(2)初始化循環(huán)變量,包括被除數(shù)寄存器和余數(shù)寄存器等;
(3)將余數(shù)與被除數(shù)合并左移四位;
(4)該步為整個程序的核心,在上一步中得到的余數(shù)寄存器中的數(shù)值分別與除數(shù)的0~F倍進(jìn)行比較,得到商和該次循環(huán)所得到的商值和余數(shù)。
(5)將商值寫入被除數(shù)寄存器的低4位中,并判斷循環(huán)是否結(jié)束,若沒有結(jié)束則程序跳轉(zhuǎn)到第三步。
2.2 高速除法器電路設(shè)計(jì)
本文設(shè)計(jì)的低功耗高速除法器的硬件框圖如圖1所示,該電路主要由時(shí)鐘門控模塊、補(bǔ)碼轉(zhuǎn)換模塊、移位模塊、N倍除數(shù)寄存模塊、比較器模塊和減法器模塊組成。時(shí)鐘門控模塊主要完成對時(shí)鐘的低功耗控制。因?yàn)檩斎霐?shù)據(jù)是有符號的,因此要對輸入數(shù)據(jù)進(jìn)行補(bǔ)碼處理,使其變?yōu)檠a(bǔ)碼,然后將被除數(shù)補(bǔ)碼送入移位模塊中,與rem合并后進(jìn)行循環(huán)移位;除數(shù)的補(bǔ)碼送入N倍除數(shù)寄存模塊中得到dis1~disF將移位模塊中每次移位后得到的rem與dis1~disF進(jìn)行比較后,通過比較模塊的數(shù)據(jù)選擇器送入減法模塊,在比較模塊中可以輸出當(dāng)前移位所得的商值,rem與disx在減法器中相減的結(jié)果送入移位模塊中去繼續(xù)參與下一次的移位,當(dāng)移位模塊的變量j計(jì)數(shù)8次時(shí)該次除法運(yùn)算結(jié)束,輸出quo和rem通過補(bǔ)碼轉(zhuǎn)換模塊得到正確的商和余數(shù)。
圖1 除法器硬件框圖
3.仿真及驗(yàn)證
根據(jù)系統(tǒng)設(shè)計(jì)的要求,我們利用Modelsim軟件對整個除法器電路進(jìn)行了仿真,并使用Verilog硬件描述語言在Xilinx的Kintex7系列FPGA上實(shí)現(xiàn)了該除法器。Modelsim仿真結(jié)果如圖2所示,clk為該除法器的時(shí)鐘,rst為復(fù)位信號,start為一次除法計(jì)算的開始信號,當(dāng)start為低電平時(shí)開始置入數(shù)據(jù),高電平時(shí)開始計(jì)算。dividend為被除數(shù),divisor為除數(shù),r_quot為商,remainder為余數(shù)。從仿真結(jié)果可以看出所設(shè)計(jì)電路的計(jì)算結(jié)果與理論計(jì)算結(jié)果一致,電路實(shí)現(xiàn)了正確功能。另外我們使用Xilinx的ISE14.4工具對電路進(jìn)行綜合、布局布線,其結(jié)果顯示該電路最大工作速度可達(dá)530MHz。
為了更好的驗(yàn)證所實(shí)現(xiàn)電路的功耗特性,我們用Xilinx的XPower Analyzer工具對電路的功耗特性進(jìn)行了分析。分析結(jié)果如表1所示,從分析結(jié)果可以看出,電路加入低功耗設(shè)計(jì)技術(shù)后其動態(tài)功耗由原來的0.322減少到0.117,靜態(tài)功耗無太大變化,只減少了0.001??傮w功耗降低了55.98%。
表1 Xpower Analyzer功耗特性分析結(jié)果
低功耗設(shè)計(jì) 總功耗 動態(tài)功耗 靜態(tài)功耗
無 0.368W 0.322W 0.046W
有 0.162W 0.117W 0.045W
4.結(jié)論
本文基于Xilinx Kintex7系列中的Xc7K70T芯片完成了低功耗高速除法器的設(shè)計(jì),從設(shè)計(jì)結(jié)果可以看出:
(1)與傳統(tǒng)除法器相比,大幅提高除法器運(yùn)算速度,其最大時(shí)鐘頻率可達(dá)530MHz;
(2)與不加低功耗設(shè)計(jì)技術(shù)的除法器電路相比,加入低功耗設(shè)計(jì)技術(shù)后大幅度的降低了電路功耗,其總體功耗降低了55.98%。該設(shè)計(jì)思想不僅可以在高速低功耗除法器設(shè)計(jì)中能夠提升電路性能,而且可以將這種設(shè)計(jì)加入其它硬件電路中,對系統(tǒng)性能都會有極大提升。
參考文獻(xiàn)
[1]黃秀蓀,葉青,仇玉林.高速除法器設(shè)計(jì)及ASIC實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2008,25(2):133-135.
[2]杜慧敏,李宥謀,趙全良.基于Verilog的FPGA設(shè)計(jì)基礎(chǔ)[M].西安:電子科技大學(xué)出版社,2006.
[3]夏宇聞.verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:航空航天大學(xué)出版社,2003,7.
[4]羅瑜,王忠斐,賈曉云.基于FPGA的除法器設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2012,40(5):130-132.
作者簡介:邢立冬(1980—),男,山東濰坊人,博士研究生,工程師,主要研究方向:集成電路系統(tǒng)設(shè)計(jì)、高速數(shù)字信號處理。