文章目录

  • 背景介绍
  • 逻辑方案
  • 性能测试
  • 软件驱动
  • 相关帖子
  • 技术交流

背景介绍

近年来,国产FPGA厂商发展迅速,紫光同创、安路等公司已经量产28nm、几k~几百k的FPGA逻辑芯片,在自主可控的大环境下,国产FPGA厂商给了我们一个更优的选择。虽然,国产FPGA厂商在芯片逻辑资源、工艺、eda工具等方面取得长足进步,但是在IP生态上仍然有很长的路要走。在此之前,FPGA开发者需要自己独立开发一些官方不能提供的IP,虽然道阻且长,但是在此过程中我们可以学到更多知识,掌握更多设计技巧。
    本文简要介绍基于紫光同创Titan2系列PG2T390H芯片的链式DMA控制器实现框架,该架构支持多通道,每个通道支持128个描述符,亦可支持SR-IOV虚拟化,支持两路PF,6个VF。数据通道支持标准AXI-MM接口,修改简化亦可支持AXI-Stream接口。BAR读写可支持APB接口或者AXI-lite接口。本方案亦可移植到xilinx/intel平台,真正做到自主可控,带宽利用率极高,数据量在64m以上接近理论极限水平。本IP基于全流水设计,相较于intel、xilinx官方IP,本IP的带宽利用率更高!!!

逻辑方案

逻辑实现方案如下图所示:

    图中PCIe Hard IP是PCIe硬核模块,负责PCIe物理层与协议层,DMA通过CQ(Completer reQuest),CC(Completer Completion),RC(Requester Completion),RQ(Requester reQuest),IRQ(Interrupt reQuest)等接口与该硬核模块进行交互,接口规范为AXIS(Advanced eXtensible Interface)协议。DMA架构主要由TLP2BAR、APB2AXI-Lite、Read Descriptor Manage、Write Descriptor Manage、Merge、Desc Status Upload、Read DMA Dtata Mover、Write DMA Dtata Mover、Std_Intf等主要模块组成,各模块之间数据使用用AXI-stream、AXIM-MM标准总线传输,保证传输效率。BAR读写操作使用apb、axi-lite标准总线传输,命令信息或者控制信息用ready/valid握手信号协议传递,保证控制信息的传输效率,整个架构异步流水,防止任何模块因等待导致DMA控制器效率变低。
    本文设计的DMA各模块的主要功能如下:
TLP2BAR:主机端进行BAR的读写操作,会通过PCIE协议转化为读写TLP包,该模块负责解析来自接口CQ的TLP包,转化为APB总线的读写操作。主机端写操作转为APB总线写操作,主机端读操作转化为APB总线读操作,Cpld包通过接口CC返回给主机。CQ接口带有pf/vf标识以及BAR0-BAR5的标识,理论上,假如PF/VF总数为n,需要6n套APB总线对应,本文共设计62套APB总线,bar0负责配置DMA相关寄存器,bar1负责配置其他业务相关寄存器,可根据需要修改设计。
APB2AXI-Lite:该模块将标准APB总线转化为AXI-Lite总线,方便业务模块总线互联。
Read Descriptor Manage:该模块具备4个功能。一、将描述符控制寄存器以及操作转化为读描述符,该描述符专门用于读取上位机准备好的读描述符与写描述符。对于后面的读数据搬移器来说,这两种读描述符均是读取上位机内的数据,故可以合并处理。二、将上位机读取回来的读描述符数据解析为读描述符格式。三、存储描述符,本文设计的描述符存储深度为128。四、根据完成信息判断是否产生中断以及每个描述符完成的状态信息。
Write Descriptor Manage:该模块具备2个功能。一、将上位机读取回来的写描述符数据解析为写描述符格式。二、存储描述符,本文设计的描述符存储深度为128。
Desc Status Upload:该模块的作用是将每个描述符完成后的状态信息转化为Mwr类型TLP,发送到上位机,上位机为每个描述符预留了状态标志存储空间,每当一个描述符完成后,就向对应的上位机地址写1。
Read DMA Dtata Mover:该模块主要功能是根据读描述符发送读请求Mrd,然后将上位机返回的数据进行处理,返回的数据包括读写描述符数据以及正常数据。
Write DMA Data Mover:该模块主要功能是根据写描述符,从读数据接口读取数据,然后将数据转为Mwr类型TLP包,发送给上位机。
Std_Intf:该模块主要功能是将 Read DMA Dtata Mover与 Write DMA Data Mover读写数据传输的不标准协议转为AXI-MM标准协议。
Merge:该模块主要功能是将多路流模式数据按包轮询合并。

性能测试

单设备单通道测试结果如下所示。

    该芯片支持PCIe Gen3x8,理论最大传输速率为8GB/s。图中为单个设备DMA读写带宽测试结果。据曲线可以看出,本文设计的DMA读带宽最大为6.91GB/s,理论带宽的86%左右,DMA写带宽最大为6.31GB/s,理论带宽的79%左右。VC709 PCIe板卡与主机协商出的Max_Payload_Size为256byte,Max_Read_Request_Size为512byte,所以读DMA最大带宽比写DMA最大带宽高符合预期。从图中曲线可以看出一开始读DMA带宽比写DMA带宽低,原因写DMA仅有card取数据发包到host过程,而读DMA需要card发送读请求并且处理host返回Cpld包,读DMA较写DMA过程更加复杂,故DMA初始阶段写DMA效率更高。
    SR-IOV虚拟化测试结果如下:
    如图所示,图中有四部分,分别为VF0-VF3的DMA读写带宽实验结果,该结果是4个VF同时工作时测试的数据。图中h2c表示host to card,c2h表示card to host。根据曲线结果可以看出,当4路VF同时工作时,每路VF的带宽性能几乎相同,可以共享PCIe总带宽,这与设计中各路VF轮询使用DMA data Mover机制相符合。当数据长度越长时,交互效率越高,接口性能越好。

软件驱动

本文对应的驱动不再详述,相关驱动参考基于同创logos2 FPGA PCIe软件栈设计

> https://blog.csdn.net/whlzywy/article/details/125885928

相关帖子

基于同创logos2的国产FPGA加速器与DMA设计与实现

> https://blog.csdn.net/whlzywy/article/details/125844174

技术交流

近两年国产FPGA发展迅速,在部分领域已有不错市场份额,相信未来会有一席之地,欢迎技术交流!

基于国产FPGA紫光同创Titan2 PG2T390H的PCIe链式DMA控制器设计相关推荐

  1. 基于FPGA实现PCI-E接口和DMA控制器设计

    随着网络的飞速发展,人们可获取的信息量日益增长,数据的处理及存储速率的要求也越来越高.万兆网(10Gb以太网)的普及,高速存储设备的应用(如DDR2,传输速率可达800M)对系统带宽带来极大的挑战. ...

  2. 【FPGA创新设计竞赛——2022紫光同创杯】1、“基于 RISC-V 处理器的软硬件系统设计”赛题介绍

    文章目录 一. 开发方向 基于 RISC-V 处理器的软硬件系统设计 设计要求 设计指标 作品提交注意事项 二. 考核标准 三. 平台借用 四. 竞赛支持 一. 开发方向 基于 RISC-V 处理器的 ...

  3. 基于同创logos2的国产FPGA加速器与DMA设计与实现

    文章目录 背景介绍 硬件方案 主要参数 国产平台适配 逻辑架构设计 DMA实现方案设计 驱动设计 系统与应用 软件驱动 相关文章 技术交流 背景介绍 当前全国产服务器在性能上与国外先进平台相比还有较大 ...

  4. 国产FPGA(紫光同创)—— 数据采集及千兆以太网传输(一)

    科研需要,使用国产FPGA(紫光PLG50H)实现数据采集及千兆以太网传输.总体流程如图所示 第一部分先对数据采集部分进行说明. 一.模数转换(ADC芯片-LTC2324) 本项目使用的是LTC232 ...

  5. 国产FPGA(紫光同创)—— 数据采集及千兆以太网传输(二)

    科研需要,使用国产FPGA(紫光PLG50H)实现数据采集及千兆以太网传输.总体流程如图所示 数据采集完成后,第二部分就需要千兆以太网实现数据传输. 一.硬件部分 开发板上通过Realtek RTL8 ...

  6. ALINX紫光同创国产FPGA开发板PGL22G发布

    由ALINX联合紫光同创共同推出的logos系列PGL22G开发板正式发布了,这款板卡是利用核心板+扩展板的方式设计,充分利用了芯片有效资源帮助工程师进行前期的芯片功能验证,芯片支持DDR3,有用足够 ...

  7. 紫光同创国产FPGA学习之IP Compiler

    这里就是紫光同创里面IP核的使用方法,缺少一个重要的内容就是,里面的IP怎么用没有写.看看也好,具体核怎么用仿真一下看看应该也和xilinx的一样吧.如果不一样,查找bug就危险了. 一.       ...

  8. 紫光同创国产FPGA学习之Fabric Inserter

    这一篇文章也是从紫光同创那边拷贝过来的.这个是在线逻辑分析仪调试,和xilinx的也差不多,所以,基本看过就能用了.具体有什么新的功能添加.我就不知道了.我看看,如果有特别的就在用另外的文章写了. 一 ...

  9. 紫光同创国产FPGA学习之Fabric Configuration

    这个是下载软件使用教程.紫光同创的参考文件.哎呦我去,一个下载软件都弄的那么详细.我真的不知道,看到的人啥感想.估计他们更喜欢我自己写的简易教程.估计看晕了,还是先学会下载了,在看文档吧. 一.   ...

最新文章

  1. C/C++指向指针的指针
  2. Android必备:Android的体系结构
  3. 项目管理——WBS工作分解法
  4. 手机版的python-python手机版
  5. boost::gregorian模块实现测试当天的程序
  6. R-FCN/Faster-rcnn使用snapshot继续训练
  7. oracle hibernate 主键,oracle hibernate 主键自增
  8. c语音学习-输入一个小写字母,输出其对应的大写字母
  9. Oracle11g新特性:在线操作功能增强-表增加包含默认值的字段(转载)
  10. 【动态规划】最大子段和问题,最大子矩阵和问题,最大m子段和问题
  11. 如何强制使用某一大小的包去ping某个IP地址?
  12. 软件测试计划包括哪些内容,测试计划如何编写。分享测试计划模板
  13. 固态硬盘用软件测试掉速严重,固态硬盘会不会掉速,得这么测
  14. 计算机标准键盘介绍,电脑键盘简介
  15. 青年计算机技术专家,院士专家热议推动计算机技术自立自强
  16. 小白零基础学习Java编程好学吗?
  17. Windows 上通过 Gitee 搭建 ESP-Who Master 版本的编译环境
  18. linux下各种格式软件的安装(引用http://blog.csdn.net/zyz511919766/article/details/7574040)
  19. 10分钟带你彻底搞懂服务限流和服务降级
  20. CPU Cache 高速缓存

热门文章

  1. 如何利用电容谐振改善PDN阻抗-电源完整性
  2. 争对让望对思野葛对山栀注解_望对思的上句,望对思的上一句是
  3. Mac版docker安装
  4. 跳转到应用商城App详情页
  5. 惠普G80服务器做阵列和安装redhat系统
  6. 防黑客专家-MCK CBS
  7. 【C++】类与对象——第3小节——string 类
  8. ENVI统计值异常问题
  9. PHP 的命令行模式
  10. 拥抱组件化开发,手淘项目内部架构分享