CN1945488A - 一种求定点数字信号常用函数值的方法及装置 - Google Patents

一种求定点数字信号常用函数值的方法及装置 Download PDF

Info

Publication number
CN1945488A
CN1945488A CN 200610138532 CN200610138532A CN1945488A CN 1945488 A CN1945488 A CN 1945488A CN 200610138532 CN200610138532 CN 200610138532 CN 200610138532 A CN200610138532 A CN 200610138532A CN 1945488 A CN1945488 A CN 1945488A
Authority
CN
China
Prior art keywords
function value
lookup table
common function
input data
index
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200610138532
Other languages
English (en)
Other versions
CN100458647C (zh
Inventor
邓昊
冯宇红
张晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vimicro Corp
Original Assignee
Vimicro Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Vimicro Corp filed Critical Vimicro Corp
Priority to CNB2006101385327A priority Critical patent/CN100458647C/zh
Publication of CN1945488A publication Critical patent/CN1945488A/zh
Application granted granted Critical
Publication of CN100458647C publication Critical patent/CN100458647C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种求定点数字信号常用函数值的方法,该方法根据预先确定的定点数字信号字长、预备舍弃的低位数据位个数以及常用函数的类型,建立中间结果与查表索引的对应关系,该方法包括以下步骤:A、对所述常用函数的输入数据进行归一化处理,得到与所述输入数据相对应的归一化数据;B、根据所得到的归一化数据求查表索引,并根据所求得的查表索引以及预先建立的中间结果与查表索引的对应关系,得到与输入数据相对应的中间结果;C、根据中间结果计算所述输入数据的常用函数值。本发明还公开了一种求定点数字信号常用函数值的装置。应用本发明能够提高定点数字信号处理的准确度、并降低存储中间结果与查表索引的对应关系所需的空间。

Description

一种求定点数字信号常用函数值的方法及装置
技术领域
本发明涉及定点数字信号处理技术,特别涉及一种求定点数字信号常用函数值的方法及装置。
背景技术
数字信号处理器可以实时快速地实现各种数字信号处理算法,为实时信号处理提供了很大的方便,数字信号处理器可分为浮点数字信号处理器和定点数字信号处理器两种。绝大多数定点数字信号处理器都不支持直接求某个输入数据的常用函数值的操作,例如,求平方根或者对数等,因此在定点数字信号处理器上进行信号处理时,如何高效、准确的求平方根和求对数等常用函数是一个普遍性的难题。通常,采用查表的方法求定点数字信号的常用函数值。
下面以求某个输入数据的平方根为例,对现有技术中典型的查表求常用函数值的方法进行说明。
该方法采取舍弃输入数据的低数据位,以减小查表索引取值范围的方式,预先在表中存储部分输入数据的平方根运算结果;在查表之前,先舍弃输入数据的低数据位,如5位,得到查表索引,然后根据所得到的查表索引查表、确定相应的运算结果。
以对字长为16比特(bits)的有符号定点数n求平方根为例:首先,设置3个常数表数组sqrt_table_1[]、sqrt_table_2[]和sqrt_table_3[],存储部分输入数据的平方根运算结果,所存储的内容分别为:
sqrt _ table _ 1 [ m ] = fix [ sqrt ( m < < 10 ) ] sqrt _ table _ 2 [ m ] = fix [ sqrt ( m < < 5 ) ] sqrt _ table _ 3 [ m ] = fix [ sqrt ( m ) ] - - - ( 1 )
(1)式中,m为查表索引,取值范围为0~31;
<<表示将数据左移若干位;
sqrt(m)为平方根函数,表示m的平方根;
fix[]表示将浮点数转化成某种特定格式的定点数的操作,这里,所作的操作可以包括乘法、四舍五入、取整或移位等。
然后查表求输入数据n的平方根,将n的平方根表示为sqrt_result(n),则sqrt_result(n)与预先存储的平方根运算结果的对应关系为:
sqrt _ result ( n ) = sqrt _ table _ 3 [ n ] , n < 32 sqrt _ table _ 2 [ n > > 5 ] , 32 &le; n < 1024 sqrt _ table _ 3 [ n > > 10 ] , n &GreaterEqual; 1024 - - - ( 2 )
由(1)式和(2)式可知,采用本方法所得到的n的平方根sqrt_result(n)与输入数据n之间的对应关系为:
sqrt _ result ( n ) = fix [ sqrt ( n ) ] , n < 32 fix [ sqrt ( n & 0 x 3e0 ) ] , 32 &le; n < 1024 fix [ sqrt ( n & 0 x 7 c 00 ) ] , n &GreaterEqual; 1024 - - - ( 3 )
(3)式中,&表示二进制与操作;0x为十六进制数的前缀,0b为二进制数的前缀,0x3e0的二进制表示形式为0b0000001111100000。
由(3)式可知,本方法将输入数据的最低5或10个数据位置为0作为新的输入数据查表,使得采用本方法所求得的运算结果可能与准确值存在很大偏差,例如,对于输入数据2047,二进制表示形式为0b011111111111,查表得到的结果是fix[sqrt(1024)]。这是由于当输入数据的有效字长为11~15bits之间时,本方法均将最低10个数据位置0,实际保留的有效数据位只有1~5bits,导致数据的有效字长越小,运算结果将与真实值偏离越大。这里,有效字长是指定点数的二进制表示形式中,最高位的1所在的数据位,例如,63的二进制表示形式为0b0111111,其有效字长就是6位。
此外,由于存在关系:sqrt(n*pow(2,1))=sqrt(n)*pow(2,1/2),其中,pow()表示幂函数,因此(1)式中有:
sqrt_table_1[m]=(sqrt_table_3[m]<<5)        (4)
因此,上述方法中表的内容存在一定的冗余。
综上所述,现有利用查表求常用函数值的方法,存在准确度低、且表的内容有一定冗余等缺点,不能精确地求定点数字信号的常用函数值。
发明内容
有鉴于此,本发明的主要目的在于提供一种求定点数字信号常用函数值的方法,以提高定点数字信号处理的准确度。
本发明的另一个目的在于提供一种求定点数字信号常用函数值的装置,以提高定点数字信号处理的准确度。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种求定点数字信号常用函数值的方法,根据预先确定的定点数字信号字长和预备舍弃的低位数据位个数确定查表索引,并对所述每个查表索引左移预备舍弃的低位数据位个数位、置其次高位为1所得到的值求所述常用函数值,将所得到的常用函数值作为中间结果,建立所述中间结果与所述查表索引的对应关系,该方法包括以下步骤:
A、对所述常用函数的输入数据进行归一化处理,得到与所述输入数据相对应的归一化数据;
B、根据所得到的归一化数据求查表索引,并根据所求得的查表索引以及预先建立的中间结果与查表索引的对应关系,得到与输入数据相对应的中间结果;
C、根据中间结果计算所述输入数据的常用函数值。
其中,所述确定查表索引可以为:将所述定点数字信号字长减所述预备舍弃的低位数据位个数,再减2所得到的值作为查表索引的长度,将符合所述查表索引长度的所有二进制数确定为所述查表索引;
所述得到每个查表索引对应的中间结果可以为:设L表示所述定点数字信号字长,d表示所述预备舍弃的低位数据位个数,对所述查表索引左移d位,加上以2为底、以(L-2)为指数的幂所得到的结果求所述常用函数值,并将所得到的常用函数值以乘法、四舍五入、取整或移位的操作转化为特定格式的定点数,得到所述中间结果。
其中,可以预先设置放大因子,在得到所述常用函数值之后,将所得到的常用函数值转化为特定格式的定点数之前,可以进一步包括:将所述常用函数值乘以所述放大因子。
其中,所述设置放大因子可以为:根据与所述常用函数的最大输入数据相对应的函数值的二进制有效字长,将所述放大因子设置为小于等于以2为底、以(L-1-所述函数值的二进制有效字长)为指数的幂。
其中,所述步骤A可以包括:
A1、求所述输入数据的冗余符号位个数;
A2、将所述输入数据左移所述冗余符号位个数位,得到所述输入数据的归一化数据。
其中,步骤B所述根据所得到的归一化数据求查表索引可以包括:
B11、构造长度等于所述定点数字信号字长的掩码,并将所述掩码的最高位和次高位置为0、从最低位开始的连续d位数据位置为0、其余位置为1,其中,d为预备舍弃的低位数据位个数;
B12、对所述归一化数据和所构造的掩码进行二进制与操作,并将所述与操作的结果右移d位,得到查表索引。
其中,步骤B所述根据所得到的归一化数据求查表索引可以包括:
B21、构造长度等于所述定点数字信号字长的掩码,并将所述掩码的最高位和次高位置为0、从最低位开始的连续(d-1)位数据位置为0、其余位置为1,其中,d为预备舍弃的低位数据位个数;
B22、对所述归一化数据和所构造的掩码进行二进制与操作,并将所述与操作的结果右移(d-1)位,得到右移结果;
B23、若右移结果等于以2为底、以(L-d-1)为指数的幂减1,则将以2为底、以(L-d-2)为指数的幂减1所得到的值作为所述查表索引;否则,将右移结果与1的和右移1位所得到的值作为所述查表索引。
其中,所述常用函数可以为平方根函数,所述步骤C可以为:求以2为底、以所述输入数据冗余符号位个数除以2所得值的相反数为指数的幂,并将所述幂与所述中间结果的乘积转化为特定格式的定点数,得到所述输入数据的常用函数值。
其中,所述常用函数可以为平方根函数,所述步骤C可以为:求以2为底、以所述输入数据冗余符号位个数除以2所得值的相反数为指数的幂,将所述幂除以所述放大因子、并乘以所述中间结果所得到的值转化为特定格式的定点数,得到所述输入数据的常用函数值。
其中,所述常用函数可以为对数函数,所述步骤C可以为:设logx2表示求以x为底2的对数,求所述输入数据冗余符号位个数与logx2之乘积,并将所述中间结果与所述乘积之差转化为特定格式的定点数,得到所述输入数据的常用函数值。
其中,所述常用函数可以为对数函数,所述步骤C可以为:设logx2表示求以x为底2的对数,求所述输入数据冗余符号位个数与logx2之乘积,并求所述中间结果与放大因子之商,将所述商与所述乘积之差转化为特定格式的定点数,得到所述输入数据的常用函数值。
进一步地,在所述步骤B与步骤C之间,可以包括:
C0、判断所述步骤C之后是否存在以所述输入数据的常用函数值作为输入数据的后续运算,若是,则以所述中间结果作为所述后续运算的输入数据,并根据后续运算结果计算所述输入数据的常用函数值,结束本流程;否则,继续执行步骤C。
一种求定点数字信号常用函数值的装置,该装置包括:输入模块、常用函数值求取模块、存储模块和输出模块;
所述输入模块,用于将输入数据发送给所述常用函数值求取模块;
所述常用函数值求取模块,用于对来自于所述输入模块的输入数据进行归一化处理,并得到查表索引,并以所得到的查表索引向所述存储模块查询;
所述存储模块,用于存储中间结果与查表索引的对应关系,并根据所述常用函数值求取模块的查询,向所述常用函数值求取模块提供中间结果;
所述常用函数值求取模块,用于根据来自于所述存储模块的中间结果计算所述输入数据的常用函数值,并将计算所得到的常用函数值发送给所述输出模块;
所述输出模块,用于接收来自于所述常用函数值求取模块的常用函数值。
其中,所述常用函数值求取模块可以包括归一化处理子模块、查表子模块和运算子模块;
所述归一化处理子模块,可以用于对来自于所述输入模块的输入数据进行归一化处理,并将所得到的归一化数据发送给所述查表子模块;
所述查表子模块,可以用于根据来自于所述归一化处理子模块的归一化数据求查表索引,并以所求得的查表索引向所述存储模块查询,将来自于所述存储模块的中间结果发送给所述运算子模块;
所述运算模块,可以用于根据来自于所述查表子模块的中间结果计算与输入数据相对应的常用函数值,并将所得到的常用函数输出值发送给所述输出模块。
由上述技术方案可见,本发明技术方案在吸取现有技术舍弃输入数据的低数据位,以减小查表索引取值范围之优点的基础上,采取了首先将输入数据左移、消除冗余符号位,然后再舍弃低数据位的方式确定查表索引,使得无论输入数据的有效字长如何变化,本发明均能保证若干最高数据位的准确性。如此,一方面保证了本发明所求得的常用函数值具有足够的准确度,另一方面减小了查表索引的取值范围,降低了存储中间结果与查表索引的对应关系所需的空间。
而且,本发明表中所存储的中间结果,采用放大之后再存储的方式,使得本发明所求得的常用函数值具备最高数据精度。并且,本发明得到中间结果之后,还可以先以中间结果作为后续运算的输入数据,参与后续运算,并根据后续运算的结果计算常用函数值,从而使运算准确度得到了进一步提高。
此外,由于本发明所存储的中间结果与查表索引对应关系表的尺寸较小,因此查表速度将比较快。
附图说明
图1为本发明求定点数字信号常用函数值的示例性方法流程图。
图2为本发明实施例一中求定点数字信号常用函数值的方法流程图。
图3为本发明实施例中求定点数字信号常用函数值的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
本发明的主要思想是根据预先确定的定点数字信号字长和预备舍弃的低位数据位个数确定查表索引,并对每个查表索引左移预备舍弃的低位数据位个数位、置其次高位为1所得到的值求相应的常用函数值,将所得到的常用函数值作为中间结果,预先建立中间结果与查表索引的对应关系;当需要求某个输入数据的常用函数值时,将输入数据归一化之后再舍弃预备舍弃的低位数据位个数个最低数据位的值确定为查表索引,然后根据中间结果与查表索引的对应关系,确定与输入数据相对应的中间结果,最后根据中间结果计算输入数据对应的常用函数值。
图1为本发明求定点数字信号常用函数值的示例性方法流程图。参见图1,该方法根据预先确定的定点数字信号字长和预备舍弃的低位数据位个数确定查表索引,其中,定点数字信号字长由具体实施本发明技术方案的硬件平台的字长决定,预备舍弃的低位数据位个数可以根据具体应用中对准确度要求的不同而设置相应的值;并对每个查表索引左移预备舍弃的低位数据位个数位、置其次高位为1所得到的值求相应的常用函数值,将所得到的常用函数值作为中间结果,预先建立中间结果与查表索引的对应关系,本方法还包括以下步骤:
步骤101:对常用函数的输入数据进行归一化处理,得到与输入数据相对应的归一化数据;
步骤102:根据所得到的归一化数据求查表索引,并根据所求得的查表索引以及预先建立的中间结果与查表索引的对应关系,得到与输入数据相对应的中间结果;
步骤103:根据中间结果计算输入数据的常用函数值。
至此,结束本发明示例性方法流程。
常用函数包括平方根函数、对数函数等。以下举两个实施例分别对采用本发明技术方案求平方根和求自然对数的具体实施方式进行详细说明:
实施例一:
本实施例中,定点数字信号字长为16bits、预备舍弃的低位数据位个数为6个、常用函数为平方根函数。在实际应用中,根据实施本发明技术方案的硬件平台的字长不同,定点数字信号字长可能为24bits、32bits或其他长度,而预备舍弃的低位数据位个数也可能因具体应用中对准确度要求的不同而为其他值,只需将本实施例中的定点数字信号字长和预备舍弃的低位数据位个数作相应调整即可实施。
图2为本发明实施例一中求定点数字信号常用函数值的方法流程图。在本实施例中,常用函数类型为平方根函数,参见图2,该方法包括以下步骤:
步骤201:根据预先确定的定点数字信号字长、预备舍弃的低位数据位个数以及常用函数类型,建立中间结果与查表索引的对应关系表。
本实施例中,将所建立的中间结果与查表索引对应关系表记为sqrt_table[]。由于平方根函数的输入数据只能是正数,因此16bits输入数据的最高位,即符号位取值恒为0;而采用本发明方法求函数值时,需先对输入数据进行归一化处理,使所得到的归一化数据的次高位,即最高数据位取值恒为1;并且,本实施例预备舍弃的低位数据位个数为6,因此所建立的sqrt_table[]表中查表索引的长度为:定点数字信号字长减预备舍弃的低位数据位个数,再减2所得到的值,即16-6-2=8bits,而查表索引的取值范围为所有符合查表索引长度的二进制数,即0~28,因此,表中共有28=256个元素。
表中各元素是与各查表索引相对应的中间结果,设置中间结果的依据为:由于采用本发明方法求函数值时,需先对输入数据进行归一化处理,使所得到的归一化数据的最高数据位取值为1,然后右移预备舍弃的低位数据位个数位,即舍弃预备舍弃的低位数据位个数个最低数据位,从而得到查表索引,因此,将查表索引左移预备舍弃的低位数据位个数位,并置最高数据位为1即可近似恢复归一化数据,对所得到的归一化数据近似值求平方根,即可得到与每个查表索引对应的中间结果。
以index_talbe表示查表索引、sqrt_table[index_table]表示与查表索引index_table相对应的中间结果,本实施例中所建立的查表索引与查表结果的对应关系表示为:
sqrt_table[index_table]=fix[sqrt(pow(2,14)+(index_table<<6))*pow(2,7.5)](5.a)
(5.a)式中,index_talbe的取值范围为0~255;
<<为左移操作,表示将定点数据左移若干位;
pow(a,b)为幂函数,表示以a为底,以b为指数的幂;
fix[]为将浮点数转化为某种特定格式定点数的操作,这里,所作的操作可以包括乘法、四舍五入、取整或移位等。
为了提高中间结果的存储精度,可以将归一化数据近似值的平方根乘以一个放大因子g,再转化为定点数作为中间结果存储在表中相应的位置。这里,所选取的放大因子与常用函数的类型以及定点数字信号字长有关。
具体而言,根据与所述常用函数的最大输入数据相对应的函数值的二进制有效字长x,设置小于等于pow(2,L-1-x)的放大因子,其中,L表示定点数字信号处理平台的字长。对应于本实施例,放大因子为pow(2,(L-1)/2),这是由于长度为L的输入数据的平方根必定小于pow(2,(L-1)/2),而乘以pow(2,(L-1)/2)之后,一方面使得中间结果小于pow(2,L-1),保证不会产生溢出;另一方面将原始计算结果放大了pow(2,(L-1)/2)倍,最大程度地保留了平方根函数值的有效位数,使得存储精度得以提高,在(5.a)式中,表示为sqrt(pow(2,14)+(index_table<<6))*pow(2,7.5)。
步骤202:对平方根函数的输入数据进行归一化处理,得到与输入数据相对应的归一化数据。
本步骤中,将16bits正定点输入数据记为n1,若以bi表示n1的第i+1位,则n1可以用二进制形式表示为:
n1=0b14…bm+1bm…b1b0                              (5.b)
(5.b)中,最高位b15为符号位,值为0表示n1是正数;b14~b0为15个数据位,取值为0或1。设n1的有效字长为m+1,即数据位bm为1、数据位b14~bm+1均为0,将b14~bm+1这些值为全0的高位数据位称为冗余符号位。通常,定点数字信号处理器都提供求冗余符号位个数的函数,如norm(),在没有提供相应函数的定点数字信号处理器中,可以编程用移位操作求取。本例中,有:
norm(n1)=14-m                                            (5.c)
以下均以norm(n)表示定点数据n的冗余符号位个数。
本步骤中,对n1进行归一化处理为:将n1左移norm(n1)位,得到与n1相对应的归一化数据n2,即有:
n2=n1<<norm(n1)                                     (5.d)
若以ci表示n2的第i+1位,则n2的二进制表示形式可以记为:
n2=0c14c13c12…c14-m…c0                            (5.e)
则由(5.b)和(5.d)可知,存在关系:
c14=bm=1                                               (5.f)
c14-j=bm-j  (其中,j=1~m)                              (5.g)
因此,n2中不存在冗余符号位,其最高数据位c14必然为1。n2保留了n1的全部m个有效数据位bm~b0,只是将这m个数据位左移到最高数据位部分。由(5.d)可知,若以sqrt_fix_result(n1)和sqrt_fix_result(n2)分别表示的n1和n2的平方根,则n1与n2的平方根之间存在关系:
sqrt_fix_result(n1)=fix[sqrt_fix_result(n2)*pow(2,-norm(n))]    (5.h)
步骤203:根据所得到的归一化数据求查表索引,并根据所求得的查表索引以及预先建立的中间结果与查表索引的对应关系,得到与输入数据相对应的中间结果。
本步骤中,采取对归一化数据舍弃部分最低数据位的方式求查表索引。本实施例中,预备舍弃的低位数据位个数为6,因此,舍弃归一化数据n2的最低6个数据位之后,将保留c14~c6共9个数据位。由于n2的最高数据位c14恒为1,只有c13~c6这8个数据位存在0和1取值的变化,因此虽然保留了9个数据位,但在步骤201中建立中间结果与查表索引的对应关系表时只需要8bits,即表中共需要存储256个元素。此外,为了提高求函数值的精度,可以引入c5的值,即根据归一化数据n2的c13~c5求查表索引。具体而言,由归一化数据求查表索引包括:
首先,根据实际需要保留的数据位设置相应的掩码,本实施例中需要保留c13~c5,因此,所设置的掩码masking如下:
masking=0x3FE0=0b0011111111100000                         (5.i)
(5.i)中,0x表示十六进制数,0b表示二进制数;
然后,保留归一化数据n2的c13~c5数据位,并舍弃最低5位,得到索引index:
index=(n2 & masking)>>5                                 (5.j)
最后,对所得到的索引index的最后一个数据位做圆整处理,即等价于一个四舍五入的处理,得到查表索引。以index_table表示查表索引,则查表索引与索引的对应关系为:
index _ table = 255 , index = 511 ( index + 1 ) > > 1 , index &NotEqual; 511 - - - ( 5 . k )
然后,根据所求得的查表索引index_table查找步骤201所建立的中间结果与查表索引的对应关系表sqrt_table[],得到与输入数据相对应的中间结果sqrt_table[index_table]。
步骤204:判断求得输入数据的平方根之后,是否存在以该平方根作为输入数据的后续运算,若是,则继续执行步骤205;否则,继续执行步骤206。
本步骤中,后续运算包括以该平方根作为输入数据所进行的所有数学运算。
步骤205:以中间结果作为该后续运算的输入数据,并根据后续运算的结果计算输入数据的平方根,结束本流程。
步骤206:根据中间结果计算输入数据的平方根。
由步骤201中关于对应关系表sqrt_table[]的建立过程可知,步骤203查表所得到的中间结果是归一化数据n2的平方根乘以pow(2,(L-1)/2)之后的结果,因此,归一化数据n2的平方根sqrt_fix_result(n2)为:
sqrt_fix_result(n2)=fix[sqrt_table[index_table]*pow(2,-7.5)](5.m)
又因为n2与n1的平方根之间存在如(5.h)所示的关系,可由(5.h)和(5.m)得n1的平方根sqrt_fix_result(n1)为:sqrt_fix_result(n1)=fix[sqrt_table[index_table]*pow(2,-(norm(n1)/2+7.5))](5.n)
(5.n)中,进行底数为2的幂运算时,指数的整数部分可以利用移位操作实现,使得本发明方法的操作复杂度进一步降低。
至此,结束本实施例求定点数字信号常用函数值的方法流程。
由上述实施例可见,本发明在吸取现有技术舍弃输入数据的低数据位,以减小查表索引取值范围之优点的基础上,采取了将输入数据左移、消除冗余符号位,再舍弃低数据位的方式确定查表索引,使得无论输入数据的有效字长如何变化,本发明均能保证若干最高数据位的准确性。如此,一方面保证了本发明所求得的常用函数值具有足够的准确度,另一方面减小了查表索引的取值范围,降低了中间结果与查表索引对应关系表的存储空间。
此外,本实施例表中所存储的中间结果,采用放大之后再存储的方式,使得本发明所求得的常用函数值具备最高数据精度。并且,本实施例得到中间结果之后,如果确定求得相应函数值之后,该函数值将参与后续运算,则先以中间结果代替与之相应的常用函数值参与后续运算,在运算完成之后再进行中间结果与常用函数值之间的转换,从而使运算准确度得到了进一步提高。
以上为采用本发明方法求平方根函数值的具体实施方式,下面以采用本发明方法求自然对数函数值为例对本发明技术方案进行说明。
实施例二:
本实施例中,定点数字信号字长为16bits、预备舍弃数据位为5个、常用函数为以e为底的自然对数函数。
本实施例中求自然对数函数值的方法流程图与实施例一中图2相同,参见图2,本实施例方法包括以下步骤:
在步骤201中,根据预先确定的定点数字信号字长、预备舍弃的低位数据位个数以及常用函数的类型,建立中间结果与查表索引的对应关系表,记为ln_table[]。本实施例中,由于预备舍弃的低位数据位个数为5个,因此,所建立的ln-table[]需要16-2-5=9bits,表中共有29=512个元素。
本实施例中确定中间结果的依据与实施例一设置中间结果的依据类似,不同之处在于,将以e为底归一化数据近似值的对数作为中间结果,存储在表中的相应位置。
以index_talbe表示查表索引、ln_table[index_table]表示与查表索引index_table相对应的中间结果,本实施例中所建立的查表索引与查表结果的对应关系表示为:
ln_table[index_table]=fix[ln(pow(2,14)+(index_table<<5))*pow(2,11)](6.a)
(6.a)式中ln()为自然对数函数。
本实施例中,根据对数函数的特性,对提高中间结果存储精度的放大因子作了相应的调整,设置为pow(2,11),这是因为:ln(215-1)≈10.4,其二进制表示形式的有效字长为4bit,因此乘上放大因子pow(2,11)之后,既能将原始计算结果放大以提高存储数据的精度,同时又能保证所得到的中间结果不会溢出。
在步骤202至步骤203中,与实施例一类似,执行将输入数据n1归一化得到归一化数据n2,并舍弃n2的最低5个数据位的操作,从而得到查表索引,并根据查表索引查表得到相应的中间结果。具体而言,包括:
首先,根据实际需要保留的数据位设置相应的掩码,本实施例中需要保留c13~c4,因此,所设置的掩码masking如下:
masking=0x3FF0=0b0011111111110000                            (6.b)
然后,保留归一化数据n2的c13~c4数据位,并舍弃最低4位,得到索引index:
index=(n2 & masking)>>4                                    (6.c)
最后,对所得到的索引index的最后一个数据位做圆整处理,得到查表索引。以index_table表示查表索引,则查表索引与索引的对应关系为:
index _ table = 511 , index = 1023 ( index + 1 ) > > 1 , index &NotEqual; 1023 - - - ( 6 . d )
然后,根据所求得的查表索引index_table查找步骤201所建立的中间结果与查表索引的对应关系表ln_table[],得到与输入数据相对应的中间结果ln_table[index_table]。
在步骤204至步骤205中,进行与实施例一步骤204中相同的操作,在此不再赘述。
在步骤206中,首先根据(6.a)中中间结果与归一化数据n2的自然对数函数值之间的关系,计算以e为底n2的自然对数函数值。以ln_fix_result(n2)表示以e为底n2的自然对数函数值,以ln_table[index_table]表示所得到的中间结果,则对数函数值与中间结果的关系表示为:
ln_fix_result(n2)=fix[ln_table[index_table]*pow(2,-11)]            (6.e)
由于n2与n1之间存在关系:
n2=n1<<norm(n1)                                                (6.f)
并且,对于对数函数a和b,存在关系:
ln(a*b)=ln(a)+ln(b)                                                       (6.g)
ln(xy)=y*ln(x)                                                          (6.h)
因此,若以ln_fix_result(n1)表示n1的自然对数函数值,则n2与n1的自然对数函数值之间存在关系:
ln_fix_result(n1)=fix[ln(n2*pow(2,-norm(n1)))]                       (6.i)
由(6.e)和(6.i)可得以e为底n1的自然对数函数值ln_fix_result(n1)为:
ln_fix_result(n1)=fix[ln_table[index_table]*pow(2,-11)-norm(n1)*ln(2)](6.j)
至此,结束本实施例求自然对数函数值的方法流程。
由实施例一与实施例二可见,本发明在求各种常用函数值的过程中,所采取的基本步骤是一样的,即首先对输入数据归一化,然后求查表索引,再查表得中间结果,最后根据中间结果计算对应的函数值;各个过程的区别在于表中所存储的数据,即中间结果与查表索引的对应关系。
在建立中间结果与查表索引的对应关系时,一方面需要考虑本发明的应用场合,即常用函数类型;另一方面需要根据常用函数类型确定放大因子,即根据与最大输入数据相对应的函数值的二进制有效字长,确定对应关系表中的数据所乘的放大因子的值。
为了给本发明方法提供具体的实施环境,本发明提供了一种定点数字信号处理装置,下面通过一个具体实施例对本发明装置进行详细说明。
图3为本发明实施例中求定点数字信号常用函数值的装置结构示意图。参见图3,该装置包括:输入模块310、常用函数值求取模块320、存储模块330和输出模块340,其中,常用函数值求取模块320进一步包括归一化处理子模块321、查表子模块322和运算子模块323。
图3所示装置中,输入模块310,用于将输入数据发送给常用函数值求取模块320;
常用函数值求取模块320,用于对来自于输入模块310的输入数据进行归一化处理,并得到查表索引,并以所得到的查表索引向存储模块330查询;
存储模块330,用于存储中间结果与查表索引的对应关系,并根据常用函数值求取模块320的查询,向常用函数值求取模块320提供相应的中间结果;
常用函数值求取模块320,根据来自于存储模块330的中间结果计算输入数据的常用函数值,并将计算所得到的常用函数值发送给输出模块340;
输出模块340,用于接收来自于常用函数值求取模块320的常用函数值。
其中,常用函数值求取模块320中的归一化处理子模块321,用于对来自于输入模块310的输入数据进行归一化处理,并将所得到的归一化数据发送给查表子模块322;
查表子模块322,用于根据来自于归一化处理子模块321的归一化数据求查表索引,并以所求得的查表索引向存储模块330查询,将来自于存储模块330的中间结果发送给运算子模块323;
运算子模块323,用于根据来自于查表子模块322的中间结果计算与输入数据相对应的常用函数值,并将所得到的常用函数值发送给输出模块340;
图3所示装置中,也可以不设置运算子模块323,则查表子模块322直接将中间结果发送给输出模块340,由输出模块340将中间结果发送给其他模块参与后续运算。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (14)

1、一种求定点数字信号常用函数值的方法,其特征在于,根据预先确定的定点数字信号字长和预备舍弃的低位数据位个数确定查表索引,并对所述每个查表索引左移预备舍弃的低位数据位个数位、置其次高位为1所得到的值求所述常用函数值,将所得到的常用函数值作为中间结果,建立所述中间结果与所述查表索引的对应关系,该方法包括以下步骤:
A、对所述常用函数的输入数据进行归一化处理,得到与所述输入数据相对应的归一化数据;
B、根据所得到的归一化数据求查表索引,并根据所求得的查表索引以及预先建立的中间结果与查表索引的对应关系,得到与输入数据相对应的中间结果;
C、根据中间结果计算所述输入数据的常用函数值。
2、根据权利要求1所述的方法,其特征在于,所述确定查表索引为:将所述定点数字信号字长减所述预备舍弃的低位数据位个数,再减2所得到的值作为查表索引的长度,将符合所述查表索引长度的所有二进制数确定为所述查表索引;
所述得到每个查表索引对应的中间结果为:设L表示所述定点数字信号字长,d表示所述预备舍弃的低位数据位个数,对所述查表索引左移d位,加上以2为底、以(L-2)为指数的幂所得到的结果求所述常用函数值,并将所得到的常用函数值以乘法、四舍五入、取整或移位的操作转化为特定格式的定点数,得到所述中间结果。
3、根据权利要求2所述的方法,其特征在于,预先设置放大因子,在得到所述常用函数值之后,将所得到的常用函数值转化为特定格式的定点数之前,进一步包括:将所述常用函数值乘以所述放大因子。
4、根据权利要求3所述的方法,其特征在于,所述设置放大因子为:根据与所述常用函数的最大输入数据相对应的函数值的二进制有效字长,将所述放大因子设置为小于等于以2为底、以(L-1-所述函数值的二进制有效字长)为指数的幂。
5、根据权利要求2或3所述的方法,其特征在于,所述步骤A包括:
A1、求所述输入数据的冗余符号位个数;
A2、将所述输入数据左移所述冗余符号位个数位,得到所述输入数据的归一化数据。
6、根据权利要求2或3所述的方法,其特征在于,步骤B所述根据所得到的归一化数据求查表索引包括:
B11、构造长度等于所述定点数字信号字长的掩码,并将所述掩码的最高位和次高位置为0、从最低位开始的连续d位数据位置为0、其余位置为1,其中,d为预备舍弃的低位数据位个数;
B12、对所述归一化数据和所构造的掩码进行二进制与操作,并将所述与操作的结果右移d位,得到查表索引。
7、根据权利要求2或3所述的方法,其特征在于,步骤B所述根据所得到的归一化数据求查表索引包括:
B21、构造长度等于所述定点数字信号字长的掩码,并将所述掩码的最高位和次高位置为0、从最低位开始的连续(d-1)位数据位置为0、其余位置为1,其中,d为预备舍弃的低位数据位个数;
B22、对所述归一化数据和所构造的掩码进行二进制与操作,并将所述与操作的结果右移(d-1)位,得到右移结果;
B23、若右移结果等于以2为底、以(L-d-1)为指数的幂减1,则将以2为底、以(L-d-2)为指数的幂减1所得到的值作为所述查表索引;否则,将右移结果与1的和右移1位所得到的值作为所述查表索引。
8、根据权利要求2所述的方法,其特征在于,所述常用函数为平方根函数,所述步骤C为:求以2为底、以所述输入数据冗余符号位个数除以2所得值的相反数为指数的幂,并将所述幂与所述中间结果的乘积转化为特定格式的定点数,得到所述输入数据的常用函数值。
9、根据权利要求3所述的方法,其特征在于,所述常用函数为平方根函数,所述步骤C为:求以2为底、以所述输入数据冗余符号位个数除以2所得值的相反数为指数的幂,将所述幂除以所述放大因子、并乘以所述中间结果所得到的值转化为特定格式的定点数,得到所述输入数据的常用函数值。
10、根据权利要求2所述的方法,其特征在于,所述常用函数为对数函数,所述步骤C为:设logx2表示求以x为底2的对数,求所述输入数据冗余符号位个数与logx2之乘积,并将所述中间结果与所述乘积之差转化为特定格式的定点数,得到所述输入数据的常用函数值。
11、根据权利要求3所述的方法,其特征在于,所述常用函数为对数函数,所述步骤C为:设logx2表示求以x为底2的对数,求所述输入数据冗余符号位个数与logx2之乘积,并求所述中间结果与放大因子之商,将所述商与所述乘积之差转化为特定格式的定点数,得到所述输入数据的常用函数值。
12、根据权利要求2或3所述的方法,其特征在于,在所述步骤B与步骤C之间,进一步包括:
C0、判断所述步骤C之后是否存在以所述输入数据的常用函数值作为输入数据的后续运算,若是,则以所述中间结果作为所述后续运算的输入数据,并根据后续运算结果计算所述输入数据的常用函数值,结束本流程;否则,继续执行步骤C。
13、一种求定点数字信号常用函数值的装置,其特征在于,该装置包括:输入模块、常用函数值求取模块、存储模块和输出模块;
所述输入模块,用于将输入数据发送给所述常用函数值求取模块;
所述常用函数值求取模块,用于对来自于所述输入模块的输入数据进行归一化处理,并得到查表索引,并以所得到的查表索引向所述存储模块查询;
所述存储模块,用于存储中间结果与查表索引的对应关系,并根据所述常用函数值求取模块的查询,向所述常用函数值求取模块提供中间结果;
所述常用函数值求取模块,用于根据来自于所述存储模块的中间结果计算所述输入数据的常用函数值,并将计算所得到的常用函数值发送给所述输出模块;
所述输出模块,用于接收来自于所述常用函数值求取模块的常用函数值。
14、根据权利要求13所述的装置,其特征在于,所述常用函数值求取模块包括归一化处理子模块、查表子模块和运算子模块;
所述归一化处理子模块,用于对来自于所述输入模块的输入数据进行归一化处理,并将所得到的归一化数据发送给所述查表子模块;
所述查表子模块,用于根据来自于所述归一化处理子模块的归一化数据求查表索引,并以所求得的查表索引向所述存储模块查询,将来自于所述存储模块的中间结果发送给所述运算子模块;
所述运算模块,用于根据来自于所述查表子模块的中间结果计算与输入数据相对应的常用函数值,并将所得到的常用函数输出值发送给所述输出模块。
CNB2006101385327A 2006-11-07 2006-11-07 一种提高数字信号处理器准确度的方法及装置 Expired - Fee Related CN100458647C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101385327A CN100458647C (zh) 2006-11-07 2006-11-07 一种提高数字信号处理器准确度的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101385327A CN100458647C (zh) 2006-11-07 2006-11-07 一种提高数字信号处理器准确度的方法及装置

Publications (2)

Publication Number Publication Date
CN1945488A true CN1945488A (zh) 2007-04-11
CN100458647C CN100458647C (zh) 2009-02-04

Family

ID=38044918

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101385327A Expired - Fee Related CN100458647C (zh) 2006-11-07 2006-11-07 一种提高数字信号处理器准确度的方法及装置

Country Status (1)

Country Link
CN (1) CN100458647C (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101510148B (zh) * 2009-04-02 2014-10-29 北京中星微电子有限公司 一种指数运算方法和装置
CN105513587A (zh) * 2014-09-22 2016-04-20 联想(北京)有限公司 一种mfcc提取方法及装置
CN108228136A (zh) * 2017-12-08 2018-06-29 上海集成电路研发中心有限公司 基于优化查找表法的对数函数计算的方法及装置
CN113296732A (zh) * 2020-06-16 2021-08-24 阿里巴巴集团控股有限公司 数据处理方法和装置,处理器及数据搜索方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2227531C (en) * 1997-01-20 2003-03-18 Hitachi, Ltd. Graphics processing unit and graphics processing system
DE19906559C1 (de) * 1999-02-15 2000-04-20 Karlsruhe Forschzent Digital-elektronisches Verfahren zur Steigerung der Berechnungsgenauigkeit bei nichtlinearen Funktionen und ein System zur Durchführung des Verfahrens
JP2001296992A (ja) * 2000-04-14 2001-10-26 Mitsubishi Electric Corp 対数演算装置および対数演算方法
GB2401444B (en) * 2003-05-07 2006-06-14 Matsushita Electric Ind Co Ltd Apparatus and program for encoding fixed length binary words

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101510148B (zh) * 2009-04-02 2014-10-29 北京中星微电子有限公司 一种指数运算方法和装置
CN105513587A (zh) * 2014-09-22 2016-04-20 联想(北京)有限公司 一种mfcc提取方法及装置
CN105513587B (zh) * 2014-09-22 2020-07-24 联想(北京)有限公司 一种mfcc提取方法及装置
CN108228136A (zh) * 2017-12-08 2018-06-29 上海集成电路研发中心有限公司 基于优化查找表法的对数函数计算的方法及装置
CN108228136B (zh) * 2017-12-08 2021-06-15 上海集成电路研发中心有限公司 基于优化查找表法的对数函数计算的方法及装置
CN113296732A (zh) * 2020-06-16 2021-08-24 阿里巴巴集团控股有限公司 数据处理方法和装置,处理器及数据搜索方法和装置
CN113296732B (zh) * 2020-06-16 2024-03-01 阿里巴巴集团控股有限公司 数据处理方法和装置,处理器及数据搜索方法和装置

Also Published As

Publication number Publication date
CN100458647C (zh) 2009-02-04

Similar Documents

Publication Publication Date Title
CN1175579C (zh) 编码器
CN1146203C (zh) 用于音频编码的动态位分配装置和方法
CN1288622C (zh) 编码设备和解码设备
CN1575546A (zh) 变换及后续量化的实现
CN1630204A (zh) 具有矩阵转换技术的循环冗余码计算方法及系统
CN1106710C (zh) 向量量化装置和方法
CN1945488A (zh) 一种求定点数字信号常用函数值的方法及装置
CN1781253A (zh) 浮点格式的数字信号的无损编码方法、解码方法及其装置和程序
CN1845213A (zh) 一种实现sms4密码算法中加解密处理的方法
CN101060629A (zh) 图像压缩/解压方法及图像编/解码器和解码电路
CN1366738A (zh) 交织地址生成装置
CN101047915A (zh) 第三代时分同步码分多址移动终端自动校准的方法和装置
CN101047733A (zh) 短信处理方法以及装置
CN101057275A (zh) 矢量变换装置以及矢量变换方法
CN1151491C (zh) 音频编码装置和音频编码译码装置
CN1624653A (zh) 使用3字节转义操作码的指令集扩展
CN1791223A (zh) 基于上下文的自适应二维变长解码方法和装置
CN1286322C (zh) 一种低复杂度整数4×4离散余弦变换量化实现方法
CN1848097A (zh) 存储器地址生成装置以及具有它的处理器、存储器地址生成方法
CN1021004C (zh) 在剩余数系统中用于编码和译码数据的方法和装置
CN1577250A (zh) 用于实现2的幂的浮点估计的系统与方法
CN1014188B (zh) 二~十进制加法器电路
CN101055569A (zh) 一种电子数据表的函数收集方法和装置
CN1154238C (zh) 交织地址生成装置及交织地址生成方法
CN1841982A (zh) 一种高速译码芯片

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090204

Termination date: 20121107