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

时间:2016-03-19 10:05:03

标签: verilog fpga hdl eeprom spartan

从我的冲浪中,一旦电源在FPGA中断电,你就可以再次编程了。但我尝试使用verilog实现基于FPGA的安全系统。在那,我想要永久存储系统的密码,即使电源关闭,密码也不应该被删除。如果程序也可以存储,它也会很好。我是FPGA中的一名博主。所以请告诉我如何做到这一点。该设备是XC3S400 Spartan 3系列。

2 个答案:

答案 0 :(得分:4)

如果您有基于SRAM的FPGA,例如Spartan 3,那么每次上电时都必须对其进行编程。原因是存储配置的SRAM是易失性的,并且在电源关闭后会丢失编程配置。

Spartan 3 AN是少数能够提供一定内部闪存的Xilinx FPGA之一,但由于我自己从未使用过此功能,因此我无法提供任何细节。

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

这一切都取决于你的FPGA内部是否有非易失性存储器。否则你需要使用外部IC。

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

答案 1 :(得分:1)

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

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

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