目录
- 一、什么是APB总线?
- 二、信号描述
- 三、传输
- 3.1 写传输
- 声明
一、什么是APB总线?
APB协议是一种低成本接口,专门用于访问外设的可编程控制寄存器。
该接口采用非流水线式的简单同步协议,每次传输至少需要两个时钟周期才能完成。APB传输由APB桥接器发起(桥接器可称为请求方),外设接口则对请求作出响应(APB外设可称为完成方)。
二、信号描述
| 信号 | 源 | 位宽 | 说明 |
|---|---|---|---|
| PCLK | Clock | 1 | 时钟信号,所有信号均同步与PCLK的上升沿 |
| PRESETn | 系统总线复位 | 1 | 低电平复位,与系统总线复位信号直接相连 |
| PADDR | 请求方 | 1-32 | 字节地址 |
| PPROT | 请求方 | 3 | 保护类型,用于指示事务传输的普通、特权或安全保护级别,以及该事务是数据访问还是指令访问 |
| PNSE | 请求方 | 1 | 保护类型的层级划分 |
| PSELx | 请求方 | 1 | 选通信号,请求方为每个完成方生成独立的PSELx信号。PSELx有效时表示对应完成方被选中,且需要进行数据传输 |
| PENABLE | 请求方 | 1 | 使能信号,用于标识APB传输的第二个及后续周期 |
| PWRITE | 请求方 | 1 | 传输方向,“1”表示请求方写,“0”表示请求方读 |
| PWDATA | 请求方 | 8/16/32 | 写数据,由请求方在PWRITE为“1”的写周期期间驱动。 |
| PSTRB | 请求方 | PWDATA/8 | 写选通信号,指示写传输过程中需要更新的字节通道(?),每位对应一字节 |
| PREADY | 完成方 | 1 | PREADY作为握手信号,由完成方用来延长APB传输(?) |
| PRDATA | 完成方 | 8/16/32 | 读数据,由被选中的完成方在PWRITE为低电平的读周期期间驱动 |
| PSLVERR | 完成方 | 1 | 传输错误信号,可选,由完成方置为高电平,用以指示APB传输中出现错误状态 |
| PWAKEUP | 请求方 | 1 | 唤醒信号,用于指示与APB接口相关的任何活动 |
| PAUSER | 请求方 | 最大128 | 用户请求属性 |
| PWUSER | 请求方 | DATA_WIDTH/2 | 用户写数据属性 |
| PRUSER | 完成方 | DATA_WIDTH/2 | 用户读数据属性 |
| PBUSER | 完成方 | 最大16 | 用户响应属性 |
APB协议包含两条独立的数据总线:PRDATA用于读取数据,PWDATA用于写入数据。数据总线宽度可为8位、16位或32位,且读写数据总线必须保持相同位宽。由于读写数据总线未配备独立的握手信号,因此无法实现并发数据传输。
三、传输
3.1 写传输

声明
参考自ARM官方的AMBA 5 – Arm®下的APB文档