AMBA总线协议(3)——AHB(一)

目录

一、前言

二、什么是AHB总线

1、概述

2、一个典型的基于AHB总线的微处理器架构

3、基本的 AHB 传送特性       

三、AMBA AHB总线互联       

 四、小结


一、前言

        在之前的文章中我们初步的了解了一下AMBA总线中AHB,APB,AXI的信号线及其功能,从本文开始我们将正式开始学习AMBA总线的细节,本文着重介绍AHB协议,了解什么是AHB协议,其功能与互联方式。

二、什么是AHB总线

1、概述

        AHB 主要用于高性能模块(如 CPU、DMA 和 DSP 等)之间的连接,作为 SoC 的片上系统总线,它包括以下一些特性:突发传输;分块处理;单周期总线主机移交;单时钟沿操作;非三态执行;更宽的数据总线架构(64 位或者 128 位)。

        AHB 系统由主模块、从模块和基础结构(Infrastructure)3 部分组成,整个 AHB 总线上的传送都由主模块发出,由从模块负责回应。

组件描述
AHB主机AHB 总线可以有多个主机,通常有CPU,测试接口,DMA或者DSP
AHB从机外挂内存接口,APB桥,内部RAM,其他一些外围设备通常也能作为从机
APB低带宽的外围设备通常挂在APB上
基础结构仲裁器(arbiter)
主模块到从模块的多路器
从模块到主模块的多路器
译码器(decoder)
虚拟从模块(dummy S)
虚拟主模块(dummy M)所组成。

2、一个典型的基于AHB总线的微处理器架构

        下图就是一个典型的基于AHB总线的微处理器架构

        其中包含了二个主要的总线 高效能总线 (AHB) 和外围总线 (APB)。 AHB 主要是针对高效率、高频宽及快速系统模块所设计的总线,它可以连接如微处理器、芯片上或芯片外的内存模块和直接内存存取机制等高效率模块,此总线持别适合用于可合成和自动测试技术上的设计程序中。
AMBA 中的 APB 主要用在低速且低功率的外围,可针对外围作功率消耗及复杂接口的最佳化。由上图可知,负责 AMBA AHB 和 APB 之间的沟通管道为一桥梁(bridge),APB bridge 主要负责总线数据的栓取、译码及传送。
下表给出了AHB总线与APB总线的特性比较:
AMBA 高级高性能总线 AHBAMBA 高级外设总线

(1)高性能

(2)流水线操作

(3)猝发传输

(4)多个总线主设备

(5)分割交易

(1)低功耗

(2)锁存的地址和控制

(3)简单的接口

(4)适合很多外设

          AMBA 的主要目标是要让使用者能在最快的时间内完成一个以嵌入式微处理器为平台的系统设计它还可以让(具有重复使用特性的)外设及系统宏组件轻易被整合进(全客户、标准组件和逻辑数组为技术的)设计流程中;且让模块化的设计很容易的被整合进一个以微处理器为平台的系统开发环境。在 AMBA 的规格中亦提供一个测试控制接口,使得 AHB 和 APB 可透过外在的系统测试样品来作测试,因此也减轻了功能测试时的工作。

        简单说就是AMBA总线可以让用户快速设计属于自己的系统(一般是芯片),并且可轻易通过AMBA总线实现外设的挂载。

3、基本的 AHB 传送特性       

AHB 以仲裁器来控制多任务器以连接在其上的主机与从机。 在 AHB 总线上,其操作顺序一般如下:
(1)主机要求总线使用
(2)仲裁器响应允许信号
(3)从机送出地址与控制信号
        一次传送包括给出地址、控制信号周期(address, control)与数据周期(data cycle)。地址与控制信号周期最少需要一个周期,但是会因为数据的原因多出几个周期。数据周期可以通过HREADY 信号来延迟。拉起 HREADY 代表此次传送已经 OK。
AHB 支持批量式数据传送,可以自动递增地址。递增地址方式分为:持续递增(incrementing without wrapping at address boundary),另一种为回绕传送 (wrapping at address boundary.)。
在 AHB 上写数据总线将数据送到 从机,由读数据总线将数据送到 主机
从机以 HRESP[1:0]信号表示传送的状态:
(1)HRESP[1:0] = 00 (OKAY):当此信号再加上拉高的 HREADY(OKAY+高 HREADY)就表示此次的传送已完成。
(2)HRESP[1:0] = 01 (ERROR):传送失败。
(3)HRESP[1:0] = 10 (RETRY) and HRESP[1:0] = 11 (SPLIT):当数据传送无法立刻完成时,主机会继续尝试完成数据的传送。
这部分可以说是AHB传输的核心内容,这里让大家有一个初步的概念,在下一篇文章中会详细解释AMBA AHB的传输操作。

三、AMBA AHB总线互联       

        AMBA AHB 总线协议设计使用一个中央多路选择器互联方案。使用该方案所有总线主机设备输出地址和控制信号来指示它们想执行的传输。同时仲裁器决定哪一个主机能够将它的地址和控制信号连通到所有的从机。当然也需要一个译码器来控制读数据和响应多路信号选择器,多路信号选择器选中来自传输中所包含从机的适当信号。

 四、小结

         在本文中对于AMBA AHB做了一个简单的介绍,AHB 主要用于高性能模块(如 CPU、DMA 和 DSP 等)之间的连接,是Soc所经常采用的一种总线协议,AHB可以支持多主机多从机结构。设备之间的互联使用一个中央多路选择器互联方案。在后续的文章中我们将讲述AMBA AHB传输的详细操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/98547.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity VR:XR Interaction Toolkit 输入系统(Input System):获取手柄的输入

文章目录 📕教程说明📕Input System 和 XR Input Subsystem(推荐 Input System)📕Input Action Asset⭐Actions Maps⭐Actions⭐Action Properties🔍Action Type (Value, Button, Pass through) ⭐Binding …

Python学习笔记_基础篇(七)_常用模块

模块,用一砣代码实现了某个功能的代码集合。 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成…

华为OD机试关于无输入截止条件的ACM输入逻辑

无输入截止条件的ACM输入 华为OD机试题中有一些题目是没有输入截止条件的,比如 华为OD机试 - 数字游戏(Java & JS & Python)_伏城之外的博客-CSDN博客 从输入描述来看,每组有两行输入,但是并没有告诉我们具体有几组? 那么输入该如何截止呢? 此时,有两种输入…

【旅游度假】Axure酒店在线预订APP原型图 旅游度假子模块原型模板

作品概况 页面数量:共 10 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:旅游度假,生活服务 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 本作品为「酒店在线预订」的移动端…

Qt6之如何为QDialog添加最大化和最小化按钮

在QDialog构造函数中添加以下几行代码: // 设置窗体最大化和最小化Qt::WindowFlags windowFlag Qt::Dialog;windowFlag | Qt::WindowMinimizeButtonHint;windowFlag | Qt::WindowMaximizeButtonHint;windowFlag …

三、Kafka生产者

目录 3.1 生产者消息发送流程3.1.1 发送原理 3.2 异步发送 API3.3 同步发送数据3.4 生产者分区3.4.1 kafka分区的好处3.4.2 生产者发送消息的分区策略3.4.3 自定义分区器 3.5 生产者如何提高吞吐量3.6 数据可靠性 3.1 生产者消息发送流程 3.1.1 发送原理 3.2 异步发送 API 3…

【观察】戴尔科技:构建企业创新“韧性”,开辟数实融合新格局

过去几年,国家高度重视发展数字经济,将其上升为国家战略。其中,“十四五”规划中,就明确提出要推动数字经济和实体经济的深度融合,以数字经济赋能传统产业转型升级;而2023年年初正式发布的《数字中国建设整…

python使用matplotlib实现折线图的绘制

一、意义 数据可视化可以以简洁的方式呈现出数据,发现众多数据中隐藏的规律和意义。Matplotlib是一个数学绘图库。利用它可以制作简单的图表(散点图、折线图)。然后,将基于漫步概念生成一个更有趣的数据集–根据一系列随机决策生成…

【React学习】—组件三大核心属性: state(七)

【React学习】—组件三大核心属性: state(七) 2.2.2. 理解 state是组件对象最重要的属性, 值是对象(可以包含多个key-value的组合)组件被称为"状态机", 通过更新组件的state来更新对应的页面显示(重新渲染组件) 2.2.3. 强烈注意 组件中rend…

RocketMQ 消息消费 轮询机制 PullRequestHoldService

1. 概述 先来看看 RocketMQ 消费过程中的轮询机制是啥。首先需要补充一点消费相关的前置知识。 1.1 消息消费方式 RocketMQ 支持多种消费方式,包括 Push 模式和 Pull 模式 Pull 模式:用户自己进行消息的拉取和消费进度的更新Push 模式:Broker…

Redis从基础到进阶篇(一)

目录 一、了解NoSql 1.1 什么是Nosql 1.2 为什么要使用NoSql 1.3 NoSql数据库的优势 1.4 常见的NoSql产品 1.5 各产品的区别 二、Redis介绍 2.1什么是Redis 2.2 Redis优势 2.3 Redis应用场景 2.4 Redis下载 三、Linux下安装Redis 3.1 环境准备 3.2 Redis的…

通过LD_PRELOAD绕过disable_functions

LD_PRELOAD 在UNIX的动态链接库的世界中,LD_PRELOAD就是这样一个环境变量,它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态…

udp与can通信的选择与比较

UDP(用户数据报协议)和CAN(控制器局域网)是两种不同的通信协议,它们在实时传递性上有一些区别。 UDP是一种无连接的传输协议,它提供了简单的、不可靠的数据传输。UDP不提供可靠性保证、流控制或重传机制。…

根据源码,模拟实现 RabbitMQ - 内存数据管理(4)

目录 一、内存数据管理 1.1、需求分析 1.2、实现 MemoryDataCenter 类 1.2.1、ConcurrentHashMap 数据管理 1.2.2、封装交换机操作 1.2.3、封装队列操作 1.2.4、封装绑定操作 1.2.5、封装消息操作 1.2.6、封装未确认消息操作 1.2.7、封装恢复数据操作 一、内存数据管理…

protobuf+netty自定义编码解码

protobufnetty自定义编 项目背景 protobufnetty自定义编码解码 比如心跳协议,客户端请求的协议是10001,在java端如何解码,心跳返回协议如何编码,将协议号带过去 // 心跳包 //10001 message c2s_heartbeat { }//10002 message …

【C++笔记】C++之类与对象(中)

【C笔记】C之类与对象(中) 1、类的构造函数1.1、构造函数的基本用法1.2、构造函数的7个特性 2、类的析构函数2.1、析构函数的基本用法2.2、析构函数的6个特性 3、类的拷贝构造函数3.1、拷贝构造的基本用法3.2、拷贝构造的“无限套娃”陷阱3.3、深拷贝与浅…

二叉树搜索

✅<1>主页&#xff1a;我的代码爱吃辣&#x1f4c3;<2>知识讲解&#xff1a;数据结构——二叉搜索树☂️<3>开发环境 &#xff1a;Visual Studio 2022&#x1f4ac;<4>前言&#xff1a;在之前的我们已经学过了普通二叉树&#xff0c;了解了基本的二叉树…

vue导出文件流获取附件名称并下载(在response.headers里解析filename导出)

导出文件流下载&#xff0c;拦截器统一处理配置 需求以往实现的方法&#xff08;各自的业务层写方法&#xff09;现在实现的方法&#xff08;axios里拦截器统一配置处理&#xff09;把文章链接复制粘贴给后端&#xff0c;让大佬自己赏阅。 需求 之前实现的导出都是各自的业务层…

springboot之多数据源配置

文章目录 一、多数据源的典型使用场景1 业务复杂&#xff08;数据量大&#xff09;2 读写分离 二、如何实现多数据源通过AbstractRoutingDataSource动态指定数据源多数据源切换方式AOPMyBatis插件 三、spring集成多个Mybatis框架 实现多数据源控制四、dynamic-datasource 多数据…