Xilinx的7系列FPGA中的设备标识符和设备DNA

这篇具有很好参考价值的文章主要介绍了Xilinx的7系列FPGA中的设备标识符和设备DNA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

   在Xilinx的7系列FPGA中,嵌入了一个64位的设备标识符,用于提供一个57位的设备DNA值。这个标识符是非易失性的,由AMD永久编程到FPGA中,无法更改,因此具有防篡改性。每个设备都被编程了一个57位的DNA值,这个值通常是唯一的,但在同一系列的最多32个设备中,可能会包含相同的DNA值。
    通过JTAG FUSE_DNA命令,可以读取完整的64位值,这个值始终是唯一的。设备DNA是由64位FUSE_DNA值的第63位到第7位组成的。**外部应用程序可以通过JTAG端口访问设备DNA或FUSE_DNA值,而FPGA设计只能通过设备DNA访问端口(DNA_PORT)来访问DNA。**
      FPGA应用程序使用设备DNA访问端口(DNA_PORT)设计原语来访问DNA值。FPGA设计可以在运行时获取设备的唯一标识符,从而进行各种应用,如设备认证、程序绑定等。这种机制确保了每个FPGA设备的唯一性,并提高了设计的安全性和可靠性。

一、DNA值

图5-16展示了DNA_PORT设计原语的一般功能。在FPGA应用中,首先需要在设计中实例化DNA_PORT原语(如图5-15所示),并用于读取设备DNA。
Xilinx的7系列FPGA中的设备标识符和设备DNA,PCIE,fpga开发
Xilinx的7系列FPGA中的设备标识符和设备DNA,PCIE,fpga开发
读取设备DNA的过程如下:
1、转移DNA值
FPGA应用程序必须将DNA值转移到DNA_PORT的输出移位寄存器中。这通常是通过在时钟信号(CLK)的上升沿时断言READ输入来实现的,如表5-42所示。这个操作会并行地将所有57位的DNA加载到输出移位寄存器中。需要注意的是,READ操作会覆盖SHIFT操作。 Xilinx的7系列FPGA中的设备标识符和设备DNA,PCIE,fpga开发
2、读取DNA位
在CLK的上升沿之前断言SHIFT。这个操作会导致输出移位寄存器将其内容向DOUT输出方向移动。同时,DIN输入上的值会被移入移位寄存器。
通过这种方式,FPGA应用程序可以逐步地或并行地读取设备的DNA值,具体取决于设计的需求。DNA_PORT设计原语的行为是由其控制信号(如READ和SHIFT)的状态决定的。当READ和SHIFT都为低时,输出移位寄存器不会进行任何操作,因此其存储的值不会改变,也不会有新的值从DIN输入被移入。这意味着DOUT输出将保持上一状态的值。关于DNA内存的规格信息,请查阅相应的7系列FPGA数据手册。

二、扩展DNA的长度

1、DNA的长度固定
在大多数使用DNA_PORT原语的应用中,DIN数据输入通常绑定到一个静态值,如图5-17所示。这种设计方式使得DNA的长度固定,通常对应于FPGA设备的内置DNA长度。然而,有时根据应用需求,可能需要扩展DNA的长度,以提供更多的信息或增强安全性。
Xilinx的7系列FPGA中的设备标识符和设备DNA,PCIE,fpga开发

2、通过反馈扩展DNA的长度

如图5-18所示,通过将DOUT串行输出端口反馈回DIN串行输入端口,可以扩展DNA的长度。这样,DNA可以被扩展到任何可能的长度。
Xilinx的7系列FPGA中的设备标识符和设备DNA,PCIE,fpga开发

3、使用FPGA逻辑资源向设备DNA添加额外的位

在FPGA设计中,确实可以通过使用FPGA逻辑资源向设备DNA添加额外的位。如图5-19所示,FPGA应用程序可以通过DNA_PORT的DIN串行输入插入额外的位。这些由逻辑资源提供的额外位可以是一个固定的附加值,或者是由设备DNA计算得出的变量值。
Xilinx的7系列FPGA中的设备标识符和设备DNA,PCIE,fpga开发
但是,扩展DNA长度并不等同于修改FPGA设备的内置DNA。内置DNA是FPGA设备的唯一标识符,通常由制造商在制造过程中设置,并且是不可更改的。扩展的DNA数据实际上是作为应用程序级别的标识符或数据存在的,它并不改变FPGA设备的物理身份。
因此,在设计和实现扩展DNA长度的方案时,需要明确区分内置DNA和扩展DNA数据,并确保它们各自的作用和用途得到正确的理解和使用。同时,还需要考虑如何保护扩展DNA数据的安全性和完整性,以防止未经授权的访问或篡改。
虽然大多数应用使用静态值作为DNA_PORT的DIN输入,或将DOUT串行输出端口的反馈作为DIN的输入,但在某些情况下,需要通过使用额外的FPGA资源来扩展DNA的长度,以满足特定的应用需求。 添加额外位的功能增加了设计的灵活性,使得FPGA应用程序能够根据需要定制或修改设备DNA。例如,应用程序可以根据特定的应用需求或安全策略,将额外的标识符、序列号或加密密钥等信息添加到设备DNA中。这样做可以进一步加强设备的唯一性和安全性,防止未经授权的访问或篡改。
在设计和实现这样的方案时,需要仔细考虑安全性和完整性的保护问题,在修改设备DNA时,必须谨慎操作,以确保不会破坏原有的DNA值或引入任何潜在的安全风险。此外,对于包含敏感信息或关键数据的设备DNA,应采取适当的安全措施来保护其完整性和机密性。
总的来说,FPGA逻辑资源的这一功能为设备DNA的定制和增强提供了强大的支持,使得FPGA设计能够更好地满足各种复杂和多样化的应用需求。

三、JTAG访问设备DNA和标识符

FPGA的内部设备DNA可以通过JTAG端口使用专用的XSC_DNA命令进行读取。在发出XSC_DNA命令之前,需要先加载ISC_ENABLE。ISC_ENABLE会停止FPGA设计的运行。在发出XSC_DNA命令后,需要执行ISC_DISABLE来重新启动FPGA设计。
标识符的第56位在设备进入Shift-DR状态后,通过执行XSC_DNA命令出现在JTAG的TDO输出端口上。在JTAG控制器保持在Shift-DR状态时,剩余的Device DNA位和寄存器输入上的任何数据都会按顺序移出。
此外,整个独特的64位标识符可以通过JTAG端口使用专用的FUSE_DNA命令来读取。FUSE_DNA命令的功能与XSC_DNA类似,只不过在执行FUSE_DNA命令后,标识符的第0位会出现在JTAG的TDO输出端口上。
这些JTAG命令为开发者提供了访问FPGA设备内部信息的强大工具。通过读取Device DNA和标识符,开发者可以验证设备的身份、检查配置的正确性,以及在需要时进行故障排查。这些功能在FPGA的设计、生产和测试过程中都是至关重要的。同时,开发者需要确保在使用这些命令时遵循正确的操作流程,以确保数据的准确性和安全性。
在使用JTAG访问设备DNA时,需要确保JTAG连接的正确性和稳定性,以避免由于连接问题导致的读取错误或设备损坏。同时,执行ISC_ENABLE和ISC_DISABLE操作时,需要谨慎处理,以避免对FPGA设计造成不必要的影响。
总的来说,JTAG提供了一种方便、直接的方式来读取FPGA的设备DNA,为工程师提供了更多的灵活性和便利性,在FPGA开发过程中发挥着重要的作用。

四、iMPACT Access to Device Identifier

iMPACT软件也可以读取57位的设备DNA值。使用批量命令readDna -p 可以从FPGA中读取设备DNA。此外,Vivado设备编程器也具备读取设备DNA值的功能。这种访问方式使得工程师能够方便地获取设备的唯一标识符,进而进行设备的身份验证、配置检查以及故障排查等操作。在FPGA的开发和调试过程中,iMPACT软件和Vivado设备编程器为工程师提供了重要的工具,提高了开发效率和准确性。
在使用iMPACT软件或Vivado设备编程器读取设备DNA时,应确保操作的正确性和安全性,避免对设备造成不必要的损害或数据泄露。同时,对于涉及敏感信息或关键数据的设备DNA,应采取适当的安全措施进行保护。
总之,iMPACT软件和Vivado设备编程器为FPGA设备的DNA读取提供了便捷的途径,有助于工程师更好地理解和使用这些设备。文章来源地址https://www.toymoban.com/news/detail-850639.html

到了这里,关于Xilinx的7系列FPGA中的设备标识符和设备DNA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初识标识符

    abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implementis import instanceof int interface long native new package private protected public return strictfp short static super switch synchronized this throw throws transient try void volatile while   java所有的组成

    2024年02月11日
    浏览(62)
  • go学习-指针 标识符

    1.指针 (1).基本介绍 1)基本数据类型,变量存的值,也叫值类型 2)获取变量的地址用,比如 var num int ,获取num的地址:num 3)指针类型,变量存的是一个地址,这个地址指向的空间存的才是真正值,比如: var ptr *int =num 4)获取指针类型所指的值,使用*,比如:var *ptr int,使用

    2024年02月11日
    浏览(53)
  • 解决C++遇到的未定义标识符 “string“、未定义标识符 “cout“、“name”: 未知重写说明符错误

    目录 解决C++遇到的未定义标识符 \\\"string\\\"、未定义标识符 \\\"cout\\\"、“name”: 未知重写说明符错误 1. 未定义标识符 \\\"string\\\" 2. 未定义标识符 \\\"cout\\\" 3. “name”: 未知重写说明符错误 总结 1. 未定义标识符 \\\"string\\\" 2. 未定义标识符 \\\"cout\\\" 3. “name”: 未知重写说明符错误 在C++编程中,我们可

    2024年02月06日
    浏览(116)
  • C# 标识符命名规则和约定

    目录 命名规则 命名约定 C# 编码约定 命名约定 帕斯卡拼写法 驼峰式大小写 如何使用模式匹配以及 is 和 as 运算符安全地进行强制转换 标识符是分配给类型(类、接口、结构、记录、委托或枚举)、成员、变量或命名空间的名称。 有效标识符必须遵循以下规则: 标识符必须

    2024年02月12日
    浏览(54)
  • 第6关:Python的标识符

    2023年04月09日
    浏览(50)
  • 电脑的唯一标识符,VC++如何读出?

    电脑有没有唯一标识符,查了一些资料,开始以为CPUID可以,但是实际上统一类型的CPU用的是相同的ID: 那么BIOS ID是否是唯一的呢?主板上 的BIOS 芯片是主板上 唯一 贴有标签的芯片,如果电脑开机时登录bios可以看到里面的一些基本信息: bios编号也可以用win cmd的命令获得,

    2024年02月12日
    浏览(59)
  • vscode “未定义标识符”的一种情况

    原来工程复制到新电脑上面,变量出现“未定义标识符”的红色底纹波浪线,按Ctrl + 鼠标左键,可以跳转到定义处(说明,\\\"includePath\\\"项设置正确)。 根据电脑的具体的情况,修改“intelliSenseMode”: 1)如果你的电脑是默认的情况(没有额外安装编译器),设置为\\\"intelliSens

    2024年02月12日
    浏览(50)
  • ora-12154无法解析指定的连接标识符

    用户反映查询的时候报错ora-12154 这个系统只做历史数据查询使用,使用并不平凡,该数据库曾做过一次服务器间的迁移。 用户描述,所有oracle客户端查询该视图都报tns错误,一般ora-12154会发生在连接数据库时,因为tns配置不正确而报错,但是这个报错发生在进行查询过程中

    2024年01月23日
    浏览(56)
  • 初识Python(注释、代码缩进、编码规范、标识符、变量)

    ✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:零基础入门篇 💬个人格言:不断的翻越一座又一座的高山,那样的人生才是我想要的。这一马平川,一眼见底的活,我不想要,我的人

    2023年04月08日
    浏览(150)
  • Java 和 UUID:编写可靠的唯一标识符

    UUID(通用唯一识别码)是一种用于唯一标识分布式系统中的对象的标准。它是一个128位的字符串,包含了时间戳和随机数字,可以保证在分布式系统中每个对象都有一个独特的标识符,而不会发生冲突。 UUID最常见的用途是在不同的系统和平台之间传递唯一的标识符,以便于

    2024年02月04日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包