AMBA总线协议(9)——AHB(七):终章

news2024/11/18 9:36:07

一、前言

        在之前的文章中我们讲述了AHB协议的分割传输机制,它使得从机可以决定一次传输是否继续进行,以防止 传输的执行将占据大量的时钟周期,有效提高了总线的公平性与效率问题,本文中我们将一次性学习完AHB最后的内容,包括有复位,数据总线的位宽和接口设备等。

二、AHB 复位

        复位信号,HRESETn ,是 AMBA AHB 规范中唯一的低有效信号,并且是所有总线设备的主要复位源。复位可以异步方式生效,但是却在 HCLK 的上升沿被同步地撤消。在复位期间所有主机必须确保地址和控制信号在有效电平并且 HTRANS[1 0]  信号表示空闲。

三、AHB 数据总线位宽

        一种能提高总线带宽,而不用提高操作频率的方法是使片上总线的数据通道更宽。金属层的增加和大容量片上存储模块(例如嵌入式 DRAM)的使用都是更宽片上总线使用的推动因素。

        指定一个固定宽度的总线,将意味着在大多数场合下总线宽度在应用中并不是最佳的。因此允许可变总线宽度的途径已经被采纳。但是,必须确保模块在设计中高移植性。

        协议允许 AHB 数据总线可以是 8163264128256512 或者 1024 位宽。然而,建议使用中最低的总线宽度为 32 位,并且预计最大 256 位宽的总线将适合几乎所有应用。

        对读和写传输而言,接收模块都必须从总线上正确的字节通道选择数据。但是,并不要求将数据复制到所有字节通道上。

1、在宽总线上实现窄从设备

        下图表示了一个原始设计为32位数据总线运行的从机模块是如何轻松的被转换到运行在较宽的 64 位总线上的。这仅需要增加外部逻辑,而不需要修改任何内部设计。因此,该技术也可以用在难以设计的宏单元上。

 

对于输出,当从较窄的总线转换成较宽的总线时,要完成下列事件之一:
        (1)复制数据到宽总线上的两个半部分上(如上图所示);
        (2)使用附加的逻辑电平来确保总线上只有适当的那一半被改变。这会导致功耗的降低。
        从机可以只接收和它接口相同宽度的传输。如果一个主机尝试一个大于从机能支持的传输,那么从机可以使用 ERROR 传输响应。

2、在窄总线上实现宽从设备

        下图表示了一个在窄总线上实现宽从机的例子。同样,只需要外部逻辑。因此,通过简单的修改,初步的设计或者导入的模块就可以工作在不同宽度的数据总线上了。

        与最初打算通过用相同的方式修改从机以工作在宽总线上相比,经过下面简单的修改,总线主机便能工作在宽总线上:
        (1)多路选择输入总线;
        (2)复制输出总线;
        然而,总线主机不能工作在比原先设计要窄的总线上,除非有一些限制总线主机尝试传输的宽度的机制将主机也包含在内。主机禁止尝试宽度(由 HSIZE 表示)大于所连接的数据总线的传输。

四、AHB接口设备

1、从设备

        一个 AHB 总线从机在系统中应答由总线主机表示的传输。从机使用一个来自译码器的 HSELx 选择信号以确认何时响应总线主机。所有传输要求的其他信号,例如地址和控制信息,将由总线主机产生。

2、主设备 

        在 AMBA 系统中 AHB 总线主机有最复杂的总线接口。典型的一个 AMBA 系统设计者应该使用预先设计的总线主机。因此,就不需要关注总线主机接口的细节。

3、仲裁器 

        AMBA 系统中仲裁器的角色是控制哪个主机访问总线。每个总线主机有一个请求(REQUEST/授予(GRANT)接口连到仲裁器,并且仲裁器使用一个优先权分配方案来决定哪个总线主机是当前请求总线的主机中优先级最高的。

        每个主机也可以产生用来表示主机请求独占总线访问的 HLOCKx 信号。优先级方案的细节并没有规定而是由应用决定的。仲裁器使用其他信号(无论是 AMBA的还是非 AMBA 的)来改变使用中的优先级方案都是可取的。

 4、译码器

        AMBA 系统中译码器被用来执行集中的地址译码功能,通过使它们独立于系统的存储器映射,可以提高外设的移植性。

 五、小结

        至此我们就结束了AHB部分的全部内容,本文讲述了AHB的复位,数据总线位宽,包括有如何在宽总线实现窄从设备和如何在窄总线实现宽从设备。最后展现了AHB各类接口设备。当然学习AMBA AHB仅仅通过这一系列的文章是不够的,但是还是希望能够过这个系类帮助刚刚入门的朋友有一个基本的概念,笔者也在不断学习的过程中。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蚂蚁 SOFAServerless 微服务新架构的探索与实践

赵真灵(有济) 蚂蚁集团技术专家 Serverless 和微服务领域专家曾负责基于 K8s Deployment 的应用发布运维平台建设、K8s 集群的 Node/pod 多级弹性伸缩与产品建设。当前主要负责应用架构演进和 Serverless 相关工作。同时也是 SOFAArk 社区的开发和维护者…

【CP2K学习】-在Ubuntu上安装CP2K的全过程(包括gcc,gfortran,MKL等配置)

在Ubuntu中安装CP2K CP2K的安装检查系统是否安装gcc,gfortranMKL数学库的安装CP2K安装包下载CP2K的编译CP2K的测试ssmp版本测试popt版本测试 CP2K是第一性原理计算程序中发展迅速的程序之一,因其开源性、速度性等优点,是广大计算化学研究者的选择。 本文…

2023.8各大浏览器11家对比:Edge/Chrome/Opera/Firefox/Tor/Vivaldi/Brave,安全性,速度,体积,内存占用

测试环境:全默认设置的情况下,均在全新的系统上进行测试,系统并未进行任何改动,没有杀毒软件,浏览器进程全部在后台,且为小窗模式,小窗分辨率均为浏览器厂商默认缩放大小(变量不唯一)&#xff0…

C#|如何调试进依赖动态库中

第一步:打开项目属性 第二步 打开debug的本地调试可用 第三步 把要调试的代码拖进主界面打断点就可以进断点了

测试分类

测试分类(全是概念;非常抽象)按对象划分界面测试可靠性测试容错性测试文档测试兼容性测试易用性安装卸载测试安全测试性能测试内存泄漏测试 按是否查看代码划分黑盒测试白盒测试灰盒测试 按开发阶段划分单元测试集成测试系统测试回归测试冒烟…

js判断类型:typeof Object.prototype.toString instanceof constructor有什么区别?一文讲清楚

相信很多小伙伴在使用js的过程中,经常会需要对js的数据类型进行判断,而js中可以对数据类型进行判断的方法有很多种,最常见的有typeof、Object.prototype.toString、instanceof、constructor这四种,那么他们有什么区别呢&#xff1…

ssm+vue游戏攻略网站源码和论文

ssmvue游戏攻略网站源码和论文052 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 一、主要内容和基本要求 游戏攻略网站分为管理员与用户两种角色。 管理员的功能包括登录,用户管理,游…

Laravel 框架构造器的查询表达式构造器的 Where 派生查询 ⑥

作者 : SYFStrive 博客首页 : HomePage 📜: THINK PHP 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f44…

QCC_BES 音频重采样算法实现

+V hezkz17进数字音频系统研究开发交流答疑群(课题组) 这段代码是一个用于将音频数据进行立体声重采样的函数。以下是对代码的解读: 函数接受以下参数: pcm_buf:16位有符号整型的音频缓冲区,存储了输入的音频数据。pcm_len:音频缓冲区的长度。mic1:16位有符号整型的音频…

SpringBoot 01 如何创建 和pom的解析

目录 1 Springboot的创建 步骤 2 项目的书写和运行 创建service包并在其下写一个service文件 项目的运行 pom文件的一些配置 parent web test 打包 打包过程 1 Springboot的创建 步骤 首先new一个新项目 然后依照如下创建 2 项目的书写和运行 创建service包并…

企业网络日志安全与 EventLog Analyzer

企业的网络日志安全是一项至关重要的任务。随着信息技术的迅猛发展,网络攻击和数据泄露的威胁也与日俱增。为了应对这些威胁,企业需要强大的工具来监控、分析和保护其网络日志。而ManageEngine的EventLog Analyzer正是这样一款卓越的解决方案。 网络日志…

意外发现Cortex-M内核带的64bit时间戳,比32bit的DWT时钟周期计数器更方便,再也不用担心溢出问题了

视频: https://www.bilibili.com/video/BV1Bw411D7F5 意外发现Cortex-M内核带的64bit时间戳,比32bit的DWT时钟周期计数器更方便,再也不用担心溢出问题了 介绍: 看参数手册的Debug章节,System ROM Table里面带Timestam…

PS基础操作

1:盖印图层。 1. 建立新图层:盖印前要先新建一透明层,或者添加调整图层和中性色图层。 2. 按快捷键Ctrl Alt Shift E盖印所有可见图层;Ctrl Alt E盖印所选图层 2:复制图层。 复制图层CtrlJ 3:shift…

读SQL学习指南(第3版)笔记04_查询入门

1. 在执行语句之前,会先检查下列事项 1.1. 是否有权限执行该语句 1.2. 是否有权限访问指定的数据 1.3. 语句的语法是否正确 2. select子句 2.1. select子句是select语句中的第一个子句,但最后才会被数据库服务器评估 2.2. 决定哪些列应该包含在查询…

stm32之15.超声波与灯光功能一起实现(进阶)

主函数代码修改 --------------------- 源码 int main(void) {uint32_t t0;uint32_t distance;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);led_init();key_init();/* 初始化串口1波特率为115200bps,若发送/接收数据有乱码,请检查PLL */usart1_ini…

vue 使用C-Lodop打印小票

先从官网下载js文件 https://www.lodop.net/LodopDemo.html 打开安装程序,一直下一步既可,我这边已经安装过就不演示了。 // 引入 import { getLodop } from /utils/CLodopfuncs.js;// 使用 let LODOP getLodop()let Count LODOP.GET_PRINTER_COUNT…

嵌入式ARM 音频算法开发库

我V hezkz17进数字音频系统研究开发交流答疑群(课题组) CMSIS DSP Library 算法库,是开源的算法库 BES的SDK也使用了该库,要想自己设计嵌入式音频算法,可在Cortex-M内核平台可以基于此库开发算法 AEC, AGC, ANC, ENC, RNC, 。。。。。。…

Ansible 创建使用角色

使用 Ansible Galaxy 和要求文件 /ansible/roles/requirements.yml 。从以下 URL 下载角色并安装到 /ansible/roles : http://materials/haproxy.tar 此角色的名称应当为 balancer http://materials/phpinfo.tar 此角色的名称应当为 phpinfo #创建 vim /ansible/r…

四、Kafka Broker

4.1.1 Zookeeper 存储的 Kafka 信息 4.1.2 Kafka Broker 总体工作流程 4.2 生产经验 - 节点的服役和退役 自己的理解:其实就是将kafka的分区,负载到集群中的各个节点上。 1、服役新节点 2、退役旧节点 4.3 kafka副本

商城-学习整理-集群-K8S(二十三)

目录 一、k8s 集群部署1、k8s 快速入门1)、简介2)、架构1、整体主从方式2、Master 节点架构3、Node 节点架构 3)、概念4)、快速体验1、安装 minikube2、体验 nginx 部署升级 5)、流程叙述 2、k8s 集群安装1、kubeadm2、…