在采集一组并行接口信号时,发现接收到的数据非常不稳定。用示波器测量几个用于同步的控制信号,发现时不时的有毛刺产生。因为这些数据最终都是要显示在液晶屏上的,当示波器同时测量两个同步信号时,液晶屏的显示错位现象得到明显好转。示波器探头测量信号时相当于并联上一个pF级的电容,也能够一定程度上起到滤波的效果,因此可以断定同步信号的毛刺影响了数据的采集。其中一个同步信号如图1,两个有效高脉冲之间有很多毛刺,放大毛刺后如图2所示,大约维持10ns的高电平。
图1图2如何滤除这些毛刺呢?办法有两个,其一就是用纯粹硬件的办法,在信号进入FPGA之前进行滤波处理,串个电阻并个电容都可以,特权同学并了一个20pF电容后就能够把这些毛刺彻底滤干净,如图3所示。
图3
而还有一种“软”硬件滤波的方法。降低数据采集频率以及多次采集后逻辑处理都是一种思路。这里特权同学给出一种多次采集处理的滤波方法和大家分享。inputain;//输入信号reg[3:0]ainr;//输入信号缓存//输入信号打4拍always
(posedgeclkornegedgerst_n)if(!rst_n)ainr=4d0;elseainr={ainr[2:0],ain};//输入信号上升沿检测,高电平有效wirepos_ain=~ainr[3]~ainr[2]ainr[1]ainr[0];//通常只要两个信号就行,即wirepos_ain=~ainr[2]ainr[1];。//这里用了4个信号就是多次采样滤波的效果//输入信号下降沿检测,高电平有效wireneg_ain=ainr[3]ainr[2]~ainr[1]~ainr[0];//通常只要两个信号就行,即wireneg_ain=ainr[2]~ainr[1];。//这里用了4个信号就是多次采样滤波的效果//若该输入信号主要