由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此:   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核设计与验证相关推荐

  1. AXI_05 AXI_FULL_IP的设计与验证

    由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此:   https://blog.csdn.net/qq_33486907 ...

  2. AXI_04 AXI_LITE_MASTER_IP设计与验证

    由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此:   https://blog.csdn.net/qq_33486907 ...

  3. FPGA逻辑设计回顾(12)RAM以及ROM的RTL设计及其验证

    前言 本文首发:FPGA逻辑设计回顾(12)RAM以及ROM的RTL设计及其验证 RAM以及ROM在FPGA中的实现大体有两种方式,一种是使用IP核定制,一种是RTL设计. 也许有人会反驳,那原语呢? ...

  4. SoC设计与验证——概览索引

    一个完整的SoC通常就是我们所说的CPU,它包含了处理器内核等其他的设备或存储器 1. SOC设计 本节主要对SoC设计的整体架构进行概述,具体详情请参照标题下的链接. 1 处理器核心 Core在总线 ...

  5. 数字IC设计和验证理论

    1. spec文档 芯片整体系统以及细分模块都需要功能详述文档,包含信息: 接口信息 接口版本,标准,若是标准接口,则不需要时序信息,命令,数据传输信息等,只需要时钟,复位,接口信号名:若是自定义接口 ...

  6. FPGA—HDMI 显示器驱动设计与验证(附代码)

    目录 1.理论 2.实操 2.1 顶层模块 2.2 时钟生成模块 2.3 HDMI 驱动控制模块 2.3.1 编码模块 2.3.2 并行转串行模块 2.4 顶层仿真验证 3.总结 1.理论 HDMI简 ...

  7. 验证matlab设计的滤波器,一种数字滤波器的设计及验证方法与流程

    本发明涉及一种数字滤波器的设计及验证方法,属于数字信号处理技术领域. 背景技术: 当今,数字信号处理技术正飞速的发展,它不但成为一门学科,更是以不同的形式影响和渗透到其他的学科,因此受到人们普遍的关注 ...

  8. DFT设计与验证介绍——第1节:DFT简介

    文章为"参考文档"的总结,不是原创! 1  文档介绍 1.1  文档目的 介绍DFT设计原理和验证方法,重点介绍IP BIST及MBIST两种设计及验证. 1.2  参考文档 1. ...

  9. SOC设计与验证【单核、双核架构】

    基于RISCV的SOC 设计 与 验证 项目 此项目需要预先储备下面4种知识: Verilog        SV        C语言        Perl语言 一:SOC系统定义 二:实验目的 ...

最新文章

  1. linux syn 队列,linux 防御SYN攻击
  2. 最简单的日历控件“星期几”变为“几”
  3. linux安装jdk和tomcat命令
  4. HTML边框为零,html – 保证金,填充,边框全部为零后仍有空格?
  5. ST-LINK USB communication error解决方法
  6. iOS - Phone 电话
  7. 一个极其简单的在线C#IDE例子
  8. android 获取屏幕宽高
  9. 遗传算法GA优化BPNN
  10. 云计算 | 浅议云计算发展趋势
  11. 整理:不用ACE你不知道ACE有多烂,给饱受ACE折磨的弟兄们散分了。
  12. mathmatica使用入门
  13. Unity URP Rendering Path对比
  14. Amazon Braket 与量子计算
  15. R语言|如何进行t检验
  16. android material design主题在线配色
  17. oracle的weekday函数,VB weekday()函数的用法?
  18. 网络购物09.22-09.28
  19. 前端与移动开发----webAPI----BOM介绍,定时器
  20. 重庆抵扣联信息系统服务器,增值税专用发票抵扣联信息采集系统

热门文章

  1. TypeScript里的完整函数定义语法
  2. 一个好用的基于若干静态图片生成gif图片的在线工具
  3. 一个免费的网站长链接转短链接的工具
  4. regular expression in SAP jam integration
  5. object address data read debug
  6. follow up transaction type determination
  7. SAP建议客户将UI技术迁移到Fiori的六大原因
  8. 微信程序开发系列教程(一)开发环境搭建
  9. One Order行项目里Item Category是怎么计算出来的
  10. 为什么使用中间件下载时总是收到警告消息Object is in status Wait