曜曜曜切克闹的个人空间 https://blog.eetop.cn/1781145 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

AMBA APB总线(基础)

热度 4已有 804 次阅读| 2023-9-24 13:17 |个人分类:AMBA总线学习|系统分类:芯片设计

0 写在前面:感谢各位大佬们的关注和鼓励,受宠若惊。之后verilog部分更新一些写法技巧(慢慢接触项目总结吧),本篇先总结一些APB总线的知识点,下次再用APB 时钟计数器的verilog代码理解这些知识点。

1 学习资料

·由于师兄给的设计要求是AMBA2.0,所以参考了ARM官网关于AMBA2.0的技术手册《AMBA™ Specification (Res2.0)》,这本技术手册英文比较好理解,篇幅也很短,可以直接看英文版,问题不大。
·在这本书中,介绍了AMBA基本信号、AHB总线、ASB总线、APB总线,由于写的项目主要设计APB接口,所以在本文中主要介绍APB的部分。

AMBA(Advanced Microcontroller Bus Architecture)高级处理器总线架构;

APB(Advanced Peripheral Bus)高级外围总线;

2 AMBA APB的优点

先说用途和目的:APB可以实现与低功耗、低速设备进行数据传输。
接下来介绍其特点:AMBA APB总线可以用在低带宽和不需要高性能的外设上(即低速且低频率的外设);可以将APB视作AHB的二级总线;
·低功耗(APB总线信号端口比较简单,复杂度低,低频工作环境等因素都可以降低功耗)
·低成本(用的广泛,可以兼容很多IP,降低开发成本)
·低带宽(信号的位宽有限,而且简单的外设也不需要多位宽)
·无流水线结构(区别于AHB,但效率没有AHB高)
·APB总线中,唯一的master就是APB Bridge,其他设备都是slave。

3 典型的AMBA APB端口信号(APB Bridge、slave为例)

3.1 模块端口示例(所有的AMBA APB信号使用P字母开始)

APB总线协议中唯一的master—APB Bridge模块结构:

image.png

关于system bus slave interface信号的来源,其实是有一个AHB-APB模块和APB进行连接通信;
实际的信号流:cortex M3核->bus matrix -> AHB-APB -> APB bridge -> APB slave(后续可能会提到,要看我能不能实现软硬结合了~)

APB中slave模块结构:

image.png

APB Bridge和slave的信号其实是可以进行互联的,APB Bridge(master)将控制信号和数据传输给slave,slave将部分信号传输给APB Bridge(master),从而完成通信;

信号及其来源:


SignalSourceDescription
PCLK时钟源系统时钟,传输发生在上升沿
PRESETn复位源复位信号,低使能
PADDR[31:0]APB桥地址信号,最高可达32位
PSELxAPB桥由APB bridge产生的信号,针对每一个Peripheral Bus Slave片选信号,表示x从机是否被选中
PENABLEAPB桥使能信号,标记传输使能
PWRITEAPB桥读/写控制信号,高位写,低为读
PWDATAAPB桥写数据
PREADY从机标记从机是否已将数据发送到总线,高为ready(给出的slave没有,但是官方slave代码会有的,常设定为assign PREADY = 1)
PRDATA从机读数据
PSLVERR从机故障信号,为高时发生故障(给出的slave没有,但是官方slave代码会有的,常设定为assign PSLVERR = 0)


3.2 PCLK、PRESETn:首先来进行分析,一个APB总线信号肯定要有时钟信号PCLK来管理数据传输,其次是异步复位信号PRESETn 信号,这两个信号是基本所有模块的基础。
3.3 PADDR[31:0]:这里表示地址信号(地址与存储的数据是一一对应的关系,要求是对齐的关系,这里没有涉及),一般以16进制表示形式,也就是0xXXXX XXXX;
3.4 PSELx:在一个APB总线中,只有一个master(也就是APB桥),但是可以接很多slave。至于选择哪个slave就需要PSELx信号进行选择;
3.5 PENABLE:传输使能信号,表示当前传输是否有效;
3.6 PWRITE:读写信号,APB Bridge需要进行写传输时,该信号拉高;APB Bridge需要进行读传输时,该信号拉低。(这个信号是告诉slave的,表示master正在想干什么事情)
3.7 PRDATA:读数据(slave传输给master)
3.8 PWDATA:写数据(master传输给slave)

附上ARM官方文档的APB信号端口,供大家欣赏:

image.png

4 APB状态机

官方文档的状态机:

image.png


状态功能
IDLE默认状态(我的理解是一种待机状态)
SETUP总线的传输状态来到SETUP状态,slave的PSELx被选中(拉为1),但只保持一个时钟周期。之后就要在下一个时钟上升沿时候,来到ENABLE状态
ENABLE在ENABLE状态,PENABLE被拉高。在SETUP和ENABLE状态,地址、写信号、选择信号都要保持稳定。在ENABLE状态也只持续一个时钟周期,如果没有后续传输,总线又将回到IDLE状态。如果有后续传输,总线将回到SETUP状态。

从状态机来看,APB对每一笔数据的传输,都需要两个周期(省略掉IDLE),因此APB数据不适合流水线架构的模块设计中。

(注意:在ENABLE回到SETUP状态时,对于地址信号、写信号、选择信号的要求并不高,可以出一点小错误,因为简单外设接受数据的速度还可以,后期出一些小问题影响不大)

5 写传输和读传输时序逻辑

5.1 写传输:

先放出写传输时序图:

image.png

分析(注意,我理解的这个时序图是从master的角度进行分析的,要结合master和slave的共有信号去理解时序图):

  1. [T1,T2)对应IDLE状态 (这里采用闭区间、开区间的表达方式,用作表示T1上升沿起作用,但T2上升沿还未起作用,下同);

  2. [T2,T3) 对应SETUP状态。此时,由于T2上升沿的有效,电路状态开始发生改变,在这个时钟周期内,PADDR、PWRITE(拉为1)、PSEL(选中哪个slave)、PWDATA等信息开始加载到数据线上,注意此时PENABLE还没有起效果,只起到一种预加载的效果。

  3. [T3,T4)对应ENABLE状态。此时,由于T3上升沿有效,PENABLE开始有效,在这个时钟周期内,上个状态选中的slave开始接受PADDR、PWRITE、PSEL、PWDATA等信息。

  4. [T4,T5)阶段,由于T4时刻上升沿开始触发,导致PENABLE和PSEL信号恢复默认值,等待下一次指令进行

5.2 读传输:

放出写传输时序图:

image.png

分析(注意,我理解的这个时序图是也从master的角度进行分析的,要结合master和slave的共有信号去理解时序图):

  1. [T1,T2)对应IDLE状态;

  1. [T2,T3) 对应SETUP状态。此时,由于T2上升沿的有效,电路状态开始发生改变,在这个时钟周期内,PADDR、PWRITE(拉为0)、PSEL(选中哪个slave)等信息开始加载到数据线上,注意此时PENABLE还没有起效果,只起到一种预加载的效果。(注意此时没有PRDATA数据线上没有有效信息

  2. [T3,T4)对应ENABLE状态。此时,由于T3上升沿有效,PENABLE开始有效,在这个时钟周期内,上个状态选中的slave开始接受PADDR、PWRITE、PSEL等信息,并传输PRDATA信号给master。

   4. [T4,T5)阶段,由于T4时刻上升沿开始触发,导致PENABLE和PSEL信号恢复默认值,等待下一次指令进行何种操作。


一些疑惑

·为什么读操作在第一个时钟周期里的PRDATA没有有效数据?

  在对比写操作和读操作的过程中,发现读操作在SETUP时钟周期里没有有效数据,个人理解是因为低速外设准备数据的速度太慢了,如果在SETUP时钟周期就要求有效数据,很有可能传输不了正确的数据,索性降低要求,让其在ENABLE时钟周期才有效。

  而APB Bridge准备数据的速度很快,因此可以在SETUP状态就可以准备好数据,方便在ENABLE状态给外设数据。

(待续)


6 APB总线连接外设应用

官方文档给出的一些应用:

image.png

从这里可以看出对于AMBA APB总线来说,只有一个master(APB Bridge),同时可以挂载多个slave(比如uart,keypad,timer,PIO).

应用部分感觉官方文档给的太宽泛了,下次博客结合Verilog代码进行分析一个APB slave究竟是如何工作的。

关于APB的东西还有很多,比如PREADY,多次数据连续传输等等,等空闲的时候再补充吧。

本文也存在许多不足之处,欢迎大家批评指正。

4

点赞

刚表态过的朋友 (4 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 3

    关注
  • 19

    粉丝
  • 6

    好友
  • 45

    获赞
  • 11

    评论
  • 108

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-9 03:55 , Processed in 0.025167 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部