AMBA AHB的burst termination

前言

在AMBA AHB协议中,AHB master可以用burst传输连续取多笔数据。AHB定义了4、8和16拍的burst传输、未定义长度的burst传输和单次传输。Burst传输中支持incrementing和wrapping。

  • Incrementing burst用于访问顺序的memory地址,burst中每个拍的地址都是前一拍地址的增量,增量大小取决于HSIZE。
  • Wrapping burst在跨越地址边界时会卷绕回去。地址边界值是由burst中的拍数和每拍传输大小的乘积得来的。Burst传输的拍数是受HBURST控制,每拍传输大小是受HSIZE控制。举个例子:如果1笔burst传输的HBURST为INCR4(传输4拍),HSIZE为3’b010(传输大小为Word),那么它的地址边界值为16Byte(4*4=16)。因此,假如这笔burst传输的起始地址是0x14,那么它4拍的地址将是:0x14, 0x18, 0x1c, 0x10。

那么burst传输允许没发完全部的beat就终止(termination)吗?答案是满足一定的条件就可以提前终止,不过AXI是无法提前终止的。

Burst termination场景1

对于未定义长度(undefined length)的burst传输(HBURST为INCR),AHB master如果需要更多时间才能送出INCR Burst的下一拍数据传输,那么它会先插入BUSY拍,表示master处于忙状态。但如果AHB master最终发现自己不需要下一拍数据了,那么它可以直接结束当前的INCR burst传输,回到IDLE或者发起另一个burst传输了。要回到IDLE的话,下一拍的HTRANS将是IDLE,要发起另一个burst传输的话,下一拍的HTRANS将是NONSEQUENTIAL。

未定义长度burst传输从INCR回到IDLE的时序图示例为:

未定义长度burst传输从INCR回到NONSEQUENTIAL的时序图示例为:

另外需要注意的是,AHB协议不允许其它有固定长度的burst传输以BUSY拍结束的,它们必须以SEQ拍结束。固定长度的burst传输有:INCR4, INCR8, INCR16, WRAP4, WRAP8, WRAP16。

对于单次传输(HBURST为SINGLE),它的下一拍只能是IDLE或者NONSEQUENTIAL,也就是不可能是BUSY。

总结这个场景,AHB中想要从BUSY拍直接结束的传输只可能是未定义长度的burst传输,不可能是其它传输的。

Burst termination场景2

在Burst传输过程中,如果AHB slave返回错误的响应,那么Burst传输也是可以终止的。

如果AHB slave返回ERROR响应,那么AHB master是可以取消burst传输中还未发出的拍,不过这也不是一个严格要求,AHB master仍然可以继续把剩下的拍都发送完。举个例子:在WRAP8的burst传输中,如果AHB master在收到slave的ERROR响应时,才完成了2拍,那么协议允许剩下的6拍不必发给AHB slave了。这样对AHB的性能提升和节省功耗还是有些帮助的,因为前面出现EROOR响应,AHB master通常要先去处理下,那么之后未发送的拍是可以省掉的。

Burst termination场景3

在多层互联总线和多AHB master情况下,也可能存在burst提前终止。

尽管AHB master不允许无缘无故提前终止burst传输,但是AHB slave必须设计成允许burst提前终止。当多层互联总线用于多个AHB master系统的场景中,当前互联总线正在burst访问1个slave,如果其它master来了个新请求,互联总线中的仲裁逻辑会决定新请求是否优先于当前的burts访问。如果不是,那么就等当前burst传输完之后,排序传输新来的请求。如果是,那么它可以提前终止当前的burst传输,以便给优先级更高的请求腾出总线去访问AHB slave。因此AHB slave必须终止原来burst传输,然后去处理新AHB master发出的请求。

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
AHB Burst传输是指在AMBA(Advanced Microcontroller Bus Architecture)高级微控制器总线架构中的一种数据传输方式。它通过在一次传输中传输多个数据项来提高数据传输效率。这种传输方式可以使用不同的传输类型和不同的传输长度。其中,传输类型可以是INCR(递增)、FIXED(固定)或WRAP(循环),而传输长度可以是不定长或固定长度。 在AHB Burst传输中,INCR传输类型表示每次传输的地址会递增,可以按照一个固定步长进行地址增加。例如,一个INCR的写请求burst的地址步长为0x2,表示每次传输的地址会增加0x2。同样地,一个INCR的读请求burst的地址步长为0x4,表示每次传输的地址会增加0x4。这样可以在一次传输中连续读取或写入多个地址的数据项。 另外,AHB Burst传输中的等待状态(Waited transfers)会影响下一个传输的地址阶段的时间。在某些地址的传输过程中,可能会存在等待状态,这会延长下一个地址的传输时间。例如,在一个到地址B的传输过程中的数据阶段有一个等待状态,这会导致下一个地址C的地址阶段被延迟。 此外,在AHB Burst传输中,还有单次传输的方式,即SINGLE burst。这种传输方式只包含一个长度为1的不定长burst,用于单次数据传输。 综上所述,AHB Burst传输是一种在AMBA高级微控制器总线架构中使用的数据传输方式,它可以提高数据传输效率。根据不同的传输类型和传输长度,可以实现递增或固定步长的连续数据传输,并且可能存在等待状态影响下一个传输的地址阶段的时间。此外,还可以使用单次传输方式进行单次数据传输。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【AHB协议解读 三】传输(Transfers)](https://blog.csdn.net/qq_41849447/article/details/116902245)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷公子的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值