在PLC和伺服系统中,经常需要对脉冲进行计数以控制电机运行,对于干净的脉冲信号,使用FPGA采集边沿,非常可靠且易于实现,只需要对需采集的信号延迟一拍,再把延迟的信号与原信号做下处理就能得到上升沿或下降沿,下降沿通过取反的原信号与延迟信号相与获得,上升沿通过原信号与取反的延迟信号获得;

  而在实际应用中,PLC或伺服系统的应用环境通常都是非常复杂的,各种电磁干扰,不可能有干净的脉冲信号,又要保证脉冲个数准确,就必须对信号进行滤波,这里主要介绍三种滤波方法,暂且叫脉宽滤波,计数滤波及延时滤波。

1、脉宽滤波

         对需要采集的信号使用系统时钟打一拍,一般系统时钟频率尽量高,   然后和输入的信号做异或,当异或值为高电平时,置计计数器值为零,否则计数器自加,计数器值记到一定值,视为信号稳定,把当前值作为输出值,计数值没达到定值时,输出维持之前的输出值;

2、计数滤波

         已知脉冲频率范围,在一定计数范围内(计数值最好为奇数值),对需要采集的信号分别统计高电平和低电平的个数,当高电平的个数大于低电平的个数,输出高电平,反之输出低电平,此方法对于高斯噪声污染比较好使,假设干扰噪声总体均值趋向于零,对于脉冲频率越低的信号,统计效果会越好;

3、延时滤波

         对输入脉冲信号进行打拍,一般至少打两拍,使用几拍后的信号作为最终输出,这种方法能有效滤除系统频率以下的噪声信号;