AXI InterConnect可以对AXI总线进行管理,支持多个主机采用AXI总线访问从机,或者一个主机访问多个从机。真正实现了总线通信,N Master模块与M Slave模块的通信,减少了相互间通信的复杂度,内部实现时钟域转换,不需要外部的过度干预,内部可实现FIFO等,免去了很多场景下需要FIFO,Register,位宽转换,协议转换的需求。(AXI互连内核允许将AXI主设备和从设备的任何混合设备连接到它,这些设备在数据宽度、时钟域和AXI子协议(AXI 4、AXI 3或AXI 4-Lite)方面可以彼此不同。当任何连接的主设备或从设备的接口特性与互连内部的纵横式交换机的接口特性不同时,将自动推断出适当的基础架构核心并将其连接在互连内以执行必要的转换。该功能很重要,能够在该ip核内实现转换,解决了很大的问题)
该IP核最多可以支持16个主设备、16个从设备,如果需要更多的接口,可以多加入几个IP核,通常该IP核在Block Design中用的比较多,下面介绍一下在Block Design中的用法。在Block Design中通常会简化IP核的用法,但是可以自动布线。对于AXI这种信号比较多的信号,在Block Design中也更方便一些。
1、单个主机访问多个从机
单个主机访问多个从机的原理是采用为从机的AXI总线分配不同的地址,这样主机通过访问不同的地址分区来访问不同的从机。
如下所示:采用AXI InterCOnnect连接两个BRAM控制器,为连接BRAM控制器的AXI总线分配地址空间,分配了两个4K的地址空间,连接主机的AXI总线就可以访问不同的地址空间来访问不同的BRAM进行读写数据。
对其进行仿真,对两个BRAM所占的地址空间进行连续写,写完之后进行连续读。可以看到实现了一个主机控制两个从机。
2、多个主机访问多个从机
多个主机读写一个从机是通过主机的ID号不同来实现的,每个主机具有不同的ID号,内部通过读写的时候地址会把这个主机号加上,代表哪个主机进行访问,传回的数据就传到相应的主机。
如下所示:两个主机采用AXI interconnect连接两个BRAM控制器,两个从机具有不同的地址空间,两个主机具有不同的ID号,这样就实现了不同的主机对不同从机的访问。
当主机同时访问从机时,还可以设置主机的优先级进行判别哪一个主机进项访问,
如果相对该IP核进行更深入的了解,可以参考XILNX官方给的product Guide。