基于xilinx公司ZC706开发板的XDMA_PCIE接口设计。

基于xilinx公司ZC706开发板的XDMA_PCIE接口设计。

笔者主要是以自己的亲身经历介绍自己初学PCIE接口时的一些经验和碰到的一些问题。
开发环境:vivado2017.4;台式机电脑(含有PCIE接口)一台;ZC706可开发板一块
首先,拿到xilinx的ZC706开发板后,第一步要先熟悉整个开发板的各个功能模块,知道自己需要使用的是开发板的哪个模块。第二步的基本工作是去xilinx公司的官网上下载官方GPIO_PCIE的程序,先把整个硬件搭建起来,确认程序加载和调试整个流程没有问题,保证后期的开发不会出现一些低级问题。以上所说的材料,都可以在一下网站上下载:xlinx官方开发板ZC706的一些资料。其中需要注意的有ZC706开发板的硬件资料——包括开发板原理图和管教约束文件:ZC706开发板的硬件原理图和管教约束.xdc
官网GPIO_PCIE例程和使用说明,读者只需要按照说明把这个程序调通,后面就可以正式进行XDMA_PCIE开发了。
GPIO_PCIE官方例程
注意该例程中需要使用的调试助手pcitree只能在32位系统中使用(比较坑)所以笔者准备了两台电脑,一台调试用,一台学习开发用。
下面开始XDMA_PCIE设计。
首先创建一个新的bd工程,点击Create Block Design,工程名命名为XDMA_PCIE。进入Diagram界面,点击+添加一个IP核。如下所示:
插入IP核
选择DMA/Bridge Subsystem for PCI Express(PCIE),双击这个IP核,进入编辑界面。笔者的选择如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击ok退出编辑界面,然后点击Run Block Automation,在这个地方因为系统篡改了笔者的设置,因此这里笔者做了一下处理,首先删除util_ds_buf模块和sys_diff_clock,然后双击DMA/Bridge Subsystem for PCI Express(PCIE)这个IP核,进入编辑页面,重新按照上述设置编辑一下,再次点击Run Block Automation配置界面如下:
在这里插入图片描述
点击ok,删除sys_diff_clock、IBUF_DS_ODIV2_0[0:0],然后点击util_ds_buf模块的CLK_IN_D右击选择Make External 即可,这样设置一下是为了解决后期valid时出现的模块之间不匹配的问题。
点击+号添加MIG模块。双击MIG模块进入编辑模块,一直点击NEXT,直到controller options
选择memory Type 为SODIMMS,PL端的ddr。点击next。Data width 为256,点击next。
Input Clock period 为 5000ps(200MHz),RTT (nominal)-On Die Termination(ODT)为RZQ/6。点击NEXT。
System Clock 为No Buffer,Reference Clock 为 Use System clock,点击next。
勾选DCI Cascade。点击next,选择Fixed Pin Out。点击next。
点击Read XDC/UCF,导入labfiles\zc706_mig_pinout.ucf。文件可在如下网站下载:
UCF文件下载。点击Validate,ok,next,Pin Number 选择为H9/G9(CC_P/N)点击next。一直点击到
generate。然后点击Run Block Automation,修改Diagram如下图所示:
最后的bd设计框图
点击Validate Design,然后显示Validation successful。点击Run Synthesis,点击ok。
这里,网站上大部分资料都是推荐去手写Constraints 文件,笔者在这浪费了太多时间,总是被管教设计不匹配或者重复约束管脚问题所烦扰。后来笔者转变思路,具体如下:
点击open Synthesized Design ,等完成后选择右上角I/Oplanning界面。如下所示:
在这里插入图片描述
打开I/O Ports页面,配置需要的管脚信息,可以对照着前面提到的labfiles文件夹里面的管脚信息或者官方提供的电路原理图来填写。如下所示:
在这里插入图片描述
这样约束管脚和直接添加xdc文件之间,最大的好处就是不会发生重复定义和参数设计不匹配的冲突。约束完了以后点击file选项,在下拉菜单中选择save constraints as选项及生成了相应的管脚约束XDC文件了。
点击generate bitstreams,即可生成相应的bit文件,通过JTAG加载到ZYNQ-ZC706开发板中即可。此时开发板不要断电,重新启动调试用的电脑,电脑在开机的过程中会自动扫描外围的硬件,等电脑开机后会看到xilinx的硬件信息,此处调试的所用到的上位机是直接用的米联客的程序,大家可以在b站上自己去搜索下载。https://www.bilibili.com/video/BV1QE411u7XP。最后的测试图如下所示:电脑中显示xilinx设备
启动上位机检测设备
读写.bin文件
读写图片

xilliix pcie dma 驱动 (基于 xilnx xdma ip核 4.0 的WDF驱动) --- # XDMA Windows Driver This project is Xilinx's sample Windows driver for 'DMA/Bridge Subsystem for PCI Express v4.0' (XDMA) IP. *Please note that this driver and associated software are supplied to give a basic generic reference implementation only. Customers may have specific use-cases and/or requirements for which this driver is not suitable.* ### Dependencies * Target machine running Windows 7 or Windows 10 * Development machine running Windows 7 (or later) * Visual Studio 2015 (or later) installed on development machine * Windows Driver Kit (WDK) version 1703 (or later) installed on development machine ## Directory Structure ``` / |__ build/ - Generated directory containing build output binaries. |__ exe/ - Contains sample client application source code. | |__ simple_dma/ - Sample code for AXI-MM configured XDMA IP. | |__ streaming_dma/ - Sample code for AXI-ST configured XDMA IP. | |__ user_events/ - Sample code for access to user event interrupts. | |__ xdma_info/ - Utility application which prints out the XDMA core ip | | configuration. | |__ xdma_rw/ - Utility for reading/writing to/from xdma device nodes such | | as control, user, bypass, h2c_0, c2h_0 etc. | |__ xdma_test/ - Basic test application which performs H2C/C2H transfers on | all present channels. |__ inc/ - Contains public API header file for XDMA driver. |__ libxdma/ - Static kernel library for XDMA IP. |__ sys/ - Reference driver source code which uses libxdma |__ README.md - This file. |__ XDMA.sln - Visual Studio Solution. ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值