【AMBA】AHB总线中的HTRANS、HSIZE、HBURST以及Wrap不对齐突发和1K边界问题


HTRANS、HSIZE和HBURST共同决定下一次数据传输的地址。

HTRANS[1:0]定义传输类型

HTRANS[1:0]主机传输状态描述
00IDLE空闲表示没有进行数据传输,默认状态。
主设备虽然可能已经占用了总线,但是还没有开始传输数据。
从设备需要返回OKAY响应
01BUSY忙主设备正在进行传输,因此没法立即开始新一轮传输。
(可以理解为主设备申请延时)从设备需要返回OKAY响应
10NONSEQ非连续表示单次传输,或者是突发传输(Burst Transfer)中的第一拍数据
在非连序模式下,每次传输都是独立的,后续的传输并不依赖于前一次传输的地址。
11SEQ连续突发中剩下的传输是连续传输。控制信息会与前一次传输相同,但地址等于前一次传输地址加上HSIZE对应的字节数

Note:BUSY传输类型让主设备有能力在突发传输的中间暂停,插入等待周期,即使它仍占有总线并且计划继续当前的突发传输。在BUSY状态下,尽管当前传输暂停,但主设备仍需保持下一次传输所需的正确地址和控制信号,以便在条件允许时能够无缝继续数据传输。
写操作和读操作

  • 突发传输的第一拍传输类型应该是NONSEQ。
  • 主设备没办法立刻开始突发的第二拍传输,因此主设备使用BUSY来延迟。
  • 主开始进行突发的第三拍传输,但这一次从设备没准备好,通过拉低HREADY来插入单个等待状态。

HSIZE[2:0]定义传输大小

最小是1字节,最大是1024bit。
在这里插入图片描述

HBURST[2:0]定义突发类型/传输拍数

HBURST信号是一个重要的控制信号,用于指示数据传输是否为突发传输(Burst Transfer)以及如果是,它指定的是哪种类型的突发模式。
突发传输是一种高效的传输模式,允许连续的数据传输而无需在每次传输之间重新设置地址和控制信号,从而显著提高数据吞吐量和总线效率。

incrementing(递增):每次传输的地址会在上一次地址基础上递增。
wraping(回环):如果传输的起始地址没有与突发传输中总字节数对齐,那么地址在到达边界后会自动循环回到起始地址。

“对齐”是指起始地址应该正好是突发传输中传输数据总字节的整数倍

例如,一个包含四个拍(beat)的回环突发,每个拍是一个字(4Byte)访问,将会在16字节的边界处循环。因此,如果传输的起始地址是0x34,那么它将包含到地址0x34、0x38、0x3C和再次回到0x30的四次传输。(起始地址不是数据大小16的整数倍)

HBURST[2:0]突发传输类型描述拍数
000SINGLE单次传输1beat
001INCR不定长的递增突发
010WRAP44拍的回环突发4beat
011INCR44拍的递增突发4beat
100WRAP88拍的回环突发8beat
101INCR88拍的递增突发8beat
110WRAP1616拍的回环突发16beat
111INCR1616拍的递增突发16beat

Note:选择INCR时,每一拍都可以改变HSIZE的值;如果选择的是WRAP4~INCR16,那只有在突发结束后才能改变HSIZE的值。

传输数据总量(字节数)计算

一次突发中传输的数据总量=拍数(HBURST)*每拍的数据大小(HSIZE)。

Wrap不对齐突发传输

在AMBA AHB协议中,WRAP突发模式允许数据访问在达到预定边界时循环回到起始地址,这样可以有效地访问固定大小的数据块,即使这些数据块跨越了地址空间的边界。WRAP边界通常是基于突发传输的总字节数(burst size)来确定的,这个总字节数等于数据大小(size)和突发长度(number of beats)的乘积。

WRAP 边界的计算方法

WRAP边界通常等于突发传输的总字节数。如果突发传输的起始地址(start address)是对齐的,那么WRAP边界就是从该地址开始的总字节数。如果起始地址没有对齐,则边界会有所不同,需要根据突发传输的总字节数进行调整。

不对齐的WRAP突发传输例子

注意!这里对齐的概念和AXI协议中的不一样!当讨论的是AXI协议中的对齐概念时,对AHB来说,它就不支持对齐传输。

假设我们有一个突发传输,其数据大小为32位(即4字节),突发长度为8个beat,意味着整个突发传输的总字节数是32位 * 8 = 256位 = 32字节。

情况1:起始地址对齐

如果起始地址是32字节的倍数(例如,0x0000_0000),那么WRAP边界也是32字节,即在达到0x0000_001F之后,地址将循环回到0x0000_0000。

情况2:起始地址不对齐

现在假设起始地址是0x0000_0003(即3字节偏移),由于数据大小为4字节,这意味着起始地址没有与突发传输的总字节数对齐。

在这种情况下,突发传输的第一个beat将从0x0000_0003开始,然后依次增加4字节直到达到边界。由于起始地址是3字节偏移,所以第一个完整的32字节块将在0x0000_0004开始,最后一个地址是0x0000_0023。然而,由于我们的起始地址是0x0000_0003,这意味着突发传输的最后部分将跨越边界,回到0x0000_0000。

具体计算如下:

  • 第1 beat: 地址=0x0000_0003
  • 第2 beat: 地址=0x0000_0007
  • 第8 beat: 正常情况下应该是0x0000_0023,但由于是WRAP模式,地址会循环回到0x0000_0003(因为从0x0000_0004开始到0x0000_0023是32字节,即WRAP边界)

因此,在这个例子中,WRAP边界实际上是在从0x0000_0004到0x0000_0023的32字节范围内,但由于起始地址是0x0000_0003,突发传输会在达到0x0000_0023后循环回到0x0000_0003,形成一个循环的访问模式。

1K边界

“1K边界”是指一种地址对齐和传输限制,它规定了突发传输(Burst Transfers)不能跨越1KB(1024字节)的地址边界/低10bit的地址。这一限制主要应用于AHB总线的突发传输模式中,以防止数据访问跨越从设备(slave)的地址空间边界,从而避免数据错误和冲突。

在AHB中,从设备通常被配置有特定的地址范围,通常是1KB对齐的,这意味着从设备的地址空间从某个1KB的边界开始,持续1KB,然后是下一个从设备的地址空间,以此类推。这种设计简化了地址解码逻辑,使得多个从设备可以在同一总线上并行存在,而不会互相干扰。

当主设备(master)想要进行突发传输时,如果这次传输会跨越1KB的边界,那么它必须被分割成两部分或更多部分,以确保每次突发传输都在同一个1KB的地址范围内。例如,如果一个突发传输开始于地址0x3F00,那么在达到地址0x3FFF之后,突发传输必须停止,随后从0x4000地址重新开始,以确保不跨越1KB的边界。

为了遵守1KB边界的限制,AHB总线协议要求主设备在设计时考虑这一约束,确保在必要的时候能够将大的突发传输分解为符合边界限制的小突发传输。

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值