从理论上讲,FPGA可以将配置映像写入外部存储器,然后从存储器中加载配置映像以重新配置自身。这将是“非动态”重新配置。
FPGA是否具有动态重新连接其逻辑结构的能力?确实,尽管可以修改触发器的值,但我还没有听说过动态重新配置构成逻辑结构的查找表和内部布线的情况。
FPGA内部逻辑(存储器除外)是否可以动态修改?如果没有,为什么不呢?
从理论上讲,FPGA可以将配置映像写入外部存储器,然后从存储器中加载配置映像以重新配置自身。这将是“非动态”重新配置。
FPGA是否具有动态重新连接其逻辑结构的能力?确实,尽管可以修改触发器的值,但我还没有听说过动态重新配置构成逻辑结构的查找表和内部布线的情况。
FPGA内部逻辑(存储器除外)是否可以动态修改?如果没有,为什么不呢?
Answers:
是的,我知道至少Xilinx具有支持动态重配置的部件,其他主要厂商也可能支持。
但是,这是一项重大工作,因此您确实需要确保自己需要它。您需要将芯片物理上划分为两个或多个区域,其中至少一个是不可重新配置的,并在物理上“固定”区域之间的所有内部接口,以便综合工具可以进行所有正确的连接。
一种可以使用的一般方法有两种。许多类型的FPGA在启动时从外部设备(通常是EEPROM)获取的锁存器中保存其配置。读取后,FPGA不需要外部设备。除非指示FPGA重新加载其内容,否则在设备操作期间对EEPROM所做的更改将不生效。因此,如果没有FPGA,在没有FPGA的情况下完全无法操作的设备可能会在运行期间对该FPGA进行重新编程。但是,如果在EEPROM写入过程中出了点问题,则该设备可能无法工作,除非或直到可以被外部设备重写(这种状态有时被称为“砖化”)。
对于其EEPROM单元“直接”控制其功能(而不是复制到锁存器)的CPLD而言,通常可使用的另一种方法是使系统即使在可编程设备处于无用状态时也只能以有限的功能运行。如果这种有限的功能足以对CPLD进行重新编程,则该设备可能不会出现“砖化”现象。例如,无线设备可能使用CPLD来控制其无线功能和其他功能。重新编程CPLD的正常方法可能是通过无线链接将图像接收到RAM中,然后使用该图像对CPLD进行重新编程。如果正在编程文件,则在重新编程CPLD之前,无线链接可能不可用。为了使系统恢复,但是处理器可以包含“默认”