一种数字滤波器的检测方法及装置
技术领域
本发明属于数字信号处理领域,尤其涉及一种数字滤波器的检测方法及装置。
背景技术
数字滤波广泛应用于数字信号处理领域中,与其它的算法处理配合共同实现复杂的数字信号处理功能。数字滤波器可以表示为如下形式:
y(n)=b(1)*x(n)+b(2)*x(n-1)+...+b(nb+1)*x(n-nb)-a(2)*y(n-1)-...-a(na+1)*y(n-na)
其中,n-1是数字滤波器的阶数,上式对有限长单位脉冲响应(FiniteImpulse Response,FIR)滤波器和无限长单位脉冲响应(Infinite ImpulseResponse,IIR)滤波器结构均适用。
在上式中,当a(2)~a(na+1)均为零时,y(n)可表示为
y(n)=b(1)*x(n)+b(2)*x(n-1)+...+b(nb+1)*x(n-nb),
此时输出信号y(n)仅与有限的输入信号“x(n)~x(n-nb)”相关,具有该结构的滤波器为FIR滤波器,其中“b(1)~b(nb+1)”为FIR滤波器的系数。
数字滤波器可以在数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或专用集成电路(Application Specific Integrated Circuit,ASIC)等器件中实现,它需要一定的存储空间以存储滤波器系数。如果希望滤波处理过程中滤波器系数可重新配置,通常将滤波器系数存储在随机存取存储器(Random-Access Memory,RAM)中,如果希望滤波器系数固定而不会被意外地改写,通常将滤波器系数固化在只读存储器(Read-Only Memory,ROM)中。存储滤波系数的RAM或ROM通常简称为滤波器的系数RAM或系数ROM。
数字滤波器作为信号处理的基本处理单元,涉及较多的乘加运算单元和系数RAM/ROM硬件资源,因此系统出现故障时,经常需要检测数字滤波器的工作是否正常。数字滤波器工作是否正常通常包括系数RAM/ROM中存储的滤波系数是否被异常改写或破坏以及乘加运算是否正常两个最基本的方面。
为了确认系数RAMM/ROM中存储的滤波系数是否被异常改写或破坏,如图1所示,可以在数字滤波器11中增加一个系数读取控制模块111,收到CPU经中央处理单元(Central Processing Unit,CPU)接口处理模块12下发的查询命令时将系数RAM(或ROM)112中存储的系数读取出来并保存到芯片内的预留存储单元13中,由CPU(上层系统)查询和分析。在这种方案中,由于数字滤波器中存储RAM/ROM的存储单元结构是多样化的,不同的数字滤波设计实现可能有不同的存储结构形式,增加了系数读取控制模块111的设计复杂度,并且不同的数字滤波器可能需要分别设计不同的系数读取控制模块,将耗费大量的芯片资源和人力,增加设计成本。
为了检测数字滤波器的处理是否正常,如图2所示,CPU通过CPU接口处理模块24控制选择器22选择检测数据产生模块21产生的高斯白噪特性的信号和正常输入信号x(n)输入到数字滤波器23,通过对数字滤波器23的滤波输出结果y(n)进行频谱分析考察滤波效果。
在这种方案中,要产生高斯白噪特性的检测信号通常需要耗费较多的DSP或FPGA资源,且进行频谱分析通常要依赖于专用的仪器,检测或定位问题时成本较高。
发明内容
本发明的目的在于提供一种数字滤波器的检测方法,旨在解决现有技术在检测数字滤波器时需要耗费大量的芯片资源,检测或问题定位实现成本高的问题。
本发明的另一目的在于提供一种数字滤波器的检测装置。
本发明是这样实现的,一种数字滤波器的检测方法,所述方法包括下述步骤:
A.在收到检测启动指示时产生一个触发信号;
B.在收到所述触发信号时,根据冲激幅度产生一个单位冲激序列;
C.将所述单位冲激序列输入数字滤波器;
D.在收到所述触发信号时,存储所述单位冲激序列经数字滤波器处理输出的滤波结果;
E.根据所述滤波结果分析数字滤波器的工作是否正常。
一种数字滤波器的检测装置,所述装置包括:
触发信号产生单元,用于在收到检测启动指示时产生一个触发信号;
检测激励数据产生单元,用于在收到所述触发信号时根据冲激幅度产生一个单位冲激序列;
选择器,用于在所述单位冲激序列产生时,选择所述单位冲激序列输入数字滤波器;
存储处理单元,用于在收到所述触发信号时存储所述单位冲激序列经数字滤波器处理输出的滤波结果;以及
检测控制分析单元,用于输出检测控制信号,接收所述存储处理单元上报的滤波结果,并根据所述滤波结果分析数字滤波器的工作是否正常。
本发明通过检测单位冲激序列的滤波结果检测数字滤波器的工作是否正常,实现方案简单,耗费资源少,实现成本低。
附图说明
图1是现有技术一中提供的数字滤波器检测装置的结构图;
图2是现有技术二中提供的数字滤波器检测装置的结构图;
图3是本发明第一实施例中提供的数字滤波器检测方法的实现流程图;
图4是本发明第二实施例中提供的数字滤波器检测方法的实现流程图;
图5是本发明第一实施例中提供的数字滤波器检测装置的结构图;
图6是本发明第二实施例中提供的数字滤波器检测装置的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明基于线性系统的传递函数可通过单位冲激响应得到的原理,通过在数字滤波器输入端增加一个冲激序列,根据保存的数字滤波器的输出结果判断数字滤波器的工作是否正常。
以FIR滤波器为例,对数字滤波器输入单位冲激序列δ(n),单位冲激序列δ(n)可用下式表示:
δ(n)=1,(当n=0时);
δ(n)=0,(当n≠0时)。
它表示了一个仅在n=0时刻有输入(即输入不为零)的单位脉冲序列...00 0 1 0 0 0...。其中“1”是经过归一化处理的,在实际设计中由于精度要求,通常需要用多比特的二进制数来表示,例如可以定义二进制数的小数部分为8位,则二进制的100000000(即十进制的256)表示脉冲幅度为“1”,那么,十进制的192就表示“0.75”的冲激幅度,其冲激序列用十进制表示为...0 0 0192 0 0 0...。
在滤波处理时,单位冲激序列δ(n)与系数“b(1)~b(n-1)”经过卷积运算,可以得到下面一组输出:
y(1)=b(1),y(2)=b(2),...,y(nb+1)=b(nb+1);
可以看到,输出的y(1)~y(nb+1)就是此FIR滤波器的系数。同时也可以判断,如果改变单位冲激序列δ(n)的幅度比例,那么数字滤波器的输出结果也将相应地线性改变。由此可以检测到以下两个方面:
1、如果单位冲激序列的滤波结果能得到正确的滤波器系数,说明滤波器的系数RAM/ROM没有被改写或破坏。
2、如果线性改变单位冲激序列的幅度,得到的滤波器结果也相应线性变化,说明滤波器的基本处理功能正常。
图3示出了本发明第一实施例中提供的基于上述原理实现的滤波器的检测流程,详述如下:
在步骤S301中,在收到CPU的检测启动指示时产生一个触发信号;
在步骤S302中,在收到触发信号时,根据CPU配置的冲激幅度产生一个单位冲激序列δ(n);
在步骤S303中,将单位冲激序列δ(n)输入滤波器,经滤波器处理后输出单位冲激序列δ(n)的滤波结果;
在步骤S304中,在收到触发信号时,存储单位冲激序列δ(n)经滤波器处理输出的滤波器结果,并将滤波器结果上报给CPU,由CPU根据上述原理判断滤波器是否出现故障。
上述过程中,当需要保存的数据量比较大时,为了节省所需预留的存储空间的资源,在本发明第二实施例中,可以通过改变时延配置,采用多次触发收集的方式来实现数据的分次存储,从而节省所需预留的存储空间资源,实现流程如图4所示,详述如下:
在步骤S401中,在收到CPU的检测启动指示时产生一个触发信号;
在步骤S402中,在收到触发信号时,根据CPU配置的冲激幅度产生一个单位冲激序列δ(n);
在步骤S403中,将单位冲激序列δ(n)输入滤波器,经滤波器处理后输出单位冲激序列δ(n)的滤波结果;
在步骤S404中,根据CPU配置的时延和触发信号产生延时后的触发信号作为存储控制信号,具体实现时可以是在收到触发信号时开始计数,当计数值达到CPU配置的时延值时输出存储控制信号;
在步骤S405中,在收到存储控制信号时,存储单位冲激序列δ(n)经滤波器处理输出的滤波器结果,并将滤波器结果上报给CPU,由CPU判断滤波器是否出现故障。
根据上述实现流程,只要在滤波器的输入端增加一个受控的触发装置,用来产生幅度可设置的单位冲激序列δ(n),并在适当的时刻保存滤波器的输出结果就可以判断滤波器是否出现故障。
图5示出了本发明第一实施例中提供的滤波器检测装置的结构,检测控制分析单元37设置于CPU,输出检测控制信号,接收存储处理单元36上报的滤波结果,并根据滤波结果分析数字滤波器的工作是否正常。在需要检测时,检测启动模块371发出检测启动指示,触发信号产生单元31接收到检测启动模块371下发的检测启动指示后产生一个触发信号,控制检测激励数据产生单元33产生检测激励数据。检测激励数据产生单元33在收到触发信号产生单元31产生的触发信号的时刻(即时刻“n”)产生一个单位冲激序列δ(n)作为检测激励数据,单位冲激序列δ(n)的冲激幅度通过幅度配置模块372配置,其余时刻输出恒置为零。选择器34选择单位冲激序列δ(n)输入到数字滤波器35。存储处理单元36在收到触发信号产生单元31产生的触发信号时将数字滤波器35输出的单位冲激序列δ(n)的滤波结果依次存储到预留的存储空间中,其存储的启动时刻受控于触发信号,启动存储操作后将数字滤波器35的输出依次存储,直至存储空间写满后停止,每次触发存储将覆盖上次的存储内容。
在需要保存的数据量比较大时,为了节省所需预留的存储空间的资源,在本发明第二实施例中,可以通过改变时延配置,采用多次触发收集的方式来实现数据的分次存储,从而节省所需预留的存储空间的资源。如图6所示,通过延时触发控制单元38控制何时触发存储数字滤波器35输出的单位冲激序列δ(n)的滤波结果。延时触发控制单元38内部采用了一个可由CPU灵活配置的时延计数器381,当触发信号产生时启动时延计数器381,当时延计数器381的计数值达到延时配置模块374配置的时延值时,存储控制信号发生器382输出存储控制信号,指示存储处理单元36开始存储数字滤波器35的输出结果。
例如被检测FIR滤波器的阶数为100阶,而存储资源有限,只能存储50阶,则可以通过CPU配置的时延值为M时触发一次检测,存储处理单元36读取第1~50个数据,CPU配置的时延值为M+50时再触发一次检测,存储处理单元36读取第51~100个数据,这样可以通过多次触发收集的方式来减少对存储空间的需求。
在检测时,存储处理单元36通过CPU接口处理模块32将数字滤波器35输出的单位冲激序列δ(n)的滤波结果上报至故障分析模块373,如果故障分析模块373判断冲激响应能得到正确的滤波器系数,说明数字滤波器35的系数RAM/ROM没有被改写或破坏。如果故障分析模块373线性改变单位冲激序列的幅度,得到的数字滤波器35的输出也相应线性变化,说明数字滤波器35的基本处理功能正常。
CPU接口处理单元32对检测控制分析单元37与触发信号产生单元31、检测激励数据产生单元33、延时触发控制单元38或者存储处理单元36之间的数据传输进行适配,将检测控制分析单元37产生的检测启动指示发送给触发信号产生单元31,将检测控制分析单元37配置的冲激幅度、时延值分别发送给检测激励数据产生单元33和延时触发控制单元38,并将存储处理单元36存储的滤波结果发送给检测控制分析单元37。
本发明不限于采用FPGA逻辑器件实现,可能的实现器件还可以是任何ASIC或DSP等器件。很明显,本发明也适用于其它可以通过单位冲激响应来判断是否出现故障的其他数字信号处理设备。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。