考虑到我制作了一个架构来做一些特定的事情,例如用 vhdl 编写的。
我可以永远在 fpga 芯片中“烧掉”它吗?或者我应该怎么做,保护知识产权,知道它可以从串行闪存中读取?
考虑到我制作了一个架构来做一些特定的事情,例如用 vhdl 编写的。
我可以永远在 fpga 芯片中“烧掉”它吗?或者我应该怎么做,保护知识产权,知道它可以从串行闪存中读取?
Xilinx Spartan 3AN FPGA 具有内部闪存,使其具有非易失性。你的问题实际上是多个问题。
1) FPGA 是易失的还是非易失的?大多数都是易失性的,需要在每次上电时从外部非易失性存储设备将配置比特流读入 FPGA。有些是非易失性的。就像我提到的赛灵思 S3AN。
2)如何保护配置比特流?这个问题有多种答案。
您可以加密比特流;这意味着存储在上述非易失性存储设备上的比特流是唯一的密文,只能由具有适当密钥的单个 fpga 解密。这将保护比特流的功能不被逆向工程发现。也就是说,即使加密比特流能够从非易失性存储设备中提取,无论是原位还是更具破坏性的手段,由于提取的文件是加密的,因此无法从提取的文件中获得意义。
您还可以将比特流设置为禁止回读。在调试时用于对 FPGA 进行编程的 JTAG 接口通常可用于从 fpga 中读回配置比特流。设置 NO_READBACK 选项会禁止此操作。
我至少可以为 altera 说话,我认为 Xilinx 也会有类似的东西。他们可以选择加密您放入外部闪存或 EEPROM 的文件。然后,您使用其非易失性或电池支持的密钥存储将解密密钥加载到 altera 部分。
由于您无法读取密钥,因此它可以保护您的 IP。他们在设计上输给了 Asics,因为他们无法保护人们的 IP,所以这是一个很常见的功能。
http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html
完成此操作的唯一方法是购买单独的 Flash 模块(如果 PGA 上还没有)并将代码加载到 ram 中,但是不建议这样做很麻烦,如果您购买 CPLD 之类的东西如果您不打算再次重新编程,请计划稍后重新编程或使用 ASIC。