vivado适用于 UltraScale 和 UltraScale+ 器件的 eFUSE 寄存器访问和编程

news/2024/5/20 20:01:03
FUSE_DNA 唯一的器件 DNA
每个 UltraScale 器件都有唯一的器件 ID 称为器件 DNA 且赛灵思已将此 DNA 编程到器件中。用户无法对
FUSE_DNA 进行编程。 UltraScale 器件具有 96 DNA 。您可在 Vivado Design Suite Tcl 控制台中运行以下 Tcl 命令以
读取 FUSE_DNA
get_property [lindex [get_hw_device] 0] REGISTER.EFUSE.FUSE_DNA
您也可以在 Vivado Design Suite 的“硬件器件属性 (Hardware Device Properties) ”窗口中通过查看 eFUSE 寄存器来访
问器件 DNA 如下图所示。
eFUSE 寄存器编程
要执行 eFUSE 寄存器编程 请在“硬件 (Hardware) ”窗口中右键单击 FPGA 器件并选中“ Program eFUSE
Registers ”。
这样会显示如下图所示的“ Program eFUSE Registers Wizard 并指导您为 eFUSE 寄存器设置各选项。
在“ AES 密钥设置 (AES Key Setup) ”窗格中 指定以下设置
在“加密密钥设置 (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 位用户寄存器
在“ 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 )
禁用控制寄存器设置
要禁用控制寄存器编程 请运行以下 Tcl 命令
program_hw_devices -control_efuse {20} [lindex [get_hw_devices] $deviceIdx]
其中 $deviceIdx 设置为 UltraScale UltraScale+ 器件的索引 您可在此类器件中禁用 eFUSE 控制寄存器位编程。
这样即可设置 W_DIS_CNTL 从而禁用后续 eFUSE 控制寄存器位编程。
重要提示 如果 W_DIS_CNTL 位已编程 那么将禁用其它 eFUSE 控制寄存器位的编程操作 从而阻止对器件
的控制寄存器进行进一步编辑。
在“安全寄存器设置 (Security Register Setup) Wizard 窗格中 指定以下设置
在“ Security Register Setup Wizard 窗格中 基于允许在 FPGA 上加载的比特流类型来指定安全控制选项。
FUSE_SEC 设置如下
• “ CFG_AES_Only 设置此项表示仅接受加密比特流。
• “ EFUSE_KEY_Only 设置此项表示仅限 eFUSE 密钥可用于解密。
• “ RSA_AUTH 设置此项表示强制对比特流执行 RSA 身份验证。
• “ SCAN_DISABLE 设置此项表示禁用赛灵思访问内部测试寄存器的权限。
• “ CRYPT_DISBALE 设置此项表示永久禁用解密器。
如需了解有关 FUSE_SEC 寄存器的更多详细信息 请参阅《 UltraScale 架构配置用户指南》 ( UG570 )
请复查“ eFUSE 寄存器编程汇总 (Program eFUSE Registers Summary) ”窗格中的 eFUSE 设置。
在此窗格中可显示 “ Program eFUSE Registers Wizard 面板中设置的所有位。在此窗格中 您可查看各个位的设置
以便复查特定编程设置。请仔细复查此汇总页面 以确保要编程的每个位都已正确设置。
单击“ Finish ”即可显示“ eFUSE 编程确认 (Program eFUSE confirmation) ”对话框
单击“ OK ”以对指定的 FUSE 位进行编程。
禁用 JTAG 接口
要通过 eFUSE 寄存器禁用 JTAG 接口 请运行以下 Tcl 命令
program_hw_devices -force_efuse -security_efuse {08} [lindex
[get_hw_devices] $deviceIdx]
其中 $deviceIdx 设为将禁用其中 JTAG 接口的 UltraScale UltraScale+ 器件的索引。
重要提示 用于为 7 系列器件禁用 JTAG 接口的 Tcl 命令不同于以上用于 UltraScale UltraScale+ 器件的命
令。如果使用 7 系列器件 请参阅赛灵思答复记录 65110 中列出的 XSK_EFUSEPL_DISABLE_JTAG_CHAIN
条目。
注释 此编程步骤应在所有期望的 eFUSE 位全都完成编程后 作为最后一步来执行。
重要提示 如果 JTAG 禁用位已编程 则将禁用 JTAG 接口 导致后续无法再接入器件进行测试和配置。仅当无
需再通过 JTAG 访问器件时 才能对该位进行编程。
强制执行 eFUSE 编程
要对位于寄存器中任意位置的任何位 无论该位先前是否已编程 强制执行置位 可将 -force_efuse 选项设置为
program_hw_devices 。使用该选项时 将仅执行基本寄存器边界检查。
eFUSE NKZ 文件
为了在单一文件内采集所有 eFUSE 编程设置 以便于将 eFUSE 设置导出到其它 eFUSE 编程器实现 以及将这些
eFUSE 设置批量编程到大量器件中 赛灵思定义了称为 NKZ 的文件格式 并以文件扩展名 .nkz 来指定此格式。 NKZ
格式是现有 NKY 格式的超集 NKZ 支持所有 NKY 字段以及任何可编程 eFUSE 寄存器设置。
eFUSE 导出 NKZ 文件
由于建议您将 eFUSE 设置编程为按多轮次运行 因此 eFUSE 设置始终导出至外部可见 NKZ 文件 并在每次 eFUSE
作期间更新此文件。此文件用于累积应用于器件的所有 eFUSE 设置 即使通过多次 eFUSE 操作来应用这些设置也是如
此。 Vivado 会跟踪此文件 确保始终有单一 eFUSE 导出文件 其中包含 NKZ 格式的器件累积 eFUSE 设置。如果未指
定任何选项 那么此文件默认名称为
export_<FUSE_DNA>.nkz
其中 <FUSE_DNA> 是器件的 FUSE_DNA 寄存器值。
此默认文件位于 Vivado ® IDE 的启动目录中。可使用 program_hw_devices Tcl 命令搭配 -efuse_export_file
选项来更改此文件 如以下示例所示
program_hw_devices -user_efuse {1} -efuse_export_file {my_settings.nkz}
随后 Vivado IDE 会使用针对导出的 eFUSE 设置指定的 NKZ 文件来启动 而无需在 Tcl 选项中反复指定此文件。这样
就不会移除先前创建的任何 eFUSE 导出文件 而是在此文件中包含更改 eFUSE 导出文件名之前应用的所有 eFUSE
置。执行完所有 eFUSE 操作后 所有 eFUSE 设置都存储在当前 eFUSE 导出文件中。
此外还有 1 个选项可用于单独导出 eFUSE 设置 而无需实际完成器件编程操作。该选项可用于创建包含所有必需
eFUSE 设置的单一 NKZ 文件 而不会影响器件。此外 只需通过直接移除 eFUSE 导出文件并从头开始操作即可轻松
解决在此模式下发生的任意 eFUSE 编程错误。可通过以下 Tcl 命令来使用此仅限导出模式
program_hw_devices -user_efuse {1} -only_export_efuse
该选项仅适用于单一命令 因此必须在每项 eFUSE 操作中使用该选项 以避免对器件进行编程。由于 eFUSE 设置始终
导出至 NKZ 文件 与是否执行编程无关 因此赛灵思强烈建议不要将编程流程与仅限导出流程混用。否则 生成的
eFUSE 导出文件可能同时包含实际已编程到器件中的 eFUSE 设置和仅导出到 NKZ 文件的设置 导致器件中 eFUSE
存器状态不明确。通过使用此仅限导出模式 所创建 NKZ 格式的 eFUSE 导出文件与执行编程后创建的导出文件完全相
而无需在器件上执行编程。

https://www.xjx100.cn/news/3366516.html

相关文章

深入解析:LLM在软件代码安全领域的实践应用

一、软件安全静态检测技术 随着数字化时代的到来&#xff0c;软件将成为构建业务数字化的基础设施&#xff0c;软件的安全将成为构筑数字世界的基础。现实中正是由于软件自身存在安全漏洞&#xff0c;才给不法分子可乘之机利用漏洞实施网络犯罪行为。 静态分析技术是指在不运行…

[Python学习篇] Python创建项目

新建项目 打开开发工具 PyCharm 选择 New Project 目录结构如下 运行 hello world 选中项目&#xff0c;右键 New -> Python File 进行创建文件 运行项目

使用WebRTC实现简单直播

WebRTC 是一个强大的实时通信技术&#xff0c;它允许用户直接在网页浏览器之间进行音视频通话和数据共享&#xff0c;无需任何外部插件。结合 WebSocket&#xff0c;我们可以构建一个简单的直播系统&#xff0c;让用户能够发布自己的实时视频流&#xff0c;同时允许其他用户观看…

2024系统架构师---解释器架构风格的概念与应用

解释器架构风格是一种软件架构模式&#xff0c;用于构建那些能够读取、解析并执行用户定义的命令或程序代码的系统。这种架构风格的关键在于提供一个运行时环境&#xff0c;它能够理解和执行预定义或用户定义的语言或指令集。通过这种方式&#xff0c;解释器模式能够为特定领域…

关键字:static

回顾类中的实例变量&#xff08;即非static的成员变量&#xff09; class Circle{ private double radius; public Circle(double radius){ this.radiusradius; } public double findArea(){ return Math.PI*radius*radius; } } 创建两个C…

C#-特性Attribute的定义、使用及常用特性(不定时更新)

目录 一、 特性的定义及使用 1.自定义特性 2.使用特性 3.查找特性名 4.获取相应对象的特性名 二、常用部分特性 一、 特性的定义及使用 1.自定义特性 全继承自Attribute基类(使用前要给自定义特性赋予相关特性) [AttributeUsage(AtrributeTargets.Class|AttributeTar…

golang grpc和protobuf的版本降级问题(version4 -> version3)

最后更新于2024年3月28日 10:57:52 简中没查到类似的文章。一点小事闹麻了&#xff0c;搞了一天&#xff0c;特意发出来造福大家。 所谓的版本就是下面这个东西proto.ProtoPackageIsVersion4或者proto.ProtoPackageIsVersion3&#xff1a; 目的 为了适配旧代码&#xff0c…

有关数据开发项目中使用HIVE由于无法update和delete的场景下,如何解决数据增量的思路

解决数据增量问题的思路在Hive中 在数据开发项目中&#xff0c;使用Hive进行数据处理时&#xff0c;由于Hive不支持update和delete语句&#xff0c;处理数据增量可能会变得有些棘手。然而&#xff0c;有几种策略和技术可以帮助我们解决这个问题&#xff0c;并确保数据增量的高…