除法快速运算方法与装置的制作方法

文档序号:6601546阅读:594来源:国知局
专利名称:除法快速运算方法与装置的制作方法
技术领域
本发明涉及针对长除法的缺点而设计的除法运算方法与装置。本发明可应用于任何除法的运算,尤适且于无硬件除法指令的微处理控制器,以提高除法运算速度,并使商的误差在设定范围内。
过去,在无硬件除法指令的微处理控制器中,一般皆采用长除法作除法运算。二位的长除法运算即一连串的减法以求得商数,以正整数8除以3为例,长除法的运算步骤如下除數 被除數商---- ---- ---00111000 ?步驟1 00111000 1-0011------0101-0011步驟2 0011 ------0010 10如上图所示,被除数8以二进制表示为1000,除数3的二进制表示法为0011。在第一步骤中,先比较除数与被除数的大小。由于除数比较小,先将被除数减去除数,余数为0101。经过一次的减法运算后,商则进1。
在第二步骤中,余数仍大于除数。因此,再将余数减去除数,得到0010;商则再进1,得到10。此时,余数小于除数,运算即可停止。最后之值即为0010,余数为0010。
若以减法及判断做手算长除法,其步骤如下001011_)----100011-----10步驟 1011)----10001<11,商爲0;步驟 2011)----100010<11,商爲0;步驟 3111)----100011-----1100>11,商爲1,餘數爲1;步驟 41011)----100011-----1010<11,商爲10,餘數爲10。
长除法的二位元运算十分冗长复杂且速度慢,不适用于功能简单的微处理控制器。为解决长除法的缺点,另一方法为查表法。查表法不须任何除法装置或运算,只要将除法表装设在只读存贮器中,以除数和被除数为索引,检索除法表中的商值即可。虽然查表法比长除法更有效率,但除法表乃为二向表示方式,其大小成长快速、须占用较大的存贮空间,不适用于低价位的微处理器。
基于上述的问题与缺点,本发明主要在于提出新的解决方法以简化除法运算程序,并节省储存除法表所须的存贮空间。
本发明的主要目的在提供一种利用查表与位移及加法(shift=add)的技巧而能达到除法运算功效的除法运算方法与装置。
本发明的另一目的在于提供一种不须除法器的除法运算方法与装置,其能简化除法运算程序,并加快运算效率。
本发明的又一目的在提供一种节省存贮空间的除法表。
本发明的再一目的在提供一种效率高且能控制误差范围的除法运算方法与装置。
基于上述的目的,本发明使用余数定理及1/2次幂级数多项式表示法为流程。本发明的装置包含除数左移装置,用以输入除数,并将该除数左移;被除数左移装置,用以输入被除数,并将该被除数左移;左移控制器,用以控制该除数左移的动作;商右移装置,用以输入除法表的检索所得,并将之右移;以上的装置利用位移方法达到乘二或除二的目的。
本发明还包含与门装置与加法装置。与门装置用以输入被除数左移装置的最高位输出与商右移装置的输出,并将它们做与(AND)运算。加法装置用以输入与门装置的输出值,并将与门装置的输出值累加。以上的装置是利用加法将商数值累加,使最后商的误差在预定的范围内。
为节省储存除法表的存贮空间,本发明的除法表还包含一单向的阵列商数值,该阵列的商数值为一预定的被除数除以由1至等于该除数的除数所得的运算结果。
第1图为本发明的除法运算的概念流程图。
第2A图为本发明的除法表。
第2B图为本发明依据第1图的实例运算程序。
第3图为本发明的最佳实施例的功能方块图。
第1图为本发明的概念流程图。以二进制的X除以Y为例,Q为二进制商的最大位数,其要求误差限制在±(Q+r+1)*2-(1+r)之内。除法表中所存的商为除法表(i)=2N+r/i,取四舍五入整数。i代表除数索引,其大小由1至(2D-1)的数,D代表除数的最大位数,N为被除数的最大位数,r为误差参考值。
其主要原理为余数定理及1/2幂次级数多项式表示定理。其中,r的功能为将原来的被除数先于以2r加大(2N+r/i),以达到降低误差的作用。而误差范围乃其原来的商因2r加大之故,所以共为Q+r位。为求其至小数点下一位,故须执行(Q+r+1)次,且每次误差最大为1/2。如此,求得总和最大误差为(Q+r+1)*(1/2),最后再将2r加大还原,得到最大误差限制在±(Q+r+1)*2-(1+r)之内。由已知条件N,D,Q,及要求误差范围,即可反求r以供建表。而只读存贮装置(ROM)中的除法表大小为(2D-1),每个只读存贮装置的位数为N+r位。
如图如示,第1图所表示的除法运算流程图,其步骤如下100求X/Y的结果;101检查X的值是否小于所设定的被除数的最大位值,即2N,且Y的值是否小于所设定的除数的最大位减1之值,即2(D-1),若满足这两个条件,则表示X,Y值仍在所设定的范围内,执行102;若否,则表示除数已达到除法表的最大除数索引,因X>=2N已达到2N的最大被除数范围,而Y>=2(D-1),已达除法表的最大范围,若再乘2(左移一位),则将超出除法表范围,执行103;102将X,Y各向左移一位,以达到分子分母各乘2的作用,而其值仍不变;由于除数被除数各增加两倍,必须回到101以检查除数、被除数是否已达到设定的范围,步骤101与102称之为位移逼近法;103此时的Y值表示除法表中的最大除数,进行查表得到商参考值,将除法表中的最大除数的商暂存入K中,K代表商右移装置;104将K中的值暂存入T中,设计算次数为0,结果值R为0;105再测X是否小于2N位,若是,则执行107,否则,执行106;106此时的被除数X已超出所设定的最大被除数2N,因此将X减去最大被除数,得到的余数可继续作余数位移逼近法;将T中的值和R值相加得到新的结果值R;107X小于所设定的最大被除数,因此继续乘2的动作,而K中的值用时向右移,其作用为除2,之后,K值与标志值存入T中;其中的标志值作为四舍五入之用;108将计算次数增1;109计算次数是否小于(Q+r+1)次;110将R中之值与2r相除,即为所求的结果;
111结束。
本计算结果为具有小数之二进制除法结果,若要四舍五入取整数,只须由小数点下一位之0(舍去)或1(进位),即可得四舍五入的结果,亦即最接近的整数解。
为使本发明的运算流程更为清楚,试举一实例说明第1图的流程图。
请看第2A图。该图为本发明的除法表。本发明的除法表为一阵列的商数值,该阵列的商数值为一预定的被除数除以由1至等于该被除数的除数所得的运算结果。如图所示,其所储存的数值为以被除数16为主,除数由1至7所得的商(商为四舍五入之值)。
现假设被除数为4位,除数为3位,商为2位,要求误差为±1,求10÷3。由误差1=<(Q+r+1)/2(1+r)可得r=1。除法表(i)=(2N/+r)/i,i=0-7。
对照第1图的流程图,第2B图为一实例的运算流程图。
201先比较被除数10是否大于16,即24;除数3是否小于4,即23-1。由于除数与被除数皆小于所设定的范围,因此执行202。
202将10与3各向左移一位以达到分子分母各乘2的作用,201与202所使用的乘2动作称之为位移逼近法,其目的逼近所设的最大被除数,即16。这是由于本发明的除法表只储存被除数为16,除数由1至7的可能商,若要依查表法,则必须将被除数控制在大于等于16的范围内,以便分离出16的部分。此时的被除数为20,因20>16,故执行203。
203查16/6的商,除法表(6)=5,其二进制表示法为00101。
204将203中所得的商,即00101存入T,并设定R为0,R为结果值。
205被除数20大于所设的最大被除数16。
206将20/6减去6/6,得到4/6。R储存第一次得到的商值,即5。
207将余数4/6的分子乘2。分子乘2则分母也必须乘2,等于查表的所得5作除2的动作,也就是右移一位。K将00101右移为0010·1,以右移出之一位1为标志(flag)。T储存右移后的结果0010加标志1,得结果为00101,预留给下次计算使用。
208将计算次数增1。
209测i是否已达应计算的次数,由于1<4,未达计算次数,故执行210。
210取出上一次计算的预留值X=8/6,K=2,T=3,因8<16未达16/6,故此次的结果为R=5+0=5。
211将余数8/6的分子再乘2,等效于查表所得再除2(再右移一位),K=0010再右移为K=001·0,此时所移出的位,即标志为0,T=K+CF=1,而余数乘2后的结果为16/6,预留给下次计算使用。
212i=1+1=2,由于2<4未达计算次数,故继续执行。
213取出上一次计算预留值X=16/6,K=1,T=1,被除数16大于等于所设的最大被除数16,计算此次结果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,未达计算次数,故继续执行。
216取出上一次计算预留值,X=0/6,K=0,T=1,因被除数0小于16,故此次结果R=6+0=6。
217将X=0/6乘2得X=0/6,K再右移一位元,得K=0000·0,T=K+CF,T=0+0=0预留给下次计算使用。
218i=3+1=4=Q+r+1,已达计算次数。
219结果为X/Y=6/2r=3,由结果得计算误差10/3-3=1/3,而(1/3)<1,符合条件。
第3图为本发明的最佳实施例的功能方块图。如图所示,其装置包含除数左移装置201,被除数左移装置202,左移控制器203,除法表204,商右移装置205,与门装置(AND)206,加法装置207,时钟脉冲装置208。
如图所示,除数左移装置201为D位,储存除数Y,并有左移的功能。被除数左移装置202为N+1位(N代表被除数的位数)。被除数左移装置202储存被除数X,并有左移的功能。以上两装置随着时钟脉冲装置208的时钟脉冲而向左移动,但除数左移装置201可由左移控制器203控制其向左移的动作。
以上的除数左移装置201、被除数左移装置202以及左移控制器203主要执行位移逼近法。为除数左移装置201或被除数左移装置202的最高位(MSB)为1时,表示除数或被除数已大于预设的最大被除数。此时,必有一“1”的数值输入左移控制器203,并由控制线212将“1”的数值输入除数左移装置201,使之停止左移的动作。启动讯号经由线209启动除法表215,以停止左移后的除数为除数索引值,由线213将除数索引值输入除法表,进行查表。
除法表215装在只读存贮器204中。检索得到的商输入商右移装置205中。商右移装置205执行右移的动作,也就是执行除二的作用。当商右移装置205向右移一位的同时,被除数左移装置202也向左移一位,此为执行余数逼近法。
与门装置206控制加法装置207的输入。当被除数右移装置202的最高位(MSB)为1时,与门装置206便让商右移装置205中的值通过,并输入加法装置207中,加以累加。若被除数左移装置202的最高位(MSB)为0时,与门装置206便禁止商右移装置205中的值通过,使加法装置207执行加0动作。此为执行累加法,将每次查表所得的商累加,以得到最后的商。
时钟脉冲装置208将时钟脉冲讯号传送到除数左移装置201、被除数左移装置202、商右移装置205、与门装置206与加法装置207,使之随着时钟脉冲讯号而作左移或右移的动作及进行加法动作。
再以上述的例子作说明,求10/3。设N=4,D=3,Q=2,r=1,计算次数由时钟脉冲控制为Q+r+1=4次,其二进制表示法为1010----,0011除数左移装置201中储存的数为011。被除数左移装置202中储存的数为01010。
由于被除数小于所设的最大被除数,除数左移装置201与被除数左移装置202同时向左移一位,其所存的数分别为110与10100。被除数10100现为20,已大于16,于是左移控制器203使除数左移装置201停止向左移动,并以0110为除数索引,进行查表,得到商参考值为00101(四舍五入后的值)。
商参考值00101存入商右移装置205。由于被除数左移装置的最高位元为1,因此,与门装置206控制加法装置207的输入,使商参考值00101加入加法装置207内。加入加法装置207后加法装置207的内容为101,此时计算次数为1,小于4,继续执行。
被除数左移装置202依时钟脉冲装置208而继续向左移动,其所存的值为01000,且商右移为00010,标志为1。由于被除数左移装置的最高位为0,因此,与门装置206控制加法装置207的输入,使00010被与门装置206截止,使加法装置207执行加0的结果后仍为5。此时计算次数为2,小于4,继续执行。
被除数左移装置202依时钟脉冲装置208再继续向左移动,其所存的值为10000,且商右移为00001,标志为0。由于被除数左移装置的最高位为1,锁存装置206使商右移装置205的值00001及标志0通过,并由时钟脉冲装置208控制,分别将商及标志输入加法装置207,得到商为110。此时计算次数为3,小于4,继续执行。
被除数左移装置202依时钟脉冲装置208又继续向左移动,其所存的值为00000,且商右移为0000,标志为1。由于被除数左移装置的最高位为0,因此与门装置206控制加法装置207的输入,使商右移装置205的值截止,加法装置207执行0后,结果仍为110。此时计算次数已达4次,此110即为结果,其中较低的r位为小数点位数,此范例因r=1,故结果为11·0,其十进位值为3,检查误差(10/3)-3=1/3,小于要求误差±1内,故符合要求。
以上所述仅本发明的较佳实施例而已,且已达广泛的实用功效,凡依本发明的权利要求书所作之均等变化与修饰,皆仍属本发明专利覆盖范围内。
权利要求
1.一种除法运算装置,该装置利用位移及加法以得到除数与被除数的商,该装置包含除数左移装置,用以输入除数,并将该除数的位左移;被除数左移装置,用以输入被除数,并将该被除数的位左移;左移控制器,用以控制该除数左移装置左移的动作,及在除数或被除数大于一预设值时停止该除数左移装置左移的动作;商右移装置,用以输入除法表检索所得的商参考值,并将该商参考值右移;与门装置,用以输入该被除数左移装置的最高位输出与该商参考值,并将之做与(AND)的动作;加法装置,用以将与门之输出累加以得到结果。
2.根据权利要求第1项的除法运算装置,其中的除数左移装置输出一索引值用以作为检索上述的除法表的索引值。
3.根据权利要求第1项的除法运算装置,其中的左移控制器还包含逻辑或门(OR GATE),用以输入上述的除数左移装置的最高位输出与上述的被除数左移装置的最高位输出,并进行或运算输出一控制讯号;及该控制讯号用以控制上述的除数左移装置左移动作的进行与停止,与控制启动检索上述的除法。
4 根据权利要求第1项的除法运算装置,其中的除法表为一个阵列的商数值,该阵列的商数值为一预定的被除数除以由1至等于该被除数的除数所得的运算结果。
5.一种除法快速运算方法,利用位移及加法达到除法的功能,该方法包含下列步骤(1)读取除数与被除数;(2)执行位移逼近法,使该除数与该被除数大于等于一预定的最大被除数,得到第一值;(3)以第一值的除数为索引检索除法表,得到一商参考值;(4)将该预定的最大被除数除以第一值的除数,得到第二值;(5)将该第一值减去该第二值,得到一余数;(6)执行余数位移逼近法,使该余数的分子大于等于该预定的最大被除数,得到第三值;(7)执行累加法,以得到最后的结果。
6.根据权利要求第5项的除法运算方法,其中步骤(2)的位移逼近法包含步骤(8)当上述的除数与上述的被除数小于的预定最大被除数时,则将上述除数与上述的被除数同时乘二,得到上述的第一值。
7.根据权利要求第5项的除法运算方法,其中步骤(2)的位移逼近法包含步骤(9)当上述除数与上述的被除数大于等于上述的预定的最大被除数时,则停止乘二的动作,得到上述的第一值。
8.根据权利要求第5项的除法运算方法,其中步骤(6)的余数位移逼近包含步骤(10)当上述的余数的分子小于上述的预定的最大被除数,则将上述的除数的分子作乘二的动作,得到上述的第三值。
9.根据权利要求第5项的除法运算方法,其中步骤(6)的余数位移逼近法包含步骤(11)当上述的余数的分子乘二时,上述的商参考值同时除二。
10.根据权利要求第5项的除法运算方法,其中步骤(6)的余数位移逼近法包含步骤(12)设定误差范围在(Q+r+1)*2-(1+r)之内。
11.根据权利要求第5项的除法运算方法,其中步骤(7)的累加法包含步骤(13)设定计算参考值,作为累加的次数。
12.根据权利要求第5项的除法运算方法,其中步骤(7)的累加法包含步骤(14)将上述的商参考值与上述的第三值相加。
13.根据权利要求第5项的除法运算方法,其中步骤(7)的累加法包含步骤(15)当上述的第三值的分子大于等于上述的预定最大被除数,执行步骤(7)。
全文摘要
本发明为一种无需除法器的二位元除法运算方法与装置。该方法与装置用二进制的位移及加法的技巧以减化除法运算过程,使误差限制在设定的范围内,并加快运算速度。
文档编号G06F9/302GK1137133SQ9510730
公开日1996年12月4日 申请日期1995年5月30日 优先权日1995年5月30日
发明者陈俊雄, 张家志, 陈保福 申请人:合泰半导体股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1