【ARM AMBA APB 入门 1 -- APB总线介绍】

文章目录

    • APB 总线历史
    • 1.1 APB 总线介绍
      • 1.1.1 APB 使用场景
      • 1.1.2 APB 信号列表
      • 1.1.3 APB 状态机
    • 1.2 APB 传输时序
      • 1.2.1 APB 写传输时序
        • 1.2.1.1 Write transfer with no wait states
        • 1.2.1.2 Write transfer with wait states
      • 1.2.2 APB 读时序
        • 1.2.2.1 Read transfer with no wait states
        • 1.2.2.1 Read transfer with wait states
      • 1.2.3 Error Respond
        • 1.2.3.1 Error response Write transfer
        • 1.2.3.2 Error response Read transfer
        • 1.2.3.3 Mapping of PSLVERR

APB 总线历史

ARM APB总线(Advanced Peripheral Bus)是ARM公司推出的一种高速、低功耗的外设总线。它主要用于连接处理器和外设之间的通信,具有简单、灵活、可靠等特点。以下是APB总线的发展历史:

  • APB v1.0:最初的APB总线发布于1996年,它是一种基于8位数据传输的低速总线,主要用于连接一些简单的外设。
  • APB v2.0:随着ARM处理器性能的提升,APB总线也在不断升级。1998年,APB v2.0发布,它支持16位数据传输,速度提高了一倍,同时增加了一些新的特性。
  • APB v3.0:2000年,APB v3.0发布。它进一步提高了总线的速度和可靠性,并增加了一些新的特性,如支持burst传输和split-transaction。
  • APB v4.0:随着SoC(System on Chip)的广泛应用,APB总线也在不断演进。2003年,APB v4.0发布,它支持更高的数据传输速度和更多的特性,如支持DMA(Direct Memory Access)传输和pipelined burst传输。
  • AMBA3 APB:2004年,ARM发布了AMBA3协议,这是一种新的总线架构,它包括了APB、AXI(Advanced eXtensible Interface)和ATB(Advanced Trace Bus)三种总线。其中,APB总线成为AMBA3协议中的低速总线,主要用于连接一些简单的外设。
  • AMBA4 APB:2010年,ARM发布了AMBA4协议,这是一种全新的总线架构,它针对SoC的需求进行了优化,支持更高的数据传输速度和更多的特性。在AMBA4协议中,APB总线仍然作为低速总线的角色存在,但它的性能和可靠性得到了进一步提升。

以上是APB总线的发展历史,随着ARM处理器和SoC的不断发展,APB总线也将不断演进和完善。
—以上内容来自ChatGPT

1.1 APB 总线介绍

1.1.1 APB 使用场景

在SOC设计中,APB 一般作为IP的配置接口,包括低速外设如 I2C, UART, I2S等,也包括 DDR, PCIe, Ethernet 等高速IP,可以方便的实现CPU对外设IP的寄存器配置。系统中一般会实现一个AXI2APB 或者 AHB2APB 的桥接器将 APB 口挂载在系统上。
【ARM AMBA APB 入门 1 -- APB总线介绍】_第1张图片

1.1.2 APB 信号列表

Y: Mandatory
N: Must not be preset
O: Optional for inputs and outputs
OO: Optional for output ports, mandatory for inputs
C: Conditional, must be present if the property is True
OC: Optional conditional, optional but can only be present if True
【ARM AMBA APB 入门 1 -- APB总线介绍】_第2张图片

Signal Source Description
PCLK 时钟源 系统时钟,传输发生在上升沿
PRESETn 复位源 复位信号,低使能
PADDR APB桥 地址信号,最高可达32位
PSELx APB桥 由APB bridge产生的信号,针对每一个Peripheral Bus Slave片选信号,表示x从机是否被选中
PENABLE APB桥 使能信号,标记传输使能
PWRITE APB桥 读/写控制信号,高位写,低为读
PWDATA APB桥 写数据
PREADY 从机 标记从机是否已将数据发送到总线,高为ready
PRDATA 从机 读数据
PSLVERR 从机 故障信号,高为发生故障

APB 总线架构不支持多个主模块,其唯一的主模块(master)就是 APB桥, 此外,在 APB 总线中分别有 PWDATAPRDATA,但这并不表示它支持同时读写。

1.1.3 APB 状态机

【ARM AMBA APB 入门 1 -- APB总线介绍】_第3张图片

  • IDLE:这个是 APB 的默认状态,也就是没有传输时候的状态;
  • SETUP:当需要进行一个传输的时候,APB 首先进入这个状态;PSELx 信号首先拉高;总线仅仅在 SETUP 状态停留一个时钟周期,然后接着在下一个时钟的上升沿进入 ACCESS 状态;
  • ACESS:在 SETUP 状态转换到 ACCESS,PENABLE 信号被拉高;在 SETUP 状态转换到 ACCESS 状态这段时间里,address,write,select 和 write data 信号必须保持稳定;
    处于 ACESS 状态下,如果 PREADY 为 0,会让其继续处于 ACCESS 状态;否则,PREADY 为 1,如果还有传输则再次进入 SETUP -> ACCESS ,如果没有传输,直接回到 IDLE;

1.2 APB 传输时序

1.2.1 APB 写传输时序

写传输分为不带等待信号的写,和带等待信号的写。

1.2.1.1 Write transfer with no wait states

【ARM AMBA APB 入门 1 -- APB总线介绍】_第4张图片

  • T1 时刻 APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,拉高 PWRITE 表示进入写,同时拉高 PSEL,从 IDLE 进入 SETUP;
  • T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS;
  • T3 时刻检测到 PREADY 被拉高,也就是说 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低。

1.2.1.2 Write transfer with wait states

【ARM AMBA APB 入门 1 -- APB总线介绍】_第5张图片

  • T1 时刻 APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,同时拉高 PSEL,从 IDLE 进入 SETUP
  • T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS
  • T3 时刻检测到 PREADY 为 0,也就是说 Slave 还没有接收完数据,所以在此刻,下面信号必须保持,以便 Slave 能够继续采样:
    • PADDR 地址信号
    • PWRITE 数据方向信号
    • PSEL 片选信号
    • PENABLE 使能信号
    • PWDATA 数据
  • T4 时刻 PREADY 依然 为 0,所以还是保持不变
  • T5 时刻,PREADY 为 1,说明 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低

注意:即便是传输结束了,Address 和 data 信号也不会立即改变,直到下一次传输才会刷新新的地址和数据信号,这样做的原因是减少功耗;

1.2.2 APB 读时序

1.2.2.1 Read transfer with no wait states

【ARM AMBA APB 入门 1 -- APB总线介绍】_第6张图片

  • T1 时刻 APB 将地址信息 PADDR 准备好,拉低 PWRITE 表示进入读,同时拉高 PSEL,从 IDLE 进入 SETUP;
  • T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS;
  • T3 时刻检测到 PREADY 被拉高,也就是说 Slave 已经完成收据发送,PRDATA 上就是来自 Slave 的数据,传输完成;PENABLE 拉低,PSEL 拉低。

1.2.2.1 Read transfer with wait states

【ARM AMBA APB 入门 1 -- APB总线介绍】_第7张图片
时序过程和上述一样,只不过 PREADY 被拉低了两个周期,真正从 Slave 读的数据到 T5 时刻才真正有效;

1.2.3 Error Respond

在读和写的过程,可能出现错误,错误通过 PSLVERR 信号来指明;APB外围设备不要求必须支持PSLVERR引脚,当不使用该引脚时,应被置低

1.2.3.1 Error response Write transfer

下面这个是写失败后的时序:
【ARM AMBA APB 入门 1 -- APB总线介绍】_第8张图片
可以看到,在写失败后,PSLERR 信号被拉高了

1.2.3.2 Error response Read transfer

下面这个是读失败后的时序:
【ARM AMBA APB 入门 1 -- APB总线介绍】_第9张图片
读失败后,PRDATA 上的数据不再有效。

1.2.3.3 Mapping of PSLVERR

如果发生了失败的情况 PSLVERR 信号会反馈到桥接的 AHB/AXI 总线上的回复信号上。

推荐阅读
https://blog.csdn.net/zhoutaopower/article/details/103729440

你可能感兴趣的:(#,ARM,Bus,Introduction,fpga开发,arm,arm开发,嵌入式硬件)