引言:本系列笔记对Xilinx FPGA快速启动(QuickBoot)方法实现远程更新进行详细阐述,这些内容对于评估该方案以及调试实际部署过程中出现的问题至关重要。
1. 概 述
Xilinx FPGA 的一大核心优势在于其远程更新能力。该功能支持对已部署的系统进行设计补丁更新或功能升级。本应用笔记提供了一套解决方案,实现稳定的现场更新。该套解决方案被统称为快速启动(QuickBoot)方法。
2. 介 绍
图 1 展示了一种具备 FPGA 远程更新功能的系统架构。如图所示,新FPGA比特流可以通过以太网、PCIe、USB接口或者USB存储器、SD卡等多媒体存储卡实现比特流传输。
图1:FPGA 远程更新功能的系统架构
Xilinx 快速启动(QuickBoot)方法,支持 7 系列所有 FPGA,内置远程更新故障恢复机制,可回退至经验证可用的 “可靠比特流”,无论是更新比特流还是可靠比特流,均可实现快速配置。另外,QuickBoot兼容多种配置模式,包括:SPI 模式、BPI模式、加密比特流以及多 FPGA 配置菊花链。
3. 传统远程更新的方案
面向可远程更新 FPGA 的传统方案,其设计思路是在Flash闪存
中划分出专用保留区域,用于存储以下两类内容:
■ 升级比特流
■ 经验证可用的 “可靠比特流”(黄金比特流或出厂默认比特流)
该方案会部署一套远程编程机制,通过这一机制将新的或增强版比特流烧录至升级比特流存储区。FPGA 在启动时,优先采用该升级比特流完成配置,配置过程如图2所示。
图2:传统故障回退多重启动的闪存组成与配置方法
传统远程更新方案会采用 FPGA 内置的多重启动(MultiBoot) 与故障回退(Fallback) 功能。其中多重启动功能支持 FPGA 从闪存的指定地址选择性加载比特流;当 FPGA 检测到配置错误(远程更新流程失败或被中断)时,故障回退功能会将 FPGA 复位,并从闪存的零地址重新尝试配置,并用黄金比特流完成配置。通常情况下,黄金比特流会被设置为不可修改状态,以确保其在任何场景下都能保持可靠的可用状态。注意,在故障回退过程中,FPGA 会忽略热启动跳转序列。
故障回退多重启动方案采用了直接覆盖升级比特流的更新方式与顺序尝试--恢复的配置机制。FPGA 的配置逻辑独立负责解决所有编程错误或流程中断问题。FPGA 优先尝试从升级比特流加载配置,若检测到配置错误,则启动故障回退机制,基于可靠比特流重新完成配置。由于多了一次初始的配置尝试,故障回退场景下的配置耗时可达标准配置耗时的两倍。
4. 快速启动(QuickBoot)方法远程更新方案
4.1 快速启动系统的整体架构
快速启动(QuickBoot)方法通过微调比特流更新流程的编程算法,将编程错误与中断的恢复职责,转移至编程操作环节来承担。该方法将编程方式,与一种基于专用配置头的特殊配置方法相融合,形成一套完整的远程更新方案。此方案兼具高可靠性,可兼容多种配置方案变体,且在所有场景下均能实现快速配置。快速启动系统的整体架构详见图 3。
图3:QuickBoot 远程更新解决方案生态系统
4.2 QuickBoot配置方法
图4展示了面向远程更新的快速启动(QuickBoot)配置方法。
图4:面向远程更新的快速启动(QuickBoot)配置方法
快速启动(QuickBoot)方案在闪存中包含以下组成部分:
■ 专用快速启动头文件
■ 黄金比特流镜像存储区
■ 升级比特流镜像存储区
快速启动头文件的子组件进一步细分为:
■ 关键切换字
■ 热启动跳转序列
关键切换字是快速启动(QuickBoot)配置方法的核心所在。该关键切换字仅有开启(ON)和关闭(OFF)两种状态:当切换字处于开启状态时,FPGA 加载升级比特流;反之,当切换字处于关闭状态时,FPGA 则加载可靠比特流。
快速启动(QuickBoot)配置方法会在配置流程的第一步,通过关键切换字快速判定需要加载的比特流类型。随后,FPGA 便从选定的比特流存储区开始,执行标准的配置流程。
欢迎关注FPGA技术实战公众号,喜欢就多多转发吧!