charlie_zhang的个人空间 https://blog.eetop.cn/910906 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

关于基础协议AMBA之AHB和APB的理解

热度 6已有 2459 次阅读| 2022-4-25 15:48 |个人分类:协议理解|系统分类:芯片设计

这个协议其实很简单,很容易入门,但是想透彻理解,并不容易。

都会提出一个问题:他们有什么区别?为何需要这两个协议?适用场景是什么?

每当问到这个问题,很多人都能够回答一二,例如

 - AHB是高性能,允许address phase + data phase pipe方式进行,一定程度上支持类似AXI的outstanding能力,APB则不能

 - APB一般用于低速外设,AHB用于高速外设

然后我会说,嗯第一个回答的很好,同样频率,slave response zero delay情况下,AHB确实比APB数据transaction带宽高,那你知道burst吗?你是如何理解AHB拥有的burst功能的呢?;第二个回答也没错,那能回答下,低速外设和高速外设特征上有什么不同,低速高速的标准是什么,为何APB用于低速外设,而AHB用于高速呢?

 - burst就是突发传输,也可以认为是打包传输,以INCR4为例,向4个连续地址单元(每个单元大小由Hsize控制),这四个transaction认为不能中断,彼此一定是back-to-back(先不考虑early termination的事情),对应对连续地址的访问场景,可以是memory,也可以是地址连续的配置寄存器。对于一般的单master场景,例如某SoC集成单核cpu,且该cpu只有一个AHB master口(用此口取指令,访问memory,访问外设),而且系统中无DMA,该AHB master挂了诸如flash,sram,IO device等slave,在这种情况下。cpu发出的ahb transaction有两种选择,一个是用的back-to-back single mode,另外是用INCR4,但其实这两种选择效率是相同的,INC4体现不出任何优势,那优势到底如何体现呢?

   通过刚才的例子,认识到单AHB master系统中,是无法体现burst优势的,然后我们再系统中增加一个master,例如通用DMA控制器,并假设这个DMA只有一个master口(当然还有一个slave配置口,这里不讨论),最多支持4 channel,channel的具体细节可以由软件配置,不做细节探讨,但它最明显的特征是系统中出现了两个AHB master,假设两个master某个时刻都要去访问同一个资源,例如sram。

 CPU可能是在执行程序读取sram中某个变量,DMA可能正在IO与sram之间搬移数据,这时就需要仲裁了,如果arbiter看不到任何single/INCR4的信息,两个master过来的请求地位是等同的,它就会有各种稀奇古怪的仲裁策略。但实际上我们并不希望他们地位等同,加入DMA的初衷是减轻 cpu的负担,让它可以几乎不被打扰专注做自己事情,例如4个channel分别是:USB OTG正在发射数据,需要DMA从sram中顺序取内容填充到USB transimit regs中;CAN/SPI/I2C等都在收数据,他们内部都有fifo,当fifo almost full时,希望DMA赶紧把这些数据搬移到sram中,防止fifo溢出(uart)或者IO transaction pending(例如I2C)。系统设计的目标是DMA访问memory时,一旦开始就不要被打断,快速的完成,虽然这样会导致CPU执行稍微慢了一些,这样就能够使得device fifo内容能够快速填充或读取,fifo 不上溢也不下溢,IO device保证running状态,不会被中止或出现数据丢失现象。当然如果系统中存在latency,仲裁切换时有损耗,burst更体现了高效率;

 - 低速高速并没有明确的界限,都是相对的,例如有些系统中,AHB仅仅有几十Mhz的速度,而有些系统中APB却有高达几百Mhz的速度。它们之间的区别主要在协议的不同,AHB协议复杂性要高一些,implementation时 cost要大一些(假设是protocol compliant),但这些feature对于一般低速外设其实并不需要,例如I2C/SPI/SDIO OTG/USB之类配置通道,不会出现INCR/WRAP之类burst场景,而且配置通道一般都是初始化时简单配置下,running时数据带宽很低,例如I2C 峰值400Kbps,算下来也就max bandwidth 50KB/s,用APB完成能够handle这种场景,对应的cost/area都比较低,而且可以进一步降低APB 频率,performance又能够接受,APB当然是较好的选择了。注意中间插入一个AHB2APB 异步桥。

  细节:注意AHB 与APB decoder的cost差别,AHB address phase与data phase是pipe进行的,老地址马上就被新地址pipe掉了,因此需要寄存器暂存才能执行对slave的访问,这时AHB cost大的一个角度。

 -----------------------------------------------------------------------------------------------------

写在最后,关于理解什么是协议,例如拿到一个IP,若要想在不同厂家的不同SoC系统中复用,必须说自己是standard protocol compliant,当然协议会有各种optional的feature。除此之外,如果你修改了IP,然后集成在自己的特定SoC系统中,可以正常work,而且工作的还不错,但是却不能成为protocol compliant,拿出去后就不能随便在其他SoC系统中复用,这就是协议的含义 - 即要以大家约定的方式工作,虽然修改了协议在某个特殊系统中仍然能工作,但是不具备可移植性。

5

点赞

刚表态过的朋友 (5 人)

发表评论 评论 (2 个评论)

回复 hodor 2022-8-30 17:17
求前辈推荐一个基础入门的AHB2APB帖子
回复 charlie_zhang 2022-10-17 09:25
hodor: 求前辈推荐一个基础入门的AHB2APB帖子
直接去看标准协议,去看ARM官 IP代码。

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 30

    粉丝
  • 12

    好友
  • 73

    获赞
  • 18

    评论
  • 1100

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 06:10 , Processed in 0.023457 second(s), 16 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部