有没有可能用VHDL代码损坏FPGA?

2020-08-13 09:59:53

\$\Begingroup\$有没有可能用VHDL代码损坏FPGA?什么样的情况会导致这种情况,最糟糕的情况是什么?

\$\endgroup\$。

我能想到的唯一场景是这样一种设计,其中很多FF被计时,以便加热FPGA。\$\endgroup\$-cladio Avi Chami。

好的,它可以集成到一个设计不佳的电路中,如果编程不当,它会在燃烧的东西周围流出一些电流。组别--尤金·施密特(Eugene Sh.)。

最坏的情况可能是FPGA被用于机器学习,并创建了一个破坏世界和宇宙的流氓人工智能。更严重的是,如果您在连接到计算机的FPGA中使用未经检查的代码,它可能会感染该计算机。此外,如果它被用来控制大功率设备,你可以烧毁一座建筑。\$\endgroup\$-用途标签。

除了@匿名者的回答之外,还有一些设计可能会破坏FPGA的结构。

对于初学者来说,如果您构建了一个由大量寄存器(例如,FPGA的70%)组成的非常大的设计,所有寄存器的时钟都接近FPGA的最大频率,那么就有可能对硅进行相当大的加热。如果没有足够的冷却,这可能会导致物理损坏。我们损失了一台价值13K美元的FPGA,因为开发套件的冷却系统很糟糕,导致它过热。

另一种更简单的情况可以是组合循环。例如,如果您实例化三个在环中链接在一起的非门,并禁用或忽略关于这种结构的合成器警告,您可能会形成对FPGA非常不利的东西。在这个例子中,你将制作一个多GHz振荡器,它可以在非常小的区域内产生大量的热量,可能会损坏ALM和周围的逻辑。

\$\endgroup\$。

组合循环有时被认为是真随机数生成器。我没有使用环形振荡器的经验,但我怀疑只有三个门不会有什么害处。然而,将其输出驱动到许多门可能会造成伤害。\$\endgroup\$-ENDGROUP安德烈亚斯。

我现在有2-3块板没有用了,因为上面有斯巴达6号的设计错误。我要试一试:p\$\endgroup\$-AntoineLev。

\$\Begingroup\$还可以加载阻止加载其他位流的位流,或者至少使加载变得相当困难。\$\endgroup\$-vladimir Cravero。

\$\Begingroup\$Code在此上下文中不是正确的词。虽然Verilog或VHDL看起来像程序,但编译器的输出是加载到FPGA芯片中的配置,在FPGA芯片中形成了电子电路。

物理损坏:例如,几个FPGA引脚连接在一起(或连接到另一个设备),并开始同时输出不同的逻辑电压。电流流动--可能是过大的电流--最终会损坏闸门;

逻辑损坏:电路可能对FLASH芯片或配置设备处理不当,损坏其中的数据映像,最终导致整个设备发生故障。

\$\endgroup\$

关于物理损害的话题可能是作品引语的出处。作为一名软件开发人员,我被告知一般规则是,软件不应该对设备造成物理伤害,而固件可能会造成损坏,例如将两个潜水员连接在一起。\$\endgroup\$-Cort Ammon。

\$\egingroup\$@CortAmmon";例如将两名潜水员相互连接-这是什么,空气软管交叉连接开关?\$\endgroup\$-4user253751。

\$\Begingroup\$@immibis你抓到我了!实际的规则是,当你的伙伴呼吸时,不要依赖你伙伴脑袋里的软件/软软件,而是始终牢牢抓住你的调节器。";;-)\$\endgroup\$--Cort Ammon。

\$\Begingroup\$错误地将一块输入引脚配置为输出可能会造成这种情况,如果驱动它们的任何其他因素都足够硬的话。

我不知道在IO存储体由过高电压供电(例如,3.3V电源,1.8V IO标准,或相反的输入电压)的情况下,为LVDS或LVCMOS标准配置一些引脚是否可以做到这一点?

显然,热问题可能是通过做一些愚蠢的事情来实现的,比如实例化很多很多环形振荡器。

\$\endgroup\$。

作为设计约束给出的I/O标准仅用于定时计算。如果I/O组是3.3V组并由3.3V供电,则如果选择1.8V标准,则不会发生任何情况。\$\endgroup\$-s Paebbels

\$\egingroup\$@paebbels,不确定您使用的是哪种工具,但通常在您设置I/O标准时,它会控制该I/O位置的电压。如果将FPGA输入引脚设置为比外部设备驱动该引脚的电压低得多的电压,则该FPGA输入可能会损坏。\$\endgroup\$-s Ciano。

\$\Begingroup\$@Ciano,这是不正确的。引脚电压取决于I/O存储体电压,而不是约束。\$\endgroup\$-s Paebbels。

\$\Begingroup\$FPGA可以在运行时使用新的(部分)位流重新配置。通常,此流是从外部源加载的,但您也可以在FPGA中自己创建它(例如,由嵌入式软核CPU创建)。使用这样的解决方案来动态重新定位子设计,并不能提供供应商工具所做的所有一致性检查。因此,如果您的算法被破坏,您可能会启用FPGA中的假路径晶体管并烧录它们。

\$\endgroup\$。

点击“发布您的答案”,即表示您同意我们的服务条款、隐私政策和Cookie政策。

不是你想要的答案吗?浏览标记的其他问题或提出您自己的问题。