【AMBA】APB总线的个人学习记录(一):理论知识

精通APB (Advanced Peripheral Bus) 总线设计通常意味着你不仅理解其基础概念,而且能够在实际的硬件设计中灵活运用APB总线,解决复杂问题,并优化设计。以下是一些关键点,当你掌握这些方面时,可以说你对APB总线设计有了深入的理解:

  1. 理论知识

    • 理解APB总线的基本原理和架构。
    • 熟悉APB总线的信号定义,包括地址、数据、控制和握手信号。
    • 了解APB总线的时序要求和协议规范。
  2. 设计能力

    • 能够设计APB主控器(通常是APB桥接器)和APB从设备。
    • 熟练使用Verilog、VHDL或其他硬件描述语言实现APB接口。
    • 能够集成APB总线到系统级芯片(SoC)设计中。
  3. 验证技能

    • 掌握APB总线的验证方法,能够创建测试用例并执行功能验证。
    • 使用形式验证或模拟来确保APB接口的正确性。
  4. 调试技巧

    • 能够使用逻辑分析仪或波形查看器调试APB总线上的问题。
    • 理解如何定位和解决时序和数据完整性问题。
  5. 优化与分析

    • 理解APB总线的性能瓶颈,并知道如何优化设计以提高效率。
    • 能够进行功耗分析,确保设计符合低功耗目标。
  6. 标准与兼容性

    • 理解APB总线与其他AMBA总线(如AHB、AXI)的交互。
    • 确保设计遵循ARM AMBA APB规范。
  7. 实践经验

    • 拥有多个成功的APB总线设计和集成经验。
    • 能够处理跨芯片设计的复杂性。
  8. 持续学习

    • 关注APB总线和AMBA架构的发展趋势,保持更新知识。

精通任何技术都需要时间和实践,对于APB总线设计而言,这同样适用。你需要通过阅读官方文档、参考设计、参与项目和不断实践来积累经验。同时,加入相关的技术论坛和社区,与同行交流,也是提高技能的好方法。

总线会有按照协议规定的一组信号,除此之外,总线所连接的从设备也会有独立的时钟与复位信号,不会和总线用相同的时钟,所以两者之间传输的数据和信号会要做跨时钟处理。

基本原理

高级外设总线(APB:Advanced Peripheral Bus)是高级微控制器总线体系结构(AMBA:Advanced Microcontroller Bus Architecture)协议系列的一部分。它定义了一个低成本的接口,优化了最小的功耗和降低的接口复杂性。

APB是非流水结构,所以它主要用在不需要用到高性能总线(AXI)的低带宽外围设备上。

特点:

  • 成本低
  • 功耗小
  • 接口简单
  • 非流水结构

常见用法:使用APB总线来访问外围设备的可编程控制寄存器。

架构

Alt

信号定义

信号方向
(对主设备)
位宽信号描述
PCLK输入系统时钟源1bit时钟信号,APB协议中所有信号只和时钟上升沿有关
(同步APB总线上的所有操作)
PRESETn输入系统复位1bit复位信号,低电平有效
PADDR输出APB桥32bit地址总线,指示要访问的寄存器地址
支持的最大地址空间是2^32=4G
PWRITE输出APB桥1bit方向信号,指示当前传输的是读操作还是写操作
高电平写,低电平读
PSEL输出APB桥根据系统需求片选信号,指示选择的从设备
每个从设备都有一个对应的PSEL信号
PENABLE输出APB桥1bit使能信号,在传输的第二个和后续时钟周期有效,
它表明数据传输已经开始,但尚未完成
PWDATA输出APB桥32bit写数据总线,用于从主设备向从设备传输数据。
在写操作期间,数据在PENABLE的上升沿锁存
PSTRB输出APB桥4bit字节选通信号,用于指示哪些字节应当被写入。
PSTRB中的一位对应写数据总线中的一个字节
PRDATA输入从设备32bit读数据总线,用于从设备向主设备传输数据。
在读操作期间,数据在PENABLE的上升沿采样
PREADY输入从设备1bit准备信号,用于告知主设备从设备是否准备好接收或发送数据。
在传输过程中,如果从设备需要更多时间来准备数据,它可以延迟PREADY信号,从而延长传输周期
PPROT输出APB桥3bit保护类型。指示事务的正常、特权或安全保护级别,
以及该事务是数据访问还是指令访问

时序要求

无需等待的写操作

无需等待的写操作

  1. 在T0阶段,所有总线处于IDLE状态。
  2. 在T1阶段,PADDR、PWRITE、PWDATA和PSEL在时钟的上升沿被寄存,即主设备APB桥把这些数据发送到总线上。此时处在Setup状态。
  3. 在T2阶段,PENABLE拉高,指示传输开始,与此同时从设备已经接收到主设备发送过来的地址和写控制命令,知道主设备要准备发数据过来,于是拉高PREADY表示已经做好准备。此时处在Access状态。
  4. T3时刻,PADDR和PWRITE会一直保持有效直到传输结束(T3时刻)。表示传输结束的时钟上升沿到来后,PENABLE和PSEL拉低。

PREADY有效就表示从设备可以在下一个时钟上升沿完成传输。

有等待的写操作

只有当从设备准备好接收数据后,PREADY信号才会拉高,传输才得以开始。因此当从设备没准备好的时候,可以保持PREADY的低电平,来延长传输。

传输被延长的时候,PADDR,PWRITE,PSEL,PENABLE,PWDATA,PSTRB和PPROT会一直保持原来的值。
需要等待的写操作

无需等待的读操作

无等待的读操作和写操作唯一的区别在于此时的PWRITE是低电平,从设备需要在读操作结束前将数据传输到总线上。
在这里插入图片描述

需要等待的读操作

在读操作中同样可以使用PREADY来延长传输。
在这里插入图片描述
注意的是,在读操作中,PSTRB所有位必须设置为低电平。


Note:
传输过程中可以一直保持地址PADDR和读写操作PWRITE信号的不变,直到开始新一轮的传输,这有助于系统节省功耗。


错误响应

PSLVERR用于指示APB传输时读写操作中出现的错误情况。

  • 当PSEL、PENABLE和PREADY都为高电平时,会出现错误状态。
  • 出现错误状态后,PSLVERR会在传输的最后一个时钟周期内保持有效。

APB外围设备不要求必须支持PSLVERR引脚,当不使用该引脚时,应被置低。

failing write transfer
failing read transfer
映射关系:

  • AXI -> APB RRESP[1]/BRESP[1] = PSLVEER
  • AHB -> APB HRESP[0] = PSLVERR

保护单元支持

protection encoding

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值