总线协议 -- AMBA总线(二)

资料来源:https://wenku.baidu.com/view/bbacbd36e109581b6bd97f19227916888586b999.html
本内容只是根据上面的资料做了整理

AMBA总线(二)

上一篇详细说明了AHB基本结构以及控制线,下面下面进一步说明AHB的总线传输方式,APB总线以及IP间的互联。

AHB总线

总线传输

  • 不是三态总线,读数据总线和写数据总线分开

  • Endian序

    • 在AMBA定义中没有定义
    • 主设备和从设备应该采用同样的印第安序
    • 不支持动态印第安序
  • 对于IP设计, 只有应用面比较广泛的应用程序才支持两种印第安序。

Endian序: 大印第安(大端序)序就是在存储数据时,高位放在低地址是大印第安序, 高位放高地址是小印第安序(小端序)
小端序:


大端序:

AHB仲裁信号

  • HBUSREQ

    • 总线请求
  • HLOCKx

    • 高电平:主设备请求锁定总线
  • HGRANTx

    • 指出主设备x可访问总线
    • 主设备x控制总线:HGRANTx=1且HREADY=1
  • HMASTER[3:0]

    • 指出哪个主设备正在进行传输,提供进行split的信息
  • HMASTLOCK

    • 指出主设备正在进行一次锁定传输
  • HSPLITx[15:0]

    • 从设备用这个信号告诉仲裁器哪个主设备允许重新尝试一次split传输。
    • 每一位对应一个主设备
仲裁 - 没有等待状态的grant(授权)
仲裁 - 有等待状态的grant

HGRANT和HREADY都为高时授权总线控制地址。

仲裁 - Burst传输之后移交总线

M1进行完一次burst传输后将授权移交给M2

总线主设备的Grant信号
  • 对于固定长度的burst传输,不必持续请求总线

  • 对于未定义长度的burst传输,主设备应该持续送request(HBUSREQ)信号,直到开始最后一次传输。

  • 如果没有主设备请求总线,则给缺省主设备grant信号,且HTRANS=IDLE

  • 建议主设备在锁定总线传输结束之后插入IDLE传输,以重置仲裁优先级。

Split传输过程

  1. 由主设备开始传输

  2. 如果从设备需要多个周期才能获取数据,则从设备给出一个SPLIT传输响应,从设备记录主设备号:HMASTER

  3. 接着仲裁器改变主设备的优先级

  4. 仲裁器grant其他的主设备,总线主设备移交。

  5. 当从设备准备结束本次传输,将设置给仲裁器的HSPLITx信号的相应位

  6. 仲裁器恢复优先级

  7. 仲裁器grant主设备,这样主设备可以重新开始传输

  8. 结束

防止死锁(deadlock)

  • 当多个不同的主设备试图访问同一个从设备,这个从设备发出了SPLIT或RETRY信号,这是很可能发生deadlock

  • 从设备最多可以接收系统中16个主设备的请求。只需要记录主设备号(忽略地址和控制信号)

  • 给出RETRY响应的从设备在某一时刻只能由一个主设备访问,可以使用一些硬件保护机制,比如ERROR

AHB接口

主设备接口

从设备接口

仲裁器

地址译码器

AHB连接示例

+ Master 0 can access private RAM, APM and external interface + Master 1 can access DMA slave, APB and external interface + Parallel access improves system bandwidth

AHB-Lite

  • AHB 的简化版

    • 只有单Master
    • 不需要 HBUSREQ & HGRANT (没有其他主机,所以无需request和授权)
  • 简单的从机

    • 没有 retry or split 响应
    • Standard AHB modules can be used
    • Allows easier module design/debug

AHB总结

  • 主要组成部分
    • Master、slaves、arbiter、decoder
  • 传输的过程
    • 流水线机制
    • Address phase和data phase
  • 如何提高性能
    • Burst read/write
  • 仲裁机制
    • 总线控制器的移交
  • Slave短时间内无法响应
    • HREADY信号拉低
  • Slave长时间内无法响应
    • 插入RETRY
    • Master不能进行传输
    • 插入BUSY

建议

  • Arbiter的优先级可以配置
  • Slave长时间不能响应的话,一般不支持SPLIT响应,使用RETRY响应
  • 总线上如果只有一个master的话,可以使用AHB lite协议,不用arbiter
  • 设计一个新的IP时,要仔细核对AMBA的Feature和IP所支持的Feature是否匹配。

APB

APB所处的位置:

APB信号

  • PADDR[31:0]
    • 地址总线,由设备总线的bridge单元驱动
  • PSELx
    • 从译码器来的信号,到每一个总线从设备x
  • PENABLE
    • 用于在设备总线上把所有访问按时间阶段进行
  • PWRITE
    • 高电平:写
    • 低电平:读
  • PRDATA和PWDATA
    • 最多32位宽

地址解码的分级

AHB中的包含了APB slave的地址,APB中又包含了下层外围设备的地址。

APB互联

APB读写

写传输:

读传输:

AHB2APB Bridge

Bridge FSM

APB slave

APB到AHB的接口

AHB读APB从机的数据

可见,APB从机的PRDATA信号线可以直接连接到AHB的读信号线(读Data没有延迟) 因此可以使得AHB工作在比较高的频率。

AHB写APB从机

Back to Back 传输:

互联

  • 每一个从设备都占用系统中的一段地址空间
  • 所有的从设备都是可寻址的
  • 寄存器/存储器都是存储器映射方式访问
  • CPU/IP读写其他IP的数据类似于读写存储器

IP间的互联通信

主设备被arbiter grant之后,可以访问总线上的所有从设备

一般IP同时拥有主从接口。

CPU和IP之间的通信

  • CPU总是作为主设备
  • IP总是作为从设备
  • IP可以发出一个中断请求
  • CPU进入中断模式,由interrupt service routine (ISR)来处理中断

Example: DMA

CPU通过读写DMA的总线接口,可以读取DMA的状态(读slave),以及配置DMA的工作模式(写slave)

Step 0:

Step 1&2:

Step 3:
此时控制权移交给DMA,DMA作为master对两个slave进行数据搬运(先读入再写出)

Step 4:

这个箭头画反了,反正就是表示CPU读取DMA。
posted @ 2020-04-10 17:16  love小酒窝  阅读(3277)  评论(0编辑  收藏  举报