georgewang chuxuezheng luwenjin malei
APB是双cycle设计,只有一半的cycle在传数据,设计简单,一般用来连接吞吐量需求较低配置端口,不过在ARM总线内部都会转成AXI来传输。AHB算是三通道协议,分别是读写数据和地址通道,读写共用一个地址通道,所以吞吐量也不是很理想,但是设计简单,cortex m0就是ahb的,还有很多legacy device采用ahb,ahb在ARM总线内部也是转成AXI传输和仲裁。AXI的是5通道设计的,读写地址分开,吞吐量大,第一个版本叫AXI3,后来更新到AXI4,支持最多256beat的long burst和QoS。AMBA 4之后ARM还发布了AMBA CHI,以便更多处理器通过环形总线互联,实现环形总线上的数据传输。
APB一般用来连接配置接口,AHB和AXI多用来接数据传输接口,从性能和设计复杂度来看 APB < AHB < AXI。
APB (Advanced Peripherals Bus)是低带宽的总线,主要用来连接外设,比如系统外设的寄存器接口。它的信号要少的多,但必须支持32位,66兆赫兹信号。
AHB(Advanced High-performance Bus)是AMBA2里定义的总线协议。它支持单边时钟协议,单周期总线权限交接,64/128位总线带宽等特性。速度比AHB高
AXI(Advanced eXtensible Interface)是最初AMBA3定义的总线标准。目标服务高性能和高时钟频率的系统设计。它提供单独的地址/控制和数据周期,支持非对齐的数据传输,爆发(burst)型总线事务等特性。AXI3和AXI4就是AMBA3和AMBA4定义的高速总线标准。
APB和AHB用在ARM7, ARM9和Cortex-M的ARM处理器中。AXI3应用比较广泛,比如Cortex-A9,Cortex-R5/F。AXI4在最新的Cortex-A7和Cortex-A15使用。
以上两篇combine一下就好了。
对APB接口的频率好像没有特别的规定,比如总线和外围设备的APB时钟跟AXI时钟往往共源,通过apb_clken来产生分频或者同频。Cortex-A7和Cortex-A15记得用的ACE?
APB时钟一般比系统总线低很多,可以用clken来分频或者用完全async的时钟。async的话要看系统模块是否支持。Cortex-A7和Cortex-A15用的的确是ACE,考虑到MP的coherency问题,一般会用CCI-400 或者 CCN-504。
刚查了一下APB的规范,确实没有频率限制。A7和A15使用的是ACE,多谢揪错!但哪个ARM的处理器使用AXI4呢?
ACE包含AXI4的,ACE比AXI4多了AC,CR,CD通道(用来多核间小窗口聊天)。现在流行多核,AXI4应该不太适合做处理器接口吧? 嗯CCN-504就是AMBA CHI的总线实现