一种FIR抽取滤波器的数据处理方法与流程

文档序号:18405734发布日期:2019-08-10 00:21阅读:318来源:国知局
一种FIR抽取滤波器的数据处理方法与流程

本公开涉及信号处理技术领域,具体地,涉及一种fir抽取滤波器的数据处理方法。



背景技术:

低频射电频谱仪是安装在嫦娥四号着陆器平台上的空间低频射电信号观测仪器,其通过探测来自太阳、太阳行星际空间及银河系空间等的低频电场,分析电场的频谱信息,实现对太阳低频射电特征和月表低频辐射环境的探测。根据低频射电频谱仪的技术要求,探测仪的工作频率为0.1-40mhz,为了保证接收信号的灵敏度和频率分辨率,分为两个频段进行接收,其中低频段频率范围为0.1-2mhz,频率分辨率优于10khz,高频段频率范围为1-40mhz,频率分辨率优于200khz。

低频射电频谱仪采用有限脉冲响应(finiteimpulseresponse,fir)抽取滤波器对高速模数转换器(analog-to-digitalconverter,adc)量化数据进行低通滤波,得到低频段时域数据,然后进行频谱分析。为了降低低频射电频谱仪系统的实现难度和硬件成本,在实现fir抽取滤波器的功能时,对fir抽取滤波器的算法提出占用资源少、计算速度快等要求。



技术实现要素:

(一)要解决的技术问题

本公开提供了一种fir抽取滤波器的数据处理方法,以至少解决以上技术问题。

(二)技术方案

本公开提供了一种fir抽取滤波器的数据处理方法,包括:s1,将滤波器分解为个子滤波器,其中,n为所述滤波器中系数的个数,d为所述子滤波器中系数的个数;s2,为每一所述子滤波器定义一数据寄存器;s3,接收到待滤波数据后,每一所述子滤波器分别根据其系数和相应的数据寄存器的值对所述待滤波数据进行乘加处理;s4,判断已滤波数据的个数是否为d的整数倍,若不是,每一所述子滤波器将其乘加结果保存至相应的数据寄存器,否则,每一所述子滤波器将其乘加结果保存至其前一个子滤波器相应的数据寄存器,清零最后一个所述子滤波器相应的数据寄存器,并输出第一个所述子滤波器的乘加结果。

可选地,所述步骤s2还包括:为每一所述子滤波器设置一相应的长度为d的循环移位寄存器,所述循环移位寄存器用于存放相应的所述子滤波器的系数。

可选地,所述步骤s4之后还包括:s5,每一所述循环移位寄存器中存放的系数循环移动1位;s6,重复执行步骤s3-s5,直至无所述待滤波数据。

可选地,所述循环移动1位为向左循环移动1位或向右循环移动1位。

可选地,所述步骤s1之前还包括:s0,当n不等于d的整数倍时,在所述滤波器中系数的末端添加个系数0。

可选地,所述步骤s1包括:从左至右,在所述滤波器的个系数中选取d个系数以形成第一个所述子滤波器,重复上述操作,直至形成第个所述子滤波器。

可选地,所述步骤s3中对所述待滤波数据进行乘加处理包括:将所述待滤波数据与所述子滤波器的第一系数相乘,并与该子滤波器相应的数据寄存器中的值相加。

可选地,当所述已滤波数据的个数不是d的整数倍时:tn=tn′+x·vn′(0),其中,x为待滤波数据,tn为待滤波数据处理后第n个数据寄存器的值,tn′为待滤波数据处理前该第n个数据寄存器的值,vn′(0)为第n个子滤波器的第一系数。

可选地,当所述已滤波数据的个数是d的整数倍时:tn=tn+1′+x·vn+1′(0),tout=t1′+x·v1′(0),其中,x为待滤波数据,tn为待滤波数据处理后第n个数据寄存器的值,tn+1′为待滤波数据处理前第n+1个数据寄存器的值,为待滤波数据处理后第个数据寄存器的值,vn+1′(0)为待滤波数据处理前第n+1个子滤波器的第一系数,v1′(0)为待滤波数据处理前第一个子滤波器的第一系数。

可选地,所述数据寄存器的长度为1,所述数据寄存器的初始值为0。

(三)有益效果

本公开提供的fir抽取滤波器的数据处理方法具有以下有益效果:

(1)该fir抽取滤波器仅需要个乘法器和个加法器,其占用的硬件计算资源少;

(2)该fir抽取滤波器仅需要个循环移位寄存器和个数据寄存器,以存储滤波器系数和中间结果,其占用的存储资源少;

(3)可实时输出抽取滤波后的结果,其计算效率高;

(4)实现步骤简单,可应用于其它软件无线电系统,适用性广。

附图说明

图1示意性示出了本公开实施例提供的fir抽取滤波器的数据处理方法的流程图。

图2示意性示出了本公开实施例提供的fir抽取滤波器的数据处理方法的工作流程图。

图3a示意性示出了待抽取滤波的波形数据。

图3b示意性示出了传统方法滤波后的数据。

图3c示意性示出了本公开实施例提供的fir抽取滤波器的数据处理方法抽取滤波后的数据。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。

本实施例提供了一种fir抽取滤波器的数据处理方法,参阅图1,结合图2、图3a、图3b和图3c对该方法进行详细说明,该方法包括以下操作。

s1,将滤波器分解为个子滤波器,其中,n为滤波器中系数的个数,d为子滤波器中系数的个数。

首先,在操作s1之前,判断滤波器中系数的个数n是否为子滤波器中系数的个数d的整数倍,当n不等于d的整数倍时,在滤波器中系数的末端添加个系数0。其中,表示对n/d进行向上取整,例如n=58,d=20时,此时需要在滤波器系数的末端添加两个系数0;n=60,d=20时,此时无需在滤波器系数的末端添加系数0。

然后,从左至右,在滤波器的个系数中依次选取d个系数以形成第一个子滤波器w1,重复该操作,依次形成第二个子滤波器w2、第三个子滤波器w3、……第个子滤波器滤波器中系数为h(n),每个子滤波器中系数如下:

第一个子滤波器w1:h(0)、h(1)、h(2)、……、h(d-1);

第二个子滤波器w2:h(d)、h(d+1)、h(d+2)、……、h(2d-1);

第三个子滤波器w3:h(2d)、h(2d+1)、h(2d+2)、……、h(3d-1);

以此类推,第个子滤波器h(kd)、h(kd+1)、h(kd+2)、……、h(kd+d-1),其中,

以滤波器中系数的个数n=60、子滤波器中系数的个数d=20、滤波器中系数为h(n)为例,其中0≤n≤n-1,可将滤波器分解为3个子滤波器w1、w2、w3,每个子滤波器中系数如下:

第一个子滤波器w1:h(0)、h(1)、h(2)、……、h(19);

第二个子滤波器w2:h(20)、h(21)、h(22)、……、h(39);

第三个子滤波器w3:h(40)、h(41)、h(42)、……、h(59)。

s2,为每一子滤波器定义一数据寄存器。

为每一个子滤波器定义一个长度为1的数据寄存器并清零,即数据寄存器的初始值为0,每个子滤波器对应一数据寄存器,共定义有个数据寄存器,用于存放处理方法中间的乘加结果。

以上述n=60、d=20示例为例,需定义三个数据寄存器t1、t2、t3,分别对应子滤波器w1、w2、w3。t1存放w1的中间乘加结果,t2存放w2的中间乘加结果,t3存放w3的中间乘加结果。

为每一个子滤波器设置一个长度为d的循环移位寄存器,每个子滤波器对应一循环移位寄存器,共设置有个循环移位寄存器;并将每一个子滤波器的系数输入其相应的循环移位寄存器,循环移位寄存器对存入其中的子滤波器系数进行保存。

以上述n=60、d=20示例为例,需定义三个循环移位寄存器v1、v2、v3,分别对应子滤波器w1、w2、w3。v1存放w1的20个系数,v2存放w2的20个系数,v3存放w3的20个系数。

s3,接收到待滤波数据后,每一子滤波器分别根据其系数和相应的数据寄存器的值对待滤波数据进行乘加处理。

接收到待滤波数据后,将该待滤波数据分别与每一子滤波器的第一系数相乘,并与该子滤波器相应的数据寄存器中的值相加,其中,第一系数为子滤波器相应的循环移位寄存器中的第一个系数。

以上述n=60、d=20示例为例,待滤波数据为x,v1(0)、v2(0)、v3(0)分别为v1、v2、v3中的第一个系数,t1’、t2’、t3’分别为x处理前t1、t2、t3的值,三个子滤波器分别对待滤波数据x进行以下计算:t1′+x·v1′(0)、t2′+x·v2′(0)、t3′+x·v3′(0)。

s4,判断已滤波数据的个数是否为d的整数倍,若不是,每一子滤波器将其乘加结果保存至相应的数据寄存器,否则,每一子滤波器将其乘加结果保存至其前一个子滤波器相应的数据寄存器,清零最后一个子滤波器相应的数据寄存器,并输出第一个子滤波器的乘加结果。

操作s4包括以下子操作:

s41,判断已滤波数据的个数是否为d的整数倍,若不是,执行子操作s42,若是,执行子操作s43。

s42,每一子滤波器将其在操作s3中得到的乘加结果保存至其相应的数据寄存器中,具体地:

tn=tn′+x·vn′(0)

其中,x为待滤波数据,tn为x处理后第n个数据寄存器的值,tn′为x处理前该第n个数据寄存器的值,vn′(0)为第n个循环移位寄存器的第一个系数。

以上述n=60、d=20示例为例,该待滤波数据x处理后,数据寄存器t1中保存的数据为t1′+x·v1′(0),数据寄存器t2中保存的数据为t2′+x·v2′(0),数据寄存器t3中保存的数据为t3′+x·v3′(0)。

s43,每一子滤波器将其在操作s3中得到的乘加结果保存至其前一个子滤波器相应的数据寄存器,清零最后一个子滤波器相应的数据寄存器,并输出第一个子滤波器的乘加结果,具体地:

tn=tn+1′+x·vn+1′(0)

tout=t1′+x·v1′(0)

其中,x为待滤波数据,tn为x处理后第n个数据寄存器的值,tn+1′为x处理前第n+1个数据寄存器的值,为x处理后第个(即最后一个)数据寄存器的值,vn+1′(0)为x处理前第n+1个循环移位寄存器的第一个系数,v1′(0)为x处理前第一个循环移位寄存器的第一个系数。

以上述n=60、d=20示例为例,该待滤波数据x处理后,数据寄存器t1中保存的数据为t2′+x·v2′(0),数据寄存器t2中保存的数据为t3′+x·v3′(0),数据寄存器t3中保存的数据为0,输出结果为t1′+x·v1′(0)。

此外,对于某一待滤波信号而言,对该信号进行抽取滤波时,其待滤波数据的个数应为多个,因此,操作s4之后还包括以下操作:

s5,将每一个子滤波器相应的循环移位寄存器中存放的系数循环移动1位,以得到下一个待滤波数据所需的滤波系数。具体地,例如循环移位寄存器中存放的系数向左循环移动1位或向右循环移动1位。

s6,重复执行操作s3-s5,直至无待滤波数据为止,此时所有的数据均已完成滤波。

以图3a中所示波形为例,分别利用传统方法和本公开处理方法对其进行滤波,对比验证说明本公开处理方法的正确性。

图3a中所示波形的信号为x(n)=sin(2πf1nδt)+sin(2πf2nδt),其中,f1为0.7mhz,f2为9mhz,δt为10ns。利用传统方法对该信号进行滤波后的数据如图3b所示,其中,星号标注的点为抽取后保留的点。

本公开处理方法对采样频率为100msps的信号进行fir抽取滤波,滤波器的长度n=60,抽取倍数d=20,滤波器系数为:

其中,0≤n≤n-1,i0(.)为第1类变形零阶贝塞尔函数。利用该fir抽取滤波器进行fir抽取滤波后的数据如图3c所示。

对比图3b和3c,可以看出,本公开中的fir抽取滤波器的数据处理方法的处理结果与传统方法一致,说明本公开中的数据处理方法能够有效地进行抽取滤波。

至此,已对本公开实施例中的fir抽取滤波器的数据处理方法进行完整说明,该数据处理方法对滤波器分解得到子滤波器,并为子滤波器设置相应的循环移位寄存器和数据寄存器,在每个时钟的触发沿对数据寄存器进行更新,并对循环移位寄存器进行循环移位,当已滤波数据为抽取倍数的整数倍时,输出第一个子滤波器相应的数据寄存器中的数值,从而得到抽取滤波后的结果。

以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1