前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AMBA之APB总线学习笔记

AMBA之APB总线学习笔记

作者头像
根究FPGA
发布2020-08-31 22:25:40
3.5K0
发布2020-08-31 22:25:40
举报
文章被收录于专栏:根究FPGA根究FPGA

APB、AHB、AXI AMBA(Advanced Micro-controller Bus Architecture)用于芯片内各个部件的互联,包含三种类型总线:APB、AHB以及AXI。

本着“窥一斑而见全豹”的想法再介绍一下全称:

APB:Advanced Peripheral Bus

AHB:Advanced High-performance Bus

AXI:Advanced eXtensible Inerface

APB 属性

APB接口用在低带宽和不需要高性能总线的外围设备上,主要目的是降低功率消耗和接口优化,如键盘、UART等,APB是非流水线结构,所有信号仅与时钟上升沿相关,他的总线架构不像AHB或AXI一样支持多个master,在APB里唯一的主模块就是APB桥,其特性为:

1、 两个时钟周期传输:传输分为两个阶段,第一个阶段为建立阶段(setup),第二个阶段为(enable),两个阶段各需要一个时钟周期操作完成,所以固定两个周期完成一次读或写操作。

2、 无需等待周期和回应信号:该说法的理解参考AXI总线的应答信号,在AXI总线中,写操作需要从机使用写相同通道进行应答,在APB中master并不需要这样的等待回应信号。如下图所示一次传输接收后并没与应答信号从slave发送到master。

信号描述

除了上面的信号之外,APB还有两个信号接口:

(1)、PPROT:保护类型,分为normal、privileged、secure、data/instruction访问。

(2)、PSTRB:写数据占位符,指示哪个字节是有效数据 (说到这里多嘴一句,在AXI中只有通道有STRB信号,读通道并没有,AXI支持非对齐传输也正是因为此,使用keep与strb信号配合实现非对齐传输操作)

状态转换

状态机的三个状态分别为:

IDLE:外围总线的默认状态,此时没有传输操作,也没有选中任何从模块

SETUP :当有传输要进行时,PSELx=1,PENABLE=0,系统进入SETUP状态,并只会在SETUP状态停留一个周期,当PCLK的下一个上升沿到来时,系统进入ENABLE状态。

ENABLE:系统进入ENABLE状态时,维持之前在SETUP状态的PADDR、PSELx、PWRITE不变,并将PENABLE置一。传输也只会在ENABLE状态维持一个周期,在经过SETUP和ENABLE状态之后传输就已完成。之后如果没有传输要进行,就进入IDLE状态等待。

APB桥

APB主机接口,APB桥是AMBA APB中的唯一总线主机,也是AMBA高级总线的从机(master为AXI/AHB),桥接口框图如下所示:

APB从机接口:

APB到AHB的接口特征

读传输

传输在 AHB 上的时刻 T1 发起,并且地址在 T2 被 APB 桥采样。如果传输到外设总线,那么该地址被广播并且产生合适的外设选择信号。在外设总线上的第一个周期成为 SETUP周期,当 PENABLE 信号被断言后,该周期后跟随着 ENABLE 周期。

在ENABLE周期期间,外设必须提供读数据。通常可能会将要读的数据直接发回到AHB,总线主机在ENABLE周期结束时的时钟上升沿采样该数据,在上图中为时间T4。

在时钟频率很高的系统中,可能需要APB桥在ENABLE周期结束时寄存读数据,然后APB桥在接下来的周期将该数据驱动回AHB总线主机。尽管对外设总线读传输而言这将要求一个额外的等待状态,但这允许AHB运行在较高的时钟频率,这也导致了系统性能的全面提高。

下图表示了一次突发读传输。(图中)所有读传输都要求一个等待状态(HREADY=0):

写传输

单个来自 AHB 的写传输可以零等待状态发生。APB 桥负责采样传输的地址和数据并在APB 的写传输期间保持这些数据值。当然也可以写突发传输,如下所示:

虽然第一个传输可以零等待状态完成,但对于之后到外设总线的传输,每个传输的执行都要求一个等待状态。

背靠背传输

下图表示了许多的背靠背传输。传输序列以一个写操作开始,之后跟随着一个读操作,然后是一个写操作,之后是一个读操作。

上图表示了如果一个读传输紧跟在一个写传输之后,那么需要 3 个等待状态来完成这次读操作。事实上,在基于处理器的设计中,一个写传输后跟随着一个读传输并不经常发生,因为处理器将在两个传输之间执行指令预取,并且指令存储器不太可能挂接在APB总线上。

三态数据总线的实现

建议以分开的读和写数据总线来实现 AMBA APB,这允许使用一个多路复用总线或者“逻辑或(OR)”总线方案来互联许多 APB 总线上的从机。如果使用了三态总线那么读和写数据总线可以组合成单根总线,因为读和写数据绝不会同时发生。下图表示了不需要特别考虑的因素如果数据总线是使用三态缓冲来实现。

最后给大家分享一下自己学习APB总线时的参考资料,是源自公众号OpenFPGA的一篇推文:AXI协议详解-AMBA总线协议AHB、APB、AXI对比分析,AHB的笔记还没有整理完,之后再与大家分享。

- END -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 根究FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档