基于可编程逻辑器件的二进制移位除法的处理过程的制作方法

文档序号:6481826阅读:218来源:国知局
专利名称:基于可编程逻辑器件的二进制移位除法的处理过程的制作方法
技术领域
本发明涉及一种基于可编程逻辑器件的二进制移位除法的处理过程,更具体地说,涉及 在可编程逻辑器件中须使用除法运算的快速处理过程。
背景技术
浮点性能是当今微处理器体系结构的关键问题。在四种基本浮点运算,即加、减、乘除 运算中,除法对于微处理器体系结构来说是最占用资源的一种运算。
与本发明最接近的一项专利是于2006年4月19日在中国公开的国际申请"超高基数除 法"(公开号为CN 1761938A)。它提供了使用窄数据路径实现超高基数除法的方法、机器和 系统。接收到用于超高基数除法计算的分子和分母。从一个数据结构中获得所述分母的近似 倒数。将所述分子和分母根据所述倒数进行预縮放。所述分母被分解为一个等效表达式,其 导致多个前导无效值。接着,通过形成第一积并且减去所述等效表达式来修改当前余数,从 而迭代地组装商。
本发明与上述"获得所述分母的近似倒数"的实现方案和技术上相比更简单,更容易实 现,在空间占用上节约资源。它以二进制移位除法的一种新的算法计算,结果一样精确。

发明内容
1、 所要解决的技术问题
针对以上问题本发明提供了一种在可编程逻辑器件中运用,能减少空间资源的占用,提 高运算速度,且实现方法简单,精度有保证的二进制移位除法的处理过程。
2、 技术方案
一种基于可编程逻辑器件的二进制移位除法的处理过程,实现步骤如下
按精度要求,设二进制被除数A[]须有k位,则在可编程逻辑器件中的二进制被除数表
示为A[k-l..O];
第一步可编程逻辑器件中的逻辑单元carry,完成数据移位过程;
A[k-l.. O]右移N位,变成二进制数N[k-1.. O],其中0至k-l-N位为: A[N]值赋给N[O], A[N+1]值赋给N[1],……,A[k-l]值赋给N[k-l-N] A[k-1. . 0]右移P位,变成二进制数P[k-1. . 0],其中0至k-1-P位为 A[P]值赋给P[O], A[P+1]值赋给P[1],……,A[k-l]值赋给P[k-1-P]
A[k-1.. O]右移Q位,变成二进制数Q[k-1.. O],其中0至k-l-Q位为 A[Q]值赋给Q[O], A[Q+1]值赋给Q[1],……,A[k-l]值赋给O[k-1-Q]
第二步:可编程逻辑器件中的逻辑单元GND为置O功能,完成N[k-1..0]、P[k-l..O]、 Q[k-1..0]、……的高位置O过程;
'N[k-N]、 N[k-N+l]、 ......、 N[k-l]置O:
.P[k-P]、 P[k-P+l]、 ......、 P[k-l]置O;
'Q[k-Q]、 Q[k-Q+l]、……、Q[k-1]置0;
第三步可编程逻辑器件中的模块LPM—ADD—SUB取其加法器功能,完成相加过程; '二进制数N[k-1..0]加上二进制数P[k-l..O],再加上二进制数Q[k-l..O],……( 其和H[k-l.. 0]即是被除数A[k-l.. O]除以除数m的商;
其中,l.二进制数A[k-1..0] 、 二进制数N[k-l..O]、 二进制数P[k-l..O]、 二进制数 Q[k-l..O]、……和二进制数H[k-l..O]均为k位的二进制数;2.N[k-1. 0]=A[k-1..0] + 2w3.P[k-l..0]=A[k-1.4.Q[k-1..0]=A[k-l..0] + 2e5.H[k-1. 0]=N[k-1..0]+ P[k-1..0]+ Q[k-1..0] +
=AHOJ + Z^ A[k-1..0] + 2P+ A[k-1..0] + 2e+ ......
"A[k-1. .0]+m
3、有益效果
本发明算法在空间占用上节约了资源;能实现精度要求;简单且容易实现;该实现方案 和技术在可编程逻辑器件中运用,速度更有所提高。


图1为二进制移位除法的一种算法流程图2为根据本发明的一个具体实施方案流程图;图3为基于可编程逻辑器件的二进制移位除法的处理过程的实现示意图。
具体实施例方式
下面结合附图和具体实施方式
对本发明作进一步详细地说明。 本二进制移位除法的原理为
利用该除数的取值范围,来确定二进制被除数需要向右移动的位数;以及迭代地组装商 的一部分,所述组装是通过用当前余数取倒数,再以此数的取值范围来确定又一个二进制被 除数所需向右移动的位数;将被除数化为二进制后分别进行上述的移动位数;将各移位后的 二进制数相加;和即为所求商的二进制形式。
还包括取初始除数的倒数的取值范围小于最小的二的幂次方数,来确定二进制被除数需 要移动的位数。
其中在迭代组装的步骤中,所述当前余数的倒数取值范围仍以小于最小的二的幂次方数, 来确定二进制被除数需要移动的位数。
一旦当前余数等于O或者达到期望的精度,迭代就结束。
即1)取 2^<111<2"
则有l/m=l/2w+A,式中A为余数。 (若A等于O或者达到期望的精度,则不再进行第2、 3步了!)
2) ... 1/A-1/ (1/m-l/2"
再取2P—1 <1/A<2P
又有1/riFl/2"+l/2 B ,式中B为余数。 (若B等于O或者达到期望的精度,则不再进行第3步了!)
3) Vl/B=l/ (l/m-l/2w-l/2。
再取22—'<1/8<22
一旦余数等于O或者达到期望的精度,就可以产生所述商将被除数转换为二进制;分别右
移N位、P位、Q位…;相加;和即为所求商的二进制形式。
5如图l所示,设除数为m;获得大于且最接近m的二的幂次方的数据2w,取该幂N为第
一个移动位数;如果(1/m-1/2W)等于0或者达到期望的精度,则将被除数转换为二进制后 右移N位,转换为十进制即为所求商;如果该差值不等于O且未达到期望的精度,则求1/ (1/m-1/2W)且获得大于且最接近1/ (l/m-l/2w)的二的幂次方的数据2、并取该幂P为
第二个移动位数;如果(l/m-l/2w-1/2P)等于0或者达到期望的精度,则将被除数转换为 二进制后分别右移N位、P位后求和,再转换为十进制即为所求商;如果该差值不等于0且 未达到期望的精度,则求1/ (l/m-l/2w_l/2"且获得大于且最接近1/ (1/m-1/2W-1/2尸)
的二的幂次方的数据2Q,取该幂Q为第三个移动位数;如果(1/m-1/2W-1/2P-l/2e)等于
O或者达到期望的精度,则将被除数转换为二进制后分别右移N位、P位、Q位后求和,再转 换为十进制即为所求商;如果该差值不等于O且未达到期望的精度,则继续求……直到
(l/m-l/2w-l/2p-l/2e-……)等于O或者达到期望的精度,则将被除数转换为二进制后分
别右移N位、P位、Q位……后求和;和即为所求商的二进制形式。
如图2所示,此实施具体以除数为41为例对二进制移位除法进行详细描述。 例用移位方法实现除以41。
1) ... 25<41<26 . 1/41=1/26+A
2) .. 1/A=1/ (1/41-1/26) =114
26<U4<27 . . l/41=l/26+l/27+B
3) ..1/B=1/ (1/41-1/26-1/27 ) =1049"21()
...l/41"l/26+l/27+l/21Q 艮P:将被除数转换为二进制;分别右移六位、七位、十位;相加;和即为除数为41的商 的二进制形式。如图3所示,为图2的一个具体实施方案a[19.. 0] +41在可编程逻辑器件中实现二进制 移位除法的过程。图中的carry将a[19.. O]各位值按要求分别进行传送,b[19.. O]为a[19.. 0] 右移六位后的二进制值,c[19..0]为a[19.,0]右移七位后的二进制值,d[19..0]为a[19..0] 右移十位后的二进制值。模块LPM—ADD—SUB取其加法器功能,将dataa[]与datab[]相加得和 result[]。 ad41[19. .0]即为b[19..0]、 c[19..0]、 (1[19..0]之和,也即是a[19.. O]除以 41的商的二进制形式。通过如此移位进行的除法运算,只需几十个逻辑单元就槁定了,所以 在普通容量的可编程逻辑器件中也能轻易实现除法功能。
一种基于可编程逻辑器件的二进制移位除法的处理过程,见图1思路,其实现步骤如下 按精度要求,设二进制被除数A[]须有k位,则在可编程逻辑器件中的二进制被除数表 示为A[k-l..O]。
第一步可编程逻辑器件中的逻辑单元carry,完成数据移位过程;
A[k-1.. O]右移N位,变成二进制数N[k-1.. 0],其中0至k-1-N位为 A[N]值赋给N[O], A[N+1]值赋给N[1],……,A[k-l]值赋给N[k-l-N]
A[k-1.. O]右移P位,变成二进制数P[k-1.. 0],其中0至k-1-P位为 A[P]值赋给P[O], A[P+1]值赋给P[1],……,A[k-l]值赋给P[k-1-P]
A[k-l.. O]右移Q位,变成二进制数Q[k-1.. 0],其中0至k-1-Q位为 A[Q]值赋给Q[O], A[Q+1]值赋给Q[1],……,A[k-l]值赋给Q[k-1-Q].
第二步:可编程逻辑器件中的逻辑单元GND为置O功能,完成N[k-1..0]、P[k-l..O]、 Q[k-l..O]、……的高位置O过程;
N[k-N]、 N[k-N+l]、……、N[k-l]置O。
P[k-P]、 P[k-P+l]、……、P[k-l]置O。
Q[k-Q]、 Q[k-Q+l]、……、Q[k-l]置O。
第三步可编程逻辑器件中的模块LPM一ADD一SUB取其加法器功能,完成相加过程; '二进制数N[k-l..O]加上二进制数P[k-l..O],再加上二进制数Q[k-l..O],……q 其和H[k-1.. 0]即是被除数A[k-1.. 0]除以除数ra的商。
注L二进制数A[k-l..O] 、 二进制数N[k-l..O]、 二进制数P[k-l..O]、 二进制数 Q[k-l..O]、……和二进制数H[k-l..O]均为k位的二进制数;2. N[k-1..0]= A[k_1..0] + 2W
3. P[k-1..0]= A[k-1..0] + 2P
4. Q[k-1..0]= A[k-1..0] + 2e
5. H[k-1..0]= N[k-1..0]+ P[k-1..0]+ Q[k-1..0]+……
=A[k-l. .0] + 2w+ A[k-1..0] + 2P+ A[k-l. .0] + 2e+ ......
"A[k-l.. 0]+m
具体如图3的例子,在可编程逻辑器件中实现二进制移位除法的处理过程,步骤如下
第一步可编程逻辑器件中的逻辑单元carry,完成数据移位过程;
二进制数a[19.. 0]右移六位变成二进制数b[19. 0]:
a6值赋给b0, a7值赋给bl, a8值赋给b2, a9值赋给b3, a10值赋给b4, all值 赋给b5, al2值赋给b6, a13值赋给b7, al4值赋给b8, al5值赋给b9, al6值赋给b10, a17 值赋给bll, al8值赋给b12, al9值赋给b13。
二进制数a[19.. 0]右移七位变成二进制数c[19.. 0]:
a7值赋给c0, a8值赋给cl, a9值赋给c2, a10值赋给c3, all值赋给c4, a12 值赋给c5, al3值赋给c6, al4值赋给c7, al5值赋给c8, al6值赋给c9, al7值赋给c10, al8值赋给c11, al9值赋给c12。
二进制数a[19.. 0]右移十位变成二进制数d[19.. 0]:
alO值赋给dO, all值赋给dl, al2值赋给d2, al3值赋给d3, al4值赋给d4, a15 值赋给d5, al6值赋给d6, al7值赋给d7, a18值赋给d8, al9值赋给d9。
第二步:可编程逻辑器件中的逻辑单元GND为置0功能,完成b[19.. 0]、c[19.. 0] 、d[19.. 0] 的高位置O过程;
bl4、 b15、 b16、 b17、 b18、 b19置0。
c13、 c14、 c15、 c16、 c17、 c18、 c19置0。
d10、 dll、 d12、 d13、 d14、 d15、 d16、 d17、 d18、 d19置0。
第三步可编程逻辑器件中的模块LPM一ADD一SUB取其加法器功能,完成相加过程; .二进制数a[19..0]加上二进制数b[19..0],和是e[19..0]。
二进制数e[19..0]加上二进制数d[19..0],和是ad41[19..0]。
注1. 二进制数a[19.. 0] 、 二进制数b[19.. 0] 、二进制数c[19.. 0] 、二进制数d[19.. 0]、
8二进制数e[19.. 0]和二进制数ad41 [19.. O]均为二十位的二进制数;
2. b[19..0]=a[19. .0] + 26
3. c[19..0]=a[l9. .0] + 27
4. d[19..0]=a[19..0] + 21()
5. ad41 [19.. 0]= b[19.. 0]+ c[19.. 0]+ d[19.. 0]
=a[19..0] + 26+a[19. .0] + 27+ a[19. .0] + 2
=a[19. .O]X ( 24 +23+l) +210
=a[19,.0]十(1024 + 25) =a[19. .0]+40.96 ^a[19. .0]+4权利要求
1、一种基于可编程逻辑器件的二进制移位除法的处理过程,其特征在于实现步骤如下按精度要求,设二进制被除数A[]须有k位,则在可编程逻辑器件中的二进制被除数表示为A[k-1..0];第一步可编程逻辑器件中的逻辑单元carry,完成数据移位过程;·A[k-1..0]右移N位,变成二进制数N[k-1..0],其中0至k-1-N位为A[N]值赋给N
,A[N+1]值赋给N[1],……,A[k-1]值赋给N[k-1-N]·A[k-1..0]右移P位,变成二进制数P[k-1..0],其中0至k-1-P位为A[P]值赋给P
,A[P+1]值赋给P[1],……,A[k-1]值赋给P[k-1-P]·A[k-1..0]右移Q位,变成二进制数Q[k-1..0],其中0至k-1-Q位为A[Q]值赋给Q
,A[Q+1]值赋给Q[1],……,A[k-1]值赋给Q[k-1-Q]第二步可编程逻辑器件中的逻辑单元GND为置0功能,完成N[k-1..0]、P[k-1..0]、Q[k-1..0]、……的高位置0过程;·N[k-N]、N[k-N+1]、……、N[k-1]置0;·P[k-P]、P[k-P+1]、……、P[k-1]置0;·Q[k-Q]、Q[k-Q+1]、……、Q[k-1]置0;……第三步可编程逻辑器件中的模块LPM_ADD_SUB取其加法器功能,完成相加过程;·二进制数N[k-1..0]加上二进制数P[k-1..0],再加上二进制数Q[k-1..0],……q其和H[k-1..0]即是被除数A[k-1..0]除以除数m的商;其中, id="icf0001" file="A2009100347280002C1.tif" wi="3" he="4" top= "201" left = "39" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>二进制数A[k-1..0]、二进制数N[k-1..0]、二进制数P[k-1..0]、二进制数Q[k-1..0]、……和二进制数H[k-1..0]均为k位的二进制数; id="icf0002" file="A2009100347280002C2.tif" wi="3" he="4" top= "219" left = "35" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>N[k-1..0]=A[k-1..0]÷2N id="icf0003" file="A2009100347280002C3.tif" wi="3" he="4" top= "230" left = "35" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>P[k-1..0]=A[k-1..0]÷2P id="icf0004" file="A2009100347280002C4.tif" wi="3" he="4" top= "242" left = "35" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>Q[k-1..0]=A[k-1..0]÷2Q id="icf0005" file="A2009100347280002C5.tif" wi="3" he="4" top= "251" left = "35" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>H[k-1..0]=N[k-1..0]+P[k-1..0]+Q[k-1..0]+……=A[k-1..0]÷2N+A[k-1..0]÷2P+A[k-1..0]÷2Q+……≈A[k-1..0]÷m
全文摘要
一种基于可编程逻辑器件的二进制移位除法的处理过程,实现步骤如下按精度要求,设二进制被除数A[]须有k位,则在可编程逻辑器件中的二进制被除数表示为A[k-1..0];第一步可编程逻辑器件中的逻辑单元carry,完成数据移位过程;第二步可编程逻辑器件中的逻辑单元GND为置0功能,完成N[k-1..0]、P[k-1..0]、Q[k-1..0]、……的高位置0过程;第三步可编程逻辑器件中的模块LPM_ADD_SUB取其加法器功能,完成相加过程;本发明算法在空间占用上节约了资源;能实现精度要求;简单且容易实现;该实现方案和技术在可编程逻辑器件中运用,速度更有所提高。
文档编号G06F7/535GK101645001SQ200910034728
公开日2010年2月10日 申请日期2009年9月7日 优先权日2009年9月7日
发明者罗淮文 申请人:中国电子科技集团公司第十四研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1