关于FPGA内部的上下拉电阻


除了输入输出端口,FPGA中还有另一种端口叫做inout端口。如果需要进行全双工通信,是需要两条信道的,也就是说需要使用两个FPGA管脚和外部器件连接。但是,有时候半双工通信就能满足我们的要求,理论上来说只需要一条信道就足够了,而FPGA上实现这一功能的管脚就是inout端口。管脚相连时,input对应output,因此inout只能和inout连接(否则就不是inout了)。本文将概述FPGA的inout端口。

1. 三态门

    三态门,故名思议就是这个期间具有三种状态。对于数字电路来说,三种状态是高电平、低电平和高阻态。Xilinx的《XST User Guide》上给出了三态门的Verilog HDL(以及VHDL)的描述,具体如下:

4. PULLUP和PULLDOWN

    如果两个INOUT都处于高阻态,那么接收到的信号到底是什么状态呢?这实际上等效为两个INPUT端口连接,也就等效为INPUT端口悬空。    

    这应该是取决于外围的驱动,添加的上拉或者下拉电阻,一般而言,FPGA添加的是上拉电阻,也就意味着此时chipscope采集的数据是高电平.

    FPGA管脚内部可以配置弱上拉或下拉电阻来实现Z状态下的控制。分别采用PULL UP和PULL DOWN约束实现,UCF、NCF语法如下

1      NET "pad_net_name" PULLUP;
2 
3     //Configures the I/O to use a Pullup constraint.
4 
5      DEFAULT PULLUP = TRUE;
6 
7     //Configures the Pullup constraint to be used globally.

    这一部分内容有待进一步验证。

所谓上,就是指高电平;所谓下,是指低电平。上拉,就是通过一个电阻将信号接电源,一般用于时钟信
号数据信号等。下拉,就是通过一个电阻将信号接地,一般用于保护信号。
    这是根据电路需要设计的,主要目的是为了防止干扰,增加电路的稳定性。

    假如没有上拉,时钟和数据信号容易出错,毕竟,CPU的功率有限,带很多BUS线的时候,提供高电平
信号有些吃力。而一旦这些信号被负载或者干扰拉下到某个电压下,CPU无**确地接收信息和发出指令,只能不断地复位重启。
    假如没有下拉,保护电路极易受到外界干扰,使CPU误以为被保护对象出问题而采取保护动作,导致误保护。

    上拉下拉,要根据电路要求来设置。