一、AMBA总线概述
处理器和其他的master/slave设备都是可以替换的
AHB(Advanced High-performance Bus)高级高性能总线。 APB(Advanced Peripheral Bus)高级外围总线
各自的特点:
- AHB主要是针对高效率、高频宽及快速系统模块所设计的总线,它可以连接如微处理器、芯片上或芯片外的内存模块和DMA等高效率模块。
- APB主要用在低速且低功率的外围,可针对外围设备作功率消耗及复杂接口的最佳化。APB在AHB和低带宽的外围设备之间提供了通信的桥梁,所以APB是AHB的二级拓展总线。
二、 AHB协议
2.1 AHB组成
Master:能够发起读写操作,提供地址和控制信号,同一时间只有1个Master会被激活(独占性)。(CPU、DMA、DSP、LCDC…) Slave:在给定的地址范围内对读写操作作响应,通过地址映射来选择使用哪个从设备,并对Master返回成功、失败或者等待状态。 Arbiter:负责保证总线上一次只有1个Master在工作。仲裁协议是规定的,但是仲裁算法可以根据应用决定。 Decoder:负责对地址进行解码,并提供片选信号到各Slave。每个AHB都需要1个仲裁器和1个中央解码器。
- 高速总线,高性能
- 2级流水线操作流水线
- 可支持多个总线master设备(最多16个)
- 支持burst传输,前后需要有约束
- 总线带宽:8、16、32、64、128bits
- 上升沿触发操作,电容充电比较快,但是放电比较慢
- 对于一个新设计建议使用AHB
2.2 AHB基本信号
2.3 AHB传输
AHB传输分为以下几个部分:
- 主机获取总线使用权:主机向判决器发送总线请求信号,判决器发送应答后主机可以开始传输
- 数据传输:主机向从机传输数据,分为以下两个部分:
- 发送地址和控制信号:包括地址,位宽,突发类型(增量突发和回卷突发)等控制信号,仅一个时钟周期
- 数据传输:进行数据交换,一个或多个时钟周期,主要由HREADY信号决定几个cycle
- 流水线传送:先是地址周期,然后是数据周期
- 从机应答:从机通过HRESP和HREADY标记完成状态,对于HRESP,有以下状态:
- OKAY:标记传输完成,当HRESP为该状态且HREADY拉高时,传输完成
- ERROR:标记传输出错
- RETRY和SPLIT:标记传输未完成,主设备仍需要占用总线
关于突发传输,理论上进行突发传输的主设备应当一直占据总线,但是为了缩短等待时间,AHB允许打断突发传输,并在一段时间后重启该突发传输
2.3.1 AHB一次无需等待状态的简单传输
无等待传输下,一个传输与三个时钟沿有关:
- 第一个时钟沿:第一个时钟沿后,主机将地址信息和控制信息发送到总线上
- 第二个时钟沿:第二个时钟沿上,从机采样主机的地址信息和控制信息。第二个时钟沿后,从机将响应信号和数据发送到总线上
- 第三个时钟沿:主机采样从机响应信号和数据,传输完成
如果HREADY未接收到数据那么就需要看下一个部分
2.3.2 AHB需要两个等待周期的简单传输
有等待传输下,数据传输阶段可以扩展,即在HREADY拉高之前,数据传输阶段不结束。要求写数据在HREADY拉高前保持稳定,主机在HREADY拉高后采样读数据。这里不能等待超过16个cycle。
2.3.3 AHB需要两个等待周期的简单传输
AHB总线支持流水线传输,即将传输分为地址-数据两个部分流水进行,本次传输的地址必然在上一次地址之后,本次传输的数据必定紧跟在本次传输地址之后。因此,当上一次的数据传输阻塞导致传输周期增加时,下一传输的地址周期也会相应的变长:
- A和Conctrol(A)为第一次传输的地址和控制信号
- WDATA(A)和RDATA(A)是第一次传输的数据,该传输为单时钟即无阻塞的传输,同时发送的还有下一次传输的地址和控制信号:A2和C2
- 第二次传输为多周期传输,因此WDATA(B)和RDATA(B)占据多个时钟周期,对应的,同时发送的第三次传输地址和控制信A3和C3也被延迟相同的时钟周期数
- WDATA?和RDATA?是第一次传输的数据
2.3.4 Burst transfer
有两种burst transfer
- 增量burst:传输过程中传输地址递增。下一次传输的地址是上一次地址加上一个增量
- 回环burst:猝发的地址范围被限制在一个固定范围之内,传输地址递增,若是超出则回到地址范围的开始的地址。例如从0x34进行增量为4,范围为16的回环burst,地址顺序为0x34、0x38、0x3c,0x30
2.14 Dummy Master/Default Master
Dummy Master,
- 当所有的master SPLIT时granted,都不占用时
- 只在IDLE cyles中产生
- 当锁定master得到SPLIT response 授予
- 作为地址/控制的一部分实现多路复用器
Default Master,CPU
- 当主机不需要总线时授予
- 通常主机最可能需要总线
- 在没有请求总线时产生空闲周期
- 避免最小两个时钟周期
2.5 传输类型
传输类型使用端口HTRANS标记,有以下取值:
- IDLE(00):标志主机占有AHB总线,但是没有数据传输发生。从机需要使用OKAY状态回应该类型
- BUSY(01):标志主机占有AHB总线并在进行猝发传输,但下一个传输不能立刻发生。从机需要使用OKAY状态回应
- NONSEQ(10):标志主机当前发送的地址和控制信号与上一次传输无关(单次传输就是该状态)
- SEQ(11):标记主机处于猝发传输的中间部分,即当前发送的地址和控制信号与上一次地址和控制信号有关
- 第一次传输,开启一次burst传输,因此该地址与上一次传输无关,使用类型NONSEQ
- 第二次传输,无法立刻进行传输,因此使用BUSY标记延迟一个周期,延迟后可以进行传输,且处于burst传输中,因此地址与上一次地址有关,使用SEQ标记
- 之后均为burst传输,均使用SEQ类型
2.6 控制信号
- HWRITE
- HSIZE[2:0]
- HPROT提供对传输协议的额外说明,如下所示:
- HPROT[3]:0-Cacheable;1-Not cacheable
- HPROT[2]:0-Bufferable;1-Not bufferable
- HPROT[1]:0-Privileged access;1-User access
- HPROT[0]:0-Opcode fetch;1-Data access
三、 APB协议
- 低速总线,低功耗
- 接口简单
- 在bridge中锁存地址信号和控制信号
- 适合多种设备
- AHB2APB Bridge可以锁存所有的地址、数据和控制信号
- 进行二级译码来产生APB从设备选择信号
- APB总线上的所有其他模块都是APB从设备,只有slave没有master。
3.1 APB信号列表
名称 | 描述 |
---|
PCLK | PCLK的上升沿用作APB传输的时基 | PRESETn | APB总线复位信号为低有效且通常将该信号直接连接到系统总线复位信号 | PADDR[31:0] | APB地址总线,可高达32位宽度并由外设总线桥接单元驱动 | PSELx | 来自二级译码器的信号,从外设总线桥接单元内到每个外设总线从机x。该信号表示从机设备被选中并且要求进行一次数据传输。每个总线从机都有一个PSELx信号 | PENABLE | 这个选通信号用来给外设总线上的所有访问提供时间。使能信号用来表示一次APB传输的第二个周期。PENABLE的上升沿出现在APB传输的中间 | PWRITE | 该信号为高表示一次APB写访问而为低表示一次读访问 | PRDATA | 读数据总线由被选中的从机在读周期(PWRITE低)期间驱动,读数据总线可达到32位宽度 | PWDATA | 写数据总线由被选中的从机在读周期(PWRITE高)期间驱动,写数据总线可达到32位宽度 |
3.2 APB状态转移
- IDLE:外设总线的默认状态。
- SETUP:当有传输要求时总线转移到SETUP 状态,这时对应的选择信号,PSELx被断言。总线仅在 SETUP 状态保持一个时钟周期并将总是在下一个时钟的上升沿移动到 ENABLE 状态。
- ENABLE 使能信号PENABLE 在ENABLE 状态中被断言。地址、写和选择信号都在从 SETUP 到ENABLE 状态的转变过程中保持稳定。
ENABLE状态也仅持续一个周期并且在这个状态之后如果没有进一步的传输要求总线将返回 IDLE 状态。另外,如果紧跟着另一个传输那么总线移动到 SETUP 状态。地址、写和选择信号在从ENABLE 到SETUP 状态的转变期间有小跳变也是可以接受的。
3.3 APB写传输
写传输开始于地址、写数据、写信号和选择信号在时钟上升沿之后的全部改变。 传输的第一个时钟被称作SETUP 周期。在下一个时钟边沿使能信号PENABLE 生效,这表示EANBLE 周期正在进行。地址、数据和控制信号全都在整个ENABLE 周期保持有效。传输在这个周期结束时完成。使能信号 PENABLE,将在传输结束时失效。选择信号也将变成低电平,除非当前传输之后紧跟着另一个到该外设的传输。为了降低功率消耗地址信号和写信号将在传输之后不再改变,直到下一个传输发生为止。协议仅要求在使能信号上有一个规则的转变(跳变)。在背靠背传输情况下选择和写信号可能有小跳变。
3.3 APB读传输
地址、写、选择和选通信号的时序都和写传输一样。在读传输的情况下,从机必须在EANBLE 周期提供数据。数据在ENABLE 周期末尾的时钟上升沿被采样。
3.4 APB bridge
|