AHB协议


AMBA高级处理器总线架构,不同的速率要求构成了高性能SOC设计的通信标准:

  • AHB高级高性能总线
  • APB高级外围总线
  • AXI高级可拓展接口

什么是AHB总线协议

AHB:主要是针对高速率、高频宽及快速系统模块所设计的总线,可以连接在如微处理器、芯片上或芯片外的内存模块和DMA等高效率总线。AHB可以成为一个完整独立的SOC芯片的骨架,不仅如此还可以通过AHB-APB桥来连接APB总线系统。
特点:

  • 高速总线,高性能
  • 2级流水线操作
  • 可支持多个总线主设备(最多16个)
  • 支持burst传输
  • 总线带宽:8、16、32、64、128bits
  • 上升沿触发操作
  • 对于一个新设计建议使用AHB

在这里插入图片描述

AHB总线组成

  • MasterAHB主设备: 发起一次读/写操作;某一时刻只允许一个主设备使用总线
  • SlaveAHB从设备: 响应一次读/写操作;通过地址映射来选择使用哪一个从设备
  • ArbiterAHB仲裁器: 允许某一个主设备控制总线
  • DecoderAHB译码器: 通过地址译码来决定选择哪一个从设备

在这里插入图片描述

AHB信号描述

信号 来源 描述
HCLK 总线时钟 总线时钟,上升沿采样
HRESENTn 系统总线 复位信号,低有效
HADDR[31:0] Master 32位地址总线
HTRANS[1:0] Master 当前传输类型IDLE,BUSY,NONSEQ,SEQ
HWRITE Master 1为写,0为读
HSIZE[2:0] Master 每一个transfer传输的数据大小,以字节为单位,最高支持1024位
HBURST[2:0] Master burst类型,支持4、8、16burst,incrementing/wrapping
HPROT[3:0] Master 保护控制信号,需要slave带保护功能,一般不用
HWDATA[31:0] Master 写数据总线,Master到slave
HRDATA[31:0] Slave 读数据总线,Slave到Master
HSELx Decoder slave选择信号
HREADY Slave 控制HRDATA的读出数据周期,高:Slaves输出传输结束;低:Slave需延长传输周期
HRESP[1:0] Slave Slave发给Master的总线传输状态OKAY,ERROR,RETRY,SPLIT

HRESP[1:0]:

  • OKAY:单周期响应
  • ERROR:两周期响应
  • RETRY:两周期响应
  • SPLIT:两周期响应

总线的流水特性需要从设备两个周期的响应。可以使得主设备有足够的时间处理下一次传输。

AHB传输

基本AHB传输:

  • 两个阶段:地址周期,HREADY;数据周期,由HREADY信号决定需要几个cycle
  • 流水线传送:先是地址周期,然后是数据周期

流水线操作: 当总线上有多个为处理完的请求,也就是当A请求被master执行后,slave做响应期间,紧接着master又收到新的请求B,这是master就要执行流水线一样的操作。
在这里插入图片描述

Bust传输

什么是Burst传输?

Burst(突发):是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所设计到存储单元的数量就是突发长度(Burst Lengths,简称BL)。就是地址执法一次,首个地址发出就决定了后面的地址是什么,而不是发送一个地址,再传送一个数据的方式。

为什么要使用Burst传输?
Burst传输就是提高了传输效率。如果不用burst,普通访问模式下,主设备发出的传输命令到达从设备,由于仲裁等原因,传输会产生一定的延时。如果主设备读一个数据,处理一个数据的话,由于延时的存在,处理速度会极低。在进行突发传输时,只需要发送一次地址,内存就会依次地自动对后面相应数量的存储单元进行读/写操作。而不再需要控制器连续地提供访问地址。所以,第一次数据的传输需要若干个周期,而其后每个数据只需一个周期的即可获得。

两种Burst模式:

  • 增量突发(INCR): 地址递增,在地址边界处不回环
  • 回环突发(WRAP): 地址递增,但会在特定的地址边界上回环;一般在需要填充cache line的时候使用。
HBURST[2:0] Burst类型 描述
000 single transfer 单个传输,HTRANS是NONSEQ或IDLE
001 INCR 地址从开始地址开始递增,突发长度不固定
010 WRAP4 突发4位,地址递增回环
011 INCR4 突发4位,地址递增
100 WRAP8 突发8位,地址递增回环
101 INCR8 突发8位,地址递增
110 WRAP16 突发16位,地址递增回环
111 INCR16 突发16位,地址递增

注意:

  • INCR类型和WRAP类型的Burst时,发送的地址不能跨过1KB的地址空间
  • WRAP类型的Burst主要用于CPU中有cache line需要填充

地址的递增与HSIZE有关,当HSIZE指定单个传输数据位宽为半字(16bit)时,地址按每次加2递增。当HSIZE指定单个传输数据位宽为1个word(32位)时,地址是按每次加4递增。
HSIZE[2:0]

HSIZE[2:0] 描述
000 8bits
001 16bits
010 32bits
011 64bits
100 128bits
101 256bits
110 512bits
111 1024bits

增量Burst传输
有INCR、INCR4、INCR8和INCR16四种类型
INCR类型如下:
在这里插入图片描述
在这里插入图片描述
回环Burst传输
在0x3C地址之后,根据回环的地址边界,第四拍的地址变为0X30。4个地址(0x30、0x34、0x38、0x3c),每个地址各不相同,这四个地址是一个回环范围。起始地址决定了回环操作的回环范围。
在这里插入图片描述

参考:
哔哩哔哩大学
https://blog.csdn.net/SummerXRT/article/details/118077270

版权声明:本文为CSDN博主「卢卡猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_41774721/article/details/122719980

生成海报
点赞 0

卢卡猫

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

AHB协议

AMBA高级处理器总线架构,不同的速率要求构成了高性能SOC设计的通信标准:AHB高级高性能总线APB高级外围总线AXI高级可拓展接口 什么是AHB总线协议 AHB:主要是针对高速率、高频宽及快速系统模块所设计的

什么是波特率,波特率怎么计算

✍ 什么是波特率,波特率怎么计算➹ 更多硬件知识,请持续关注公众号【数字硬鉴】 概述:   ☆简而言之,串口传输的波特率即为每秒钟传输二进制的位数。   ☆脱离枯燥乏味的文字描述&#x