FPGA学习之路-ZCU106板子点亮PS侧LED

本文档详细记录了ZCU106开发板使用Vivado 2019.1进行PS侧LED闪烁程序的创建、配置、仿真及SDK调试过程。关键步骤包括:设置PS-PL配置,选择正确的DDR,配置GPIO为输出,并在SDK中建立工程,编写C代码实现LED闪烁,并进行Debug调试。适合ZCU106初学者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、本文章借鉴了ZCU106--PL+PS点灯_Junluoyu的博客-优快云博客_zcu106ZCU106开发之PS侧MIO闪灯_lixiaolin126的博客-优快云博客两篇文章,并且感谢小林博主的悉心指导!

2、今天终于把ZCU106的SDK+Vivado联合仿真给跑通了,特此记录以下,后面对ddr4的读写、HDMI显示以及电磁暂态程序课题思路会一一发布,师弟们耐心等待!

3、文章目的:给ZCU106入门级选手一个参照,全网ZCU106最详指导,如果有多年FPGA经验请迅速联系博主敬请指点一二。

4、实验软硬件:ZCU106、Vivado 2019.1

5、实验过程:

step1:创建项目---PS_LED_test

 

 step2:IP INTEGRATOR列表点击 Create Block Design弹出窗口直接点击OK按钮,然后双击下图红色框。

然后出现了模块---zynq_ultra_ps_e_0

  step3:修改加入的模块设置,这一步很关键。由于SDK的DEBUG是运行在DDR上的,如果配置错误将会出现不能调试以及程序跑飞的情况。原因请参考文献Xilinx SDK程序Debug无法在main函数入口处停住解决_Setul-优快云博客如果后面SDK不能调试而且第一步boot出现跑飞的情况就是这一步没有设置好

①点击蓝色自动运行模块,弹出界面直接点击OK按钮。然后变成了这样

②去掉GPIO1的钩子,去掉QSPI的钩子

 ③DDR选择中间那个美光的,然后做以下更改

 ④PS-PL Configuration做以下更改。IRQ改为0,这是一个发热监视

这两个钩子去掉,这是AXI线

 

下面这个钩子也去掉。这个是复位按钮

然后点击OK按钮,就变成了下面这样

 点击检测按钮,提示successful,no error就是成功啦

设置ddr4的原因 :PL侧的DDR就叫MT40A256M16GE-xxxE,具体参考zcu102 zynq Mpsoc uart hello world_pipiak5you的博客-优快云博客_zcu102开发板

step4:输出产品,创建HDL,然后生成Bit

 

 

然后就变成了这样

 

 然后我们生成bit文件,参考前面的生成步骤(直接点击左侧的按钮)

step5:输出产品,启动SDK

 

 step6:建立---PS_LED工程

 

 

 

 step7:观察右下角的打包进程,到了什么都不显示的时候在进行第8步操作

 

 step8:双击helloword.c文件并替换源码如下所示,代码是本篇文章第二篇文章复制过来的,就是用c来实现一个LED的闪烁。复制完毕,键盘操作(CTRL+B)打包

#include "xgpiops.h"
#include "sleep.h"
int main()
{
static XGpioPs psGpioInstancePtr;
XGpioPs_Config* GpioConfigPtr;
int iPinNumber= 23; //MIO23
u32 uPinDirection = 0x1; //1表示输出, 0表示输入
int xStatus;
//--MIO的初始化
GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PSU_GPIO_0_DEVICE_ID);
if(GpioConfigPtr == NULL)
return XST_FAILURE;
xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr,
GpioConfigPtr->BaseAddr);
if(XST_SUCCESS != xStatus)
print(" PS GPIO INIT FAILED \n\r");
//--MIO的输入输出操作
XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumber,uPinDirection);//配置MIO输出方向
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumber,1);//配置MIO的第7位输出
while(1)
{
XGpioPs_WritePin(&psGpioInstancePtr, iPinNumber, 1);//点亮MIO的第7位输出1
usleep(500000); //延时
XGpioPs_WritePin(&psGpioInstancePtr, iPinNumber, 0);//熄灭MIO的第7位输出0
usleep(500000); //延时
}
return 0;
}

step9:右键PS_LED文件夹,设置debug操作。

 双击红色框

然后勾选红色框框住的这几个按钮。 

 

 Stop at program entry勾选后就可以从boot开始调试了,然后我们点击debug按钮。弹出框点击Yes

step10:然后出现下面界面,我们看problems框,如果没有出现warning和error,那就是成功了,如果出现,请查看step3.

 step10:没有出现上图警告,我们disconnect按钮。

 红框部分从左到右的意思是:重新运行、断开调试、步入、步出最后一个没啥用。

step11:右键PS_LED点击红框,等待烧写完成后。可以看到PS侧的led闪烁。

 下面是闪烁视频

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发光的沙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值