转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试

摘要:
XDMAIP使用部分教程分LINUX篇和WINDOWS篇两个部分。通过实战,面向应用,提供给大家XILINXFPGAPCIE应用解决方案。本教程以MK7160FA作为样机测试。这是一款高性价比的FPGA开发板。而M_AXI_LITE挂载的BRAM是需要进行BAR空间操作,所以地址设置为0x80000000
摘要: 这一章开始主要介绍 XILINX FPGA PICE IP XDMA IP的使用。XDMA IP使用部分教程分LINUX 篇和WINDOWS篇两个部分。通过实战,面向应用,提供给大家 XILINX FPGA PCIE 应用解决方案。

软件版本:VIVADO2017.4

操作系统:WIN7/WIN10 64bit

硬件平台:XILINXFPGA MK7160FA

米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!!

1.1 课程介绍

这一章开始主要介绍XILINX FPGA PICE IP XDMAIP的使用。XDMA IP使用部分教程分LINUX 篇和WINDOWS篇两个部分。通过实战,面向应用,提供给大家 XILINX FPGA PCIE 应用解决方案。

本教程以MK7160FA作为样机测试。在正式开始教程内容前,有必要把MK7160FA开发板的特点说明下。这是一款高性价比的FPGA开发板。带PCIE接口,四路SFP光通信接口,双路千兆以太网口,1路HDMI输入,1路HDMI输出,1路串口,1路USB3.0接口。支持MSXBO(米联客)FEP标准扩展接口。采用的CPU型号为XC7K160t-FGG676。PL端搭载64bit 2GB DDR3内存,FPGA读写PL端DDR支持的最大数据时钟为1600M,可以进行更多复杂的开发任务。

教程的内容完全适合其他开发板。如果读者使用过程中遇到问题,可以在我们讨论课程网页留言(米联客(MSXBO)论坛www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问)。我们会在论坛上公布相关课程内容和源码。

1.2 XDMA 概述

Xilinx 提供的DMASubsystem for PCIExpressIP是一个高性能,可配置的适用于PCIE2.0,PCIE3.0 的SG 模式DMA,提供用户可选择的AXI4 接口或者AXI4-Stream接口。一般情况下配置成AXI4 接口可以加入到系统总线互联,适用于大数据量异步传输,通常情况都会使用到DDR,AXI4-Stream 接口适用于低延迟数据流传输。

XDMA 是SGDMA,并非Block DMA,SG 模式下,主机会把要传输的数据组成链表的形式,然后将链表首地址通过BAR 传送给XDMA,XDMA 会根据链表结构首地址依次完成链表所指定的传输任务。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第1张

1.3 XDMA 提供如下接口:

  • AXI4、AXI4-Stream,必须选择其中一个,用来数据传输
  • AXI4-Lite Master,可选,用来实现PCIE BAR 地址到AXI4-Lite 寄存器地址的映射,可用来读写用户逻辑寄

存器

  • AXI4-Lite Slave,可选,用来将XDMA 内部寄存器开放给用户逻辑,用户逻辑可以通过此接口访问XDMA

内部寄存器,不会映射到BAR

  • AXI4 Bypass 接口,可选,用来实现PCIE 直通用户逻辑访问,可用于低延迟数据传输

1.4 XDMA IP 配置

Mode:配置模式,选择Advanced 高级配置

Lane Width:MK7160FA 支持X4

Max Link Speed:选择5.0GT/s 即PCIE2.0

Reference Clock :100MHZ,参考时钟100M

DMA Interface Option:接口选择AXI4 接口

AXI Data Width:128bit,即AXI4 数据总线宽度为128bit

AXI Clock :125M,即AXI4 接口时钟为125MHZ

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第2张

PCIE ID 配置

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第3张

PCIE BAR 配置,这里面的配置比较重要

首先使能PCIE to AXI Lite Master Interface ,这样可以在主机一侧通过PCIE 来访问用户逻辑侧寄存器或者其他AXI4-Lite 总线设备

映射空间选择1M,当然用户也可以根据实际需要来自定义大小。

PCIE to AXI Translation:这个设置比较重要,通常情况下,主机侧PCIE BAR 地址与用户逻辑侧地址是不一样的,这个设置就是进行BAR 地址到AXI 地址的转换,比如主机一侧BAR 地址为0,IP 里面转换设置为0x80000000,则主机访问BAR 地址0 转换到AXI LIte 总线地址就是0x80000000

DMA Bypass 暂时不用

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第4张

PCIE 中断设置

User Interrupts:用户中断,XDMA 提供16 条中断线给用户逻辑,这里面可以配置使用几条中断线。

Legacy Interrupt:XDMA 支持Legacy 中断

选择MSI 中断

注意:MSI 中断和MSI-X 中断只能选择一个,否则会报错,如果选择了MSI 中断,则可以选择Legacy 中断,如果选择了MSI-X 中断,那么MSI 必须取消选择,同时Legacy 也必须选择None。此IP 对于7 系列设置有这么个问题,如果使用Ultrascale 系列,则可以全部选择转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第5张

配置DMA 相关内容

Number of DMA Read Channel(H2C)和Number of DMA Write Channel(C2H)通道数,对于PCIE2.0 来说最大只能选择2,也就是XDMA 可以提供最多两个独立的写通道和两个独立的读通道,独立的通道对于实际应用中有很大的作用,在带宽允许的前提前,一个PCIE 可以实现多种不同的传输功能,并且互不影响。这里我们选择1

Number of Request IDs for Read (Write)channel :这个是每个通道设置允许最大的outstanding 数量,按照默认即可

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第6张

配置完成以后,点击Run Block Auto,可以看到之前的配置信息,如果有发现和目标配置不一样的,需要手动修改,点击OK,完成配置

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第7张

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第8张

配置完成以后,VIVADO 会自动进行必要的连接

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第9张

到此为止,XDMA IP 配置就完成了只要再进行时钟和GTP约束即可。

1.5 MIG 7 SERIES 的配置

Step1:任单击 IP Catalog,选取 Memory Interface Generator(MIG 7 series)IP 添加到 Block design。双击 MIG 7 SERIES ,对这个 IP 进行配置。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第10张

双击生成的IP核

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第11张

选择Create Design 单击NEXT

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第12张

继续单击NEXT

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第13张

选择DDR3 单击NEXT

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第14张

设置MIG 内核时钟频率、内存型号、内存的数据位宽

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第15张

设置MIG AXI4 最大支持的位宽,对4于片DDR 最大位宽为512bit

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第16张

设置输入频率为200M

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第17张

系统和参考时钟时钟选择no buffer,MIG低电平复位

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第18张

Step9:终端阻抗选择40hms,设置DCI

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第19张

选择Fixed Pin Out

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第20张

根据原理图手动填写PIN 脚定义,或者选择Read XDC/UCF直接读入pin脚定义,本课程下提供了MK7160FA.ucf 的DDR 配置文件,直接读入既可。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第21张

填写完成后,先单击Validate再单击NEXT

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第22张

继续单击NEXT

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第23张

继续单击NEXT

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第24张

继续单击NEXT

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第25张

继续单击NEXT

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第26张

最后单击Generate,至此MIG的配置完成

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第27张

1.6基础测试系统搭建

我们的测试目标是进行PCIE AXI4总线与外设进行读写操作,PCIE AXI4-Lite 总线进行用户逻辑寄存器或者其他AXI4-Lite 总线设备访问操作。AXI4总线上挂载到MIG控制器DDR上去,实现对DDR的读写控制。

为此搭建系统为下图所示:

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第28张

进行地址分配:

这里我们把挂在M_AXI上的DDR地址分配从0开始(对于widnows系统必须为0), M_AXI是需要进行DMA操作的。而M_AXI_LITE挂载的BRAM是需要进行BAR空间操作,所以地址设置为0x80000000和XMDA IP里面设置的地址对应。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第29张

1.7WIN7/WIN10系统下开发环境搭建

请用户在我们提供的网盘里面下载 VS2015,WINSDK,WDK 开发包,这是经过我们验证的,如果 SDK 和

WDK 版本不匹配会造成编译失败。

首先是 VS2015 的安装,如果已经安装了 VS2010,或者其他版本,建议先进行卸载,卸载过程不要使用 360

等软件工具卸载,而是使用 VS 自带的卸载工具(注意:操作过程中可能会出现问题,导致该系统无论如何都无法

编译程序,本教程不对此情况负责,我们测试宿主机是一台刚刚安装了 WIN7/WIN10 系统的机器,为了避免因搭建环境而造成宿主机原系统算坏的情况,建议用户可以花几十块钱购买一块 320G 以下的硬盘,在新硬盘安装系统搭建环境测试)

大家请注意软件的安装顺序一定要是先安装vs2015再安装WINSDK,最后安装WDK。如果一不小心顺序错了,卸载干净后重新安装,否则肯定不会成功的。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第30张

这里一定要选择自定义,默认情况下是不安装 VC++语言的,不知道VS 是怎么搞的。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第31张

然后在编程语言里面勾选 vc++,vs2015 更新 3 也勾选上,否则也可能造成编译错误,这些错误主要是由于版本匹配问题引起的。下面就是一路安装,不多说了。安装好以后,记得去百度搜个序列号,你们懂得。

下面安装WINSDK。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第32张

最后安装WDK

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第33张

接下来还有一项重要的设置,根据官方文档的说法,XDMA 的驱动没有提供一个验证过的证书,所以必须使用

测试模块才能安装驱动。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第34张

打开上面的连接,可以看到使用如下命令可以开关测试模式。

另外也可以采用禁用驱动签名的办法来安装没有签名的驱动,禁用驱动签名的办法,下面我们也会演示。首先还是采用测试模式下进行。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第35张

bcdedit /set testsigning on 打开测试模式

bcdedit /set testsigning off 关闭测试模式

在 WIN7/WIN10 系统下打开终端,一定要使用管理员权限

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第36张

显示操作成功,电脑重启,可以在桌面的右下角看到,系统进入测试模式。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第37张

1.8 WIN7/WIN10下驱动程序编译以及安装

1.8.1 驱动编译(如果不想编译可以跳过)

Xilinx 提供的XDMA 驱动源码,直接编译可能会由于WPP 的原因导致编译失败,WPP 是驱动调试功能,用户可以自行修改,本教程中不使用 WPP 功能,同时对驱动源码进行了一些修改,可以直接使用,请参考我们提供的工程。工程文件如下:

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第38张

driver 里面是驱动源码,其他项目都是应用程序。拿到工程以后,先进行清理,然后进行编译。转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第39张

编译成功。然后可以在如下目录里面看到生成的驱动文件

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第40张

可以在如下目录看到生成的应用程序文件

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第41张

1.8.2 驱动安装

和纯FPGA的开发板不一样,ZYNQ一定要先用SDK烧录程序,烧写完成之后重启电脑,打开设备管理器,可以看到被识别倒是未驱动的PCIE 设备。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第42张

接下来进行驱动的安装,首先安装证书文件,XDMA.cer,双击安装即可。然后在设备管理器里面选择PCIE 设备,右击

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第43张

更新驱动程序软件,选择浏览计算机查找驱动程序

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第44张

选择生成驱动的 sys 目录下面的 XDMA 目录

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第45张

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第46张

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第47张

到此,PCIE 驱动就安装完毕了。

1.9 WIN7/WIN10下 XDMA 应用程序测试

我们打开一个终端(如果双击运行会很快退出来),进入到上一节编译生成的应用程序目录找到xdma_rw.exe,这个应用程序是操作 pcie 的所有设备的,我们在终端只输入xdma_rw.exe,可以看到提示信息,告诉用户这个程序如何使用

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第48张

可以看到在当前目录有一个datafile4k.bin文件,那就测试一下将这个文件传输到 FPGA(BRAM),然后读出来。首先在终端输入指令:xdma_rw.exe h2c_0 write 0x0000000 -b -f datafile4K.bin -l 4096 意思就是使用h2c_0 设备以二进制的形式读取文件datafile4k.bin写入到BRAM内存地址0x0000000长度为4096字节。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第49张

接下来再读回来,使用命令 xdma_rw.exe c2h_0 read 0x0000000 -b -f datafile4K_recv.bin -l 4096

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第50张

接下来我们可以使用 winhex 等软件来检查一下两个文件数据是否一直,经过检查,是一致的则说明传输功能正常。

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试第51张

免责声明:文章转载自《转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# Winform Treeview控件Oracle11g温习-第七章:redo日志下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于第三方开源库的OPC服务器开发指南(2)——LightOPC的编译及部署

前文已经说过,OPC基于微软的DCOM技术,所以开发OPC服务器我们要做的事情就是开发一个基于DCOM的EXE文件、一个代理/存根文件,然后就是写一个OPC客户端测试一下我们的服务器了。对于第一项工作,我们需要借助一个俄罗斯大神开源的OPC开发库——LightOPC展开。不过,从LightOPC的主网站看,这个库已经许久没更新了,时间定格在了2004年:...

大家是怎么做APP接口的版本控制的?欢迎进来看看我的方案。升级版的Versioning

背景 APP不同于网站,网站程序一发版,所有用户看到的都是最新的页面、调用最新的接口,没有新老版本一说。APP一旦下载到用户手机上,用户不更新你拿他一点办法都没有,但是随着业务的调整,同一个接口的请求参数和输出JSON有变化的话,就需要考虑老版本的兼容问题了。 举个例子:某APP的1.0.0版,服务端用户信息接口(api/User/UserInfo)输出的...

WEB接口测试之Jmeter接口测试自动化 (二)(数据分离)

转载: http://www.cnblogs.com/chengtch/p/6105231.html 通过逐个录入的方式,好不容易将需要测试几十个接口的300多个测试用例录入sampler-http请求中,固定的测试环境跑起来也还 感觉良好。不料在新服务器环境中跑用例时,问题来了:修改参数维护脚本等成本太大! 脚本参数是写死的,修改起来得一个个请求打开来...

Web安全漏洞及攻击

背景介绍 先说一个在互联网上常见,但是普通人又不太理解的东西--“验证码”。 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:...

[Java] HOW2J(Java中级)

异常 定义:导致程序正常流程被中断的事件 异常处理常见手段 try catch:将可能抛出异常的代码放在try的块中,一旦出现异常就跳转到catch的块中处理 throws/throw:不在本模块处理异常,而是交给调用者处理 finally:无论是否出现异常,都会执行(保证能正常结束) 使用异常的父类进行catch:可以,但可能不精确 多异常捕捉:...

(转)仅供个人学习-接口测试工具:jmeter、postman、soapUI的区别

1.  用例组织方式 首先是用例组织方式的不同,不同的目录结构与组织方式代表不同工具的测试思想,学习一个测试工具应该首先了解其组织方式。 SoapUI的组织方式如下图,最上层是WorkSpace,每个窗口只可以打开一个WorkSpace(这是一个xml文件),每个Project也是一个单独的xml文件(为了协同工作,也可以通过设置将其转化为一堆文件集合),...