4 AXI USER IP

devtools/2025/1/20 21:59:27/

前言

使用AXI Interface封装IP,并使用AXI Interface实现对IP内部寄存器进行读写实现控制LED的demo,这个demo是非常必要的,因为在前面的笔记中基本都需哟PS端与PL端就行通信互相交互,在PL端可以通过中断的形式来告知PS端一些事情,或者PS端时刻盯着某个寄存器等着PL端告诉他一些事情,但是这个这个过程比较独占CPU资源的,一般使用中断的方式;但是PS端比较方便的就是通过读写寄存器的方式控制PL端的操作,而且是要通过AXI接口,因此这个demo比较重要

目的

 - 使用AXI 总线协议封住IP
- 回顾AXI 协议
- 回顾创建和打包IP
- 软硬件协同设计

创建和打包IP

参考笔记5-1 创建和打包AXI Interface IP

使用寄存器控制LED

在这里插入图片描述

  • 并将GPIO_LED信号引入到顶层,进行引脚约束

BD设计

在这里插入图片描述

引脚约束

set_property PACKAGE_PIN AL11 [get_ports GPIO_LED]
set_property IOSTANDARD LVCMOS18 [get_ports GPIO_LED]set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

修改自定义AXI-IP的Makefile

  • drivers\axi_user_gpio_v1_0\src目录下
    在这里插入图片描述

生成bit流,导出xsa文件

SDK设计

/** name: main.c* description: write user regiter to control the LED GPIO*/#include "xparameters.h"
#include "xil_printf.h"
#include "xil_io.h"
#include "sleep.h"#define GPIO_BASEADDR XPAR_AXI_USER_GPIO_0_S00_AXI_BASEADDR
#define GPIO_DATA_OFFSET 0x0#define printf xil_printfint main()
{Xil_Out32(GPIO_BASEADDR + GPIO_DATA_OFFSET, 0x0); // turn off all LEDswhile (1){sleep(1);Xil_Out32(GPIO_BASEADDR + GPIO_DATA_OFFSET, 0x1); // turn on LED0sleep(1);Xil_Out32(GPIO_BASEADDR + GPIO_DATA_OFFSET, 0x0); // turn off all LEDs}return XST_SUCCESS;
}
  • 关于XPAR_AXI_USER_GPIO_0_S00_AXI_BASEADDR
    • 这个地址就是在BD设计中对应接口分配的基地址
  • 关于Xil_Out32函数
    • 这个函数就是写32bit位宽的寄存器函数,传入的参数为地址和需要写入数据
  • 对应的Xil_In32函数
    • 这个函数就是读32bit位宽的寄存器函数,只需要传入地址

http://www.ppmy.cn/devtools/152200.html

相关文章

turtle教学课程课堂学习考试在线网站

完整源码项目包获取→点击文章末尾名片!

Tesla Free - Fall attack:特斯拉汽车网络安全攻击事件分析

文章目录 一、Tesla Free - Fall attack:特斯拉汽车网络安全事件纪要1. 引言2. 攻击流程2.1 攻击切入点2.2 系统入侵2.3 CAN 总线操控 3. 影响后果4. 特斯拉应对措施5. 研究意义二、安全攻击事件技术分析以及相应的检测和缓解措施 一、Tesla Free - Fall attack&…

数据结构---并查集

目录 一、并查集的概念 二、并查集的实现 三、并查集的应用 一、并查集的概念 在一些实际问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合…

校园跑腿小程序---任务界面 发布以及后端模板下载

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…

BERT与CNN结合实现糖尿病相关医学问题多分类模型

完整源码项目包获取→点击文章末尾名片! 使用HuggingFace开发的Transformers库,使用BERT模型实现中文文本分类(二分类或多分类) 首先直接利用transformer.models.bert.BertForSequenceClassification()实现文本分类 然后手动实现B…

C# 数据结构全面解析

在 C# 编程的世界里,数据结构是构建高效程序的基石。合理运用数据结构,能够优化数据的存储和访问方式,显著提升程序的性能。本文将深入探讨 C# 中常见的数据结构及其应用场景。 一、数据结构基础概念 数据结构是一种组织和存储数据的方式&a…

算法分析与设计之贪心算法

文章目录 前言一、Greedy Algorithms1.1 贪心选择性质1.2 最优子结构性质1.3 正确性证明 二、典型例题2.1 Interval Scheduling间隔调度2.2 Interval Partitioning最少间教室排课2.3 Selecting Breakpoints选择加油站停靠点2.4 硬币找零2.5 Scheduling to Minimizing Lateness2…

Redis系列之底层数据结构整数集IntSet

Redis系列之底层数据结构整数集IntSet 什么是IntSet IntSet,整数集合,是Redis集合类型的一种底层数据结构,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,redis就会选用intset作为底层实现。 IntSet的数…