AMBA总线—APB总线协议深度详解及APB总线模版

# APB总线介绍

APB(Advanced Peripheral Bus)总线是一种用于连接微控制器(MCU)与外围设备的简单、低功耗总线协议。它是ARM公司开发的AMBA(Advanced Microcontroller Bus Architecture)总线规范的一部分,旨在为片上系统(SoC)中的低速设备提供高效的通信接口。

在典型的基于AMBA总线的系统架构中,APB总线处于底层,负责连接MCU的核心与各种外围设备,如定时器、UART、SPI等。它的主要作用是简化系统设计,降低功耗,并提供一种标准化的通信方式,使得不同厂商生产的外围设备能够方便地集成到同一系统中。

APB总线的信号列表如下:
- **PADDR**:地址信号,用于指定要访问的外围设备寄存器地址。
- **PWRITE**:写控制信号,高电平表示写操作,低电平表示读操作。
- **PSELx**:片选信号,用于选择特定的外围设备。每个外围设备都有一个对应的PSELx信号,当该信号有效时,表示选中了相应的设备。
- **PENABLE**:使能信号,用于启动一次总线传输。在PSELx和PWRITE信号有效后,PENABLE信号上升沿触发数据传输。
- **PRDATA**:读数据信号,用于传输从外围设备读取的数据。
- **PWDATA**:写数据信号,用于传输要写入外围设备的数据。
- **PREADY**:准备好信号,由外围设备发出,表示它已准备好进行数据传输。当PREADY信号有效时,总线传输可以继续进行。
- **PSLVERR**:错误信号,用于指示总线传输过程中发生的错误。

PADDR信号携带了要访问的寄存器地址,通过它可以准确地定位到目标外围设备的特定寄存器。PWRITE信号则决定了当前操作是读还是写。PSELx信号在多个外围设备共存时,用于选择具体要操作的设备。PENABLE信号是总线传输的启动信号,它的上升沿触发了整个传输过程。PRDATA和PWDATA分别用于读数据和写数据的传输。PREADY信号由外围设备反馈,确保数据传输的正确性和稳定性。而PSLVERR信号则在出现错误时发出警报,以便系统能够及时处理异常情况。

通过这些信号的协同工作,APB总线实现了MCU与外围设备之间高效、可靠的数据传输,为整个系统的稳定运行提供了坚实的基础。

# APB总线传输(时序)

APB(Advanced Peripheral Bus)总线传输的时序涉及多个关键部分,其中APB状态机起着核心作用。

APB状态机主要有四个状态:IDLE、SETUP、ENABLE和ACCESS。在IDLE状态下,总线处于空闲状态,等待传输请求。当有传输请求到来时,状态机转换到SETUP状态,此时主设备会发送地址和控制信号,为传输做准备。接着进入ENABLE状态,从设备在这个状态下采样地址和控制信号,并进行相应操作。最后是ACCESS状态,数据在主设备和从设备之间传输。状态机的作用是有条不紊地协调主从设备之间的数据传输,确保传输的准确性和高效性。

写操作时,首先主设备在SETUP状态发送写地址和控制信号。从设备在ENABLE状态采样这些信号后,主设备在ACCESS状态发送数据。写操作的条件包括主设备有有效的写数据、正确的地址以及写使能信号。整个流程严格按照状态机的状态转换进行,保证数据准确写入从设备。

读操作流程为,主设备在SETUP状态发送读地址和控制信号,从设备在ENABLE状态采样后,将数据准备好。然后在ACCESS状态,从设备把数据发送给主设备。读操作的条件有主设备发送正确的读地址和读使能信号等。

APB模块接口具有重要功能和特点。它包含多个信号,如PADDR用于传输地址,PWRITE区分读写操作,PSELx用于选择从设备等。其特点是简单易用,适合连接低速设备。接口功能上,能够实现主从设备之间的可靠通信,通过标准化的信号交互,确保数据传输的稳定。它为APB总线传输提供了具体的物理连接和信号交互方式,使得整个APB总线系统能够高效运行,不同模块之间能够准确地进行数据的读写操作,深入理解其工作原理对于掌握APB总线传输时序至关重要。

# APB到AHB的接口

APB(Advanced Peripheral Bus)到AHB(Advanced High-performance Bus)的接口在整个系统中起着至关重要的作用,它实现了不同总线之间的高效通信与数据交互。下面重点阐述APB到AHB接口的读操作。

当进行读操作时,首先由APB主设备发起读请求。APB主设备会在PADDR信号上输出要读取的地址。这个地址明确了从AHB从设备的哪个存储单元获取数据。

接着,PSEL信号被置为有效,表明当前是一个有效的读操作请求。同时,PENABLE信号也会被置为有效,启动读操作流程。

AHB从设备接收到这些信号后,会根据PADDR信号所指定的地址,从自身的存储单元中读取相应的数据。然后,AHB从设备会通过HREADY信号来通知APB主设备数据是否准备好。如果HREADY信号为高,表示数据已准备好,可以进行传输;若为低,则表示数据尚未准备好,APB主设备需要等待。

一旦数据准备好,AHB从设备会将读取到的数据放置在HRDATA信号上,并将HTRANS信号设置为非空闲状态,如表示传输完成的状态。APB主设备检测到HREADY信号变为高且HTRANS信号处于合适的完成状态后,便会从HRDATA信号上获取数据,完成此次读操作。

在整个读操作过程中,还涉及到一些其他信号的交互。例如,APB主设备可以通过PWRITE信号来表明这是一个读操作(PWRITE为低)。AHB从设备可能会通过HRESP信号返回一个响应,告知APB主设备读操作是否成功完成。若HRESP信号为0,表示成功;若为非0值,则表示出现了错误情况。

通过这样一系列的信号交互和操作流程,APB到AHB接口的读操作得以准确、高效地完成,确保了系统中不同总线之间数据读取的顺畅进行,为整个系统的稳定运行提供了有力支持。这一过程体现了不同总线之间协同工作的机制,对于理解和设计复杂的片上系统具有重要意义。
share