AXI_03 AXI_LITE_SLAVE_IP核设计与验证
由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此: https://blog.csdn.net/qq_33486907/article/details/88289714 《AXI_01 《AXI总线系列文章》由来》
目录
1.AXI_LITE_SLAVE_IP
1.1 AXI_LITE_SLAVE_IP设计
1.1.1 STEP1: 建立一个空白工程,命名为AXI_Build
1.1.2 STEP2: 利用向导建立一个axi_lite_slave的IP核模板
1.1.3 STEP3: 在AXI模板中定制LED驱动逻辑
1.1.4 STEP4: 配置IP核
1.2 AXI_LITE_SLAVE_IP使用示例
1.2.1 STEP1: 建立一个工程,命名为axi_led
1.2.2 STEP2: 导入自定义IP核
1.2.3 STEP3: 搭建硬件系统
1.2.4 STEP4: 编写软件应用
在学习并掌握了《AXI_02 AXI4总线简介(协议、时序)》内容后,可以开始设计一个基于AXI总线的IP核了,设计AXI IP核有两种方式:(1)可以按照上面的内容自行设计; (2)可以使用向导生成代码,然后在Example Design上进行定制修改;
方式(1)可以自主可控,对代码编写要求较高,否则VIVADO开发环境不能很好的识别是否使用了AXI总线; 方式(2)向导生成的代码,开发环境可以较好的支持,但功能可能不是你需要的,需要进行定制修改; 不论是方式(1)还是方式(2)都需要对AXI总线协议有清楚的认识和了解。 本篇内容将阐述如何利用向导生成代码,并进行定制化修改,完成IP核的设计与仿真。
1.AXI_LITE_SLAVE_IP
AXI_LITE_SLAVE_IP设计是本篇内容中最为简单的内容,这里给出一个实例,直接利用IP核去完成对LED灯的控制,这里还涉及到与ARM端的配合使用;
1.1 AXI_LITE_SLAVE_IP设计
1.1.1 STEP1: 建立一个空白工程,命名为AXI_Build
这里随便选择一个器件即可,点击NEXT;
点击FINISH,完成空白工程建立;
1.1.2 STEP2: 利用向导建立一个axi_lite_slave的IP核模板
随后将打开一个基于AXI_LITE总线的IP核模板工程,可以在该模板工程下对工程的功能进行修改; 模板中只是给出了一个包含4个可读可写的寄存器的例子,并没有包含任何的功能,要实现特定的功能需要自行添加代码;
1.1.3 STEP3: 在AXI模板中定制LED驱动逻辑
这里要实现一个控制LED灯的逻辑功能,具体添加的代码就不再这里给出了,可以打开对应的IP核文件进行查看,添加的代码会在文件中进行明确的注释;
把要添加的代码添加完成以后,运行一下run synthesis综合一下看看有没有错误;
1.1.4 STEP4: 配置IP核
添加所有系列,以支持在所有器件上使用;
经过以上步骤以后,就可以在IP Catalog中看到这个IP核了,如下图:
之后就可以在VIVADO中设计使用该IP核了;
1.2 AXI_LITE_SLAVE_IP使用示例
示例使用RAM端,通过C语言去控制LED灯;
1.2.1 STEP1: 建立一个工程,命名为axi_led
建立工程的步骤与《1.1.1 STEP1: 建立一个空白工程,命名为AXI_Build》节中相同,不再赘述,这里只给出一些关键信息;
1.2.2 STEP2: 导入自定义IP核
在新的工程中使用自定义IP核时,需要先导入;
VIVADO会自动导入IP核;
1.2.3 STEP3: 搭建硬件系统
添加好ARM核后,双击开始配置,关于ARM核的配置就不再一一描述,这里只给出关键信息,具体配置可以到具体工程中进行查看;
ARM配置完成后,开始添加自定义IP;
执行完对应步骤,点击刷新Regenerate layout按钮重新布局,可以获得下图所示的系统;
引出LED灯的端口,如下图:
最后可以得到如图所示的系统:
配置一下自定义IP核的基地址(不配置系统将采用默认的地址),这里将地址配置为0x4000_000,这个基地址在后面编写程序的时候要使用到,如下图:
搭建完成以后开始输出products:
生成系统顶层文件:
执行run implementation,如下图:
执行完成以后打开IMPLEMENTED DESIGN,开始为设计分配管脚;这里分配管脚主要是为PL端4个LED灯端口分配管脚,PS端的管脚不需要分配,如下图:
分配完管脚以后,保存时要保存.XDC约束文件,如图:
之后,直接运行Generate Bitstream,如图:
以上步骤就完成了系统硬件的搭建工作;
1.2.4 STEP4: 编写软件应用
首先,导出板级支持包到SDK,如图:
启动SDK
建立一个APP工程,如下所示:
操作:FILE -> NEW -> Application project
工程建立以后,可以在如下所示的文件下可以看到自定义IP核的驱动:
之后打开helloworld.c的进行软件编写了:
编辑代码如下:
在VIVADO环境下将bit文件下载如SOC,如下图:
在SDK环境下运行run as,全速运行,即可看到流水灯开始运行,如下图所示:
以上便完成了一个最为简单的自定义AXI_LITE_SLAVE_IP的使用;
验证视频传送门:
https://v.youku.com/v_show/id_XNDA4ODY2MDcxMg==.html?x&sharefrom=android&sharekey=c323e94f5ac00126bfd808c4376ed4b23
不要急着跑,干货在后面,下一篇文章传送门在此:
《AXI_04 AXI_LITE_MASTER_IP设计与验证》
https://blog.csdn.net/qq_33486907/article/details/88303243
本篇IP核源码工程和验证工程传送门在此,点击下方下载链接一:
https://download.csdn.net/download/qq_33486907/1984547
或点击下载链接二:https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.22131debncNwzA&id=588531553802
推荐使用链接一,链接二即将停止服务
AXI_03 AXI_LITE_SLAVE_IP核设计与验证相关推荐
- AXI_05 AXI_FULL_IP的设计与验证
由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此: https://blog.csdn.net/qq_33486907 ...
- AXI_04 AXI_LITE_MASTER_IP设计与验证
由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此: https://blog.csdn.net/qq_33486907 ...
- FPGA逻辑设计回顾(12)RAM以及ROM的RTL设计及其验证
前言 本文首发:FPGA逻辑设计回顾(12)RAM以及ROM的RTL设计及其验证 RAM以及ROM在FPGA中的实现大体有两种方式,一种是使用IP核定制,一种是RTL设计. 也许有人会反驳,那原语呢? ...
- SoC设计与验证——概览索引
一个完整的SoC通常就是我们所说的CPU,它包含了处理器内核等其他的设备或存储器 1. SOC设计 本节主要对SoC设计的整体架构进行概述,具体详情请参照标题下的链接. 1 处理器核心 Core在总线 ...
- 数字IC设计和验证理论
1. spec文档 芯片整体系统以及细分模块都需要功能详述文档,包含信息: 接口信息 接口版本,标准,若是标准接口,则不需要时序信息,命令,数据传输信息等,只需要时钟,复位,接口信号名:若是自定义接口 ...
- FPGA—HDMI 显示器驱动设计与验证(附代码)
目录 1.理论 2.实操 2.1 顶层模块 2.2 时钟生成模块 2.3 HDMI 驱动控制模块 2.3.1 编码模块 2.3.2 并行转串行模块 2.4 顶层仿真验证 3.总结 1.理论 HDMI简 ...
- 验证matlab设计的滤波器,一种数字滤波器的设计及验证方法与流程
本发明涉及一种数字滤波器的设计及验证方法,属于数字信号处理技术领域. 背景技术: 当今,数字信号处理技术正飞速的发展,它不但成为一门学科,更是以不同的形式影响和渗透到其他的学科,因此受到人们普遍的关注 ...
- DFT设计与验证介绍——第1节:DFT简介
文章为"参考文档"的总结,不是原创! 1 文档介绍 1.1 文档目的 介绍DFT设计原理和验证方法,重点介绍IP BIST及MBIST两种设计及验证. 1.2 参考文档 1. ...
- SOC设计与验证【单核、双核架构】
基于RISCV的SOC 设计 与 验证 项目 此项目需要预先储备下面4种知识: Verilog SV C语言 Perl语言 一:SOC系统定义 二:实验目的 ...
最新文章
- linux syn 队列,linux 防御SYN攻击
- 最简单的日历控件“星期几”变为“几”
- linux安装jdk和tomcat命令
- HTML边框为零,html – 保证金,填充,边框全部为零后仍有空格?
- ST-LINK USB communication error解决方法
- iOS - Phone 电话
- 一个极其简单的在线C#IDE例子
- android 获取屏幕宽高
- 遗传算法GA优化BPNN
- 云计算 | 浅议云计算发展趋势
- 整理:不用ACE你不知道ACE有多烂,给饱受ACE折磨的弟兄们散分了。
- mathmatica使用入门
- Unity URP Rendering Path对比
- Amazon Braket 与量子计算
- R语言|如何进行t检验
- android material design主题在线配色
- oracle的weekday函数,VB weekday()函数的用法?
- 网络购物09.22-09.28
- 前端与移动开发----webAPI----BOM介绍,定时器
- 重庆抵扣联信息系统服务器,增值税专用发票抵扣联信息采集系统
热门文章
- TypeScript里的完整函数定义语法
- 一个好用的基于若干静态图片生成gif图片的在线工具
- 一个免费的网站长链接转短链接的工具
- regular expression in SAP jam integration
- object address data read debug
- follow up transaction type determination
- SAP建议客户将UI技术迁移到Fiori的六大原因
- 微信程序开发系列教程(一)开发环境搭建
- One Order行项目里Item Category是怎么计算出来的
- 为什么使用中间件下载时总是收到警告消息Object is in status Wait