整数运算的数字低通滤波方法及装置的制造方法

文档序号:9891001阅读:377来源:国知局
整数运算的数字低通滤波方法及装置的制造方法
【技术领域】
[0001 ]本发明涉及整数运算的数字低通滤波方法及装置。
【背景技术】
[0002]在数字信号处理中,有些物理量(如:电压、电流)在进入数学模型之前都需要“稳定性”处理,即对信号进行滤波,以去除干扰。为减少对信号的影响,滤波时要尽量减小延时或位移。在使用DSP或相应单片机的定时中断处理机制来处理时,由于中断时间可调,截止频率很难预先确定。如果要精确处理截止频率,必须将中断时间与滤波系数相关。一般情况下不需要精确处理截止频率,只要满足现场使用要求即可;还有一些用于显示的物理量在进入显示器之前也需要“稳定性”处理,例如,考虑到人的眼睛能识别的速度在25栈/秒以下,为防止更新太快,这类信号也需要滤波。这类处理,通常采用一阶低通滤波算法进行滤波,其算法逻辑表达式如下:
[0003]y(n) = {x(n)-y(n-l)}/h+y(n-l)
[0004]其中,
[0005]y(η):本次滤波输出;x(n):本次滤波输入;y(n-1):上次滤波输出;h:滤波系数(大于I的数)。
[0006]由上式可知,如果信号的变化量较小(x(n)-y(n-l)),整数运算的DSP或相应的单片机在运算时,因位数的限制,变化量被截尾舍弃,造成输出永远停留在y(n-l ),不会变化的问题。
[0007]如:h= 4;
[0008]从上式可以看出,当输入(x(η))相对输出(y (n-1))变化大于4时(|x_y |>4),输出(7(11))有变化,如果1(11)-7(11-1)为加4,则7(11)=7(11-1)加1;如果1(11)-7(11-1)为减4,则7(n) = y (η-1)减I;也就是说,X(η)变化4个单位,y (η)变化I个单位;χ(η)变化较快y (η)变化较慢;这样就起到了滤波的效果。
[0009]但是当输入(χ(η))相对于输出(y(η-1))的变化小于4时(|χ-y |〈4),与4(h)相除的结果被截尾舍弃,造成输出y(n)停留在y(n-l),起不到滤波作用。
[0010]为了解决这个问题,现有技术中,将所有数据先放大,然后滤波处理,最后再还原。[0011 ]但是放大和还原,需要进行乘法和除法运算,使DSP或单片机的资源和时间消耗在放大和还原上,影响DSP或单片机的正常工作。
[0012]本发明的目的在于提供一种既能提高运算精度,又能减少运算量的整数运算的数字低通滤波方法及装置。

【发明内容】

[0013]本发明的第一技术方案为,整数运算的数字低通滤波方法,其算法逻辑表达式为下式(1),
[0014]y(n) = {x(n)-y(n-l)}/h+y(n-l) (I)
[0015]其中,y(η):本次滤波输出;χ(η):本次滤波输入;y (n_I):上次滤波输出;h:滤波系数,
[0016]本发明的特征在于,在式(I)中引入变量r,由下式(2)的算法逻辑表达式,计算滤波输出y,
[0017]y(n)={x(n)-y(n-l)+r(n-l)}/h+y(n-l) (2)
[0018]其中,r的算法逻辑表达式为下式(3),
[0019]r(n) = {x(n)-y(n-l)+r(n-l)}/h 的余数(3)
[0020]r(n):本次余数;r(n_l):上次余数,
[0021]y、x、h、r 为整数,
[0022]包括运算y(n)和运算r(n)步骤。
[0023]第二技术方案基于第一技术方案,其特征在于,运算y(n)的步骤,包括,
[0024]读取x(n)、y(n_l)、r(n_l),
[0025]调用累加器运算A= x(n)-y(n-l)+r(n-l);
[0026]读取A、h,
[0027]调用除法器运算B=A/h;
[0028]读取Bj(R1),
[0029]调用累加器运算y(n-l)+B,计算y(n);
[0030]y(n)作为本次的滤波输出,并用于下一次运算,
[0031]运算r(n)的步骤,包括,
[0032]读取x(n)、y(n_l)、r(n_l)
[0033]调用累加器运算A= x(n)-y(n-l)+r(n-l);
[0034]读取A、h,
[0035]调用求余运算器运算A/h的余数,计算r(n),
[0036]r(n)作为本次的余数输出,并用于下一次运算。
[0037]第二技术方案基于第一技术方案,其特征在于,所述求余运算器为逻辑移位器。
[0038]第三技术方案基于第二技术方案,其特征在于,所述求余运算器为逻辑移位器。
[0039]第四技术方案基于第一至第三中任一项技术方案,其特征在于,初始运算时,y、r的初始值设定为O。
[0040]第五技术方案为整数运算的数字低通滤波装置,其特征在于,包括,计算A= X(n)-y (n-1 )+r (n-1)的第一累加器,计算B = A/h的除法器,计算y (n)= y (n-1 )+B的第二累加器,计算4 = 1(11)-7(11-1)+1'(11-1)的第三累加器,计算4/11的余数的求余运算器,
[0041 ]其中,y (η):本次滤波输出;χ (η):本次滤波输入;y (η_1):上次滤波输出;h:滤波系数,r(n):本次余数;r(n-l):上次余数。
[0042]第六技术方案基于第五技术方案,其特征在于,所述求余运算器为逻辑移位器。
[0043]第七技术方案基于第五或第六技术方案,其特征在于,第一累加器、第二累加器、第三累加器在初始运算时,y、r的初始值设定为O。
【附图说明】
[0044]图1为本发明实施方式的结构框图;
[0045]图2为本发明实施方式中y的运算流程图;
[0046]图3为本发明实施方式中r的运算流程图;
[0047]图4是现有技术中y的运算流程图;
[0048]图5是现有技术中yf的运算流程图。
【具体实施方式】
[0049]在说明本发明的实施方式之前,首先对现有技术进行说明。
[0050]为解决输入(x(n))相对于输出(y(n-l))的变化小时,输出y(n)没有变化的问题,现有技术的算法是将所有数据先放大,然后滤波,最后再还原,以下是其算法逻辑表达式,式中;引入新的变量yf^y(n) = [K*x(n) + (H-K)*y(n-1) + (H-K)*yf(n-1)/H]/H(4)yf(n)=[K*x(n-1) + (H-K)*y(n-1) + (H-K)*yf(n-1)/H]%H(5)其中,
[0051]x:输入
[0052]y:输出(整数)
[0053]yf:输出(小数)
[0054]H:滤波系数(大于I的数)
[0055]K:滤波比例
[0056]Η>Κ>0
[0057]带符号求余运算。
[0058]如H=1024,K = 256
[0059]由式(4)得
[0060]y = (x+y*3+yf*3/4)/4
[0061]= x/4+y*3/4+yf*3/4/4
[0062]由式(5)得
[0063]yf=(x+y*3+yf*3/4)&3
[0064]在运算式(4)时,第一项:x/4,g卩,输入(x(n))取四分之一;第二项:y*3/4,S卩,输出(y(n-l))取四分之三;第三项:yf*3/4/4,即,输出小数(yf(n-l))取四分之三并进位。通过这样的运算把整数及小数都输出了(包括滤波),并且,小数部分反映到了下次的y和yf的运算中,防止了因整数运算导致的小数部分丢失。为了计算方便除法运算也可以用移位代替运算,此时,
[0065]y = (x+y*3+(yf*3>>2))>>2
[0066]or y = (x*256+y*768+(yf*768?10))>>10
[0067]yf=(x+y*3+(yf*3>>2))&3
[0068]or y = (x*256+y*768+(yf*768>>10))&1023
[0069]图4、图5是现有技术中y和yf的运算流程图。
[0070]由图4、5的流程图可知,现有的算法在计算y和yf时需要进行六次乘法、三次除法或移位(向右)以及若干加减逻辑运算。乘法运算时,为保证运算精度,数据类型要放大一倍;如:16位X 16位时结果必须32位这样才是安全的;数据类型的位数越多计算机处理的速度越慢;占用的存储空间越大;要想提高运行效率必须合理运用乘除法。
[0071 ]以下通过与现有技术的对比对本发明的实施方式进行说明。
[0072]下式(6)是本实施方式的y的算法逻辑表达式,下式(7)是本实施方式的r的算法逻辑表达式,均采用整数运算。
[0073]y(n)={x(n)-y(n-l)+r(n-l)}/h+y(n-l) (6)
[0074]r(n) = {x(n)-y(n-l)+r(n-l)}/h 的余数(7)
[0075]r(n):本次余数;r(n-l):上次余数;
[0076]y(n)、x(n)、y(n_l)、h、r为整数。
[0077]与下式(8)的基本表达式相比,式(6)中引入了变量r,且r(n)为{x(n)-y(n-l)+r(n-l)}/h的余数,因此,运算式(6)时,被保存的余数部分加入到下一次的运算中,解决了运算时,因余数所产生的小数丢失的问题。
[0078]y(n) = {x(n)-y(n-l)}/h+y(n-l) (8)
[0079]其中,y(n):本次滤波输出;x(n):本次滤波输入;y(n-l):上次滤波输出;h:滤波系数。
[0080]以下对本发明的实施方式进行说明。
[0081]图1为本发明实施方式的结构框图。数据奴11)、7(11-1)^(11-1)输入到累加器六,由累加器厶计算厶=1(11)1(11-1)+1'(11-1);数据厶和11输入到除法器13,由除法器13计算13=4/!1;数据B和y(n-l)输入到累加器C,由累加器C计算C = y(n-1)+B;数据C作为本次的滤波输出y(η),保存后用于下一次运算。计算r时,
[0082]数据x(n)、y(n_l)、r(n_l)输入到累加器A,由累加器厶计算厶二叉!;]!),!;]!-]^)+!.!;]!-1);数据A和h输入到逻辑移位器B,由逻辑移位器B计算B = A%H,B为本次的余数输出r(n),保存后用于下一次运算。本实施方式求余数采用的是逻辑移位器,但可使用任何求余运算器。
[0083]图2为y的运算流程图。
[0084]步骤1,输入数据:X,Y,R
[0085]步骤2,调用累加器A计算X-Y+R,结果在A中,
[0086]步骤3,得到 A=X_Y+R[0087 ]步骤4,输入数据:A,H
[0088]步骤5,调用除法器B计算A/H,结果在B中,
[0089]步骤6,得到 B=A/H
[0090]步骤7,输入数据:B,Y
[0091 ] 步骤8,调用累加器C计算Y+B,结果在C中,
[
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1