热度 22
2012-5-24 10:37
4879 次阅读|
2 个评论
Altera与Xilinx内部提供的上下拉一般是弱的,也就是电阻都比较大,这样电流比较小,充电比较慢,导致上下拉的速度比较缓慢。这样做的好处,一是提供了上下拉供开漏电路使用,另一方面因为比较弱,可以由FPGA外面的电路来提供强下拉将其override掉。如果内部比较强,则不方便将其减弱。 下面是一个人做的实验: 今天做的实验就是发现一个开漏设计的上拉特别慢,慢得功能都出错了。所以查看了数据手册,发现FPGA内部都是弱拉的,所以在外部加了一个小电阻,再查看结果就很理想了。 我再做xing的控制时,高压开信号的也会出现一段极短的由高到低的跳变就是因为这里的弱上拉! 转自:http://bbs.eeworld.com.cn/thread-239124-1-1.html 另一篇:都是弱上拉惹的祸 开发的一款液晶驱动器,接收 MCU 过来的指令和数据进行图像显示。使用了一片可编程(带使能和 PWM 调节控制)的背光芯片。在 CPLD 设计中,上电复位状态将背光使能拉低(关闭),直到 MCU 端发送开显示指令后才会将背光使能拉高(开启)。 遇到的问题是这样,一上电原本背光是关闭的,直到 MCU 发出指令后才会开启,但是一上电(按下开关),背光闪烁了一下。效果就像闪光灯一样,也就是说,上电瞬间,背光开启又关闭,然后再开启。试着改变上电延时启动背光时间以及不同的电路板,发现都会出现类似的问题,排除代码设计问题和电路板本身的问题。 开始的时候,没有动用示波器,只是以为 CPLD 在上电后复位结束前的这段时间内控制背光使能信号的引脚出于三态,使能引脚对于这个三态(类似悬空)也有可能被开启。因此,猜想在背光芯片的输入端所使用的 10uF 电容是否太小,如果加大这个电容应该就可以大大延缓背光芯片的输入电压的时间,从而即便在复位结束后一段时间内,使能管脚仍然无法正常使能背光。这个想法确是也没有什么问题,于是并了一个 10uF ,效果不是那么明显,再并了一个 100uF 大大家伙,问题解决了。不过充电长放电也长,关闭后短时间内若再开启,现象仍然复现,问题搁浅,加大电容不是办法。 询问了背光芯片的原厂商,提出了 CPLD 在上电初始是高电平的解释。拿来示波器一看,确是在 CPLD 的复位信号刚刚上升的时候( 0.5V 以下),连接到背光使能的 IO 脚出现了一个短暂的高脉冲,这个高脉冲维持了大约 250us ,感觉很蹊跷,为什么复位期间 IO 脚出现如此的高脉冲呢?于是再找了另一个 IO 脚对照,一摸一样的波形。然后找了同一个 BANK 的 VCCIO 同时捕获, VCCIO 上升后不久就看到那个 IO 脚上升,上升的波形也几乎一致。挺纳闷的,为什么 CPLD 在上电初始复位之时 IO 出现一个短暂的高脉冲呢?是电路的干扰吗?不像,于是找来 Altera 的 FAE ,一句话解决问题: Altera CPLD 的 IO 在上电后复位前处于弱上拉状态。也难怪出现这个高电平,而且对背光产生了作用。弱上拉已成事实,那解决的办法有一个,加个下拉,电阻要远小于上拉。而看看电路,原本就有一个推荐的 100K 下拉电阻在呢?思考了一下,为什么不起作用呢?而且采到的高电平还是直逼 3.3V 呢。是不是那个弱上拉比 100K 小得多呢?不知道,但是换了 10K 的下拉后,问题解决了,无数次开关看不到闪屏现象了。再次采样,那个 IO 的输出不到 0.33V ,这么看若上拉该有 100K 以上吧?而和下拉 100K 时的压值算算还挺让人摸不着头脑的。但,这个问题也许是和负载有关吧。不过,让特权同学记住了一点, CPLD 上电后复位前的 IO 处于弱上拉。 转自:http://www.eefocus.com/ilove314/blog/11-09/231595_eb9f2.html