运维.售后
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
博客
Blog
ToB门户
了解全球最新的ToB事件
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
大数据
›
数据仓库与分析
›
FPGA搭建XDMA停止模式的PCIE通信架构,简单读写测试,提 ...
FPGA搭建XDMA停止模式的PCIE通信架构,简单读写测试,提供7套工程源码和技 ...
知者何南
金牌会员
|
2024-9-3 11:07:22
|
显示全部楼层
|
阅读模式
楼主
主题
903
|
帖子
903
|
积分
2709
FPGA搭建XDMA停止模式的PCIE通信架构,简单读写测试,提供7套工程源码和技能支持
1、前言
FPGA实现PCIE数据传输近况;
如今基于Xilinx系列FPGA的PCIE通信架构重要有以下2种,一种是简单的、傻瓜式的、易于开发的、对新手友好的XDMA架构,该架构对PCIE协议底层做了封装,并加上了DMA引擎,使得使用的难度大大低落,加之Xilinx提供了配套的Windows和Linux系统驱动和上位机参考源代码,使得XDMA一经推出就让工程师们欲罢不能;另一种是更为底层的、需要设计者有一定PCIE协议知识的、更易于定制化开发的7 Series Integrated Block for PCI Express架构,该IP实现的是PCIe 的物理层、链路层和事务层,提供给用户的是以 AXI4-stream 接口定义的TLP 包,使用该IP 核,需要对PCIe 协议有清楚的理解,特殊是对事务包TLP报文格式;本设计接纳第一种方案,使用XDMA的停止模式实现PCIE通信;本架构既有简单的测速实行,也有视频采集应用;
工程概述
本设计使用Xilinx系列FPGA为平台,调用Xilinx官方的XDMA方案搭建基停止模式下的PCIE通信架构,XDMA的数据缓存有两条通路,一条基于DDR3的大批量数据缓存通路,该条通路一般用作图像、AD数据等缓存,适用于Xilinx Artix7-100T及其以上型号的FPGA;另一条基于BRAM的小批量用户数据缓存通路,该条通路一般用作用户控制数据的缓存,适用于Xilinx Artix7-35T及其以下型号的FPGA,由于资源小;XDMA设置为停止模式,配合手写的XDMA停止模块使用,该停止模块重要负责与用户逻辑交互,指示用户逻辑可以发起停止,并将用户逻辑发起的停止转发给XDMA;用户逻辑侧设置了一个定时器,约莫隔断8ms发起一次XDMA停止;同时提供一套基于X86架构的PC端的PCIE数据读写软件,执行软件可发起对FPGA侧的PCIE数据读写操纵,以验证这套PCIE通信架构的精确性;这套架构设计简单,测试更为简单,不需要上位机的参与,仅仅在CMD中执行一系列指令即可完善测试通信质量,适用于PCIE设计的快速验证和开发;本博客提供7套工程源码,详细如下:
现对上述7套工程源码做如下解释,方便读者理解:
工程源码1
开发板FPGA型号为Xilinx–>Artix7-35T–xc7a35tfgg484-2;FPGA内部设置了一个定时器,隔断8ms产生一次上升沿作为XDMA用户逻辑停止输出给XDMA;XDMA设置了两路数据缓存通道,一条是AXI4-FULL接口的BRAM数据缓存通道,以FPGA内部BRAM作为缓存介质,用于大批量数据传输,另一条是AXI4-Lite接口的BRAM数据缓存通道,以FPGA内部BRAM作为缓存介质,用于少量用户数据传输;使用上位机软件实现XDMA数据读写测试,包罗批量数据和少量用户数据读写,别的还进行XDMA用户停止测试;提供Windows和Linux系统驱动和对应的测试软件;板子PCIE支持PCIE2.0,为2 Lane,XDMA设置为单Lane线速率5GT/s;用于快速搭建并验证基于FPGA_XDMA停止模式的PCIE数据通信架构;
工程源码2
开发板FPGA型号为Xilinx–>Artix7-100T–xc7a100tfgg484-2;FPGA内部设置了一个定时器,隔断8ms产生一次上升沿作为XDMA用户逻辑停止输出给XDMA;XDMA设置了两路数据缓存通道,一条是AXI4-FULL接口的DDR数据缓存通道,以板载的DDR作为缓存介质,用于大批量数据传输,另一条是AXI4-Lite接口的BRAM数据缓存通道,以FPGA内部BRAM作为缓存介质,用于少量用户数据传输;使用上位机软件实现XDMA数据读写测试,包罗批量数据和少量用户数据读写,别的还进行XDMA用户停止测试;提供Windows和Linux系统驱动和对应的测试软件;板子PCIE支持PCIE2.0,为1 Lane,XDMA设置为单Lane线速率5GT/s;用于快速搭建并验证基于FPGA_XDMA停止模式的PCIE数据通信架构;
工程源码3
开发板FPGA型号为Xilinx–>Kintex7–35T–xc7k325tffg676-2;FPGA内部设置了一个定时器,隔断8ms产生一次上升沿作为XDMA用户逻辑停止输出给XDMA;XDMA设置了两路数据缓存通道,一条是AXI4-FULL接口的DDR数据缓存通道,以板载的DDR作为缓存介质,用于大批量数据传输,另一条是AXI4-Lite接口的BRAM数据缓存通道,以FPGA内部BRAM作为缓存介质,用于少量用户数据传输;使用上位机软件实现XDMA数据读写测试,包罗批量数据和少量用户数据读写,别的还进行XDMA用户停止测试;提供Windows和Linux系统驱动和对应的测试软件;板子PCIE支持PCIE2.0,为4 Lane,XDMA设置为单Lane线速率5GT/s;用于快速搭建并验证基于FPGA_XDMA停止模式的PCIE数据通信架构;
工程源码4
开发板FPGA型号为Xilinx–>Zynq7100–xc7z100ffg900-2;FPGA内部设置了一个定时器,隔断8ms产生一次上升沿作为XDMA用户逻辑停止输出给XDMA;XDMA设置了两路数据缓存通道,一条是AXI4-FULL接口的DDR数据缓存通道,以板载的DDR作为缓存介质,用于大批量数据传输,另一条是AXI4-Lite接口的BRAM数据缓存通道,以FPGA内部BRAM作为缓存介质,用于少量用户数据传输;使用上位机软件实现XDMA数据读写测试,包罗批量数据和少量用户数据读写,别的还进行XDMA用户停止测试;提供Windows和Linux系统驱动和对应的测试软件;板子PCIE支持PCIE2.0,为8 Lane,XDMA设置为单Lane线速率5GT/s;用于快速搭建并验证基于FPGA_XDMA停止模式的PCIE数据通信架构;
工程源码5
开发板FPGA型号为Xilinx–>Virtex7–690T–xc7vx690tffg1761-3;FPGA内部设置了一个定时器,隔断8ms产生一次上升沿作为XDMA用户逻辑停止输出给XDMA;XDMA设置了两路数据缓存通道,一条是AXI4-FULL接口的DDR数据缓存通道,以板载的DDR作为缓存介质,用于大批量数据传输,另一条是AXI4-Lite接口的BRAM数据缓存通道,以FPGA内部BRAM作为缓存介质,用于少量用户数据传输;使用上位机软件实现XDMA数据读写测试,包罗批量数据和少量用户数据读写,别的还进行XDMA用户停止测试;提供Windows和Linux系统驱动和对应的测试软件;板子PCIE支持PCIE3.0,为8 Lane,XDMA设置为单Lane线速率5GT/s;用于快速搭建并验证基于FPGA_XDMA停止模式的PCIE数据通信架构;
工程源码6
开发板FPGA型号为Xilinx–>Kintex UltraScale–xcku040-ffva1156-2-i;FPGA内部设置了一个定时器,隔断8ms产生一次上升沿作为XDMA用户逻辑停止输出给XDMA;XDMA设置了两路数据缓存通道,一条是AXI4-FULL接口的DDR数据缓存通道,以板载的DDR作为缓存介质,用于大批量数据传输,另一条是AXI4-Lite接口的BRAM数据缓存通道,以FPGA内部BRAM作为缓存介质,用于少量用户数据传输;使用上位机软件实现XDMA数据读写测试,包罗批量数据和少量用户数据读写,别的还进行XDMA用户停止测试;提供Windows和Linux系统驱动和对应的测试软件;板子PCIE支持PCIE3.0,为8 Lane,XDMA设置为单Lane线速率5GT/s;用于快速搭建并验证基于FPGA_XDMA停止模式的PCIE数据通信架构;
工程源码7
开发板FPGA型号为Xilinx–>Kintex UltraScale–xcku060-ffva1156-2-i;FPGA内部设置了一个定时器,隔断8ms产生一次上升沿作为XDMA用户逻辑停止输出给XDMA;XDMA设置了两路数据缓存通道,一条是AXI4-FULL接口的DDR数据缓存通道,以板载的DDR作为缓存介质,用于大批量数据传输,另一条是AXI4-Lite接口的BRAM数据缓存通道,以FPGA内部BRAM作为缓存介质,用于少量用户数据传输;使用上位机软件实现XDMA数据读写测试,包罗批量数据和少量用户数据读写,别的还进行XDMA用户停止测试;提供Windows和Linux系统驱动和对应的测试软件;板子PCIE支持PCIE3.0,为8 Lane,XDMA设置为单Lane线速率5GT/s;用于快速搭建并验证基于FPGA_XDMA停止模式的PCIE数据通信架构;
本文详细描述了FPGA基于XDMA停止模式的PCIE通信架构,简单读写测试的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校门生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的高速接口领域;
提供完整的、跑通的工程源码和技能支持;
工程源码和技能支持的获取方式放在了文章末端,请耐心看到末了;
免责声明
本工程及其源码即有自己写的一部门,也有网络公开渠道获取的一部门(包罗CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,克制用于贸易用途,若由于读者或粉丝自身原因用于贸易用途所导致的法律题目,与本博客及博主无关,请审慎使用。。。
2、相干方案推荐
我已有的PCIE方案
我的主页有PCIE通信专栏,该专栏基于XDMA的轮询模式实现与QT上位机的数据交互,既有基于RIFFA实现的PCIE方案,也有基于XDMA实现的PCIE方案;既有简单的数据交互、测速,也有应用级别的图像采集传输,以下是专栏地址:
点击直接前去
别的,我的主页有停止模式的PCIE通信专栏,该专栏基于XDMA的停止模式实现与QT上位机的数据交互,以下是专栏地址:
点击直接前去
别的,另有基于RIFFA架构的PCIE通信专栏,以下是专栏地址:
点击直接前去
3、PCIE底子知识
PCIe 总线架构与以太网的 OSI 模型雷同,是一种分层协议架构,分为事务层(Transaction Layer)、数据链路层(Data Link Layer) 和物理层(Physical Layer)。这些层中的每一层都分为两部门:一部门处理出站(要发送的)信息,另一部门处理入站(吸收的)信息,如下图:
事务层
事务层的重要责任是事务层包 TLP(Transaction Layer Packet)的组装和拆卸。事务层吸收来自 PCIe 设备核心层的数据,并将其封装为 TLP。TLP 用于传达事务,例如读取和写入,以及确定事件的类型。事务层还负责管理 TLP 的基于名誉的流控制。每个需要响应数据包的请求数据包都作为拆分事务实现。每个数据包都有一个唯一标识符,该标识符使响应数据包可以定向到精确的始发者。数据包格式支持不同形式的寻址,详细取决于事务的类型(内存、I/O、设置和消息)。数据包可能还具有诸如 No Snoop、Relaxed Ordering 和基于 ID 的排序(IDO)之类的属性。事务层支持四个地址空间:包罗三个 PCI 地址空间(内存、I/O 和设置)并添加消息空间。该规范使用消息空间来支持所有先前 PCI 的边带信号,例如停止、电源管理请求等,作为带内消息事务。
数据链路层
数据链路层充当事务层和物理层之间的中心阶段。数据链路层的重要职责包罗链路管理和数据完整性,包罗错误检测和错误纠正。数据链路层的发送方接受事务层组装的 TLP,盘算并应用数据保护代码和 TLP序列号,以及将它们提交给物理层以在链路上传输。吸收数据链路层负责查抄吸收到的 TLP 的完整性,并将它们提交给事务层以进行进一步处理。在检测到 TLP 错误时,此层负责请求重发 TLP,直到精确吸收信息或确定链路失败为止。数据链路层还生成并使用用于链路管理功能的数据包。为了将这些数据包与事务层(TLP)使用的数据包区分开,当指代在数据链路层生成和使用的数据包时,将使用术语“数据链路层数据包(DLLP)”。
物理层
PCIe 总线的物理层为 PCIe 设备间的数据通信提供传送介质,为数据传送提供可靠的物理环境。物理层包罗用于接口操纵的所有电路,包罗驱动器和输入缓冲器、并行至串行和串行至并行转换、PLL 和阻抗匹配电路。它还包罗与接口初始化和维护有关的逻辑功能。物理层以实现特定的格式与数据链路层交换信息。该层负责将从数据链路层吸收的信息转换为得当的序列化格式,并以与毗连到链路另一端的设备兼容的频率和通道宽度在 PCI Express 链路上传输该信息。物理层是 PCIe 体系结构最紧张,也是最难以实现的组成部门(该层对用户透明,开发 PCIe 步伐时无需关心)。PCIe 总线的物理层定义了 LTSSM (Link Training and Status State Machine)状态机,PCIe 链路使用该状态机管理链路状态,并进行链路练习、链路恢复和电源管理。PCIe 总线使用端到端的毗连方式,在一条PCIe 链路的两端只能各毗连一个设备,这两个设备互为数据发送端和数据吸收端。由于 PCIe 是支持全双工通信的,所以发送端和吸收端中都含有TX (发送逻辑) 和RX (吸收逻辑)。在PCIe 总线的物理链路的一个数据通路(Lane) 中,有两组差分信号,共4 根信号线组成。此中发送端的TX 与吸收端的RX 使用一组差分信号毗连,该链路也被称为发送端的发送链路,也是吸收端的吸收链路;而发送端的RX 与吸收端的TX 使用另一组差分信号毗连,该链路也被称为发送端的吸收链路,也是吸收端的发送链路。一个PCIe 链路可以由多个Lane 组成。如今PCIe 链路可以支持1、2、4、8、12、16 和32 个Lane,即×1、×2、×4、×8、×12、×16 和×32 宽度的PCIe 链路。每一个Lane 上使用的总线频率与PCIe 总线使用的版本相干。
4、工程详细设计方案
工程设计原理框图
工程设计原理框图如下:
XDMA设置及使用
根据Xilinx官方手册,XDMA框图如下:
由图可知,XDMA封装了Integrated Block for PCI Express IP,不仅完成了事务层的组包解包,还添加了完整的 DMA 引擎;XDMA 一般环境下使用AXI4 接口,AXI4 接口可以参加到系统总线互联,适用于大数据量异步传输,而且通常环境下使用 XDMA 都会使用到 BRAM 或 DDR 内存;AXI4-Stream 接口适用于低延迟数据流传输。XDMA 允许在主机内存和 DMA 子系统之间移动数据。它通过对包含有关要传输的数据的源、目标和数量的信息的“描述符”进行操纵来实现此目的。这些直接内存传输既可以用于主机到卡(Host to Card,H2C)的传输,也可以用与卡到主机(Card to Host,C2H)的传输。可以将 DMA 设置为由所有通道共享一个 AXI4 Master 接口,或者为每个启用的通道提供一个 AXI4-Stream 接口。内存传输是基于每个通道的描述符链接列表指定的,DMA 从主机内存和进程中获取这些链接列表。诸如描述符完成和错误之类的事件通过停止来发出信号。XDMA 还提供多达 16 条用户停止线,这些停止线会向主机生成停止。本设计需要设置为停止模式;如下图:
XDMA详情参考《AXI Bridge for PCI Express Gen3 Subsystem Product Guide(PG194)》;
XDMA停止模块
XDMA停止模块和XDMA IP配合使用,XDMA停止模块重要执行两个任务,一是获取XDMA的状态,输出用户停止使能信号,以指示用户此时可以发起停止,该任务通过AXI_Lite接口与XDMA毗连,其从机地址受PC端软件控制;二是转发用户停止给XDMA,当用户侧检测到XDMA处于可接受停止状态时,用户逻辑可以发起停止,XDMA停止模块将此停止转发给XDMA IP;将模块直接拖入Block Design中,显示如下:
数据缓存架构
如果你的FPGA资源够大,且传输的数据是大批量的,则选择DDR架构的数据缓存架构,好比传输图像、AD数据等等;如果你的FPGA资源不够大(如Artix7-35T以及一下型号),且传输的数据是小批量的,则选择BRAM架构的数据缓存架构,好比传输PCIE控制信息等;工程中将两种架构都设计了,以便于用户在根据自身FPGA开发板移植时具有选择性;如下:
用户逻辑
用户逻辑的作用就是发起停止,设置了一个定时器,约莫隔断8ms发起一次XDMA停止;当然这只是做测试,如果是详细的数据传输则需要灵活改变,好比传输图像时,可以一帧图像传输完成作为发起停止的条件;在后续发布的博客中会有相应的先容;核心代码如下:
Windows版本XDMA驱动安装
提供Windows和Linux系统驱动,本章节先容Windows下XDMA驱动安装;
Windows下驱动安装步调如下:
友情提示,Windows下驱动秩序安装一次即可;
第一步:使系统禁用署名并进入测试模式,方法如下:
也可百度其他方法实现上述目的,完成后电脑屏幕右下角应有如下显示:
第二步:定位到驱动目次下,提供Windows7和Windows10两个版本驱动,由于我的电脑选择Windows10,如下:
单击鼠标右键安装即可,如下:
第三步:下载FPGA工程bit到FPGA开发板,然后重启电脑,打开我的电脑–>管理–>设备管理器,应看到如下设备:
Linux版本XDMA驱动安装
提供Windows和Linux系统驱动,本章节先容Linux下XDMA驱动安装;
Linux下驱动安装步调如下:
友情提示,Linux下,每次下载FPGA bit后都需要重启电脑才气安装驱动;
进入到Linux驱动目次下,一次执行以下两条指令即可安装,如下:
• 驱动编译终端指令:make -j8
•驱动安装终端指令:sudo insmod xdma.ko
测试应用步伐
测试应用步伐由编译XDMA驱动时主动生成,Windows版本驱动测试应用步伐位置如下:
Linux版本驱动测试应用步伐位置如下:
该测试步伐重要测试内容包罗XDMA大批量数据读写测试、XDMA小批量用户数据读写测试、XDMA停止测试等;详细测试方法参考反面的《上板调试》章节;
工程源码架构
提供7套工程源码,以工程源码2为例,工程Block Design设计如下:
提供7套工程源码,以工程源码2为例,综合后的工程源码架构如下:
PCIE上板调试注意事项
1:必须先安装本博提供的XDMA驱动,详情请参考第4章节的《XDMA驱动及其安装》,Windows版本驱动只需安装一次;
2:Windows版本下载FPGA工程bit后需要重启电脑,电脑才气辨认到XDMA驱动;步伐固化后也需要重启电脑;Linux版本每次载FPGA工程bit后都需要重启电脑,都需要安装XDMA驱动;
3:FPGA板卡插在主机上后一般不需要额外供电,如果你的板子元器件较多功耗较大,则需要额外供电,详情咨询开发板厂家,当然,找我买板子的客户可以直接问我;
4:PCIE调试需要电脑主机,但笔记本电脑理论上也可以外接出来PCIE,详情百度自行搜索一下,电脑主机PCIE插槽不方便操纵时可以使用延长线接出来,某宝有卖;
5、vivado工程源码1详解–>Artix7-35T-PCIEX2版本
开发板FPGA型号:Xilinx–Artix7–xc7a35tfgg484-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
PCIE详情:PCIE2.0版本,X2,5GT/s单lane线速率;
PCIE底层方案:XDMA,停止模式,设置4条用户停止;
数据缓存架构:BRAM;
实现功能:FPGA搭建XDMA停止模式的PCIE通信架构下的简单读写测试;
工程作用:此工程目的是让读者把握FPGA搭建XDMA停止模式的PCIE通信架构的设计本领,以便可以或许移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
6、vivado工程源码2详解–>Artix7-100T-PCIEX1版本
开发板FPGA型号:Xilinx–Artix7–xc7a100tfgg484-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
PCIE详情:PCIE2.0版本,X1,5GT/s单lane线速率;
PCIE底层方案:XDMA,停止模式,设置4条用户停止;
数据缓存架构:DDR3+BRAM;
实现功能:FPGA搭建XDMA停止模式的PCIE通信架构下的简单读写测试;
工程作用:此工程目的是让读者把握FPGA搭建XDMA停止模式的PCIE通信架构的设计本领,以便可以或许移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
7、vivado工程源码3详解–>Kintex7-35T-PCIEX4版本
开发板FPGA型号:Xilinx-Kintex7–35T–xc7k325tffg676-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
PCIE详情:PCIE2.0版本,X4,5GT/s单lane线速率;
PCIE底层方案:XDMA,停止模式,设置4条用户停止;
数据缓存架构:DDR3+BRAM;
实现功能:FPGA搭建XDMA停止模式的PCIE通信架构下的简单读写测试;
工程作用:此工程目的是让读者把握FPGA搭建XDMA停止模式的PCIE通信架构的设计本领,以便可以或许移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
8、vivado工程源码4详解–>Zynq7100-PCIEX8版本
开发板FPGA型号:Xilinx–Zynq7100–xc7z100ffg900-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
PCIE详情:PCIE2.0版本,X8,5GT/s单lane线速率;
PCIE底层方案:XDMA,停止模式,设置4条用户停止;
数据缓存架构:DDR3+BRAM;
实现功能:FPGA搭建XDMA停止模式的PCIE通信架构下的简单读写测试;
工程作用:此工程目的是让读者把握FPGA搭建XDMA停止模式的PCIE通信架构的设计本领,以便可以或许移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
9、vivado工程源码5详解–>Virtex7-690T-PCIEX8版本
开发板FPGA型号:Xilinx–690T–xc7vx690tffg1761-3;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
PCIE详情:PCIE3.0版本,X8,5GT/s单lane线速率;
PCIE底层方案:XDMA,停止模式,设置4条用户停止;
数据缓存架构:DDR3+BRAM;
实现功能:FPGA搭建XDMA停止模式的PCIE通信架构下的简单读写测试;
工程作用:此工程目的是让读者把握FPGA搭建XDMA停止模式的PCIE通信架构的设计本领,以便可以或许移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
10、vivado工程源码6详解–>KU040-PCIEX8版本
开发板FPGA型号:Xilinx–Kintex UltraScale–xcku040-ffva1156-2-i;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
PCIE详情:PCIE3.0版本,X8,5GT/s单lane线速率;
PCIE底层方案:XDMA,停止模式,设置4条用户停止;
数据缓存架构:DDR4+BRAM;
实现功能:FPGA搭建XDMA停止模式的PCIE通信架构下的简单读写测试;
工程作用:此工程目的是让读者把握FPGA搭建XDMA停止模式的PCIE通信架构的设计本领,以便可以或许移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
11、vivado工程源码7详解–>KU060-PCIEX8版本
开发板FPGA型号:Xilinx–Kintex UltraScale–xcku060-ffva1156-2-i;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
PCIE详情:PCIE3.0版本,X8,5GT/s单lane线速率;
PCIE底层方案:XDMA,停止模式,设置4条用户停止;
数据缓存架构:DDR4+BRAM;
实现功能:FPGA搭建XDMA停止模式的PCIE通信架构下的简单读写测试;
工程作用:此工程目的是让读者把握FPGA搭建XDMA停止模式的PCIE通信架构的设计本领,以便可以或许移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
12、工程移植说明
vivado版本不同等处理
1:如果你的vivado版本与本工程vivado版本同等,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
3:如果你的vivado版本高于本工程vivado版本,办理如下:
打开工程后会发现IP都被锁住了,如下:
此时需要升级IP,操纵如下:
FPGA型号不同等处理
如果你的FPGA型号与我的不同等,则需要更改FPGA型号,操纵如下:
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;
其他注意事项
1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行设置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新设置;
2:根据你自己的原理图修改引脚束缚,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;
13、上板调试验证
准备工作
需要准备的器材如下:
FPGA开发板,没有开发板可以找本博提供;
带PCIE卡槽的电脑主机;
我的开发板了毗连如下:
XDMA大批量数据读写测试演示
XDMA大批量数据通过XDMA的AXI4-FULL接口传输,一般毗连到FPGA的MIG到板载DDR3,FPGA逻辑资源有限时也可毗连至BRAM;
打开Windows CMD指令框,进入XDMA测试步伐目次,并检察测试步伐指令用法,如下:
• 操纵指令:xdma_rw.exe
批量数据写操纵测试:
使用 h2c_0 设备以二进制的形式读取文件 datafile4k.bin 写入到 BRAM 内存地址 0x0000000 长度为 4096 字节,如下:
• 操纵指令:xdma_rw.exe h2c_0 write 0x0000000 -b -f datafile4K.bin -l 4096
对应的Linux下的测试指令如下:Linux下的测试需要进入root账户模式
• 操纵指令:./dma_from_device -d /dev/xdma0_c2h_0 -f ./test.bin -s 4096 -a 0 -c 1
批量数据读操纵测试:
使用 c2h_0 设备从BRAM 内存地址 0x0000000 读取长度为 4096 字节数据,并写入到datafile4K_recv.bin中保存;如下:
• 操纵指令:xdma_rw.exe c2h_0 read 0x0000000 -b -f datafile4K_recv.bin -l 4096
对应的Linux下的测试指令如下:Linux下的测试需要进入root账户模式
• 操纵指令:./dma_to_device -d /dev/xdma0_h2c_0 -f ./test.bin -s 4096 -a 0 -c 1
您可以使用winhex等软件来查抄一下datafile4k.bin和datafile4K_recv.bin这两个文件数据是否同等;
XDMA小批量用户数据读写测试演示
XDMA小批量用户数据通过XDMA的AXI4-Lite接口传输,一般毗连到FPGA内置的BRAM;
小批量用户数据写操纵测试:
向 BRAM 内存地址 0x10000写入0x11和0x22两个数据,如下:
• 操纵指令:xdma_rw.exe user write 0x10000 0x11 0x22
小批量用户数据读操纵测试:
从 BRAM 内存地址 0x10000依次读出两个数据并打印,如下:
• 操纵指令:xdma_rw.exe user read 0x10000 -l 2
XDMA用户停止测试演示
XDMA用户停止测试为测试用户停止的专用测试软件,如下:
• 操纵指令:xdma_event.exe
对应的Linux下的测试指令如下:Linux下的测试需要进入root账户模式
• 操纵指令:sudo ./pcie_irq
14、福利:工程代码的获取
福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末端的V名片。
网盘资料如下:
别的,有很多朋侪给本博主提了很多意见和建议,盼望能丰富服务内容和选项,由于不同朋侪的需求不一样,所以本博主还提供以下服务:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
知者何南
金牌会员
这个人很懒什么都没写!
楼主热帖
SQLServer数据库基础教程
开源二三事|ShardingSphere 与 Databa ...
Sqlserver创建用户并授权
Oracle调度器Scheduler
「笔记」某移动SRE运维体系交流 ...
华为再次登上央视!鸿蒙系统3.0今年上 ...
Kubernetes(K8S) Controller - Statefu ...
这个简单的小功能,半年为我们产研团队 ...
ESP32-C3 学习测试 蓝牙 篇(六、添加 ...
我眼中的大数据(三)——MapReduce ...
标签云
存储
服务器
快速回复
返回顶部
返回列表