阅读:2958回复:7
请教如何消除CPLD输出信号严重的毛刺干扰
我采用的是LATTICE公司的IM4A5-128/64和WINBOND的W78E58单片机设计一个32位频率计。IM4A5用来计数,当计数完成后,反馈一个信号给W78E58的中断口,用来确定开始读取计数结果及显示。现在此反馈信号有着严重的毛刺干扰,由于单片机采用的是下降沿触发,因此程序一上电就被毛刺干扰,进入了中断,程序不能正常运行。已经测过,工作电源正常。当IM4A5的反馈信号输出脚悬空时,问题仍然存在,因此个人认为是CPLD这一块电路的问题。
请教个位大侠,如何消除此干扰,采取软件方面的措施还是硬件方面的措施。 不胜感谢。 |
|
沙发#
发布于:2004-07-08 10:51
不太明白你说的毛刺是什么东西
一般来讲数字器件是不会由于其它设备的干扰产生毛刺的 你凭什么判断是毛刺呢? 你问的比较胡涂,我也胡涂的回答一下,看能不能解决你的问题 使用CPLD生成计数器一般会产生毛刺(格雷码除外),所以你要避免在毛刺产生的地方进行判断操作。具体办法你可以查查网上关于消除毛刺的办法,很多的。 |
|
|
板凳#
发布于:2004-07-08 15:10
不好意思,是我说得不够清楚。其实这程序说起来也很简单。主要是由单片机提供一个CL信号(高电平)给CPLD,控制CPLD开始计数。CPLD接收到CL(高电平)信号后,内部经过一个D触发器,输出一个START(高电平)信号给单片机(中断口),标示计数开始。计数过程中START应保持高电平。经过一定时间后,单片机把CL信号置低电平,CPLD接收到CL(低电平)信号后,经过D触发器,输出START(低电平)信号给单片机,标示计数结束。
现在问题是在START保持高电平的过程中,会出现很多的突然之间的下跳沿,不能保持稳定的高电平。 理论上本应很简单,此程序也在MAXPLUSII中做过波形仿真,START波形正常,但实际工作时却有非常多的下跳沿出现,实在想不通。希望各位前辈高人不吝指教,非常感谢。 |
|
地板#
发布于:2004-07-09 12:39
你的计数器是用CPLD实现的吧,当计数器的数值达到你想要的数值时就将START复位,是这样吧。这在实现的过程中应该用到了一个比较,你应该将这个比较的结果做半个时钟周期的延时。要是还有问题先把你的源程序传上来把
|
|
|
地下室#
发布于:2004-07-09 16:45
原理大致上如你所说。CPLD有两个时钟频率输入,一个50M的标准频率,及一个待测频率。在一定的时间内对两个输入频率进行计数,计数后的结果送单片机进行比较处理。START信号就是CPLD计数结束后给单片机,通知单片机读取计数结果,下跳沿有效。
我已把源程序发邮件给你了,你方便的话可查收一下。由于格式问题,可能不是很方便读。若是不介意,你可把邮箱地址发给我,我再把源程序以附件形式发给你。再次表示感谢。 |
|
5楼#
发布于:2004-07-10 15:29
这种毛刺一般都是竞争冒险产生的,尤其是输出的时候没有经过flip-flop 或者经过ff 但是ff的时钟信号不干净造成的
|
|
6楼#
发布于:2004-07-11 12:33
那由竞争冒险所产生的毛刺,在波形的软件仿真阶段能不能看出来,还是只能在硬件运行的时候才能看出来?我在输出的时候加了一个D触发器,而不是双稳触发器。而且我这D触发器的时钟信号是由印制板上MAX038产生的,会不会有影响?虽然我用示波器观察过,波形还是比较好的。
|
|
7楼#
发布于:2004-07-19 12:05
由竞争冒险所产生的毛刺,在波形的软件仿真阶段能看出来,着取决于你的仿真方式,如果你的仿真方案包含了所有的可能情况,那就可以看到了。
你的问题可能是输入cpld的cl信号有毛刺。即单片机有问题,而且你提到“当IM4A5的反馈信号输出脚悬空时,问题仍然存在”既然cpld的输出已经悬空,单片机还是不能正常工作,你应该查查单片机的问题!!!1 |
|