当前位置: 首页 > news >正文

FPGA DNA 获取 DNA_PORT

FPGA DNA

DNA 是 FPGA 芯片的唯一标识, FPGA 都有一个独特的 ID ,也就是 Device DNA ,这个 ID 相当于我们的身份证,在 FPGA 芯片生产的时候就已经固定在芯片的 eFuse 寄存器中,具有不可修改的属性。在 xilinx 7series 和 7series 以前,ID 都是 57bit
的,但是在 Xilinx 的 Ultraslace 架构下是 96bit 。

The 7 series FPGA contains an embedded, 64-bit device identifier which is used to provide a 57-bit Device DNA value. The identifier is nonvolatile, permanently programmed by Xilinx into the FPGA, and is unchangeable making it tamper resistant. Each device is programmed with a 57-bit DNA value that is most often unique. However, up to 32 devices within the family can contain the same DNA value. The JTAG FUSE_DNA command can be used to read the entire 64-bit value that is always unique. Device DNA is
composed of bits 0 to 56 of the 64-bit FUSE_DNA value. External applications can access the Device DNA or FUSE_DNA values through the JTAG port, and FPGA designs can access the DNA only through a Device DNA Access Port (DNA_PORT).

意思是说JTAG可以拿到57bit的DNA_PORT和64 bit的FUZE_DNA,DNA_PORT值最多会有32个器件有相同的值,FUZE_DNA就是唯一的。而如果要通过FPGA资源区读取,只能用DNA_PORT,也就是说你写逻辑的话得用57bit的DNA_PORT。

如何读取

JTAG

可以使用 JTAG 查看当前 FPGA 的 DNA 码。注意DNA_PORT更加常用,因为这个值通过逻辑也可以读出。

其中 FUSE_DNA 即为我们要获取的 DNA 编码信息,copy 即可。

代码获取

调用DNA_PORT实现。https://fpga.eetrend.com/files-eetrend-xilinx/download/201408/7594-13761-ug4707seriesconfig.pdf

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

使用DNA_PORT获取的DNA和JTAG读取的DNA对比

参考
AMD Customer Community JTAG 获取 DNA

http://www.lryc.cn/news/404624.html

相关文章:

  • 使用 hutool工具实现导入导出功能。
  • 大语言模型-Transformer-Attention Is All You Need
  • spring(二)
  • MAC 数据恢复软件: STELLAR Data Recovery For MAC V. 12.1 更多增强功能
  • 初识godot游戏引擎并安装
  • Windows配置Qt+VLC
  • 本地部署 mistralai/Mistral-Nemo-Instruct-2407
  • 2月科研——arcgis计算植被差异
  • 深入理解Android中的缓存与文件存储目录
  • Linux_生产消费者模型
  • 【Vue】`v-if` 指令详解:条件渲染的高效实现
  • junit mockito Base基类
  • 朋友圈运营分享干货2
  • linux中创建一个名为“thread1“,堆栈大小为1024,优先级为2的线程
  • 架构以及架构中的组件
  • Docker启动PostgreSql并设置时间与主机同步
  • 提升无线网络安全:用Python脚本发现并修复WiFi安全问题
  • #三元运算符(python/java/c)
  • 探索Python自然语言处理的新篇章:jionlp库介绍
  • Deepin系统,中盛科技温湿度模块读温度纯c程序(备份)
  • 文件包含漏洞: 函数,实例[pikachu_file_inclusion_local]
  • 学习计划2024下半年
  • RabbitMQ的学习和模拟实现|sqlite轻量级数据库的介绍和简单使用
  • AI批量剪辑,批量发布大模型矩阵系统搭建开发
  • SpringMVC源码深度解析(中)
  • Mojo模型动态批处理:智能预测的终极武器
  • 人、智能、机器人……
  • SpringCloud------Sentinel(微服务保护)
  • 【无标题】Elasticsearch for windows
  • Yolo-World网络模型结构及原理分析(一)——YOLO检测器