如何通过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不变。

详情请浏览收藏:

https://mp.weixin.qq.com/s/AkRuTMpOoYexMrRGNzhe3Q