Vitis Vivado开发自定义IP核流程——以自定义呼吸灯IP核为例
自定义IP核
自定义LED IP核,控制PL LED呈现呼吸灯的效果,且PS可以通过AXI接口来控制呼吸灯的开关和呼吸的频率。
IP核设计
下边是第三方设计好的呼吸灯Verilog代码,大概原理为调整占空比控制LED灯的呼吸效果。
1 | // File name: breath_led |
==上述verilog代码实现的呼吸灯涉及的输入输出和参数如下:==
Input:
sys_clk , //时钟信号
sys_rst_n , //复位信号
sw_ctrl , //呼吸灯开关控制信号 1:亮 0:灭
set_en , //设置呼吸灯频率设置使能信号
set_freq_step , //设置呼吸灯频率变化步长
Output:
led //LED
Parameters:
parameter START_FREQ_STEP = 10’d100; //设置频率步长初始值
1 新建IP
打开Vivado 选择manage IP,选择保存IP的路径
tools—create and package new IP
配置IP名称,接口等信息
IP Catalog— user Reposity—AXI Peripheral —自定义IP—右击—edit in IP packager
2 修改代码
vivado自动创建.v实例化了AXI4,里边可以找到定义的寄存器
右键breath_led_IP_v1_0,add Sources,新建一个.v文件准备实现自定义IP核逻辑。
添加呼吸灯模块代码后,需要在breath_led_IP_v1_0_S01_AXI_inst中例化呼吸灯IP核,并添加参数。
完成后在breath_led_IP_v1_0中例化breath_led_IP_v1_0_S01_AXI,添加参数。
定义led 和 申明START_FREQ_STEP,以及后续例化中补充接口和参数
点击Run Sythesized对模块综合,检查代码是否错误
3 打包IP核
回到Package IP界面
compatibility 添加支持的开发板、修改Customization Parameters定制参数
Re-Package IP,自此,之前创建的IP核打包完成
vivado硬件设计
创建一个工程
在Setting—IP—Repository中添加之前创建的IP项目,添加完成后在Ip Catalog中也可以右键修改
添加Zynq处理器以及自定义IP核,验证连接没有出错后
在Design Sources中右键system,Generate output product,然后点击Create HDL Wrapper
验证无误后,生成bitstream文件
导出包含bitstream的xsa文件
vitis软件设计
三个不同的文件路径都可以看到IP核对应代码:
export/CustomIP_led/hw/drivers/breath_led_ip_v1_0
hw/drivers/breath_led_ip_v1_0
psu_cortexa53_0/standalone_domain/bsp/psu_cortexa53_0/libsrc/breath_led_ip_v1_0
1 利用导出的xsa新建平台
2 新建空项目,创建main.c文件
1 |
|
修改IP核:
修改.v文件
File Group、Review and Package、Run Sythesized检查错误、Re-Package重新封装IP
Show IP Status、Upgrade Selected、在对话框中选择Generate output Products
由于这里只是测试一下修改IP核从LED寄存器中读取数据,所以就不需要修改顶层设计了
直接生成bitstream文件
导出硬件xsa,包含bitstream文件,覆盖老版本xsa文件
回到vitis,platform,右键,update Hardware Specification