FPGA在线加载是一种允许在不重启系统的情况下更新FPGA配置的技术,这在产品发布后需要更新逻辑或者在无法物理接触设备的情况下非常有用。下面我将详细解释FPGA在线加载的原理,包括加载模式、配置文件格式以及加载流程。 加载模式FPGA的在线加载通常涉及以下几种模式:
- 被动串行(PS)模式:外部微控制器提供配置时钟信号CCLK,并控制数据加载。5
- 主动串行(AS)模式:FPGA从外部存储设备读取数据,内部提供CCLK信号。5
- 被动并行(PP)模式:通过8位并行数据线加载数据,CCLK由外部提供。5
- 边界扫描(BS)模式:通常指JTAG加载模式,具有最高的配置优先级。5
配置文件格式FPGA的配置文件主要有以下几种格式:
- Bitstream (.bit):包含FPGA逻辑元件的连接和功能详细信息,以及配置所需的时序和逻辑设置。4
- Binary (.bin):纯粹的二进制数据文件,没有特定的FPGA配置结构,通常用于备份或传输。4
- Motorola S-record (.mcs):存储数据和程序代码的文本文件格式,包含地址、数据和校验信息。4
加载流程以Xilinx FPGA为例,其加载流程大致如下:
- 上电和配置清除:FPGA上电后清除现有配置。
- 模式选择:通过特定的引脚配置选择加载模式,如M[2:0]引脚设置为“110”选择Slave Select Map模式。1
- 加载配置文件:通过选定的接口和模式将配置文件加载到FPGA中。
- 配置时序:根据所选模式,执行相应的配置时序,如拉低PROGRAM_B信号、等待INIT_B信号等。1
- CRC校验:加载过程中可能涉及CRC校验以确保配置数据的完整性。
- 刷新和重载:在动态刷新功能中,FPGA可以在不停止工作的情况下刷新配置,通过跳过PROGRAM_B信号的拉低和等待INIT_B信号的过程。1
动态刷新动态刷新功能主要用于保持FPGA配置的稳定性,特别是在SRAM型FPGA中,需要定期刷新配置以防止数据丢失。刷新过程使用与重加载相同的接口,但跳过了某些步骤,并且添加了特定的约束来保持配置接口的功能,以便不断刷新配置。1 QuickBoot方案QuickBoot是一种远程更新方案,通过在FPGA内部增加逻辑功能,实现自动从Flash下载数据完成逻辑更新。如果配置出错,FPGA可以从golden bitstream区域下载数据。QuickBoot支持多种配置方式,包括BPI/SPI/加密位流等。2 硬件和软件设计基于Flash的FPGA在线升级需要硬件上选择适当的配置方式,如Master SPI模式,并设计相应的SPI接口逻辑。软件设计包括处理.mcs文件,将其转换为.bin格式,并实现对Flash的读写操作。4 总结来说,FPGA在线加载是一个复杂的过程,涉及到选择合适的加载模式、处理配置文件以及执行精确的加载时序。随着技术的发展,如QuickBoot等方案提供了更为灵活和高效的远程更新方法。 |