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

推荐使用链接一,链接二即将停止服务

  • 2
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: AXI4是一种高性能、高带宽的接口协议,在使用时会用到AXI4 Master和AXI4 Slave两个模块。对于AXI4 Master和AXI4 Slave的源代码对应分析,需要从两个模块的功能和架构入手。 AXI4 Master是连接处理器、DMA、FPGA以及其他数据源的主机总线接口,主要用于发送读/写事务请求,以及接收响应数据。其源代码的实现需要遵循AXI4协议的规定,包括发出READ/WRITE数据请求等操作。 而AXI4 Slave是连接存储器、FIFO、寄存器、设备控制器等外设的从机总线接口,主要负责响应AXI4 Master的读/写事务请求。其源代码的实现需要实现AXI4 Slave接口的各类功能,例如收到接收到READ/WRITE数据请求时进行响应的机制等。 总的来说,AXI4 Master和AXI4 Slave的源代码对应分析需要具有扎实的计算机系统结构基础、嵌入式系统开发经验及VHDL或Verilog语言编程技能。在使用时,需要遵循AXI4协议规定,进行必要的代码优化,以提高系统的性能和稳定性。 ### 回答2: AXI4是一种高性能、低功耗、低复杂度的总线协议,被广泛用于FPGA和SoC芯片中。在AXI4中,Master和Slave是两个重要概念,Master可以去向Slave发起读写请求,Slave提供相应的数据或状态返回。 在AXI4 Master Slave源码对应分析中,我们需要先了解AXI4协议的基本原理和结构。AXI4的数据传输包括地址、数据和控制信号三个部分。其中,地址和控制信号一般由Master控制发送,数据由Slave提供返回。Master和Slave之间的通讯可以通过总线信号实现,如时钟、使能、读写标志等。 在源码分析过程中,我们需要先理清楚设计的框架结构和各个模块之间的关系。一般来说,一个AXI4 Master Slave设计包括Master和Slave两个主模块,以及一些必要的逻辑模块。Master可以是一个外部设备,如CPU,也可以是FPGA内部的逻辑模块;同样地,Slave也可以是一个外部设备,如存储器,也可以是FPGA内部的逻辑模块。在设计内部逻辑模块时,需要考虑合理的接口设计和信号传输方式,以充分利用AXI4协议的特点,实现高效稳定的数据传输。 在进行源码分析时,需要对每个模块的具体功能做详细的了解,如输入输出端口、状态寄存器、控制信号等。此外,还需要仔细考虑各个模块的时序要求,以避免数据传输时的不一致和错误。在分析过程中,可以借助FPGA开发工具的仿真功能,对源码进行模拟验证,以确保设计的正确性和可靠性。 总之,AXI4 Master Slave源码对应分析是一个相对较为复杂和细致的工作,需要对AXI4协议有深刻理解和丰富的实践经验,同时还需要熟练掌握FPGA开发环境和设计工具的使用。只有通过不断地实践和积累,才能在设计中发挥出AXI4协议的最大潜力,实现高性能、低功耗的数据传输。 ### 回答3: AXI4是ARM公司推出的一种高性能片上总线协议,支持多核、功耗优化、多带宽等特性,应用广泛。本文将对AXI4 Master和Slave源码进行分析。 AXI4 Master部分的源码是通用的,可以配置成读写、反悔等各种操作,实现起来比较简单。具体实现代码可以参考Xilinx公司提供的axi_master_burst.v文件。 AXI4 Slave部分的源码比较复杂,需要支持读写反悔各种操作,还要处理数据乱序、地址捕获等问题。通常是通过Finite State Machine(有限状态机)来实现AXI4 Slave端的逻辑。具体实现代码可以参考Xilinx公司提供的axi_slave_lite.v文件。 AXI4协议中的控制信号包括:地址、数据、控制、状态和辅助等。其中,地址信号用于指定操作的地址,控制信号用于指定读写类型等操作,状态信号用于反映操作是否完成,辅助信号提供了一些附加信息。 AXI4 Master和Slave源码是嵌入式系统设计中非常重要的实现部分,掌握其实现原理对于理解AXI4协议及其应用场景非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值