由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此: https://blog.csdn.net/qq_33486907/article/details/88289714 《AXI_01 《AXI总线系列文章》由来》
目录
1 AXI_LITE_MASTER_IP
1.1 AXI_LITE_MASTER_IP设计
1.1.1 STEP1: 利用向导建立一个axi_lite_master的IP核模板
1.1.2 STEP2: 在AXI模板中制定用户逻辑
1.1.3 STEP3: 配置IP核
1.2 AXI_LITE_MASTER_IP使用示例
1.2.1STEP1: 搭建仿真工程
1.2.2 STEP2: 搭建上板工程
AXI_LITE_SLAVE_IP示例使用中使用ARM核完成了一个ZYNQ中PS到PL端的联合设计;这也是自定义IP最为常用的一种方法,在一些特殊工况下,可能还会使用到接下来所讲解的几种使用方式,首先从AXI_LITE_MASTER_IP开始;
AXI_LITE_MASTER_IP作为AXI_LITE总线的主设备,可以用轻量级的方式承担起主设备的职能;
再次打开3.1.1 AXI_LITE_SLAVE_IP中建立的空白工程AXI_Build,来建立axi_lite_mater的自定义IP核。
随后将打开一个基于AXI_LITE总线的IP核模板工程,可以在该模板工程下对工程的功能进行修改; 模板中给出以先进行寄存器写操作,紧接着在进行读操作的例子,并且没有用户端口,所以要使用必须对IP进行修改,达到读写操作可通过用户端口控制的效果;
这里要逻辑功能修改为使用用户端口可控的AXI_LITE主设备,具体添加的代码就不再这里给出了,可以打开对应的IP核文件进行查看,添加的代码会在文件中进行明确的注释;把要添加的代码添加完成以后,运行一下run synthesis综合一下看看有没有错误;
添加所有系列,以支持在所有器件上使用;
其余步骤不再赘述,请参考3.1.1.4的步骤;之后可以在IP Catalog中看到这个IP核了,如下图:
AXI_LITE_SLAVE_IP使用示例中,采用了与ARM配合的方式,完成了对LED等的控制; 这一节的示例将使用axi_lite_master来代替ARM的作用,通过纯逻辑来完成对LED灯的控制;
对于建立工程、导入自定义IP核等步骤这里不再赘述。
建立一个工程命名为axi_lite_simulate_led,工程建立完毕以后,如下图所示:
具体细节和仿真代码,可在实际工程中查看。现在给出仿真结果:
从仿真结果可以看出,首先对AXI_LITE_SLAVE_LED 的第一个寄存器写入了0x5555_5555数据,然后再次写入0xAAAA_AAAA数据,同时对应的LED的状态也在跟着变化。
上板工程需要对用户端口进行操作,就是在RTL逻辑寄存器写操作功能,上板后可自行实现对LED灯的控制。在axi_lite_simulate_led工程上进行修改,并命名为axi_lite_board_led,将再添加一个控制寄存器读写的IP,IP名字为reg_control,具体细节可参看具体工程的代码,搭建好的工程如下图所示:
将工程下载到开发板后,如图示,流水灯开始运行,该工程没有使用ARM端,是一个纯逻辑的工程,只不过内部采用了AX_LITE总线而已;
验证视频传送门:
https://v.youku.com/v_show/id_XNDA4ODY2MDcxMg==.html?x&sharefrom=android&sharekey=c323e94f5ac00126bfd808c4376ed4b23
不要急着跑,干货在后面,下一篇文章传送门在此:
《AXI_05 AXI_FULL_IP的设计与验证》
https://blog.csdn.net/qq_33486907/article/details/88306243
本篇IP核源码工程和验证工程传送门在此,点击下方下载链接一:
https://download.csdn.net/download/qq_33486907/1984547
或点击下载链接二:https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.22131debncNwzA&id=588531553802
推荐使用链接一,链接二即将停止服务