AMBA总线协议(8)——AHB(六):分割传输

一、前言

        在之前的文章中,我们重点介绍了AHB传输的仲裁,首先介绍了仲裁相关的信号,然后分别介绍了请求总线访问,授权总线访问,猝发提前终止,锁定传输和默认主机总线,在本文中我们将继续介绍AHB的分割传输。

二、AHB分割传输

        分割传输通过根据从机的响应操作来分离(或者分块)主机操作,以给从机提供地址和合适的数据,提高了总线的总体使用率。
        当传输产生时,如果从机认为传输的执行将占据大量的时钟周期,那么从机能够决定发出一个 SPLIT 响应。该信号提示仲裁器尝试这次传输的主机不应该被授予访问总线,直到从机表示它准备好了完成传输时。因此,仲裁器负责监视响应信号,并且在内部屏蔽已经是 SPLIT 传输主机的任何请求。
        在传输的地址周期,仲裁器在 HMASTER[3:0] 产生一个标记,或者总线主机序号,以表示正在执行传输的主机。任何一个发出 SPLIT 响应的从机必须表示它有能力完成这个传输,并且通过记录 HMASTER[3:0] 信号上的主机序号来实现。
        之后,当从机能够完成传输时,它就根据主机序号在在从机到主机的 HSPLITx[15:0]信号上生效适当的位。然后仲裁器使用这个信息来解除来自主机请求信号的屏蔽,并且主机将被及时授予访问总线以重试传输。仲裁器在每个时钟周期采样 HSPLITx 总线,因此,从机只需要生效适当的位一个周期,以便仲裁器能够识别。
        如果系统中有多个具有 SPLIT 能力的从机,那么每个从机的 HSPLITx 总线可以逻辑或在一起以提供给仲裁器单个 HSPLIT 总线。大多数系统中并没有用到最大 16 个总线主机的能力,因此,仲裁器仅要求一个位数和总主机数量一样的 HSPLIT 总线。但是,建议所有具有 SPLIT 能力的从机被设计成支持高达16个主机。

1、分割传输顺序

SPLIT 传输的基本步骤如下:
        (1) 主机以和其他传输一样的方式发起传输并发出地址和控制信息;
        (2) 如果从机能够立刻提供数据,那么它可以马上提供数据。如果从机确认获取数据可能会占据较多的周期,那么它给出一个 SPLIT 传输响应;每次传输中仲裁器广播一个序号或者标记,表示哪个主机正在使用总线。从机必须记录该序号,以便用来在之后的一段时间重新发起传输;
        (3) 仲裁器授予其他主机使用总线,并且 SPLIT 响应的动作允许主机移交总线。如果所有其他主机也接收到一个 SPLIT 响应,那么默认主机将被授予总线;
        (4) 当从机准备完成传输,那么它生效 HSPLITx 总线中的适当位给仲裁器以指示哪个主机应该被重新授予访问总线;
        (5) 仲裁器每个时钟周期监视 HSPLITx 信号,并且当 HSPLITx 中的任何一位被生效,仲裁器将恢复对应主机的优先级;
        (6) 最后仲裁器将授予(SPLIT 的)主机总线,因此主机能重新尝试传输。如果一个优先级更高的主机正在使用总线的话,这可能不会立刻发生;
        (7) 当传输终于开始后从机以一个 OKAY 传输响应来结束(传输)。

2、多个分割传输

        总线协议只允许每个总线主机有一个未完成的处理。如果任何主机模块能够处理多于一个未完成的处理,那么它需要为能够处理的每个未完成处理设置一个额外的请求和授予信号。在协议级上一个信号模块可以表现为许多不同总线主机,每个主机只能有一个未完成的处理。
        然而,可能一个有 SPLIT 能力的从机会接收比它能并发处理的(传输)还要多的传输请求。如果这种情况发生,那么从机可以不用记录对应传输的地址和控制信息,而仅需要记录主机序号就发出 SPLIT 响应。之后从机可以通过生效  HSPLITx 总线中适当的位给之前被给出SPLIT 响应的所有主机来表示它能处理另外一个传输,但是从机没有记录地址和控制信息。之后仲裁器能够重新授予这些主机访问总线,并且它们将重试传输,给出从机要求的地址和控制信息。这表示一个主机可以在它最终完成它要求的传输之前被多次授予总线。

3、预防死锁

        SPLIT 和 RETRY 传输响应都必须在使用中注意预防总线死锁。单个传输决不会锁定AHB,因为每个从机必须被设计成能在预先确定的周期数内完成传输。但是,如果多个不同主机试图访问同一个从机,从机发出 SPLIT 或者 RETRY 响应以表示从机不能处理,那么就有可能发生死锁。

(1)分割传输

        从机可以发出 SPLIT 传输响应,通过确保从机能够承受系统中每个主机(最多 16 个)的单个请求来预防死锁。从机并不需要存储每个主机的地址和控制信息,它只需要简单的记录传输请求已经被处理和 SPLIT 响应已经发出的事实即可。最后所有主机将处在低优先级,然后从机可以有次序的来处理这些请求,指示仲裁器正在服务于哪个请求,因而确保了所有请求最终都被服务。

        当从机有许多未完成的请求时,它可能以任何顺序(随机的)来选择处理这些请求,尽管从机需要注意锁定传输必须在任何其他传输继续之前完成。

        从机使用 SPLIT 响应而不用锁存地址和控制信息显得非常合法(合适)。从机仅需要记录特定主机做出的传输尝试并且稍后的时间段从机通过指示自己已经准备好完成传输就能获取地址和控制信息。主机将被授予总线并将重新广播传输,允许从机锁存地址和控制信息,并且立刻应答数据,或者发出另外一个 SPLIT 响应(如果还需要额外的一些周期的话)。

        理想情况下,从机不应该有多于它能支持的未完成传输,但是要求支持这种机制以防止总线死锁。

(2)重试传输

        发出 SPLIT 响应的从机一次只能被一个主机访问。在总线协议中并没有强制,而在系统体系结构中应该确保这一点。大多数情况下,发出 RETRY 响应的从机必须是一次只能被一个主机访问的外设,因此这会在一些更高级协议中得到保证。
        硬件保护和多主机访问 RETRY(响应)的从机相违背并不是协议中的要求,但是可能会在下文描述的设计中得到执行。仅有的总线级要求是从机必须在预先确定的时钟周期内驱动 HREADY 为高。如果要求硬件保护,那么这可以被 RETRY (响应)的从机自己执行。当一个从机发出一个 RETRY 信号后,它能够采样主机序号。在这之后和传输最终完成之前,  RETRY 的从机可以检查做出的每次传输尝试以确保主机序号是相同的。如果从机发现主机号不一致,那么它可以选择下列的行动方式:
  • 一个错误响应;
  • 一个信号给仲裁器;
  • 一个系统级中断;
  • 一个完全的系统复位

4、分割传输的总线移交

        协议要求主机在接收到一个SPLIT或者RETRY响应后立刻执行一个空闲传输,以允许总线转移给另外一个主机。下图表示了发生一个分块(SPLIT)传输的顺序事件:

需要注意以下的要点:
        (1)传输的地址在时间 T1 之后出现在总线上。在时钟沿 T2 T3 后从机返回两个周期的 SPLIT 响应;
        (2)在第一个响应周期的末尾,也就是 T3 ,主机能够检测到传输将会被分块因此(主
机)改变接下来的传输控制信号以表示一个空闲传输;
        (3)同样也在时间 T3 处仲裁器采样响应信号并确定传输已经被分块。之后仲裁器可以调整仲裁优先权并且在接下来的周期改变授予信号,这样新的主机能够在时间 T4后被授予地址总线;
        (4)新主机可以保证立刻访问(总线)因为空闲传输总是在一个周期内完成。

三、小结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【unity小技巧】Unity实现视差效果与无限地图(附git源码)

文章目录 前言下载素材1. 角色素材 环境搭建和人物移动视差效果无限背景源码参考完结 前言 如何提升你的画面感?动态的背景设计可以丰富我们的游戏效果,当你在游戏中行走或奔跑时,你将能够感受到身体在空间中的运动,仿佛真的置身…

服务机器人,正走向星辰大海

大数据产业创新服务媒体 ——聚焦数据 改变商业 国内机器人联盟(IFR)将机器人划分为工作机器人、服务机器人、特种机器人三类。服务机器人广泛应用于餐饮场景、酒店场景,早已构成一道靓丽的风景。行业数据显示, 作为服务机器人发…

C#反编译工具ILSPY

ILSPY ILSpy 是一个开源的.Net程序集浏览器和反编译工具。 Visual Studio 2022附带了默认情况下启用的F12反编译支持(使用我们的引擎v7.1)。 在Visual Studio 2019中,您必须手动启用F12支持。转到“工具”/“选项”/“文本编辑器”/C#/Adva…

【Axure模板】APP帮助中心原型,在线客服意见反馈模块高保真原型

作品概况 页面数量:共 10 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:原型设计模板 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 该模板作品为APP帮助与客服的通用模块,…

Docker详解

文章目录 Docker详解一、Docker简介什么是容器 ?容器技术有哪些优点 ?什么是Docker ?Docker的特点Docker的使用场景 二、Docker的基本组成Docker 客户端 / 守护进程Docker Image 镜像Docker Container 容器Docker Registry 仓库 三、Docker 依…

docker之DockerFile与网络

目录 DockerFile 构建步骤 基础知识 指令 实战:构建自己的centos 第一步:编写dockerfile文件 第二步:构建镜像文件 docker网络 原理 功能 网络模式 host模式 container模式 none模式 bridge模式 DockerFile dockerfile 是用来…

Next.js - Loading UI and Streaming

特殊文件 loading.js 可帮助您使用 React Suspense 创建有意义的加载用户界面。使用此约定,您可以在加载路由段内容时显示来自服务器的即时加载状态。渲染完成后,新的内容会自动切换进来。 即时加载状态 即时加载状态是在导航时立即显示的后备用户界面…

macOS上编译obs-studio

前言 最近基于obs的1个二开程序,需要移植到macOS平台上,由于遇到些问题,本文记录下如何在macOS上配置&编译&运行obs程序完整过程。 下载 首先下载cmake-gui工具,下载CMAKE,选择对应macOS平台的cmake版本&…

【HMS Core】在线语种检测返回结果错误

【关键字】 在线语种检测、机器学习 【问题描述】 集成在线语种检测服务,检测蒙古文之后,返回结果为中文 【问题分析】 1、在线语种服务目前不支持蒙古文,具体可见官网语种支持列表: 【ML Kit】语种检测支持的语言列表 2、目前…

(4)将固件加载到没有ArduPilot固件的主板上

文章目录 前言 4.1 下载驱动程序和烧录工具 4.2 下载ArduPilot固件 4.3 使用测试版和开发版 4.3.1 测试版 4.3.2 最新开发版本 4.4 将固件上传到自动驾驶仪 4.5 替代方法 4.6 将固件加载到带有外部闪存的主板上 前言 ArduPilot 的最新版本(Copter-3.6, Pl…

基于swing的旅游管理系统java jsp旅行团信息mysql源代码

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于swing的旅游管理系统 系统有1权限:管…

uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测

uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测 uni-app中监听网络状态 下载插件 打开网络异常组件页面,点击"下载插件并导入HBuilderX"按钮,打开HBuilderX软件后,选择需要导入插件的项目&#xff…

使用威胁搜寻增加网络安全

什么是威胁搜寻 威胁搜寻(也称为网络威胁搜寻)是一种主动网络安全方法,涉及主动搜索隐藏的威胁,例如组织网络或系统内的高级持续性威胁和入侵指标。威胁搜寻的主要目标是检测和隔离可能绕过网络外围防御的威胁,使管理…

在Qt窗口中添加右键菜单

在Qt窗口中添加右键菜单 基于鼠标的事件实现流程demo 基于窗口的菜单策略实现Qt::DefaultContextMenuQt::ActionsContextMenuQt::CustomContextMenu信号API 基于鼠标的事件实现 流程 需要使用:事件处理器函数(回调函数) 在当前窗口类中重写鼠标操作相关的的事件处理器函数&a…

小程序中通过canvas生成并保存图片

1. html <canvas class"canvas" id"photo" type"2d" style"width:200px;height: 300px;"></canvas> <button bindtap"saveImage">保存</button> <!-- 用来展示生成的那张图片 --> <image…

js判断用户当前网络状态和判断网速

前端判断用户当前网络状态和判断网速 一、第一种是通过 HTML5 提供的 navigator 去检测网络(1)、原理介绍:(2)、兼容性 二、监听window.ononline和window.onoffline事件:三、通过ajax进行请求判断(兼容性好-推荐)(1)、原理介绍:(2)、注意: 四、navigator.connection方法监听网络…

Quartz任务调度框架介绍和使用

一、Quartz介绍 Quartz [kwɔːts] 是OpenSymphony开源组织在Job scheduling领域又一个开源项目&#xff0c;完全由Java开发&#xff0c;可以用来执行定时任务&#xff0c;类似于java.util.Timer。但是相较于Timer&#xff0c; Quartz增加了很多功能&#xff1a; 1.持久性作业 …

小区新冠疫情管理系统的设计与实现/基于springboot的小区疫情管理系统

摘要 采用更加便于维护和使用的Java语言&#xff0c;其可拓展性高且更富于表现力&#xff0c;基于mysql数据库、Springboot框架开发的小区新冠疫情管理系统&#xff0c;方便用户查看物资信息、疫苗信息。通过Eclipse来进行网页编程&#xff0c;其方便易用、移植适用性广、更加安…

Can‘t find end of central directory : is this a zip file ? at XMLHttpRequest

导出woed出现这个报错,原因其实很简单,路径写错了, 这个word首先必须是docx格式,然后必须放在public文件包下 如果放在public文件包下还没有用,则放在public包下 参考帖子: https://www.cnblogs.com/hejun26/p/13647927.html

渗透率超90%!智能座舱赛道迎来「存量」替代升级大周期

智能座舱赛道&#xff0c;正在迎来新一轮芯片替代潮。 相比于智能驾驶领域&#xff0c;座舱主机芯片市场并不「性感」&#xff0c;但巨大的存量替代升级机会&#xff0c;也不容小视。 高工智能汽车研究院监测数据显示&#xff0c;2023年1-6月中国市场&#xff08;不含进出口&am…