EDN China > 设计实例 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

两种基于FPGA的软件滤波方法

彭巧君?? 任勇峰?? 王强?? 刘占峰?? 陈倩?? 电子测试技术国家重点实验室?? 科学技术与工程?? 2015年07月21日 ?? 收藏9
基于FPGA的软件滤波算法设计及实现

随着数字电子技术的发展,数字电路已由早期的分立元件逐渐发展成集成电路,对电路设计的要求越来越高。尤其是可编程逻辑器件的出现,使得以硬件为载体、以计算机软件为开发环境的现代数字系统的设计方法日趋成熟。可编程逻辑器件设计灵活、功能强大、可在线修改、效率高等优点深受广大电子设计人员青睐。目前,大多数现场可编程逻辑阵列( FPGA) 芯片是电压敏感型芯片,基于可重构CMOS-SRAM 单元结构,数据具有易失性,工作在低电压状态,易受干扰,尤其在工控、军用场合,外界电磁环境恶劣,电路耦合、空间辐射的杂波脉冲均会对FPGA 工作的稳定性产生影响。

干扰脉冲和毛刺信号是影响FPGA 稳定工作的主要因素,为了保证输入信号每变化一次,电路只做出一次正确的响应,必须对输入信号进行滤波处理。要实现信号滤波可以采用硬件滤波和软件滤波两种方法。与硬件滤波相比,软件滤波不需要硬件电路的支持,从而可以减少元器件的使用,降低成本,更重要的是软件滤波更易于修改,所以常采用软件滤波的方法来实现电路中的信号滤波问题。通过VHDL 语言编程实现信号滤波功能,介绍了延时滤波法和判决滤波法,并通过实验证明了上述两种滤波方法的可靠性。

1 延时滤波

延时滤波法的滤波原理是对输入信号的脉冲宽度进行鉴别,对那些与真实信号的宽度相差很大的干扰信号进行有效的抑制。具体的实现流程为在检测到输入信号的状态发生变化后,延时一段时间T,脉冲宽度小于延时时间T 的输入信号被认为是干扰信号,将其滤除; 脉冲宽度大于延时时间T 的输入信号则被认为是真实信号,将其输出。针对不同脉冲宽度的干扰信号,可以通过设置不同的参数来实现相应的信号延时,从而达到有效滤波的目的。

1. 1 延时时间T 的确定

延时时间T 取决干扰信号的脉冲宽度T’。延时时间T 太短( T < T’) ,滤波不完整,脉冲宽度大于T 的干扰信号仍然会造成电路的误动作; 延时时间T 太长( T>>T’) ,会造成资源的浪费,降低电路的工作效率。

这里以某型号的扭子开关输入信号为例来介绍如何确定延时时间T。由于扭子开关的机械触点存在弹性作用,当拨动开关时,都不可避免地要在触点闭合及断开的瞬间产生一连串的抖动。为了能够更准确地估测拨动开关时产生的干扰脉冲宽度T',可以用示波器对开关信号进行多次测量,经测量发现这种扭子开关信号的抖动时间不会超过1. 5ms。图1 为没有经过滤波处理的开关信号波形。

图1 中,横坐标表示时间,每格代表50 μs,纵坐标表示电压,每格表示1 V。从图中可以明显看出,在开关信号达到稳定状态之前,有一连串的抖动,抖动时间不到1. 5 ms。这里根据实际情况,确定延时时间T = 2 ms。

1. 2 延时滤波程序设计

延时滤波程序采用一个计数器来实现,计数器的模值N 取决于延时时间T 和采样时钟CLK 的周期TCLK。若计数器的初始值为0 时,则N = T /TCLK -1。图2 为编写延时滤波程序的流程图。

图1 未经过滤波处理的开关信号
图1 未经过滤波处理的开关信号

图2 延迟滤波程序流程图
图2 延迟滤波程序流程图

当检测到开关信号的状态发生变化时( 这里以由‘0’变到‘1’为例) ,计数器开始计时,当计数器的计数值计到N 时,如果开关信号仍保持为变化之后的状态‘1’,则输出‘1’,否则,认为这是一个干扰脉冲,将其滤除。

当采样时钟的频率为5 kHz 时,TCLK = 0. 2 ms,要实现2 ms 的延时时间,若计数器初始值为0,那么计数器模值N = 9。具体的 VHDL语言 程序进程如下:

延时滤波程序设计

延时滤波程序设计

【分页导航】


上一页1234下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

FPGA?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈