Xilinx-FPGA的DNA的读取方法

xilinx每一个fpga都有一个独特的id,也就是device dna,这个id相当于我们的身份证,在fpga芯片生产的时候就已经写死在芯片的efuse寄存器中,具有不可修改的属性,因为使用的是熔断技术。值得说明的是,在7系列及以前,这个id都是57bit的,但是在xilinx的ultraslace架构下是96bit。
fpga的dna我们一般的使用场景是用于用户逻辑加密。一般来说,用户在逻辑上可以通过特定的接口把这个device dna读取出来,经过一系列加密算法之后和预先在外部flash存储的一串加密后的字节串做比较,这个flash存储的加密后的字节串也是由该dna经过加密后得到,fpga加载程序后可以先从flash读出该段字节做比较,如果相同,则让fpga启动相应的逻辑,如不同,则代表该fpga没有经过用户授权,用户逻辑上可以关闭fpga的逻辑功能甚至可以通过一些手段让硬件损坏。
如何获取fpga的device dna呢,下面我从jtag和调用源语两个方法说明,并开放核心代码供大家参考。
第一种,通过jtag获取,这种方法在ise的impact或者vivado都可以实现,下面介绍在vivado下如何或者device dna,这个其实很简单,首先板卡通过jtag连接pc,在flow navigator -》 program and debug 界面下,点击对应的fpga的芯片,点击hardware device properties,在search中搜索dna,在register下可以找到device dna,在impact下如何获取dna网上有相应的文章,这里就不做进一步介绍。
第二种,用户逻辑通过调用源语获取,至于源语是什么,这里跟大家分享一个技巧,一般我们使用源语的时候,往往记不住大量的源语定义,那么如何快速搜索到我们想要的源语呢,在vivado中,有一个功能是language templates,在flow navigator可以找到,里面包含了基本所有的xilinx提供的源语和一些语法用法,以dna读取为例,我们搜索dna,就可以找到关于dna的源语,由于博主用的是vu9p的片子,所以用的是dna_porte2这个源语,针对7系列及以前,使用的是dna_port源语,这两个源语都可以在language templates找到。
接下来说一下这个源语和源语相关的使用方法,这个源语本质上就是读取fuse寄存器表里面的fuse_dna寄存器,里面还包含了一个移位寄存器,源语中的接口本质上都是操作移位寄存器,这个移位寄存器的长度和器件类型有关,是56或者96bit。源语里面的read信号,是用于把dna的值装载到移位寄存器里面,din是移位寄存器的输入,dout是移位寄存器的输出,shift是移位寄存器的移位使能,clk是移位寄存器的操作时钟,官方提供的源语模型和时序图如下
对于用户来说,调用这个源语,我们只需要按照操作移位寄存器的流程操作就好了,我们目的是读出源语里面的移位寄存器的值,所以我们设计的思路应该是首先拉高read先让移位寄存器装载dna的值,然后在时钟上升沿使能shift,这样子就能让移位寄存器里面的值移位出来,下面是核心代码:
这是一个axis总线的模块,在dna_read_rdy拉高表示外部准备好接收数据,这时候模块读取dna的值,然后送出去给外部模块,外部模块收到数据和dna_read_vld信号,则拉低dna_read_rdy,完成一次dna数值传输流程。

什么是高速电路?“高频”和“高速”有什么区别
如何使用ESP模块构建自己的WiFi交换机以及如何控制任何设备
人工智能越来越无所不能,人类该如何自处?
介绍两种方法来避免正在执行中的任务中断
数字孪生智慧工厂及3d可视化数据大屏展示系统介绍
Xilinx-FPGA的DNA的读取方法
基于ARM11+Linux的无线视频监控系统
基于树莓派的TensorFlow对象检测系统设计方案
受新冠病毒的影响信息产业出现行业下滑
三大运营商在5G时代深入布局MEC
用Raspberry Pi和SensorMedal制作IoT跳绳设备 第四部分:在设备上安装显示器以增加动力
25亿!优必选科技在国际市场签订史上最大AI教育项目
NB-IoT模组使用中的常见问题及解决办法
OPPO R9s红色为什么还那么火?
DIN11系列交流信号隔离变送器概述及特性
甘肃民航飞机维修公司获得了2018年度国航金牌机务航站奖牌
MAC地址注册的网络安全影响和措施分析
统信软件宣布将以深度社区打造中国桌面操作系统根系统
带通滤波器工作原理_带通滤波器的应用
2020年深圳国际全触与显示展:瓦克推出单组份紫外固化型有机硅光学水胶