关于ALTERA的FPGA的弱上拉问题
笔者在使用的过程中发现FPGA的IO口如果作为输入端口的话,默认是悬浮输入,这样检测到值就可能在1、0之间跳动。例如,笔者做的事4*4键盘的扫描,没有设置若上拉的时候,总会出现错误的按键值。后来笔者猜想可能是悬浮输入引起的,但是硬件电路又不能不允许在改变了,所以只能去需找软件上的解决方法,这时候有人建议笔者去设置弱上拉电阻。最后经过弱上拉设置之后问题解决了。经过查找笔者找到这样的一段话:
Altera与Xilinx内部提供的上下拉一般是弱的,也就是电阻都比较大,这样电流比较小,充电比较慢,导致上下拉的速度比较缓慢。这样做的好处,一是提供了上下拉供开漏电路使用,另一方面因为比较弱,可以由FPGA外面的电路来提供强下拉将其override掉。如果内部比较强,则不方便将其减弱。
笔者遇到两种情况:1)FPGA在上电瞬间内部逻辑还没有配置好之前,IO口是处于弱上拉的,这种弱上拉对我们来说,有可能不是我们想要的,这时候就可以通过加下拉电阻的方法将其拉下来,这个电阻一般在2~10k左右。2)像笔者在刚开始描述的那样,需要一个上拉电阻,我们就需要手动去设置了。这样看来弱上拉就是非常有用的啦。
笔者在此介绍两种设置IO口为弱上拉的方法:
第一种:(Qii版本:11.0)
1、在Qii软件中选择Assignments,然后选择Assignment Editor。
2.接下来进入如下图所示界面,注意在右边选择I/O Features选项。
3、选中后出现下图所示界面,然后双击击To的位置的下面,
4、出现如下图所示按钮,点击按钮
5.按照下图所示顺序添加需要弱上拉的引脚,选择完成后点击“OK”,所需引脚就添加上了,
6.接下来需要对给引脚进行配置了,如下图所示对该引脚进行配置 。
7.配置完成之后重新编译,在工程文件下的*.qsf文件中就能发现这样一句话:
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to fm
这句话表明,fm这个引脚已经设置为弱上拉了。
第二种方法:
我们可以直接在TCL脚本文件中将fm这个管教直接配置成弱上拉。
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to fm
第一种方法如果熟练的话,对于比较多的管教来说操作起来是相当方便的。第二种方法也比较实用。