ZYNQ进阶之路7--基于AXI4 IP的自定义PWM呼吸灯实现(PS控制PL PWM输出)

14 篇文章 8 订阅
14 篇文章 40 订阅

ZYNQ进阶之路7--基于AXI4 IP的自定义PWM呼吸灯实现(PS控制PL PWM输出)

导论

在上一章节(ZYNQ进阶之路6)中讲了如何将自定义的PWM模块打包成自定义AXI4 IP,其实AXI4 IP就是将AXI4总线接口进行封装然后由用户将自己书写的模块融入到其中,这样的IP就可以通过PS端编程进行控制了,今天我们就一起探讨如何通过PS端编程控制自定义的PWM模块实现呼吸灯的功能。

实现步骤

创建工程

首先我们根据第一章节中的步骤创建一个新的工程,工程名我们取名为ps_pl_pwm,创建后的工程如下所示:

在这里插入图片描述

添加PS端IP

首先点击Create Block Design:
在这里插入图片描述
双击打开ps_pl_pwm.bd,点击Diagram项中右上角的加号添加PS硬核IP:
在这里插入图片描述

然后双击PS端IP设置PS端功能,首先开启复位功能:
在这里插入图片描述
在Peripheral I/O Pin项中勾选UART1用与串口信息打印:
在这里插入图片描述
因为我们需要使用到PL端,所以我们要在时钟里使能PL端的时钟,PL端虽然可以使用PL端晶振的时钟作为时钟源,但是PL晶振时钟和PS端输入异步时钟,所以我们最好使用PS端的时钟作为时钟源,而在后面的章节中会专门探讨FPGA中异步时钟域数据传递的一些处理方法,敬请期待哦,这里设置PL时钟频率为50M,不同器件这里设置的时钟上线是不一样的,我这里最高设置到100M左右:
在这里插入图片描述
然后想之前章节一样设置好DDR3型号等信息:
在这里插入图片描述
设置完成后点击OK,这里我们PS端的IP就设置完成了:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190310123123787.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dQX0ZE,size_16,color_FFFFFF,t_70

添加自定义的PWM IP

首先我们需要将我们封装好的IP添加到我们的IP列表中,按照如下步骤操作即可:
在这里插入图片描述
在这里插入图片描述
点击OK后,需要重启vivado,并且这样操作后我们需要重新创建工程才能在IP列表中看到我们的自定义IP,为了在以后的工程中能使用我们的IP,这里需要执行如上操作,不过为了能临时将IP添加到工程做可以做如下操作:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上操作以后在我们的列表中就有了我们自定义的AXI4 IP了,其中IP所在的文件夹是之前我们创建IP的时候所创建工程的同目录下的ip_repo文件夹中:
在这里插入图片描述
最后将IP添加到工程中:
在这里插入图片描述
在这里插入图片描述

生成bit文件

首先点击自动连线:
在这里插入图片描述
在这里插入图片描述
自动生成外设管脚:
在这里插入图片描述
在这里插入图片描述
上图中pwm的管脚没有自动生成,需要我们自己来指定管脚:
在这里插入图片描述
生成标准的布局如下:
在这里插入图片描述
然后点击工具栏 Validate Design,验证设计:
在这里插入图片描述
在这里插入图片描述
再来到 Source 窗口, 生成设计代码和顶层文件,生成后如下所示:(生成步骤查看前几个章节的描述):
在这里插入图片描述
绑定引脚:
在这里插入图片描述
在这里插入图片描述
然后保存即可。
然后生成bit文件,等待生成完成可能需要几分钟时间:
在这里插入图片描述

将bit文件导入到SDK

将上面生成的bit文件导入到PS的工程中:
在这里插入图片描述
在这里插入图片描述
打开SDK:
在这里插入图片描述
打开SDK后可以看到我们pwm对应的寄存器地址:
在这里插入图片描述
按照以前章节的步骤生成一个helloworld的工程,并将主函数改名为ps_pl_pwm,并输入我们的呼吸灯代码,如下:
在这里插入图片描述
如此便可以实现PS+PL合作实现PWM呼吸灯的功能了,你对AXI4总线有一定了解了吗?如果有什么问题和想法可以通过博主邮箱:wanpengwork@163.com与博主交流,相互学习共同进步!

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值