本文主要是介绍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(写操作线)可以在一次操作后不发生变化,不做跳变,直到下一次读写操作。
读操作
注意:
这篇关于AMBA总线协议之APB与AHB接口协议的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!