AHB介绍

news/2024/5/18 16:21:26

1. 关于AHB协议

AMBA AHB是一种适用于高性能可综合设计的总线接口。它定义了组件之间的接口,例如master、互连和slave。

AMBA AHB实现了高性能、高时钟频率系统所需的特性,包括:

  • 突发传输(Burst transfers)。
  • 单时钟边沿操作(Single clock-edge operation)。
  • 非三态实现(Non-tristate implementation)。
  • 宽数据总线配置,64、128、256、512和1024位。

最常见的AHB slave包括内部存储设备、外部存储器接口和高带宽外设。尽管低带宽外设也可以作为AHB slave,但由于系统性能原因,它们通常位于AMBA高级外设总线(APB)上。使用一个称为APB_bridge的AHB slave,在性能更高的AHB和APB之间进行桥接。

图1-1显示了一个具有单个master的AHB系统设计,其中包括AHB master和三个AHB slave。总线互连逻辑由一个地址解码器和一个slave到master的多路复用器组成。解码器监控来自master的地址,以便选择适当的slave,并将相应的slave输出数据路由回master。

AHB还通过使用一个提供仲裁和路由信号的互连组件来支持多master设计,这些信号来自不同的master到适当的slave。

注意:图1-1仅显示了主要的地址和数据总线以及典型的数据路由。并非所有信号都显示。

1.1 master

一个master提供地址和控制信息以启动读写操作。

图1-2显示了一个master接口。

注意 图1-2中的图未包括在AHB5中定义的额外信号。

1.2 slave

slave响应系统中master发起的传输。slave使用解码器提供的HSELx选择信号来控制它何时响应总线传输。

slave向master反馈以下信号:

  • 总线传输的完成或传输时间的扩展。
  • 总线传输的成功或失败。

图1-3 显示了一个slave接口。

注意 图1-3中的图表未包括在AHB5中定义的额外信号。

1.3 互连

互连组件在系统中提供master和slave之间的连接。

单个master系统只需要使用解码器和多路复用器,如下所述。

多master系统需要使用互连,该互连提供仲裁以及将来自不同master的信号路由到适当的slave。这种路由对于地址、控制和写数据信号是必需的。

1.3.1 解码器

该组件对每个传输的地址进行解码,并为参与传输的slave提供选择信号。它还为多路复用器提供控制信号。 在所有使用两个或更多slave的实现中,都需要一个集中的解码器。

1.3.2 多路复用器

需要一个slave到master的多路复用器来多路复用从slave到master的读数据总线和响应信号。解码器控制多路复用器。 在所有使用两个或更多slave的实现中,都需要一个集中的多路复用器。

2. AHB修订

本规范的上一版被称为Issue A,描述的版本称为AHB-Lite。 本文档的这一版是Issue B,描述了:

  • AHB-Lite 这个版本与Issue A中定义的版本相同。
  • AHB5 这个版本提供了额外的能力,使用属性来声明新的能力。如果一个属性没有被声明,它被认为是False(假)。

新属性包括:

  • Extended_Memory_Types(扩展内存类型)。
  • Secure_Transfers(安全传输)。
  • Endian(字节序)。
  • Stable_Between_Clock(时钟之间稳定)。
  • Exclusive_Transfers(独占传输)。
  • Multi_Copy_Atomicity(多副本原子性)。

本次规范修订还包含了以下主题的额外信息:

  • Locked transfers(锁定传输)。
  • Multiple slave select(多个从设备选择)。
  • Single-copy atomicity size(单副本原子性大小)。
  • User signaling(用户信号)。

在本规范中,术语AHB用于指代AHB-Lite和AHB5。 除非另有说明,信号对于AHB-Lite和AHB5都是通用的。

3. 操作

master通过驱动地址和控制信号来启动一次传输。这些信号提供了关于地址、方向、传输宽度以及传输是否是突发传输的一部分的信息。传输可以是:

  • 单个传输(Single)。
  • 不在地址边界处回环的增量突发(Incrementing bursts that do not wrap at address boundaries)。
  • 在特定地址边界处回环的突发(Wrapping bursts that wrap at particular address boundaries)。

写数据总线将数据从master传输到slave,而读数据总线则将数据从slave传输到master。

每次传输包括:

  • 地址阶段(Address phase)      一个地址和控制周期。
  • 数据阶段(Data phase)            数据的一个或多个周期。

slave不能要求延长地址阶段,因此所有slave都必须能够在这段时间内采样地址。然而,slave可以通过使用HREADY信号来请求master延长数据阶段。 当HREADY信号为低(LOW)时,会在传输中插入等待状态,并允许slave有额外的时间来提供或采样数据。

slave使用HRESP信号来指示传输的成功或失败。


http://www.mrgr.cn/p/60633414

相关文章

【pytorch学习】之线性神经网络-图像分类数据集

图像分类数据集 MNIST数据集 (LeCun et al., 1998) 是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。我们将使用类似但更复杂的Fashion‐MNIST数据集 (Xiao et al., 2017)。 %matplotlib inline import torch import torchvision from torch.utils import data f…

docker的基本命令

基础命令 https://yeasy.gitbook.io/docker_practice/data_management/volume// 容器命令 1. docker command --help 查看对应命令的用法 2. docker ps -a 查看所有docker进程(无论是否在运行) -l最后一次创建的容器 3. docker logs containerId 查看容器日志 4. docker start…

【数据结构】串(String)

文章目录 基本概念顺序存储结构比较当前串与串s的大小取子串插入删除其他构造函数拷贝构造函数扩大数组空间。重载重载重载重载[]重载>>重载<< 链式存储结构链式存储结构链块存储结构 模式匹配朴素的模式匹配算法(BF算法)KMP算法字符串的前缀、后缀和部分匹配值nex…

AI生成内容(AIGC)技术:革新创作与挑战未来

如何看待AIGC技术&#xff1f; 本文将深入探讨人工智能生成内容&#xff08;AIGC&#xff09;技术的发展现状、多领域应用、伦理与风险&#xff0c;以及未来的发展趋势。AIGC技术正在改变信息和创作的景观&#xff0c;本文旨在为读者提供一个全面的视角&#xff0c;了解这一技…

强强联合,思迈特与科大讯飞星火智能体,完成大模型兼容性认证

近日&#xff0c;历经多项严格测试&#xff0c;思迈特商业智能与数据分析软件[简称Smartbi Insight ]V11与科大讯飞星火智能体完成相互兼容性测试&#xff0c;这一里程碑式的合作不仅再一次彰显了思迈特强大的产品实力&#xff0c;同时也是其在智能科技领域的一次重要突破&…

政企版 WPS Pro 专业版注册安装教程

政企版 WPS Pro 专业版安装及激活步骤 第 1 步&#xff1a;下载压缩包&#xff08;内含注册码&#xff09;【无解压密码】。 第 2 步&#xff1a;解压缩后&#xff0c;运行 exe 文件&#xff0c;默认步骤安装即可。 第 3 步&#xff1a;安装完成后&#xff0c;新建一个 Word …

RTX腾讯通升级至有度,无缝衔接信创国产即时通讯及协同办公平台

随着信息技术的快速发展,企业对于即时通讯和协同办公平台的需求日益增强。RTX腾讯通作为国内知名的即时通讯工具,一直以来都受到广大企业的青睐。然而,随着信创国产化趋势的加速推进,越来越多的企业开始寻求更加符合国产化要求的解决方案。在这样的背景下,RTX腾讯通升级至…

碎片和水位线回收的验证过程 转发 https://www.modb.pro/db/1780420808865845248

1、数据库基础内容 表空间-数据文件-段-区-块 一个表空间由一个或者多个数据文件组成 高水位线和表碎片的示意图 其中被划掉的字代表delete删除,其中 耶 就是后续的insert,只会在末尾增加,而不是填充被删除的字段,这样就会导致数据库在搜寻数据时会浪费很多资源。 整理碎片…

【学习笔记】Python 使用 matplotlib 画图

本文将介绍如何使用 Python 的 matplotlib 库画图,记录一些常用的画图 demo 代码目录安装中文显示折线图、点线图柱状图、堆积柱状图坐标轴断点参考资料 本文将介绍如何使用 Python 的 matplotlib 库画图,记录一些常用的画图 demo 代码 安装 # 建议先切换到虚拟环境中 pip in…

记录一个小问题

引发错误结果的代码: class Solution {List<List<Integer>> result = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> combine(int n, int k) {backTracking(n, k, 1);return resul…

开源向量数据库比较:Chroma, Milvus, Faiss,Weaviate

语义搜索和检索增强生成(RAG)正在彻底改变我们的在线交互方式。实现这些突破性进展的支柱就是向量数据库。选择正确的向量数据库能是一项艰巨的任务。本文为你提供四个重要的开源向量数据库之间的全面比较,希望你能够选择出最符合自己特定需求的数据库。 什么是向量数据库?向…

jar依赖批量上传Nexus服务器(二)

jar依赖批量上传Nexus服务器&#xff08;二&#xff09; 批量上传脚本 #!/bin/bash # copy and run this script to the root of the repository directory containing files # this script attempts to exclude uploading itself explicitly so the script name is important…

结构型设计模式

享元模式 享元模式&#xff08;Flyweight Pattern&#xff09;是一种用于性能优化的设计模式&#xff0c;它通过共享尽可能多的相似对象来减少内存使用&#xff0c;尤其是在大量对象的情况下非常有效。这个模式是在对象数量多而对象状态大部分可共享的情况下实现的。 享元模式…

C++并发编程

基本介绍 线程 C98标准没有直接提供原生的多线程支持 在C98中&#xff0c;并没有像后来的C11标准中那样的<thread>库或其他直接的多线程工具 然而&#xff0c;这并不意味着在C98中无法实现多线程。开发者通常会使用平台特定的API&#xff08;如Windows的线程API或POSI…

多线程中frida定位关键线程的方法

pthread_create 会先得到一个pthread_internal_t结构体最后会调用__pthread_internal_add并将返回值赋给pthread_create的第一个参数thread_out__pthread_internal_add 会将传入的 pthread_internal_t 加入到g_thread_list全局线程列表中,然后将传入的pthread_internal_t返回,…

【Qt 专栏】QByteArray详解(QByteArray 与 QString的区别)

本文转自:《Qt编程指南》 作者:奇先生 Qt编程指南,Qt新手教程,Qt Programming Guide 本节学习 QByteArray 的两种用法,第一种作为字符串处理类,类似 QString ,但 QByteArray 内部字符编码不确定,所以要慎用。第二种是作为纯的字节数组,里面可以包含多个 \0 ,经…

前端调用DRI后端API出现跨域资源共享(CORS)问题解决办法

在进行后端API开发时,有时会遇到“跨域资源共享 (CORS) 请求...被阻止“的错误,如图1所示。本文讲解如何在使用DRF(Django REST Framework)的后端API开发项目中解决这个问题。目录1. 引言2. 跨源资源共享和实现方法3. 在Django项目中配置django-cors-headers库Reference 1.…

CPDA|0到1突破:构建高效数据分析体系的秘密武器

在现今信息爆炸的时代&#xff0c;数据已经渗透到了我们生活的方方面面&#xff0c;成为了决策、创新和竞争优势的关键。因此&#xff0c;构建一套高效的数据分析体系&#xff0c;对于企业和个人而言&#xff0c;都是至关重要的。那么&#xff0c;如何在众多的数据海洋中脱颖而…

【超简单实用】Zotero 7 内置pdf背景颜色更改插推荐以及安装

Zotero beta7 pdf 内置颜色更换 zetore 6 很多成熟的插件在 zetore 7都不能用了。版本回退看起来内置文章的注释会被消除&#xff0c;所以又不想退回去。前几个月在找beta 7 的pdf 护眼色的插件一直没有&#xff0c;今天终于发现了&#xff01;&#xff01;&#xff01;&#…

数据结构——单向循环链表

一、单向循环链表 (一)单向循环链表的构造 单向循环链表的尾结点的指针域中必须指向链表的首结点的地址) 1)构造单向循环链表的结点 //单向循环链表中的结点有效数据类型,用户可以根据需要进行修改 typedef int DataType_t;//构造单向循环链表的结点,链表中所有结点的数据类型…