AHB---数据总线

news2024/11/23 12:42:01

1. 数据总线

为了实现AHB系统,需要独立的读写数据总线。虽然推荐的最小数据总线宽度被指定为32位,但这可以根据数据总线宽度进行更改。 数据总线包含以下部分:

  • HWDATA
  • HRDATA
  • Endianness(字节序)

1.1 HWDATA

在写传输期间,master驱动写数据总线。如果传输被延长,则master必须保持HREADY为高时的data valid,直到传输完成。

对于比总线宽度窄的传输,例如在32位总线上的16位传输,master只需要驱动相应的字节通道。slave从正确的字节通道中选择写数据。

1.2 HRDATA

在读传输期间,相应的slave驱动读数据总线。如果slave通过保持HREADY为低来延长读传输,那么slave只需要在传输的最后一个周期提供HREADY为高时的valid data。

对于比总线宽度窄的传输,slave只需要在有效的字节通道上提供valid data。master从正确的字节通道中选择数据。

当传输以OKAY响应完成时,slave需要提供valid data。错误响应(ERROR responses)不需要有效的读数据。

2. 字节序(Endianness)

AHB支持大端序和小端序系统。支持大端序数据存储的两种方法。

AHB5引入了Endian属性来定义支持哪种形式的大端序数据访问。

  • BE8:字节不变大端序(Byte-invariant big-endian)。一个字节访问(8位)使用的是与相同地址上的小端序访问相同的数据总线位。
  • BE32:字不变大端序(Word-invariant big-endian)。一个字访问(32位)使用的最显著(MS)字节和最不显著(LS)字节与相同地址上的小端序访问相同的数据总线位。

以下一组方程定义了小端序、字节不变大端序和字不变大端序访问所使用的数据位。

方程使用以下变量:

  • 地址(address):传输的地址。
  • 数据总线字节(Data_Bus_Bytes):8位数据总线字节通道的数量。
  • INT(x):x的向下取整整数值。

2.1 小端序

当一个小端序组件访问一个字节时,以下方程显示了使用哪些数据总线位:

Byte_Lane = Address - (INT(Address / Data_bus_Bytes)) x Data_Bus_Bytes 

数据传输在 DATA[(8 × Byte_Lane) + 7 : (8 × Byte_Lane)]

当较大的小端序传输发生时,数据以这样的方式传输:

  • 最低有效(LS)字节传输到传输地址。
  • 递增的字节传输到顺序递增的地址。

2.2 字节不变大端序

当一个字节不变大端序组件访问一个字节时,以下方程显示了使用哪些数据总线位:

Byte_Lane = Address - (INT(Address / Data_bus_Bytes)) x Data_Bus_Bytes

 数据传输在 DATA[(8 × Byte_lane) + 7 : (8 × Byte_lane)]

注意:方程与小端序的方程相同。因为大端序和小端序访问对于字节传输是相同的,所以这些传输使用了“字节不变”这个术语。

当较大的字节不变大端序传输发生时,数据以这样的方式传输:

  • 最高有效(MS)字节传输到传输地址。
  • 递减的字节传输到顺序递增的地址。

注意:这是字节不变大端序和小端序组件之间的关键区别。

2.3 字不变大端序

当一个字不变大端序组件访问一个字节时,以下方程显示了使用哪些数据总线位: Address_offset = Address - (INT(Address / Data_Bus_Bytes)) x Data_bus_Bytes 

Word_offset = (INT(Address_offset / 4)) x 4

Byte_offset = Address_offset - Word_offset 

数据传输在 DATA[(8 x (word_offset + 3 - Byte_offset)) + 7 : 8 x (word_offset + 3 - Byte_offset)]

对于32位总线,Word_offset总是0,因此方程简化为:

DATA[(8 x (3 - Byte_offset)) + 7 : 8 x (3 - Byte_offset)]

注意 这表明了字不变大端序和小端序组件之间的一个关键区别。字不变大端序组件传输一个字节量时使用的是与小端序和字节不变大端序组件不同的数据总线位。

对于使用字不变大端序的半字和字传输,数据以这样的方式传输:

  • 最高有效字节传输到传输地址。
  • 递减的字节传输到顺序递增的地址。

对于使用字不变大端序的大于一个字的传输,数据被分割成字大小的块:

  • 最高的字传输到传输地址。
  • 递减的字传输到递增的地址。

32位的数据总线可以扩展用于更宽的数据总线实现。

具有小于数据总线宽度的突发传输的每个突发拍中有不同的有效字节通道。

表6-1和表6-2显示了在小端序或字节不变大端序系统中32位总线上的有效字节通道。在这两种情况下,有效字节通道是相同的,但最高有效字节和最低有效字节的位置不同。

表6-3显示了在字不变大端序系统中32位总线上的有效字节通道。 

2.4 字节不变性

使用字节不变大端序数据结构简化了在单一内存空间中访问混合字节序数据结构的过程。

采用字节不变大端序和小端序意味着,对于数据结构中的任何多字节元素:

  • 无论数据的字节序如何,该元素使用的是相同的连续字节的内存。
  • 字节序决定了字节在内存中的顺序,也就是说,它决定了内存中的第一个字节是元素的最高有效(MS)字节还是最低有效(LS)字节。
  • 任何给定地址的字节传输都会通过相同的数据总线将八位数据传输到相同的地址位置,而不管该字节所属的任何数据元素的字节序如何。

图6-1 展示了一个要求字节不变访问的数据结构示例。在这个示例中,头部字段使用小端序排列,而数据负载使用大端序排列。

在这个结构中,例如,Count 是一个小端序的两字节元素,这意味着它的最低地址是它的最低有效(LS)字节。 使用字节不变性确保了对数据负载进行大端序访问不会破坏小端序元素。

3.数据总线宽度

提高总线带宽的一种方法是增加片上总线的数据路径宽度,而不增加操作频率。增加的金属层和使用大型片上存储块(如嵌入式DRAM)是促进使用更宽片上总线的因素。

指定固定宽度的总线意味着,在许多情况下,总线的宽度对应用来说并不是最优的。因此,采用了一种方法,它允许总线宽度的灵活性,同时仍然确保模块在不同设计之间具有很高的可移植性。

该协议允许数据总线宽度为8、16、32、64、128、256、512或1024位。然而,建议至少使用32位的总线宽度。对于几乎所有应用来说,256位的最大总线宽度已经足够。

对于读写传输,接收模块必须从总线上正确的字节通道选择数据。不需要在所有字节通道上响应数据。

3.1 在宽总线上实现窄slave 

图6-2展示了如何将原本设计为使用32位数据总线的slave模块转换为在64位总线上操作。这只需要添加外部逻辑,而不需要任何内部设计更改,因此该技术适用于硬宏单元。

对于输出,当将窄总线转换为更宽的总线时,可以做以下之一:

  • 如图6-2所示,在宽总线的两半复制数据。
  • 使用额外的逻辑确保只有相应的一半总线被更改。这可以减少功耗。

slave只能接受与其自然接口一样宽的传输。如果master尝试进行的传输宽度超出slave支持的范围,那么slave可以使用错误传输响应。

3.2 在窄总线上实现宽slave

通过使用外部逻辑,可以调整预设计或导入的slave以适应更窄的数据总线。图6-3 展示了在窄总线上实现宽slave的方式。

 

3.3 在宽总线上实现master

master可以通过类似的方式修改,以便在比原设计更宽的总线上工作,即通过:

  • 多路复用输入总线。
  • 复制输出总线。

注意 除非在master中包含了某种机制来限制master尝试的传输宽度,否则master不能在比原设计更窄的总线上工作。master决不能尝试传输宽度(由HSIZE指示)比它连接的数据总线宽度更大的传输。

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

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

相关文章

2024年最新 CKA 导航页

1. Dokcer 基础相关 Docker 、 Docker-Compose 安装教程Docker基础知识、相关概念以及基本使用命令Docker 一句话删除所有镜像/容器 2. CKA 相关学习 CKA(Certified Kubernetes Administrator)是由 Cloud Native Computing Foundation(CNC…

嵌入式C语言教程:实现声音监测系统

声音监测在许多应用中都十分重要,如噪声控制、安全系统、和智能家居控制。 本教程将介绍如何在STM32微控制器上使用模数转换器(ADC)和声音传感器实现实时声音监测系统。 一、开发环境准备 硬件要求 微控制器:STM32F746NG&…

美国站群服务器在站群管理中的防护和数据安全保障?

美国站群服务器在站群管理中的防护和数据安全保障? 美国站群服务器的防护和数据安全保障是站群管理中的关键问题。站群服务器位于美国,通常由专业的服务器提供商管理和维护,其安全性受到多方面因素的影响。 美国站群服务器在站群管理中的防护和数据安全…

《深入解析WIndows操作系统》第10章读书笔记

1、大页面和小页面:虚拟地址空间被划分成以页面为单位,这是因为硬件内存管理单元在页面的粒度上,将虚拟地址转译为物理地址。Windows支持两种页面尺寸:大页面和小页面,根据处理器体系结构不同,实际尺寸值有…

Springai入门

一、概述 1.1发展历史 1.2大模型 大模型,是指具有大规模参数和复杂计算结构的机器学习模型。这些模型通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数。其设计目的在于提高模型的表达能力和预测性能,以应对更加复杂的任务和数据&…

Guer完成对Gallium Semi的GaN产品组合的收购

预计到2024年6月,完整的射频氮化镓产品组合将完成整合 总部位于美国的Guerrilla RF (GUER)已完成对镓半导体公司GaN功率放大器和前端模块的全部收购。 自2024年4月26日起,GUER收购了Gallium Semiconductor先前发布的所有组件以及正在开发的新内核。此外…

2024蓝桥杯RSA-Theorem

方法1:直接使用工具yafu解题 yafu的使用方法 安装:解压后直接使用即可,在文件包内,执行命令终端,输入命令行 1、如果数比较小,进入该文件的目录后可以直接使用: yafu-x64 factor(n) 如果是powershell&…

本地存储和cookie之间的区别是什么?

本地存储和cookie是两种在web开发中常用的客户端存储技术,它们都可以用来在用户的浏览器中存储数据,但是它们之间有一些重要的区别。 本地存储是HTML5引入的一种客户端存储技术,它允许开发者在用户的浏览器中存储大量的数据,包括…

MySQL 中的HASH详解

MySQL中的哈希索引(Hash Index)是一种特殊的数据库索引类型,它利用哈希表(Hash Table)的数据结构来存储索引项。哈希表通过哈希函数(Hash Function)将索引列的值转化为一个固定长度的哈希码&…

【资源分享】Origin2022Pro免费安装下载

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

机器人系统ros2-开发实践06-将静态坐标系广播到 tf2(Python)-定义机器人底座与其传感器或非移动部件之间的关系

发布静态变换对于定义机器人底座与其传感器或非移动部件之间的关系非常有用。例如,最容易推断激光扫描仪中心框架中的激光扫描测量结果。 1. 创建包 首先,我们将创建一个用于本教程和后续教程的包。调用的包learning_tf2_py将依赖于geometry_msgs、pyth…

Advanced RAG 06:生成结果的相关性低? 快用 Query Rewriting 优化技术

编者按:在现实生活中,普通用户很难编写合适的提示词(prompt)来指示 LLM 完成期望任务。用户提出的 queries 往往存在词汇不准确、缺乏语义信息等问题,导致 LLM 难以理解并生成相关的模型响应。因此,如何优化…

关于二手车系统学习--登录模块

1.样式1-17行 <div class"cheader"><div style"width: 80%;margin: 0 auto;line-height: 50px;padding-top: 10px"><el-row><el-col:span"5"style"font-size: 20px;cursor: pointer;color: #00ae66;font-weight: bold…

sqlserver中替换空格和换行

sqlserver 中换行符&#xff0c;如下&#xff1a; sql语句如下&#xff1a; //替换换行-使用char(10) select REPLACE(F_CNKITitle ,char(10),) title from tzkj_CNKIContent tc where --F_CnkiContentID ffdc7412-41e1-4d42-8693-cc79d0cf2dd3and len(REPLACE(F_CNKITitle ,…

K邻算法:在风险传导中的创新应用与实践价值

程序员的实用神器 ⛳️ 写在前面参与规则&#xff01;&#xff01;&#xff01; ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论三次&#xff09; ⛳️本次送书1~4本【取决于阅读量&#xff0c;阅读量越多&#xff0c;送的越…

如何应对Android面试官 -> PKMS 权限管理

前言 本章我们继续上一章节&#xff0c;讲解 PKMS 相关知识点&#xff1b; 静默安装 静默安装说的就是&#xff1a;在用户无感知的情况下&#xff0c;给用户的手机安装了某个 app&#xff0c;或者是用户触发安装之后&#xff0c;不需要额外的任何操作即可以安装目标 app 到手机…

软件测试经理工作日常随记【2】-接口自动化

软件测试主管工作日常随记【2】-接口自动化 1.接口自动化 jmeter-反电诈项目 这个我做过的一个非常有意义的项目&#xff0c;和腾讯合作的&#xff0c;主要为用户拦截并提示所有可能涉及到的诈骗类型&#xff0c;并以裂变的形式扩展用户&#xff0c;这个项目前期后端先完成&…

Linux 二十一章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

1000公里清晰可见,光纤资源管理新方案——记录与查询

01传统模式光纤资源管理下 记录难 不止有手工记录与CAD记录&#xff0c;还有Excel、PPT、Visio、JPG、PNG、老师傅经验记... 查询难 需要大量翻查CAD、Excel、PPT、Visio、JPG、PNG才能得到完整光缆的信息&#xff0c;可是老师傅记录怎么查询&…

小心电子合同这个坑:PS章

近期&#xff0c;我发现网上有很多教程教大家如何自己动手用PS制作电子章&#xff0c; 看似方便&#xff0c;实则危机四伏&#xff01; 通过PS技术&#xff0c;你可以生成任何一家公司的印章&#xff0c; 用以冒充电子章&#xff0c;或打印出来冒充实体章。 甚至还能进行做旧…