SoC系列(4) AMBA 2.0 AHB【下】

356 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天!

AHB

AHB总线互连

image.png

ummy/Default Master

  • Dummy Master
    • Granted when all masters SPLIT
    • Generates IDLEc cycles only
    • Typically Master #0
    • Granted when Locked master gets SPLIT response
    • Implement as part of Address/Control Mux
  • Default Master [认为是CPU]
    • Granted when no master requires bus
    • Generally master most likely to require bus
    • Generates IDLE cycles when not requesting bus
    • Avoids minimum 2 cycle Arbitration period (返回仲裁信号至少需要2个周期)
    • Immediate access to bus

    AHB信号

NameSource[发起端]Description
HCLKClock sourceBus clock
HRSETnRESET controllerReset
HADDR[31:0]MasterAddress bus
HTRANS[1:0]MasterTransfer type
HWRITEMasterTransfer direction
[1为写信号,0为读信号]
HSIZE[2:0]MasterTransfer size 【8,16,32】
HBURST[2:0]MasterBurst type
HPORT[3:0]MasterPortection control
HWDATA[31:0]MasterWrite data bus
HSELxDecoderSlave select
HRDATA[31:0]SlaveRead data bus
HREADYSlaveTransfer done
HRESP[1:0]SlaveTransfer response(status)【OK,ERROR,SPLIT..】

基本AHB信号

  • HRESETn [后缀为n,b的是低电平有效]
    • 低电平有效
  • HADDR[31:0]
    • 32位系统地址总线
  • HWDATA[31:0]
    • 写数据总线,从主设备到从设备
  • HRDATA[31:0]
    • 读数据总线,从从设备到主设备
  • HTRANS
    • 指出当前传输的状态
      • NONSEQ,SEQ,IDLE,BUSY
  • HSIZE
    • 指出当前传输的大小
  • HBURST
    • 指出传输的burst类型
  • HRESP
    • 从设备发给主设备的总线传输状态
      • OKAY,ERROR,RETRY,SPILT
  • HREADY
    • 高: 从设备指出传输结束
    • 低电平:从设备需延长传输周期

基本AHB传输

  • 两个阶段
    • 地址周期,只有一个cycle
    • 数据周期,由HREADY 信号决定需要几个cycle
  • 流水线传送
    • 先是地址周期,然后是数据周期

image.png

1656146039376.png 如果每一拍都有延迟,那么效率就太低了,如何提高效率呢? 采用Pipeline流水线技术

1656146544498.png

【图示标注有误更正:第二拍的话,对于slave而言,如果是读操作,就把数据发上去,如果是写操作的话,那么就是将slave采集数据】

image.png Master在忙的话用HTRANS信号表示:

传输类型

  • HTRANS[1:0] :当前传输的状态
    • IDLE,BUSY,NONSEQ,SEQ
  • 00:IDLE
    • 主设备占用总线,但没进行传输
    • 两次burst传输中间主设备发IDLE
  • 01:BUSY
    • 主设备占用总线,但是在burst传输过程中还没有准备好进行下一次传输
    • 一次burst传输中间主设备发BUSY
  • 10: NONSEQ
    • 表明一次单个数据的传输
    • 或者一次burst传输的第一个数据
    • 地址和控制信号与上一次传输无关
  • 11:SEQ
    • 表明burst传输接下来的数据
    • 地址和上一次传输的地址是相关的

image.png

其他AHB控制信号

  • HWRITE
    • 高电平:写
    • 低电平:读
  • HSIZE[2:0]
    • 000: 8bits 100: 128bits
    • 001: 16bits 101: 256bits
    • 010: 32bits 110: 512bits
    • 011: 64bits 111: 1024bits
    • 最大值受总线的配置所限制
    • 通常使用32bits (010)
  • HPORT[3:0] 【用得较少】
    • HPORT[0]: OPCODE/DATA (操作码/数据)
    • HPORT[1]: USER/PRIVILGED(用户/特权模式)
    • HPORT[2]: Bufferable/Non-Bufferable
    • HPORT[3]: Cacheable/Non-Cacheable

image.png