FPGA 能否动态修改其逻辑?

电器工程 FPGA
2022-01-31 06:50:35

理论上,FPGA 可以将配置映像写入外部存储器,并从存储器中加载配置映像以重新配置自身。这将是“非动态”重新配置。

FPGA 是否能够动态重新布线其逻辑结构?事实上,虽然触发器可以修改它们的值,但我还没有听说过动态重新配置查找表和构成逻辑结构的内部布线。

FPGA内部逻辑(存储器除外)可以动态修改吗?如果不是,为什么不呢?

2个回答

是的,我知道至少赛灵思有支持动态重新配置的部件,其他主要供应商也可能这样做。

不过,这是一项艰巨的任务,因此您确实需要确保自己需要它。您需要将芯片物理地划分为两个或多个区域,其中至少一个是不可重新配置的,并在物理上“固定”这些区域之间的所有内部接口,以便综合工具可以进行所有正确的连接。

可以使用两种通用方法。许多类型的 FPGA 将其配置保存在锁存器中,这些锁存器在启动时从外部设备(通常是 EEPROM)中获取;FPGA 读取后不再需要外部设备。在设备操作期间对 EEPROM 的更改将不会生效,直到 FPGA 被指示重新加载其内容。因此,如果没有 FPGA 就完全无法运行的设备可以在运行期间对 FPGA 进行重新编程;但是,如果在 EEPROM 写入期间出现问题,则设备可能无法运行,除非或直到可以被外部设备重写(这种状态有时被称为“变砖”)。

另一种方法通常适用于其 EEPROM 单元“直接”控制其功能(而不是复制到锁存器)的 CPLD,即拥有一个即使在可编程器件处于无用状态时也能以有限功能运行的系统。如果这种有限的功能足以对 CPLD 重新编程,则设备可能不会受到“变砖”的影响。例如,无线设备可能使用 CPLD 来控制其无线功能和其他特性。重新编程 CPLD 的常规方法可能是通过无线链路将图像接收到 RAM 中,然后使用该图像重新编程 CPLD。如果对文件进行编程,则在重新编程 CPLD 之前,无线链路可能无法使用。然而,为了让系统恢复,处理器可以包含一个“默认”