首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 两种基于FPGA的软件滤波方法
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
两种基于FPGA的软件滤波方法
发短消息
加为好友
苹果也疯狂
当前离线
UID
852722
帖子
10369
精华
0
积分
5185
阅读权限
90
在线时间
277 小时
注册时间
2011-8-30
最后登录
2016-7-18
论坛元老
UID
852722
1
#
打印
字体大小:
t
T
苹果也疯狂
发表于 2015-10-28 19:17
|
只看该作者
两种基于FPGA的软件滤波方法
计算机软件
,
集成电路
,
电子技术
,
在线
,
开发
基于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未经过滤波处理的开关信号
图2延迟滤波程序流程图
当检测到开关信号的状态发生变化时(这里以由‘0’变到‘1’为例),计数器开始计时,当计数器的计数值计到N时,如果开关信号仍保持为变化之后的状态‘1’,则输出‘1’,否则,认为这是一个干扰脉冲,将其滤除。
当采样时钟的频率为5 kHz时,TCLK = 0. 2 ms,要实现2 ms的延时时间,若计数器初始值为0,那么计数器模值N = 9.具体的VHDL语言程序进程如下:
1. 3延时滤波程序仿真
分别将开关信号din设置成理想信号和抖动信号,利用QuartusⅡ8. 0软件进行仿真,图3和图4分别为理想信号和抖动信号的延时滤波仿真波形图。
图3理想开关信号延时滤波仿真波形
图4抖动开关信号延时滤波仿真波形
图中clk为采样时钟,glrn为复位信号,din为开关输入信号,dout为延时滤波输出信号。从图3可以看出,从开关信号发生变化到输出发生变化的时间延时为2 ms,从图4中可以看出,此延时滤波程序有效消除了扭子开关的抖动干扰,验证了其理论可行性。
1. 4延时滤波程序实际验证
为了验证此延时滤波程序的实际滤波效果,将其下载到Xilinx公司的Spartan3系列FPGA芯片XC3S400中,用示波器多次测量经过滤波后的开关信号,得到图5所示的输出信号波形。图5中,横坐标表示时间,每格代表10μs,纵坐标表示电压,每格表示1 V.从图5可以看出,经过滤波后的开关信号不再有抖动现象,此延时滤波程序的实际可靠性得到验证。
图5延时滤波后的输出信号波形
1. 5延时滤波程序资源占用率
在电子电路的设计中,FPGA的资源占用率是我们应该考虑的一个重要问题。如果FPGA的资源占用率太大,会加重FPGA的负担,影响整个电路的运行速度。表1为延时滤波程序在XC3S400芯片中的资源占用情况。
表1延时滤波程序的资源占用情况
1. 6延时滤波的特点
延时滤波比较适合对脉冲宽度已知的干扰信号进行滤波,这样可以更准确地确定延时时间,既不会因为延时时间太短而导致滤波不理想,又不会因为延时时间过长而导致资源浪费。而且,延时程序不仅可以有效地消除开关类信号的抖动,还可以滤去干扰、噪音等其他尖峰波,抗干扰强,可靠性高。
如果电路中存在多路输入信号时,当检测到任意一路输入信号状态发生变化时即执行延时程序,在执行延时程序的过程中将检测不到其他输入状态的变化,所以能够识别的动作间隔不可能小于延时时间T,特别是当多路输入信号的状态集中在短时间内变化时,电路的性能会严重下降。并且,由于频繁执行延时程序,会影响系统的效率和实时性。
2判决滤波
判决滤波是一种基于概率统计的滤波方法。在采样时钟CLK的控制下,每隔时间t对开关信号进行一次采样,并对时间T0内采集到的n个采样值进行判断( n = T0 /t),如果这n个采样值中高电平‘1’的个数百分比大于X,则输出高电平;相反,如果低电平‘0’的个数百分比大于X,则输出低电平。
采用一个n位寄存器来实现判决滤波,寄存器各个位的值依次为采样得到的n个采样值。寄存器的模型如图6所示。
图6寄存器模型
在图6中,n个格子分别代表寄存器的n个位,寄存器左侧的数据为已经处理过的数据,寄存器内的n个数据为正在处理的数据,寄存器右侧的数据为即将处理的数据。每过一个采样时间间隔t,数据依次向高位滑动一位,最低位赋值为输入信号当前的状态值。
如上述过程,寄存器内的数据在不断地更新,数据每滑动一次,即对n个采样值进行一次判断,从而达到滤波的目的。由于干扰脉冲的随机性,采到高电平和低电平的概率是相等的,所以,作为判断依据的百分比X不能小于50%.在实际应用中,为了使滤波更可靠,X的取值一般都大于50%.
2. 1判决滤波程序设计
本设计采用一个9位寄存器( n = 9),每次判断时只要‘1’的个数大于或等于5,则滤波输出‘1’,否则输出‘0’( X = 5 /9)。图7为判决滤波程序的流程图。
主要的程序进程如下:
3 结论
实验证明延时滤波和判决滤波均能达到很好的滤波效果,在电路的设计过程中,可以根据干扰信号的类型选择合适的滤波方法。在实时性要求不是很高、干扰信号脉冲宽度可估测的电路中,可以采用延时滤波法,既节省资源又能有效滤除干扰信号; 在实时性要求比较高、运行速度比较快、干扰信号脉冲宽度很窄的电路中,可以采用判决滤波法,既能有效滤波又能保证电路的效率。
图7判决滤波程序流程图
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议