專利名稱:除法快速運算方法與裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及針對長除法的缺點而設(shè)計的除法運算方法與裝置。本發(fā)明可應(yīng)用于任何除法的運算,尤適且于無硬件除法指令的微處理控制器,以提高除法運算速度,并使商的誤差在設(shè)定范圍內(nèi)。
過去,在無硬件除法指令的微處理控制器中,一般皆采用長除法作除法運算。二位的長除法運算即一連串的減法以求得商數(shù),以正整數(shù)8除以3為例,長除法的運算步驟如下除數(shù) 被除數(shù)商---- ---- ---00111000 ?步驟1 00111000 1-0011------0101-0011步驟2 0011 ------0010 10如上圖所示,被除數(shù)8以二進(jìn)制表示為1000,除數(shù)3的二進(jìn)制表示法為0011。在第一步驟中,先比較除數(shù)與被除數(shù)的大小。由于除數(shù)比較小,先將被除數(shù)減去除數(shù),余數(shù)為0101。經(jīng)過一次的減法運算后,商則進(jìn)1。
在第二步驟中,余數(shù)仍大于除數(shù)。因此,再將余數(shù)減去除數(shù),得到0010;商則再進(jìn)1,得到10。此時,余數(shù)小于除數(shù),運算即可停止。最后之值即為0010,余數(shù)為0010。
若以減法及判斷做手算長除法,其步驟如下001011_)----100011-----10步驟 1011)----10001<11,商爲(wèi)0;步驟 2011)----100010<11,商爲(wèi)0;步驟 3111)----100011-----1100>11,商爲(wèi)1,餘數(shù)爲(wèi)1;步驟 41011)----100011-----1010<11,商爲(wèi)10,餘數(shù)爲(wèi)10。
長除法的二位元運算十分冗長復(fù)雜且速度慢,不適用于功能簡單的微處理控制器。為解決長除法的缺點,另一方法為查表法。查表法不須任何除法裝置或運算,只要將除法表裝設(shè)在只讀存貯器中,以除數(shù)和被除數(shù)為索引,檢索除法表中的商值即可。雖然查表法比長除法更有效率,但除法表乃為二向表示方式,其大小成長快速、須占用較大的存貯空間,不適用于低價位的微處理器。
基于上述的問題與缺點,本發(fā)明主要在于提出新的解決方法以簡化除法運算程序,并節(jié)省儲存除法表所須的存貯空間。
本發(fā)明的主要目的在提供一種利用查表與位移及加法(shift=add)的技巧而能達(dá)到除法運算功效的除法運算方法與裝置。
本發(fā)明的另一目的在于提供一種不須除法器的除法運算方法與裝置,其能簡化除法運算程序,并加快運算效率。
本發(fā)明的又一目的在提供一種節(jié)省存貯空間的除法表。
本發(fā)明的再一目的在提供一種效率高且能控制誤差范圍的除法運算方法與裝置。
基于上述的目的,本發(fā)明使用余數(shù)定理及1/2次冪級數(shù)多項式表示法為流程。本發(fā)明的裝置包含除數(shù)左移裝置,用以輸入除數(shù),并將該除數(shù)左移;被除數(shù)左移裝置,用以輸入被除數(shù),并將該被除數(shù)左移;左移控制器,用以控制該除數(shù)左移的動作;商右移裝置,用以輸入除法表的檢索所得,并將之右移;以上的裝置利用位移方法達(dá)到乘二或除二的目的。
本發(fā)明還包含與門裝置與加法裝置。與門裝置用以輸入被除數(shù)左移裝置的最高位輸出與商右移裝置的輸出,并將它們做與(AND)運算。加法裝置用以輸入與門裝置的輸出值,并將與門裝置的輸出值累加。以上的裝置是利用加法將商數(shù)值累加,使最后商的誤差在預(yù)定的范圍內(nèi)。
為節(jié)省儲存除法表的存貯空間,本發(fā)明的除法表還包含一單向的陣列商數(shù)值,該陣列的商數(shù)值為一預(yù)定的被除數(shù)除以由1至等于該除數(shù)的除數(shù)所得的運算結(jié)果。
第1圖為本發(fā)明的除法運算的概念流程圖。
第2A圖為本發(fā)明的除法表。
第2B圖為本發(fā)明依據(jù)第1圖的實例運算程序。
第3圖為本發(fā)明的最佳實施例的功能方塊圖。
第1圖為本發(fā)明的概念流程圖。以二進(jìn)制的X除以Y為例,Q為二進(jìn)制商的最大位數(shù),其要求誤差限制在±(Q+r+1)*2-(1+r)之內(nèi)。除法表中所存的商為除法表(i)=2N+r/i,取四舍五入整數(shù)。i代表除數(shù)索引,其大小由1至(2D-1)的數(shù),D代表除數(shù)的最大位數(shù),N為被除數(shù)的最大位數(shù),r為誤差參考值。
其主要原理為余數(shù)定理及1/2冪次級數(shù)多項式表示定理。其中,r的功能為將原來的被除數(shù)先于以2r加大(2N+r/i),以達(dá)到降低誤差的作用。而誤差范圍乃其原來的商因2r加大之故,所以共為Q+r位。為求其至小數(shù)點下一位,故須執(zhí)行(Q+r+1)次,且每次誤差最大為1/2。如此,求得總和最大誤差為(Q+r+1)*(1/2),最后再將2r加大還原,得到最大誤差限制在±(Q+r+1)*2-(1+r)之內(nèi)。由已知條件N,D,Q,及要求誤差范圍,即可反求r以供建表。而只讀存貯裝置(ROM)中的除法表大小為(2D-1),每個只讀存貯裝置的位數(shù)為N+r位。
如圖如示,第1圖所表示的除法運算流程圖,其步驟如下100求X/Y的結(jié)果;101檢查X的值是否小于所設(shè)定的被除數(shù)的最大位值,即2N,且Y的值是否小于所設(shè)定的除數(shù)的最大位減1之值,即2(D-1),若滿足這兩個條件,則表示X,Y值仍在所設(shè)定的范圍內(nèi),執(zhí)行102;若否,則表示除數(shù)已達(dá)到除法表的最大除數(shù)索引,因X>=2N已達(dá)到2N的最大被除數(shù)范圍,而Y>=2(D-1),已達(dá)除法表的最大范圍,若再乘2(左移一位),則將超出除法表范圍,執(zhí)行103;102將X,Y各向左移一位,以達(dá)到分子分母各乘2的作用,而其值仍不變;由于除數(shù)被除數(shù)各增加兩倍,必須回到101以檢查除數(shù)、被除數(shù)是否已達(dá)到設(shè)定的范圍,步驟101與102稱之為位移逼近法;103此時的Y值表示除法表中的最大除數(shù),進(jìn)行查表得到商參考值,將除法表中的最大除數(shù)的商暫存入K中,K代表商右移裝置;104將K中的值暫存入T中,設(shè)計算次數(shù)為0,結(jié)果值R為0;105再測X是否小于2N位,若是,則執(zhí)行107,否則,執(zhí)行106;106此時的被除數(shù)X已超出所設(shè)定的最大被除數(shù)2N,因此將X減去最大被除數(shù),得到的余數(shù)可繼續(xù)作余數(shù)位移逼近法;將T中的值和R值相加得到新的結(jié)果值R;107X小于所設(shè)定的最大被除數(shù),因此繼續(xù)乘2的動作,而K中的值用時向右移,其作用為除2,之后,K值與標(biāo)志值存入T中;其中的標(biāo)志值作為四舍五入之用;108將計算次數(shù)增1;109計算次數(shù)是否小于(Q+r+1)次;110將R中之值與2r相除,即為所求的結(jié)果;
111結(jié)束。
本計算結(jié)果為具有小數(shù)之二進(jìn)制除法結(jié)果,若要四舍五入取整數(shù),只須由小數(shù)點下一位之0(舍去)或1(進(jìn)位),即可得四舍五入的結(jié)果,亦即最接近的整數(shù)解。
為使本發(fā)明的運算流程更為清楚,試舉一實例說明第1圖的流程圖。
請看第2A圖。該圖為本發(fā)明的除法表。本發(fā)明的除法表為一陣列的商數(shù)值,該陣列的商數(shù)值為一預(yù)定的被除數(shù)除以由1至等于該被除數(shù)的除數(shù)所得的運算結(jié)果。如圖所示,其所儲存的數(shù)值為以被除數(shù)16為主,除數(shù)由1至7所得的商(商為四舍五入之值)。
現(xiàn)假設(shè)被除數(shù)為4位,除數(shù)為3位,商為2位,要求誤差為±1,求10÷3。由誤差1=<(Q+r+1)/2(1+r)可得r=1。除法表(i)=(2N/+r)/i,i=0-7。
對照第1圖的流程圖,第2B圖為一實例的運算流程圖。
201先比較被除數(shù)10是否大于16,即24;除數(shù)3是否小于4,即23-1。由于除數(shù)與被除數(shù)皆小于所設(shè)定的范圍,因此執(zhí)行202。
202將10與3各向左移一位以達(dá)到分子分母各乘2的作用,201與202所使用的乘2動作稱之為位移逼近法,其目的逼近所設(shè)的最大被除數(shù),即16。這是由于本發(fā)明的除法表只儲存被除數(shù)為16,除數(shù)由1至7的可能商,若要依查表法,則必須將被除數(shù)控制在大于等于16的范圍內(nèi),以便分離出16的部分。此時的被除數(shù)為20,因20>16,故執(zhí)行203。
203查16/6的商,除法表(6)=5,其二進(jìn)制表示法為00101。
204將203中所得的商,即00101存入T,并設(shè)定R為0,R為結(jié)果值。
205被除數(shù)20大于所設(shè)的最大被除數(shù)16。
206將20/6減去6/6,得到4/6。R儲存第一次得到的商值,即5。
207將余數(shù)4/6的分子乘2。分子乘2則分母也必須乘2,等于查表的所得5作除2的動作,也就是右移一位。K將00101右移為0010·1,以右移出之一位1為標(biāo)志(flag)。T儲存右移后的結(jié)果0010加標(biāo)志1,得結(jié)果為00101,預(yù)留給下次計算使用。
208將計算次數(shù)增1。
209測i是否已達(dá)應(yīng)計算的次數(shù),由于1<4,未達(dá)計算次數(shù),故執(zhí)行210。
210取出上一次計算的預(yù)留值X=8/6,K=2,T=3,因8<16未達(dá)16/6,故此次的結(jié)果為R=5+0=5。
211將余數(shù)8/6的分子再乘2,等效于查表所得再除2(再右移一位),K=0010再右移為K=001·0,此時所移出的位,即標(biāo)志為0,T=K+CF=1,而余數(shù)乘2后的結(jié)果為16/6,預(yù)留給下次計算使用。
212i=1+1=2,由于2<4未達(dá)計算次數(shù),故繼續(xù)執(zhí)行。
213取出上一次計算預(yù)留值X=16/6,K=1,T=1,被除數(shù)16大于等于所設(shè)的最大被除數(shù)16,計算此次結(jié)果R=R+T=5+1=6。
214將X=16/6減去6/6等于0/6,再乘2,得X=0/6,K再右移一位,可得K=0000·1,而T=K+CF=0000+1=0001,K=0000。
215i=2+1=3,由于3<4,未達(dá)計算次數(shù),故繼續(xù)執(zhí)行。
216取出上一次計算預(yù)留值,X=0/6,K=0,T=1,因被除數(shù)0小于16,故此次結(jié)果R=6+0=6。
217將X=0/6乘2得X=0/6,K再右移一位元,得K=0000·0,T=K+CF,T=0+0=0預(yù)留給下次計算使用。
218i=3+1=4=Q+r+1,已達(dá)計算次數(shù)。
219結(jié)果為X/Y=6/2r=3,由結(jié)果得計算誤差10/3-3=1/3,而(1/3)<1,符合條件。
第3圖為本發(fā)明的最佳實施例的功能方塊圖。如圖所示,其裝置包含除數(shù)左移裝置201,被除數(shù)左移裝置202,左移控制器203,除法表204,商右移裝置205,與門裝置(AND)206,加法裝置207,時鐘脈沖裝置208。
如圖所示,除數(shù)左移裝置201為D位,儲存除數(shù)Y,并有左移的功能。被除數(shù)左移裝置202為N+1位(N代表被除數(shù)的位數(shù))。被除數(shù)左移裝置202儲存被除數(shù)X,并有左移的功能。以上兩裝置隨著時鐘脈沖裝置208的時鐘脈沖而向左移動,但除數(shù)左移裝置201可由左移控制器203控制其向左移的動作。
以上的除數(shù)左移裝置201、被除數(shù)左移裝置202以及左移控制器203主要執(zhí)行位移逼近法。為除數(shù)左移裝置201或被除數(shù)左移裝置202的最高位(MSB)為1時,表示除數(shù)或被除數(shù)已大于預(yù)設(shè)的最大被除數(shù)。此時,必有一“1”的數(shù)值輸入左移控制器203,并由控制線212將“1”的數(shù)值輸入除數(shù)左移裝置201,使之停止左移的動作。啟動訊號經(jīng)由線209啟動除法表215,以停止左移后的除數(shù)為除數(shù)索引值,由線213將除數(shù)索引值輸入除法表,進(jìn)行查表。
除法表215裝在只讀存貯器204中。檢索得到的商輸入商右移裝置205中。商右移裝置205執(zhí)行右移的動作,也就是執(zhí)行除二的作用。當(dāng)商右移裝置205向右移一位的同時,被除數(shù)左移裝置202也向左移一位,此為執(zhí)行余數(shù)逼近法。
與門裝置206控制加法裝置207的輸入。當(dāng)被除數(shù)右移裝置202的最高位(MSB)為1時,與門裝置206便讓商右移裝置205中的值通過,并輸入加法裝置207中,加以累加。若被除數(shù)左移裝置202的最高位(MSB)為0時,與門裝置206便禁止商右移裝置205中的值通過,使加法裝置207執(zhí)行加0動作。此為執(zhí)行累加法,將每次查表所得的商累加,以得到最后的商。
時鐘脈沖裝置208將時鐘脈沖訊號傳送到除數(shù)左移裝置201、被除數(shù)左移裝置202、商右移裝置205、與門裝置206與加法裝置207,使之隨著時鐘脈沖訊號而作左移或右移的動作及進(jìn)行加法動作。
再以上述的例子作說明,求10/3。設(shè)N=4,D=3,Q=2,r=1,計算次數(shù)由時鐘脈沖控制為Q+r+1=4次,其二進(jìn)制表示法為1010----,0011除數(shù)左移裝置201中儲存的數(shù)為011。被除數(shù)左移裝置202中儲存的數(shù)為01010。
由于被除數(shù)小于所設(shè)的最大被除數(shù),除數(shù)左移裝置201與被除數(shù)左移裝置202同時向左移一位,其所存的數(shù)分別為110與10100。被除數(shù)10100現(xiàn)為20,已大于16,于是左移控制器203使除數(shù)左移裝置201停止向左移動,并以0110為除數(shù)索引,進(jìn)行查表,得到商參考值為00101(四舍五入后的值)。
商參考值00101存入商右移裝置205。由于被除數(shù)左移裝置的最高位元為1,因此,與門裝置206控制加法裝置207的輸入,使商參考值00101加入加法裝置207內(nèi)。加入加法裝置207后加法裝置207的內(nèi)容為101,此時計算次數(shù)為1,小于4,繼續(xù)執(zhí)行。
被除數(shù)左移裝置202依時鐘脈沖裝置208而繼續(xù)向左移動,其所存的值為01000,且商右移為00010,標(biāo)志為1。由于被除數(shù)左移裝置的最高位為0,因此,與門裝置206控制加法裝置207的輸入,使00010被與門裝置206截止,使加法裝置207執(zhí)行加0的結(jié)果后仍為5。此時計算次數(shù)為2,小于4,繼續(xù)執(zhí)行。
被除數(shù)左移裝置202依時鐘脈沖裝置208再繼續(xù)向左移動,其所存的值為10000,且商右移為00001,標(biāo)志為0。由于被除數(shù)左移裝置的最高位為1,鎖存裝置206使商右移裝置205的值00001及標(biāo)志0通過,并由時鐘脈沖裝置208控制,分別將商及標(biāo)志輸入加法裝置207,得到商為110。此時計算次數(shù)為3,小于4,繼續(xù)執(zhí)行。
被除數(shù)左移裝置202依時鐘脈沖裝置208又繼續(xù)向左移動,其所存的值為00000,且商右移為0000,標(biāo)志為1。由于被除數(shù)左移裝置的最高位為0,因此與門裝置206控制加法裝置207的輸入,使商右移裝置205的值截止,加法裝置207執(zhí)行0后,結(jié)果仍為110。此時計算次數(shù)已達(dá)4次,此110即為結(jié)果,其中較低的r位為小數(shù)點位數(shù),此范例因r=1,故結(jié)果為11·0,其十進(jìn)位值為3,檢查誤差(10/3)-3=1/3,小于要求誤差±1內(nèi),故符合要求。
以上所述僅本發(fā)明的較佳實施例而已,且已達(dá)廣泛的實用功效,凡依本發(fā)明的權(quán)利要求書所作之均等變化與修飾,皆仍屬本發(fā)明專利覆蓋范圍內(nèi)。
權(quán)利要求
1.一種除法運算裝置,該裝置利用位移及加法以得到除數(shù)與被除數(shù)的商,該裝置包含除數(shù)左移裝置,用以輸入除數(shù),并將該除數(shù)的位左移;被除數(shù)左移裝置,用以輸入被除數(shù),并將該被除數(shù)的位左移;左移控制器,用以控制該除數(shù)左移裝置左移的動作,及在除數(shù)或被除數(shù)大于一預(yù)設(shè)值時停止該除數(shù)左移裝置左移的動作;商右移裝置,用以輸入除法表檢索所得的商參考值,并將該商參考值右移;與門裝置,用以輸入該被除數(shù)左移裝置的最高位輸出與該商參考值,并將之做與(AND)的動作;加法裝置,用以將與門之輸出累加以得到結(jié)果。
2.根據(jù)權(quán)利要求第1項的除法運算裝置,其中的除數(shù)左移裝置輸出一索引值用以作為檢索上述的除法表的索引值。
3.根據(jù)權(quán)利要求第1項的除法運算裝置,其中的左移控制器還包含邏輯或門(OR GATE),用以輸入上述的除數(shù)左移裝置的最高位輸出與上述的被除數(shù)左移裝置的最高位輸出,并進(jìn)行或運算輸出一控制訊號;及該控制訊號用以控制上述的除數(shù)左移裝置左移動作的進(jìn)行與停止,與控制啟動檢索上述的除法。
4 根據(jù)權(quán)利要求第1項的除法運算裝置,其中的除法表為一個陣列的商數(shù)值,該陣列的商數(shù)值為一預(yù)定的被除數(shù)除以由1至等于該被除數(shù)的除數(shù)所得的運算結(jié)果。
5.一種除法快速運算方法,利用位移及加法達(dá)到除法的功能,該方法包含下列步驟(1)讀取除數(shù)與被除數(shù);(2)執(zhí)行位移逼近法,使該除數(shù)與該被除數(shù)大于等于一預(yù)定的最大被除數(shù),得到第一值;(3)以第一值的除數(shù)為索引檢索除法表,得到一商參考值;(4)將該預(yù)定的最大被除數(shù)除以第一值的除數(shù),得到第二值;(5)將該第一值減去該第二值,得到一余數(shù);(6)執(zhí)行余數(shù)位移逼近法,使該余數(shù)的分子大于等于該預(yù)定的最大被除數(shù),得到第三值;(7)執(zhí)行累加法,以得到最后的結(jié)果。
6.根據(jù)權(quán)利要求第5項的除法運算方法,其中步驟(2)的位移逼近法包含步驟(8)當(dāng)上述的除數(shù)與上述的被除數(shù)小于的預(yù)定最大被除數(shù)時,則將上述除數(shù)與上述的被除數(shù)同時乘二,得到上述的第一值。
7.根據(jù)權(quán)利要求第5項的除法運算方法,其中步驟(2)的位移逼近法包含步驟(9)當(dāng)上述除數(shù)與上述的被除數(shù)大于等于上述的預(yù)定的最大被除數(shù)時,則停止乘二的動作,得到上述的第一值。
8.根據(jù)權(quán)利要求第5項的除法運算方法,其中步驟(6)的余數(shù)位移逼近包含步驟(10)當(dāng)上述的余數(shù)的分子小于上述的預(yù)定的最大被除數(shù),則將上述的除數(shù)的分子作乘二的動作,得到上述的第三值。
9.根據(jù)權(quán)利要求第5項的除法運算方法,其中步驟(6)的余數(shù)位移逼近法包含步驟(11)當(dāng)上述的余數(shù)的分子乘二時,上述的商參考值同時除二。
10.根據(jù)權(quán)利要求第5項的除法運算方法,其中步驟(6)的余數(shù)位移逼近法包含步驟(12)設(shè)定誤差范圍在(Q+r+1)*2-(1+r)之內(nèi)。
11.根據(jù)權(quán)利要求第5項的除法運算方法,其中步驟(7)的累加法包含步驟(13)設(shè)定計算參考值,作為累加的次數(shù)。
12.根據(jù)權(quán)利要求第5項的除法運算方法,其中步驟(7)的累加法包含步驟(14)將上述的商參考值與上述的第三值相加。
13.根據(jù)權(quán)利要求第5項的除法運算方法,其中步驟(7)的累加法包含步驟(15)當(dāng)上述的第三值的分子大于等于上述的預(yù)定最大被除數(shù),執(zhí)行步驟(7)。
全文摘要
本發(fā)明為一種無需除法器的二位元除法運算方法與裝置。該方法與裝置用二進(jìn)制的位移及加法的技巧以減化除法運算過程,使誤差限制在設(shè)定的范圍內(nèi),并加快運算速度。
文檔編號G06F9/302GK1137133SQ9510730
公開日1996年12月4日 申請日期1995年5月30日 優(yōu)先權(quán)日1995年5月30日
發(fā)明者陳俊雄, 張家志, 陳保福 申請人:合泰半導(dǎo)體股份有限公司