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

在之前的章节中我们讲有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中所述,不再累述。

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第1张图片

选择菜单栏 Tools > Create and Package IP
ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第2张图片

选择创造Creat a new AXI4 peripheral:

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第3张图片

然后确定IP名字:

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第4张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第5张图片

最后点击完成就OK了:

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第6张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第7张图片

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第8张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第9张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第10张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第11张图片

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第12张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第13张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第14张图片

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第15张图片

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

zaiZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第16张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第17张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第18张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第19张图片

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

ZYNQ进阶之路6--自定义AXI4 IP打包(PWM)_第20张图片

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

你可能感兴趣的:(FPGA,zynq,ZYNQ进阶之路)