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

发布于:2024-03-29 ⋅ 阅读:(11) ⋅ 点赞:(0)
   在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。
在这里插入图片描述
在这里插入图片描述
读取设备DNA的过程如下:
1、转移DNA值
FPGA应用程序必须将DNA值转移到DNA_PORT的输出移位寄存器中。这通常是通过在时钟信号(CLK)的上升沿时断言READ输入来实现的,如表5-42所示。这个操作会并行地将所有57位的DNA加载到输出移位寄存器中。需要注意的是,READ操作会覆盖SHIFT操作。 在这里插入图片描述
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的长度,以提供更多的信息或增强安全性。
在这里插入图片描述

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

如图5-18所示,通过将DOUT串行输出端口反馈回DIN串行输入端口,可以扩展DNA的长度。这样,DNA可以被扩展到任何可能的长度。
在这里插入图片描述

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

在FPGA设计中,确实可以通过使用FPGA逻辑资源向设备DNA添加额外的位。如图5-19所示,FPGA应用程序可以通过DNA_PORT的DIN串行输入插入额外的位。这些由逻辑资源提供的额外位可以是一个固定的附加值,或者是由设备DNA计算得出的变量值。
在这里插入图片描述
但是,扩展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读取提供了便捷的途径,有助于工程师更好地理解和使用这些设备。

本文含有隐藏内容,请 开通VIP 后查看