【博文精选】关于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,这样子就能让移位寄存器里面的值移位出来,下面是核心代码:

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 <= dna_cnt + 1;        end        else begin            dna_cnt <= 0;        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 <= 195);    always @ (posedge sys_clk)    begin        dna_reg <= {dna_dout,dna_reg[95:1]};    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数值传输流程。

 培训信息 

也可以直接点击网址访问

http://gk.chinaaet.com

 

(0)

相关推荐

  • 基于FPGA的AD采集

    LVDS(Low-Voltage Differential Signaling)低电压差分信号,是一种低功耗.低误码率.低串扰和低辐射的差分信号技术. KSPS(Kilo Samples per Se ...

  • XDC约束技巧——时钟篇

    本文摘自<Vivado使用误区与进阶>,作者为Xilinx工具与方法学应用专家Ally Zhou. Xilinx©的新一代设计套件Vivado®中引入了全新的约束文件XDC,在很多规则和技 ...

  • 二进制转BCD码需要几步?

    Hi,大家好!我是至芯科技的李老师. 今天讲课的题目比较有意思,它是一个小问题:把二进制变成BCD码需要几步? 请大家思考一下.有同学可能回答需要三步,为什么啊? 因为啊,把大象放进冰箱里需要三步,第 ...

  • 史上最全的LED点灯程序,你都掌握了吗?

    干货福利,第一时间送达! 摘要:你点亮过多少板子的LED灯呢?有很多小伙伴留言说讲一下STM32.FPGA.Liunx他们之间有什么不同.不同点很多,口说无凭,今天就来点亮一下STM32.FPGA和L ...

  • 二进制转BCD码

    应用: 用fpga实现对数码管显示,以前通常的方法是进行整除和取余进行运算,但是fpga并不擅长乘法除法运算,所以可以用BCD码来转换. BCD码:通俗的可以理解为用四位二进制数表示一位十进制数字.例 ...

  • 【博文精选】基于FPGA的图像FFT滤波处理

    【博文精选】基于FPGA的图像FFT滤波处理

  • 【博文精选】Altera FPGA配置方式之AS/PS/JTAG配置方式

    AS配置方式由FPGA器件引导配置操作过程,它控制着外部存储器及其初始化过程,EPCS系列配置芯片如EPCS1.EPCS4配置器件专供AS模式.使用Altera串行配置器件来完成,FPGA器件处于主动 ...

  • 【博文精选】PWM蜂鸣器驱动之FPGA在线下载配置

    图7.18 Programmer按钮 进入下载页面如图7.19所示.确认"Mode"选项为"JTAG",确认File列下的下载文件名称为"output ...

  • Xilinx FPGA 从spi flash启动配置数据时的地址问题

    FPGA上电(Master) fpga 上电时,默认是从 flash 的 0x00 地址开始读数据.如 UG470 文档 page144 描述 fpga 会从 0 开始读,地址不断自增,直到读取到有效 ...

  • 【每周一问】如何控制加载FPGA程序时,Xilinx FPGA的IO管脚输出高低电平

    可以利用约束文件进行约束吗? 在程序加载过程中,约束文件不会起作用,所以设置约束没有用. 先看下Xilinx FPGA的IO结构(参考XIlinx官方文档) 在FPGA IOB内部,Pad输出之前,内 ...

  • 谈谈Xilinx FPGA设计的实现过程

    绪论 FPGA编译流程是指将一个FPGA设计从普通RTL描述转换为比特流所需要的一系列步骤.编译流程的顺序会有所不同,这取决于所使用的工具.然而,任何Xilinx FPGA的编译都将包含8个基本步骤: ...

  • Xilinx FPGA MIPI 接口简单说明

    讲一讲Xilinx家的MIPI方案.这里以普通7系列作为讨论的对象, X家高端的KU+/MPSOC+有已经可以直接支持MIPI接口的IO了. 由于MIPI信号的比较特别,在设计之初应该充分考虑了低功耗 ...

  • 颇可玩主博文精选 | 超全星空摄影拍摄技巧

    人类从古以来,便有"星空情结".无论是<小王子>里温暖的星空,还是梵高笔下的<星月夜>,都让人无限向往.璀璨的星空,一直也是风光摄影师最喜欢的题材之一. 其 ...

  • 一天一个设计实例-Xilinx FPGA命名规则

    Xilinx的ug112第一章中介绍了Xilinx公司的FPGA命名规则.一般而言,大的FPGA的上表面是这个样子的: 图1‑29 Xilinx FPGA器件表面 譬如,对于编号为XC4VLX60-1 ...