AMBA总线协议(6)——AHB(四):传输细节

news2024/12/23 5:49:05

一、前言

        在之前的文章中,我们已经讲述了AHB传输中的两种情况,基本传输和猝发传输。我们进行一个简单的回顾,首先,开始一次传输之前主机需要向仲裁器申请获得总线的使用权限,然后主机给出地址和控制信号,根据不同的传输类型,猝发类型等,从机做出相应的操作,最后需要回给主机一个响应。我们之前着重讨论了传输类型,猝发类型,却还没有研究关于主机的控制信号和地址的细节,以及从机是如何给出做出读写操作,给出响应的,这就是我们这篇文章的重点了。

二、AHB 传输控制信号

        在之前的文章中我们就简单的提及过控制信号,一共有3条:传输方向HWRITE,传输大小HSIZE[2:0],保护机制HPROT[3:0] 。控制信号由主机给出,就像每一次传输都需要给出传输类型和猝发类型一样,我们还需要给出一组控制信号来提供传输的附加信息。这些控制信号和地址总线有着严格一致的时序要求,在一次猝发的传输过程中,它们必须保持不变。

1、传输方向 HWRITE

        当 HWRITE 为高时,该信号表示一个写操作,即主机向从机传输数据;当 HWRITE 为低时,该信号表示一个读操作,即从机向主机传输数据。

2、传输大小(传输宽度) HSIZE[2:0]

        HSIZE[2:0]用于表示传输的宽度,传输宽度与 HBURST[2:0]信号一起决定了回卷猝发的边界地址。下表给出了传输宽度的编码及含义:

HSIZE[2:0]宽度描述
0008位字节
00116位半字
01032位
01164位双字
100128位4字
101256位8字
110512位16字
1111024位32字

3、保护控制 HPROT[3:0]

        保护控制信号 HPROT[3:0],提供总线访问的附加信息,并且最初是给那些希望执行某种保护级别的模块使用的,控制保护级别如下表:

HPROT[3]

高速缓存

HPROT[2]

带缓冲的

HPROT[1]

特权模式

HPROT[0]

数据/预取指

描述
——————0
预取指
——————1数据访问
————0——用户模式访问
————1——特权模式访问
——0————无缓冲
——1————带缓冲
0——————无高速缓存
1——————带高速缓存
        并不是所有总线主机都能产生正确的保护信息,因此建议从机在没有严格必要的情况下 不要使用 HPROT 信号。

三、AHB地址译码

        对于每个总线上的从机来说,使用一个中央地址译码器提供选择信号HSELx。选择信号是高位地址信号的组合译码,并且建议使用简单的译码方案,以避免复杂译码逻辑和确保高速操作。

        从机只能在 HREADY 信号为高时采样地址和控制信号以及 HSELxHSELx 为高表示当前传输已经完成。在特定的情况下有可能在 HREADY 为低时采样 HSELx,但是被选中的从机将会在当前传输完成后变更。

        能够分配给单个从机的最小地址空间是 1KB。所有总线主机必须被设计为不能执行超过 1KB 地址边界的增量传输,因此,需要确保了一个突发绝不会超过地址译码的边界。

        在系统设计中如果有包含一个存储器映射并未完全填满(存储空间)的情况时应该设置一个额外的默认从机以在访问任何不存在的地址空间时提供响应。如果一个非连续或者连续传输试图访问一个不存在的地址空间时这个默认从机应该提供一个 ERROR 响应。空闲或者忙传输访问不存在的空间(默认从机)应该给出一个零等待状态的 OKAY 响应。典型默认从机的功能将以作为中央地址译码器的一部分来实现。

        下图给出了一个地址译码系统和从设备选择信号:

四、AHB从设备传输响应 

        在主机发起传输后,由从机决定传输该如何进行。AHB 规范中没有做出总线主机在传输已经开始后取消传输的规定。
        只要从机被访问那它必须提供一个表示传输状态的响应。HREADY 信号被用来扩展传输并且和响应信号 HRESP[1:0]相结合,以提供传输状态。
从机能够用许多种方式来完成传输:
        (1)立刻完成传输;
        (2)插入一个或者多个等待状态以允许有时间来完成传输;
        (3)发出一个错误信号来表示传输失败;
        (4)延时传输的完成,但是允许主机和从机放弃总线,把总线留给其他传输使用

1、传输完成

        HREADY信号用来扩展(就是我们之前说的插入等待周期)一次传输的数据周期。当HREADY信号为低时,表示将扩展传输;当该信号为高时,表示传输完成。

        注:每个从机必须有一个预先确定的在从机放弃总线之前插入的最大等待状态数目,以便能够计算访问总线的延时。建议但不强制规定,从机不要插入多于 16 个等待状态以阻止任何单个访问将总线锁定较长的时钟周期

2、传输响应

        一般来说,从机将会用 HREADY 信号来在传输中插入适当数量的等待状态,而传输在 HREADY 为高时完成并且给出 OKAY 响应,表示传输成功完成。
        ERROR 响应被从机用来表示某种形式的错误条件和相关的传输。例如,试图写一个只读的存储空间。
        SPLIT 和 RETRY 响应组合允许从机延长传输完成的时间。但是,释放总线给其他的主机使用。这些响应组合通常仅由有高访问延时的从机请求,并且从机能够利用响应编码来确保其他主机在长时间内不被阻止访问总线。
具体的 HRESP[1:0]编码及细节如下:
HRESP[1:0]响应描述
00OKAY
        当 HREADY 为高表示传输已经成功完成。 OKAY 响应也被用来插入任意一个附加周期,当 HREADY 为低时,优先给出其他三种响应之一。
01ERROR
        该响应表示发生了一个错误。错误条件应该发信号给总线主机,以便让主机意识到传输失败。 一个错误条件需要双周期响应。
10RETRY
          RETRY(重试)信号表示传输并未完成,因此总线主机应该重试传输。主机应该继续重试传输直到完成为止。要求双周期的 RETRY 响应。  
11SPLIT
         传输并未成功完成。总线主机必须在下一次被授予访问总线时重试传输。当传输能够完成时从机将请求代替主机访问总线。要求双周期的 SPLIT 响应。 

        简单总结一下,OKAY响应那就是一切顺利,传输正常完成,ERROR就是从机发现主机提出的要求自己满足不了,这活我干不了啊,RETRY就是从机告诉主机,你再重新试一次,SPLIT就是从机表示你这传输我还没干完,但是我有其他事情要忙,我就不管你了,你还要来?找仲裁器去吧。

         当从机需要插入一定数量的等待状态优于决定将要给出何种响应时从机必须将响应驱
动为 OKAY。

3、双周期响应

3.1 什么是双周期响应

        仅有 OKAY 响应可以在单个周期里给出。ERROR、SPLIT 和 RETRY 响应需要至少两个周期。为了完成这些响应中的任意一个:

        (1)在倒数第二个(最后一个的前一个)周期,从机驱动 HRESP[10]以表示 ERRORRETRY 或者 SPLIT 响应。并同时驱动 HREADY 为低以给传输扩展一个额外的周期。

        (2)在最后一个周期 HREADY 被驱动为高电平以结束传输,同时HRESP[1:0]保持驱动以表示 ERRORRETRY 或者 SPLIT

        如果从机需要两个以上的周期以提供 ERROR、SPLIT 或者 RETRY 响应那么额外的等待状态可能会在传输开始时被插入。在这段时间 HREADY 信号将为低电平同时响应必须被设为 OKAY。

3.2 为什么要用双周期响应

        需要双周期响应是因为总线通道的本质特征。在从机开始发出 ERROR、SPLIT 或者 RETRY 中任何一个响应时,接下来传输的地址已经广播到总线上了。双周期响应允许主机有足够的时间来取消该地址。并且在开始下一次传输之前驱动 HTRANS[1:0]为空闲传输。

        对于SPLIT和RETRY响应接下来的传输必须取消。因为在当前传输完成之前禁止下一次传输发生。然而,对于 ERROR 响应,由于当前传输不被重复,所以可以选择完成接下来的传输。

3.3 示例

示例1 

        下图给出了带有RETRY响应的传输:

图中包含以下事件:
        (1)主机从地址 A 发起传输;
        (2)这次传输在接收到响应之前,主机已经将地址移动到 A + 4;
        (3)从机在地址 A 不能立刻完成传输,因此从机发出一个 RETRY 响应。该响指示主机在地址 A 的传输无法完成,并且在地址 A + 4 的传输被取消而用空闲传输替代。

示例2

        下图表示了一个传输中从机请求一个周期来决定将要给出的响应(在HRESP为OKAY的时间段),之后从机用一个双周期的 ERROR 响应结束了传输。

 4、错误响应

        如果从机提供一个错误响应,那么主机可以选择取消突发中剩下的传输。然而,这并不是一个严格的要求。同时,主机继续猝发中剩下的传输也是可以接受的。

5、分割(SPLIT与重试RETRY

        分割和重试响应给从机提供了在无法立刻给传输提供数据时释放总线的机制。这两种机制都允许在总线上结束传输。因此,允许更高优先级的主机能够访问主机。分割(SPLIT)和重试(RETRY)的不同之处在于仲裁器在发生 SPLIT RETRY 后分配总线的方式:

(1)对 RETRY 而言,仲裁器将继续使用常规优先级方案。因此只有拥有更高优先级的主机将获准访问总线;

(2)对于 SPLIT 传输而言,仲裁器将调整优先级方案,以便其他任何主机请求总线即能获得访问总线(即使是优先级较低的主机)。为了完成一个 SPLIT 传输,从机必须通知仲裁器何时数据可用。

        SPLIT 传输增加了仲裁器和从机的复杂性,但是却有可以完全释放总线给其他主机使用的优点,但是 RETRY(响应)的情况就只允许较高优先级的主机使用总线。总线主机应该以同样的方式来对待 SPLIT RETRY (响应)。主机应该继续请求总线并尝试传输直到传输成功完成或者遇到 ERROR 响应时终止。

五、AHB 数据总线

        为了不使用三态驱动,同时又允许执行AHB系统,所以要求分开读和写数据总线。最小的数据宽度规定为 32 位,但是总线宽度却可以增加。

1、写数据总线HWDTA[31:0]

        写数据总线在写传输期间由总线主机驱动。如果传输是扩展的那么总线主机必须保持数据有效直到传输完成,由 HREADY 为高表示。

        所有传输必须对齐到和传输大小相等的地址边界。例如,字传输必须对齐到字地址边界(也就是 A[1: 0] = 00),半字传输必须对齐到半字地址边界(也就是 A[0] = 0)。
        对于宽度小于总线宽度的传输,例如一个在 32 位总线上的 16 位传输,那么总线主机仅需要驱动相应的字节通道。从机必须负责从正确的字节通道选择写数据。下面两张表 分别表示了小端系统和大端系统中哪个字节通道有效。如果有要求,这些信息可以在更宽的总线应用中扩展。传输位宽小于数据总线宽度的突发传输将在每拍突发中有不同有效字节通道。
        有效字节通道取决于系统的端结构,但是 AHB 并不指定要求的端结构。因此,总线上所有主机和从机的端结构相同这点很重要。

 

2、读数据总线HRDATA[31:0] 

        读数据总线在读传输期间由合适的从机驱动。如果从机通过拉低 HREADY 扩展读传输,那么从机只需要在传输的最后一个周期提供有效数据,由 HREADY 为高表示。
        对于宽度小于总线宽度的传输。从机仅需要在有效的字节通道提供有效数据(与写数据总线中的表格一致) 。总线主机负责从正确的字节通道中选择数据。
        当传输以 OKAY 响应完成时,从机需提供有效数据。 SPLIT RETRY ERROR 响应不需要提供有效的读数据。

3、端结构

        为了使系统正确运行事实上所有模块都是相同端结构的并且任何数据通路或者桥接器也是相同端结构的。

        在大部分的嵌入式系统中,动态端结构将导致硅晶片开销增大,因此一般不支持动态端结构。

        对于模块设计者而言,建议只有应用场合非常宽泛的模块才应该被设计为双端结构的,通过一个配置引脚或者内部控制位来选择端结构。对于更多的特定用途的模块,固定端结构为大端或者小端将产生体积更小、功耗更低、性能更高的接口。

六、小结

        在本文中我们讨论了AHB的很多传输细节,主要有控制信号,地址信号的译码,从机的响应等,其中重点介绍了双周期响应,最后介绍了数据总线及端结构,在后面的文章中我们将继续介绍AHB传输的仲裁机制。

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

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

相关文章

冠达管理:沪指失守3100点 大盘加速赶底

8月21日,A股商场缩量跌落,上证指数尾盘失守3100点。券商股领跌,环保板块逆势掀涨停潮。北向资金净卖出64.12亿元,这是自8月7日以来连续第11个交易日净卖出。 从盘面看,早盘三大指数小幅低开,以券商股为主的…

前端找工作,有没有什么推荐的vue项目?

前言 可以参考一下下面的项目,已经作了vue2和vue3的分类,可以自己去选择适合的,希望对你有帮助~ Vue2 PC项目 1、 Elemen Star:53.4k 是一个基于Vue.js 2.0的UI组件库,由饿了么前端团队开发和维护。该组件库提供了…

文旅景区vr体验馆游乐场vr项目是什么

我们知道现在很多的景区或者游玩的地方,以及学校、科技馆、科普馆、商场或公园或街镇,都会建一些关于游玩以及科普学习的项目。从而增加学习氛围或者带动人流量等等。这样的形式,还是有很好的效果呈现。 普乐蛙VR体验馆案例 下面是普乐蛙做的…

wazuh初探系列一 : wazuh环境配置

目录 方法一:一体化部署 安装先决条件 第一步、安装所有必需的软件包 第二步、安装Elasticsearch 1、添加 Elastic Stack 存储库 安装 GPG 密钥: 添加存储库: 更新源: 2、Elasticsearch安装和配置 安装 Elasticsearch 包…

解决问题:C++ [某变量名] was not declared in this scope

目录 程序报错的问题 查看程序问题 发现错误代码 错误原因 修改代码 再次运行 程序报错的问题 查看程序问题 发现错误代码 cout<<c; 错误原因 c 这个变量还没有在这个程序中定义 修改代码 加上 int c; 再次运行

算法:二分查找算法/朴素二分/查找区间左右端点二分

文章目录 实现原理查找区间左右端点查找左端点查找右端点 实现思路朴素二分查找模板查找区间左右端点模板 典型例题二分查找查找元素第一个和最后一个位置x的平方根山脉数组峰顶索引 总结 实现原理 通常来说&#xff0c;二分查找的使用范围是当数组有序的时候可以使用&#xf…

2023年夏季《移动软件开发》实验报告2

2023年夏季《移动软件开发》实验报告 姓名和学号&#xff1f;本实验属于哪门课程&#xff1f;中国海洋大学23夏《移动软件开发》实验名称&#xff1f;实验2&#xff1a;天气查询小程序博客地址&#xff1f;XXXXXXXGithub仓库地址&#xff1f;XXXXXXX &#xff08;备注&#x…

MyBaits注解开发

1、注解开发介绍 在过去使用框架开发项目&#xff0c;基本都采用xml作为框架的核心配置文件存在&#xff0c;但是这种方式开发效率还是比较地下、不灵活。 现在企业开发为了能够更快的提高开发效率&#xff0c;必然会使用企业级框架进行项目开发&#xff0c;而现在主流的框架…

华人画家戴渭作品 3000 万拍出,牛津艺术学院发出任教邀请

爱丁堡,2023年7月 - 画家戴渭以他独特的画风、深邃的意境和慈悲智慧的属性,将艺术与宗教融合于作品之中。初看他的作品,可能会被其高超的艺术水准所震撼,然而仔细品味,方能领略到他深邃的艺术造诣与宗教智慧的深度融合。 作为国内最年轻的华人80后画家之一,戴渭近期被英国牛津…

若依cloud -【 22 ~ 25 】

22 认证中心介绍 1 概述 用户身份认证的过程ruoyi-cloud认证中心的实现没有依赖任何插件&#xff0c;相对简单&#xff0c;一看就懂从架构图的角度看认证中心&#xff1a; 登录请求&#xff0c;进到网关网关直接调用认证中心。查看ruoyi-gateway-dev.yml&#xff1a; # 结论…

【历史上的今天】8 月 22 日:改变世界的程序员们;网络直播的鼻祖;何小鹏离开阿里巴巴

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天 2023 年 8 月 22 日。历史上的今天&#xff0c;Masatoshi Shima 出生&#xff0c;他和 英特尔&#xff08;Intel&#xff09; 合作设计的芯片让第一个微处理器 Intel 400…

【SpringSecurity】二、密码处理与获取当前登录用户

文章目录 一、密码处理1、加密方案2、BCryptPasswordEncoder类初体验3、使用加密码加密 二、获取当前登录用户1、方式一&#xff1a;通过安全上下文的静态调用2、方式二&#xff1a;做为Controller中方法的参数3、方式三&#xff1a;从HTTPServletRequest中获取4、方式四&#…

无涯教程-PHP Installation on Windows NT/2000/XP with IIS函数

在Windows Server上运行IIS的PHP的安装比在Unix上简单得多,因为它涉及的是预编译的二进制文件而不是源代码。 如果您打算在Windows上安装PHP,那么这是先决条件列表- 运行中的PHP支持的Web服务器。一个正确安装的PHP支持的数据库,如MySQL或Oracle等。(如果您打算使用的话) PHP…

smiley-http-proxy-servlet 实现springboot 接口反向代理,站点代理,项目鉴权,安全的引入第三方项目服务

背景&#xff1a; 项目初期 和硬件集成&#xff0c;实现了些功能服务&#xff0c;由于是局域网环境&#xff0c;安全问题当时都可以最小化无视。随着对接的服务越来越多&#xff0c;部分功能上云&#xff0c;此时就需要有一种手段可以控制到其他项目/接口的访问权限。 无疑 反向…

硬件解码example

使用方法&#xff1a; ./hw_decode vaapi juren-30s.mp4 juren-30s.mp4 验证播放&#xff1a; ffplay -video_size 1920x1080 -pixel_format yuv420p juren-30s.yuv av_hwdevice_iterate_types(type)如果你填入的参数不对&#xff0c;那么这函数这个函数的作用相当于以下命令&…

飞天使-k8s基础组件分析-pod

文章目录 pod介绍pod 生命周期init 容器容器handlerpod中容器共享进程空间sidecar 容器共享 参考链接 pod介绍 最小的容器单元 为啥需要pod? 答: 多个进程丢一个容器里&#xff0c;会因为容器里个别进程出问题而出现蝴蝶效应&#xff0c;pod 是更高级的处理方式pod 如何共享相…

简述docker映射(Mapping)和挂载(Mounting)

映射的概念&#xff1a; 将容器内的端口映射到主机的端口上&#xff0c;这样就可以通过主机的网络接口与容器内部进行通信。主机上对应端口的请求会被转发到容器内部&#xff0c;从而实现对容器内部程序的通信访问&#xff08;注意&#xff01;这里提到的容器内部的端口并不一定…

网络安全(黑客)了解学习路线

谈起黑客&#xff0c;可能各位都会想到&#xff1a;盗号&#xff0c;其实不尽然&#xff1b;黑客是一群喜爱研究技术的群体&#xff0c;在黑客圈中&#xff0c;一般分为三大圈&#xff1a;娱乐圈 技术圈 职业圈。 娱乐圈&#xff1a;主要是初中生和高中生较多&#xff0c;玩网恋…

EasyImage简单图床 - 快速搭建私人图床云盘同时远程访问【无公网IP内网穿透】

憧憬blog主页 在强者的眼中&#xff0c;没有最好&#xff0c;只有更好。我们是移动开发领域的优质创作者&#xff0c;同时也是阿里云专家博主。 ✨ 关注我们的主页&#xff0c;探索iOS开发的无限可能&#xff01; &#x1f525;我们与您分享最新的技术洞察和实战经验&#xff0…