PCIE_DMA实例一:xapp1052详细使用说明

摘要:
将其下载到开发板。请耐心阅读(Address.Wesley.PIC.Express.System.Architecture.eBook LiB.chm)下载地址:使用说明1。打开公司生成器以生成4通道gen2 pcieip核心。其余为默认设置。图1配置1图2配置2图3配置3图4配置4图5 Pcie核心目录2。创建BMD_设计工程。完整的项目文件下载地址(http:

一:前言

很多和我一样初学pcie的硬件工程师都会遇到这样一个问题,看了不少pcie相关的资料,还是搞不清这玩意儿到底该怎么用。于是我们打开ISE的core_generator工具,生成了一个pcie的ip核,用modelsim仿真一下example design,仔细分析一下,好像对协议部分理解更深了。至于怎么用,呵呵……

当然,多数硬件工程师都是有上进心的!于是我们上网找资料,发现了一个xilinx官方出品的demo:xapp1052。全称是Bus Master DMA Performance Demonstration Reference Design for the Xilinx Endpoint PCI Express® Solutions。高大上啊,终于知道用在什么地方了,果断下载下来。打开一看,东西不少,按照里面xapp1052.pdf的说明,一步一步生成bit,下载到开发板里,然后安装上位机软件,最后测试并且用chipscope抓信号分析。但事实上,你愚蠢得连bit都生成不了(遇到相同情况的朋友请默默为我点赞)。就在你干着急的时候,你看到了这篇伟大的博客……接下来,我将手把手教你如何使用这个xapp1052。

二:前期准备

1、pcie基础还是要有,尤其是协议部分。推荐一本电子书,很经典,请耐心读它(Addison.Wesley.PCI.Express.System.Architecture.eBook-LiB.chm)下载地址:http://download.csdn.net/download/yuzeren48/7723815

2、一块开发板,我使用的是Xilinx ML605。

3、一台带PCIE插槽的主机。

4、Xapp1052 Demo(http://download.csdn.net/download/yuzeren48/7723795)

5、ISE14.1套件

三:使用说明

1、打开coregenerator生成一个4通道gen2的pcie ip核,配置部分见下图,尤其注意classcode必须是’h058000,否则无法正常安装驱动。除图中几处需要更改外,其余均为默认设置

PCIE_DMA实例一:xapp1052详细使用说明第1张

图1 配置1

PCIE_DMA实例一:xapp1052详细使用说明第2张

2 配置2

PCIE_DMA实例一:xapp1052详细使用说明第3张

图3 配置3

PCIE_DMA实例一:xapp1052详细使用说明第4张

图4 配置4

PCIE_DMA实例一:xapp1052详细使用说明第5张

图5 Pcie核目录

 

2、建立BMD_Dsign 工程。完整工程文件下载地址(http://download.csdn.net/download/yuzeren48/7723831)。下载需要积分,推荐大家按照以下说明一步一步自己建立。首先打开ise,新建工程,添加文件。文件来自:

..v6_pcie_v1_7source全部

..v6_pcie_v1_7example_design中的xilinx_pcie_2_0_ep_v6_04_lane_gen2_xc6vlx240t-ff1156-1_ML605.ucf和xilinx_pcie_2_0_ep_v6.v

..xapp1052dma_performance_demofpgaBMDcommon全部

..xapp1052dma_performance_demofpgaBMD中的BMD_64_RX_ENGINE.v和BMD_64_TX_ENGINE.v和v6_pci_exp_64b_app.v

然后编译,由于要先编译BMD_PCIE_20.v,所以右键选择manual compile order,如图6所示。

PCIE_DMA实例一:xapp1052详细使用说明第6张

图6 编译工程

选中所有.v和.ucf文件,完成综合以及布局布线,并生成bit文件,如图7所示。

PCIE_DMA实例一:xapp1052详细使用说明第7张

图7 生成bit文件

注意:如果觉得这样编译不舒服,看不清层次结构。可以将BMD_PCIE_20.v删除,并把所有文件中的`ifdef PCIE2_0去掉。

 

3、modelsim仿真

很多人觉得直接把bit写入开发板,用chipscope在线调试即可。小编觉得最好还是先用modelsim做一下仿真,确定逻辑没有问题再烧板子。小编曾好几次烧了错误的bit,用chipscope怎么都抓不到信号。接下来我们讲如何仿真。

首先将..v6_pcie_v1_7example_design文件夹下的文件(除xilinx_pcie_2_0_ep_v6.v以外)全部删除,将..dma_performance_demofpgaBMDcommon下的全部文件以及..dma_performance_demofpgaBMD下的BMD_64_RX_ENGINE.v和BMD_64_TX_ENGINE.v和v6_pci_exp_64b_app.v复制到..v6_pcie_v1_7example_design文件夹下。

然后修改..v6_pcie_v1_7simulationfunctional下的board.f文件,注意BMD_PCIE_20.v必须放在最前面编译,修改后的board.f文件如图8所示:

PCIE_DMA实例一:xapp1052详细使用说明第8张

图8 修改后的board.f

最后,打开Modelsim SE10.1b软件,更改目录至. .v6_pcie_v1_7simulationfunctional

输入脚本do simulate_mti.do 仿真结果如图9图10所示

PCIE_DMA实例一:xapp1052详细使用说明第9张

图9 仿真结果1

PCIE_DMA实例一:xapp1052详细使用说明第10张

图10 仿真结果2

备注:这里的modelsim仿真并没有用到DMA功能,只是测试我们的代码完整性。如果需要仿真DMA功能,可以自己调用pci_exp_usrapp_tx.v中的函数,往DMA控制寄存器中写入地址、长度等数据,然后启动DMA读或者写。

 

4、Chipscopes抓包分析

首先需要在ise工程里添加chipscope核,chipscope的使用方法详见(http://download.csdn.net/download/yuzeren48/7705033),这里给出带有chipscope核的ise工程文件下载地址(http://download.csdn.net/download/yuzeren48/7723831)

插入cdc,生成了bit之后,下载到开发板中,将开发板插入主机的PCIE插槽,上电设备管理器检测到有PCI内存控制器。用xapp1052.pdf中的步骤,强制安装驱动。安装完驱动后打开软件如图11所示

PCIE_DMA实例一:xapp1052详细使用说明第11张

图11 上位机软件

先测试write:

将pattern to write 改成0x01020304,其余保持默认设置。点击start,在chipscope中我们就可以看到DMA控制寄存器一共收到了来自主机的多个数据包,如图12所示(注意,将windows设成8,depth设成8,同时设置触发信号如图13所示)。

PCIE_DMA实例一:xapp1052详细使用说明第12张

图12 主机写DMA控制寄存器

PCIE_DMA实例一:xapp1052详细使用说明第13张

图13 设置触发信号

这些包都是用来写DMA控制寄存器的,这几个包的发包顺序如下:

PCIE_DMA实例一:xapp1052详细使用说明第14张

 当主机向偏移地址为04的寄存器写入0x00000001时,DMA启动写内存模式,如图14所示。(我们可以通过设置触发信号trn_rd的低32位为0x01000000来检测DMA写开始)

PCIE_DMA实例一:xapp1052详细使用说明第15张

图14 DMA写内存 

同样的方法,测试read。我们可以通过DMA来读内存。如图15所示

PCIE_DMA实例一:xapp1052详细使用说明第16张

图15 DMA读内存

 

 

Powered by yuzeren QQ:330853172 Email:yuzeren@mail.ustc.edu.cn
转载自:http://www.cnblogs.com/yuzeren48/p/3896138.html

免责声明:文章转载自《PCIE_DMA实例一:xapp1052详细使用说明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇EF中提示一个或者多个验证出现错误,查看 EntityValidationErrors 详细信息的解决方法JavaScript-Runoob:JavaScript 数据类型下篇

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

相关文章

第144天:PS切图方法总结

一、切图方法分类     PhotoShop从CS版本演变到现在的CC版本,切图功能发生了比较大的变化,我们可以把PhotoShop CS版本时的切图功能称为传统切图,而从PhotoShop CC版本开始PS提出了精准切图。所谓传统切图就是切图人员基本上都是自己分割图层切图,传统切图又分为全手工切图和参考线切图;现在CC版本提出的精准切图,切图人员可以依赖计...

Windows7虚拟化体验之三:XP MODE体验

  XP MODE体验           部署完XP MODE后,我们可 以先来简单地体验一下在Windows 7下运行XP程序的效果。如图1所示,在Windows7的程序组 中找到Windows Virtial PC下的Virtual Windows XP,这个Virtual Windows XP其实就是XP MODE。只要执行Virtual Win...

Android中图表AChartEngine学习使用与例子

很多时候项目中我们需要对一些统计数据进行绘制表格,更多直观查看报表分析结果。基本有以下几种方法: 1:可以进行android  api进行draw这样的话,效率比较低 2:使用开源绘表引擎,这样效率比较高.下面就介绍一种。 AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、...

微信小程序开发中怎么设置转发(分享)的信息

如果什么都不设置,转发时默认名称是小程序的名称,转发的图片显示的是当前页面的截图,如图一 如何在自定义转发信息呢? 在进行转发的页面中: Page({ onShareAppMessage: function () { return { title: '做任务赢积分', imageUrl: '/images...

实现Windows和Linux之间的文件共享

一、windows 向linux共享文件(这里都是以win10和ubuntu为例) 首先,打开网络共享中心。如图1 图1 打开更改高级共享设置(图2) 图 2 选择启用网络发现以及启用文件和打印机共享,然后点击保存更改。 接着,选择你要共享的文件夹,右键选择属性,然后选择共享,选择高级共享,选择权限,分别如图3,图4,图5所示: 图 3 图 4...

二分图的定义及判断

二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A, j in B),则称图G为一个二分图。 二分图的另一种等价的说法是,可以把每个节点着以黑色和白色之一,使得每条边的两个端点颜色不同.不难发现...