0.AMBA总线概括

AMBA(Advanced Microcontroller Bus Architecture) 总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有高速度低功耗等特点。

系统芯片中各个模块之间需要有接口来连接;

总线作为子系统之间共享的通信链路;

其优点:低成本,方便易用

缺点:容易有性能瓶颈

AMBA总线的发展历史:

AMBA 1.0 : ASB, APB
AMBA 2.0 : AHB, ASB, APB
AMBA 3.0 : AMBA Advanced eXiensibele Interface (AXI)
AMBA 4.0 : ...

AMBA总线体系包括以下三种总线:

  1. AHB:Advanced High-performance Bus,用于高性能、高时钟工作频率模块。
  2. ASB:Advanced System Bus,用于高性能系统模块。
  3. APB:Advanced Peripheral Bus,用于慢速外设模块。

下面给出一个典型的AMBA系统:

以一个SOC系统架构设计为例:

从AHB/ASB总线到APB总线需要通过 桥接器(Bridge) 进行互联。

1.APB总线介绍

应用于慢速外设,如UART、键盘等,不需要AHB总线体系中的Arbiter与Decoder。

Arbiter为仲裁器,决定哪个Master工作。Decoder为译码器,决定Master与哪个Slave进行数据传输。

1.1 接口主要信号

可以看出,APB总线接口主要有 系统信号,地址信号,方向信号,数据信号,传输阶段控制信号

2.APB总线传输介绍(时序部分)

2.1 状态机

从状态机看,APB对每一笔数据的传送,均需花 2 个周期的时间,且 APB 的数据传递不适用在有流水线架构的模块设计中

2.2 写操作

下图表示APB基本的写操作

  1. 在 T1 时,有限状态机进入预设的 IDLE 状态;
  2. 在 T2 时,数据地址、读写控制信号和写入的数据会在频率正沿触发时,开始作写的数据传递准备,这个周期也就是刚才所提及SETUP状态。译码电路在此状态会根据数据地址去译码出所要写入APB Slave,此时所对应到 S 的 PSEL 信号将由 0 变 1;
  3. 在 T3 时,有限状态机会进入 ENABLE 状态,PENABLE 信号在此状态会被设成 1;
  4. 在 T4 频率正沿触发时,PENABLE 信号将由 1 变 0,而 PSEL 信号在若没有其它数据的写入动作时,也将由 1 变 0。为了减少功率的消耗,APB 的数据地址和读写控制信号在下一笔数据传递前,将不会作任何改变。

2.3 读操作

由图中可发现除了写信号是倒过来有效外,APB 读操作时序图和写操作时序图非常相似,在这里我们就不再作详细的解释。

要特别注意的是,在 T3 后,也就是在进入 ENABLE 周期后,APB 从必须要将 M 所要读取的数据准备好,以便 M 可以在 ENABLE 周期末被 T4 正时钟沿触发时正确的将数据读取。

3.APB到AHB的接口

3.1 读操作

在频率很高的情况下,在ENABLE CYCLE中可能数据不能够直接映射到AHB总线,需要在APB桥中在T4的时候打一下锁住,并在T5的时候才被AHB主采样。虽然需要多一个等待周期(一共2个,HREADY反压两拍),但是由于频率提升了因此总的性能也提升了。

T1:在 AHB 总线开始传送;

T2:地址被 APB 总线采样。如果该传送是针对外设的话,这个地址就会被译码成选择信号发往外设。T2就是 AHB 的SETUP CYCLE。

T3:APB 的 ENALBE CYCLE,PENABLE 拉高,数据被读出。

T4:读出的数据直接映射到 AHB 总线上,在上升沿被 AHB 主采样。

3.2 写操作

APB总线上的单块数据写操作不需要等待周期。APB桥的责任是对地址和数据进行采样,并在写操作的过程中保持它们的值。

T1:AHB 开始作数据地址和读写控制信号的传递(HADDR 和 HWRITE)

T2:APB bridge 栓取住 AHB 送来的数据地址及读写控制信号,同时进入到 APB 有限状态机的 ENABLE状态

T3~:其后的读和写动作跟之前所介绍的 APB 读写动作一模一样,在这里我们不再加以详述。

下图是突发写传输时序图:

虽然第一个传输可以零状态等待状态玩抽,但之后到外设总线的传输将为每个传输的执行要求一个等待状态。

APB桥中需要有 2 个地址寄存器,当处理一个数据块写操作时,可以寄存下一个数据块的地址。

3.3 背靠背操作

下图给出了背靠背传输的时序,分别写,读,写,读

如果写操作之后跟随着读操作,那么需要 3 个等待周期来完成读操作。通常的情况下,不会有读操作之后紧跟着写操作的发生,因为两者之间 CPU 会进行指令读取。

AMBA总线协议(一)——一文看懂APB总线协议的更多相关文章

  1. 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    一张图看懂开源许可协议,开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL.BSD.MIT.Mozi ...

  2. 一文看懂web服务器、应用服务器、web容器、反向代理服务器区别与联系

    我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难.有意思的是Web服务器/Web容器/Web应用程序服务器/反向代理有点像四胞胎,在网络上经常一起出现.本文将带读者对这四个相似概念如何区分. 1 ...

  3. 一文看懂https如何保证数据传输的安全性的【转载、收藏】

    一文看懂https如何保证数据传输的安全性的   一文看懂https如何保证数据传输的安全性的 大家都知道,在客户端与服务器数据传输的过程中,http协议的传输是不安全的,也就是一般情况下http是明 ...

  4. [转帖]一文看懂web服务器、应用服务器、web容器、反向代理服务器区别与联系

    一文看懂web服务器.应用服务器.web容器.反向代理服务器区别与联系 https://www.cnblogs.com/vipyoumay/p/7455431.html 我们知道,不同肤色的人外貌差别 ...

  5. [转帖] 一文看懂:"边缘计算"究竟是什么?为何潜力无限?

    一文看懂:"边缘计算"究竟是什么?为何潜力无限? 转载cnbeta   云计算 雾计算 边缘计算...   知名创投调研机构CB Insights撰文详述了边缘计算的发展和应用前景 ...

  6. 一文看懂Stacking!(含Python代码)

    一文看懂Stacking!(含Python代码) https://mp.weixin.qq.com/s/faQNTGgBZdZyyZscdhjwUQ

  7. Nature 为引,一文看懂个体化肿瘤疫苗前世今生

    进入2017年,当红辣子鸡PD-1疗法,一路横扫多个适应症.而CAR-T治疗的“小车”在获得FDA专委会推荐后也已经走上高速路,成为免疫治疗又一里程碑事件.PD-1.CAR-T之后,下一个免疫治疗产品 ...

  8. 一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了

    一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了 转载: 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你可以把它 ...

  9. 转载来自朱小厮博客的 一文看懂Kafka消息格式的演变

    转载来自朱小厮博客的 一文看懂Kafka消息格式的演变     ✎摘要 对于一个成熟的消息中间件而言,消息格式不仅关系到功能维度的扩展,还牵涉到性能维度的优化.随着Kafka的迅猛发展,其消息格式也在 ...

  10. 【转帖】一文看懂docker容器技术架构及其中的各个模块

    一文看懂docker容器技术架构及其中的各个模块 原创 波波说运维 2019-09-29 00:01:00 https://www.toutiao.com/a6740234030798602763/ ...

随机推荐

  1. Pulsar客户端消费模式揭秘:Go 语言实现 ZeroQueueConsumer

    前段时间在 pulsar-client-go 社区里看到这么一个 issue: import "github.com/apache/pulsar-client-go/pulsar" ...

  2. 【FastDFS】环境搭建 01 跟踪器和存储节点

    FastDFS:分布式文件系统 它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题. 特别适合以文件为载体的在线服务,如相册网站.视频网 ...

  3. 【Spring Data JPA】07 Specifications动态查询

    [前言说明] 针对CRUD种的查询,因为我们的查询总是具有各种各样的筛选条件 为了我们的程序能够更加适应筛选条件的变化,SpringDataJpa提供了Specifications这种解决方案 Spe ...

  4. 从baselines库的common/vec_env/vec_normalize.py模块看方差的近似计算方法

    在baselines库的common/vec_env/vec_normalize.py中计算方差的调用方法为: RunningMeanStd 同时该计算函数的解释也一并给出了: https://en. ...

  5. 题解:CF780B The Meeting Place Cannot Be Changed

    这道题一看就是 二分 板子题. 当然由于精度原因,最好由原来的二分模板转换成这个. while ((w - t) > 0.000001) { mid = (t + w) / 2.0 ; if ( ...

  6. 机器学习中的两个重要函数--sigmoid和softmax

    机器学习中,常常见到两个函数名称:sigmoid和softmax.前者在神经网络中反复出现,也被称为神经元的激活函数:后者则出现在很多分类算法中,尤其是多分类的场景,用来判断哪种分类结果的概率更大. ...

  7. 洛谷P1226 【模板】快速幂

    1.快速幂模板 前置知识 一个数字n,它的二进制位数一定是log2n向下取整+1: 快速幂模板代码 这段代码实现了快速幂算法(Exponentiation by squaring),用来计算 ( an ...

  8. 海豚²来了丨DolphinDB 集成 DolphinScheduler,任务调度更轻松

    DolphinDB 是一款高性能时序数据库.DolphinDB 集成了功能强大的编程语言和高容量高速度的批流一体数据分析系统,为海量数据(特别是时间序列数据)的快速存储.检索.计算及分析提供一站式解决 ...

  9. Java jdk版本对照表

    这里将JDK版本和major.minor的版本的对照关系进行整理,作为今后查阅的依据. 序号 jdk版本 major.minor version 1 1.1 45 2 1.2 46 3 1.3 47 ...

  10. vite创建的react项目如何兼容低版本安卓,低版本安卓不支持es6语法

    Vite 是一个现代化的前端构建工具,默认情况下,它会生成基于 ES6+ 的代码.这对于大多数现代浏览器来说是没有问题的,但对于一些较旧版本的安卓浏览器可能会遇到兼容性问题. 为了使 Vite 创建的 ...