0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CvP系统结构解析 PCIE协议实现FPGA 配置案例

电子设计 来源:与非网 作者:与非网 2020-11-27 14:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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 不变。

当有以下几种需要时,可以考虑使用该模式:

• 需要对核心逻辑进行更新。

• 根据功能发布情况对设备进行更新。

4.3 不同器件系列支持的模式

前面说到 ArriaV,CycloneV,StratixV,Arria10,Cyclone10GX,Stratix10,Agilex 都支持 CvP,但不同系列器件支持的模式有所差异,具体如表 1,其中 Agilex 只支持 InitializationMode,如表 2。

表 1 不同器件系列支持的模式

表 2 Agilex 系列支持的模式

5. CvP Initialization mode 实现流程和注意事项

使用 Stratix V 开发板实现 CvP Initialization mode 的流程及注意事项。

• 板卡:Stratix-VGX Dev Kit (PCIe board),PCIe Gen1x8。

• 主机:64 位 Windows7 操作系统

Quartus 版本:QuartusII 64-Bit Version 14.1.0 Build 186

5.1 实现流程

1. 构建含 PCIe IP 的工程,此处采用 S5PCIe 的 Example design。

2. 打开工程内 PCIe IP 的 GUI,勾选“Enable configuration via the PCIe link”。

3. 在 Assignments =》 Device =》 Device andPin Options =》 Configuration 中选择 FPGA 的配置模式为 Active Serial x4(并设置 MSEL)。

在 Assignments =》 Device =》 Device and Pin Options =》 CvPSettings 选择 configuration via protocol 为 Core initialization。

4. 根据开发板分配管脚并编译工程,生成 cvp_example.sof。

5. 将生成的 cvp_example.sof 进行拆分,打开 File =》 Convert Programming Files,设置 Programmingfile type 为 JTAG Indirect Configuration File (.jic)。添加 cvp_example.sof,勾选 Create Memory Map File 和 Create CvP files。点击 Generate 之后,cvp_example.sof 就被拆分成两部分,cvp_example.periph.jic 和 cvp_example.core.rbf。

6. 关闭主机,将 PCIE 板卡连上 JTAG,插在主机 PCIe 插槽里,主机再上电启动。此时 PCIE 板卡由 PCIE 插槽供电。打开 Quartus II Programmer,点击 Auto Detect 扫描 JTAG 链,选择 FPGA 点击 ChangeFile,选择之前生成的 cvp_example.periph.jic 文件,并烧写进 EPCQ256。

7. 重新启动主机,枚举 PCIe 设备。此时已经加载了 cvp_example.periph.jic 的 PCIE 板卡将作为 PCIE 设备被系统识别。根据 PCIe IP 的设置,在主机侧查看 DeviceID 为 E001,Vendor ID 为 1172 的 PCIe 设备。

此时可以下载一个免费软件“RW – Read & Write Utility”。找到 Device ID 为 E001,Vendor ID 为 1172 的 PCIe 设备。

8. 在主机上使用 quartus_cvp 对识别到的 PCIe 板卡(Device ID 为 E001,VendorID 为 1172)加载核心逻辑部分 cvp_example.core.rbf。打开 Windows CMD,更改路径到 cvp_example.core.rbf 所在的位置。

输入如下命令并回车:

• quartus_cvp--vid=1172 --did=e001 cvp_example.core.rbf

如果成功执行该命令,会出现如下界面,表示核心逻辑已被成功加载进 FPGA,此时 FPGA 进入 usermode,可以正确工作。

5.2 注意事项

运行 quartus_cvp 时需要安装 Jungo WinDriver。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22283

    浏览量

    630277
  • PCIe
    +关注

    关注

    16

    文章

    1420

    浏览量

    87547
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Xilinx高性能NVMe Host控制器IP+PCIe 3.0软核控制器IP,纯逻辑实现,AXI4和AXI4-Stream DMA接口,支持PCIe 3.0和4.0

    CPU,NVMe AXI4 Host Controller IP自动执行对PCIe SSD的PCIe设备枚举和配置、NVMe控制器识别和初始化、NVMe队列设置和初始化,实现必须以及可
    发表于 11-14 22:40

    如何使用FPGA实现SRIO通信协议

    本例程详细介绍了如何在FPGA实现Serial RapidIO(SRIO)通信协议,并通过Verilog语言进行编程设计。SRIO作为一种高速、低延迟的串行互连技术,在高性能计算和嵌入式系统
    的头像 发表于 11-12 14:38 4943次阅读
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>SRIO通信<b class='flag-5'>协议</b>

    Modbus协议转HTTP协议实现JSON格式对接MES等系统平台

    不用联外网不用写程序,通过智能网关IGT-DSER简单配置参数,即可实现HTTP协议对接各种系统平台,支持POST/GET/PUT等多种方法,可同时作为HTTP
    发表于 10-27 10:33

    协议解析网关是什么?有什么功能?

    、OPCUA、HTTP等),并将其转换为目标系统或设备可识别的协议格式,从而实现协议的通信与数据交互。 简单来说,协议
    的头像 发表于 08-13 14:04 595次阅读
    <b class='flag-5'>协议</b><b class='flag-5'>解析</b>网关是什么?有什么功能?

    NVMe高速传输之摆脱XDMA设计20: PCIe应答模块设计

    应答模块的具体任务是接收来自PCIe链路上的设备的TLP请求,并响应请求。由于基于PCIe协议的NVMe数据传输只使用PCIe协议的存储器读
    发表于 08-12 16:04

    NVMe高速传输之摆脱XDMA设计17:PCIe加速模块设计

    PCIe加速模块负责实现PCIe传输层任务的处理,同时与NVMe层进行任务交互。如图1所示,PCIe加速模块按照请求发起方分为请求模块和应答模块。请求模块负责将内部请求事务转化为
    发表于 08-07 18:57

    NVMe高速传输之摆脱XDMA设计14: PCIe应答模块设计

    应答模块的具体任务是接收来自PCIe链路上的设备的TLP请求,并响应请求。由于基于PCIe协议的NVMe数据传输只使用PCIe协议的存储器读
    发表于 08-04 16:44

    PCIe协议分析仪在数据中心中有何作用?

    PCIe协议分析仪在数据中心中扮演着至关重要的角色,它通过深度解析PCIe总线的物理层、链路层、事务层及应用层协议,帮助运维人员、硬件工程师
    发表于 07-29 15:02

    PCIe协议分析仪能测试哪些设备?

    场景:监测GPU与主机之间的PCIe通信,分析数据传输效率、延迟和带宽利用率。 应用价值:优化大规模AI训练任务的数据加载和模型参数同步,例如在多GPU系统中测试PCIe交换机的性能和稳定性。
    发表于 07-25 14:09

    NVMe IP高速传输却不依赖便利的XDMA设计之三:系统架构

    结合目前应用需求,以及前面基础分析,确定IP应具有如下特色: (1) 通用性 前端数据采集系统基于 FPGA 开发。 一方面, 设备类型多, 使用的 FPGA型号各不相同, 需要实现
    发表于 06-29 17:42

    如何通过USS协议实现变频器与PLC之间的通信?

    通信。以下将详细解析USS协议的工作原理、硬件连接、参数配置及编程实现,并结合实际应用中的注意事项,为工业自动化领域的工程师提供一套完整的解决方案。 一、USS
    的头像 发表于 06-07 17:21 1027次阅读
    如何通过USS<b class='flag-5'>协议</b><b class='flag-5'>实现</b>变频器与PLC之间的通信?

    nvme IP开发之PCIe

    体系架构 RC是PCIe体系树形结构中的根节点。RC主要负责配置PCIe总线上的所有设备,分配资源、处理传输请求,并管理数据流动。在处理器系统
    发表于 05-17 14:54

    【高清视频案例分享】CameraLink接口的PCIe采集卡 ,基于FPGA开发平台

    【高清视频案例分享】CameraLink接口的PCIe采集卡 ,基于FPGA开发平台 一、CameraLink简介 CameraLink是一种高速、可靠的相机接口标准,它专为满足高性能相机与图像
    发表于 03-25 15:21

    基于FPGA的GigE Vision相机图像采集方案设计

    即可。本文对原有GigE Vision协议结构进行了裁剪,仅保留设备搜索、寄存器配置和图像采集三个主要功能。并在FPGA中成功实现了对Ba
    的头像 发表于 01-07 09:34 1848次阅读
    基于<b class='flag-5'>FPGA</b>的GigE Vision相机图像采集方案设计

    AUTOSAR通信协议解析 如何实现AUTOSAR通信

    通信协议栈是一个复杂的系统,它涵盖了多种通信方式和模块,以实现车内ECU之间的高效、可靠的数据交换。以下是对AUTOSAR通信协议解析
    的头像 发表于 12-17 14:54 3951次阅读