自定义AXI IP核实验——FPGA Vitis篇
文章目录
- 1. 前言
- 2. Vivado工程的编写
- 2.1 创建自定义IP
- 2.2 添加自定义IP到工程
- 3. Vitis工程的编写
- A. 工程源码下载
1. 前言
Xilinx官方为大家提供了很多IP核,在Vivado的IP Catalog中可以查看这些IP核,用户在构建自己的系统中,不可能只使用Xilinx官方的免费IP核,很多时候需要创建属于自己的用户IP核,创建自己的IP核有很多好处,例如系统设计定制化;设计复用,可以在IP核中加入license,有偿提供给别人使用;简化系统设计和缩短设计时间。用ZYNQ系统设计IP核,最常用的就是使用AXI总线将PS同PL部分的IP核连接起来。本实验将为大家介绍如何在Vivado中构建 AXI总线类型的IP核,此IP核用来产生一个PWM,用这个控制开发板上的LED,做一个呼吸灯的效果。
2. Vivado工程的编写
2.1 创建自定义IP
(1)本实验使用的Vivado工程延用《ZYNQ 串口打印输出——FPGA Vitis篇》中使用的Vivado工程,大家可以查看该文章来了解Vivado工程的建立。
(2)修改Vivado工程,创建自定义IP。点击菜单“Tools->Create and Package IP…”,并点击“Next”。
(3)选择创建一个新的AXI4设备
(4)名称填写AXI_pwm,描述随便填写,然后选择一个合适的位置存放IP。
(5)下面参数可以指定接口类型、寄存器数量等,这里不需要修改,使用AXI Lite Slave接口,4个寄存器。点击“Next”-> “Finish”,完成IP的创建。
(6)重新打开“IP Catalog”,可以看到刚才我们创建的IP。
(7)但这时候的IP并没有PWM功能,只有简单的AXI总线读写寄存器功能。我们需要修改 IP,选择IP,右键“Edit in IP Packager”。在弹出的对话框中,不修改默认信息,点击“OK”。
(8)Vivado打开了一个新的工程。
(9)在Vivado “Flow Navigator”中点击“Add Source”,添加PWM功能代码。这里的PWM功能代码借用的是Alinx公司开发板提供的模块代码,用户也可以根据自己需要更改其它代码。
(10)在Vivado中,修改“AXI_pwm_v1_0.v”文件,增加“pwm”输出端口。
(11)修改“AXI_pwm_v1_0.v”,在例化“AXI_pwm_v1_0_S00_AXI”中添加pwm 端口的例化。
(12)修改“AXI_pwm_v1_0_S00_AXI.v”,添加pwm端口,这个文件是实现AXI4 Lite Slave的核心代码。
(13)修改“AXI_pwm_v1_0_S00_AXI.v”文件,例化我们刚添加的axi_pwm.v文件,并将寄存器slv_reg0和slv_reg1用于pwm模块的参数控制。
(14)在工程源文件“Sources”一栏中双击“component.xml”文件。在“File Groups”选项中点击,“Merge changes from File Groups Wizard”。
(15)同样在“Customization Parameters”选项中点击,“Merge changes from Customization Parameters Wizard”。
(16)点击“Re-Package IP”完成IP的修改。
2.2 添加自定义IP到工程
(1)在Block Design中,点击添加IP,搜索“pmw”,添加“AXI_pwm_v1.0” IP核,并点击“Run Connection Automation”。
(2)导出“pwm”IP核的端口,保存设计,并“Generate Output Products”。
(3)添加“XDC”文件,把pwm_led输出端口分配给ZedBoard上的一个LED灯,编译生成Bit文件。
(4)点击Vivado “Flow Navigator”一栏里的“Generate Bitstream”,等待Vivado生成好bit文件后,在菜单栏“File -> Export -> ExportHardware…”导出硬件信息(.xsa文件),这里就包含了PS端的配置信息。该步骤如有疑问,可以参考以前的文章《ZYNQ串口打印输出——FPGA Vitis篇》。
3. Vitis工程的编写
(1)点击 Vivado 菜单“Tools-> Launch Vitis IDE”,启动 Vitis。
(2)新建 Vitis平台工程。Vitis工程的建立可以参考以前的文章《ZYNQ串口打印输出——FPGA Vitis篇》。
(3)新建 Vitis应用工程,创建一个名为“AXI_UserIPDemo”的工程,工程模板可以选择“Hello World”。
(4)在APP工程的目录下,可以找到对应我们开发IP的AXI_pwm.h的文件,这个头文件里包含里对自定义IP寄存器的读写宏定义。
(5)在“helloworld.c”文件中,修改“main”函数。我们先通过写寄存器 AXI_PWM_S00_AXI_SLV_REG0_OFFSET,控制PWM输出频率,然后通过写寄存器AXI_PWM_S00_AXI_SLV_REG1_OFFSET控制PWM输出的占空比。
(6)编译工程,将工程下载到硬件板卡上(编译和下载方式见《ZYNQ 串口打印输出——FPGA Vitis篇》)。
实验结果为: 板卡上的LED0灯呈呼吸状亮灭;
A. 工程源码下载
如果大家对我们的文章感兴趣,可以关注我们的微信公众号:“图灵研究院”:
该工程对应的源码可以通过关注该微信公众号,在公众号输入 ZYNQ_UserIP 来获取工程的下载链接,工程采用的是Vivado2021.1版本。
参考文献:
[1] http://www.alinx.com.cn/.
[2] Zynq-7000 SoC Technical Reference Manual(UG585). Xilinx官方文档
[3] ZYNQ 串口打印输出——FPGA Vitis篇. 图灵研究院
自定义AXI IP核实验——FPGA Vitis篇相关推荐
- ZYNQ AXI GPIO中断实验——FPGA Vitis篇
文章目录 1. 前言 2. Vivado工程的编写 2.1 Block Design工程设计 2.2 创建XDC管脚约束 3. Vitis工程的编写 4. 实验小结 5. 工程源码下载 1. 前言 使 ...
- ZYNQ HDMI输出实验——FPGA Vitis篇
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1. 前言 1.1 HDMI介绍 1.2 TMDS介绍 1.3 HDMI传输周期 2. Vivado工程的编写 3. Vit ...
- ZYNQ PS端MIO的使用——FPGA Vitis篇
文章目录 1. 前言 2. MIO介绍 3. Vivado工程编写 4. Vitis工程编写 5. 实验小结 A. 附录 B. 工程源码下载 1. 前言 本实验介绍如何使用ZYNQ芯片PS端的MIO. ...
- 开发自定义AXI总线外设IP核——以LED和开关为例
http://www.eefocus.com/nightseas/blog/12-10/287343_15762.html ZedBoard学习手记(二) 开发自定义AXI总线外设IP核--以LED和 ...
- [网络安全自学篇] 九十一.阿里云搭建LNMP环境及实现PHP自定义网站IP访问 (1)
这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步.本文主要分享作阿里云搭建LNMP环境及实现PHP自定义网站IP访问,同时详细介绍走过 ...
- VIVADO 自定义封装ip核(超详细)
版本:vivado 2018.3 vivado 自定义封装ip核,可以将ip核封装成带AXI总线,也可将ip核封装成不带AXI总线. 本次设计介绍,如何将当前工程封装成ip核(不带AXI总线) 目录 ...
- ZYNQ学习之路3. 定制AXI IP核
ZYNQ最大的优点就是硬核A9处理器与FPGA的结合,处理器可以扩展出任何使用者想要的外设(数字逻辑外设),FPGA与处理器通过AXI高速总线进行连接,提供了处理器到FPGA的高速带宽(ZYNQ700 ...
- 芯片IP,SOC,FPGA智能卡
芯片IP,SOC,FPGA智能卡 华夏芯(北京)通用处理器技术有限公司(以下简称"华夏芯")是创新的异构处理器 IP 提供商和芯片解决方案提供商,集团总部在北京,并分别在上海.纽约 ...
- Altera 的SOC器件之将自定义的IP挂在ARM硬核下(通过avalon总线),实现arm核与IP之间的通信
Altera 的SOC器件之将自定义的IP挂在ARM硬核下(通过avalon总线),实现arm核与IP之间的通信 软件: Quartus II 17.0 芯片: ALTERA Cyclone5 5CG ...
最新文章
- 关于Oracle数据库19c中的关键字和保留字的说明
- 基于便签纸的无限延生学习方法
- Mckinsey insights 2
- 如何在SQL Server 2017中实现图形数据库
- np实现sigmoid_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...
- git提交本地代码到新分支
- 有人认为,“中文编程”是解决中国程序员效率的秘密武器,请问它是一个“银弹”么?...
- android向web提交数据,中文乱码
- element table多选和单选
- mysql 协议还原_mysql备份还原方案xtrabackup
- 管理感悟:代码缺的不是注释,而是自解释
- 桌面云之深信服VMP平台搭建
- 通达\铭心联手,共探企业信息化营销新机遇
- Git命令使用出现Cannot update paths and switch to branch xxx at the same time解决方法
- Scrum立会报告+燃尽图(Beta阶段第七次)
- 堡垒机的主要功能是什么?为什么需要堡垒机?
- 程序员开发什么小程序挣钱_作为程序员赚钱的5种独特方式
- Opencv2.4.9源码分析——Stitching(四)
- 解决-画图程序无法读取-无效的位图文件
- 【安装Linux系统】
热门文章
- 无法启动此程序,因为计算机中丢失xinput1-3.dll,绝地求生计算机中丢失xinput1_3.dll解决方法...
- 解决xshell6需要更新才能打开的问题
- word2013删除下载的模板
- 十月末婚礼展示:“美好Lan图”派对式小型婚礼【奥帆婚礼顾问】
- AS9100航空航天质量管理体系认证
- ubuntu 20.04中sources.list文件恢复系统默认源
- [Node]如何查看安装的node包的官方使用指南,以及淘宝镜像原理和使用
- 使用yocto搭建 i.MX8QXP Linux 4.14.98_ga 板级开发包编译环境
- Oracle查询速度慢的原因总结
- 修改计算机名并加入工作组