InterConnect和SmartConnect内核都可以连接一个或多个AXI内存映射的主设备到一个或多个内存映射的从设备,那么在什么时候要使用地址映射,也就是什么时候采用InterConnect或SmartConnect的IP进行互连。在搭建PCIE的过程中遇到过这样的一种现象:
如图,BAR和存储空间都采用BRAM,在存储空间所使用的BRAM中,我使用了SmartConnect进行地址映射,而用于BAR地址的BRAM,没有使用SmartConnect。验证后,并没有报错,只是存在警告,可以正常使用。跟着b站视频(视频教程中,BAR没有有采用SmartConnect,存储用DDR,采用了SmartConnect)。
后来尝试将存储空间的BRAM的SmartConnect互连去掉,发现也没有问题,也是有报错。
在这个基础上,我删除了S_AXI接口的连线,采用AUTo自动连线。 自动连线将所有的接口都加上了SmartConnect或InterConnect ,同样也没有问题。
问题就来了,为啥这三种情况都可以呢?据初步分析,在该工程下,这里的地址映射转换实际上可有可无,因为一个AXI端口只需要连接一个AXI的设备,不需要进行地址管理。并不会影响最终的使用。但是如果主设备需要利用同一个接口对多个AXI接口设备范围地址,此时就必须使用InterConnect或SmartConnect,进行地址管理,对主设备来说,就是实现统一寻址。