具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本实施例提供了一种定点化方法,应用于数字信号处理系统,图1是根据本发明实施例的定点化处理方法的流程图,该方法包括:
步骤S102:按照浮点算法的控制-数据流图划分的所有并列条件分支分别对所有浮点信号进行信号范围分析,得到所有浮点信号的变化范围和最小整数位宽,其中,最小整数位宽为满足定点信号不溢出的最小正整数值。
步骤S104:使用变化范围对信号范围处理操作后所有浮点信号分别进行系统精度分析,得到所有浮点信号的最小小数位宽,其中,最小小数位宽为满足系统最终输出精度误差小于或等于预定的误差约束的最小正整数值。
步骤S106:使用所有浮点信号中同一浮点信号的最小整数位宽和最小小数位宽确定对浮点信号进行定点化处理的结果。
通过上述步骤,在定点化处理过程中,按照浮点算法的控制-数据流图划分的所有并列条件分支分别对所有浮点信号进行信号范围分析,得到所有浮点信号的变化范围和最小整数位宽,使用所有浮点信号中同一浮点信号的最小整数位宽和最小小数位宽确定对浮点信号进行定点化处理的结果,解决了相关技术中定点化方法由于位宽不准确造成对浮点化数据进行定点化处理中放大了定点信号的整数位宽和小数位宽,造成定点化结果定点化处理的结果不准确的问题,提高了浮点化信号进行定点化处理的准确性。
优选地,下面对步骤S102的一个优选实施方式进行说明。使用如下公式作为信号x的仿射形式
分别对浮点信号进行信号范围分析:
其中,X
0是信号的均值,X
k是
的幅值,n是
的总个数,m是系统输入信号的总个数,
θ
j表示第j个输入信号的弧度噪声项,c
j是其幅度系数;确定浮点信号的变化范围为
其中
x和
分别表示信号x变化的最小值和最大值;通过以下公式确定最小整数位宽:
通过该优选实施例,采用余弦函数使得非线性乘法的相关性信息被无损保留,提高了信号范围分析的准确度。
优选地,下面对步骤S104的一个优选实施方式进行说明。使用以下公式之一作为浮点信号x的精度误差Ex对所有浮点信号分别进行系统精度分析:Ex=x+2-FWL-1·cosθx(采用四舍五入的截位方式);Ex=x+2-FWL·cosθx(采用直接截断的截位方式);其中,FWL是小数位宽,θx表示第x个输入信号的弧度噪声项;确定最小小数位宽为满足系统输出精度误差与误差约束的差值小于或等于预定值的最小正整数值。通过该优选实施例,采用余弦函数使得非线性乘法的相关性信息被无损保留,提高了系统精度分析的准确性。
优选地,使用所有浮点信号中同一浮点信号的最小整数位宽和最小小数位宽确定对浮点信号进行定点化处理的结果包括:确定所有浮点信号中同一浮点信号的最小整数位宽中的最大值作为定点化处理中同一浮点信号的最终整数位宽;确定最小小数位宽中的最大值作为定点化处理的最终小数位宽。
优选地,并列条件分支为根据浮点信号的控制-数据流图对对浮点信号进行遍历得到的条件分支,实现了将数据处理和控制处理相结合,提高了定点化处理的合理性和效率。
实施例一
本实施例提供了一种仿射算法,本实施例结合了上述实施例及其中的优选实施方式,本实施例中,对用于图像卷绕的B-splines实例进行定点化处理。
本实施例中,B-splines基本函数B0、B1、B2和B3分别定义如下:
其中,输入u=[0,1]。以上四个信号的真实变化范围分别是:
和
需要说明的是,本实施例中,使用Libaffa仿射算术C++库进行AA计算,利用Matlab的符号算术工具箱V3.1.5(R2006b)进行RAA计算,用于作参照的信号真实变化范围通过数值方法或非线性规划获得。
所有实例都在内存为512-MB的Intel Pentium 43GHz PC上完成,AA和RAA计算结果都在10-2秒之内得到,而相应的数值计算或非线性规划往往需要几十秒甚至几分钟的计算时间。CPU运行时间相近显示了RAA与采用简单范围估计的AA计算量相近的属性,这也是基于区间算术的范围分析优于非线性规划等方法的地方,特别是在需要分析的DSP系统中信号数目很多的情况下。
将分别采用AA和RAA的信号范围分析结果列于表1,其中所有数值均四舍五入至小数点后第四位。表中的“B1+B2”横行用于考察信号B1、B2的AA形式和RAA形式在保留信号之间(B1和B2)相关性上的能力。
表1 通过AA进行范围分析的结果示意表
表2 通过RAA进行范围分析的结果示意表
图2是根据本发明实施例的分别采用AA和RAA的范围分析区间间隔
与信号真实区间间隔之比的示意图,如图2所示,该图和表给出的实验结果验证了RAA以下优点:
(1)如表1中所示,除了输入噪声项ε
1外,AA另外引入了10个相互独立的噪声项(ε
2~ε
11)来计算这些信号的AA形式。而RAA仅需要一个噪声项θ(来自于输入信号
),所有这些信号的非线性运算结果仅需要3个余弦项cos(θ)、cos(2θ)和cos(3θ)来表示它们的RAA形式。
(2)在计算高相关性的信号B1与B2之和时,RAA的结果形式比AA的结果要简单的多。
(3)由于RAA形式保留了信号之间的所有相关性信息,所以RAA可以得到B1+B2的准确范围分析结果。而AA形式的B1和B2几乎完全丧失了它们之间的相关性,所以B1+B2的AA计算结果大大过估计了其真实区间间隔。
(4)AA计算B1、B2时引入的相互独立的噪声项ε4,ε5,ε6和ε7,ε8,ε9传递到了接下来的B1+B2运算中,所以对B1、B2的过估计也传递到了B1+B2,AA使得前级信号的过估计影响到了对后级信号的分析。而采用RAA,对于信号B1、B2范围的过估计并没有影响其得到准确的B1+B2范围分析结果。
通过上述可知,通过RAA得到的信号B1、B2和B1+B2的整数位宽结果比AA的分析结果分别节省了一个比特。
实施例二
本实施例提供了一种仿射算法,本实施例结合了上述实施例及其中的优选实施方式,本实施例中,对4.2 2×2矩阵乘法实例进行定点化处理。
在本实施例中,2×2矩阵如下:
其中,输入信号a00,…,a11、b00,…,b11的范围均设置为[-1,1]。容易得到:输出y00,y01,y10和y11的精确变化范围都是[-2,2]。
需要说明的是,如果采用Strassen算法进行以上矩阵乘法,可以节省一个乘法器:
p0=(a00+a11)(b00+b11)
y00=p0+p3-p4+p6 p1=(a10+a11)b00
y01=p2+p4 p2=a00(b01-b11)
y10=p1+p3 p3=a11(b10-b00)
y11=p0+p2-p1+p5 p4=(a00+a01)b11
p5=(a10-a00)(b00+b01)
p6=(a01-a11)(b10+b11)
对于以上两种不同算法,采用AA的信号范围分析结果列于表3,对两种算法AA分别得到了两种完全不同的范围结果和整数位宽结果(采用二进制补码),而RAA对以上两种算法可以得到完全相同的分析结果,见错误!未找到引用源。。
表3 2×2矩阵乘法通过AA进行范围分析的结果示意表
Sig. |
AA form |
Range |
IWL |
y00 |
ε1+ε2 |
[-2,2] |
3 |
y01 |
ε3+ε4 |
[-2,2] |
3 |
y10 |
ε5+ε6 |
[-2,2] |
3 |
y11 |
ε7+ε8 |
[-2,2] |
3 |
表4 2×2矩阵乘法通过Strassen算法的结果示意表
Sig. |
AA form |
Range |
IWL |
y00 |
4ε1+2ε2-2ε3+4ε4 |
[-12,12] |
5 |
y01 |
2ε3+2ε5 |
[-4,4] |
4 |
y10 |
2ε2+2ε6 |
[-4,4] |
4 |
y11 |
4ε1+2ε5-2ε6+4ε7 |
[-12,12] |
5 |
表5 2×2矩阵乘法通过RAA进行范围分析的结果示意表
通过本实施例,体现了RAA的分析结果形式不会受到DSP算法变化的影响。
需要说明的是,对于任何采用不同算法的相等的多项式函数(基本算术包括加法、减法和乘法),RAA的结果形式都相同。假设有两个相等的多项式函数,它们采用了不同的算法来计算完全相等的输出,利用RAA分别得到它们的结果形式为
和
假设在这两个RAA结果形式里总的余弦项个数为N,则根据式(5)(见后面的具体实现方式)的定义,
和
都可以由这N个余弦项的线性组合(即RAA形式)来表示。此外,由于在计算这两个RAA结果形式的过程中没有任何近似,则无论输入信号的值取多少
和
都应该恒等,即无论在N个cos(·)内的输入弧度噪声向量取什么样的组合都有。
例如:
且uk=vk
以上结果显示,
和
的相同余弦项的系数都相等,因此
是完全相同的RAA形式,它们的范围分析结果也必然相等。
而对于AA来说,由于在不同DSP算法中产生不同的近似,AA的结果形式会有很大的不同。有时更优化的算法,利用AA计算反而会导致更差的范围分析结果,如在本小节中的2×2矩阵乘法实例。因此,采用RAA的信号范围分析比采用AA获得的结果更可靠。
实施例三
本实施例提供了一种仿射算法,本实施例结合了上述实施例及其中的优选实施方式,本实施例中,对多项式函数实例进行定点化处理。
本实施例中的这8个多项式函数列于表6,其中“Input ranges”列的“X”表示了从x1到xm的输入信号变化范围。
表6 多项式函数列表
具体地,将分别采用AA和RAA的输出范围分析结果列于表7。
表7 多项式采用AA的输出范围示意表
由该表中的结果可见,RAA为所有这8个多项式函数都找到了更加准确的变化区间结果,并且通过RAA获得的输出整数位宽与通过数值方法或非线性规划得到的输出所需真实整数位宽结果相比,除了最后一个函数外都相同。
需要说明的是,在上述三个实施例中,采用余弦项来替换式AA计算方法中的εk项,在遇到非线性乘法时,利用三角函数积化和差公式将余弦项之间的乘积转化为弧度项之间的加减,从而避免了像AA一样需要引入新的εk项来近似乘法结果。
通过该方法,实现了以下有益效果:
(1)每次非线性乘法之后,AA都需要引入新的独立的噪声项,这会导致无相关性的噪声项越来越多。而RAA无论遇到多少次非线性乘法,都只需要输入信号总个数个弧度噪声项来计算和分析系统中所有信号的变化范围。
(2)尽管AA将非线性乘法的所有二次方项均近似为一个一次方项,但RAA却往往可以获得更简洁的结果形式,这是因为信号之间保留的相关性所致。
(3)非线性乘法结果的相关性信息在RAA形式中被无损保留,可以在接下来的运算中相互结合或抵消。该性质使得RAA可以在高相关性的非线性系统中获得比AA更好的范围分析结果。
(4)RAA仅需要在最终确定信号区间范围的时候才确定每一个余弦项的下界和上界([-1,1]),所以RAA的运算与信号范围的过估计是相互独立的,数据流图中前级信号范围的过估计不会传递并影响到后级信号的分析结果;
(5)与AA不同,RAA形式的计算结果不会受到DSP算法变化的影响,这使得RAA的范围分析结果比采用AA更加可靠。
实施例三
本实施例提供了一种仿射算法,本实施例结合了上述实施例及其中的优选实施方式,本实施例中,采用了改进的仿射算术(RAA)。
在本实施例中,改进后的信号x的仿射形式RAA定义为如下形式:
其中
其中,x0、xk的意义与它们在AA形式中的意义相同,m是系统输入信号的总个数,θj表示第j个输入信号的弧度噪声项,cj是其幅度系数。RAA形式中第k个余弦项cosk(·)与AA中的εk项意义相类似。
RAA形式的
变化范围下界和上界可以如AA中的方法一样,取所有cos
k(·)都为-1或1,计算得到:
IA定义的区间
可以转化为相等的RAA形式:
其中x
0、x
1的定义同式(2)中的定义。
RAA的线性运算也与AA的定义相类似:
而对于非线性乘法:
其中:
利用三角函数积化和差公式:
在式(7)中P的每一个乘积项cos(·)×cos(·)均可以简化成一个RAA形式。再由式(6),P中的所有这些RAA形式之和仍将是一个RAA形式,故:
其中,z0、zk仍是式(5)中RAA形式定义中的意义;而n′,不同于原来的n,表示可能有新的余弦项由于弧度噪声项的加减而产生。
通过本实施例的方法对输入x=[-10,10]的输出x
2来进行范围分析,RAA给出
和
利用RAA可以得到其真实变化范围。
具体地,RAA总是可以取得和AA一样甚至更好的信号范围分析结果:在线性系统中,式(5)中RAA的每一个cosk(·)项都可以像式(1)中AA的εk项来对待,此时无论采用AA还是RAA来进行信号范围分析都没有区别;而对于非线性系统,由RAA计算cosα·cosβ得到的cos(α+β)和cos(α-β)项如果不能与其他的余弦项结合或相互抵消掉,则RAA的结果与AA结果相同。如果这些项可以互相结合或者抵消掉,则表示在RAA形式中记录的信号之间相关性对区间计算起到了积极影响,RAA的范围分析结果将会比AA的结果更好。
需要说明的是,RAA的公式并不是AA的公式的另一种表示形式。由于在AA公式中二次项Q的存在,如果不进行仿射近似的话,
的区间范围下界和上界仍然无法得知,只能通过数值方法或非线性规划等手段才能获得;而RAA可以利用已知的余弦函数有限范围(cos(·)=[-1,1])提供一个快速、有效的近似结果。
RAA所需计算量与AA相近,与AA形式中的噪声符号ε一样,RAA中的cos(·)项仅仅是一种表示方式,并不需要真正地进行余弦运算。唯一不同的地方是,RAA利用三角函数积化和差公式将余弦项之间的乘法转化为弧度噪声符号θ之间的加减运算。
实施例四
本实施例提供了一种定点化处理方法,本实施例结合了上述实施例及其中的优选实施方式,本实施例中,以u=(x1-2x2-7)2+(2x1+x2-5)2(输入x1和x2的变化范围均为[-4.5,4.5])和其等价形式v=5[(x1-3.4)2+(x2+1.8)2]为例,分别提供利用手算(可以做成专门的定点化软件)和Matlab符号算术(Symbolic Math)工具箱V3.1.5(Matlab R2006b)两种方式来进行RAA计算的示例。
第一种方式
第一种方式:手算(可以做成专门的定点化软件)
由输入x1和x2的变化范围均为[-4.5,4.5],可得它们的RAA形式:
x1=4.5cos(a)
x2=4.5cos(b)
则手算u的RAA形式过程如下:
u=(x1-2x2-7)(x1-2x2-7)+(2x1+x2-5)(2x1+x2-5)
=[4.5cos(a)-9cos(b)-7][4.5cos(a)-9cos(b)-7]
+[9cos(a)+4.5cos(b)-5][9cos(a)+4.5cos(b)-5]
=[20.25cos2(a)-40.5cos(a)cos(b)-31.5cos(a)
-40.5cos(a)cos(b)+81cos2(b)+63cos(b)
-31.5cos(a)+63cos(b)+49]
+[81cos2(a)+40.5cos(a)cos(b)-45cos(a)
+40.5cos(a)cos(b)+20.25cos2(b)-22.5cos(b)
-45cos(a)-22.5cos(b)+25]
=[10.125(cos(2a)+1)-20.25(cos(a+b)+cos(a-b))
-31.5cos(a)-20.25(cos(a+b)+cos(a-b))
+40.5(cos(2b)+1)+63cos(b)
-31.5cos(a)+63cos(b)+49]
+[40.5(cos(2a)+1)+20.25(cos(a+b)+cos(a-b))
-45cos(a)+20.25(cos(a+b)+cos(a-b))
+10.125(cos(2b)+1)-22.5cos(b)
-45cos(a)-22.5cos(b)+25]
=[10.125cos(2a)+10.125-40.5cos(a+b)-40.5cos(a-b)
-63cos(a)+40.5cos(2b)+126cos(b)+40.5+49]
+[40.5cos(2a)+40.5+40.5cos(a+b)+40.5cos(a-b)
-90cos(a)+10.125cos(2b)+10.125-45cos(b)+25]
=50.625cos(2a)-153cos(a)+50.625cos(2b)+81cos(b)+175.25
手算v的RAA形式过程如下:
V=5*((x1-3.4)*(x1-3.4)+(x2+1.8)*(x2+1.8))
=5*[(4.5cos(a)-3.4)(4.5cos(a)-3.4)
+(4.5cos(b)+1.8)(4.5cos(b)+1.8)]
=5*[(20.25cos2(a)-30.6cos(a)+11.56)
+(20.25cos2(b)+16.2cos(b)+3.24)]
=5*[10.125cos(2a)+10.125-30.6cos(a)+11.56
+10.125cos(2b)+10.125+16.2cos(b)+3.24]
=50.625cos(2a)+50.625cos(2b)-153cos(a)+81cos(b)+175.25
注:对于u、v两种算法,RAA得到了完全相同的结果形式。
第二种方式:Matlab符号算术工具箱
首先,在Matlab R2006b Command Window中输入符号声明、输入符号表达式(对应RAA形式)和输出u的计算式:
>>syms x1 x2 a b u v %symbols declarations
>>x1=4.5*cos(a); %input symbols
>>x2=4.5*cos(a);
>>u=(x1-2*x2-7)*(x1-2*x2-7)+(2*x1+x2-5)*(2*x1+x2-5)
然后,回车后得到u的符号算术运算结果如下:
u=(9/2*cos(a)-9*cos(b)-7)^2+(9*cos(a)+9/2*cos(b)-5)^2
最后,利用符号算术提供的内置函数simple()-combine method,即可获得其RAA形式:
>>simple(u)
combine:
405/8*cos(2*a)+701/4-153*cos(a)+405/8*cos(2*b)+81*cos(b)
同样的,v的符号运算结果如下:
>>v=5*((x1-3.4)*(x1-3.4)+(x2+1.8)*(x2+1.8));
>>simple(v)
combine:
405/8*cos(2*a)+701/4-153*cos(a)+405/8*cos(2*b)+81*cos(b)
实施例五
本实施例提供了一种定点化处理方法,本实施例结合了上述实施例及其中的优选实施方式。
本实施例中,对如下浮点算法进行定点化处理:
if(a<=0)
z=ab-c+b;
else
z=ab+c-b;
其中3个输入信号范围a=[-3,2],b=[4,8],c=4.3,约束定点化后的输出
与其浮点值z之间的误差不能超过2^(-8),即
一般来说,我们可以假设输出信号z的小数位宽FWLz被设置为8个比特,FWLz=8本身在输出z处也引入了最大为2-8-1的四舍五入取整量化误差,因此,在z被量化前,传播到z的总误差最大不能超过2-9
本实施例的方法包括如下步骤:
步骤S302:CDFG Converter用于将浮点算法代码转换为控制-数据流图(CDFG)。
CDFG Converter将输入的浮点算法拆分细化为每两输入与一个运算为一个单元,从而确定共有多少个中间信号(假设有P个中间信号)。由于算法最初的输入信号(M个)变化范围已经确定,所以这些信号的整数位宽已经确定,只有P个中间信号和N个最终输出的整数位宽待确定。此外,共有(M+P+N)个信号的小数位宽待确定。
例如:图4是根据本发明实施例的信号流图一,如图4所示,if(a<=0),
f=a×b
g=f-c
z=g+b。
图5是根据本发明实施例的信号流图二,如图5所示,else
d=a×b
e=d+c
z=e-b。
因此有d,e,f,g共4个中间信号和最终输出z的整数位宽待确定,a,b,c,d,e,f,g,z共8个信号的小数位宽待确定。
步骤S304:各个条件分支分别进行基于RAA的信号范围分析。
例如:对于if分支,最初输入信号a=[-3,0]和b=[4,8]转化为RAA形式为:
和
则
对上式中所有余弦项同时取-1/+1分别得到
的最小/最大值-24/6,即f=[-24,6]。
同样地,c=4.3的RAA形式有
即g=[-28.3,1.7]图6是根据本发明实施例的信号流图三,如图6所示,
即z=[-20.3,5.7]。
对于else分支,最初输入信号a=(0,2]和b=[4,8]转化为RAA形式为:
和
则
即d=[-4,16]。
即e=[0.3,20.3]
图7是根据本发明实施例的信号流图四,如图7所示, 即z=[-3.7,12.3]
步骤S306:各个条件分支分别进行基于RAA的系统精度分析。
例如:对于if分支,定点信号a,b,c的精度误差分别表示为RAA形式:
则定点信号f的精度误差为:
同样地,可得最终输出z的精度误差为:
Ea×b-c+b=z=aEb+bEa+EaEb+Ef-Ec+Eg+Eb+Ez
考虑最坏情况:a,b均取最大绝对值,则需要满足:
2-9≥max|Ea×b-c+b=z|
=(max|a|+1)·2-FWLb-1+max|b|·2-FWLa-1+2-FWLa-FWLb-2+2-FWLf-1+2-FWLc-1+2-FWLg-1
=4×2-FWLb-1+8×2-FWLa-1+2-FWLa-FWLb-2+2-FWLf-1+2-FWLc-1+2-FWLg-1
一般来说,我们设置所有信号为相同的小数位宽FWL,因此有:
2-9≥4×2-FWL-1+8×2-FWL-1+2-FWL-FWL-2+2-FWL-1+2-FWL-1+2-FWL-1=15×2-FWL-1+2-2FWL-2
FWL最小为12时才能满足上式,因此可以得到信号的小数位宽FWL=12。
对于else分支,可得最终输出z的精度误差为:
Ea×b+c-b=aEb+bEa+EaEb+Ed+Ec+Ee-Eb+Ez
考虑最坏情况:a,b均取最大绝对值,且所有信号取相同的小数位宽FWL,则有
2-9≥1×2-FWL-1+8×2-FWL-1+2-FWL-FWL-2+2-FWL-1+2-FWL-1+2-FWL-1=12×2-FWL-1+2-2FWL-2
FWL最小为12时才能满足上式,因此可以得到信号的小数位宽FWL=12。
步骤S308:Wordlength Arbiter根据各个条件分支的位宽分析结果,对每个信号取所有支路分析结果中最大的IWL和FWL。
例如:(1)对于if分支,分析结果为:a=[-3,0],b=[4,8],c=4.3,f=[-24,6],g=[-28.3,1.7],z=[-20.3,5.7],FWL=12;
IWLa=3;IWLb=4;IWLc=3;IWLf=6;IWLg=6;IWLz=6;FWL=12.
(2)对于else分支,分析结果为:a=(0,2],b=[4,8],c=4.3,d=[-4,16],e=[0.3,20.3],z=[-3.7,12.3],FWL=12;
IWLa=2;IWLb=4;IWLc=3;IWLd=6;IWLe=5;IWLz=5;FWL=12.
对每个信号取各支路分析结果中最大的IWL和FWL,最终分析结果为:
IWLa=3;IWLb=4;IWLc=3;IWLf=6;IWLg=6;IWLd=6;IWLe=5;IWLz=6;FWL=12.
需要说明的是,本实施例确定了待定点化信号的整数位宽(IWL)和小数位宽(FWL)的采用定点算术(如定点C/C++、Matlab等)描述的定点算法代码。
例如:最终输出定点算法为:
if(a<=0)
f=a×b
g=f-c
z=g+b;
else
d=a×b
e=d+c
z=e-b;
其中,IWLa=3;IWLb=4;IWLc=3;IWLf=6;IWLg=6;IWLd=6;IWLe=5;IWLz=6;FWL=12。
该定点化结果保证信号都不会发生上溢,且定点输出结果z与浮点输出之间的误差保证不会超过2^(-8)。
本实施例提供了一种定点化处理装置,图8是根据本发明实施例的定点化处理装置的结构框图,如图8所示,该装置包括:第一处理模块82,第二处理模块84,第三处理模块86,下面对上述结构进行详细描述:
第一处理模块82,用于按照浮点算法的控制-数据流图划分的所有并列条件分支分别对所有浮点信号进行信号范围分析,得到所有浮点信号的变化范围和最小整数位宽,其中,最小整数位宽为满足定点信号不溢出的最小正整数值;第二处理模块84,连接至第一处理模块82,用于使用变化范围对第一处理模块82进行的信号范围处理操作后所有并列条件分支的浮点信号分别进行系统精度分析,得到所有浮点信号的最小小数位宽,其中,最小小数位宽为满足系统最终输出精度误差小于或等于预定的误差约束的最小正整数值;第三处理模块86,连接至第一处理模块82和第二处理模块84,用于使用第一处理模块82得到的所有浮点信号中同一浮点信号的最小整数位宽和第二处理模块84得到的最小小数位宽确定对浮点信号进行定点化处理的结果。
图9是根据本发明实施例的定点化处理装置的优选的结构框图,如图9所示,该装置包括:第一处理模块82包括:第四处理模块822、第一确定模块824、第二确定模块826;第二处理模块84包括:第五处理模块842和第三确定模块844;第三处理模块86包括:第六处理模块862和第七处理模块864,下面对上述结构进行详细描述:
第一处理模块82包括:第四处理模块822,用于使用如下公式作为信号x的仿射形式
分别对所有并列条件分支的浮点信号分别进行信号范围分析:
其中,X
0是信号的中值(或均值),X
k是
的幅值,n是
的总个数,m是系统输入信号的总个数,
θ
j表示第j个输入信号的弧度噪声项,c
j是其幅度系数;第一确定模块824,连接至第四处理模块822,用于确定浮点信号的变化范围为
第二确定模块826,用于通过以下公式确定最小整数位宽:
其中
x和
分别表示信号
变化的最小值和最大值。
第二处理模块84包括:第五处理模块842,用于使用以下公式之一作为浮点信号x的精度误差Ex对所有浮点信号分别进行系统精度分析:Ex=x+2-FWL-1·cosθx;Ex=x+2-FWL·cosθx;其中,FWL是小数位宽,θx表示第x个输入信号的弧度噪声项;第三确定模块,连接至第五处理模块842,用于确定最小小数位宽为满足系统输出精度误差小于或等于预定的误差约束的最小正整数值的最小正整数值。
第三处理模块86包括:第六处理模块862,用于确定所有浮点信号中同一浮点信号的最小整数位宽中的最大值作为定点化处理中同一浮点信号的最终整数位宽;第七处理模块864,用于确定最小小数位宽中的最大值作为定点化处理的最终小数位宽。
通过上述实施例,提供了一种定点化处理方法及装置,通过在定点化处理过程中,按照浮点算法的控制-数据流图划分的所有并列条件分支分别对所有浮点信号进行信号范围分析,得到所有浮点信号的变化范围和最小整数位宽,使用所有浮点信号中同一浮点信号的最小整数位宽和最小小数位宽确定对浮点信号进行定点化处理的结果,解决了相关技术中定点化方法由于位宽不准确造成对浮点化数据进行定点化处理中放大了定点信号的整数位宽和小数位宽,造成定点化结果定点化处理的结果不准确的问题,提高了浮点化信号进行定点化处理的准确性。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。