SOC架构工程师面试准备

AMBA总线,全称为Advanced Microcontroller Bus Architecture。其包含5种协议,分别为Advanced High-Performance Bus(AHB),Advanced System Bus(ASB),Advanced Peripheral Bus(APB),Advanced Trace Bus(ATB)与AXI(AMBA Extensible Interface)。

APB总线

APB主要用于连接低速且低功率的外设。其无流水线结构,其三种状态如下:

AHB总线

AHB支持split事务处理,即允许多个总线主设备同时使用总线,从而提高总线的并行性与效率。

为什么说AHB总线支持split事务处理

AHB总线支持split事务处理,这是由于它能够在总线仲裁器(Arbiter)的控制下,将一个未完成的突发传输(Burst transfer)暂时中断,以便其他主设备(Master)可以访问总线。这种机制允许总线在高负载情况下更高效地进行任务调度,避免单个主设备长时间占用总线而阻塞其他设备。
在AHB总线中,当一个主设备发起一个突发传输请求时,如果该传输需要较长时间才能完成,从设备(Slave)可以发出一个split响应。这个响应会通知仲裁器暂时中止当前的传输,并允许其他等待的主设备接入总线。当从设备准备好继续传输时,它会通过HSPLIT信号通知仲裁器,仲裁器随后会恢复原主设备的访问权限,以便完成剩余的传输。
Split事务处理的关键在于,它允许总线在多个主设备之间灵活切换,从而优化总线利用率并减少等待时间。这种机制在多主设备系统中尤为重要,因为它可以防止单个设备长时间占用总线,从而确保所有设备都能得到公平的服务。

  1. 一次完整的发送流程从信号①开始,①中的信号表示AHB master给arbiter的信号,HBUSREQx表示向其申请总线,HLOCKx表示锁定总线。
  2. 在获得arbiter返回的②hgrant信号后表示申请到了总线,这时候可以开始传输;
  3. 发送③中的地址信号,控制信号和写数据信号
  4. 在得到主机的信号后,从机给与的response ④
  5. 若是读操作,在AHB Master在第一拍给出控制信号和地址信号后,在第二拍(若hready = 1)AHB slaver给出hrdata,随后AHB master在第三拍采样得到数据hrdata.
  6. htrans表示传输的类型,分别有IDLE,BUSY,NONSEQ(非连续),SEQ(连续),四种类型;
  7. hburst用于描述突发传输的四种模式,分别是SINGLE(单一传输),INCR(未指定长度的增量突发),WRAP4(4拍回环突发),INCR4(4拍增量突发);burst模式很复杂,有空单独开一章来详细的讲;
  8. hwrite表示读写控制信号,1表示写,0表示读;
  9. hsize表示传输的大小,通常和hburst信号来一起决定burst传输的地址边界;
  10. hport是保护控制信号,不常用;
  11. hready和hresp是从机的传输响应信号,其中hready主要用于扩展信号,当其拉低时可以对数据进行扩展,当其拉高表示一次传输完成,hresp和hready相结合来返回响应,当hready =1 时,hresp会返回OKAY信号表示传输成功完成,其余还有ERROR,RETRY,SPILT三种其他响应类型;

回环突发(wrapping burst)与增量突发(incremental burst)的区别是什么?

增量突发可以是未定义长度的,这意味着突发可以在任何时候通过插入非顺序(NONSEQ)或空闲(IDLE)传输来终止。
回环突发在每次传输后会增加地址,但当达到一定的边界时,地址会“回环”或“包装”回到一个较低的地址。这个边界通常是突发长度和传输大小的乘积。
例如,一个4拍回环突发,如果传输大小是8字节(即一个字),那么在传输了32字节(4拍 $\times$ 8字节/拍)后,地址会回环到初始地址或某个较低的地址。回环突发的长度通常是固定的,如2、4、8或16拍。
增量突发适用于需要连续访问大量数据的场景,而回环突发则适用于需要循环访问固定大小数据块的场景,如缓存行或环形缓冲区。

AHB slave的接口

  1. 首先根据hselx来看slave是否被选中;
  2. 被选中后根据②中的控制和地址信号来判断传输master传输的要求;
  3. 若是读请求,则送出读数据③,写请求则接收写数据;
  4. 给出传输响应④;

AHB总线仲裁器 (arbiter)

aribiter用于选择对应的master来对总线进行控制。以下是两个AHB master争夺总线控制的时序图: