系列文章目录
AMBA协议介绍(1)——APB协议
AMBA协议介绍(2)——AHB协议
AMBA协议介绍(3)——AXI协议
目录
前言
AMBA(Advanced Microcontroller Bus Architecture),是一种开放的协议,主要用于SoC内部和ASIC,用于连接各种功能模块。简称AMBA总线,最早由ARM设计推出。AMBA是相对使用比较广的片内总线技术,已成为一种流行的工业标准片上结构,如今不单单是ARM专有的。
AMBA总线可以将RISC处理器集成在其他IP芯核和外设中,它是有效连接IP核的“数字胶”,并且是ARM复用策略的重要组件。它不是芯片与外设之间的接口,而是内核与芯片上其他元件进行通信的接口。
首先,让我们按照它的发布版本来认识一下它。
1.AMBA版本1规范定义:ASB( Advanced System Bus)与 APB(Advanced Peripheral Bus);
2.AMBA版本2规范定义:AHB(Advanced High-performance Bus)、ASB( Advanced System Bus)与 APB(Advanced Peripheral Bus);
3.AMBA版本3规范定义:AXI v1.0(Advanced Extensible Interface)、AHB-Lite v1.0(Advanced High-performance Bus Lite)、 APB v1.0(Advanced Peripheral Bus)与ATB v1.0(Advanced Trace Bus);
4.AMBA版本4规范定义:ACE(AXI Coherency Extensions)、ACE-Lite(AXI Coherency Extensions Lite)、AXI4(Advanced Extensible Interface 4) 、AXI4-Lite(Advanced Extensible Interface 4 Lite)、AXI4-Stream v1.0(Advanced Extensible Interface 4 Stream)、APB v2.0(Advanced Peripheral Bus)与ATB v1.1(Advanced Trace Bus);
随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。
AMBA协议的演进
- AMBA 1只有ASB和APB协议;
- AMBA 2引入AHB协议用于高速数据传输;
- AMBA 3,为适应高吞吐量传输和调试引入AXI和ATB,增加高级可扩展接口,而AHB协议缩减为AHB-lite,APB协议增加了PREADY和PSLVERR,ASB由于设计复杂而不再使用;
- AMBA 4,AXI得到了增强,引入QOS和long burst的支持,根据应用不同可选AXI4,AXI4-lite,AXI4-stream,同时为满足复杂SOC的操作一致性引入ACE和ACE-lite协议,APB和ATB也同时得到增强,比如APB加入了PPROT和PSTRB,另外为改善总线数据传输引入QVN协议;
- 适应更加复杂的高速NOC设计,引入环形总线协议,推出的AMBA CHI协议。
一、v1.0什么是APB协议?
V1.0 ASB、APB是第一代AMBA协议的一部分。APB(Advanced Peripheral Bus) 高级外设总线主要应用在低带宽的外设上,如UART、 I2C,它的架构不像AHB总线是多主设备的架构,APB总线的唯一主设备是APB桥(与AXI或APB相连),因此不需要仲裁一些Request/grant信号。APB的协议也十分简单,甚至不是流水的操作,固定两个时钟周期完成一次读或写的操作。其特性包括:两个时钟周期传输,无需等待周期和回应信号,控制逻辑简单,只有四个控制信号。传输可用如下状态图表示,
- 系统初始化为IDLE状态,此时没有传输操作,也没有选中任何从模块。
- 当有传输要进行时,PSELx=1,PENABLE=0,系统进入SETUP状态,并只会在SETUP 状态停留一个周期。当PCLK的下一个上升沿时到来时,系统进入ENABLE 状态。
- 系统进入ENABLE状态时,维持之前在SETUP 状态的PADDR、PSEL、PWRITE不变,并将PENABLE置为1。传输也只会在ENABLE状态维持一个周期,在经过SETUP与ENABLE状态之后就已完成。之后如果没有传输要进行,就进入IDLE状态等待;如果有连续的传输,则进入SETUP状态。
二、APB协议的传输时序
1.写传输包括无等待状态和有等待状态
无等待状态地址、写入数据、写入信号和选择信号都在时钟上升沿后改变。第一个时钟周期叫做Setup phase。 下一个时钟沿后使能信号PENABLE被置位,表示Access phase就位。地址、数据和控制信号在Access phase期间有效。传输在该周期后结束。使能信号PENABLE, 在传输结束后清空。 选择信号PSELx同样被置低,除非紧接着下一传输开始。有等待状态右图当PENABLE为高,传输可以通过拉低PREADY来扩展传输。
2.读传输包括无等待状态和有等待状态
无等待状态从器件必须在读传输结束前提供数据。有等待状态在Access phase期间PREADY信号拉低,则传输被扩展。
3.传输失败的例子
使用PSLVERR来指示APB传输错误。当PSEL, PENABLE以及PREADY 都为高时,PSLVERR才在最后一个周期进行判断。 当任何一个PSEL, PENABLE或者PREADY为低时,你可以将PSLVERR拉低,这是推荐,并不是强制要求。 收到一个错误后,可能或不可能改变外围器件的状态。 APB外围设备不要求必须支持PSLVERR引脚,当不使用该引脚时,应被置低。
上图1为写传输失败最后一个传输周期,PSLVERR信号拉高,上图2为读传输失败,没有读出数据。
AXI桥接到APB: AXI的RRESP/BRESP = APB的SLVERR(read: PSLVERR -> RRESP[1], write: PSLVERR -> BRESP[1])
AHB桥接到APB: PSLVERR被映射到HRESP = ERROR(PSLVERR -> HRESP[0])
总结
APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。
APB总线协议包含一个APB桥,它用来将AHB,ASB总线上的控制信号转化为APB从设备控制器上可用信号。APB总线上所有的外设都是从设备,这些从设备有以下特点:
a 接收有效的地址和控制访问
b 当APB上的外设处于非活动状态时,可以将这些外设处于0功耗状态
c 译码器可以通过选通信号,提供输出时序(非锁定接口)
d 访问时可执行数据写入
其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。APB上的传输可以用简单的状态图来说明。