本文主要是介绍AMBA-APB协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 简介
- 传输时序
- Signal Descriptions
- Transfers
- Write transfer with no wait states
- Write transfer with wait states
- Read transfer with no wait states
- Read transfer with wait states
- Example failing write transfer
- Example failing read transfer
简介
APB主要用在低速且低功率的外围,可针对外围设备做功率消耗及复杂接口的最佳化。APB在AHB和低带宽的外围设备之间提供了通信的桥梁,所以APB是AHB的二级拓展总线。
- 它的架构不像AHB总线是多主设备的架构,主要应用在低带宽的外设上,如UART、I2C。
- APB总线的唯一主设备是APB桥(与AXI或APB相连),因此不需要仲裁一些request/grant信号。
- APB的协议十分简单,甚至不是流水的操作,固定两个时钟周期完成一次读或写的操作,支持最大32-bit的数据位宽。。
- 其特性包括:两个时钟周期传输,无需等待周期和回应信号,控制逻辑简单,只有四个控制信号。由于APB的两个通道没有自己的握手信号,因此两个通道不会同时使用,即不支持读写并行操作 。
传输时序
从状态机看,APB 对每一笔数据的传送,均需花2 个周期的时间,且APB 的数据传递不适用在有流水线架构的模块设计中。
Signal Descriptions
- APB协议有两个独立的数据总线,一个用于读数据,一个用于写数据。总线可达32位宽。由于总线没有各自的握手信号,因此数据传输不可能同时发生在两个总线上。
- PREADY和PSLVERR两个信号是在APB3版本中添加的。
- PPORT和PSTRB两个信号是在APB4版本中添加的。
Transfers
Write transfer with no wait states
- 在T1,一个写传输开始,地址PADDR,写数据PWDATA,写信号PWRITE,选择信号PSEL,在PCLK上升沿注册。这称为写传输的设置阶段。
- 在T2处,PCLK上升沿登记使能信号PENABLE和准备信号PREADY。
- 当断言时,PENABLE表示传输的Access阶段的开始。PREADY表示slave可以在PCLK的下一个上升沿完成传输。
- 地址PADDR、写数据PWDATA和控制信号都保持有效,直到传输在T3完成,即Access阶段的结束。
- 使能信号PENABLE在传输结束时拉低。所选择的信号PSEL也拉低,除非传输是紧随其后的另一个传输到同一外设。
Write transfer with wait states
- 当Access阶段开始时,如果PENABLE拉高时,PREADY为低,那么传输会一直等待,直到PREADY拉高为止。
- 当PREADY保持低位时,以下信号应保持不变:PADDR,PWRITE,PSEL,PENABLE,PWDATA,PSTRB,PPROT。
- 当PENABLE拉低时,PREADY可以取任何值。
- 建议地址和写信号在传输后不要立即改变,而是保持稳定,直到另一个访问发生。这样可以降低功耗。
Read transfer with no wait states
- 类似于写操作,当PENABLE拉高进入ACCESS状态时,如果PREADY保持为高,传输会立即进行,在一个时钟周期内完成传输。
Read transfer with wait states
- 类似于写操作,如果PENABLE拉高时,PREADY为低,那么传输会一直等待,直到PREADY拉高为止。
- 当PREADY保持低位时,以下信号应保持不变: PADDR, PWRITE, PSEL, PENABLE, PPROT。
Example failing write transfer
- 可以使用PSLVERR来指示APB传输中的错误条件。在读和写操作上都可能发生错误条件。当PSEL、PENABLE和PREADY都为高时,PSLVERR仅在APB传输的最后一个周期被认为是有效的。
- 建议在不采样时将PSLVERR拉低。
Example failing read transfer
- 读操作也可能在完成时出现错误响应,表示没有有效的读数据可用。
这篇关于AMBA-APB协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!