当FPGA上电且未配置时会发生什么?


10

我试图对如果长时间不编程对FPGA会发生的情况有一个大致的了解。

假设您有一个FPGA,并且长时间未编程(在加电后数分钟至数小时),即FPGA上没有比特流,这对器件不利吗?是否建议始终在加电的FPGA上保留一些比特流?对此有什么普遍看法?

在不同的设备或制造商(Xilinx与Altera与其他产品)上,结果是否有所不同?


附加信息:

我有一个使用Xilinx Virtex-6 FPGA的定制SoC板。我也有一个Xilinx ML605,仅供参考。

自定义板:我打开板电源。我注意到使用XMD(Xilinx微处理器调试器)对其进行编程的时间很短。如果我失去20-30秒的窗口,则必须先关闭电源然后再打开板子再尝试。ML605不会发生这种情况。

当我尝试通过XMD对定制板进行编程时,我得到类似以下内容的信息:

Error: Device Reset by JPROGRAM command, failed. INIT_COMPLETE did not go high.

让我知道你的想法。


1
您在问题和编辑中都强调“长时间”。是几秒钟还是几小时真的有关系吗?我不认为它..
m.Alin

我在自定义FPGA板上看到一种现象,该窗口上显示20-30秒的编程时间。如果未在此窗口中编程,则无法成功编程。我的问题的中心主题不是持续时间,而是对现象的理解。
boffin 2012年

您完全可以连接到设备吗?还是在尝试编程时失败?程序员给的错误是什么?
Embedded.kyle

1
您是直接通过JTAG对FPGA进行编程,还是先加载Flash芯片,然后再通过它进行FPGA配置?
ajs410 2012年

@fpga_boffin,可以将这些详细信息添加到您的问题中吗?
乔恩·L

Answers:


7

这是个有趣的问题。从个人经验来看,当组装板上有新电路板时,我在未编程状态下为FPGA通电了数小时,同时检查了其余电路。我没有注意到这样做的任何不利影响。但老实说,我从未想过。

我环顾四周,试图找到FPGA制造商的推荐,但找不到。我发现的关于该状态的唯一声明来自莱迪思白皮书,它涉及FPGA本身的设计,而不是如何使用它:

预编程的静态静态设备功耗是指在对器件进行编程之前,FPGA消耗的功耗。对于静态设备功耗,FPGA处于非编程状态,但已经上电。重要的是,该设备在这段时间内不要消耗大量功率,因为​​从概念上讲,FPGA器件会消耗过多的功率并可能关闭电源,从而阻止电路板成功初始化自身和系统。
因此,FPGA供应商必须精心设计具有低静态性能的晶体管3为低功耗而设计《莱迪思半导体白皮书》的功率足迹,而又不损害需要更高性能的区域(例如I / O和SERDES)

Xilinx同样提到静态电流是什么,以便您可以相应地设计电源。但没有提及将设备保持在这种状态会对设备产生什么影响:

静态或静态功率主要由晶体管泄漏电流决定。当数据手册中列出了该电流时,它会列为ICCINTQ,并且是通过为FPGA内核供电的VCCINT电源汲取的电流。

我非常想知道是否有人将设备置于静止状态而遭受损坏。但是我认为只要电源与设备正确匹配,就不会有问题。


6

我正在参考Spartan 3数据表,因为这是我最熟悉的FPGA。

如果您查看第2章(功能说明),则“配置”部分有几个流程图。图27(第50页)显示了从Flash加载的流程图。图28显示了JTAG流程图。

这是一个简短的摘要。

1)等待Vccint,Vccaux和Vcco达到所需水平。

2)清除配置闩锁

3)等待INIT_B变高。INIT_B是漏极开路输出,外部主机可以保持低电平以延迟配置。

4)采样模式引脚。这决定了您是否要通过JTAG或Flash进行加载,以及Flash是否以FPGA或Flash为主机。

5)加载配置数据帧。

6)验证数据帧的CRC正确。如果不正确,FPGA会将INIT_B驱动为低电平以指示CRC错误,并将中止启动。

第5步可能是您真正的问题所在-如果没有要加载的内容会发生什么?好了,你不应该得到第5步,如果你正在做正确的事情。闪存芯片将INIT_B保持为低电平,直到准备好将数据提供给FPGA。如果您使用的是JTAG,那么我不确定您的JTAG编程器是否会将INIT_B保持为低电平,但是当它对FPGA进行编程时,几乎可以肯定会断言PROG_B(通过将其驱动为低电平),这将导致FPGA返回进行第2步。

如果您是我,我将在加电期间确定INIT_B信号的范围,以查看发生了什么情况。如果它开始时为低电平,先变为高电平,然后再次变为低电平,则FPGA终止启动序列,您可能需要断言PROG_B才能复位FPGA。


您的答案没有说明步骤5之前FPGA的内部状态,这是OP想要知道的。
stevenvh 2012年

步骤2.清除配置闩锁。步骤3,等待INIT_B。我还将讨论FPGA每当发现没有要加载的配置数据(INIT_B变低以表示CRC错误)时可能做出的决策。
ajs410 2012年

1
抱歉,我参考的数据表大约在2005年,并在2009年进行了更新。但是,如果您实际上已阅读完我的评论,那么您将能够找到它。配置标题下的第2章,功能说明。链接已更新,以指向最新的数据表以及新的页码。
ajs410 2012年

0

默认配置被设计为尽可能被动,以使该设备通用。

对于Altera Cyclone系列(我经验最丰富),这意味着

  • I / O引脚弱上拉至VCCIO(以使具有低电平有效芯片使能线的IC脱离总线),
  • CONF_DONE输出被拉低(您可以将其连接到其他IC的复位引脚,以使其保持复位状态,直到加载配置,在重新配置时将其恢复到已知状态),以及
  • 时钟输入不会转发到时钟网络。

其他FPGA类型也应类似地处于静态状态,并提供非反相和反相输出以指示电路板其余部分的配置状态。

将器件保持在这种状态是无害的,因为内核与外界完全隔离,并且只有上拉电阻上的电流很小。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.