eFUSE 寄存器编程 - 2023.2 简体中文

Vivado Design Suite 用户指南: 编程和调试 (UG908)

Document ID
UG908
Release Date
2023-10-19
Version
2023.2 简体中文

要执行 eFUSE 寄存器编程,请在“Hardware”(硬件)窗口中右键单击 FPGA 并选中Program eFUSE Registers(eFUSE 寄存器编程)。

图 1. 选择“Program eFUSE Registers”(UltraScale 和 UltraScale+ 器件)

这样会显示如下图所示的“eFUSE Registers”Wizard(eFUSE 寄存器向导),此向导将指导您为 eFUSE 寄存器设置各选项。

图 2. “Program eFUSE Registers”Wizard

在“AES Key Setup”(AES 密钥设置)窗格中,指定以下设置:

图 3. eFUSE 加密密钥设置

在“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(控制寄存器设置向导)窗格中,指定以下设置:

图 5. “Control Register Setup”窗格

在“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)