AMBA总线介绍

AMBA - Arm Microcontroller Bus Architecture

arm提供的soc片内总线协议。从1995年的AMBA1开始, 已经经历了很多版本。

 

1995 - AMBA1.0 定义了APB外设总线以及ASB系统总线

1999 - AMBA2.0 定义了AHB - Advanced High-performance Bus, APB总线升级为同步总线

2003 - AMBA3.0 发布了高性能互联协议AXI,  以及APB总线扩展, AHB-Lite协议等

 

以及后来发布的AMBA4.0, AMBA5.0 协议, 定义了更多的总线及扩展。

具体可参考arm官网,

https://www.arm.com/products/silicon-ip-system/embedded-system-design/amba-specifications


 

不管怎样, 目前最常用的amba总线有如下三种:

AHB - Advanced High-performance Bus, 高级高性能总线

APB - Advanced Peripheral Bus, 高级外围/外设总线

AXI - Advanced eXtensible Interface, 高级可扩展接口

 

AHB 替代原来的ASB, 连接片上的高速/高频模块, 如gic, ddr controller, dma controller等等。

APB 高级外设总线, 很好理解, 如i2c, spi, gpio等低速主控制器, 用APB连接就可以了。

AXI 为AMBA3.0引入的总线协议,  相比AHB有更多的优势,  故现在SOC设计中有取代AHB的趋势。

可直接连接ddr controller, usb controller, dma controller, sram, gic, AES加解密芯片等等, 也可以利用axi bridage连接apb总线, 

利用apb连接各种低速外设/外围控制器。如uart, i2c, sdio, i2s, pwm, timer, efuse, spi等等。

 


故总体来说, 目前的芯片设计中,  arm架构中最常用的两种片内总线就是AXI和APB了。

这里有一个问题, 既然这么多ip core都是利用这两种总线向连接的。

那他们的时钟/工作频率都一样了?? 

 

根据外部总线如I2C, I2S, SPI等来说, 这些基本都是单主机, 多从机的模式。 所以是的, 同一时间, 外设利用总线传输数据的速率是一样的。但微观上, 主机控制器同一时间肯定只能和一个设备进行通信, 所以该设备数据传输完后,  主机端控制器可以切换总线时钟频率。

注: 以上只是根据常识进行的判断。 具体如何还需要后续研究...


对于uart, usb这种没有时钟总线的协议来说, 又是这么样的呢?

1. 由于他们没有时钟线,  所以PLL模块就不需要给uart 和 usb控制器输入总线时钟信号了(控制器本身的工作时钟还是要的)

2. 对于uart来说, 通常情况下开机初始化后就设置了115200等默认时钟, 主机端采取一样的频率进行连接就可以。

即uart没有时钟线, 主机和设备之间的时钟匹配是人来确定的...115200bps, 即发送和采集都以这个波特率进行的。

3. 对于usb来说, 也没有时钟总线。。。但usb 集线器上你可以连接各种速度的设备。。。

比如1.5Mbps的鼠标, 12Mbps的串口转usb设备(fdti, cp210x等), 480Mbps的usb2.0 U盘, 5Gbps的USB3.0 U盘等等。

他们都是同时存在 且 宏观上是同时在工作的。。。

所以他们的"总线时钟"该如何确定... 哦 他们没有时钟线....

所以usb一切事务都是主机控制器发起... 在设备枚举过程中, 设备会发送01010101一类的方波信号,  实际因为usb是差分信号,

所以应该叫JKJKJKJK的信号, usb主机根据设备发送的方波信号的频率, 就确定了该设备的工作/传输频率。。。

 

以后每次数据传输过程中,  当主机控制器要和对应速度的设备通信时,  就会采用匹配的速度发送数据了。。。

 

所以usb总线,  传输的速度, 微观上是一直在变化的。。。


ok, 说了很多外部总线, 对于APB, AXI这些片内总线来说,  复杂度是更高的...

这两者都是多主机, 多从机的总线。。。

 

对于很多ip core来说,  例如usb控制器, 编解码IP, 加解密IP, DMA控制器(PM08)等等, 他们要访问系统的主存的, 基本都是利用AXI总线连接的。

显然, 主存数据存取的操作, 明显是控制器为主机, ddr为设备。。。

所以不像外部总线, 片内总线有非常多的主机。。。

这些IP和ddr之间, 可能都是在不同速率进行传输的。。。(纯瞎猜...)

另外CPU要进行IP core的控制类操作,  明显不需要通过AXI,  可以利用APB等总线进行控制。

 

以编解码器来说,  控制需要利用APB连接, 主存存取需要通过AXI连接, 

所以编解码器至少需要3种时钟输入,  如APB总线时钟PCLK, AXI总线时钟ACLK, 以及编解码自己工作的时钟CCLK。


相关知识很多, 纯粹想到哪写到哪...

记录些AMBA总线相关的不错博客...

http://www.21ic.com/tougao/article/3700.html

https://blog.csdn.net/lkiller_hust/article/details/51344815

https://www.cnblogs.com/HolmeXin/p/9530711.html

https://www.cnblogs.com/uiojhi/archive/2018/07/31/9366884.html

https://www.cnblogs.com/leaven/archive/2010/11/30/1891885.html

https://blog.csdn.net/The_Time_Runner/article/details/103582513

https://blog.csdn.net/ivy_reny/article/details/56274412

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值