DFX 动态重构的概念和实现
- 背景介绍
本文内容当前仅限于XILINX或者和XILINX具有相同结构的FPGA器件。
FPGA 技术提供了在现场进行编程和重新编程的灵活性,而无需通过重新制造流程来实现设计修改。动态功能交换(Dynamic Function eXchange, DFX)将这种灵活性提升到了一个新的层次,它允许通过加载动态配置文件(通常是部分 BIT 文件)来修改正在运行的 FPGA 设计。
在使用完整的 BIT 文件对 FPGA 进行初始配置之后,可以通过下载部分 BIT 文件来修改 FPGA 中的可重配置区域,而不会影响那些未被重新配置的区域中正在运行的应用程序的完整性。
FPGA(现场可编程门阵列)局部重构技术,特别是在卫星等空间应用中的使用,具有重要意义。这种技术允许在不重新制造硬件的情况下,通过更新部分FPGA配置来修改或优化其功能(更新整个FPGA bit 通常由于数据星地间传输带宽的限制而受到制约)。以下是FPGA局部重构在卫星设备中的一些关键意义:
- 灵活性和适应性:卫星在发射后可能需要根据任务需求的变化进行调整,或者应对未预见的环境挑战。局部重构使得卫星能够动态地适应这些变化,而无需物理更换硬件。例如,如果发现某个传感器的数据处理算法不够高效,可以通过更新相应的FPGA区域来改进而无需发射新的卫星或者更新整个bit。
- 资源利用效率:不是所有的任务都需要同时执行,也不是所有的时间段内都需要相同的计算能力。通过局部重构,可以在不同的时间点为不同任务分配FPGA资源,从而更有效地利用有限的硬件资源。
- 维护与升级:在轨卫星的硬件一旦发射就很难进行物理上的维修或升级。FPGA局部重构允许远程对卫星的功能进行软件更新或修复潜在的问题,这对于延长卫星使用寿命至关重要。
- 容错能力:对于太空环境中的辐射效应,FPGA局部重构可以作为一种有效的容错策略。当检测到由于辐射导致的错误时,受影响的部分可以被快速隔离并重新配置,以恢复功能,减少系统宕机时间。
- 节省成本:采用局部重构技术可以减少设计多种专用硬件的需求,降低开发成本和复杂度。此外,它还可以减少卫星上所需的硬件数量,减轻重量,从而降低发射成本。
- 原理
下图展示了动态功能交换(DFX)背后的基本原理:
图 2‑1 动态功能交换的基本原理
如图所示,通过下载多个部分 BIT 文件之一(A1.bit、A2.bit、A3.bit 或 A4.bit),可以修改在“可重构模块 A(Reconfig Block A)”中实现的功能。FPGA 设计中的逻辑被划分为两种不同类型:可重构逻辑 和 静态逻辑。
标有 “FPGA” 的模块区域代表静态逻辑,标有 “Reconfig Block A” 的模块区域代表可重构逻辑。静态逻辑在整个过程中保持正常运行,不会受到加载部分 BIT 文件的影响;而可重构逻辑则会被部分 BIT 文件的内容所替换。
用户可以在不同的时刻,来加载不同的局部bit 实现不同的功能,同时无需关机。
- 实施
- 提前将不同功能的bit 文件预先存储在FLASH等存储器指定位置,然后根据用户指令或者提前设计好的工作逻辑,自由选择当前启用哪一份bit 文件
- 用户需要更新功能时,只需要更新局部bit,无需更新整个器件的bit,需要传输的文件尺寸会被大大压缩到KB级别
- 用户只需要在VIVADO工具中提前划定好局部逻辑即可,开发流程和非DFX重构没有太多差异,生成的局部bit文件具有独立性,是一份独立的bit文件,调试、生产都非常方便。
下图是我们实验用的一份局部bit和全局bit尺寸对比,目标器件是KU040,其中top.bit是全局bit,经过压缩后 尺寸是2.2MB,led12_partial.bit是局部bit,尺寸大小为133KB(这和划定的重构区域大小有关,我们这里划定的区域较大)
图 3‑1 局部bit 与全局bit 文件大小对比