Verilog 如何在FPGA中永久存储数据和程序?

Verilog 如何在FPGA中永久存储数据和程序?,verilog,fpga,hdl,eeprom,spartan,Verilog,Fpga,Hdl,Eeprom,Spartan,从我浏览的内容来看,一旦FPGA断电,你必须重新编程。但我正在尝试使用verilog实现一个基于FPGA的安全系统。在这种情况下,我希望系统的密码永久存储,即即使断电,密码也不应被删除。如果程序也可以存储,那也不错。我是FPGA的贝金纳。所以请告诉我怎么做。该设备为XC3S400 Spartan 3系列。通常,每次通电时,FPGA都会从某种闪存中重新加载,加载的比特流是不安全的,即任何人都可以存储它,然后再进行复制,甚至理论上可以对其进行反向工程 然而,一些FPGA可以被保护,例如,通过在其内部

从我浏览的内容来看,一旦FPGA断电,你必须重新编程。但我正在尝试使用verilog实现一个基于FPGA的安全系统。在这种情况下,我希望系统的密码永久存储,即即使断电,密码也不应被删除。如果程序也可以存储,那也不错。我是FPGA的贝金纳。所以请告诉我怎么做。该设备为XC3S400 Spartan 3系列。

通常,每次通电时,FPGA都会从某种闪存中重新加载,加载的比特流是不安全的,即任何人都可以存储它,然后再进行复制,甚至理论上可以对其进行反向工程

然而,一些FPGA可以被保护,例如,通过在其内部具有唯一的加密只写密钥,可以使用该密钥对比特流进行加密。然后,您可以在verilog代码中设置密码,并在输入密码时进行检查


如果您的密钥或密码经常更改,或者在设备的每个副本中都应该不同,则应将其存储在外部闪存/EEPROM存储器中,并使用FPGA内部的永久密钥进行加密。

如果您有基于SRAM的FPGA,如Spartan 3,则每次通电时都必须对其进行编程。原因是存储配置的SRAM不稳定,在电源关闭后会丢失编程配置

斯巴达3AN是为数不多的Xilinx FPGA之一,它提供了一定数量的内部闪存,但我不能给出任何细节,因为我自己从未使用过这个功能

或者,也有纯粹基于闪存的FPGA,它提供非易失性配置存储,也就是说,每次FPGA通电时,您不必读取配置文件。您仍然需要配置它一次,但它会在电源关闭后保持配置。在下一次通电时,它将已配置并准备好运行

这一切都取决于FPGA中是否有非易失性内存。否则,您需要使用外部IC

作为自定义密码的替代解决方案:许多供应商提供加密配置比特流的工具支持。嵌入FPGA中的配置逻辑能够在配置比特流时动态解密比特流。每个人仍然可以从配置PROM读取比特流,但由于比特流是加密的,所以用处不大