基于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

相关文章

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI