AHB学习笔记1.AHB概述2.AHB信号3.AHB传输4.控制信号

1.AHB概述

AHB总线是一种专为高性能同步传输设计的总线,层次高于APB总线,支持以下特性:

  • 突发传输
  • 拆分事务
  • 主设备单时钟周期传输
  • 单时钟沿操作
  • 非三态实现
  • 宽数据总线配置(64/128bit)

1.1.典型AHB系统

典型的AHB系统包括以下部分:

  • 可支持高带宽传输的主干总线
  • AHB主设备(如高性能CPU和DMA设备等)
  • AHB从设备(存储器和APB桥等)

1.2.AHB互连

AHB的互连使用多路复用器策略,由以下几个部分组成:

  • 主设备:发起通信,所有主设备将通行地址和数据发送到主设备多路复用器
  • 从设备:回应通信,从主设备多路复用器获得通信地址和数据,将回应数据发送到从设备多路复用器
  • 判决器:主设备多路复用器的控制器,控制哪一个主设备的通信数据可以被发送到从机
  • 解码器:从设备多路复用器的控制器,控制哪一个从设备的通信数据可以被发送回主机

2.AHB信号

2.1.基本AHB信号

信号名

位宽

来源

描述

HCLK

1

系统时钟

传输系统的时钟

HRESETn

1

复位系统

传输系统复位信号,低有效

HADDR

32

主机

主机发送传输目标地址

HTRANS

2

主机

当前发生的传输类型

HWRITE

1

主机

读写信号:1-写操作;0-读操作

HSIZE

3

主机

传输位宽,标记一次传输的位宽

HBURST

3

主机

突发传输类型

HPROT

4

主机

协议类型,标记传输使用协议的额外信息

HWDATA

32

主机

发送数据,主机发送到从机的数据

HSELx

x

解码器

标记哪一个从机被选中,由地址解码产生

HRDATA

32

从机

接收数据,从机发送到主机的数据

HREADY

1

从机

传输完成信号,高有效

HRESP

2

从机

传输状态的额外标记

2.2.多主机传输信号

信号名

位宽

来源

描述

HBUSREQx

x

主机

主机x向判决器请求传输,最多支持16个主机

HLOCKx

x

主机

主机x向判决器请求锁定传输,其他主机在锁定期内无法使用总线

HGRANTx

x

判决器

主机x权限标记信号,当有效时(为高有效),主机x在AHB总线空闲时具有最高的控制权限

HMASTER

4

判决器

主机标号,标记当前传输由哪个主机控制

HMASTLOCK

1

判决器

锁定标记,标记当前总线被某个主机锁定

HSPLITx

16x

从机

事务分离标记,用于标记哪个主机应当重启事务

3.AHB传输

AHB传输分为以下几个部分:

  • 主机获取总线使用权:主机向判决器发送总线请求信号,判决器发送应答后主机可以开始传输
  • 数据传输:主机向从机传输数据,分为以下两个部分:
    • 发送地址和控制信号:包括地址,位宽,突发类型(增量突发和回卷突发)等控制信号,仅一个时钟周期
    • 数据传输:进行数据交换,一个或多个时钟周期
  • 从机应答:从机通过HRESP和HREADY标记完成状态,对于HRESP,有以下状态:
    • OKAY:标记传输完成,当HRESP为该状态且HREADY拉高时,传输完成
    • ERROR:标记传输出错
    • RETRY和SPLIT:标记传输未完成,主设备仍需要占用总线

关于突发传输,理论上进行突发传输的主设备应当一直占据总线,但是为了缩短等待时间,AHB允许打断突发传输,并在一段时间后重启该突发传输

3.1.基本传输

AHB的基本传输过程由两个部分组成:

  • 地址/控制传输:传输地址信息和控制信息,仅占一个时钟周期
  • 数据传输:可能需要多个时钟周期,由信号HREADY决定(拉高才结束数据传输)

3.1.1.无等待传输

ahb_basic_nowait.png

无等待传输下,一个传输与三个时钟沿有关:

  • 第一个时钟沿:第一个时钟沿后,主机将地址信息和控制信息发送到总线上
  • 第二个时钟沿:第二个时钟沿上,从机采样主机的地址信息和控制信息。第二个时钟沿后,从机将响应信号和数据发送到总线上
  • 第三个时钟沿:主机采样从机响应信号和数据,传输完成

3.1.2.有等待传输

ahb_basic_wait.png

有等待传输下,数据传输阶段可以扩展,即在HREADY拉高之前,数据传输阶段不结束。要求写数据在HREADY拉高前保持稳定,主机在HREADY拉高后采样读数据

3.1.3.流水线传输

ahb_basic_water.png

AHB总线支持流水线传输,即将传输分为地址-数据两个部分流水进行,本次传输的地址必然在上一次地址之后,本次传输的数据必定紧跟在本次传输地址之后。因此,当上一次的数据传输阻塞导致传输周期增加时,下一传输的地址周期也会相应的变长:

  • A1和C1为第一次传输的地址和控制信号
  • WD1和RD1是第一次传输的数据,该传输为单时钟即无阻塞的传输,同时发送的还有下一次传输的地址和控制信号:A2和C2
  • 第二次传输为多周期传输,因此WD2和RD2占据多个时钟周期,对应的,同时发送的第三次传输地址和控制信A3和C3也被延迟相同的时钟周期数
  • WD3和RD3为第三次传输的数据

3.2.传输类型

传输类型使用端口HTRANS标记,有以下取值:

  • IDLE(00):标志主机占有AHB总线,但是没有数据传输发生。从机需要使用OKAY状态回应该类型
  • BUSY(01):标志主机占有AHB总线并在进行猝发传输,但下一个传输不能立刻发生。从机需要使用OKAY状态回应
  • NONSEQ(10):标志主机当前发送的地址和控制信号与上一次传输无关(单次传输就是该状态)
  • SEQ(11):标记主机处于猝发传输的中间部分,即当前发送的地址和控制信号与上一次地址和控制信号有关

例子如下图所示:

ahb_trantype.JPG

  • 第一次传输,开启一次猝发传输,因此该地址与上一次传输无关,使用类型NONSEQ
  • 第二次传输,无法立刻进行传输,因此使用BUSY标记延迟一个周期,延迟后可以进行传输,且处于猝发传输中,因此地址与上一次地址有关,使用SEQ标记
  • 之后均为猝发传输,均使用SEQ类型

3.3.猝发传输

3.3.1.猝发类型

猝发传输分为两类:

  • 增量猝发:传输过程中传输地址递增。下一次传输的地址是上一次地址加上一个增量
  • 回卷猝发:猝发的地址范围被限制在一个固定范围之内,传输地址递增,若是超出则回到地址范围的开始的地址。例如从0x34进行增量为4,范围为16的回卷猝发,地址顺序为0x34、0x38、0x3c,0x30

猝发类型使用字段HBURST标记,含义如下表所示:

HBURST[2:0]

类型

描述

000

SINGLE

单个传输

001

INCR

无限制长度的增量猝发传输

010

WRAP4

4拍回卷猝发

011

INCR4

4拍增量猝发

100

WRAP8

8拍回卷猝发

101

INCR8

8拍增量猝发

110

WRAP16

16拍回卷猝发

111

INCR16

16拍增量猝发

注意一次猝发传输不能跨越1kB的地址区间,且传输的起始地址必须与数据类型对应,例如传输字数据的二进制起始地址必须满足后两位为00。

3.3.2.猝发终止

从机通过监控HTRANS发现猝发传输的终止:

  • 若下一个HTRANS标记为BUSY或SEQ:猝发传输未终止
  • 若下一个HTRANS标记为NONSEQ或IDLE:上一次猝发传输已经终止

若猝发传输是提前终止的,如总线控制权被剥夺,那么主机需要在可以进行传输时重建猝发传输。例如一个4拍传输仅发送了一拍就终止,主机需要使用INCR类型的猝发构建3拍传输以重建。

3.3.3.猝发切分传输

[暂时略过,需要使用时再补充]

3.4.数据总线

当传输位宽不同时,数据总线的使用情况如下所示(小端传输):

ahb_data_bus.JPG

4.控制信号

4.1.控制总线

4.1.1.HSIZE

HSIZE控制传输的数据结构位数,如下表所示:

HSIZE(bit)

位宽

描述

000

8

字节传输(Byte)

001

16

半字传输(Half word)

010

32

字传输(Word)

011

64

-

100

128

4字传输

101

256

8字传输

110

512

-

111

1024

-

4.1.2.HPROT

HPROT提供对传输协议的额外说明,如下所示:

  • HPROT[3]:0-Cacheable;1-Not cacheable
  • HPROT[2]:0-Bufferable;1-Not bufferable
  • HPROT[1]:0-Privileged access;1-User access
  • HPROT[0]:0-Opcode fetch;1-Data access

4.1.3.HSELx

HSELx由地址解码器产生,用于指示哪个从机被选中。从机当HREADY为高,即一次传输完成后锁存HSELx信号,若HSELx在HREADY为低时有效,将不会对本次传输产生影响。

4.1.4.HRESETn

HRESETn信号是复位信号,该信号是异步触发并同步释放的,当该信号有效时,所有主机均要将相关信号复位,包括将HTRANS置为IDLE。

4.2.响应信号

4.2.1.HREADY

HREADY信号标志传输是否完成:0-未完成,需要插入额外周期;1-已完成

4.2.2.HRESP

HRESP用于标记传输完成的状态:

  • OKAY(00):传输完成
  • ERROR(01):传输错误,例如协议错误或写入只读地址
  • RETRY(10):传输未正常完成,需要重新尝试传输。该响应不会改变优先级
  • SPLIT(11):传输未正常完成,需要从下一个地址重新启动传输。该响应可能改变优先级

4.3.总线仲裁

仲裁器保证一个时刻仅有一个主设备占有总线,因此当有多个主设备提出访问请求时,仲裁器通过仲裁信号仲裁哪一个主设备获得总线使用权

4.3.1.仲裁信号

仲裁信号见[2.2.多主机传输信号]

4.3.2.主机获取总线

主机获取总线控制权分为两个步骤:

  1. 主机分别通过HBUSREQx和HLOCKx分别向仲裁器申请获取或锁定总线控制权
  2. 仲裁器分配总线控制权

主机通过自己的HBUSREQx向仲裁器申请总线控制权,仲裁器在时钟上升沿采样该信号,并通过内置的优先级算法决定总线控制权归属。一般来说,仲裁器仅会在一次传输完成后分配总线控制权,即将HMASTER置为获取总线控制权的主机编号且在上一次突发传输的倒数第二个传输时改变HGRANTx,因此新HGRANTx可以在上一次突发传输的最后一次传输同时被采样。

但如果需要,仲裁器也可以通过打断传输的方式优先执行优先级更高的传输。若获取总线控制权的主机申请锁定总线,其他主机将无法获得总线控制权。

对于指定突发长度的突发传输,仲裁器根据突发长度判断需要总线控制权的时间,若结束后启动下一次突发传输,需要再次请求控制权。对于未指定长度的突发传输,主机需要在传输过程中一直保持请求信号拉高,否则将仲裁器无法判断何时收回总线控制权。

当无主机申请总线时,总线的控制权被交给默认的主机,即使该主机没有申请总线控制权。此时默认主机需要将HTRANS置为IDLE状态。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏代码永生,思想不朽

TCP流量复制工具,另一个tcpcopy

很多年以前,网易推了一个tcp流量复制工具叫tcpcopy。2013年07月我入职新公司,大概10月份接触到tcpcopy,为tcpcopy修了两个bug,一个...

2.3K70
来自专栏Seebug漏洞平台

TP-LINK 远程代码执行漏洞 CVE-2017-13772 趣谈

原文地址:《A CURIOUS TALE OF REMOTE CODE EXECUTION, THE TP-LINK STORY – CVE-2017-1377...

1.6K60
来自专栏同步博客

会话劫持

  在现实生活中,比如你去市场买菜,在交完钱后你要求先去干一些别的事情,稍候再来拿菜;如果这个时候某个陌生人要求把菜拿走,卖菜的人会把菜给陌生人吗?!当然,这只...

14630
来自专栏流柯技术学院

Android APP测试的日志文件抓取

  实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志

65910
来自专栏公有云大数据平台弹性 MapReduce

Presto内存调优及原理(基础篇)

Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。

2K100
来自专栏IT技术精选文摘

Presto内存调优及原理(基础篇)

Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto支持在线数据查询,包括Hive, Cassandra,...

18850
来自专栏北京马哥教育

Linux之HA高可用集群的基础概念总结

HA(High Availability)高可用集群,其特点为根据实际需求为前端Diretor,后端RS-server,数据库服务器,共享存储等集群节点做一个...

44960
来自专栏小白安全

web渗透思路及总结

(一)针对网站程序,不考虑服务器。 一、查找注入,注意数据库用户权限和站库是否同服。 二、查找XSS,最近盲打很流行,不管怎样我们的目的是进入后台。...

87670
来自专栏Java架构

今咱们来聊聊JVM 堆外内存泄露的BUG是如何查找的前言内存泄露Bug现场查找线索总结

36540
来自专栏涤生的博客

系统优化总结—帮你剖析系统问题

之前组内一位大佬分享了一些关于系统性能优化方面的干货,这里我将它整理成文并且加入自己平时常用的一些工具和技巧。由于关于系统性能优化涉及的内容非常多,我会分几篇文...

18320

扫码关注云+社区

领取腾讯云代金券