SOC中AXI总线怎么连接

电子说

1.3w人已加入

描述

AXI总线作为一种线,可以挂若干主设备与从设备,如果若干主设备要同时访问总线,必然会导致总线需要仲裁。本文不涉及细节,只简单减少原理,一般来说这个东西不需要自己写,ARM会提供,但是作为设计者要大致知道原理。

1. 所谓总线,是个什么意思。

总线

实际上是有个interconnect的模块把所有东西连起来的。主设备会发起读写请求,从设备只能被动接受。SOC中的CPU或者其他加速核心比如AI加速器是主设备。从设备一般是存储啊外设啊之类的东西。基本的连接关系是这样的。

2. 这个Interconnect里有什么东西

这个Interconnect连接了整个系统,起到了仲裁的信号的作用,所以还是比较关键的。一般来讲,疯狂往interconnect上挂各种主从设备是会影响最后的时序的。由于AXI官方文档IHI0022E里面貌似是没有太多这方面介绍,换句话说,AXI协议并没有规定主从设备连一起应该如何工作,于是这里以赛灵思ug1037为基础介绍一下。

2.1 1to1 interconnect

总线

这个贼简单,不用过多减少。。。一对一的连上去就好了。模范夫妻。

2.2 N-to-1 Interconnect

总线

这个是稍微复杂的版本,类似于一妻多夫。。。如果有多个主设备,一个从设备。那中间需要一个仲裁器。某个主设备传输前请求总线,如果总线忙就等着。一般来讲,最简单的仲裁原理是轮换优先级。例如有三个主设备ABC。上次总线权限给了A。则下次的优先级变为BCA。

2.3 1-to-N Interconnect

总线

1-to-N原理上比N-to-1简单。一夫多妻的版本。。。只需要简单判断一下地址确认要往哪个从设备里写,基本上就是多路选择器。不需要仲裁。总线也不会阻塞。

2.4 N-to-M Interconnect

这种情况就比较复杂了。。。涉及到多设备时间管理。但实际上稍微复杂一点的SOC这类情况才是常态。

总线

如上图所示,读写通道是分开的。各自有一个仲裁器(Arbiter),仲裁原理和N-to-1是一致的。仲裁器会从所有写请求和所有读请求中各选出来一个来执行。

3. 实际上用的时候怎么用

自己造AXI的各种轮子其实是比较繁琐的,不仅仅是interconnect问题,举个简单的例子,AXI的DMA什么的自己造轮子DEBUG非常耗时。如果是FPGA,可以直接用XILINX的各路IP。如果是ASIC, 一般会有对应的IP卖。比如ARM提供的最小系统一般会自带这个interconnect。

如果SOC比较复杂,那还是有可能需要自己造这个轮子。比如为了压榨总线的性能,如果两个主设备访问的是两个不同的从设备,如果想实现同时执行,那对这个interconnect就有其他的要求。

4. 总结

一般情况下,总线可以理解为一种资源。由一对主从设备独占使用。对于AXI来讲,一般是两种资源,读总线和写总线,通过某种仲裁方式分配给不同的主从设备。

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分