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