ZYNQ中AXI4-Lite实现PS与PL通信

  • 0 前言
  • 1 Vivado部分
  • 2 Vitis部分

0 前言

  ZYNQ开发中需要使用PS向PL发控制信号,PL将数据发给PL端处理,可以使用AXI4-Lite协议完成。

  本例中通过自定义AXI4-Lite接口IP,配置了4个从寄存器:slv_reg0、slv_reg1,其中slv_reg0负责接收来自PS的指令,slv_reg1负责发送数据给PS,完成PS与PL的交互。因为IP配置中寄存器最少设置4个,所以闲置了2个。

1 Vivado部分

  配置好zynq核后开始新建AXI-Lite接口IP,Tools->Create and Package New IP,选择“Creat AXI4 Peripheral”;接着到Peripheral Details,修改IP名字,myip改为axi_lite_test,其它可默认;然后到Add Interfaces,Interface Type:Lite,Interface Mode:Slave,数据位宽32,寄存器个数4;最后Create Peripheral选Edit IP。
  打开独立的IP编辑窗口后,在端口声明处添加自定义输入输出端口,并在代码中添加相应程序。

在子文件端口列表添加自定义端口:

这是设置的4个寄存器:

添加PL接收PS数据逻辑:

同时将PL接收数据always块中发送寄存器slv_reg1和闲置寄存器代码注释掉:

添加PS读取PL数据逻辑:

同时将PS读取从寄存器当前值的always块中接收寄存器slv_reg0,闲置寄存器代码注释掉:

在顶层文件添加相应端口:

最后打包IP完成,在block design中添加该ip如下:

pl_num可以接入其它IP中使用,需要发送的数据可以接入ps_num等待PS端读取。连接好线后vivado端便结束了,最后保存生成bit流,导出硬件,打开vitis。

2 Vitis部分

  新建应用工程,使用从vivado导出的.xsa文件,可以直接选择Hello World模板C语言工程,也可以选择空白工程。选择空白工程后,需要右键工程src文件夹,选择New->File,接着在File name后输入 main.c结束。
  在板级支持包里找到参数头文件xparameters.h,在里面找到自定义IP的基地址(ctrl+F,搜索AXI_BASEADDR,找到包含IP名的),然后在main.c中重命名一下方便使用。在板级支持包里找到自定义IP的头文件,本例为axi_lite_test.h,里面有读写寄存器调用的函数,还有自定义IP中的4个从寄存器在基地址上的偏移量,可以直接在main函数中使用,也可以重定义一下使用。

在main函数中向PL端发送数字5(写reg0地址):
AXI_LITE_TEST_mWriteReg(AXI_BASEADDR,REG0_OFFSET,5);
接收PL端数据(读reg1地址):
AXI_LITE_TEST_mReadReg(AXI_BASEADDR,REG1_OFFSET);

ZYNQ中AXI4-Lite实现PS与PL通信相关推荐

  1. ZYNQ PS与PL通信之DMA

    ​ 在zynq开发中,PS与PL通信是非常关键的内容,掌握了PS与PL通信方法,就可以搭建各种常用的硬件平台.本文先介绍集中PL与PS的通信方法,然后重点介绍通过DMA实现PS与PL通信. PL与PS ...

  2. io vivado 怎么查看ps_vivado学习之PS与PL通信

    刚开始学习PS与PL通信的时候,总是理解的不透彻,只能跟书上或者网上的教程学习,但是也只是照猫画虎.直到看了这篇博文: http://xilinx.eetop.cn/viewnews-2547  这个 ...

  3. vivado学习之PS与PL通信

    刚开始学习PS与PL通信的时候,总是理解的不透彻,只能跟书上或者网上的教程学习,但是也只是照猫画虎.直到看了这篇博文: http://xilinx.eetop.cn/viewnews-2547  这个 ...

  4. ZYNQ AXI总线 PS与PL内部通信(用户自定义IP)

    ZYNQ .AXI协议.PS与PL内部通信  三种AXI总线分别为: AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映 ...

  5. ZYNQ中DMA与AXI4总线-DMA简介

    ZYNQ中DMA与AXI4总线 为什么在ZYNQ中DMA和AXI联系这么密切?通过上面的介绍我们知道ZYNQ中基本是以AXI总线完成相关功能的: 图4‑34 连接 PS 和 PL 的 AXI 互联和接 ...

  6. zynq中纯Programmable Loigc编程

    https://blog.csdn.net/yc461515457/article/details/41553363 没接触zynq之前,只用过FPGA,在FPGA中用verilog编程简单明了,后来 ...

  7. vivado中ZYNQ详解(主要用于PS和PL之间的工作衔接)

    可进qq群进行相关Verilog知识交流:1073030956 AXI的理解 AXI(Advanced extensible Interface)协议主要描述了Master设备和Slave设备之间的数 ...

  8. ZYNQ中PS、PL的含义

    在刚学习ZYNQ的过程中,看到学习文档上有下面这样一句话: GPIO可以通过 MIO连接到 PS端的引脚,也可以通过 EMIO连接到 PL.本章将介绍如何使用GPIO外设通过 MIO控制 PS端的 L ...

  9. ZYNQ开发系列——把PS和PL程序烧写到FLASH中

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--把PS和PL程序烧写到FLASH中 生成 fsbl.elf 生成 BOOT.bin 下载 BOOT.bin 文件到 ...

最新文章

  1. .NET Core webapi 允许put请求方式配置文件
  2. 批量处理文件,除了 Python,不妨试试 VIM!
  3. 手机连接投影机的步骤_投影机安装过程详解
  4. vscode设置go环境
  5. [转载] python中的MySQLdb模块
  6. sql 执行 delete 的时候,结合子查询 exists ,怎样支持别名呢?
  7. Oracle 触发器(一)
  8. 前中后序遍历的递归与非递归算法,层序遍历
  9. html自动排版 vs,Visual Stidio Code (vscode)自定义HTML页面自动生成格式
  10. Appdata文件夹
  11. 如何将CHM文件翻译成中文
  12. 10-24程序员们 节日快乐!
  13. 【高等数学】第二章 导数与微分——第一节 导数的概念
  14. Windows系统中如何将C盘划分为多个盘符的详细图文教程
  15. C++ string常用截取字符串方法
  16. java list集合包含_Java 中的集合类包括 ArrayList 、 Linke
  17. Centos 7 新版安装mysql
  18. Adobe 官方公布的 RTMP 规范+未公布的部分
  19. IDEA2022 创建基于Maven的SpringBoot聚合单应用项目
  20. 苯乙烯丁烯苯乙烯(SBS)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. Unity3D - 【Animator】骨骼动画的实现
  2. devstack mysql_devStack-阿里云开发者社区
  3. linux查看服务器是master,master
  4. js条件逻辑判断-德摩根定律
  5. Web安全—Web漏扫工具Nikto安装与使用
  6. RecastNavigation源码阅读之Recast工程
  7. 训练营一期day16
  8. 【asm基础】nasm使用简介
  9. Latent SVM
  10. 2021-07-02工程建设项目审批办事指南二维码