AHB_Lite和APB总线入门
1. 概述
AHB总线(the Advanced High-performance Bus)和APB总线(the Advanced Peripheral Bus)由ARM公司研发的AMBA(Advanced Microcontroller Bus Architecture)片上总线协议定义。其中AHB总线主要应用于高性能、高时钟频率的系统模块;而APB总线主要用于低带宽的周边外设之间的连接,例如UART等外设。
在一些非常简单的系统中,主要使用的是AHB-Lite总线(以下简称为AHB总线)和APB总线,其中Cortex-M0作为AHB总线的主机,来对AHB总线上的其他从机进行控制。系统中的一部分外设作为APB总线的从机,由APB总线的主机——AHB-APB桥来控制,而AHB-APB桥又作为AHB的从机,由CPU控制。这样CPU就通过AHB总线和APB总线控制了整个系统。
2. AHB-Lite总线
2.1 通信流程简述
如图,是一个由一个主机和三个从机组成的系统,描述了一个经典的主机对从机的读写过程。其中为了实现AHB协议,还添加了Decoder地址译码器模块和Multiplexor从机选择器模块。
当主机需要和从机通信时,输出写数据信号HWDATA和地址信号HADDR,并直接连接至从机;但是从机还需要被告知这些信号是否有效,即还需要一个HSEL信号;主机的地址信号HADDR在传入从机的同时,还传入了地址译码器,地址译码器根据事先配置好的各个从机在内存的地址映射,由当前的HADDR输出得到相应的HSEL输出,从而实现对当前时刻的从机进行选择,这样就完成了AHB主机到从机的通信。
从机执行指令完毕后,需要对主机返回数据。但每一个从机都有一个属于自己的读信号HRDATA,而主机需要知道哪一个外设的HRDATA才是当前时刻所需要的。而Multiplexor从机选择器就利用Decoder地址译码器的HSEL信号来对多路HRDATA中进行选择,最终返回给AHB主机。
2.2 各模块信号定义
如图,是一对标准的AHB-Lite信号。主要可以分为四部分:
- 全局信号,即复位和时钟信号。
- 地址和控制信号,用来标明当前的传输地址和传输类型。
- 数据信号,即写信号HWDATA和读信号HRDATA。
- 传输响应信号,即就绪信号HREADY和回应信号HRESP。
主机信号
信号名称 | 信号描述 |
---|---|
HADDR[31:0] | 32-bit地址总线 |
HBURST[2:0] | 突发信号。表明当前的传输类型是单次传输还是突发传输。 |
HMASTLOCK | 主机锁定信号。向从机指示当前的传输是不可分割的。通常在多主机时使用此信号。 |
HPROT[3:0] | 保护信号,用来定义存取的型态与特性,需要从机支持。 |
HSIZE[2:0] | 表示数据的传输大小。如b000表示8-bit传输,b010表示32-bit传输。 |
HTRANS[1:0] | 表明当前的传输类型。IDLE/BUSY/NONSEQUENTIAL/SEQUENTIAL。 |
HWDATA[31:0] | 写数据信号。 |
HWRITE | 写信号。0:读。1:写。 |
从机信号
信号名称 | 信号描述 |
---|---|
HREADY | 就绪信号,表明当前传输是否结束。 |
HRESP | 回应信号,表明当前传输是否成功。 |
HRDATA[31:0] | 读数据信号。 |
2.3 基本传输流程
一次AHB-Lite传输包含两段,分别是地址传输和数据传输。以地址传输段作为开始,占一个时钟周期,接下来进入数据传输段,可能需要一个或多个时钟周期,并用HREADY信号表明本次传输结束。
如图表示了一次主机读的过程。在Address phase本次传输开始,传入地址信号HADDR和写信号HWRITE(为低,表示为读指令),在下一个HCLK进入Data phase,从机将主机所需要的读数据放到HRDATA读数据信号,并拉高HREADY表明本次传输结束。
如图表示了一次主机写的过程。其流程和上面读过程类似,在Address phase,写信号HWRITE拉高表明写指令,在Data phase将要写的数据放入HWDATA写数据信号,同时从机将HREADY拉高表明本次传输结束。
有时从设备并不能在第一个Data phase就响应从机,并且需要从机去等待。如图,在HADDR为B时,从机在第一个Data phase并没有拉高HREADY,主机就需要等待直至HREADY拉高释放总线。
3. APB总线
APB总线的主机一般是AHB-APB桥,从机一般是低速外设。首先AHB-APB桥作为AHB总线的外设,收到CPU写入的控制信号后,同样利用地址译码器产生PSELx信号来对APB总线下的外设进行选择,得到响应后,再将数据返回AHB总线,由AHB主机接收。
3.1 模块信号定义
APB通信方式和AHB-Lite类似,相对而言删去了复杂的控制信号,逻辑更为简洁。
APB总线信号
信号名称 | 信号描述 |
---|---|
PADDR | 32-bit地址总线 |
PSELx | 从机选择信号 |
PENABLE | 有效信号 |
PWRITE | 写有效信号 |
PWDATA | 写数据信号 |
PREADY | 从机就绪信号 |
PRDATA | 读数据信号 |
PSLVERR | 从机传输失败信号 |
3.2 基本传输流程
如图是基本的无等待写传输和读传输过程。在第一个PCLK叫做setup phase,由地址信号PADDR和写信号PWRITE进入本次传输;在下一个PCLK叫做access phase,需要保证PENABLE拉高,表明数据和控制信号有效。从机拉高PREADY,表明本次传输结束。
对于有等待传输,在第一个PCLK进入Setup phase,在第二个PCLK进入Access phase,但此时从机并没有立即将PREADY拉高,这样主机就需要等待PREADY,PSEL信号和PENABLE信号需要继续保持有效,直到从机拉高PREADY表明本次传输结束。