目录

一、什么是FPGA的Device DNA?

二、为什么需要获取FPGA的Device DNA?

1、验证真伪

2、追踪管理

3、技术支持

4、个性化配置

5、用户逻辑加密

三、如何获取FPGA的Device DNA?

1、通过Hardware Manager获取

2、通过verilog代码获取

四、获取Device DNA的注意事项


每个FPGA芯片都有其独特的身份标识,这就像是设备的“DNA”。

了解如何获取FPGA的Device DNA,可以帮助我们识别芯片、验证真伪、甚至优化设计。

本文将带你深入了解如何获取FPGA的Device DNA。

老规矩:文末有源码下载哦

一、什么是FPGA的Device DNA?

FPGA的Device DNA通常指的是芯片的唯一识别码,也被称为设备序列号(Device Serial Number)或设备ID。

这个序列号是制造商在生产过程中编程到芯片中的,用于标识每一个单独的FPGA芯片。它通常包含了制造商信息、生产批次、型号等关键信息。

Device DNA是非易失的,不可更改,只有只读属性。

二、为什么需要获取FPGA的Device DNA?

1、验证真伪

通过比对Device DNA,可以验证FPGA芯片是否为正品。

2、追踪管理

在批量生产中,Device DNA可以帮助追踪每个芯片的流向,便于质量控制和售后服务。

3、技术支持

在寻求技术支持时,提供Device DNA可以帮助制造商或技术支持团队快速定位问题。

4、个性化配置

某些应用可能需要根据特定芯片的特性进行个性化配置,Device DNA是这一过程的关键。

5、用户逻辑加密

FPGA的Device DNA常用于加密用户逻辑。用户可通过特定接口读取DNA,并经过加密算法处理。处理后的结果与外部Flash中存储的加密字节串进行比较。若匹配,FPGA启动相应逻辑;若不匹配,表明FPGA未获授权,可关闭其逻辑功能。

三、如何获取FPGA的Device DNA?

1、通过Hardware Manager获取

在vivado中,打开Hardware Manager,鼠标点击选中FPGA芯片,可以在Property窗口中,找到FUSE_DNA,这个就是FPGA Device DNA。

2、通过verilog代码获取

DNA_PORTE2是一个Xilinx提供的Primitive,它允许用户在FPGA内部通过硬件逻辑访问Device DNA。这个Primitive主要用于UltraScale系列FPGA,其中Device DNA是96位的。

对于7系列及以前的FPGA,可以使用DNA_PORT Primitive,其Device DNA是57位的。

(1)DNA_PORT Primitive

xilinx 7系列可以通过DNA_PORT Primitive原语获取Device DNA。

如何获取FPGA的device DNA?(含源码)-LMLPHP

 

​操作时序:

如何获取FPGA的device DNA?(含源码)-LMLPHP

 

原语调用:

   DNA_PORT #(
      .SIM_DNA_VALUE(57'h000000000000000)  // Specifies a sample 57-bit DNA value for simulation
   )
   DNA_PORT_inst (
      .DOUT(DOUT),   // 1-bit output: DNA output data.
      .CLK(CLK),     // 1-bit input: Clock input.
      .DIN(DIN),     // 1-bit input: User data input pin.
      .READ(READ),   // 1-bit input: Active high load DNA, active low read input.
      .SHIFT(SHIFT)  // 1-bit input: Active high shift enable input.   );

(2)DNA_PORT 2 Primitive

Ultraslace系列可以通过DNA_PORT 2 Primitive 原语获取Device DNA。

如何获取FPGA的device DNA?(含源码)-LMLPHP

 

操作时序:

如何获取FPGA的device DNA?(含源码)-LMLPHP

 

原语调用:

  DNA_PORTE2 #(
      .SIM_DNA_VALUE(96'h000000000000000000000000)  // Specifies a sample 96-bit DNA value for simulation
   )
   DNA_PORTE2_inst (
      .DOUT(DOUT),   // 1-bit output: DNA output data
      .CLK(CLK),     // 1-bit input: Clock input
      .DIN(DIN),     // 1-bit input: User data input pin
      .READ(READ),   // 1-bit input: Active-High load DNA, active-Low read input
      .SHIFT(SHIFT)  // 1-bit input: Active-High shift enable input   );

(3)控制信号和端口

DNA_PORTE模块有几个关键的控制信号和端口:

CLK:时钟信号,用于驱动移位寄存器。

READ: 当这个信号有效时(通常是高电平),Device DNA信息会被加载到移位寄存器中。

SHIFT: 当这个信号有效且READ无效时,移位寄存器开始移位,Device DNA的位会从`DOUT`端口输出。

DIN: 移位寄存器的输入。

DOUT: 移位寄存器的输出,用于读取Device DNA信息

(4)读取Device DNA的步骤

需要设计一个状态机或逻辑来控制READ和SHIFT信号。

首先,通过设置READ信号为高电平,DNA信息会被加载到内部的移位寄存器中。

然后,通过设置SHIFT信号为高电平且READ信号为低电平,DNA数据会从DOUT端口输出按。

通过重复这个过程,你可以逐位读取整个DNA值。​

四、获取Device DNA的注意事项

在读取Device DNA的过程中,电源的稳定性非常重要,不稳定的电源可能导致读取错误或损坏FPGA。

不同的FPGA制造商可能有不同的读取方法和步骤,务必遵循制造商提供的指南。

源码下载(7系列和UltraScale系列):

https://pan.quark.cn/s/de57a48a1c91


本文将不断定期更新中,码字不易,点⭐️赞,收⭐️藏一下,不走丢哦

本文由FPGA入门到精通原创,有任何问题,都可以在评论区和我交流哦

公众号为“FPGA入门到精通”,关注领FPGA学习资料大礼包分享,github开源代码:“FPGA知识库”

您的支持是我持续创作的最大动力!如果本文对您有帮助,请给一个鼓励,谢谢。

04-20 16:11