小数取幂的数字实现的制作方法

文档序号:6562201阅读:298来源:国知局
专利名称:小数取幂的数字实现的制作方法
技术领域
本发明涉及数字系统,特别是涉及求基数的小数幂近似值的技术。
背景技术
取幂是一种数学运算,目的在于求一个给定自变量的一个基数幂。例如,若用B表示基数,则求自变量X的基数幂牵涉到计算一个Y值,使得Y=BX。基数B和自变量X都可含整数和小数部分的值。对数字实现而言,通常使用二进制的基数(即B=2)。同样,将X与预先求得的常量log2(B)相乘,可把任何其他不是二进制基数的给定自变量X转换成等价的二进制基数的自变量Z,即Y=BX=2Z,其中Z=X·log2(B)。
若Z包含整数和小数部分,可将它写成Z=I.F,其中I表示整数部分,F表示小数部分。在二进制基数的定点表示法中,小数部分(.F)可等价地写成f=(F/2N),其中N为用于表示数Z的小数部分的有效位数。使用该表示式Y=BX=2Xlog2(B)=2I.F=2I·2f其中f是二进制格式表示的数Z的小数部分,且总是0≤f<1.0。
关于二进制基数的整数部分自变量I的取幂,通过简单地将二进制基数左(对正数I)或右(对负数I)移I位位置,就可完成数字实现。但对于自变量的小数部分f的取幂的数字实现就不是这么简单了。
在传统二进制基数的小数自变量f的取幂的数字实现中,用查表方式按所使用的二进制表示格式,将对应的数F(f的位串表示)映射为正确的2f值。通常,传统的数字实现使用含2N项的查询表,其中N为以二进制格式表示自变量小数部分所用的位数。例如,如果使用16位表示自变量的小数部分,则查询表中的总项数为216=65,536字(64K字)。此外,另一种实现2f的常用方法是数字地计算(1+f),其为正确值的一阶近似,具有近似为0.5dB左右的不可约的最大近似误差。
很明显,尽管有不同的原因,两种解法都有不足之处。因此,存在对小数幂新的数字实现的需求,例如,不需要使用查表和/或导致更精确的近似值的数字实现。

发明内容
本发明通过提供用于估计基数2的小数取幂的数字处理装置和技术以解决这个问题。特别是,通过使用分段线性近似和/或利用某些特殊处理,该估计使得计算上更有效。
因此,一方面,本发明提出一种数字处理装置,被配置用于近似值基数2的小数幂。输入部分被配置用于获得以二进制编号系统表示的小数f,且与输入部分连接的处理部分被配置用于按二进制编号系统实现下列计算来近似2f。首先,计算一折叠量,若小数f大于给定阈值,则该折叠量等于1-f,否则该折叠量等于f。之后,计算该折叠量的一函数值。最后,从小数f中减去该折叠量的函数,并加上1。
另一方面,本发明提出一种近似基数2的小数幂的方法。在下列步骤中详述该方法(a)输入基数2表示的N位小数f;(b)将小数f的N-1个最低有效位输入到反相器;(c)将小数f的最高有效位值输入到多路复用器,以选择(i)小数f的N-1个最低有效位,或(ii)自反相器输出的反相的小数f的N-1个最低有效位中的一个,从而获得选择量;(d)将小数f的最高有效位和选择量输入到加法器,以获得折叠量;(e)将折叠量输入到截断器,以截断指定数量的最低有效位,从而获得截断量;(f)将截断量输入到阈值部分,其取截断量和指定值Emax的最小值,从而获得E的值;以及(g)将E和小数f输入到减法器,其计算f-E,之后将1的最高有效位添加到减法器的输出,从而获得2f的近似。
上述发明内容只是为了提供对本发明一般特性的简要描述。参照权利要求和下面结合附图对优选实施例的详细描述,可获得对本发明更完整的理解。


图1是表示根据本发明典型实施例的计算基数2的小数幂的基本方法的框图;图2是用于解释根据本发明典型实施例的估计基数2的小数幂的流程图;图3A-C表示针对f的3种不同定义,将1+f与2f所进行的比较;图4是表示图2技术的数字实现的框图;图5是表示计算反正切函数的数字实现的框图;图6是用于解释根据本发明典型实施例的估计基数2的小数幂的流程图。
具体实施例方式
本发明提供具有较高精度的数字近似基数2的小数幂值的简单方法,且不需要任何查表就可以实现,从而极大地节省了资源利用率。此外,如上所述,仅仅将预先求得的比例因子用于该幂,就可将该技术应用于任何其他非二进制基数的取幂。
如图1所示,在本发明的典型实施例中,数字取幂运算2f是用(1+f)的数字实现近似,其中通过处理表示小数指数f的位串(F),找出最小化2f近似误差的正确值。开始时,在模块10中,将位串F(f的位串表示)转换成位串F′(其对应于f)。在模块12中,将输出与1的二进制表示(通常含某种格式修改)组合,以产生1+f的近似结果。
在本发明优选实施例中,通过针对f的特定值,将给定的小数幂f偏移值T,使得(1+f-T)计算的值与2f的真值足够接近,来找出F′的值。换言之,偏移值T基本上为自变量值f和f的差,以使(1+f)与2f更近似。现在参照图2描述从给定的小数自变量值f估计T的优选技术。
首先,在步骤22中,计算“折叠”量fw。在优选实施例中, 其中阈值Th最好为1/2。
在步骤24中,计算“折叠”量fw的函数值,以确定量E。在优选实施例中,F=min{fw/4,Emax},其中的Emax下面会讨论。实质上,有意使E作为T的估计值。图3A-C中图示了估计T的问题。在这点上,图3A表示当f=f时,曲线52(由1+f定义)与曲线50(由2f定义)的比较。正如所容易看到的,对于f的这种定义的中间部分,T相当大。
图3B表示当f=f-fw/4、且阈值Th为1/2的情况时,曲线54(由1+f定义)与曲线50(由2f定义)的比较。正如所容易看到的,曲线54是分段线性的。由于f的定义,曲线54对于0<f<0.5的范围具有3/4的斜率,对于0.5<f<1的范围具有5/4的斜率。借助于这样的调整,曲线54提供了对曲线50进一步的近似。同时,如下将更详细讨论可以更有效的方式进行该调整。
最后,图3c表示当f=f-E、且阈值Th仍为1/2时,曲线56(由1+f定义)与曲线50(仍由2f定义)的比较。正如所容易看到的,曲线56也是分段线性的,但此时初始斜率为3/4、之后的斜率为1、接着的斜率是5/4,且转变点57和58由Emax定义。可看出Emax的最优值(即使近似误差最小化的值)为0.0784(为浮点十进制格式)。通过与2N相乘,更适宜将该值转换为等价的N位数字格式。从指定的位数N预先计算Emax的数字值,以在给定实现中使用。例如,用十进制整数表示若F的位宽度=8, 则Emax=20若F的位宽度=10,则Emax=80若F的位宽度=12,则Emax=321若F的位宽度=16,则Emax=5138若F的位宽度=20,则Emax=82208若F的位宽度=24,则Emax=1315334通过如上述选择的Emax,曲线54提供对曲线50的更进一步近似。同时,如下面将更详细讨论的,也可以更有效的方式进行该调整。
具体而言,使用平衡误差的MinMax(最小化该最大误差)方法,通过分析找出Emax的值,以便让近似值高于真实值的线段中的正近似误差,即(1+f-Emax),等于近似值低于真实值的线段中的负近似误差,即(Emax-1-f),的绝对值。对于具有f为小数值的2f函数的情况,Emax的最优值已算出为0.0784。之后,对给定的用于表示数字实现中小数f的位宽度Nb,用FLOOR[2Nb*(0.0784)+0.5]可得到Emax的数字值。为了提供某些例子,上面已列出了针对某些位宽度Nb值所得到的Emax的数字值。
参照图2,在步骤26中,将2f的值近似成1+f-E。
应注意的是在完成上述技术之后,可通过仅仅左移由I的大小(假定I为正数)所指示的若干位,或更间接地通过仅仅注意到格式上的变化,对所得的近似值作调整,以考虑到指数的任何整数部分(I)。
上述技术所产生2f的近似值十分精确,其近似误差在0.05dB的范围之内。图4中表示上述技术的特定数字实现。开始时,输入F。假定以<N,0,U>格式数字地表示N位的F。在图4以及该讨论中,以<x,y,z>的定点格式表示法表示总共x位用于具有整数和小数部分的定点表示,其中的y位为表示除符号位之外的整数部分。参数z可为u(其表示无符号数)或t(其表示2的补码格式的有符号数)的其中一个。
参照图4,在模块81中,从F中提取出最高有效位,且F的最高有效位用于在多路复用器82中,选择F的N-1最低有效位或这些N-1位的反相值的其中一个,其中F的N-1最低有效位是自模块84中提取的,这些位的反相值是自反相器86中输出的。应注意的是,F的最高有效位表示f是否大于0.5。接着,在加法器88中,添加值为0的最高有效位,且将从模块81中提取的位加到从多路复用器82输出的最低有效位。即,仅当选择反相位时加1,通过加1而完成1-f减法。
在模块90中,截断二个最低有效位(对应于除以4的除法)。注意到该除法(以及任何其他2的整数幂除法)可通过截断适当的位数或右移适当的位数来实现。同样,可显式地通过实现右移,或隐式地通过仅仅修改二进制量的格式实现除法。特定的技术取决于所期望的位长以及所表示的其他二进制量的格式。
接着,模块92将它的输入限制在Emax,以便模块92的所得输出为E。即若模块92的输入值小于预先求得的值Emax,则模块92的输出值与模块92的输入值相同。反之,若模块92的输入值大于Emax值,则模块92的输出值为Emax。换言之,假定模块92的输入为fw/4,则模块92的输出为min{fw/4,Emax}。
之后,在减法器94中,从原始输入位串F中减去自模块92输出的值E,从而提供F′。最后,加上最高有效位1,以提供<N+1,1,U>格式的1.F′,其为所期望的2f的近似。
下面为上述技术和结构的某些潜在优点·不需要使用查表来计算数字域中具有小数自变量(指数)取幂运算的结果。
·非常小的近似误差。
·实现的复杂度低,只需要一个具有所需精度的二进制加法器。
·易于适合任何所需的精度,即,用于表示小数指数的位数。实现资源的需求不随着精度的增加而成指数增长,而实现资源的指数增长在基于查表的方法中是一种常见情况。
·可应用于计算任何基数的取幂运算和许多其他数学函数的近似,如三角系列的近似。
·示例应用对数域到线性域中的数的转换、反正切函数的近似、数的平方根的近似。
为了近似反正切值tan-1(f),现在描述上面讨论的数字取幂技术的示例性应用。用于计算给定自变量的反正切值的快速且精确数字实现,在需要估计来自给定斜率的角度的多种信号处理算法中有广泛应用。传统的反正切近似的高速计算通常使用查表法,其中给定的自变量数字值指示包含角度近似值的数字存储器的地址。查表的方法虽然快,但需要大量的存储器以提供适当精度的反正切近似值。但是,上面讨论的数字取幂技术可容易地用于计算给定数字小数自变量的精确反正切近似值。
给定小数自变量f(其中0<f<1.0)的tan-1(f)函数值是在0到π/4(~0.7854)的范围内,且也适合于小数数字格式。应注意的是,任何其他象限的tan-1(f)值可容易地通过自变量和近似结果值的适当的象限调整来近似。tan-1(f)值可用下列计算来近似tan-1(f)Uf·α-(2f-1),其中α=2·Q(0.8816),而Q(0.8816)为小数0.8816所期望的数字精度(位数)适当量化的值。数0.8816近似从原点到曲线tan-1(f)与(2f-1)的交点的直线的斜率。
根据上述发明的典型实施例,tan-1(f)函数是通过将2f曲线移动到原点、且将它绕从原点到2f曲线与tan-1(f)曲线交点的直线镜象而近似的。图5表示使用上述所参考的2f近似计算tan-1(f)函数的数字实现。
正如所容易看到的,图5所示实现的重要部分与图4所示实现相同。因此,下面的讨论将主要集中在不同之处。
在乘法器96中,将小数值f(以位串形式表示成F)乘以常量α。如图4中那样,减法器94的输出为F′,其为2f-1的近似。在减法器98中,从乘法器96的输出中减去该值,得到所期望的tan-1(f)近似。
应注意的是上述用于估计2f(如与图2和图4有关)的技术,为图6所示的更一般化过程的示例。下面描述这个一般化的技术。
首先,在步骤81中,确定2f-1的分段线性近似。更适宜地的描述,每个线段具有 的斜率,其中J为任意正整数,kj为-1、0或+1,以便所有分段可仅仅通过移位来进行,且越过所有线段的非零kj的总数不大(如介于2-5),以限制计算的复杂性。可通过最小化误差来确定特定的分段断点,且可仅仅通过简单的比较、减法、加法和移位来实现该计算。如上所示,也可通过限制量值为最大值域来实现某些简化。在上面给出的特定示例中,这种限制导致具有斜率为1的线性分段。
最后,在步骤82中,将该结果加上1,以完成对2f的近似。
根据图4,根据本发明实施例的用于近似基数2的小数取幂的方法具有下列详细步骤(a)输入基数2的由N位表示的小数f;(b)将小数f的N-1个最低有效位84输入到反相器86;(c)将小数f的最高有效位值输入到多路复用器82,以选择(i)小数f的N-1个最低有效位或(ii)自反相器86输出的小数f的反相的N-1个最低有效位的其中一个,从而获得选择量;(d)将小数f的最高有效位81和选择量输入到加法器88中,以获得一折叠量;(e)将该折叠量输入到截断器90中,以截断指定数量的最低有效位,从而获得截断量;(f)将截断量输入到阈值部分92中,其取截断量和指定值Emax的最小值,从而获得E的值;以及(g)将E和小数f输入到减法器94中,以计算f-E。
之后,可将1的最高有效位加到减法器94的输出中,从而获得2f的近似。
此外,根据图5的另一种方法可使用于近似以基数2表示的小数自变量的反正切。该方法还可根据图4的方法来构建,用于近似反正切的方法还包括(h)将减法器94的输出和值α*f96(其中α为预定常量)输入到第二减法器98,计算α*f与减法器94的输出之间的差,从而获得arctan(f)的近似。
系统环境通常而言,除非明确说明,否则这里描述的所有系统、方法和技术可用一个或多个可编程通用计算器件来实现。例如,这种器件通常包括至少下面的一些互连(如通过公共总线)的组件一个或多个中央处理单元(CPU);只读存储器(ROM);随机存取存储器(RAM);与其他器件接口的输入/输出软件和电路(例如使用诸如串行端口、并行端口、USB连接、或火线连接的硬连接,或使用诸如蓝牙或802.11协议的无线协议);与一个或多个网络连接的软件和电路(例如使用诸如Ethernet卡的硬布线连接,或诸如码分多址(CDMA)、用于移动通讯的全球系统(GSM)、蓝牙、802.11协议或任何其他基于蜂窝或不基于蜂窝的系统的无线协议),在本发明的许多实施例中,这些网络反过来又连接到因特网或任何其他网络;显示器(诸如阴极射线管显示器、液晶显示器、有机发光显示器、聚合发光显示器、或任何其他薄膜显示器);其他输出设备(诸如一个或多个扬声器、头戴耳机和打印机);一个或多个输入器件(诸如鼠标、触摸盘、输入板、触敏显示器或其他指向器件、小键盘、键盘、麦克风和扫描仪);海量存储单元(诸如硬盘驱动器);实时时钟;可移动存储读/写器件(诸如用于从RAM、磁盘、磁带、磁光盘、光盘等读取和向RAM、磁盘、磁带、磁光盘、光盘等写入);以及调制解调器(诸如用于发送传真或用于通过拨号连接连接到因特网或任何其他计算机网络)。在操作中,由这种通用计算机执行的实现上述方法和功能的处理步骤通常初始存储在海量存储器(如硬盘)中,并下载到RAM中,且之后由RAM之外的处理器来执行。
可从不同卖主处获得实现本发明所使用的合适器件。在不同实施例中,根据任务的大小和复杂度使用不同型号的器件。合适的器件包括主计算机、多处理器计算机、工作站、个人计算机、甚至诸如个人数字助理的小计算机、无线电话或任何其他装置或器件,不管单独使用、硬连接到网络或无线方式连接到网络。
此外,尽管上面已描述通用可编程器件,在其他实施例中,可使用一个或多个专用处理器或计算机来替代。通常,应注意的是除非明确说明,否则上述任何功能可用软件、硬件、固件或其组合实现,根据所熟知的工程折衷来选择特定实现。具体而言,上述功能用固定、预定或逻辑方式实现时,可通过编程(如软件或固件)、适当安排逻辑组件(硬件)或两者组合来完成,正如本领域的技术人员所易于理解的那样。
应理解本发明也涉及机器可读介质,其上存储用于执行该发明的方法和功能的程序指令。这种介质包括磁盘、磁带、诸如CD ROM和DVD ROM光可读介质、或诸如PCMCIA卡、不同类型的存储卡、USB存储器等的半导体存储器。在每种情况下,该介质上可为诸如微型磁盘或小磁盘、磁盘、磁带、卡、棒等之类便携类型,或者为诸如计算机或其他设备中提供的硬盘驱动器、ROM或RAM之类的相对大的或不可移动的类型。
上面的描述主要强调电子计算机和器件。但是,应理解也可使用任何其他计算或其他类型的器件来替代,如利用电子、光、生物学和化学处理的组合的器件。
其他考虑上面描述了本发明的几个不同实施例,所描述的每个实施例都包括某些特性。但是,其目的是结合任何单个实施例所讨论的特性不是仅限于该实施例,而可包含和/或安排在与任何其他实施例的各种组合中,正如本领域的技术人员所理解的。
类似地,在上面的讨论中,有时将功能归结于特定模块或组件。但是,通常可将功能重新分配到所期望的任何不同模块或组件中,在某些情况下,完全排除特定组件或模块的需求,和/或需要增加新组件或模块。参考本发明的特定实施例,精确的功能分配是根据所熟知的工程折衷来作出的,正如本领域的技术人员所理解的。
因此,尽管已参照其中的优选实施例和附图对本发明作了详细描述,本领域的技术人员应了解可对本发明作多种改变和修改,而不偏离本发明的实质和范畴。因此,本发明不被限于附图所示的和上面描述的精确实施例。相反,其目的是所有这种不偏离本发明实质的改变应被认为是在其范围之内,正如只由所附权利要求所作的限制。
权利要求
1.一种数字处理装置,被配置用于近似基数2的小数幂运算,包括(a)输入部分,被配置用于获得以二进制编号系统表示的小数f;以及(b)处理部分,其与输入部分连接,且被配置用于按二进制编号系统近似2f,包括(i)折叠装置,用于计算一折叠量,若小数f大于一给定阈值,则该折叠量等于1-f, 否则该折叠量等于小数f;(ii)函数装置,用于计算折叠量的一函数值;以及(iii)减法装置,用于从小数f中减去折叠量的函数值,并加1。
2.根据权利要求1的数字处理装置,其中函数装置还包括除法装置,用于通过下列实现之一以计算该函数值(i)截断该折叠量的指定个最低有效位;和(ii)右移指定个自变量位。
3.根据权利要求2的数字处理装置,其中函数装置还包括用于将除法装置的输出限制为一最大值的装置。
4.根据权利要求3的数字处理装置,其中最大值已经选择用以减小近似误差,以便正近似误差等于负近似误差的绝对值。
5.根据权利要求2的数字处理装置,其中最低有效位的指定的个数和右移指定个的自变量每个都小于5。
6.根据权利要求1的数字处理装置,其中给定的阈值等于1/2。
7.根据权利要求1的数字处理装置,其中该处理部分还包括根据2f的近似值估计反正切值的装置,且其中反正切估计为tan-1(f)Uf·α-(2f-1),其中α=2·Q(0.8816),而Q(0.8816)为在一个所期望的数字精度之下、0.8816的合适量化值。
8.根据权利要求1的数字处理装置,其中所述折叠装置、函数装置和减法装置共同地包括通过在二进制编号系统中计算1+f来近似2f的装置,且其中将f确定为2f-1的分段线性近似,其近似包括多个线性段,每个线性段的斜率由 决定,其中J为任意正整数,每一kj为-1、0或+1,并且越过所有线段的非零kj的总数小于5。
9.一种在近似基数2的小数取幂中使用的方法,包括(a)输入基数2表示的N位小数f;(b)将小数f的N-1个最低有效位输入到反相器;(c)将小数f的最高有效位值输入到多路复用器,以选择(i)小数f的N-1个最低有效位或(ii)自反相器输出反相的小数f的N-1个最低有效位中的一个,从而获得选择量;(d)将小数f的最高有效位和选择量输入到加法器,以获得折叠量;(e)将折叠量输入到截断器,以截断最低有效位的指定数量,从而获得截断量;(f)将截断量输入到阈值部分,其取截断量和指定值Emax的最小值,从而获得E的值;以及(g)将E和小数f输入到第一减法器,以计算f-E。
10.根据权利要求9的方法,还包括将1的最高有效位添加到第一减法器的输出中,从而获得2f的近似。
11.根据权利要求9的方法,其中选择指定值Emax以减小近似误差,以便正近似误差等于负近似误差的绝对值。
12.根据权利要求9的方法,其中指定数小于5。
13.根据权利要求9的方法,还包括(h)将减法器的输出和值α*f输入到第二减法器,其中α为预定常量,第二减法器计算α*f与第一减法器的输出之间的差,从而获得arctan(f)的近似。
全文摘要
提供一种数字处理装置和技术,用于估计基数2的小数幂即文档编号G06F7/72GK1936830SQ200610138838
公开日2007年3月28日 申请日期2006年9月19日 优先权日2006年5月31日
发明者塔朗·K·坦唐, 姜仁成, 维克·曼泽拉 申请人:开曼群岛威睿电通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1