AMBA总线协议(4)——AHB(二)

news2024/11/15 15:55:58

目录

一、前言

二、AHB操作概述

三、AHB 基本传输

1、简单传输        

2、带有等待的传输

3、多重传输

四、AHB传输类型

五、小结


一、前言

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

二、AHB操作概述

        (1)在开始一个AMBA AHB传输前,主机必须得到访问总线的授权。主机向仲裁器发出请求信号,然后仲裁器会指示这个主机何时能够得到授权,开始对总线的访问。

        (2)主机得到访问授权后,驱动地址和控制信号,开始一次AHB传输。这些信号提供传送地址,传送方向,传送带宽,这次传送是否是 burst(猝发传输)传送等信息。AHB支持两种类型的猝发传输:增量猝发(地址递增)和回卷猝发(地址达到边界后回卷)。

        (3)在 AHB 上,一次传送包括给出地址、控制信号周期与数据周期。地址与控制信号周期最少需要一个周期,但是会因为数据的原因多出几个周期。数据周期可以通过 HREADY 信号来延迟。地址不长期有效,所以所有从机必须在传输地址时采样地址。然而,通过 HREADY 信号可以延长数据。当该信号为低时导致在传输中插入等待状态同时允许从机有额外的时间提供或者采样数据。

        (4)在传输中从机通过使用响应信号HRESP[1:0]来表示状态:

OKAY :OKAY 响应用来表示传输进展正常并且当 HREADY 变高时表示传输成功完成。

ERROR :ERROR 响应表示发生了一个传输错误并且传输失败。

RETRY 和 SPLIT: RETRY 和 SPLIT 两个传输响应都表示传输不能立刻完成,但是总线主机应该继续尝试传输。

        在正常操作下,在仲裁器授权其他主机访问总线前,允许一个主设备以一个特定的猝发方式完成所有的传输操作。然而,为了避免过多的仲裁延时,仲裁器可能会把一个猝发进行分解。在这种情况下,主机必须重新获得仲裁器授权。

三、AHB 基本传输

        一个AHB传输由2个不同的部分组成:

        (1)地址周期,持续一个时钟周期

        (2)数据周期,可能要求几个周期,通过使用 HREADY信号实现

1、简单传输        

        下图给出了一个简单传输的例子,没有等待状态:

​​​​​​​

       在读图的时候首先要注意:图中的HWDATA和HRDATA分别表示写数据总线和读数据总线,这两个信号出现在同一张图中,不是因为在一次传输中这两个信号同时起作用,这只是为了方便读者能在一张图中同时看到读操作和写操作,但是具体分析读操作和写操作时,应该忽略另一个信号的存在,基本AMBA所有的手册都有类似的性质。

        在一个无等待状态的简单传输中:

        (1)图中①处,在第一个HCLK的上升沿,进入地址周期(Address phase)主机会将地址和控制信息准备好,驱动到总线上。

        (2)图中②处,在第二个HCLK的上升沿,从机采样到地址和控制信息。此时进入数据模式,从机在完成地址和控制信息的采样后会驱动正确的响应信号。

        (3)图中③处,在第三个HCLK的上升沿,主机采样到从机给出的响应信号。

        这个简单的例子就说明了在不同的时钟周期,如何产生地址周期和时钟周期。实际上,任何传输的地址周期可以发生在前一个传输的数据周期。这就是我们常说的流水线结构,允许更高性能的操作,同时为一个从设备提供了充足的时间,用于对一个传输的响应。

2、带有等待的传输

        传送完成时间因等待而延迟,这是由于寻址到较慢的从机所造成。当 HREADY 被从机拉低时(也就是从机告知主机,自己还没有准备好)会发生等待状态。需要延迟传送的周期时,就会在数据期间将 HREADY 拉低,此时地址与数据都必须延伸。

        其实很好理解,在刚才的简单传输中,主机(也就是我们的数据传输的发起者)要向从机(数据传输的接收者)发送数据,主机给出地址和控制信号,双方一拍即合,从机很果断地收下了地址和控制信息,并迅速给主机回应了。一次愉快的传输结束了。

        在此时的等待传输过程中,主机给出了地址和控制信息,但是从机不乐意了,从机表示自己还有其他事情要忙,直接在自己大门上的挂上了暂停营业的信息(HREADY拉低),主机吃了闭门羹,但是又不想放弃这一次传输,那没办法只能等了,等从机忙完,终于撤下了暂停营业的信息(HREADY 拉高),给了主机需要的回应,一次有等待的传输就结束了。

        好了言归正传,我们来看一个有等待的传输具体是怎么进行的:

        (1) 图中①处,在第一个HCLK的上升沿,进入地址周期(Address phase)主机会将地址和控制信息准备好,驱动到总线上。

        (2)图中②处,在第二个HCLK的上升沿,从机采样到地址和控制信息。此时进入数据模式,但是从机并没有准备好数据,在紧连着的下一个HCLK的上升沿处,主机发现从机没有给出HREADY高的信息,所以只能进行等待。

        (3)图中③处,此时从机准备好了数据,拉高了HREADY信号,主机顺利拿到了想要的回应,传输结束。

        这里我们分别看以下读写操作,在进行写操作的时候,由于从机始终没有准备好,所以主机必须保持HWDATA数据是有效的。在读操作的时候,从机就比较随意了,自己准备好了就拉高HREADY信号,只要保证在主机第一次采样到HREADY高的那一个瞬间,自己的数据HRDATA有效就可以了,其他时间无所谓。

3、多重传输

        当传输以这样的方式扩展时,在随后传输的地址周期中有副作用。下图说明了传输3个无关的地址A,B,C。

        (1)传输地址A,C都是零等待状态 

        (2)传输地址B时一个等待周期

        (3)传输的数据周期扩展到地址B,传输的扩展地址周期影响到地址C

四、AHB传输类型

        AHB总共有4种不同的传输类型,用HTRAN[1:0]表示:

HTRAN[1:0]类型描述
00IDLE(空闲)
        表示没有数据传输的要求。此时主机得到了使用总线的授权,但是没有数据要进行传输。
        从机必须总是提供一个零等待状态 OKAY 来回应主机,并且该传输应该被从机忽略。
01BUSY(忙)
        忙传输类型。允许总线主机在突发传输中间插入空闲周期。这种传输类型表示总线主机正在连续执行一个猝发传输,但是下一次传输不能立即发生。当一个主机使用忙传输类型时地址和控制信号必须反映突发中的下一次传输。
        这种传输应该被从机忽略。从机必须总是提供一个零等待状态 OKAY 响应,和从机响应空闲传输一样的方式。
10NONSEQ(非连续)
        表示一次猝发的第一个传输或者一个单一传输。地址和控制信号和前一次传输无关。
        总线上的单一传输被视为(数据量为)一个猝发。因此传输类型是不连续的。
11SEQ(连续)
        在一个猝发中剩下的传输是连续传输并且地址是和前一次传输有关的。控制信息和前一次传输一样。地址等于前一次传输的地址加上传输大小(字节)。在回环突发的情况下传输地址在地址边界处回环,回环值等于传输大小乘以传输的次数(4 8 或者 16 其中之一)。
        (注:这里回环指从传输的结束地址边界跳回到传输的起始地址边界。)

         我们一直有反复提到一个词叫做猝发,这其实是应为burst的翻译,burst 传输是非常常见的,指的是一种连续传输,地址逐步递增(也有一种回环猝发:这里回环指从传输的结束地址边界跳回到传输的起始地址边界)。

五、小结

        本文中我们详细讲述了关于AHB的基本操作流程,主机要先从仲裁器获得授权,然后进行总线的访问,这样可以避免总线冲突,获得授权后,主机给出地址和控制信号,从机根据自身情况进行响应,可以分成有等待的情况和无等待的情况,这主要通过从机控制HREADY信号实现。AHB传输共分成4种类型,由主机通过HTRANS体现。在后面的文章中我们将讲述AHB的猝发传输,这也是AHB中广泛使用的一种情况。

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

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

相关文章

【工具使用】Keil5软件使用-进阶调试篇

一、概述 本文面向已经懂得软件基本操作的职业老手,如果是未使用过该软件的小鲜肉,请移步基础篇。这里以STM32芯片为例对工具进行讲解,其他品牌的芯片在调试方面上可能存在差异。 二、软件说明 Keil提供了包括C编译器、宏汇编、链接器、库管…

内核日志过滤

本操作以centos为例。 1、不想把日志存入到 /var/log/messages中,转存到其他文件 >1.1、修改配置文件 /etc/rsyslog.conf vim /etc/rsyslog.conf# 添加以下代码if $programname kernel and ($msg contains hexdump or $msg contains shentong_data_file) then …

如祺出行递表,港交所迎来首位Robotaxi商业化观察对象

港交所近年来持续对新经济公司和科技创新类公司释放善意,接连优化上市条款,摆出“筑巢引凤”姿态。这也让外界对新兴领域的兴趣大大增加。 8月18日,出行科技与服务公司如祺出行正式递表港交所,其业务模式为Robotaxi和有人驾驶网约…

python AI绘图教程

前提 1.安装python 2.安装git 步骤 下载stable-diffusion-webui项目(链接:GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI) git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 安装st…

git管理代码

理论上改代码前要pull一次,然后在push前在pull一次 改代码前pull一次是为了获取最新的同步,但是coding也是需要时间的,难保敲代码的这段时间没有人动远程仓库的东西,所以在改完代码要push的时候也应该再pull一下看有无冲突&#x…

《Zookeeper》源码分析(十七)之 LeaderZooKeeperServer

目录 LeaderZooKeeperServer类结构创建LeaderZooKeeperServer加载初始化数据loadData()启动LeaderZooKeeperServersetupRequestProcessors() LeaderZooKeeperServer 类结构 ZooKeeperServer主要是设置了一系列Processor处理器,对于不同的服务器角色有不同的实例类…

论文导读 | Operations Research近期文章精选

推文作者:张曦予 编者按 本期我们选取了七月后半月来自Operations Research的一篇文章以及来自Management Science的四篇文章以飨读者,内容涉及多个方面,我们选取的文章包含了各个方面对于管理以及运筹进行研究的文章,如研究疲劳对…

更新清华软件源时报错:Certificate verification failed: The certificate is NOT trusted.

场景: 在下载libapriltag-dev依赖时,Linux给报了一个错误:E: Unable to locate package libapriltag-dev 。这个错误经常会出现,无法在现有的软件源里找到该安装包或者该依赖,这个时候,首先我们就需要先检查…

服务运营 | MSOR文章精选:远程医疗服务中的统计与运筹(一)

推文作者:蔡君洋,Guo 编者按 《哈佛商业评论》在今年1月20日发表了《是时候巩固远程医疗在美国医疗保健中的地位了(It’s Time to Cement Telehealth’s Place in U.S. Health Care)》一文。文章指出,在COVID-19大流行…

4.SpringCloud 基本架构

1.SpringCloud概述 Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,…

设置前端项目站标 favicon.ico

1、首先我们需要准备一个小图标利用在线ico工具制作 .ico 的文件 在线工具favicon制作 - 在线工具favicon在线制作,icon制作,网站图标,网站图标制作,ico图标制作https://tool.lu/favicon/选择自己想要制作的小图标,然后选择48*48的下载就可以了 将下载的文件名改为f…

leetcode 123. 买卖股票的最佳时机 III

2023.8.21 本题限制了买卖次数:最多买卖两次。 与之前的股票问题相比,dp数组的第二个维度需要设置四个状态: 第一次持有股票第一次不持有股票第二次持有股票第二次不持有股票 ps:持有股票不等于购买股票!&#xff01…

【Git版本控制工具使用---讲解一】

Git版本控制工具使用 安装设置用户名签名和邮箱Git常用的命令 初始化本地库查看本地状态Git 命令添加暂存区提交本地库查看版本信息修改文件版本穿梭 安装 首先根据自身电脑的配置选择性的安装是32位的还是64位的Git版本控制工具 我这边安装的是64位的 以下是我安装的时候的过…

jmeter HTTP信息头管理器

首先,打开JMeter并创建一个新的测试计划。右键单击测试计划,选择"添加" > “线程组”,然后在线程组上右键单击,选择"添加" > “Sampler” > “HTTP请求”。 在HTTP请求中填写服务器的URL和其他必要…

深入浅出带你玩转栈与队列——【数据结构】

W...Y的主页 😊 代码仓库分享 💕 目录 1.栈 1.1栈的概念及结构 1.2栈的结构特征图 ​编辑 1.3栈的实现 1.3.1栈的初始化 1.3.2进栈 1.3.3出栈 1.3.4销毁内存 1.3.5判断栈是否为空 1.3.5栈底元素的读取 1.3.6栈中大小 1.4栈实现所有接口 2…

时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现SO-CNN-BiL…

增强数字风险防护管理,天际友盟牵头正式发布GDN·全球数字风险阻断网络

随着数字化进程的加快,企业对于数字风险防护管理的需求与日俱增,其数字足迹、数字资产,甚至高管的个人形象都可能成为不法分子的攻击目标。保护关键数字资产与数据免受外部威胁,提升在线业务运营稳健性的价值毋庸置疑。 8月18日&a…

QQ音乐刷时长和音响力工具-无需密码

QQ音乐刷等级是一款安卓端的QQ音乐刷时长和音响力工具,使用时无需密码登录,直接输入qq号码即可,支持微信账号,每提交一次可以刷99分钟的听歌时长,实时到账,刷的听歌时长可以增加听歌排行榜跟音响力(就是QQ音…

辅助笔记-安装Ubantu20.04.1虚拟机

安装Ubantu20.04.1虚拟机 文章目录 安装Ubantu20.04.1虚拟机步骤一:检查BIOS虚拟化支持步骤二:VMware17安装虚拟机步骤1:新建虚拟机步骤2:验证虚拟机能否上网 步骤三:设置Ubantu语言为中文步骤四:软件仓库镜…

江西景德镇陶瓷三维扫描工艺品瓷器数字化3D打印-CASAIM中科广电

江西景德镇陶瓷是中国著名的传统陶瓷产地,其瓷器作为文化遗产具有重要的历史和艺术价值。对于陶瓷工艺品瓷器的三维扫描和数字化,利用三维激光扫描和3D打印相结合的方式助力文物数字化及复原领域是目前主流的发展趋势。 1. 三维激光扫描操作:…