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

 

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第1张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第2张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第3张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第4张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第5张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第6张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第7张图片

       这里随便选择一个器件即可,点击NEXT; 

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第8张图片

       点击FINISH,完成空白工程建立;

1.1.2 STEP2: 利用向导建立一个axi_lite_slave的IP核模板

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第9张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第10张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第11张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第12张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第13张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第14张图片

随后将打开一个基于AXI_LITE总线的IP核模板工程,可以在该模板工程下对工程的功能进行修改;  模板中只是给出了一个包含4个可读可写的寄存器的例子,并没有包含任何的功能,要实现特定的功能需要自行添加代码;

1.1.3  STEP3: 在AXI模板中定制LED驱动逻辑

这里要实现一个控制LED灯的逻辑功能,具体添加的代码就不再这里给出了,可以打开对应的IP核文件进行查看,添加的代码会在文件中进行明确的注释;

把要添加的代码添加完成以后,运行一下run synthesis综合一下看看有没有错误;

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第15张图片

 

1.1.4  STEP4: 配置IP核

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第16张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第17张图片

添加所有系列,以支持在所有器件上使用;

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第18张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第19张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第20张图片

       经过以上步骤以后,就可以在IP Catalog中看到这个IP核了,如下图:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第21张图片

       之后就可以在VIVADO中设计使用该IP核了;

1.2 AXI_LITE_SLAVE_IP使用示例

示例使用RAM端,通过C语言去控制LED灯;

1.2.1 STEP1: 建立一个工程,命名为axi_led

建立工程的步骤与《1.1.1 STEP1: 建立一个空白工程,命名为AXI_Build》节中相同,不再赘述,这里只给出一些关键信息;

 

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第22张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第23张图片

 

1.2.2 STEP2: 导入自定义IP核

       在新的工程中使用自定义IP核时,需要先导入;

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第24张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第25张图片

       VIVADO会自动导入IP核;

 

1.2.3 STEP3: 搭建硬件系统

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第26张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第27张图片

       添加好ARM核后,双击开始配置,关于ARM核的配置就不再一一描述,这里只给出关键信息,具体配置可以到具体工程中进行查看;

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第28张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第29张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第30张图片

ARM配置完成后,开始添加自定义IP;

 

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第31张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第32张图片

执行完对应步骤,点击刷新Regenerate layout按钮重新布局,可以获得下图所示的系统;

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第33张图片

       引出LED灯的端口,如下图:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第34张图片

       最后可以得到如图所示的系统:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第35张图片

       配置一下自定义IP核的基地址(不配置系统将采用默认的地址),这里将地址配置为0x4000_000,这个基地址在后面编写程序的时候要使用到,如下图:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第36张图片

       搭建完成以后开始输出products:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第37张图片

       生成系统顶层文件:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第38张图片

执行run implementation,如下图:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第39张图片

      

       执行完成以后打开IMPLEMENTED DESIGN,开始为设计分配管脚;这里分配管脚主要是为PL端4个LED灯端口分配管脚,PS端的管脚不需要分配,如下图:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第40张图片

       分配完管脚以后,保存时要保存.XDC约束文件,如图:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第41张图片

       之后,直接运行Generate Bitstream,如图:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第42张图片

       以上步骤就完成了系统硬件的搭建工作;

1.2.4  STEP4: 编写软件应用

首先,导出板级支持包到SDK,如图:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第43张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第44张图片

 

启动SDK

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第45张图片

 

建立一个APP工程,如下所示:

操作:FILE -> NEW -> Application project

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第46张图片

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第47张图片

工程建立以后,可以在如下所示的文件下可以看到自定义IP核的驱动:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第48张图片

       之后打开helloworld.c的进行软件编写了:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第49张图片

       编辑代码如下:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第50张图片

       在VIVADO环境下将bit文件下载如SOC,如下图:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第51张图片

       在SDK环境下运行run as,全速运行,即可看到流水灯开始运行,如下图所示:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第52张图片

以上便完成了一个最为简单的自定义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核源码工程和验证工程传送门在此,扫一扫获取下载链接:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证_第53张图片

或直接点击下载链接:https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.22131debncNwzA&id=588531553802

 

 

 

你可能感兴趣的:(AXI_03 AXI_LITE_SLAVE_IP核设计与验证)