AHB协议详解

AHB总线

AHB总线在AMBA2中就已经定义,AHB总线一开始主要是作为系统高速总线使用,适用于高性能,低功耗的系统设计。目前因为AXI总线作为高速总线的优势更加明显,AHB会用在相对低速的系统设计中。基本排序就是APB适用于低速设计,AXI适用于高速设计,AHB则介于两者之间。
在AMBA协议中,AHB一开始主要面向系统级高带宽高性能的系统互联设计,支持多master,多slave的互联模式。但是随着系统的发展,AHB更多用于支持简单的数据传输,因此后来对AHB协议做了简化设计,定义了AHB-Lite协议,简化之后的协议主要用在单master数据访问中,不需要支持split与retry,因为中间的多外设结构都可以通过互联方便的实现。
目前AHB协议多用在低性能需求的M型处理器中,也多用在片上memory或者一些低带宽需求定位外设接口设计。
AHB 结构
因为AHB协议支持多master,多slave的结构设计,因此需要有Arbiter与Decoder实现请求与响应的仲裁与编解码映射。
在这里插入图片描述
Master会首先向仲裁发送发文请求,仲裁决定合适让master获取总线访问的权限,master获取权限之后会将数据与控制信号发送到仲裁器,仲裁器通过地址解析判断对应的slave通路,然后将请求发送到对应的目的端。同样响应的数据会通过Decoder解析,然后返回给对应的master。
通过这种多路复用的机制实现多对多的访问。但是这种结构有一个缺点就是一次能有一对maste与slave通信,无法实现多对多的同时通信,对于带宽需求比较大或者实时性要求较高的系统不太适合。
AHB支持增量传输(Incrementing burst)与回环传输(Wrapping burst)。Incrementing burst可以实现地址与数据的递增,Wrapping burst可以实现地址的边界的换回。
AHB-Lite结构
AHB-Lite是对AHB协议的精简,支持单个master的数据传输,在一对多的设计中可以通过Decoder对master的地址解码选择对应的slave通路。
在这里插入图片描述
master接口信号:
在这里插入图片描述
salve接口信号:
在这里插入图片描述
AHB信号:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
AHB传输
Basic transfers
在这里插入图片描述
在basic传输中,可以看到传输分为地址段和数据端,第一个cycle传输地址控制信息,第二个cycle传输数据信息。在数据段中,slave会返回对应的响应hready。
With Wait transfers
在这里插入图片描述slave侧可以通过hready来添加延时等待,以防止内部无法及时处理或者准备所需要的数据。每个slave都会有一个hreadyout来表示内部是否已经准备完成。Internet会将所有的hreadyout合并成hready来控制相关的传输。
Transfer type
在这里插入图片描述
AHB中定义了4中传输状态类型。IDLE表示无数据传输;BUSY表示master处于忙碌状态,用于在burst中插入发送的等待延时;NONSEQ表示一个single传输或者是一个burst传输中的第一拍数据,NONSEQ中地址与之前的传输没有关系,表示一笔新的传输;SEQ表示处于burst传输状态中,发送的地址与之前的地址是有关系,因为burst传输地址有相关性。
在这里插入图片描述
T0-T1:master发送burst读的第一拍地址(0x20)信息,传输类型为NONSEQS。
T1-T2:master发出一个BUSY状态,表示本次发送的控制信息无效;slave返回上一拍对应的读数据Data(0x20)。
T2-T3: master发送第二拍burst地址(0x24)信息,此时传输状态为SEQ;此时因为上一拍master发送的为BUSY传输,因此这拍master会忽略slave的返回值。
T3-T4:master继续发送第三拍的地址(0x28)信息,slave返回第二拍数据Data(0x24);
T4-T5:master继续发送最后一拍的地址(0x2c)信息,此时salve无法及时处理master发送的传输,因此通过拉低hready来进入等待状态。
T5-T6:因为上一个cycle中slave拉低了hready,master需要保持对应的地址段信息,slave此时可以响应master,因此把hready拉高表示此次传输有效,把对应的第三拍的数据Data(0x28)返回。
T6-T7:此时master不会发送控制信息,slave返回最后一拍的数据Data(0x2C)。

Lock transfers
在这里插入图片描述
lock传输是为了保证master发送的一笔传输都被一次性响应完,不允许中间插入其他传输响应。这个主要应用在多个master通过AHB访问同一个slave的情况。
Transfer size
在这里插入图片描述
AHB hsize有3bit位宽,表示传输数据的大小为2的幂次方Byte,最大支持1024bit。

Burst operaption
在这里插入图片描述
AHB支持多种传输类型:单笔传输(SINGLE);不定长的递增传输(INCR),回环传输(WRAP4/8/16),定长的递增传输(INCR4/8/16);
Wrap4 Transfer
在这里插入图片描述
wrap4是16字节为边界做环回,起始地址为0x38,会环回到0x30地址重新进行地址递增。地址环回的简单计算方法是从0开始进行计算,比如正常的传输应该是0x00,0x04,0x08,0x0c,然后根据具体的起始地址以及环回长度进行递增。如果是wrap8,则0x00-0x1c一组,0x20~0x3c一组;
INCR4 transfer
在这里插入图片描述
增量传输为地址递增的传输,每次传输地址都会相应递增。地址递增的大小根据数据的大小来判定。
Protection control
在这里插入图片描述
Hprot可以针对不同的传输类型进行控制。
Hprot[0],Hprot[1]用来表示数据指令传输以及相关的优先级顺序。
Hprot[2]用来指示是否为bufferable传输,影响到传输响应的返回节点,是否可以从中间返回还是必须要从最终目的端返回,即是否支持early response。
Hprot[3]表示是否支持传输可能改,比如是否支持对读写传输的合并或者拆分,对传输的hburst或者hsize的更改。(系统可以按照更高效的方式进行传输的重新组合)
HProt[4]表示是否必须从cache中取数以及是否更新最终的memory。
Hprot[5]表示是否更新cache中的内容
Hprot[6]表示这笔传输在内存中是否与其他的master共享,来保证所有master看到的都是一致的数据。
Secure transfer
AHB中有HNONSEC信号可以实现secure属性的传输控制。Secure 传输可实现不同安全属性的任务传输,针对不同secure属性的slave可以实现不同的访问权限。secure可以访问nonsecure属性的salve,但是nonsecure传输不能访问secure属性的slave。
Exclusive transfer
HEXCL信号是可以实现AHB的独占访问传输。独占访问适用在多master的系统中,一个master对一段地址空间进行独占传输,如果在传输期间,这段地址没有被其他的master访问过,则独占访问成功,返回HEXOKAY,如果传输期间,这段地址有被其他master访问过,则独占访问失败,返回HOKAY。
AHB不同版本之间的对比
在这里插入图片描述
原文

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值