一、引言
本文为个人理解,用于记录学习经验,有任何错误可以指出讨论。
二、创建AXI IP核(记得芯片选型选择对应的)
可以选择覆盖现有的IP核(更新IP核)。
Interface Type : Lite,简化版AXI4接口,用于数据量较小的存储映射通信(BRAM);
Full,高性能存储映射接口,用于数据量较大的存储映射通信(DDR);
Stream,高速数据流传输,非存储映射接口。
其他的设置默认即可,详细可以看其他文章。
下一步就是选择“Add IP to the repository”添加本工程。
然后IP库里面就会有用户专属的IP库了。
右键直接选择“Edit in IP Packager”编辑IP核,路径自行选择,默认就是本工程的路径。
Sources中顶层模块用户可以添加输入输出和参数,子模块可以添加用户的逻辑代码。
打开顶层模块,此处添加用户的参数,该管脚为输出信号是PL端的,后文的slv_reg中的是才是受PS端控制的。
这里添加用户输入输出管脚。
这里添加用户新添加的输入输出例化。
这里可以添加用户逻辑代码,也可以在子模块中添加,自行选择。
再到子模块这里,信号定义同上。
此处可以添加逻辑代码的例化,后文会再单独创建一个子模块专门用来写逻辑代码。
此处的例化作用是将led开关和闪烁频率存入寄存器中,本ip核共定义了4个寄存器,相当于AXI的4条数据线。
led开关一位就够用了,闪烁频率我是直接给到32位。
注意:存入寄存器的是输入信号,由PS端提供数据。
然后就是编写逻辑代码了,此代码很简单,不多赘述。
点击左边的“Package IP”封装即可