如何通过PCIE协议实现FPGA 配置?
【时间:2020 年 03 月 02 日, 来源:本站原创, 作者:Nicole Zhang】
1. CvP简介
CvP(Configuration via Protocol)是一种通过协议实现FPGA配置的方案,Arria® V,Cyclone® V,Stratix® V,Arria® 10,Cyclone® 10 GX,Stratix® 10,Agilex™都支持这个功能,但支持的模式有所差异。目前所采用的协议是PCI Express® (PCIe)。
CvP配置文件被拆分成两个,一个是periphery image,一个是core image。
•Periphery image (*.periph.jic) 包含GPIOs,I/Oregisters,GCLK、QCLK、RCLK 时钟网络,PLLs,收发器,存储器PHY接口,以及硬核IP,例如PCIe硬核。这部分不能被更改和更新。Periphery image存储在FPGA配置芯片内,上电加载。
•Core image (*.core.rbf) 包含被configuration RAM (CRAM)配置的逻辑部分,包括LABs, DSP, 和embedded memory。FPGA设备上电后主机端再经由所用的协议(此处为PCIe)将core image下载并配置到FPGA内部。
2. CvP系统结构
CvP系统由三部分组成:FPGA,PCIehost,FPGA的配置器件。如图1。
图1 CvP系统结构图
(1)配置器件与FPGA通过传统配置接口互联。对于V系列和Arria10器件来说,可支持任何配置方式,例如AS,PS或FPP。针对Stratix10,可采用Active Serial x4 (fast mode) 或Avalon Streaming (Avalon-ST) x8。对于Agilex系列器件,只可采用 Active Serial x4 (fast mode)。
(2)对于V系列、Arria10、Stratix10、Cyclone10GX,只有器件底部左侧的PCIe硬核才支持CvP功能,其他的PCIe硬核可作常规功能使用。而对于Agilex系列,左侧的PCIe硬核都支持CvP功能。在硬件设计阶段需要确认使用哪个PCIe做CvP,一旦确定,则只有这个PCIe硬核作为Endpoint可以使能CvP功能,其他PCIe硬核不能再作此用途,但可作为常规PCIe接口用。
(3)其他PCIe硬核能作为常规PCIe接口使用。
3. CvP价值
• 由于只需要存储periphery logic,FPGA的配置器件可以选择小容量器件,降低成本。
• Coreimage存在主机端,提高核心逻辑的安全性。
• 对于支持CvP Update Mode的器件来说,可支持动态的核心逻辑更新,而不需要系统断电重启。
• 主机侧提供了简单的软件配置模型。
4. CvP模式
CvP有两种模式:CvP Initialization mode和CvP Update mode。
4.1 CvP Initialization Mode初始化模式
FPGA在上电时加载配置芯片上的peripheral image,在100ms的枚举时间内成功配置其PCIe接口,使主机能正确枚举该PCIe设备。主机启动后再通过PCIe链路配置FPGA核心逻辑。
CvP Initialization Mode优势:
• 保证FPGA PCIe设备满足枚举时间。
• FPGA的配置器件可以选择小容量器件,降低成本。
• 保证主机侧核心逻辑的安全性。
4.2 CvP Update Mode更新模式
当FPGA进入用户模式,对除CvP PCIe核之外的其他逻辑通过CvP进行重新配置,此时CvP PCIe既可以做常规PCIe使用,又可以实现FPGA核心逻辑的更新。为使用该模式,需要参考Partition的流程对工程进行分模块Partition和Logic Lock设计,以重复利用设备外设,保证peripheral image不变。
详情请浏览收藏: