前言
在FPGA的开发过程中有时候会遇到一种需求:一个bit烧写文件只在本公司生成的硬件板子上生效,在其余的硬件上不生效。
在这种需求下,通常大家就需要绑定FPGA的DNA进行加密处理了(因为每一个FPGA的DNA都是只读不可更改的,具有唯一性,相当于人的身份证号码)。
今天我们就来谈谈FPGA怎么获取DNA号,并且讲讲XILINX的7系列与UltraScale系列的FPGA的DNA有什么区别。
在文末有例程获取方法哟
FPGA-DNA的获取方法
DNA的获取一般有2种方法,具体如下:
JTAG查询法
用JTAG连上FPGA后,如下图点击位置,输入DNA即可查看
原语+代码获取
原语获取
在vivado的原语获取界面输入dna,找到对应使用FPGA型号系列的DNA原语
DNA代码获取时序
然后通过编写代码调用读取DNA原语获取FPGA的DNA值
代码编写的主要时序以UG470(7系列FPGA配置手册)为例:其实一个时钟的shift出一个bit的dout值。
7系列与UltraScale/UltraScale+系列DNA的区别
其实7系列与UltraScale系列的DNA主要有2个区别:
- DNA的位数:7系列是57bit,UltraScale系列是96bit;
- DNA原语DOUT引脚输出的顺序:7系列是大端先出,UltraScale系列是小端先出;
7系列DNA输出顺序与位数
UltraScale系列DNA输出顺序与位数
代码案例
本人编写的DNA获取代码兼容XILINX 7系列与UltraScale系列,以及兼容国产复旦微的FPGA。
代码端口展示
参数说明:
DNA_DATA_WIDTH:57切换到7系列FPGA,96切换到UltraScale/UltraScale+系列
FDW_BIT:使用XILINX的FPGA时设置为0,使用复旦微的FPGA时设置为1;
两个系列原语调用展示
仿真验证结果展示
7系列DNA仿真时序结果
7系列FPGA-DNA的仿真结果与设置的仿真值一样;
UltraScale系列DNA仿真时序结果
UltraScale系列FPGA-DNA的仿真结果与设置的仿真值一样;
上板结果
可以看到KU115系列的FPGA从ILA获取的DNA与通过JTAG在VIVADO上查看的DNA一样。
获取资料
若需获取文中例程:
如果本文对你有所帮助,欢迎点赞、转发、收藏、评论让更多人看到,赞赏支持就更好了。
如果对文章内容有疑问,请务必清楚描述问题,留言评论或私信告知我,我看到会回复。
欢迎FPGA同行者关注微信公众号FPGA加速者,获取更多精彩