AHB总线学习

AHB总线的主要特征

  1. 支持burst传输
  2. 单时钟边沿触发的操作
  3. 非三态实现
  4. 宽的数据总线配置 64,128,256,512和1024bits

总线结构

在这里插入图片描述
对于单master的AHB总线来说,主要包含master,decoder,multiplexor以及salves,对于多masters的情况,还需要加入arbiter来进行仲裁

Master interface

在这里插入图片描述

Slave interface

在这里插入图片描述

Decoder diagram

在这里插入图片描述

  1. 对于decoder来说,因为有多个的slave,所以需要对地址进行译码,选择数据的要去的地址,这是一个纯逻辑的译码电路,方法是通过对地址的高位进行译码,得到HSELx,此时slave对HSELx和地址同时进行采样
  2. 地址的起始和结束地址应位于1KB范围内,因为不想跨越slave的边界,对应此要求,slave的大小被要求设定大于等于1KB。
  3. 如果Memory Map不完整的话,则有可能会导致error,所以如果Memory Map不完整,则需要指定默认的salve

Multiplexor diagram

在这里插入图片描述
对于MUX来说,因为有多slave情况的存在,所以需要通过mux将响应和读取的数据进行片选,传送到主机

Signal description

Master signal

HCLK 在时钟的上升沿进行采样。
在AHB5中定义了一个特性是Stable_Between_Clock,如果此信号为高,则表明此信号需要保持无毛刺,如果此信号为低,则不需要保持信号无毛刺

HRESETn 低电平有效

  • 可以使用异步复位,但是必须同步释放
  • 复位信号必须保持足够的时钟周期以保证复位成功
  • 在复位过程中,所有的master需要保证地址和控制信号是有效的,并且HTRANS信号处于IDLE的状态

HADDR[31:0] 32-bit的地址总线

HBURST[2:0] 表示burst的类型,如下图所示
在这里插入图片描述

  • AHB的transfer必须和地址边界对齐,比如说16bit的数据,需要保证地址的最后一位为0,32bit的数据需要保证地址的最后两位为0

  • fixed length的burst需要使用SEQ的HTRANS类型结束,即WRAP4,INCR4,WRAP8,INCR8,WRAP16,INCR16这几种类型

  • SINGLE burst需要保证接下来是一个IDLE或者NONSEQ的HTRANS类型

  • burst可以被slave传回来的error或者其他master打断,此时可以终止传输,但是不强制

  • 关于wrap类型及地址计算方法如下图,图来自网络,我就直接粘过来了(若有侵权,请联系删除)
    在这里插入图片描述
    以下是两个burst传输的例子

  • 第一个是一个WRAP4类型的传输,因为总共4个transfer,每个4byte(1个word),所以总的传输大小为4x4=16bytes,起始地址0x38为56,并不能整除16,所以按照原首地址0x38为起始地址进行传输,到了0x40的边界又回到0x30,地址分别为0x38,0x3C,0x30,0x34.
    在这里插入图片描述

  • 第二个是一个INCR4的burst类型的例子,同样的首地址是0x38,因为是INCR4,SIZE是4byte(1word),所以地址分别为0x38,0x3C,0x40,0x44.
    在这里插入图片描述
    HMASTLOCK 锁定访问的标志位

  • 一旦进入锁定访问,在读和写操作之间不能有任何其他的操作

  • 在锁定访问结束后,推荐加入一个IDLE的HTRANS类型,如下图所示
    在这里插入图片描述
    HPROT[6:0] 在AHB5中此信号扩展到了7位,以下解释的是AHB5中对每一位新的定义

  • HPROT[0] 表示这是一个取指令操作还是一个数据访问操作

  • HPROT[1] 表示这个传输是一个优先级访问还是用户访问

  • HPROT[2] 表示此传输是否是bufferable的

  • HPROT[3] 表示此传输是否是modified的

  • HPROT[4] 表示此传输是否需要在cache中进行寻找

  • HPROT[5] 表示此传输是否建议在cache中allocate

    此处的意思是如果出现了write miss,则需要将数据写入存储,但是此时写入存储的方法有两种,一种是non-allocated,如果是non-allocated的,那么此时的数据将会直接写入到存储中,此种情况下,只有读操作才会被cache中缓存。但是如果是allocated的,那么此时需要将数据从存储中加载到cache中,然后采用write-hit的方法对cache进行write,并对此进行标志dirty,这种方法下读操作和写操作都会被缓存。

  • HPROT[6] 表示此区域是否适合其他master共享的

HSIZE[2:0] 每个transfer的大小
传输的数据大小需要小于或者等于数据总线的宽度
在这里插入图片描述
HNONSEC 安全传输的特性
此信号如果是高电平则表示是非安全传输,如果是低电平则表示是安全传输

HEXCL 独占传输

  • 如果传输成功,slave将会返回EXOKAY
  • 传输有以下的限制
    • 必须是但数据传输
    • 必须是SINGLE或者INCR类型的burst传输
    • 不能出现BUSY的HTRANS类型
    • 数据需要对齐地址边界
    • HPORT信号必须保证独占访问的monitor对此次传输能看见

HMASTER[3:0] master的标识
对于有多个主机的系统,独占访问的monitor会记录此master的标识以及访问的地址

HTRANS[1:0] 表示transfer的类型
分别有IDLE,BUSY,NONSEQ,SEQ四种类型
下图为传输类型示例
在这里插入图片描述
HWDATA[31:0] 写地址总线
master仅需要根据transfer的size及length来驱动相应的byte lanes

HWRITE 传输方向,分为写和读
高电平为写,低电平为读

Slave signals

HRDATA[31:0] 读地址总线,宽度可扩展
HREADYOUT 如果为高电平,则意味着此transfer结束了,如果是低电平,则需要延长此transfer
HRESP 表示此burst是否成功,如果成功,则响应OKAY,如果失败,则响应两个周期的ERROR
在这里插入图片描述
HEXOKAY 表示独占访问是否成功

Decoder signals

HSELx 对slave进行片选

Multiplexor signals

HRDATA[31:0]
HREADY
HRESP
HEXOKAY
上述信号都是经由MUX进行select得到的

基本传输

在这里插入图片描述
基本传输包含两个相位,分别是地址和数据相位,
一般地址只会持续一个周期,除非HREADY拉低,导致不能接着传输,此时将会导致地址信号延长周期
数据可以传输多个周期,使用HREADY信号可以控制数据传输的周期数

数据总线

对于不能数据总线和slave宽度不匹配的情况,有以下解决方法
在这里插入图片描述
在这里插入图片描述
AHB5中提及到以下一段话

A slave can only accept transfers that are as wide as its natural interface. If a master attempts a transfer that is wider than the slave can support then the slave can use the ERROR transfer response

上面说总线和slave中间的宽度不匹配可以采用响应的方法,但此处又提及error
我对此的理解如下:
这个的重点应该是是tranfer,一个burst中可能有好几个tranfer,byte lane会选用一部分传输,而且要align,拿那个64位总线接到32位slave上的来说,意思就是每个transfer不能超过32位,低于32位的,每次tranfer都可以完整的传到slave中。但是大于32位的,会被mux给切开,导致单个tranfer不完整,这时候slave就会报错,mux的作用就是在每个cycle选择有数据的那32bit部分(因为每次只有32bit,而且align,不会超过一半),其中slave会报错的根据应该是根据master产生的HSIZE的值。

原子操作

  • 单拷贝原子性大小定义了传输保证原子更新的数据字节数
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值