AHB学习笔记

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状态。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容

  • 总线 计算机的各个功能部件通过总线连接在一起构成完整的计算机系统,总线是多个系统功能部件之间进行数据传送的公共通路...
    罗蓁蓁阅读 4,733评论 0 10
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo阅读 3,682评论 1 20
  • 1、嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本...
    荣卓然阅读 1,793评论 0 5
  • ​​​本文主要介绍嵌入式系统的一些基础知识,希望对各位有帮助。 嵌入式系统基础 1、嵌入式系统的定义 (1)定义:...
    OpenJetson阅读 3,288评论 0 13
  • 下面这个例子很好地解释了不同层次的交流是如何影响相互依赖的人际关系的: 一位父亲想利用假期带全家去露营钓鱼...
    老陈哥1阅读 609评论 0 0