直接上干货,不过多解释,具体可以参考官方手册ug570、xapp1239、xapp1267等
本测试基于vivado2023.1。
一、BBRAM秘钥的烧录
第一步、创建基本vivado工程
第二步,创建约束文件,添加如下语句到约束文件中。
#加密部分内容,使用EFUSE 或者BBRAM,切换约束语句
set_property BITSTREAM.ENCRYPTION.ENCRYPT YES [current_design]
#set_property BITSTREAM.ENCRYPTION.ENCRYPTKEYSELECT EFUSE [current_design]
set_property BITSTREAM.ENCRYPTION.ENCRYPTKEYSELECT BBRAM [current_design]
set_property BITSTREAM.ENCRYPTION.KEYLIFE 32 [current_design]
set_property BITSTREAM.ENCRYPTION.KEY0 256'h0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF [current_design]
set_property BITSTREAM.ENCRYPTION.STARTIV0 128'h0123456789ABCDEF0123456789ABCDEF [current_design]
#RSA身份验证相关设置 若使用则取消注释
#set_property BITSTREAM.AUTHENTICATION.AUTHENTICATE YES [current_design]
#set_property BITSTREAM.ENCRYPTION.RSAKEYLIFEFRAMES 8 [current_design]
#set_property BITSTREAM.AUTHENTICATION.RSAPRIVATEKEYFILE {C:\Users\ADMIN\Desktop\RSA\private.pem} [current_design]
第三步,编译工程,会在project_1.runs\impl_1文件路径下,生成.nky的秘钥文件。
第四步,烧录秘钥文件


第五步,烧录bit文件,此时程序可以正常启动。
二、EFUSE秘钥的烧录
整体过程与BBRAM流程相同。此部分本人额外增加了RSA鉴权部分,演示RSA部分的操作。
注意:启用RSA后,无法通过JTAG烧录。
第一步、创建基本vivado工程
第二步,创建约束文件,添加如下语句到约束文件中。
#加密部分内容,使用EFUSE 或者BBRAM,切换约束语句
set_property BITSTREAM.ENCRYPTION.ENCRYPT YES [current_design]
set_property BITSTREAM.ENCRYPTION.ENCRYPTKEYSELECT EFUSE [current_design]
#set_property BITSTREAM.ENCRYPTION.ENCRYPTKEYSELECT BBRAM [current_design]
set_property BITSTREAM.ENCRYPTION.KEYLIFE 32 [current_design]
set_property BITSTREAM.ENCRYPTION.KEY0 256'h0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF [current_design]
set_property BITSTREAM.ENCRYPTION.STARTIV0 128'h0123456789ABCDEF0123456789ABCDEF [current_design]
#RSA身份验证相关设置 若使用则取消注释
set_property BITSTREAM.AUTHENTICATION.AUTHENTICATE YES [current_design]
set_property BITSTREAM.ENCRYPTION.RSAKEYLIFEFRAMES 8 [current_design]
set_property BITSTREAM.AUTHENTICATION.RSAPRIVATEKEYFILE {C:\Users\ADMIN\Desktop\RSA\private.pem} [current_design]
第三步,编译工程,会在project_1.runs\impl_1文件路径下,生成.nky的秘钥文件。
第四步,烧录秘钥文件。

选择对应的key文件,勾选AES和RSA变成使能。

暂时不使用eFUSE中的USER寄存器,无需勾选

忽略这些控制寄存器

第五步,烧录bit文件到FLASH,重新加电,此时程序可以正常启动。
这里需要注意的是,KU035 FPGA在RSA鉴权启用的情况下,不支持SPI FLASH配置,JTAG配置,仅支持BPI和SELECTMAP启动。