本文转载自:https://blog.csdn.net/weixin_45825101/article/details/119057609?spm=1001...
注:本文转自赛灵思中文社区论坛,源文链接在此。本文原作者为XILINX工程师。
以下为个人译文,仅供参考,如有疏漏之处,还请不吝赐教。
eFUSE 具备一次性可编程特性,即只要使用特定密钥将“熔丝 (FUSE)”熔断,就无法再使用任何其他密钥对其进行编程。
在本文中,我们将探讨有关 AES 密钥验证步骤的内容,当您在器件上以物理方式对 eFUSE 密钥进行编程时应遵循这些验证步骤进行操作。
eFUSE 具备一次性可编程特性,即只要使用特定密钥将“熔丝 (FUSE)”熔断,就无法再使用任何其他密钥对其进行编程。
eFUSE 广泛适用于各种量产器件,在本文中我们将为大家演示一个典型情境,即客户希望向第三方供应商提供采用 AES 编程的 FPGA 的情境。
曾经出现过这样的问题,用户以错误方式对错误的 eFUSE 密钥进行编程,导致加密比特流编程失败。在此情境中,我们无法将 eFUSE 复原,因为它已发生熔断。
在下文中,我们将探讨有关 AES 密钥验证步骤的内容,当您在器件上以物理方式对 eFUSE 密钥进行编程时应遵循这些验证步骤进行操作。
1. 使用 EFUSE_TEST_MODE 对 AES 密钥进行测试性编程。
这将把 eFUSE 编程软件命令发送到器件,但并不会实际对任何熔丝进行编程。
2. 要启用 EFUSE_TEST_MODE,请右键单击“硬件管理器 (Hardware Manager)”上的“硬件服务器属性 (Hardware Server Properties)”,然后选中“EFUSE_TEST_MODE”选项,如下图所示:
3. 启用 EFUSE_TEST_MODE 并对 eFUSE 密钥编程后,就会在 Vivado 安装目录中创建一个 .nkz 文件。
请检查该 .nkz 文件,确认其中是否已正确显示 AES 密钥。
4. 如果此操作成功,请取消勾选“EFUSE_TEST_MODE”框,然后以真正物理方式仅将此 AES 密钥编程到器件中。
请勿对任何其他控制寄存器、安全寄存器或 RSA 进行编程。操作完成后将重新写入 .nkz 文件,但其中所含内容应不变。
请验证两个 .nkz 文件的内容是否相同。
5. 如果两个 .nkz 文件内容相同,那么请对加密比特流文件进行编程。
6. 运行以下命令以验证 .nky 和加密比特流:
create_hw_bitstream -hw_device [current_hw_device ] -nky mtl1_c1.nky mtl1_c1.bit
verify_hw_devices -key efuse
注释:特此澄清,在第 3 步中,除非您已在 eFUSE Wizard 中更改 .nkz 文件的文件名,否则,将覆盖同一个输出 .nkz 文件。因此,您应该将第 1 个 .nkz 复制到其他文件或者在向导中更改此 .nkz 文件的文件名以便后续对两个文件进行比较。
EFUSE_TEST_MODE 仅用于验证目的。如果编程测试成功,并且您取消勾选 EFUSE_TEST_MODE 并遵循与测试过程相同的编程步骤进行操作,那么就能将正确的 AES 密钥编程到器件中。
遵循上述步骤进行操作时,请勿对控制寄存器或安全寄存器进行编程。成功完成验证后即可进行各项详细设置。