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

2023-11-11 00:10

本文主要是介绍基于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文件
读写图片

这篇关于基于xilinx公司ZC706开发板的XDMA_PCIE接口设计。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/386233

相关文章

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec