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
导出文件与执行编程后创建的导出文件完全相
同
,
而无需在器件上执行编程。