一、什么是FPGA的Device DNA?
FPGA的Device DNA通常指的是芯片的唯一识别码,也被称为设备序列号(Device Serial Number)或设备ID。
这个序列号是制造商在生产过程中编程到芯片中的,用于标识每一个单独的FPGA芯片。它通常包含了制造商信息、生产批次、型号等关键信息。
二、为什么需要获取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。
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。
操作时序:
原语调用:
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模块有几个关键的控制信号和端口:
(4)读取Device DNA的步骤
四、获取Device DNA的注意事项
在读取Device DNA的过程中,电源的稳定性非常重要,不稳定的电源可能导致读取错误或损坏FPGA。
不同的FPGA制造商可能有不同的读取方法和步骤,务必遵循制造商提供的指南。
device_dna_read_ultrascale.v 源码
device_dna_read_7series.v 源码