AMBA2 AHB 相关理解(二)



1. Slave的两个HREADY信号

  • 仲裁器给从机的HREADY_IN信号,通知这个从机是否有其它从机还未完成传输。
  • 从机给主机HREADY_OUT信号,通知主机,从机传输的情况。
    • 从机可以拉低HREADY_OUT信号,反压主机,插入等待状态,主机信号不变,等待从机可以继续进行传输。
  • 注意:AHB2中只有HREADY信号,指的是HREADY_OUT信号。在AHB3 和 5才出现了HREADY_OUT信号。
  • 为什么需要HREADY_IN信号? 将所有从机反馈给主机的HREADY_OUT信号&在一起,作为slave的HREADY_IN,那么就可以判断出是否存在slave还没有传输完成。

2. 传输类型

  • AHB 的传输类型分为四种类型,由HTRANS[1:0]表示。
    • (1)IDLE('b00):
      • 在主机不想进行数据传输时,会使用IDLE类型的数据传输。从机必须为IDLE类型提供零等待状态的OKAY响应,举例:如下图所示。
    • (2)BUSY('b01):
      • 当主机无法立即执行一次突发传输中的某个beat的传输,主机可以使用BUSY来延缓下一个beat的传输。
      • 只有未定义长度的突发传输才可以将BUSY作为突发传输最后一个cycle。
      • 从机必须对BUSY状态提供零等待状态的OKAY响应。
    • (3)NONSEQ('b10):
      • 单次传输或者突发传输的首次传输。
    • (4)SEQ('b11)
      • 地址和上1个beat传输相关,控制信息与上1个beat相同。

3. 回环突发传输(WRAP)

  • 用途:可以用于Cache读写内存,因为cache是按照cache line进行操作,采用wrap传输可以方便的实现从内存中取回整个cache line。
  • 我的计算方法是:使用拍数 * 传送大小,得到的值A。依照回环突发传输的起点,决定传送起点为n*A。之后回环突发要保持最高位不变。
    • 举例:WRAP4,传输大小(HSIZE)为4Bytes,起点为0x38.
      • 所以得到的A = 16,16 - 5'b1_0000,依据起点,选择回环突发传输的起点为 6'b10_0000,保持最高位不变可以得到的最大值为0x3f。因此回环传输遍历的几个地址为0x38,0x3C,0x30,0x34.

4. 复位信号

  • 复位期间,HTRANS[1:0]指示为IDLE。从机反馈给主机的HREADYOUT信号拉高。

5. Locked Transfer

  • 需求:很多汇编指令有原子操作指令。
    • 原子操作就是不可中断的一个或者一系列操作,不会被线程调度机制打断的操作。
    • AHB中举例:主机1去写数据,还没写完,主机2就去读数据,读出的并不是想要的数据。此时可以拉高HMASTERLOCK信号锁住主机1的写传输,不让主机2进行打断。
  • 大部分的slave不会被多个master访问,并不需要HMASTERLOCK信号。常见的多端口Memory Controller,就必须实现HMASTERLOCK信号的机制。

6. 突发传输 和 流水线形式的SINGLE TRANSFER是一样快的吗?

  • 对于紧耦合SRAM来说,两者都是N+1个周期。
  • 对于DDR来说,突发传输只需要发一次命令,就可以得到连续的数据。
  • 但是多比特Single Transfer传输,DDR并不知道两笔Transfer之间的地址关系,DDR的读取时序并不是完全的流水线式,这中间可能会阻塞很多个周期。

7. AHB总线矩阵系统

  • 单层AHB缺点:多个主设备需要等待使用一条总线,影响了数据访问时间和吞吐量。
  • 需求:多个master和多个slave之间进行通信时,可以使用matrix进行互联。可以提高访问带宽。
  • 使用多条AHB总线互联体系,从机前面的仲裁器用来防止多个主机同时访问同一个从设备。

8. AHB_Lite

  • 只支持一个主设备,相较于AHB2总线没有仲裁模块。
  • HRESP信号不支持分块和重试响应。
  • 相较于AHB2,AHB_LITE具有两个HREADY信号:HREADY和HREADYOUT信号。

如有错误,请指正!!

posted @ 2023-06-07 15:04  可达达鸭  阅读(150)  评论(0编辑  收藏  举报