AMBA初探

AMBA

Advanced Microcontroller Bus Architecture,片上总线标准

  • AMBA 1.0
    • ASB:Advanced System Bus
    • APB:Advanced Peripheral Bus
  • AMBA 2.0
    • AHB:Advanced High-performance Bus
  • AMBA 3.0
    • AXI:Advanced eXtensible Interface

ASB

  • 高速总线
  • 流水线操作
  • 支持多个总线主设备
  • 支持burst传输
  • 总线带宽:8、16、32bit/s
  • 三态、双向总线(不适合做DFT)
  • 上升沿或下降沿触发

APB

  • 低速总线、低功耗
  • 接口简单
  • 在Bridge中锁存地址信号和控制信号
  • 适用于多种外设
  • 上升沿触发

AHB

  • 高速总线,高性能
  • 2级流水线操作
  • 支持最多16个总线主设备
  • 支持burst传输
  • 总线带宽:8、16、32、64、128bit/s
  • 上升沿触发

AHB组成部分

  • AHB主设备master

    • 初始化一次读写操作
    • 某一时刻只允许一个主设备使用总线
    • CPU、DMA、DSP、LCDC...
  • AHB从设备slave

    • 响应一次读写操作
    • 通过地址映射来选中使用哪一个从设备
    • 外部存储器控制器EMI、APB bridge
  • AHB仲裁器arbiter

    • 允许某一个主设备控制总线
    • AMBA协议中没有定义仲裁算法
  • AHB译码器decoder

    • 通过地址译码决定选中哪一个从设备
  • AHB2APB Bridge

    • 可以锁存所有的地址、数据和控制信号
    • 进行二级译码来产生APB从设备选中信号
  • APB总线上的所有其他模块都是APB从设备

  • 其他问题

    • 与工艺无关
    • 没有电气特性
    • 仅在时钟周期级定义时序(时序参数依赖于工艺和频率)

AHB信号

Name Source Description
HCLK Clock source Bus clock
HRESETn Reset Controller Reset
HADDR[31:0] Master Address bus
HTRANS[1:0] Master Transfer type(IDLE、BUSY、SEQ、NONSEQ)
HWRITE Master Transfer direction
HPROT[3:0] Master Protection control(很少用)
HWDATA[31:0] Master Write data bus
HSELx Decoder Slave select
HRDATA[31:0] Slave Read data bus
HREADY Slave Transfer done
HRESP[1:0] Slave Transfer sesponse(Status)
  • HRESETn

    • 低电平有效
  • HADDR[31:0]

    • 32位系统地址总线
  • HWDATA[31:0]

    • 写数据总线,从Master写到Slave
    • 位宽为 32,即 4 Byte,因此地址每次增加 4
  • HRDATA[31:0]

    • 读数据总线,从Slave读到Master
    • 位宽为 32,即 4 Byte,因此地址每次增加 4
  • HTRANS:指出当前传输的status

    • 00 IDLE
      • Master占用主线,但没进行传输
      • 两次burst传输中间,Master发出IDLE
    • 01 BUSY
      • Master占用主线,但还没准备好下一次传输
      • 一次burst传输中间,Master发出BUSY
    • 10 NONSEQ
      • 表明首次数据的传输
      • 地址和控制信号与上一次传输无关
    • SEQ
      • 表明burst接下来的传输
      • 地址和上一次传输相关
  • HSIZE:指出当前传输的大小

  • HBURST:指出传输的 burst 类型

    • 0、4、8、16......
    • INCR突发即不停止就一直突发
    • burst传输不可跨越1K边界,因为从设备的最小地址间隙是1KB(400),INCR的burst都不用改,只需要HTRANS的SEQ改成NSEQ就行
  • HRESP

    • Slave的总线传输状态
    • OKAY、ERROR、RETRY、SPLIT
  • HREADY

    • 高:Slave指出能够进行传输
    • 低:Slave需延长时间接收
    • 不能超过16个时钟周期
  • 两个阶段

    • 由HREADY信号决定需要几个Cycle
    • 分为地址周期和数据周期
  • 流水线pipeline

    • 先地址,然后数据
  • HWRITE:读写控制

    • 高:写
    • 低:读
  • HSIZE[2:0]

    • 000-111,对应8-1024
    • 最大值的选择取决于总线配置
    • 通常使用32bit/s
  • HPROT

    • 很少用,不看

AHB Slave短时间无法响应则HREADY拉低

AHB Slave长时间无法响应则发出Retry信号

WRAP说明

  • WRAP4:到 0x10(16)的倍数就回环

  • WRAP8:到 0x20(32)的倍数就回环

  • WRAP16:到 0x40(64)的倍数就回环

从设备响应信号

  • RETRY和SPLIT
    • RETRY:下次请求,本次Master还是一样优先级
    • SPLIT:下次请求,本次Master优先级会降低
  • 两周期响应原因
    • 流水线特性,使得Master有足够时间处理下一次传输
  • Split传输过程
    1. 由主设备开始传输。
    2. 如果从设备需要多个周期才能获取数据,则从设备给出一个SPLIT传输响应。从设备记录主设备号: HMASTER。接着仲裁器改变主设备的优先级。
    3. 仲裁器grant其他的主设备,总线主设备移交。
    4. 当从设备准备结束本次传输,将设置给仲裁器的HSPLITx信号的相应位。
    5. 仲裁器恢复优先级。
    6. 仲裁器grant主设备,这样主设备可以重新开始传输。
    7. 结束。

仲裁信号

Name Source Description 说明
HBUSREQx Master Bus request 每个Master都会发出
HLOCKx Master Locked transfers 锁定此次传输
HGRANTx Arbiter Bus grant 指出Master x可访问总线
HMASTER[3:0] Arbiter Master number Master的ID
HMASTLOCK Arbiter Locked sequence Master正在进行锁定
HSPLITx[15:0] Slave(SPLIT-capable) Split completion request 选择哪个master允许重试
  • 对于固定长度的burst传输,不必持续请求总线
  • 对于未定义长度的burst传输,主设备应该持续送出HBUSREQ信号,直到开始最后一次传输
  • 如果没有主设备请求总线,则给缺省主设备grant信号,且HTRANS=IDLE
  • 建议主设备在锁定总线传输结束之后插入IDLE传输,以重新仲裁优先级。

AHB-lite

  • 单个Master
    • 不需要HBUSREQ
    • 不需要HGRANT
  • 简单Slave
    • 不需要retry
    • 不需要split
  • 兼容标准AHP协议
  • 允许更简单的design

APB

AHB是机动车道,APB可以看成是非机动车道

慢速设备也可以走AHB机动车道

为了不影响AHB的效率

Name Description
PCLK Bus clock
PRESETn APB reset
PADDR[31:0] APB address bus
PSELx APB select
PENABLE APB strobe
PWRITE APB transfer direction
PRDATA[31:0] APB read data bus
PWDATA[31:0] APB write data bus
  • 非流水线pipeline
  • 最快2个cycle才能读写一个数据
    • PSEL起来
    • 然后PENABLE起来

AMBA初探

上一篇:Docker知识


下一篇:初识多态