本文主要是介绍基于xilinx公司ZC706开发板的XDMA_PCIE接口设计。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于xilinx公司ZC706开发板的XDMA_PCIE接口设计。
笔者主要是以自己的亲身经历介绍自己初学PCIE接口时的一些经验和碰到的一些问题。
开发环境:vivado2017.4;台式机电脑(含有PCIE接口)一台;ZC706可开发板一块
首先,拿到xilinx的ZC706开发板后,第一步要先熟悉整个开发板的各个功能模块,知道自己需要使用的是开发板的哪个模块。第二步的基本工作是去xilinx公司的官网上下载官方GPIO_PCIE的程序,先把整个硬件搭建起来,确认程序加载和调试整个流程没有问题,保证后期的开发不会出现一些低级问题。以上所说的材料,都可以在一下网站上下载:xlinx官方开发板ZC706的一些资料。其中需要注意的有ZC706开发板的硬件资料——包括开发板原理图和管教约束文件:
官网GPIO_PCIE例程和使用说明,读者只需要按照说明把这个程序调通,后面就可以正式进行XDMA_PCIE开发了。
注意该例程中需要使用的调试助手pcitree只能在32位系统中使用(比较坑)所以笔者准备了两台电脑,一台调试用,一台学习开发用。
下面开始XDMA_PCIE设计。
首先创建一个新的bd工程,点击Create Block Design,工程名命名为XDMA_PCIE。进入Diagram界面,点击+添加一个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如下图所示:
点击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公司ZC706开发板的XDMA_PCIE接口设计。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!