要执行 eFUSE 寄存器编程,请在“Hardware”(硬件)窗口中右键单击 FPGA 并选中Program eFUSE Registers(eFUSE 寄存器编程)。
这样会显示如下图所示的“eFUSE Registers”Wizard(eFUSE 寄存器向导),此向导将指导您为 eFUSE 寄存器设置各选项。
在“AES Key Setup”(AES 密钥设置)窗格中,指定以下设置:
在“Cryptographic Key Setup”Wizard(加密密钥设置向导)窗格中,请指定如下密钥设置:
- 加密文件密钥 (NKY)
- 指定包含 eFUSE AES 和 RSA 密钥的 .nky 文件。
- AES 密钥(256 位)
- 256 位 AES eFUSE 密钥从指定 .nky 文件读入,用于对加载的加密比特流进行解密。
- RSA 密钥摘要(384 位)
- 384 位 RSA eFUSE 密钥从指定 .nky 文件读入,供 RSA 使用。
-
在“USER Register Setup”Wizard(用户寄存器设置向导)窗格中,指定 32 位用户寄存器或 128 位用户寄存器。
图 4. eFUSE 用户寄存器设置
在“USER Register Setup”窗格中,请指定用户定义的寄存器位数。32 位用户寄存器 (FUSE_USER) 和 128 位用户寄存器 (FUSE_USER128) 由一组用户定义的一次性可编程 eFUSE 位组成。这些寄存器的位属于累积可编程位。这表示如果您在任一 eFUSE 编程会话中仅对 1 个 USER 位进行编程(例如 USER = 0x0000_0001 或位 0),那么在后续 eFUSE 编程会话中,您可对剩余 0 位的任意一位进行编程(例如 USER = 0x0000_0002 或位 1)。
对 FUSE_USER 和 FUSE_USER_128 寄存器完成编程后,可通过多种方式读入这些寄存器:
- 使用 Tcl 命令
report_property [lindex [get_hw_device] 0] REGISTER.EFUSE.FUSE_USER report_property [lindex [get_hw_devices] 0] REGISTER.EFUSE.FUSE_USER_128
- 运行
refresh_hw_device
操作后,通过 Vivado Hardware Device 的“Properties”(属性)窗口。
在“Control Register Setup”Wizard(控制寄存器设置向导)窗格中,指定以下设置:
在“Control Register Setup”(控制寄存器设置)窗格中,指定 eFUSE 控制设置。
- R_DIS_KEY
- 设置此项即可禁用用于验证 FUSE_KEY 加密密钥的密钥和编程操作的 CRC 检查。
- R_DIS_USER
- 设置此项即可禁用 32 位用户位 (FUSE_USER) 的读取和编程操作。
- R_DIS_SEC
- 设置此项即可禁用安全寄存器位 (FUSE_SEC) 的读取和编程操作。
- R_DIS_RSA
- 设置此项即可禁用 RSA 密钥寄存器 (FUSE_RSA) 的读取和编程操作。
- W_DIS_USER
- 设置此项即可禁用 32 位用户位 (FUSE_USER) 的编程操作。
- W_DIS_SEC
- 设置此项即可禁用安全寄存器位 (FUSE_SEC) 的编程操作。
- W_DIS_RSA
- 设置此项即可禁用 RSA 密钥寄存器 (FUSE_RSA) 的编程操作。
- W_DIS_USER_128
- 设置此项即可禁用 128 位用户位 (FUSE_USER128) 的编程操作。
如需了解有关 FUSE_SEC 寄存器的更多详细信息,请参阅 UltraScale 架构配置用户指南(UG570)。