01概述

MPSoC是Xilinx基于16nm工艺推出的异构计算平台,由于灵活、稳定,在业界得到了广泛的使用。异构计算是一个比较新的领域,需要协调硬件设计、逻辑设计、软件设计,对工程师的要求很高。实际设计过程中,很多工程师对实现PS/PL之间的数据交互感到头疼。

本文将介绍主要的PS/PL之间的数据交互办法。

02MPSoCPS/PL之间的数据通路

在开始之前,首先简要介绍PS/PL之间的数据通路,请参考《UG1085ZynqUltraScale+MPSoCTechnicalReferenceManual》的Figure1-1:AXIInterconnect。

PS/PL之间的数据通路主要是通用的AXIMemory接口,其中PS作为主设备的接口有128-bit位宽的HPM0/HPM1,64-bit位宽的LPD_PL;PL作为主设备的接口有ACP/ACE/HPC0/HPC1/HP0/HP1/HP2/HP3。所有AXIMemory接口的位宽最高都可以支持到128-bit。

PS/PL之间主要通过PS-DDR交互大块数据。从Figure1-1可以看到,PS-DDR控制器有六个AXISlave接口,与PL直接相关的是S3、S4、S5。HPC0/HPC1都连接到了CCIInterconnect。DP和HP0连接到了S3。HP1和HP2连接到了S4。HP3和FPDMA连接到了S5。如果需要提高带宽,要充分利用PS-DDR控制器的AXISlave接口。如果可能,HP1和HP2最好不要同时用,因为HP1和HP2都连接到了S4,最后会彼此竞争带宽。

UG1085的Figure1-1提供了最详细的信息, 也有点复杂。为了简单,也可以参考下面来自于《ZynqUltraScale+MPSoCTechnicalOverview》的简化示意图。

在Vivado的IP里,使能相关接口后,接口如下。

03MPSoCPS/PL之间的简单数据通路和简单外设设计

很多时候,PS/PL之间只需要简单的数据通路。PS只需要下发有限的参数给PL,PL只需要向PS反馈有限的状态数据。串口、SPI设备、IIC等低速接口,就属于这种设备。这种情况下,PL内部只需要实现AXISlave接口和一些寄存器就可以,PS通过AXI接口去访问寄存器,既向PL提供参数,也可以读回PL的状态。

客户可以自己设计AXI接口和寄存器,也可以使用Vivado里的工具CreateandPackageIP。

04使用Vivado里的工具CreateandPackageIP创建IP

如果使用Vivado里的工具CreateandPackageIP创建IP,可以参照下列步骤。

1)调用Vivado的CreateandPackageIP模板

2)CreateandPackageIP模板介绍

3)新建IP

这一步选择"CreateanewAXI4peripheral"。

4)IP命名和目录

根据自己需要,指定IP的名称和目录。

5)IP接口选择

可以看到,只为新的IP选择了AXILite接口,并实现了16个寄存器。工程师可以根据需要选择寄存器个数,最小4个,最多512个。对于AXILite接口,数据位宽是32-bit。

6)完成IP创建

选择“AddIPtotherepository”,点击"Finish",完成IP创建。

<

ddr传输 pl ps_PS/PL之间的数据交互办法相关推荐

  1. 【Ajax】实现网页与服务器之间的数据交互

    Per aspera ad astra 循此苦旅,以觅繁星 通过这篇文章带你了解网页与服务器之间的数据交互的原理与使用方法. 一.服务器的基本概念 在实现数据交互之前先了解服务器的概念,有助于我们之后 ...

  2. 软件和硬件之间的数据交互接口

    已剪辑自: 链接 编者按 软件和硬件,既相互依存又需要某种程度上的相互独立.通过软件和硬件之间的接口把两者连接在一起.软硬件接口,有很多含义:比如指令集是CPU软件和硬件之间的接口:比如一些硬件模块( ...

  3. java与c/c++之间的数据交互-----jni点滴

    2019独角兽企业重金招聘Python工程师标准>>> 淡泊明志.宁静致远 A Diamond is just a piece of Coal that did well under ...

  4. java与c的交互,java与c/c++之间的数据交互,java交互

    java与c/c++之间的数据交互,java交互 java与c/c++之间的数据交互有这样几种情况:java和c/c++之间基本数据类型的交互,java向c/c++传递对象类型,c/c++向java返 ...

  5. http协议跟服务器交互,基于HTTP协议的客户端与服务器之间的数据交互方法专利_专利查询 - 天眼查...

    L-种基于HTTP协议的客户端与服务器之间的数据交互方法,应用于智能$居系统 中,以使用户的客户端与智能家居系统的服务器之间建立稳定的网络连接并进行数据交 互,所述方法包括步骤: 所述客户端与所述服务 ...

  6. 实现网页与服务器之间的数据交互

    目录 一.Ajax 1.1.什么是Ajax? 1.2.jQuery中的Ajax 1.$.get()从服务器中获取数据 ✨ 2.$.post()从服务器中获取数据 ✨ 3.$.ajax()从服务器中获取 ...

  7. C++ 多线程之间的数据交互

    参考博客https://blog.csdn.net/hai008007/article/details/80246437,在此之上整理修改. 同一个进程内的多个线程之间免不了需要进行数据的交互,队列和 ...

  8. Zynq-linux PL与PS通过DMA数据交互

    一.目标 在米尔科技的z-turn板上,采用AXI DMA 实现zynq的PS与PL数据交互. 二.分析 ①PS数据传PL 驱动中的测试程序中给出一堆数据,通过DMA传输到AXI4-Stream Da ...

  9. windows mobile开发循序渐进(5)移动应用程序与webservice之间的数据交互

    上篇遗留问题: 在使用数据库方面,egmkang和瑞雪年给了不少建议,我也测试了SQLite的使用,在对SQL Server CE的查询方面,egmkang的性能方面的测试代码也运行了一遍,很感谢你们 ...

最新文章

  1. 91.91p10.space v.php,luogu P1091 合唱队形
  2. 表生成器@TableGenerator
  3. 解决ichat模块调用过程中——登录微信网页版失败的方法
  4. MATLAB连接API接口
  5. 计算机内存不够玩不了游戏,电脑玩游戏内存不够怎么解决
  6. 丘比特之箭python代码_心形丘比特之箭_可爱漂亮的非主流情侣QQ空间留言代码
  7. 秒改文件md5,各PC系统可用
  8. python一个月工资多少钱_Python工资一般是多少 看完吓你一跳【python教程是什么】...
  9. Unity优化工具有哪些,特别推荐LuaProfiler
  10. substrate介绍
  11. 汉字转拼音 python_python实现将汉字转换成汉语拼音的库
  12. 使用Spark和Pig统计每秒钟微博数量
  13. 快@你的好兄弟好姐妹来内卷进程状态
  14. 初级开发者福音:手把手教你实现数字滚动效果~
  15. 转载 [技术] SLI常见问题及答案 网址
  16. 谏言工信部:网站备案系统miibeian.gov.cn实在难用!
  17. 如何在Android上显示wmf的文件
  18. MyBatis动态拼接SQL
  19. 打开计算机网络自动连接,电脑网络自动连接如何设置
  20. C# 中的多态和虚方法,如何实现多态和使用虚方法?

热门文章

  1. 公司目标 VS 个人目标
  2. 读懂才会用 : 带你见识 Redis 的 zset
  3. 蓝牙客户端QBluetoothSocket的使用——Qt For Android
  4. 全栈开发工程师微信小程序 - 上
  5. 二进制安装k8s 1.25.2 高可用集群
  6. 尚德商学院计算机系课程,UBC尚德商学院专业小百科(一):会计
  7. 项目管理SPI,CPI,CV,SV
  8. 分布式系统中的CAP理论,面试必问,你理解了嘛?
  9. 单片机按键扫描:分别实现长按两秒运行一种功能,短按松开后运行另一种功能
  10. 阿里云推送 AndroidSDK 3.0 快速集成