目录
每个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。
操作时序:
原语调用:
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模块有几个关键的控制信号和端口:
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知识库”
您的支持是我持续创作的最大动力!如果本文对您有帮助,请给一个鼓励,谢谢。