FPGA管脚悬空后状态为啥不稳定?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FPGA管脚悬空后状态为啥不稳定?相关的知识,希望对你有一定的参考价值。

xilinx SPARTAN3系列FPGA,某个IO管脚(Input),计划是:将此管脚(Input)与外部模块连接,检测是否有输入脉冲,检测到脉冲上升沿后进行后续操作(action1)。
检测脉冲上升沿方式:
always@........... begin
Input_tmp1 <= Input;
Input_tmp2 <= Input_tmp1;
end
……

always@........... begin
........
if(!Input_tmp2 &&Input_tmp1) begin//检测上升沿
(action1)//
end
.........
end

可是此管脚在不与其他模块连接(悬空)时,不知为何程序依然能检测到脉冲上升沿?程序进行了有脉冲后的操作(action1被执行了)

请问FPGA管脚悬空为何会这样?
难道是FPGA内部的串扰导致此引脚有电平波动么?

谢谢!

有可能是感应电的原因。
如果附近有大电流通过,或者有射频,会感应到管脚。
所以,即使不用,CMOS输入电路是不允许管脚悬空的。追问

同上,如果某些时候不得不悬空呢?请问如何在FPGA里如何设置以解决呢?

追答

可以到地接1k~100k的电阻。

参考技术A 输入pin,外部电路要确定一个态,不能悬空成为不确定态追问

是这样的:这个管脚是否悬空跟外部设备连接有关,正常情况下此管脚与外部设备连接,但某些时候硬件连接必须断开导致悬空,此时就会出现误触发。请问在FPGA里具体可以采取怎样的设置或措施来解决呢?

追答

不能,确定外部电路是以什麼状态触发,比如是高电平,那麼这个引脚就要下拉保持低电平

FPGA研发之道(25)-管脚

管脚是FPGA重要的资源之一,FPGA的管脚分别包括,电源管脚,普通I/O,配置管脚,时钟专用输入管脚等。

本文引用地址:http://www.eepw.com.cn/article/266429.htm

  (1)电源管脚:

  通常来说:内部的电压包括内核电压和I/O电压。

  1.内核电压:即FPGA内部逻辑的供电。通常会较I/O电压较低,随着FPGA的工艺的进度,FPGA的内核电压逐渐下降,这也是降低功耗的大势所趋。

  2.I/O电压 (Bank的参考电压)。每个BANK都会有独立的I/O电压输入。也就是每个BANK的参考电压设定后,本BANK上所有I/O的电平都与参考电平等同。

  是否可以通过约束来设定IO管脚的输出电平那,答案是否定的,如下例所示

  set_instance_assignment -name IO_STANDARD 3.0-V LVCMOS -to pinA

  set_instance_assignment -name IO_STANDARD 3.3-V LVCMOS -to pinB

  不论设定为多大的电平,IO的输出与BANK的参考电压保持一致,也就是说,PINA和PINB的电平与其BANK的电平保持一致,而不是所约束的那样一定会是3V或3.3V的电平。那是否意味着这种约束没有作用?

  如果约束同一BANK上的管脚为不同电平,如PINA和PINB在同一BANK,但是电平不同,则EDA工具会报错。可以起到错误检查的作用。(同一bank上电平要一致,但是类型可以是多种,例如CMOS,TTL等)。

  对于复杂的FPGA内部,一般来说PLL也会都单独的供电,并且其内部包括数字电源和模拟电源。

  SERDES一般也需要独立供电。一般支持高速SERDES的FPGA器件都都有独立的供电管脚,一般也都有独立的时钟管脚(一般为差分时钟)。

  (2) 配置管脚:

  FPGA的配置管脚每个FPGA都需要,为了支持多种配置方式,例如JTAG,从串、从并、主串、主并等。值得注意的是,对于其配置管脚的控制信号来说,是专用管脚,不能用做普通I/O,而其数据信号,可以用作普通I/O。在管脚资源较为紧张时,可以复用配置信号的数据信号作为普通I/O来用。

  (3) 普通I/O:

  FPGA的I/O是FPGA管脚上较为丰富的资源。也是做管脚约束时最常用的资源。对于例化IP来说(例如serdes和DDR2/3等),需要使用EDA工具给出了I/O约束。如果修改则需要预先编译进行评估。一般来说,DDR的接口信号最好能在一个BANK上约束,如果不能则其控制信号要约束到同一BANK上,否则导致EDA工具布局布线报错。

  对于FPGA的普通I/O,可以设定包括管脚电平类型(LVTTL,LVCOMS,SSTL,HSTL等等),还包括端接大小,驱动电流,摆率等参数。

  对于FPGA引脚来说,通过阻抗匹配的设置(altera的OCT,xilinx的DCI的设置)。可以有效的减少板上电阻的数目,降低BOM成本。端接的设置可以阻止阻抗不连续导致信号反射,保证信号完整性。

  对于普通信号来说,一般不需要每个都设置阻抗匹配,,只有板级布线长度的电信号传输时间超过高速信号的时钟周期的0.1倍时,才需要设置端接。简单来说也就是只有高速信号,且信号输出和输入距离较远时,才需要使用端接,一般是FPGA连接外部DDR等高速器件时。对于使用外部校准的RUP和RDN电阻来说,其RUP和RDN电阻是整个电路可靠性的关键点。例如:在以一批FPGA板卡中,测试发现只有某一块接口不通,FPGA工程师调试时发现,只要把接口I/O设定为CMOS电平,而不使用DCI的端接,则所有板卡全部能够通信正常,后来发现该板卡RUP上拉电阻失效,从而导致接口电路没有上拉而接口出错。也就是说,I/O的电平设置,以满足设计需要为主,而不用锦上添花。增加的额外电路就会导致额外的失效点。

  (4)时钟管脚

  FPGA内部的时钟,都需要通过专用时钟管脚连接内部PLL或者DCM等专用时钟处理单元,从而接入内部高速时钟网络。在早期的FPGA中内部时钟资源有限,专用处理单元也有限,需要严格的规划PLL等时钟处理单元和全局时钟资源,随着FPGA技术的发展,这个功能逐渐弱化,但是早期规划也是必须的。

  值得注意的是,对于一些外部同步信号的输入,其时钟没有连接到专用时钟管脚上,只用于采样当前的同步信号,因此不用接入全局时钟网络,设计上也是允许的,需要约束其管脚不使用全局时钟资源。否者,EDA工具会报错,提示其作为时钟输入,而没有接在专用时钟管脚上。

  正如本文开始所说,管脚是FPGA的重要资源,FPGA工程师熟悉管脚特性和电路设计的基础知识,对于FPGA系统设计和板级电路的调试都是有益的。

  PS:问题回复

  QUARTUS能否设定I/O信号的上拉和下拉电阻的大小?

  1)对于设定的输出信号来说,其是有电平格式的如 set_instance_assignment -name IO_STANDARD LVCOMS -to pin 这种情况下,其电平格式就是LVCOMS。没有上拉或者下拉的设置(也就是说coms电平不包括上下拉电阻的设置)。但是可以设置其输出电流,如 set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to pin 板级电路上信号不到位,很多情况下,是驱动能力的问题。 也可以设置其输出端接电阻的大小(不是上下拉)。 set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to pin 以及其他属性等等 (2)对于未约束的信号时可以设定其上下拉状态的。 如: set_global_assignment -name RESERVE_ALL_UNUSED_PINS "As input tri-stated with weak pull-up" 其他几种状态分别是 as inputs that are tristated, as outputs that drive ground, as outputs that drive an unspecified signal, asinput tri-stated with bus-hold

转载自:http://www.eepw.com.cn/article/266429.htm

以上是关于FPGA管脚悬空后状态为啥不稳定?的主要内容,如果未能解决你的问题,请参考以下文章

FPGA 数据传输不稳定 何解?

为啥ubuntu不稳定感觉很卡毛病很多?

FPGA400MHz内部时钟稳定吗?

fpga一根输入线怎么让它数据稳定下来

为啥我wds连接成功后就是上不去网,啥设置都弄过了

为啥安装了Deepin(深度)Linux在硬盘上后,运行很不稳定??极其容易死机?该版本不稳定吗??