产生具有可变精度的对数信号近似的制作方法

文档序号:6355693阅读:145来源:国知局
专利名称:产生具有可变精度的对数信号近似的制作方法
技术领域
本发明总的来说涉及计算系统和方法,具体地说涉及执行数字计算的系统和方法,如语音识别系统。
背景技术
在很多数学和工程领域中,存在对能够执行优化算法计算的系统的需要。不幸的是,目前执行对数计算的系统分为三类。第一类是对数的浮点运算,第二类表格化的定点运算,第三类是直接整数运算。
在第一类(浮点运算)中,利用浮点数来表示系统的输入和输出。通常,采用数学协处理器来实现浮点对数系统,数学协处理器具有一些形式的幂级数或牛顿-拉佛森收敛方法(Newton-Raphson method ofconvergence)。结果,这类系统要求复杂的电路以及相当多的处理时间来获得最终结果。
表格化的定点表示系统提供了真对数值(true logarithm value)的比例整数表示。换言之,log(x)将表示为‘y’乘以log(x),其中‘y’是固定的比例因子,以保护精度。这些系统从表格中取出对数的中间值。所述表格在编译时包含对适当比例的log(x)的值。这些类型的系统要求产生和管理具有多个值的表格,并且要求相当多的存储器空间(因为将中间值存储在表格中)以获得最后的值。
最后一类是对对数值的整数截尾。在这种类型中的系统返回变量(x)中的最高位的值。当应用于不要求精度的搜索应用中时,在这种系统中缺乏精度意味着在小数点的右边的所有比特被丢失。因此,需要一种系统和方法,其不需要利用表格和/或乘法,快速地产生带有运行时规定精度的对数值。


结合附图,可以更好地理解如在权利要求书中限定的本发明的发明内容以及下面的详细说明。下面的附图是以示例性的方式被包括的,而不是对上述的本发明进行限制,并且不需要放大。
图1为根据本发明的系统的功能框图。
图2为根据本发明的系统的另一个功能框图。
图3为由在图1和2中介绍的系统所执行的过程的流程图。
图4是利用专用集成电路(ASIC)或者数字信号处理器(DSP)的系统的另一个功能框图。
具体实施例方式
本发明提供一种系统和方法,不需要利用表格和/或乘法,产生具有运行时规定的精度的输出对数值。
根据本发明,介绍了一种系统,用于从具有多个比特值的输入数字信号中产生输出对数数字信号,其中,所述输出对数数字信号具有由参数限定的精度。该系统包括用于找出输入数字信号的最高比特值的比特位置的装置;用于确定从最高比特值的位置的偏移以及所述参数的装置。该系统也包括用于利用所述参数从输入信号开始插入移位的内插值的装置;和用于将偏移、移位的精度内插值和比特位置相加的加法器。
同样,根据本发明,介绍了一种方法,用于从具有多个比特值的输入数字信号中产生输出对数数字信号,其中输出对数信号具有由所介绍的参数限定的精度。该方法包括步骤找出输入数字信号的最高比特值的比特位置,且确定自最高比特值的位置开始的偏移以及所述参数。该方法还包括步骤利用所述参数来自所述输入信号插入开始的移位内插值,和将偏移、移位的精度内插值和比特位置相加。
图1说明系统10的功能框图。系统与输入/输出“I/O”设备15进行信号通信。I/O设备15可以有选择地是任何输入和输出设备组合,包括(但不限于)键盘和显示监视器或者打印机。系统10包括中央处理单元“CPU”20、I/O接口25、存储设备30和系统总线35。
CPU可以有选择地为能够处理来自I/O接口25和存储设备30的数据的任何处理器。CPU20的例子包括但不限于诸如Intel 80X86、摩托罗拉公司的Power PC、数字DEC Alpha的集成电路处理器系列,以及来自诸如Hewitt Packard公司、Sun Microsystems、IBM、AMD、Cyrix和其它公司的类似处理器。
存储设备30可以有选择地是诸如随机存储器(RAM)、只读存储器(ROM)、永久存储单元(诸如硬盘)、可以动存储单元(诸如软盘、DVD或CR-ROM)或者类似单元的任何类型的存储器。存储设备30包括控制程序或软件40。软件40可以有选择地是控制系统10的处理的编码指令。I/O接口25和系统总线25都是本技术领域中公知的常规计算机系统类型接口和系统总线。
在运行中,用户(未示出)经I/O设备15将输入值输入到系统10中。CPU 20利用在软件40中的编码指令来处理输入值。然后,系统10产生输出值,并且经I/O接口25和I/O设备15将它们传送到用户。
图2是系统45的另一个例子的方框图。系统45包括搜索电路(search circuit)50、插值电路55、移位电路60和组合电路65。应当理解,可以有选择地利用组合数字电路来实现搜索电路50、插值电路55、移位电路60和组合电路。
搜索电路50从诸如图1的I/O设备15接收数字操作数信号70(对应操作数值,即‘x’对应log2(x)),并且输出对应最高二进制比特值的信号(见图2),最高二进制比特值对应数字操作数信号70。插值电路55接收信号75,并且在信号75上计算线性插值,然后经信号通路80将结果传送到移位电路60。移位电路60接收来自诸如图1的I/O设备15的输入设备的数字精度信号85(对应精度值‘s’)以及图2的插值电路55的输出。移位电路60产生移位电路输出88,其为偏移精度移位的内插值,然后,将该输出传送到组合电路65。组合电路65将移位电路输出88和来自搜索电路50的信号75进行组合,以产生对应Log2(x)的数字输出信号90,该信号被发送到组如图1的I/O设备15的输出设备。
图3说明图1中的系统10执行的处理,系统10可以被在软件40编码指令有选择地控制。图3中的步骤95中,图1的系统10开始进行处理。在步骤100,图1的系统10从I/O设备15接收输入值。输入值是二进制形式的对数的操作数(即,‘x’值对应Log2(x))。在图3的步骤105,图1的系统10通过搜索操作数的最高比特值来确定对操作数(即‘x’)的log2计算的整数部分。本领域普通技术人员应当理解,系统10可以利用各种装置来执行搜索,这些装置包括(但不限于)执行标准的二进制搜索或者移位和搜索操作。步骤105的输出是对值Log2(x)的粗略估计,为基于区间估计(interval estimation)之上的整数精度。在图3的步骤110中,图1的系统10通过对与等于log2计算的小数部分的近似的操作数值执行移位操作来计算在区间估计中的剩余误差进行线性插值。然后,系统10在图3的步骤115中接收来自I/O设备15的精度值(即‘s’)。在步骤120中,图1的系统10对与偏移精度移位的内插值的已移位的操作值执行精度移位,将得到的小数和整数求和log2值映射到在图3的步骤115中输入的精度范围。然后,图1的系统10以数学方式将偏移移位的内插值与在步骤125中的二进制搜索结果进行组合。所述组合值近似等于在图3中的步骤95中的输入的值的log2的值。得到0.03125的峰值误差,其为间隔[24000]上的误差。然后,在步骤130中,系统10将组合的结果输出到I/O设备,并且流程结束于步骤135。应当理解,所介绍的流程等价于图2的系统45执行的流程。
还应当理解,为了用当前技术达到要求的性能,本发明的优选实施例以专门的电路来进行原理上实现。然而,还可以使用能够产生图2的处理步骤的通用可编程电路来实现本发明执行的功能。作为对本发明的流程的实现例子,提供了如下的伪码例子,其可以有选择地是C编程语言或者其它等价的编程语言。
<pre listing-type="program-listing"><![CDATA[/************************************************************ *Implementation of Log2( )employing loops for binary bit search *y=Log2(n,numbits2scale) *get linear interpolated scaled Log2( ) *′x′is the number to take Log2(x),′s′is the number of bits to scale up *i.e.,Log2scaled(2235,7)would return 128*Log2(2235) */ long Log2scaled(long x,long s) {long j,v=x,f=0;/*declare local variables*/for(j=16;j>0;j>>=1)/*perform binary search for the highest set bit*/ if(x>(1<<j)){f+=j;x>>j;}/*Next line is variable precision linear interpolation with offset. Shifts are utilized perform multiplications by powers of two. Multiply operations are represented by the′<<′symbol whiledivides are represented by‘>>’. */return(f<<s)+(1<<s>>5)+((f>s)?((v+(1<<f)>>(f-s)) ((v+(1<<f))<<(s+f)));}/************************************************************ *Implementation of Log2( )employing if statements for binary bitsearch *y=Log2(n,numbits2scale) *get linear interpolated scaled Log2( ) *′x′is the number to take Log2(x),′s′is the number of bits to scale up *i.e.,Log2scaled(2235,7)would return 128*Log2(2235) */ long Log2scaled(long x,long s) {long v=x,f=0;/*declare local variables*/if(x>(1<<16)){f+=16;x>>=16;}/*perform binary search for highestset bit*/if(x>(1<<8)){f+=8;x>>=8;}if(x>(1<<4)){f+=4;x>>=4;}if(x>(1<<2)){f+=2;x>>=2;}if(x>(1<<1)){f++;} /*Next line is variable precision linear interpolation withoffset. Shifts are utilized perform multiplications by powers of two. Multiply operations are represented by the′<<′symbol whiledivides are represented by‘>>’. */ return(f<<s)+(1<<s>>5)+((f>s)?((v+(1<<f))>>(f+s)) ((v+(1<<f))<<(s+f)));}]]></pre>
虽然上述例子说明了用来获得基底为2的对数值,可以通过按比例放大(scaling)对数log2(x)的输出,容易地将上述处理扩展到其它的公共基底,诸如自然对数“Ln(x)”或者十(10)作为基底的对数“log10(x)”,并且将它转换为其它的基底。这是通过将log2(x)除以等于log2(n)的常数来实现的,其中,n是所希望的基底。作为利用根据本发明的比例因子来实现处理的其它一对例子,提供了如下的伪码例子,其可以有选择地是C编程语言或者其它等价的编程语言。
<pre listing-type="program-listing"><![CDATA[/*********************************************************** *Implementation of Log( )to other bases employing loops for binarybit search *In this case the logarithmic base is chosen to be ′e′or the naturallogarithm. *y=Ln(n,numbits2scale) *get linear interpolated scaled Ln( ) *′x′is the number to take Ln(x),′s′is the number of bits to scale up *i.e.,Lnscaled(2235,7)would return 128*Log2(2235) */ long Lnscaled(long x,long s) {long j,v=x,f=0;/*declare local variables*/for(j=16;j>0;j>>=1)/*perform binary search for highest set bit*/ if(x>(1<<j)){f+=j;x>>=j;}/*Next line is variable precision linear interpolation with offset.Shifts are utilized perform multiplications by powers of two.Multiply operations are represented by the′<<′while divides arerepresented by‘>>’. */return(f<<s)+(1<<s>>5)+((f>s)?((v+(1<<f))>>(f-s)) ((v+(1<<f))<<(s+f)));/*Next line converts from Log2(x) to Ln by computinglog2(x)/log2(e).*/return(v>>1)+(v>>2)-(v>>4)+(v>>7)-(v>>9)-(v>>12)+(v>>15); }/************************************************************Implementation of Log( )to other bases employing if statements forbinary bit search*In this case the logarithmic base is chosen to be′e′or the naturallogarithm. *y=Ln(n,numbits2scale) *get linear interpolated scaled Ln( ) *′x′is the number to take Ln(x),′s′is the number of bits to scale up *i.e.,Lnscaled(2235,7)would return 128*Log2(2235) */ long Lnscaled(long x,long s) {long v=x,f=0;/*declare local variables*/if(x>(1<<16)){f+=16;x>>=16;}/*perform binary search for highestset bit*/if(x>(1<<8)){f+=8;x>>=8;}if(x>(1<<4){f+=4;x>>=4;}if(x>(1<<2)){f+=2;x>>=2;}if(x>(1<<1)){f++;}/*Next line is variable precision linear interpolation with offset.Shifts are utilized perform multiplications by powers of two.Multiply operations are represented by the′<<′symbol while dividesare represented by‘>>’.*/return(f<<s)+(1<<s>>5)+((f>s)?((v+(1<<f))>>(f+s)) ((v+(1<<f))<<((s+f)));/*Next line converts from Log2(x) to Ln by computinglog2(x)/log2(e).*/return(v>>1)+(v>>2)-(v>>4)+(v>>7)-(v>>9)-(v>>12)+(v>>15); }]]></pre>图4是根据本发明的系统140的框图,利用数字信号处理器(DSP)或者专用集成电路(ASIC)芯片145。应当理解,系统140可以有选择地以软件、硬件或者它们的组合来实现。作为例子,可以用在控制器单元155中的存储器中存储的软件150来实现。控制器单元155经通信链路160(其可以是系统总线)与DSP或者ASIC芯片145进行信号通信。软件150配置并且驱动DSP或者ASIC芯片145,并且执行图3中介绍的步骤。
图1的软件40诸如计算机程序包括用于实现逻辑功能的可执行指令的顺序列表。软件40可以有选择地嵌入在任何计算机可读介质中,可以被指令执行系统、装置、或设备,诸如基于计算机的系统、包含处理器的系统使用或者与它们结合,或者嵌入在其它可以有选择地从指令执行系统、装置或设备获取指令并且执行指令的系统所使用或者与它们结合。在本文中,“计算机可读介质”指的是任何可以包含、存储、通信、传播、传输程序的装置,被指令执行系统、装置或者设备所使用或与它们结合。例如,计算机可读介质可以有选择地是(但不限于)电子、磁、光、电磁、红外或者半导体系统、装置、设备或者传播介质。计算机可读介质的更具体的例子(非穷尽列表)包括便携式计算机磁盘(磁)、RAM(电子)、只读存储器(ROM)(电子)、可擦除可编程只读存储器(EPROM或者闪存)(电子)、光纤(光)和便携式只读光盘(光)。注意,计算机可读介质甚至可以是可在其上打印程序的纸件或其它合适的介质,因为程序可以被电子捕获,例如经光扫描纸件或者其它介质,然后进行编译、解释或者如需要以适当方式进行处理,且然后存储在计算机存储器中。
虽然上面以某些实现或者实施例介绍了本发明,为了达到说明的目的,进行了很多介绍。因此,前述仅仅说明了本发明的原理。例如,本发明可以具有没有背离本发明的精神和本质特征的特定形式。所介绍的结构是说明性的而不是限制性的。对于本领域普通技术人员来说,在不背离本发明的基本原理的之下,可以想到其它的实现或者实施例以及可以改变在本申请中介绍的某些细节。因此,可以理解,本领域普通技术人员可以进行实施各种结构,尽管没有在此介绍和图示,实现本发明的原理。因此,它们均在本发明的范围和精神之内。
权利要求
1.一种用于从具有多个比特值的输入数字信号中产生输出对数数字信号的系统,其中所述输出对数信号具有由一参数限定的精度,该系统包括搜索电路;与所述搜索电路进行信号通信的插值电路;与所述插值电路进行信号通信的移位电路;组合器,其从接收到的搜索电路输出和接收到的移位电路输出中产生输出对数数字信号。
2.如权利要求1所述的系统,其中所述插值电路是一种组和逻辑电路,能够根据所述参数对来自所述搜索电路的输出进行线性插值计算。
3.如权利要求2所述的系统,其中所述搜索电路是一种组和逻辑电路,其能够对所述输入数字信号进行标准二进制搜索。
4.如权利要求2所述的系统,其中所述搜索电路是一种组和逻辑电路,其能够对所述输入数字信号进行移位和搜索操作。
5.如权利要求1所述的系统,其中所述搜索电路、插值电路、移位电路和组合器都被集成在一信号集成电路中。
6.如权利要求5所述的系统,其中,所述信号集成电路是专用集成电路。
7.一种用于从具有多个比特值的输入数字信号中产生输出对数数字信号的系统,其中所述输出对数信号具有由一参数限定的精度,该系统包括用于找出所述输入数字信号的最高比特值的比特位置的装置;用于确定自所述最高比特值的位置开始起的偏移和所述参数的装置;用于利用所述参数、从所述输入信号插值出移位内插值的装置;用于将所述偏移、精度移位的内插值以及比特位置进行相加的加法器。
8.如权利要求7所述的系统,其中,所述插值装置一种组和逻辑电路,能够根据所述参数对来自所述查找装置的输出进行线性插值计算。
9.如权利要求8所述的系统,其中所述查找装置是一种组和逻辑电路,其能够对所述输入数字信号进行标准二进制搜索。
10.如权利要求8所述的系统,其中所述查找装置是一种组和逻辑电路,其能够对所述输入数字信号进行移位和搜索操作。
11.一种用于从具有多个比特值的输入数字信号中产生输出对数数字信号的方法,其中所述输出对数信号具有由一参数限定的精度,该方法包括步骤搜索所述输入数字信号的最高比特值的比特位置;利用所述参数来确定自所述最高比特值的位置开始的偏移;利用所述参数,从所述输入信号插值出偏移精度移位的内插值;和将所述偏移精度移位的内插值以及所述最高比特位置进行相加。
12.如权利要求11所述的方法,其中,所述插值步骤进一步包括根据所述参数对所述最高比特值进行线性插值计算。
13.如权利要求12所述的方法,其中所述搜索步骤进一步包括对所述输入数字信号进行标准二进制搜索。
14.如权利要求12所述的方法,其中所述搜索步骤进一步包括对所述输入数字信号进行移位和搜索操作。
15.一种嵌入在计算机可读介质中的计算机程序,用于从具有多个比特值的输入数字信号中产生输出对数数字信号的方法,其中所述输出对数信号具有由一参数限定的精度,该计算机程序包括被配置用来搜索所述输入数字信号的最高比特值的比特位置的逻辑;被配置用来利用所述参数来确定自所述最高比特值的位置开始的偏移的逻辑;被配置用来利用所述参数,从所述输入信号插值出偏移精度移位的内插值的逻辑;和被配置用来将所述偏移精度移位的内插值以及所述最高比特位置进行相加的逻辑。
16.如权利要求15所述的计算机可读介质,其中,所述插值逻辑进一步包括被配置用来根据所述参数对所述最高比特值进行线性插值计算的逻辑。
17.如权利要求16所述的计算机可读介质,其中所述搜索逻辑进一步包括被配置用来对所述输入数字信号进行标准二进制搜索的逻辑。
18.如权利要求16所述的计算机可读介质,其中所述搜索逻辑进一步包括被配置用来对所述输入数字信号进行移位和搜索操作的逻辑。
全文摘要
一种用于从具有多个比特值的输入数字信号中产生输出对数数字信号的系统和方法,其中所述输出对数信号具有由所介绍的参数限定的精度。系统(45)包括搜索电路(50);与所述搜索电路进行信号通信的插值电路(55);与插值电路进行信号通信的移位电路(60);组合器(65),其从接收到的搜索电路输出(75)和接收到的移位电路输出(88)中产生输出对数数字信号(90)。
文档编号G06F1/02GK1498364SQ02807003
公开日2004年5月19日 申请日期2002年3月5日 优先权日2001年3月22日
发明者曼吉尔那斯·查特吉, 曼吉尔那斯 查特吉 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1