FPGA IO****驱动能力设置对设计的影响
FPGA有各种逻辑电平输出标准信号,包括1.2V1.8V以及3.3V理论上而言可以通过改变IO输出电平的设置改变输出,但实际上并不能因此达到要求,需要改变电路板子上的跳线帽才能修改该电平,此外修改IO的驱动电流或者IO输出电平,能够达到改变驱动波形的输出。
最近调试一个FPGA设计,其实也是老的设计,以前已经调试通了,这次只是有一些小的更新。
但是在调试的过程中发现虽然大的功能上没有什么问题了,但是设计的可靠性大打折扣,经常在负荷比较大的时候就down掉了。苦苦调试未果,因为实在是发现不了有什么问题了。本文来源于www.eenote.com,版权所有,转载请注明。
后来用逻辑分析仪查看IO口上的波形发现,原本应该是干净的数据波形的IO上,出现了很多毛刺。如图1所示。
图1中上面波形是期望的波形,而下面的波形是实际从逻辑分析仪中看到的波形。
由于波形不干净从而导致判别电路产生误判,导致电路失效。
分析了一下,可能是IO的驱动能力不够导致线上的电平不能马上到达期望的波形,从而产生抖动。又仔细看了下以前的设计,发现原来的设计中IO的驱动能力设置为24mA,而新的设计中没有相关设置,采用的是默认的12mA。尝试改了驱动能力,再次Implementate设计、上机试验、OK。看来以后的设计中还是需要注意下IO的驱动能力啊。
后注:后来用示波器看了一下IO上的波形,当驱动能力为12mA时的近端波形如图2所示:
从图2波形可以看到:
在上升沿和下降沿的中间由于信号的反射导致电平在阈值附近震荡,从而出现了前面在逻辑分析仪中看到的波形。
后又看了下将驱动能力设为24mA时的近端波形,如图3所示:
图3中可以看到反射虽然依然存在,但位置有所变动,已经离开了中间的敏感区域,从而可以在逻辑分析仪中得到干净的波形。这也解释了为什么设计会受到IO驱动能力的影响。
想要彻底的消除近端反射,同时保证在远端可以信号的信号质量,目前还没想到什么办法,看来只有修改设计,避免设计在向外Drive总线时,同时直接检测IO上的波形。
关于上述问题的解析:
图2中现象为:轨道塌陷。
原因是:由于低电平到高电平的转换过程,电源需要一定的时钟反应,如果转换速度超过了电源的反应时间,会导致输出引脚处在低电平到高电平转换过程中出现充电不足的现象,即图2中现象——电平由低到高转换过程中包含两次充电过程。
问题分析:出现图2现象的问题归根于电平由低到高转换过程电源能力不足未能及时供给电流,解决问题的方法也应该从电源、电流入手。
解决方法:提高电源及时供给能力可以采用在芯片电源引脚周围加入较大电容储能,如FPGA电源引脚周边加入100u、68u的大电容解决上述问题。当然,可以采用直接提高IO引脚输出电流也是一种方法,可以一定程度上解决上述图2问题。
PS:上述作者认为的信号反射问题,在图中表现并不明显,图2及图3中可以认为是串扰或者其它干扰导致的波动。反射现象是电平转换时波形幅度从大到小逐渐变化。