0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于Xilinx FPGA如何获取FPGA的Device DNA

电子设计 来源:XILINX技术社区 作者:Evening 2021-01-02 09:44 次阅读

作者:Evening

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找到。

pIYBAF9uHniAc3TZAAF3q3q28Sw668.png

接下来说一下这个源语和源语相关的使用方法,这个源语本质上就是读取FUSE寄存器表里面的FUSE_DNA寄存器,里面还包含了一个移位寄存器,源语中的接口本质上都是操作移位寄存器,这个移位寄存器的长度和器件类型有关,是56或者96bit。源语里面的READ信号,是用于把DNA的值装载到移位寄存器里面,DIN是移位寄存器的输入,DOUT是移位寄存器的输出,SHIFT是移位寄存器的移位使能,CLK是移位寄存器的操作时钟,官方提供的源语模型和时序图如下,

pIYBAF9uHnmAW8amAAAXTfT6kg4876.png

o4YBAF9uHnqAGW8bAAAv6gIdl5w929.png

对于用户来说,调用这个源语,我们只需要按照操作移位寄存器的流程操作就好了,我们目的是读出源语里面的移位寄存器的值,所以我们设计的思路应该是首先拉高READ先让移位寄存器装载DNA的值,然后在时钟上升沿使能SHIFT,这样子就能让移位寄存器里面的值移位出来,下面是核心代码:
module dna_read(
input sys_clk,

input dna_read_rdy,
output [95:0] dna_read_dat,
output dna_read_vld);

wire dna_dout;
wire dna_read;
wire dna_shift;

DNA_PORTE2 #(
.SIM_DNA_VALUE (96'd0)
)DNA_PORTE2_inst(
.DOUT (dna_dout),
.CLK (sys_clk),
.DIN (dna_dout),
.READ (dna_read),
.SHIFT (dna_shift)
);

reg [95:0] dna_reg = 0;
reg [7:0] dna_cnt = 0;

always @ (posedge sys_clk)
begin
if(dna_read_rdy) begin
dna_cnt end
else begin
dna_cnt end
end

// load dna data from the fuse dna register
assign dna_read = dna_cnt == 8'd63;
// for ultrascale
assign dna_shift = (dna_cnt >= 8'd100) && (dna_cnt

always @ (posedge sys_clk)
begin
dna_reg end

assign dna_read_dat = dna_reg;
assign dna_read_vld = dna_cnt == 8'd196;
endmodule

这是一个axis总线的模块,在dna_read_rdy拉高表示外部准备好接收数据,这时候模块读取DNA的值,然后送出去给外部模块,外部模块收到数据和dna_read_vld信号,则拉低dna_read_rdy,完成一次dna数值传输流程。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593194
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117719
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119373
收藏 人收藏

    评论

    相关推荐

    Xilinx 7系列FPGA功能特性介绍

    Xilinx7系列FPGA由四个FPGA系列组成,可满足一系列系统需求,从低成本、小尺寸、成本敏感的大容量应用到最苛刻的高性能应用的超高端连接带宽、逻辑容量和信号处理能力。
    发表于 04-22 10:49 83次阅读
    <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>功能特性介绍

    Xilinx fpga芯片系列有哪些

    Xilinx FPGA芯片拥有多个系列和型号,以满足不同应用领域的需求。以下是一些主要的Xilinx FPGA芯片系列及其特点。
    的头像 发表于 03-14 16:24 755次阅读

    FPGA设计高级技巧 Xilinx

    FPGA设计高级技巧 Xilinx
    发表于 01-08 22:15

    读取Xilinx FPGA芯片设备标识符的方法-DNA

    每一片芯片内部存有一个设备标识符,xilinx把它叫做DNA,这个DNA是不可更改的,永久存在芯片里面的。
    的头像 发表于 01-03 09:19 1131次阅读
    读取<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>芯片设备标识符的方法-<b class='flag-5'>DNA</b>

    罗彻斯特电子携手AMD/Xilinx可持续供应Xilinx传统FPGA产品

    罗彻斯特电子携手AMD/Xilinx,为Xilinx传统FPGA和相关配置PROM产品提供供货支持。
    的头像 发表于 11-07 09:04 269次阅读

    Xilinx 7系列与Ultrascale系列FPGA的区别

    Xilinx是一家专业的可编程逻辑器件(PLD)厂商,其产品包括FPGA、CPLD、SOC等。XilinxFPGA产品线有多个系列,其中7系列和Ultrascale系列是比较常见的两
    发表于 09-15 14:44 2171次阅读
    <b class='flag-5'>Xilinx</b> 7系列与Ultrascale系列<b class='flag-5'>FPGA</b>的区别

    Xilinx FPGA的GTx的参考时钟

    本文主要介绍Xilinx FPGA的GTx的参考时钟。下面就从参考时钟的模式、参考时钟的选择等方面进行介绍。
    发表于 09-15 09:14 2412次阅读
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的GTx的参考时钟

    面向Xilinx FPGA和SoC的超快设计方法指南

    电子发烧友网站提供《面向Xilinx FPGA和SoC的超快设计方法指南.pdf》资料免费下载
    发表于 09-14 10:02 1次下载
    面向<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>和SoC的超快设计方法指南

    基于Xilinx FPGA的边界扫描应用

    上一篇文章,介绍了基于STM32F103的JTAG边界扫描应用,演示了TopJTAG Probe软件的应用,以及边界扫描的基本功能。本文介绍基于Xilinx FPGA的边界扫描应用,两者几乎是一样。
    的头像 发表于 09-13 12:29 748次阅读
    基于<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的边界扫描应用

    Xilinx 7系列FPGA的时钟结构解析

    通过上一篇文章“时钟管理技术”,我们了解Xilinx 7系列FPGA主要有全局时钟、区域时钟、时钟管理块(CMT)。 通过以上时钟资源的结合,Xilinx 7系列FPGA可实现高性能和
    发表于 08-31 10:44 1269次阅读
    <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>的时钟结构解析

    如何用FPGA XADC来获取几个模拟信号的信息呢?

    Xilinx 7系列FPGA全系内置了一个ADC,称呼为XADC。
    发表于 08-15 09:19 789次阅读
    如何用<b class='flag-5'>FPGA</b> XADC来<b class='flag-5'>获取</b>几个模拟信号的信息呢?

    使用Xilinx FPGA实现OFDM系统

    OFDM中调制使用IFFT,解调使用IFFT,在OFDM实现系统中,FFT和IFFT时必备的关键模块。在使用Xilinx的7系列FPGA(KC705)实现OFDM系统时,有以下几种选择。
    的头像 发表于 07-10 10:50 657次阅读
    使用<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>实现OFDM系统

    获取Xilinx FPGA芯片IDCODE的4种方法

    ,这样就可以通过读取IDCODE,来进行自动区分不同的硬件,分别进行不同的处理方式。本文介绍Xilinx所有FPGA芯片型号IDCODE的获取方法,一共4种方式,总有一种适合你,这些方法同样适用于别的厂家的
    的头像 发表于 07-03 13:01 1759次阅读
    <b class='flag-5'>获取</b><b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>芯片IDCODE的4种方法

    XILINX FPGA IP之Clocking Wizard详解

    锁相环基本上是每一个fpga工程必不可少的模块,之前文档xilinx 7 系列FPGA时钟资源对xilinx fpga的底层时钟资源做过说明
    发表于 06-12 17:42 3256次阅读
    <b class='flag-5'>XILINX</b> <b class='flag-5'>FPGA</b> IP之Clocking Wizard详解

    Xilinx FPGA pcb设计

    Xilinx FPGA pcb设计
    发表于 05-29 09:11 0次下载