Java教程

AMBA总线协议之APB与AHB接口协议

本文主要是介绍AMBA总线协议之APB与AHB接口协议,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

    • 概述
    • 1.AHB接口
      • AHB的组成
      • AHB基本信号
      • AHB基本传输
      • AHB transfer传输
      • AHB burst传输
    • 2.APB接口
      • 基本信号
      • 传输时序图
      • 写操作
      • 读操作

概述

AMBA高级处理器总线架构,不同的速率要求构成了高性能SOC设计的通信标准:

  • AHB高级高性能总线
  • APB高级外围总线
  • AXI高级可拓展接口

AHB:主要是针对高速率、高频宽及快速系统模块所设计的总线,可以连接在如微处理器、芯片上或芯片外的内存模块和DMA等高效率总线;

APB:主要应用在低速且低频率的外围,可针对外围设备做功率消耗及复杂接口的最佳化;APB在AHB和低带宽的外围设备之间提供了通信桥梁,所以APB是AHB的耳机拓展总线;

AXI:高速度、高带宽、管道化互联、单向通道,只需要首地址、读写并行、支持乱序、支持非对齐操作、
在这里插入图片描述

1.AHB接口

AHB的组成

  • Maste(总线主机)r:能够发起读写操作,提供地址和控制信号。同一时间只有1个Master可以处于有效状态并能使用总线;
  • Slave(总线从机):在给定的地址范围内对读写操作作响应,并对Master返回成功、失败或者等待等状态;
  • Arbiter(仲裁器):负责保证总线上一次只有一个Master工作。仲裁协议是规定的,但是仲裁算法可以依据应用决定;
  • Decoder(解码器):负责对地址进行解码,并提供片选信号到个Slave;
  • 每个AHB都需要一个仲裁器和一个中央解码器。

AHB基本信号

信号描述
HCLK时钟信号
HRESETn复位信号,低有效
HADDR[31:0]32位系统地址总线
HTRANS传输类型,包括NONSEQ(连续传输的首个数据)、SEQ(连续传输的中间数据)、IDLE(空闲周期)、BUSY(准备发送数据,但是还没准备好发,即不发送当前这一拍数据)
HWRITE传输方向,信号为高(1)时为写操作,为低(0)时表示读操作
HSIZE[2:0]传输单位
HBURST[2:0]传输的burst(突发)类型,包括SINGLE(单个)、INCR(连续)、WRAP4、INCR4(连续发起4个)等
HWDATA[31:0]写数据总线,从Master到Slave
HREADY传输完成,Slave应答Master是否读写操作完成,信号为高(1)表示传输完成,为低(0)则需要延长传输周期
HRESP[1:0]传输响应,Slave应答当前传输状态,四种不同的响应:OKAY、ERROR、RETRY、SPLIT
HRDATA读数据总线,从Slave读到Master
HSELx从机选择,由译码器控制,每个Slave都有自己独立的从机控制信号,表示当前传输是否发送给选择的从机

AHB基本传输

  • 具有两个阶段:地址周期和数据周期;
  • 地址周期(AP),只有一个周期
  • 数据周期(DP),有HREADY信号决定需要几个周期;
  • 流水线传送
  • 遵循先是地址周期,然后是数据周期
    在这里插入图片描述

图解:

  • 先发送地址和控制信号(HTRANS、HBURST、HSIZE等);
  • 发送地址信号只能是一拍,发送数据可以多拍
  • 有效的写入和读出数据都发生在HREADY信号拉高的周期里。

AHB transfer传输

在这里插入图片描述

图解:

  • 图中HBURST指定的是INCR类型,是连续地发送数据的burst类型;
  • HTRANS中指定了NONSEQ(表示这是连续发送的数据里面的第一个数据)、BUSY(准备发送数据,但是还没准备好发)、SEQ(传输过程里面的数据);
  • HTRANS信号指定为BUSY时,那一拍的数据就不会发送;

AHB burst传输

在这里插入图片描述

图解:

  • HBURST指定的是INCR4类型,表示要连续发送4个数据;
  • 注意图中的读写时序不是表示既可以读又可以写,只是分别表示读和写的时序,读写不同时发生;

2.APB接口

  • 主要应用在低带宽的外设上,如UART、I2C,它的架构不像AHB总线是多主设备的结构;
  • APB总线的唯一主设备是APB桥(与AXI或APB相连),因此不需要仲裁一些request、grant信号。
  • APB协议不是流水操作,固定周期完成一次读或写的操作;
  • 特性:两个时钟周期完成一次传输,无需等待周期和回应信号

基本信号

  • PCLK:时钟信号;
  • PADDR:地址线;
  • PWRITE:读写操作线,为1时写,为0时读;
  • PSEL:
  • PENABLE:允许读写操作信号线;
  • PWDATA/PRDATA:读写数据线。

传输时序图

  • 系统初始化为IDLE状态,此时没有传输操作,也没有选中任何模块;
  • 当有传输要进行时,PSELx 拉高,但PENABLE为低,系统进入SETUP状态,并且会在SETUP状态停留一个周期。
  • 当PCLK的下一个上升沿到来时,系统会进入ENABLE状态;
  • 系统进入ENABLE状态时,SETUP状态的PADDR、PSELx、PWRITE不变,将PENABLE信号拉高。传输只会在ENABLE状态维持一个周期。
  • 之后若是还有传输进行,就进入SETUP状态;若没有,则进入IDLE 状态。
    在这里插入图片描述

写操作

在这里插入图片描述

注意:

  • 写数据线(PWDATA)是同写信号线变化(PWRITE)的,而不是同PENABLE信号线变化(区别于读操作);
  • PENABLE在写操作周期结束后,会同PSEL一同拉低,除非有需要立即跟随下一次传输;
  • 协议里面规定,为了降低能耗,PADDR(地址线)和PWRTE(写操作线)可以在一次操作后不发生变化,不做跳变,直到下一次读写操作。

读操作

在这里插入图片描述

注意:

  • 读数据信号线是同PENABLE信号线同时跳变;
这篇关于AMBA总线协议之APB与AHB接口协议的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!