4 AXI USER IP

前言

使用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设计

引脚约束

c 复制代码
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设计

c 复制代码
/*
    * 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_printf

int main()
{
    Xil_Out32(GPIO_BASEADDR + GPIO_DATA_OFFSET, 0x0); // turn off all LEDs
    while (1)
    {
        sleep(1);
        Xil_Out32(GPIO_BASEADDR + GPIO_DATA_OFFSET, 0x1); // turn on LED0
        sleep(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位宽的寄存器函数,只需要传入地址
相关推荐
如何学会学习?2 天前
5-1 创建和打包AXI Interface IP
ip·zynq·axi·mpsoc·zcu106
如何学会学习?2 天前
1 使用EMIO
fpga开发·zynq·emio·zcu106·ug1244
一叶知秋h7 天前
ZYNQ初识10(zynq_7010)UART通信实验
笔记·学习·zynq
一叶知秋h19 天前
ZYNQ初识7(zynq_7010)RAM_IP核
笔记·学习·zynq
如何学会学习?24 天前
10. zynq应用开发--camke编译
cmake·zynq·petalinux·mpsoc·acu106·zcu106
mcupro1 个月前
TQ15EG开发板教程:使用SSH登录petalinux
ssh·mpsoc
不想写代码的我1 个月前
基于ZYNQ-7000系列的FPGA学习笔记11——IP核之单端RAM读写
笔记·学习·fpga开发·嵌入式·zynq
whik11941 个月前
Keil-MDK开发环境编译后axf自动转换bin格式文件
stm32·arm·keil·axi·bin·mdk
不想写代码的我2 个月前
基于ZYNQ-7000系列的FPGA学习笔记3——开发环境搭建&点亮一个LED
笔记·学习·fpga开发·嵌入式·zynq