【ARM AMBA AHB 入门 3.1 -- AHB控制信号】

文章目录

AHB控制信号

传送状态HTRANS[1:0]

在AHB总线上, Master (M) 的传送状态可由HTRANS[1:0]来表示,这两位所代表的意义如下

批量传送HBURST[2:0]

批量传送是以群组为单位的传送方式,主要依地址的给法来区分:

  • 递增传送(incrementing burst),会依上一笔的地址来递增。
  • 回绕传送(wrapping burst),如: 回绕长度=4; 每4个字节要对齐在16字节的范围内。如果第一个地址 = 0x64,则传送的顺序为 0x68、0x6C、0x60。

每次传送数据的大小由HBURST[2:0]定义:

  • AHB从设备通常支持 SINGLE,INCR,INCR4,WRAP8, INCR8 和 INCR16。
  • AHB对传送范围规定不可超过1KB, 递增传送的大小可为任意数目, 但是不可超过1KB的范围

传送方向HWRITE

HWRITE:表示传送方向(依读或写的动作来决定传送信号的)方向)

  • HWRITE拉高时(写),M必须对写入动作初始化,数据会由M放到HWDATA[31:0]总线上。
  • HWRITE拉低时(读),M会对读取动作初始化,被寻址到的S会将数据放到HRDATA[31:0]总线上。

传送大小HSIZE[2:0]

传送数据大小由HSIZE[2:0]信号控制,表示每次传送的字节数目。

HSIZE[2:0]HBURST[2:0]两个信号可合起来定义回绕地址的范围。

例如:HSIZE[2:0]=32位,HBURST[2:0]长度为4字节,则回绕地地址须对齐在16字节

通常的AHB从设备是32位数据线,所以它支持8位,16位和32位3种大小。

保护控制HPROT[3:0]

HPROT[3:0]为总线协议保护信号用来定义存取的型态与特性,并非所有的M都会传送出HPROT[3:0],所以除非S有需要否则不会使用 到HPROT[3:0]信号。一般来讲该信号很少用到。

响应信号 HRESP[1:0]

Master 发起一笔传输后, slave 可以决定这笔传输的进程, 而 Master 不能取消已经发出的传输。Slave 通过HREADY信号反映传输是否否完成,通过HRESP[1:0]反映传输的状态。

  • Slave 可以如下方式完成一笔传输:

    • 立即完成一笔传输;
    • 延迟一个或几个周期完成传输;
    • 传输失败返回error;
    • 延迟传输,释放总线。
  • 传输完成标志 HREADY:

    • HREADY为高时传输完成,
    • HREADY为低时传输需要延迟。
  • 传输响应标志 HRESP[1:0]:

    • 00:OKAY-传输完成
    • 01:ERROR-传输错误
    • 10:RETRY一传输未完成,请求主设备重新开始一个传输,artpiter会继续使用通常的优先级
    • 11:SPLIT 一传输未完成,请求主设备分离一次传输, Arbiter 会调整优先级方案以便其他请求总线的主设备可以访问总线
  • 地址译码

    地址译码器用于为总线上每个slave提供选择信号HSELx,选择信号号是通过组合逻辑对地址码译码产生的。只有当前的数据传输完成后(HREADY为高), slave才会采样地址和控制信号以及HSELx。在一定条件下可能会出现这样的情况:产生HSELx 号而 HREADY为低,在当前传输后slave会改变。

每个slave最小的地址空间为1KB,所有的master的burst传输上限也是1KB,如此设计保证了不会出现地址越界问题。当一个设计不会用到所有的地址空间时,可能出现访问到一个不存在的地址的情请况,这就需要增加一个附加的默认slave (default slave)来为上面的情况提供一个响应。

当SEQ或NONSEQ传输访问到一个不存在的地址,默认slave应该提供ERROR响应;当IDLE或BUSY传输访问到个不存在的地址,默认slave会响应OKAY。地址译码器会带有实现默试slave的功能。

  • 仲裁
    仲裁机制保证了任意时刻只有一个master可以接入总线。arbiter快定哪个发出接入请求的master可以接入总线,这通过优先级算法 实现。AHB规范并没有给出优先级算法,设计者需要根据具体的系统要求定义。一般情况下arbiter不会中断一个burst传输,将总线接入权让给其他master。当然未定义长度的burst传输是可以打断的,这要看优先级算法是如何规定的。如果一笔burst被打断,master再度获得接入权限时,会传递剩余的部分。如一笔长度为INCR8的传输在传递3beat后被打断,master再次获得接入授权后,会继续传输剩余的5beat,剩余部分可以由一个SINGLE和一个INCR4组成, 或诸一个INCR。
    • HBUSREQx:master向arbiter发出接入请求的信号。
    • HLOCKX:指示是否要进行不可中断的传输,这一信号与HBUSREQx同时由master向arbiter发出。
    • HGRANTx:arbiter产生指示master获得授权,当HGRANTx信号为高同时HREADY为高时,master可以向总线传输地址信号。
    • HMASTER[3:0]:arbiter产生指示哪个master获得授权,这一信号用于地址控制多路来选择哪个master接入总线。
    • HMASTERLOCK:arbiter产生指示当前传输是否为锁定序列传输。
    • HSPLIT:供支持SPLIT传输使用。
相关推荐
森G18 小时前
七、04ledc-sdk--------makefile有变化
linux·c语言·arm开发·c++·ubuntu
VekiSon21 小时前
Linux内核驱动——杂项设备驱动与内核模块编译
linux·c语言·arm开发·嵌入式硬件
AI+程序员在路上1 天前
Nand Flash与EMMC区别及ARM开发板中的应用对比
arm开发
17(无规则自律)1 天前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
梁洪飞2 天前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
代码游侠2 天前
学习笔记——Linux字符设备驱动
linux·运维·arm开发·嵌入式硬件·学习·架构
syseptember3 天前
Linux网络基础
linux·网络·arm开发
代码游侠3 天前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
程序猿阿伟3 天前
《Apple Silicon与Windows on ARM:引擎原生构建与模拟层底层运作深度解析》
arm开发·windows
wkm9563 天前
在arm64 ubuntu系统安装Qt后编译时找不到Qt3DExtras头文件
开发语言·arm开发·qt