小窥AMBA5 AHB协议SPEC (3)

1、基本传输

一次传输包括2个阶段

  • 地址阶段:持续一个HCLK周期,除非被上次传输扩展。

  • 数据阶段:可能需要多个HCLK周期,用HREADY信号来控制完成传输所需的周期数。

    HWIRTE控制数据传输方向:

  • 高电平时表示写传输,主机发布数据在写数据总线HWDATA[31:0]

  • 低电平时表示读传输,从机产生数据在读数据总线HRDATA[31:0]

最简单传输是没有等待状态的,因此传输只包含一个地址周期和一个数据周期。
在这里插入图片描述
在一次没有等待状态的传输中,
1、主机驱动地址和控制信号到总线上在HCLK的上升沿后
2、从机在下一个HCLK上升沿采样地址和控制信息
3、在从机采样到地址和控制信息后驱动HREADYOUT响应,该响应被主机在第三个上升沿采样。

地址阶段可出现在上一次传输的数据阶段,这种数据和地址的交叠是总线具有流水性质的基础。

从机可以往传输中插入等待状态来使传输完成获得额外的时间。每个从机都有HREADYOUT信号,它在数据阶段被从机驱动。
在这里插入图片描述
对于写操作,在被扩展的周期内主机应该保持所驱动的数据稳定。而对于读操作,从机只需要在传输的完成阶段提供有效数据即可。

在这里插入图片描述
当一次传输被用这种方式扩展时,将对下一次传输的地址阶段产生同样扩展的副作用。

2、传输类型
传输可被分类成4种类型,被HTRANS[1:0]控制。

HTRANS[1:0]类型描述
0b00IDLE表明没有数据传输。当主机不想传输数据时使用该类型。建议主机用IDLE传输来结束一次LOCKED传输。从机必须用一个无等待状态的OKAY来响应IDLE传输。
0b01BUSYBUSY传输类型使主机能在BURST传输中插入IDLE周期,这种传输类型表明主机想继续这次BURST传输但下一次传输不能立刻发生。当主机使用BUSY类型时,地址和控制信号必须体现出下一次传输。只有未定义长度的BURST能用BUSY传输作为突发传输的最后一个周期。从机必须用一个无等待状态的OKAY来响应BUSY。
0b10NONSEQ表明一次单次传输或者一次BURST传输的第一次传输。地址和控制信号和前一次传输无关。总线上的单次传输被当成长度为1的BURST传输因此类型是NONSEQ
0b11SEQBURST传输的剩余传输均是SEQ的并且地址和上次传输是相关的。控制信号和上次传输完全一致。地址等于上次传输的地址加上传输大小(被HSIZE[2:0]信号定义)

在这里插入图片描述
T0-T1 主机用一个NONSEQ型的传输开启读操作。
T1-T2 主机插入一个BUSY状态延迟第二拍数据的开启。从机提供第一拍的读数据。
T2-T3 主机已为第二拍传输准备好,标志SEQ信号,此时忽略读数据总线上的数据。
T3-T4 主机开始第三拍操作,从机将第二拍的读数据放在读总线上。
T4-T5 主机进行最后一拍读操作,但从机拉低HREADY来插入等待状态。
T5-T6 从机拉高HREADY,同时将读数据放于读总线上。
T6-T7从机将最后一拍的读数据放于数据总线上。

3、上锁传输(Locked Tranfers)
如果主机需要上锁存取,它必须拉高HMASTLOCK信号,该信号对所有从机表明当前传输序列是不可分割的,因此本次传输在处理其他传输前必须处理完成。
一般上锁传输用于保持信号标志的完整性,确保从机在微处理器的SWP指令的读写阶段不会进行其他操作。
在这里插入图片描述
在一次上锁传输后,建议主机插入一次IDLE传输。
大多数从机没有实现HMASTLOCK的需求因为它们只需能够执行它们收到的命令。但能被超过1个主机存取的,如多口Memory控制器(MPMC)必须实现HMASTLOCK接口信号。
允许主机在一次上锁传输序列的开始、中间、结尾为IDLE传输拉高HMASTLOCK,但不建议这么做,因为这种行为会影响系统的仲裁。
仍然允许但不建议主机为一串IDLE传输拉高HMASTLOCK然后在没有非IDLE传输时拉低HMASTLOCK。也会影响系统的仲裁。
要求所有上锁传输序列都是对相同的从机地址域操作的。

4、传输大小
HSIZE[2:0]表明一次数据传输的大小
在这里插入图片描述
HSIZE设置的传输大小必须小于等于数据总线宽度。
用HSIZE和HBURST来决定回环bursts的地址边界。
HSIZE和地址总线对齐,但在一次BURST传输期间,HSIZE必须保持不变。

5、Burst操作
该协议定义了4,8,16拍、未定义长度的burst和单次传输。支持递增和回环bursts。
增量bursts存取连续的位置,每次传输的地址是前一次传输地址的增量。
回环bursts在地址超越地址边界时回环,地址边界是burst拍数和传输大小的乘积。bursts拍数由HBURST控制,传输大小由HSIZE控制。如一个4拍的,4字节的回环bursts传输在4*4=16字节的边界回环。因此,如果bursts起始地址为0X34,则它由四个传输地址0x34,0x38,0x3c,0x30组成。

HBURST[2:0]控制了burst类型
在这里插入图片描述
主机不能开始一次跨越1KB地址边界的增量burst。
如果主机想进行一次单次传输可以使用
(1)single bursts传输:HBURST[2:0]=3’b000
(2) 未定义长度的burst传输但长度为1,HBURST[2:0]=3’b001

burst传输必须和地址边界(由传输大小决定)对齐,比如4字节数据的传输,地址低2位必须为0(因为00放第1字节,01放第2字节,。。11放第4字节),IDLE传输期间地址也必须对齐。

  • 在一次BUSY传输后结束BURST传输
    在一次burst传输开始后,主机如果在下一次传输前需要更多时钟周期,可以使用BUSY。
    在一次未定义长度的burst中(INCR),主机可以插入BUSY传输然后决定是否继续需要传输数据。主机可以在BUSY后开始一次NONSEQ或者IDLE操作来高效地结束本次burst。但协议不允许主机使用BUSY来结束定义长度的burst传输。这些定义长度的burst传输必须使用SEQ来结束。同样不允许主机在一次SINGLE burst传输后立马插入BUSY传输,SINGLE burst传输必须紧接IDLE传输或者NONSEQ传输。(single burst可以理解为拍数为1的定长传输,定长传输均不可以使用BUSY结束)
  • Burst传输的提前结束
    (1)从机error响应
    如果从机提供一个ERROR响应,那主机可以取消本次burst的剩余传输。但这不是严格的要求。主机仍然可以继续传输完本次burst。
    若主机取消了本次burst的剩余传输,它必须在ERROR的2个时钟周期内改变HTRANS为IDLE。
    若主机未完成burst传输,当再次操作该从机时,不需要重建那次burst。
    (2)多层互连停止
    主机不允许提前结束一次burst传输,从机必须设计成若burst未停止就要正确工作。
    在一个多主机系统中,多层互连组件可通过使另一个主机存取从机来结束一次burst。从机必须结束来自原先主机的burst才能响应新的主机。

例子:
在这里插入图片描述
从机插入了一个等待状态。注意wrap burst的地址。

在这里插入图片描述
INCR4的读操作,地址在16字节边界不会回环,而是继续递增。

在这里插入图片描述
前半段是半字增量burst,地址每次加2,后半段是字增量burst,地址每次加4。

6、等待传输
从机如果需要更多周期来采样数据,可使用HREADYOUT来插入等待状态。在等待周期内,主机对传输类型和地址的改变均有限制。主要包括:
(1)等待周期传输类型的变化
在一次等待传输中,主机被允许改变传输类型由IDLE到NONSEQ。改变为NONSEQ后HTRANS必须保持,直到HREADY被拉高。
在这里插入图片描述
SINGLE burst必须紧接IDLE或者NONSEQ,这里就是IDLE的例子,被HREADY隔断了地址阶段和数据阶段。
在一次定长burst传输的等待传输中,主机被允许改变传输类型从BUSY到SEQ,改变为SEQ后HTRANS必须保持,直到HREADY被拉高。改变为NONSEQ后必须保持,直到HREADY被拉高。
在这里插入图片描述
在一次未定义长度的burst的等待传输中,主机可以改变传输类型从BUSY到任意类型。当HREADY是低电平时,如果BUSY转到SEQ则继续本次burst,若BUSY转到IDLE或NONSEQ则结束本次burst。
在这里插入图片描述
(2)等待周期的地址变化
在等待周期内,主机被允许为IDLE传输改变地址,当HTRANS由IDLE变为NONSEQ时,地址必须保持不变直到HREADY被拉高。
在这里插入图片描述
在一次等待传输中,如果从机响应ERROR,主机被允许在HREADY为低电平期间修改地址。
在这里插入图片描述

7、保护控制
在这里插入图片描述
8、Memory类型
在这里插入图片描述
9、安全传输
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值