Overlay由两个主要部分组成——bitstream文件和hwh(Hardware Handoff)文件。可以说Overlay设计其实就是一种PL与PS的交互设计。通常PL设计针对特定任务进行高度优化,但是overlay被设计为可配置的,并且可用于广泛的应用程序。PYNQoverlay具有Python接口,从而允许软件程序员像使用其他任何Python软件包一样使用它。如“初识PYNQ”章节中所述,overlay类似于软件库,程序员可以在运行时将overlay下载到ZynqPL中,以提供软件应用程序所需的功能。本篇从PYNQPS与PL的接口角度讲解overlay的设计。

第四章 PS与PL的交互在设计overlay之前,我们需要先了解PYNQ是如何实现PS与PL的交互的。了解PYNQ PS与PL的交互不仅有利于我们设计overlay,在使用PYNQ时也更加得心应手。本章我们从ZYNQ的PS与PL的接口入手,进而探讨PYNQ对应的接口类,从而为后面的overlay设计做好铺垫。本章包括以下几个部分:4.1 Zynq PS与PL之间的接口4.2 PYNQ接口类

01

Zynq PS与PL之间的接口

Zynq在PS和PL之间具有9路AXI接口。在PL侧,有4路AXI Master HP(高性能)接口,2路AXI GP(通用)接口,2路AXI Slave GP接口和1路AXI Master ACP接口。PS中还有连接到PL的GPIO控制器,图示如下:图 4.1.1 PS与PL接口类型

01

PYNQ接口类PYNQ是基于linux的,而linux运行在PS中,那么linux是如何与PL进行交互的呢?图 4.2.1 linux驱动与PS和PL之间的接口从图 4.2.1可以看到,PYNQ提供了用于PS-PL接口的Linux驱动程序。运行在PS中的linux内核与PL的FPGA之间通过linux驱动fpga_manager、sysgpio、uio、devmem和xlnk进行交互。这些linux驱动与PS和PL接口之间的对应关系是:fpga_manager驱动用于下载bitstream文件到PL、sysgpio驱动控制PS与PL之间的EMIO接口、uio驱动实现PL到PS的中断管理、devmem驱动用于PS侧的AXI Master GP接口、xlnk驱动用于PS侧的AXI Slave HP接口和AXI Slave GP接口。了解了linux如何与PL进行交互后,我们还需要了解Python是如何如linux内核进行交互的,毕竟我们是通过使用Python来控制PL的。

在图 4.2.2 PYNQ架构图中,我们可以看到,与PL交互的linux驱动已经包装在Python库中。图 4.2.2 PYNQ架构图在PYNQ中除了Overlay类用于通过fpga_manager驱动下载bitstream文件到PL外,还有四个pynq接口类用于管理Zynq PS(包括PS DRAM)和PL接口之间的数据移动。这四个类分别是:GPIO(General Purpose Input/Output)——通用输入/输出MMIO(Memory Mapped IO)——内存映射IOXlnk(Memory allocation)——内存分配DMA(Direct Memory Access)——直接内存访问PYNQ的GPIO类可以用于控制连接到PL侧的GPIO外设,也可以作为IP的中断或复位信号。PYNQ的MMIO类可以使运行的Python代码访问与PS GP Master接口相连的具有PL AXI Slave接口的IP。具有AXI Master接口的IP不受PS的直接控制,而且具有AXI Master接口的IP允许直接访问DRAM。在访问DRAM之前,应先使用Xlnk类分配内存供IP使用。对于需要实现PS DRAM与IP之间更高性能的数据传输,可以使用DMA。为此PYNQ提供了DMA类。类的使用取决于IP连接到的Zynq PS接口以及IP的接口。在设计自己的overlay时,需要考虑所需的IP类型以及如何将其连接到PS。另外,还应该能够确定使用IP所需的类。本篇下面的章节我们将分别介绍上述四个接口类。

Linux下pl与ps端的通信,Overlay设计方法篇之第四章PS与PL的交互相关推荐

  1. arm linux串口控制led,通信程序设计 - Linux下ARM和单片机的串口通信设计

    3 通信程序设计 ARM 与单片机的串口通信程序包括两方面: 一方面是作为上位机的ARM 的串口通信程序,另一方面是作为下位机的单片机的串口通信程序.在通信之前必须制定合理的通信协议以保证通信的可靠性 ...

  2. linux下svn(subversion)服务端添加工程及配置权限

    linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...

  3. 全网史上最详细全面的Linux下安装mysql客户端服务端

    全网史上最详细全面的Linux下安装mysql客户端服务端Linux下安装mysql 1.上传MySQL5.6的tar包 创建目录: mkdir /usr/local/src/mysql5.6 上传: ...

  4. Linux 下查看某一个程序所使用的内存方法介绍

    Linux 下查看某一个程序所使用的内存方法介绍 在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况.常用方法总结如下(注意第四种方法): 第一种:ps -aux | ...

  5. linux程序运行段错误,Linux下的段错误产生的原因及调试方法

    Linux下的段错误产生的原因及调试方法 简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来 说,段错误就是指访问的内存超出 ...

  6. linux下grep同时匹配多个单词,Linux下使用grep命令搜索多个单词的方法

    摘要 腾兴网为您分享:Linux下使用grep命令搜索多个单词的方法,篆刻字典,中国知网,虚拟机,微博等软件知识,以及掌上公交app,尚书ocr,汇博企业,强密码,支付宝,mh,海融易,我的世界火影忍 ...

  7. memset linux 头文件,linux下C/C++头文件梳理,看完这篇再也不会搞糊涂头文件了!...

    一:前言 进行linux下C/C++服务端后台开发的都知道,需要跟各种头文件打交道. 比如使用printf函数则需要引用#include ,使用STL的map容器则要#include ,使用socke ...

  8. Linux下C++中可使用的3种Hook方法

    Hook即钩子,截获API调用的技术,是将执行流程重定向到你自己的代码,类似于hack.如使程序运行时调用你自己实现的malloc函数代替调用系统库中的malloc函数.这里介绍下Linux下C++中 ...

  9. 详解linux下auto工具制作Makefile源码包(制作篇)

    2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一.     概述 为了更好的制作configure ...

最新文章

  1. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 测试 lib7zr.so 动态库调用 )
  2. Windows ×××服务器配置2-远程访问配置之PPTP
  3. 深度linux安装双,Deepin 20正式发布,新的外观和感觉,双内核安装
  4. oracle dg 日志手动应用,做了DG之后,日志没有被应用
  5. 图片相册社区类型小程序模板
  6. android wine教程_技术|如何在 Android 上借助 Wine 来运行 Windows Apps
  7. 之前8年都在上班工资16000,厌倦了天天上班的日子,就裸辞了。现在很迷茫,下一步怎么办?
  8. (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  9. mysql如何把一个表直接拷贝到一个新的表
  10. js !!条件判断或运算的作用
  11. hkust ucl 电子工程比较_通信工程专业
  12. discuz子导航下面的版块只有图标没有标题,什么原因?
  13. Excel突然出现很多小黑点
  14. EOS与ESD的区别
  15. 光纤配线柜如何选择,又该怎么安装?
  16. 空想科学教程 (爆笑)1
  17. 移动app手机物理键返回、后退、上一页面并重新加载页面数据
  18. 图像识别流程学习总结
  19. Springboot毕设项目爱团购系统设计与实现kh533(java+VUE+Mybatis+Maven+Mysql)
  20. 报错“在要求输入数字处找到非数字字符”

热门文章

  1. Linux安装Oracle和postgrepSQL数据库
  2. 错误:Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/db.properties]
  3. 编码标准:纪律和人因工程的双剑合璧
  4. apollo学习笔记十二:apollo规划技术(二)
  5. 十个会议相关的小技巧(实用!其中有的是乔布斯用过的~)
  6. 在线抽签html,简易抽签程序(数字滚动 HTML + JavaScript)
  7. oracle rollback作用,oracle中rollback语句作用范围
  8. 【228】Python3 中类的静态方法、普通方法、类方法
  9. Android开发最好笔记本,5最好的笔记本应用程序Android | MOS86
  10. ctf write cookies欺骗