專利名稱::一種高速除法器的實(shí)現(xiàn)方法與裝置的制作方法
技術(shù)領(lǐng)域:
:一種實(shí)現(xiàn)高速除法器的方法與裝置涉及電子與信號(hào)處理領(lǐng)域,具體來說涉及一種除法器的實(shí)現(xiàn)。
背景技術(shù):
:在數(shù)字信號(hào)處理領(lǐng)域,經(jīng)常會(huì)涉及到除法運(yùn)算。如在接收信號(hào)歸一化過程中用到除法運(yùn)算,信號(hào)處理中的矩陣運(yùn)算等。這些運(yùn)算中,很多情況下不需要求出余數(shù),也不需要求出完全精確的商,只需要將商的誤差控制在一定范圍。但此類除法運(yùn)算有很高的運(yùn)算速度要求,即需要在很短的時(shí)間內(nèi)求出運(yùn)算結(jié)果,或硬件除法器需要工作在很高的頻率。但現(xiàn)有除法器結(jié)構(gòu)中多采用多次減法與移位操作得到精確的商以及余數(shù)。該類除法運(yùn)算實(shí)現(xiàn)時(shí)間長,需要多個(gè)時(shí)鐘周期或者綜合后硬件工作頻率低。在DonaldE.Knuth著的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》,第2卷,半數(shù)值算法(“TheArtofComputerProgramming,Vol.2,SeminumericalAlgorithms”)的第4章第3節(jié)介紹了一種計(jì)算除法的算法。該法先采用多次牛頓迭帶方法求出除數(shù)的倒數(shù),然后用被除數(shù)乘之得到商。但該法缺點(diǎn)在于為求得一個(gè)相對(duì)高的精度結(jié)果,迭帶次數(shù)需要很多,插值復(fù)雜,計(jì)算時(shí)間長。在采用賽靈斯(XILINX)公司的FPGA集成開發(fā)工具ISE中的CoreGenerator生成的32位除16位的除法器,在60MHz的工作時(shí)鐘約束下,完成一次運(yùn)算需要20多個(gè)時(shí)鐘周期,實(shí)現(xiàn)速度慢。在專利申請(qǐng)?zhí)枮?1132302.7的中國專利申請(qǐng)“一種除法器”中采用移位加減法的方式實(shí)現(xiàn)除法器,時(shí)鐘周期較長,32位除16位的除法器需要16個(gè)時(shí)鐘周期。在專利號(hào)為95107302的中國專利“除法快速運(yùn)算方法與裝置”提供了一種無需硬件的二元除法運(yùn)算方法與裝置,采用微處理器為平臺(tái),也是用移位與加法運(yùn)算來實(shí)現(xiàn)除法。
發(fā)明內(nèi)容針對(duì)一些對(duì)于運(yùn)算速度要求高,對(duì)運(yùn)算精度要求有限的除法運(yùn)算,本發(fā)明提出了一種新穎的除法器結(jié)構(gòu),以解決現(xiàn)有技術(shù)中除法器實(shí)現(xiàn)復(fù)雜,運(yùn)算時(shí)間長的缺點(diǎn)。本發(fā)明所述的除法器原理如下為了獲得商q=yx,]]>首先計(jì)算出除數(shù)的倒數(shù)然后依據(jù)q=1x×y]]>得到商。倒數(shù)的估計(jì)值是通過查表與插值擬合的方法得到的。通過設(shè)定查找表的精度與插值精度,可將倒數(shù)的誤差限定在一定范圍內(nèi)。該方法避免了常規(guī)除法器結(jié)構(gòu)中的多次移位運(yùn)算與減法操作,大大減少了除法運(yùn)算的時(shí)鐘周期,且硬件實(shí)現(xiàn)可達(dá)到很高的頻率。對(duì)應(yīng)的實(shí)現(xiàn)裝置分為5個(gè)模塊。參見附圖2。預(yù)處理模塊(10)首先根據(jù)將除數(shù)x被除數(shù)y轉(zhuǎn)化為無符號(hào)數(shù),并記錄商的符號(hào)。然后判斷除數(shù)x是否在設(shè)定的查找表范圍[A,B]內(nèi),如不在,則通過將除數(shù)x擴(kuò)大或縮小K倍使其落在查找表的范圍[A,B]內(nèi)。查找表模塊(20)將區(qū)間[A,B]依據(jù)等分或不等分的間隔分成N段,然后計(jì)算出各分隔點(diǎn)的對(duì)應(yīng)倒數(shù),做成表,如下所示<tablesid="tabl0001"num="0001"></tables>插值擬合模塊(30)采用插值的方法得到其余各點(diǎn)處倒數(shù)值的估計(jì)。一種最簡便的方法是采用線性插值法。參見附圖1,查出點(diǎn)x對(duì)應(yīng)表中距離最近的兩點(diǎn),計(jì)為x0x1,計(jì)算出線段xx0的長度與線段x0x1長度的比值,計(jì)為比例α,(0≤α<1)。依據(jù)表中z0=1x0]]>與z1=1x1]]>的值以及比例值α線性擬合得到的估計(jì)z=z0·(1-α)+z1·α=z0-(z0-z1)·α。乘法器單元(40)然后用乘法器計(jì)算商的中間結(jié)果q=z·y。后處理模塊(50)最后根據(jù)上述步驟中擴(kuò)大或縮小的倍數(shù)K,以及開始步驟中得到商的符號(hào)將商q調(diào)整至最終結(jié)果。圖1是本發(fā)明插值擬合過程的示意2是本發(fā)明實(shí)現(xiàn)裝置的框3是本發(fā)明具體實(shí)施步驟的框4是采用本發(fā)明的除法器與理想除法器求出的商的誤差結(jié)果比較具體實(shí)施例方式下面參照附圖,給出一個(gè)具體的快速除法器實(shí)施描述??焖俪ㄆ鬏斎氤龜?shù)x,被除數(shù)y。除數(shù)x的取值范圍在(-32,32)。首先判斷除數(shù)x是否為0(100),如果為0,則商輸出一個(gè)最大值常數(shù)constant(120)。如果不為0,則將除數(shù)x被除數(shù)y轉(zhuǎn)化為無符號(hào)數(shù),同時(shí)記錄商的符號(hào)s(110)。接下來判斷除數(shù)x是否在[4,16)范圍內(nèi)(130)。如果不是,則將除數(shù)x乘以2的N次冪,轉(zhuǎn)化到[4,16)范圍內(nèi)(140)。具體判斷過程如下分x的7種情況進(jìn)行討論。如果1128≤x<132]]>則x_shift=x×29如果132≤x<18]]>則x_shift=x×27如果18≤x<12]]>則x_shift=x×25如果12≤x<2]]>則x_shift=x×23如果2≤x<4則x_shift=x×2如果16≤x<32則x_shift=x×12]]>此時(shí)轉(zhuǎn)化完的x_shift在[4,16)范圍內(nèi)。然后將在[4,16)范圍內(nèi)的除數(shù)定點(diǎn)為7個(gè)小數(shù)位,4個(gè)整數(shù)位的值(150)。求出查表的兩個(gè)索引值index0,index1(160)。求x_shift對(duì)應(yīng)的表的索引值index0,index1(index1=index0+1)。采用二進(jìn)制表示時(shí),取x_shift的第11~4位即可得到index0。再求出距離比值alpha,并以3位純小數(shù)表示(170)。采用二進(jìn)制表示時(shí),取x_shift的第3~1位即可得到alpha。查表求出z0,z1(180)。所查的倒數(shù)表共193項(xiàng),對(duì)應(yīng)輸入變量范圍是[4,16],步進(jìn)值為輸出變量的值用16位二進(jìn)制定點(diǎn)數(shù)表示,其中的小數(shù)位有16位。所查表如下case1,z=’0100000000000000’;case2,z=’0011111100000011’;case3,z=’0011111000001111’;.............................................................................case193,z=’0001000000000000’;利用插值法求出z_est,用16位純小數(shù)表示(190),求商q=z_est*y(200)。最后還原商的真實(shí)值,若除數(shù)曾經(jīng)乘以2的N次冪(210),則q也乘以2的N次冪(220);再向下取整并調(diào)整商q的符號(hào)(230),最后輸出商值。為了評(píng)估該除法器的精度,采用相同數(shù)據(jù),對(duì)比了本除法器的商與理想情況下商的差值。附圖4所示為被除數(shù)取值為12.5時(shí),理想浮點(diǎn)商和定點(diǎn)商的差。可見當(dāng)除數(shù)大于60/128后,商的誤差均可以控制在5×10-3范圍內(nèi)。這里描述的模塊以及單元既可以采用硬件實(shí)現(xiàn),也可以采用軟件實(shí)現(xiàn),或軟硬件的組合方式來實(shí)現(xiàn)。本發(fā)明技術(shù)方法并不局限于上述實(shí)施例,本領(lǐng)域內(nèi)普通技術(shù)人員應(yīng)理解的是可在本發(fā)明范圍內(nèi)做各種形式和細(xì)節(jié)上的改變。本發(fā)明的最大優(yōu)點(diǎn)在于采用查表加插值擬合的方法快速計(jì)算出除數(shù)x的倒數(shù)的估計(jì)值,然后轉(zhuǎn)化為乘法運(yùn)算求出商的值。該方法大大加快了除法運(yùn)算的過程,特別適用于那些只需要求商值,不需要求出余數(shù)的高速除法運(yùn)算場合。權(quán)利要求1.本發(fā)明涉及一種高速除法器的實(shí)現(xiàn)方法。它包含下列步驟●根據(jù)除數(shù)x被除數(shù)y的符號(hào),判斷商q的符號(hào),并將除數(shù)被除數(shù)轉(zhuǎn)化為無符號(hào)數(shù)?!衽袛喑龜?shù)是否在設(shè)定的查找表區(qū)間內(nèi),如不在,則通過將除數(shù)x擴(kuò)大或縮小相應(yīng)倍數(shù)使其落在查找表的區(qū)間內(nèi)?!駥⒉檎冶韰^(qū)間[A,B]以等分或不等分的間隔點(diǎn)分成N段,然后計(jì)算出各分隔點(diǎn)的倒數(shù),做成表?!褚罁?jù)上表與除數(shù)x的值,采用插值擬合的方法得到除數(shù)倒數(shù)的估計(jì)值z(mì)?!裼贸龜?shù)倒數(shù)的估計(jì)值z(mì)乘以被除數(shù)計(jì)算出商的中間結(jié)果q?!窀鶕?jù)上述步驟中除數(shù)擴(kuò)大或縮小的相應(yīng)倍數(shù),以及商數(shù)的符號(hào),將商的中間結(jié)果q調(diào)整至商的最終結(jié)果。2.如權(quán)利要求1所示,其特征在于,其中一種線性插值方法包含下列步驟●找出分隔點(diǎn)中與除數(shù)x最接近的兩點(diǎn),記為x0x1,計(jì)算出線段xx0的長度與線段x0x1長度的比值,記為比例值α,(0≤α<1)?!褚罁?jù)表中z0=1x0]]>與z1=1x1]]>的值以及比例值α,線性插值得到除數(shù)倒數(shù)的估計(jì)。3.如權(quán)利要求1所述除法器裝置,其特征在于,它包含以下功能的單元模塊預(yù)處理模塊,倒數(shù)表,插值擬合模塊,乘法器,后處理模塊。4.如權(quán)利要求3所述裝置,其特征在于,預(yù)處理模塊的作用在于將除數(shù)被除數(shù)轉(zhuǎn)化為無符號(hào)數(shù),記錄商的符號(hào),同時(shí)擴(kuò)大或縮小除數(shù)的范圍,使其置于倒數(shù)表的范圍內(nèi)。5.如權(quán)利要求3所述裝置,其特征在于,倒數(shù)表存放的是[A,B]之間依據(jù)等分或不等分的間隔分成N段的分隔點(diǎn)對(duì)應(yīng)的倒數(shù)。6.如權(quán)利要求3所述裝置,其特征在于,插值擬合模塊的作用是根據(jù)權(quán)利要求1中所述步驟依據(jù)查找表采用插值擬合的方法得到對(duì)除數(shù)倒數(shù)的估計(jì)值。7.如權(quán)利要求2與權(quán)利要求6所述插值擬合模塊,其特征在于,其中一種插值擬合模塊的作用是找到分隔點(diǎn)中與除數(shù)x最接近的兩點(diǎn),求出比值α,查找這兩點(diǎn)對(duì)應(yīng)的倒數(shù)值,依據(jù)線性插值公式,完成求除數(shù)倒數(shù)的估計(jì)值的計(jì)算。8.如權(quán)利要求3所述裝置,其特征在于,乘法器是用于將除數(shù)倒數(shù)的估計(jì)值與被除數(shù)相乘,以輸出一相乘結(jié)果。9.如權(quán)利要求3所述裝置,其特征在于,后處理模塊的作用是根據(jù)乘法器的輸出值,調(diào)整商的倍數(shù)以及符號(hào),輸出商值。全文摘要本發(fā)明提出了一種實(shí)現(xiàn)高速除法器的方法與裝置。為了獲得商q=y/x,該方法首先計(jì)算出除數(shù)的倒數(shù)1/x,然后依據(jù)q=1/x×y得到商值。該方法采用查表結(jié)合插值擬合的方法得到1/x的估計(jì)值。通過設(shè)定查找表的精度與插值精度,可將商的誤差限定在一定范圍內(nèi)。該方法避免了常規(guī)除法器結(jié)構(gòu)中的多次移位運(yùn)算與減法操作,大大減少了除法運(yùn)算的時(shí)鐘周期,且無論軟硬件實(shí)現(xiàn)均可達(dá)到很高的速度。文檔編號(hào)G06F7/535GK1979411SQ20051012602公開日2007年6月13日申請(qǐng)日期2005年11月30日優(yōu)先權(quán)日2005年11月30日發(fā)明者滕煒亮,孫靜,呂紅英,劉立國申請(qǐng)人:北京中電華大電子設(shè)計(jì)有限責(zé)任公司