ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)

14 篇文章 50 订阅
14 篇文章 41 订阅

在之前的章节中我们讲有PL的一些单独教程,但后面我们会涉及到PS和PL协同工作的教程,这必然涉及到PS与PL的通讯,在ZYNQ中PS和PL的通讯大多是通过AXI-4总线实现的,AXI总线是ARM 1996年提出的微控制器总线家族AMBA中的一部分,其中AXI4主要面对高性能的地址映射通讯需求,AXI4-Lite是一个轻量级的,适用于吞吐量较小的地址映射通信总线,而AXI4-Stream主要面向高速流数据传输。具体的AXI4总线协议大家可以去ARM或者XILINX的官网查询相关文档。所以想要PS端能够控制或者传输数据到PL端其中一个方法就是将我们的PL端的逻辑模块打包成AXI4 总线类型的IP。嗯。。。。这里就话不多说了,本章节我们将ZYNQ进阶之路2中的PWM模块打包成AXI4 IP,来看如何操作吧。

首先我们要重新新建一个新建工程步骤如ZYNQ进阶之路1中所述,不再累述。

建好工程后的界面如下所示:

选择菜单栏 Tools > Create and Package IP

选择创造Creat a new AXI4 peripheral:

然后确定IP名字:

接下来这里我们PWM模块中有两个通道的PWM输出,每个通道都需要配置频率和占空比,所以我们需要4个寄存器数量,其他的参数默认配置:

最后点击完成就OK了:

然后我们点击IP Catalog 窗口,已经有了我们自定义的 AXI4 IP了,然后我们选中IP右键选择编辑IP:

然后在资源窗口选中顶层文件进行编辑:

我们在pwm_test_v1_0.v文件的用户编辑的地方添加两个通道的PWM输出端口信号:

对生成的两个文件的读取可以发现这两个文件其实是已经帮助我们写好的AXI4-Lite的协议接口逻辑,无需我们再去理会AXI4的总线协议了,我们只需将我们的逻辑代码例化到生成的代码中就可以了,非常方便。如下我们还需在pwm_test_v1_0.v文件最下面的pwm_test_v1_0_S00_AXI_inst模块例化以及pwm_test_v1_0_S00_AXI_inst模块中也添加这两个端口:

然后将我们第二章节已经编辑好的PWM模块例化到pwm_test_v1_0_S00_AXI_inst模块中,其中slv_reg0123就是我们对应的寄存器值,可通过PS软件端地址访问的值。如下所示:

编辑完成保存后,回到Package IP页面设置IP,如下所示输入相关信息,或者不输入:

在file Groups项中点击Merge changs from File Groups Wizard:

zai

在Customization Parameters 项,点击 Merge changes from Cunstomization Parameters Wizard

其余选项保持默认,在最后一项中点击 Package IP,因为我这里已经点击过了所以显示的Re_Package IP:

最后我们关闭工程,点击Yes:

到这里我们的IP打包已经完成了,最后我们关闭我们新建的工程,到E:\zynq_project\ps_pl_axi\ip_repo路径下就可以看到我们封装好的IP了,这里我在之前已经打包好了pwm_1.0这个IP和pwm_test_1.0完全一样的IP,在下一章节中我们将利用本吃打包好的IP配合PS端实现双通道PWM输出实现两个呼吸灯个功能。

这次的打包教程就结束了,希望能给读者带来一些帮助,如有问题可以将问题发送到博主邮箱(wanpengwork@163.com)或者CSDN直接私信博主就可以了。

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值