eFUSE
寄存器访问和编程
注释
:
在
MPSoC
和
Versal
器件上不支持以下
eFUSE
访问和编程方法。
7
系列、
UltraScale
和
UltraScale+
器件具有一次性可编程位用于执行特定功能
,
称为
eFUSE
位。不同
eFUSE
位类型如 下所述:
•
FUSE_DNA -
存储唯一器件标识位
(
不可编程
)
。
•
FUSE_USER -
存储
32
位用户定义的代码。
•
FUSE_KEY -
存储密钥以供
AES
比特流解密器使用。
•
FUSE_CNTL -
控制密钥使用和对
eFUSE
寄存器的读写访问权。
•
FUSE_SEC -
控制
UltraScale
和
UltraScale+
器件中的特殊器件安全性设置。
重要提示
!
eFUSE
寄存器位编程只是一次性操作。
eFUSE
寄存器位一经编程
(
即
,
从未编程状态
0
转换为 已编程状态 1
),
则无法复位为
0
和
/
或重新编程。在对任意
eFUSE
寄存器进行编程前
,
应谨慎核查设置。
注意
!
如有任何
eFUSE
寄存器位先前已编程
(
即
,
从未编程状态
0
转换为已编程状态
1
),
那么尝试对其再 次进行编程时,
Vivado
硬件管理器会发出严重警告
,
以指出部分位已编程。但即使出现此警告
,
先前操作期 间尚未编程的后续 eFUSE
寄存器位
(
处于未编程状态
0
)
仍将继续进行编程。
重要提示
!
赛灵思建议首先对
FUSE_USER
、
FUSE_KEY
和
FUSE_RSA
寄存器进行编程
,
然后重新运行 “eFUSE
编程
(eFUSE programming)
”
Wizard
,
对
FUSE_SEC
位进行编程以控制
FPGA
安全性设置
,
最后对 FUSE_CNTL 位进行编程以控制对这些
eFUSE
位执行的读写访问。
针对
eFUSE
编程的电缆支持
支持
eFUSE
编程的兼容
JTAG
下载线缆和器件列表如下
:
• 赛灵思
SmartLynq
数据电缆
(HW-SMARTLYNQ-G/DLC20)
• 赛灵思平台电缆
USB II (DLC10)
•
Digilent JTAG-HS1
•
Digilent JTAG-HS2
•
Digilent JTAG-HS3
适用于
7
系列器件的
eFUSE
寄存器访问和编程
FUSE_DNA
:
唯一的器件
DNA
每个
7
系列器件都有唯一的器件
ID
,
称为器件
DNA
,
且赛灵思已将此
DNA
编程到器件中。
7
系列器件具有
64
位 DNA。您可在
Vivado Design Suite Tcl
控制台中运行以下
Tcl
命令以读取这些位
: 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)
”窗格中
,
指定以下设置
:
• “
AES Key file
”
○
输入文件名或者浏览至目标文件以指定
AES
密钥文件
(
.nky
)
。指定有效的
.nky
文件后
,
就会自动填充
AES
密 钥字段。
• “
USER bits [7:0] and USER bits [31:8]
”
○
所提供的
USER eFUSE
位可支持用户通过编程来获取其自己的特殊
32
位模式。下
8
位
FUSE_USER
与
256
位 高级加密标准 (AES)
密钥同时进行编程。上
24
位用户位可与
AES
密钥并行编程
,
或者也可稍后再编程 在“控制寄存器设置 (Control Register Settings)
”窗格中
,
指定以下设置
:
•
CFG_AES_Only
:
设置此项即可强制使用存储的
AES
密钥。
•
AES_Exclusive
:
设置此项即可禁用部分重配置。
•
W_EN_B_Key_User
:
设置此项即可禁用
AES
密钥和用户寄存器的编程操作。
•
R_EN_B_Key
:
设置此项即可禁用
AES
密钥的读取操作。
•
R_EN_B_User
:
设置此项即可禁用用户代码的读取操作。
•
W_EN_B_Cntl
:
设置此项即可禁用此控制寄存器的编程操作。
如需了解有关这些功能的更多信息
,
请参阅《
7
系列
FPGA
配置用户指南》
(
UG470
)
。
请复查“
eFUSE
寄存器编程汇总
(Program eFUSE Registers Summary)
”页面中的
eFUSE
设置。
在此窗格中可显示 “
Program eFUSE Registers
”
Wizard
面板中设置的所有位。在此窗格中
,
您可查看各个位的设置
, 以便复查特定编程设置。请仔细复查此汇总页面,
以确保要编程的每个位都已正确设置。 单击“Finish
”即可显示“
eFUSE
编程确认
(Program eFUSE confirmation)
”对话框
:
单击“
OK
”以对指定的
FUSE
位进行编程。
强制执行
eFUSE
编程
要对位于寄存器中任意位置的任何位
(
无论该位先前是否已编程
)
强制执行置位
,
可将
-force_efuse
选项设置为
program_hw_devices
。使用该选项时
,
将仅执行基本寄存器边界检查。