写在前面
base gongzige lesson
主要讲axi GPIO BD如何搭建,SDK怎么操作,此笔记不完整,SDK操作界面还不会
1 create block design -- 命名cpu
2 添加zynq ip,关掉不需要的功能(关掉时钟和复位),同时打开需要的功能(GP0打开)

一个全部展开,一个全部折叠

修改DDR配置,型号更改,目前手中小梅哥zynq7015的板子DDR是
NT5CC256M16ER-EKI
兼容:MT41K256M16RE-125
修改电压 bank0 3.3V bank1 1.8V
3 引出时钟 命名clk_100M

4 添加ip,AXI GPIO
设置enable dual channel,一个入,一个出
AXI——lite full stream
在AXI GPIO IP核内,input output的方向是相对PS而言

5 点击run connection automation, GPIO GPIO2 S_AXI 全选

删除这个不需要的ip

手动添加复位rst_n,create port
6 地址分配
PS对地址0x4120_0000的寄存器进行操作,就可以实现对AXI GPIO ip的使用

7 自从检查
右击空白--validate design
报 successful
8 保存之后,generate output,默认per IP即可

9 生成顶层 层级目录下,右击cpu,生成wrapper顶层
10 做好top.v文件后。generate bitstream 等待编译完成
11 打开SDK:file -- launch SDK
注意此一次打开SDK时,要先export handware,并勾选include bit stream,然后launch SDK
#include "gpio.h"
int main(void)
{
XGpio_Initialize(&Gpio, GPIO_DEVICE_ID); //初始化
XGpio_SetDataDirection(&Gpio, 1, 1); //设置GPIO的通道和方向,此处为GPIO1 input
XGpio_SetDataDirection(&Gpio, 2, 0); //设置GPIO的通道和方向,此处为GPIO2 output
u32 a = XGpio_DiscreteRead(&Gpio, 1); //把GPIO1的值赋值给变量a
XGpio_DiscreteWrite(&Gpio, 2, 0xaabbccdd); //向GPIO2的赋值
return 0;
}
操作数据应该先运行SDK,再修改数据,结合SDK的变量值查看和vivado的vio检查数据的变化
本文章使用limfx的vscode插件快速发布