关于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误以为被保护对象出问题而采取保护动作,导致误保护。
上拉下拉,要根据电路要求来设置。