葉顯陽(yáng) 張海勇 皮代軍 秦水介
摘 要:傳統(tǒng)整數(shù)除法算法采用多次相減的方法來(lái)實(shí)現(xiàn)運(yùn)算,相減的過(guò)程耗費(fèi)了大量時(shí)鐘脈沖,而且對(duì)運(yùn)算結(jié)果的最后一位沒(méi)有進(jìn)行處理。針對(duì)傳統(tǒng)的整數(shù)除法器,提出一種基于Verilog計(jì)算精度可調(diào)的整數(shù)除法器的設(shè)計(jì)方法,運(yùn)用移位、循環(huán)減法和四舍五入的方法對(duì)數(shù)據(jù)進(jìn)行處理,提高了處理速度和精確度。用Cadence公司的NC-Verilog仿真器對(duì)所設(shè)計(jì)的除法器進(jìn)行仿真驗(yàn)證,結(jié)果顯示該除法器達(dá)到了預(yù)期功能。
關(guān)鍵詞:整數(shù)除法;Verilog;處理速度;精確度
中圖分類(lèi)號(hào):TN402文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2009)03-146-02
Design of Integer Divider with Adjustable Precision Based on Verilog
YE Xianyang,ZHANG Haiyong,PI Daijun,QIN Shuijie
(Laboratory for Photoelectric Technology and Application in Guizhou Province,Guiyang,550025,China)
Abstract:Traditional integer division algorithm used many subtraction to achieve the operation,the process by spending a lot of clock pulse,but also the results of the operation did not deal with the last one bit. Due to the traditional integer divider,an integer divider with adjustable precision based on Verilog is designed in this paper. The process velocity and precision of the divider are improved by using the methods of circulating subtracting and rounding to process data. The simulation for the divider is carried out by the NC-Verilog of the Cadence Company and the results indicate the good function.
Keywords:integer division;Verilog;process velocity;precision
基金項(xiàng)目:教育部“優(yōu)秀青年教師資助計(jì)劃”(教人司[2003]355);留學(xué)回國(guó)人員科研啟動(dòng)基金;2006年度教育部博士點(diǎn)基金項(xiàng)目;貴州省優(yōu)秀青年科技人才培養(yǎng)計(jì)劃基金(合同號(hào):黔科合人字No.2013)
0 引 言
除法器是電子技術(shù)領(lǐng)域的基礎(chǔ)模塊,在電子電路設(shè)計(jì)中得到廣泛應(yīng)用。目前,實(shí)現(xiàn)除法器的方法有硬件實(shí)現(xiàn)和軟件實(shí)現(xiàn)兩種方法。硬件實(shí)現(xiàn)的方法主要是以硬件的消耗為代價(jià),從而有實(shí)現(xiàn)速度快的特點(diǎn)。用硬件的方法來(lái)實(shí)現(xiàn)除法器的研究很多,如利用微處理器實(shí)現(xiàn)快速乘除法運(yùn)算,F(xiàn)PGA實(shí)現(xiàn)二進(jìn)制除法運(yùn)算,模擬除法器等[1-5];而通過(guò)軟件實(shí)現(xiàn)的除法器算法,可以大大提高器件的工作頻率和設(shè)計(jì)的靈活性,可以從總體上提高設(shè)計(jì)性能,而設(shè)計(jì)高效實(shí)用的算法是除法器的關(guān)鍵,故除法器的算法研究成為現(xiàn)今熱點(diǎn)。
目前,軟件方面主要是通過(guò)減法算法來(lái)實(shí)現(xiàn)除法運(yùn)算,把被除數(shù)作為被減數(shù),除數(shù)作為減數(shù),作減法,直到被減數(shù)小于減數(shù)為止,記錄能夠相減的次數(shù)即得到商的整數(shù)部分。將所得的余數(shù)乘以10 作為被減數(shù),除數(shù)作為減數(shù),作減法,差重新置入被減數(shù),反復(fù)相減,直到被減數(shù)小于減數(shù)為止,記錄能夠相減的次數(shù)即得到商的十分位數(shù)值。依此繼續(xù)下去,可得到商的百分位數(shù)值,千分位數(shù)值,……,要精確到哪一位,就依次做到哪一位[6,7]。此方法的缺點(diǎn)是速度慢,而且最后一位的精度不高,為了克服以上的缺點(diǎn),這里設(shè)計(jì)一種算法在軟件上改進(jìn)了除法器運(yùn)算的準(zhǔn)確性和處理速度。
1 設(shè)計(jì)方法
對(duì)于任意給定的兩個(gè)整數(shù)fenzi和fenmu,設(shè)fenzi為被除數(shù),fenmu為除數(shù)。為了得到兩個(gè)數(shù)相除的十進(jìn)制結(jié)果,本設(shè)計(jì)主要通過(guò)下面的算法來(lái)實(shí)現(xiàn),假如要保留小數(shù)點(diǎn)后面的n位有效數(shù)字,首先把fenzi乘以10的n次方,賦值給寄存器變量data0;接著把fenmu分別乘以10的(n+m),(n+m -1),(n+m -2),…,1,0次方分別賦值給(n+m+1)個(gè)不同的變量data(n+m+1),data(n+m),…,data1,其中m是fenzi和fenmu的位數(shù)之差(當(dāng)fenzi的位數(shù)多于fenmu時(shí),m為正,否則為負(fù));先求出商的最高位的值,如果data0大于data(n+m+1),則計(jì)數(shù)器自動(dòng)加1,再把data0和data(n+m+1)的差值賦給data0,再相減直到data0的值小于data(n+m+1),此時(shí)計(jì)數(shù)器的計(jì)數(shù)值就是最高位的值;依此用同樣的方法繼續(xù)下去,就可得到各個(gè)位上的值[8-10]。對(duì)最后一位進(jìn)行四舍五入處理,當(dāng)相減后的data0<data1時(shí),再通過(guò)比較data0*2是否大于data1,如果大于data1,則最后一位計(jì)數(shù)器的值加1,否則不變,最后把得到的整體值除以10的n次方,也就是小數(shù)點(diǎn)往左移動(dòng)n位。傳統(tǒng)除法算法由于采用多次相減的過(guò)程來(lái)實(shí)現(xiàn),相減的過(guò)程耗費(fèi)了大量時(shí)鐘脈沖,而且對(duì)運(yùn)算結(jié)果的最后一位沒(méi)有進(jìn)行處理;而本設(shè)計(jì)是通過(guò)采用位擴(kuò)展使除數(shù)和被除數(shù)位數(shù)相同,進(jìn)而對(duì)每一位進(jìn)行分開(kāi)處理,減少了做減法運(yùn)算的次數(shù),從而提高運(yùn)算速度;同時(shí)采用四舍五入的方法對(duì)運(yùn)算結(jié)果進(jìn)行處理,提高準(zhǔn)確性。
上面算法是一種順序方式,用Verilog硬件描述語(yǔ)言很容易實(shí)現(xiàn),圖1為流程圖,其中假定fenzi為3位的整數(shù),fenmu為2位的整數(shù),除法運(yùn)算精確到百分位。
2 仿真結(jié)果及分析
對(duì)上述的流程圖用Verilog描述語(yǔ)言編程,在Cadence的NC-Verilog仿真器下仿真,設(shè)輸入的fenzi和fenmu的值分別為128和11,仿真波形如圖2所示。
從圖2的波形可以看出,輸出結(jié)果為1 164,除法運(yùn)算要精確到百分位,所以往左移動(dòng)2位,其最終的值為11.64,而實(shí)際的值為11.636 36……,經(jīng)過(guò)四舍五入得到的結(jié)果完成正確。從仿真時(shí)間來(lái)看,對(duì)于相同的數(shù)值輸入,本設(shè)計(jì)只用了12個(gè)脈沖,而普通除法器至少需要20個(gè)脈沖(128/11=11余7,70/11=6余4,40/11=3余7,11+6+3=20),相比之下本設(shè)計(jì)的除法算法有很大的優(yōu)勢(shì)。
然而對(duì)于兩個(gè)位數(shù)相差很大的數(shù)相除,則本設(shè)計(jì)的速度優(yōu)勢(shì)更加的明顯,本設(shè)計(jì)每一位的運(yùn)行時(shí)間都不會(huì)超過(guò)9個(gè)時(shí)鐘脈沖,因此進(jìn)行n位計(jì)算的總脈沖也不會(huì)超過(guò)9n個(gè),而傳統(tǒng)的除法運(yùn)算需要多個(gè)時(shí)鐘脈沖,一般會(huì)是本設(shè)計(jì)時(shí)鐘脈沖的數(shù)倍。該算法同樣適合小數(shù)的運(yùn)算,只要把小數(shù)化成整數(shù),再做同樣的處理,就可以得到精確的結(jié)果。
3 結(jié) 語(yǔ)
通過(guò)對(duì)除法器算法的改進(jìn),用四舍五入的方法對(duì)數(shù)據(jù)進(jìn)行處理,使得到的結(jié)果準(zhǔn)確性有了進(jìn)一步的提高;運(yùn)用移位、循環(huán)減法,實(shí)現(xiàn)數(shù)據(jù)的高速運(yùn)算,并能任意設(shè)定計(jì)算的精度。運(yùn)用此方法在軟件方面設(shè)計(jì)除法器對(duì)速度和準(zhǔn)確性的提高有積極意義。
參考文獻(xiàn)
[1]王江,黃秀蓀,陳剛,等.一種RISC 微處理器的快速乘除法運(yùn)算設(shè)計(jì)與實(shí)現(xiàn)[J].電子器件,2007,30(1):162-166.
[2]祁建海,賀知明.基于FPGA的16位定點(diǎn)復(fù)數(shù)的快速求模[J].電訊技術(shù),2005(6):210-212.
[3]劉慧英,戴春蕾,高茁.高性能除法電路仿真與實(shí)現(xiàn)[J].儀表技術(shù)與傳感器,2006(6):38-39.
[4]白永強(qiáng),沈緒榜,羅旻,等.一種高階除法器的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2006,23(1):64-66.
[5]黃秀蓀,葉青,仇玉林.高速除法器設(shè)計(jì)及ASIC實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2008,25(2):133-135.
[6]高茁,張涇周.高性能數(shù)字運(yùn)算單元設(shè)計(jì)研究[D].西安:西北工業(yè)大學(xué),2005.
[7]陳玉丹,齊京禮,陳建泗.基于VHDL的8位除法器的實(shí)現(xiàn)[J].軟件時(shí)空,2006,22(13):277-278.
[8]華東.一種新的除法器算法的研究[J].浙江工貿(mào)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006,6(3):60-65.
[9]朱衛(wèi)華,鄭留平.可任意設(shè)定計(jì)算精度的整數(shù)除法器的VHDL設(shè)計(jì)[J].理論與方法,2008,27(2):16-18.
[10]朱維樂(lè),錢(qián)貴鎖,楊剛,等.高速整數(shù)開(kāi)方電路的流水線設(shè)計(jì)[J].電子科技大學(xué)學(xué)報(bào),2008,37(2):229-231.
作者簡(jiǎn)介 葉顯陽(yáng) 男,1982年出生,浙江人,微電子學(xué)與固體電子學(xué)專(zhuān)業(yè),貴州大學(xué)在讀研究生。研究方向?yàn)閿?shù)字集成電路。
張海勇 男,1981年出生,河北人,微電子學(xué)與固體電子學(xué)專(zhuān)業(yè),貴州大學(xué)在讀研究生。研究方向?yàn)閿?shù)字集成電路。
皮代軍 男,1983年出生,貴州人,微電子學(xué)與固體電子學(xué)專(zhuān)業(yè),貴州大學(xué)在讀研究生。研究方向?yàn)閿?shù)字集成電路。
秦水介 女,1963年出生,教授,博士,博士生導(dǎo)師。主要從事微電子機(jī)械系統(tǒng),激光與光電子技術(shù)研究。