APB协议介绍/为什么同时需要PSEL和PENABLE?

1.APB的状态机

1.每次进入setup状态只会维持一个cyc,无条件跳转到ACCESS状态。也就是说PSEL==1 && PENABLE==0的状态不会持续超过一个cyc。

2.在SETUP进入ACCESS过程中PADDR,PWRITE,PSELx和PWDATA信号必须保持稳定

即在setup阶段 和 access阶段 paddr/pwrite/pselx/pwdata要保持不变

3.如果ACCESS状态中PREADY有效,即完成一次transfer之后没有继续transfer则跳入IDLE否则进入SETUP

2.为什么同时需要PSEL和PENABLE?

不进入SETUP状态,直接ACCESS其实也可以完成传输,但是APB可能出于通用性,灵活性,时序,历史遗留等考虑,多加一个状态,一根信号。直接由PSEL和PREADY握手就像AXI的单Master多Slave的结构一样是可以的

3.早期的APB2是没有PREADY的

 

### APB协议介绍 APB(Advanced Peripheral Bus)是一种用于低带宽外围设备接口的总线协议,广泛应用于嵌入式系统中的外设通信。该协议设计简洁,旨在降低功耗并简化硬件实现。 #### 协议特点 - **单主模块结构**:不同于AHB支持多主模块的设计,APB仅有一个主模块——即APB桥,负责管理所有从属设备间的访问请求[^3]。 - **两周期传输机制**:为了进一步减少复杂度成本,APB采用双时钟周期完成一次完整的读写操作。具体来说,在第一个周期设置地址与控制信号;第二个周期则执行实际的数据传送过程[^1]。 - **精简的握手流程**:由于目标应用场景通常具备较低的数据吞吐量需求,因此省去了复杂的应答确认环节以及等待状态的支持,从而降低了整体延迟并提高了效率。 #### 控制信号说明 - `PSEL`:当此位被置高时表示当前事务已被选中; - `PENABLE`:表示使能阶段已准备好进行数据交换; - `PWRITE`:区分读还是写的动作方向; - `PRDATA`:代表由从机返回给主机的数据值。 对于具体的读取实例而言,当处于启用状态下(`state=ENABLE`)且配置参数满足条件(PWRITE=0, PSEL=1, PENABLE=1),此时可以获取到存储于寄存器内的信息作为输出结果(PRDATA)。 ```c // 示例代码展示如何通过软件模拟简单的APB读命令序列 void apb_read(uint32_t address){ // 设置选择信号 PSEL = 1; // 配置非写模式 PWRITE = 0; // 将要访问的目标地址赋值给PADDR PADDR = address; // 开始第一次采样周期 wait_for_clock_cycle(); // 启动使能标志 PENABLE = 1; // 进行第二次采样周期以捕获响应数据 wait_for_clock_cycle(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值