当前位置: 首页 > article >正文

【ARM AMBA AHB 入门 3 -- AHB 总线介绍】


请阅读【ARM AMBA 总线 文章专栏导读】

文章目录

    • AHB Bus 简介
    • AHB Bus 构成
    • AHB BUS 工作机制
      • AHB 传输阶段
    • AHB Interfaces
      • AHB仲裁信号
    • AHB 数据访问
      • 零等待传输(no waitstatetransfer)
      • 等待传输(transfers with wait states)
      • 多重传送(multipletransfer)--Pipeline
    • AHB 控制信号

AHB Bus 简介

AHB 总线的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线Master、各种拥有AHB接口的控制器等等连接起来构成一个独立的完整的SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统

AHB 可以成为一个完整独立的SOC芯片的骨架。
在这里插入图片描述

AHB Bus 构成

完整的 AHB 总线由四个部分组成:

  • AHB 主设备 Master: 发起一次读/写操作;某一时刻只允许一个主设备使用总线
  • AHB 从设备 Slave: 响应一次读/写操作;通过地址映射来选择使用哪一个从设备;
  • AHB 仲裁器 Arbiter: 允许某一个主设备控制总线;
  • AHB 译码器 Decoder: 通过地址译码来决定选择哪一个从设备。

    在这里插入图片描述

AHB BUS 可以分为三组

  • 写数据总线(HWDATA)
  • 读数据总线(HRDATA)
  • 地址控制总线(HADDR)

AHB BUS 工作机制

有需要占用总线的 Master向 Arbiter 发出请求, Arbiter授权给指定的Master。任一时间周期只有一个 Master 可以接入总线,对其指定的 Slave 进行读写操作。

获得总线授权的 Master开始 AHB 传输, 首先发出地址和控制信号, 提供地址信息、传输方向、带宽和burst类型。总线统一规划 Slave 的地址, 译码器根据地址和控制信号确定哪个 Slave 与Master进行数据通信。数据传输通过数据总线完成。

为避免出现三态总线 AHB 将读写总线分开, 写数据总线用于从 Master 到 Slave 的数据传输, 读数据总线用于从 Slave 到 Master 的数据传输。

每笔传输包括一个地址和控制周期, 一个或多个数据周期。地址和控制周期不能被扩展, 因此 Slave 必须在一个周期内采样地址信号

数据周期可以通过 HREADY 信号扩展, 但 HREADY 为低时给传输加入一个等待状态以使 Slave获得额外的时间来提供或采样数据, 另外 Slave 通过响应信号 HRESP 反映传输状态。

AHB支 持批量式数据传送, 可以自动递增地址。递增地址方式分为: 持续递增与回绕传送。

一般情况下 Master 完成完整的 burst 传输, Arbiter 才会授权给其他的 Master 接入总线, 然而为避免过大的判决延迟, Arbiter也可能打断断burst传输。在这种情况下Master 必须再次接入总线以进行中断的 burst 剩余部分的传输。

AHB 传输阶段

AHB的传送模式包含二个阶段。第一阶段为地址的传递, 另一阶段为数据的传递。

  • 地址传输阶段: (address phase):一个时钟周期
  • 数据传输阶段: (data phase):一个或多个时钟周期(以HREADY信号控制周期数目)

AHB Interfaces

在这里插入图片描述
在实际的传输过程中,一般作为 AHB 总线的 Slave 设备都有 2 根 hrready信号, 一个为 input 类型(hready_in), 另一个为 outpute 型 (hready_out)。在 AHB 总线协议中,如果 Master 设备发起读写操作的时候,Slave设备不能及时响应的话,由Slave设备把 hready_out 信号拉低来拖延 Data Phaze 周期。

但是在Pipeline操作的时候,本次操作 data phaze是下一次操作的 address phaze, 所以作为 Slave设备在响应Master设备的时候, 必须先判断一下Master设备对上一次其它Slave设备的操作是否已经完成。如果完成,则响应主设备的操作;如果没有有完成,则等待完成, 然后才响应操作。hready_in 就是 Slave 设备用来判断Masteer设备是否对其它Slave设备的操作已经完成的信号。

AHB仲裁信号

在这里插入图片描述

AHB 数据访问

零等待传输(no waitstatetransfer)

在这里插入图片描述

  • 第一个周期的上升沿, master 驱动地址和控制信号;
  • 第二个周期的上升沿, slave 采样地址和控制信号,并将 HREADY 拉高;
    • 如果是写操作, master 会在第二个周期的上升沿传输要写入的数据;
    • 如果是读操作, slave 会在 HREADY 信号拉高后将读取的数据写写入总线;
  • 第三个周期的上升沿,
    • 如果是写操作, master获取 HREADY 高信号,表明slave已成功接收数据,操作成功;
    • 如果是读操作, master 获取 HREADY 高信号,表明此时的读数据有效并且接收下来,操作成功。
      需要注意,HREADY信号在数据有效期间必须为高, 并且延续到第三个周期的上升沿之后, 确保 master 的正确采样。

等待传输(transfers with wait states)

传送完成时间因等待而延迟,这是由于寻址到较慢的S单元所造/成。当HREADY被S拉低时,会发生等待状态。需要延迟传送的周期时, 就会在数据期间将HREADY拉低,此时地址与数据都必须延伸。有等待状态的AHB传递,下图中可看到在数据草式时, 时序必须多花二个周期的延迟等待时间(HREADY为0), S才能正常的接收收到M写的数据或准备好M欲读取的数据。
在这里插入图片描述
slave 可以及时处理 master 请求,但也可能存在 slave太慢不能立即处理的情况。这时需要让master 稍微等一等, 需要 slave 插入一些等待的状态。如上图所示, HREADY 信号在第二和第三周期拉低,意在告诉 master, slave 不能立即处理,需要 master等待2个周期。在这
里需要注意2点:

  • 如果是写操作, master需要在等待期间保持写数据不变, 直到本次传输完成;
  • 如果是读操作, slave不需要一开始就给出数据,仅当HREADY拉高后才给出有效数据。

多重传送(multipletransfer)–Pipeline

一次完整的数据传送会有多个传送周期, 如下图下一笔地址可与上一笔数据同时在总线上, 时序图的说明如下:
在这里插入图片描述
下图是对上图的补充:
在这里插入图片描述
扩展数据周期的一个负效应是必需延长相应的下一笔传输的地址周期。A和C为零等待传输,B加入了一个等待周期,因此相应的C地址期要进行扩展。

  • 第一个周期,master发起一个操作A,并驱动地址和控制信号;
  • 第二个周期,slave收到了来自总线的请求,将HREADY信号拉高;
  • 第二个周期上升沿后,master发现有操作B需要执行,并且检查到上一周期的HREADY为高,则发起第二个操作B;
  • 第三个周期,master获取HREADY信号为高,表示操作A已经经完成
  • 第三个周期上升沿后,master发现有操作C需要执行,并且检查到上一周期的HREADY为高,则发起第三个操作C;
  • 第三个周期上升沿后,slave由于繁忙插入了一个等待状态,将HREADY拉低;
  • 第四个周期,master获取HREADY信号为低,知道slave希望等待于是master保持和上一拍一样的信号;
  • 第四个周期,slave处理完了事务,将HREADY信号拉高,表示可以继续处理;
  • 第五个周期,master获取HREADY信号为高,知道slave已经可以处理B操作;
  • 第五个周期上升沿后,B操作完成;
  • 第六个周期上升沿后,C操作完成。

注意:
HREADY在一定程度上表示了slave的pipeline能力,在AHB中是2个pipe,也就是总线上最多存在2个未处理完的transfer。只有当总线上
未完成的transfer少于2个时,master才能发起操作。

AHB 控制信号

见下篇文章:【ARM AMBA AHB 入门 3.1 – AHB控制信号】

推荐阅读
https://blog.csdn.net/weixin_46022434/article/details/104987905

相关文章:

【ARM AMBA AHB 入门 3 -- AHB 总线介绍】

请阅读【ARM AMBA 总线 文章专栏导读】 文章目录 AHB Bus 简介AHB Bus 构成AHB BUS 工作机制AHB 传输阶段 AHB InterfacesAHB仲裁信号 AHB 数据访问零等待传输(no waitstatetransfer)等待传输(transfers with wait states)多重传送(multipletransfer)--Pipeline AHB 控制信号 A…...

多模态大模型中的视觉分词器(Tokenizer)前沿研究介绍

文章目录 引言MAETok背景方法介绍高斯混合模型(GMM)分析模型架构 实验分析总结 FlexTok背景方法介绍模型架构 实验分析总结 Emu3背景方法介绍模型架构训练细节 实验分析总结 InternVL2.5背景方法介绍模型架构 实验分析总结 LLAVA-MINI背景方法介绍出发点…...

sqli-labs靶场第二关——数字型

一:查找注入类型: 输入 ?id1--与第一关的差别:报错; 说明不是字符型 渐进测试:?id1--,结果正常,说明是数字型 二:判断列数和回显位 ?id1 order by 3-- 正常, 说明有三列&am…...

使用FastAPI微服务在AWS EKS上实现AI会话历史的管理

架构概述 本文介绍如何使用FastAPI构建微服务架构,在AWS EKS上部署两个微服务: 服务A:接收用户提示服务B:处理对话逻辑,与Redis缓存和MongoDB数据库交互 该架构利用AWS ElastiCache(Redis)实现快速响应,…...

[模型选择与调优]机器学习-part4

七 模型选择与调优 1 交叉验证 (1) 保留交叉验证HoldOut HoldOut Cross-validation(Train-Test Split) 在这种交叉验证技术中,整个数据集被随机地划分为训练集和验证集。根据经验法则,整个数据集的近70%被用作训练集&#xff…...

【计算机网络-数据链路层】以太网、MAC地址、MTU与ARP协议

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 上篇文章:传输层-TCP协议TCP核心机制与可靠性保障 下篇文章: 网络…...

学习适应对智能软件对对象的属性进行表征、计算的影响

下面的链接是我新发表的文章。这篇文章是关于智能软件对对象进行标志、表征的问题,这是所有智能实体都无法回避的基本问题。 我最近写了一篇关于奖惩系统的文章。并开始写智能是如何在基础编程的基础上涌现出来的文章。 https://www.oalib.com/articles/6857382 …...

vue 组件函数式调用实战:以身份验证弹窗为例

通常我们在 Vue 中使用组件&#xff0c;是像这样在模板中写标签&#xff1a; <MyComponent :prop"value" event"handleEvent" />而函数式调用&#xff0c;则是让我们像调用一个普通 JavaScript 函数一样来使用这个组件&#xff0c;例如&#xff1a;…...

多线程面试题总结

基础概念 进程与线程的区别 进程:操作系统资源分配的基本单位,有独立内存空间线程:CPU调度的基本单位,共享进程资源对比: 创建开销:进程 > 线程通信方式:进程(IPC)、线程(共享内存)安全性:进程更安全(隔离),线程需要同步线程的生命周期与状态转换 NEW → RUNNABLE …...

Kafka 与 RabbitMQ、RocketMQ 有何不同?

一、不同的诞生背景&#xff0c;塑造了不同的“性格” 名称 背景与目标 产品定位 Kafka 为了解决 LinkedIn 的日志收集瓶颈&#xff0c;强调吞吐与持久化 更像一个“可持久化的分布式日志系统” RabbitMQ 出自金融通信协议 AMQP 的实现&#xff0c;强调协议标准与广泛适…...

【比赛真题解析】篮球迷

本次给大家分享一道比赛的题目:篮球迷。 洛谷链接:U561543 篮球迷 题目如下: 【题目描述】 众所周知,jimmy是个篮球迷。众所周知,Jimmy非常爱看NBA。 众所周知,Jimmy对NBA冠军球队的获奖年份和队名了如指掌。 所以,Jimmy要告诉你n个冠军球队的名字和获奖年份,并要求你…...

【MATLAB源码-第277期】基于matlab的AF中继系统仿真,AF和直传误码率对比、不同中继位置误码率对比、信道容量、中继功率分配以及终端概率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 在AF&#xff08;放大转发&#xff09;中继通信系统中&#xff0c;信号的传输质量和效率受到多个因素的影响&#xff0c;理解这些因素对于系统的优化至关重要。AF中继通信的基本架构由发射端、中继节点和接收端组成。发射端负…...

webRtc之指定摄像头设备绿屏问题

摘要&#xff1a;最近发现&#xff0c;在使用navigator.mediaDevices.getUserMedia({ deviceId: ‘xxx’}),指定设备的时候&#xff0c;video播放总是绿屏&#xff0c;发现关闭浏览器硬件加速不会出现&#xff0c;但显然这不是一个最好的方案; 播放后张这样 修复后 上代码 指定…...

2023年03月青少年软件编程(图形化)等级考试四级编程题

求和 1.准备工作 &#xff08;1&#xff09;保留舞台中的小猫角色和白色背景。 2.功能实现 &#xff08;1&#xff09;计算1&#xff5e;100中&#xff0c;可以被3整除的数之和&#xff1b; &#xff08;2&#xff09;说出被3整除的数之和。 标准答案&#xff1a; 参考程序&…...

ensp的华为小实验

1.先进行子网划分 2.进行接口的IP地址配置和ospf的简易配置&#xff0c;先做到全网小通 3.进行ospf优化 对区域所有区域域间路由器进行一个汇总 对区域1进行优化 对区域2.3进行nssa设置 4.对ISP的路由进行协议配置 最后ping通5.5.5.5...

ragflow报错:KeyError: ‘\n “序号“‘

环境&#xff1a; ragflowv 0.17.2 问题描述&#xff1a; ragflow报错&#xff1a;KeyError: ‘\n “序号”’ **1. 推荐表&#xff08;输出json格式&#xff09;** [{"},{},{"},{} ]raceback (most recent call last): May 08 20:06:09 VM-0-2-ubuntu ragflow-s…...

Java大数据可视化在城市空气质量监测与污染溯源中的应用:GIS与实时数据流的技术融合

随着城市化进程加速&#xff0c;空气质量监测与污染溯源成为智慧城市建设的核心议题。传统监测手段受限于数据离散性、分析滞后性及可视化能力不足&#xff0c;难以支撑实时决策。2025年4月27日发布的《Java大数据可视化在城市空气质量监测与污染溯源中的应用》一文&#xff0c…...

FHE与后量子密码学

1. 引言 近年来&#xff0c;关于 后量子密码学&#xff08;PQC, Post-Quantum Cryptography&#xff09; 的讨论愈发热烈。这是因为安全专家担心&#xff0c;一旦有人成功研发出量子计算机&#xff0c;会发生什么可怕的事情。由于 Shor 算法的存在&#xff0c;量子计算机将能够…...

Flask 调试的时候进入main函数两次

在 Flask 开启 Debug 模式时&#xff0c;程序会因为自动重载&#xff08;reloader&#xff09;的机制而启动两个进程&#xff0c;导致if __name__ __main__底层的程序代码被执行两次。以下说明其原理与常见解法。 Flask Debug 模式下自动重载机制 Flask 使用的底层服务器 Wer…...

cv_area_center()

主题 用opencv实现了halcon中area_center算子的功能&#xff0c; 返回region的面积&#xff0c;中心的行坐标和中心的列坐标 代码很简单 def cv_area_center(region):area[]row []col []for re in region:retval cv2.moments(re)area.append(retval[m00])row.append(int(r…...

CSS: 选择器与三大特性

标签选择器 标签选择器就是选择一些HTML的不同标签&#xff0c;由于它们的标签需求不同&#xff0c;所以CSS需要设置标签去选择它们&#xff0c;为满足它们的需求给予对应的属性 基础选择器 标签选择器 <!DOCTYPE html> <head><title>HOME</title>…...

2505d,d的借用检查器

void func(scope ref int*) {}unique(int*) a ...; assert(a !is null);unique(int*) b a; assert(a is null); assert(b !is null);func(b); // ok用live作为检查器,不必有断定了. int* a ...; int* b a; // 所有权转至b *a 3; // 不能再用a.编译器保证约束指针. live…...

力扣-2.两数相加

题目描述 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都…...

M0基础篇之ADC

本节课使用到的例程 一、Single模式例程基本配置的解释 在例程中我们只使用到了PA25这一个通道&#xff0c;因此我们使用的是Single这个模式&#xff0c;也就是我们在配置模式的时候使用的是单一转换。 进行多个通道的测量我们可以使用Sequence这个模式。 二、Single模式例程基…...

Nginx安全防护与HTTPS部署

一、安全防护与HTTPS概念 一、安全防护与HTTPS概念 为什么要隐藏版本号&#xff1f; 当访问网站时&#xff0c;能从响应标头查看到server的信息&#xff0c;这里面就包含了是什么web应用及其版本为你提供的服务。如果不隐藏server的版本&#xff0c;会导致别有用心的人知晓…...

C语言_程序的段

在 C 语言程序中,内存通常被分为多个逻辑段,每个段存储不同类型的数据。理解这些段的结构和功能,有助于你更高效地编写、调试和优化程序。以下是 C 语言程序中主要的内存段及其特点: 1. 代码段(Text Segment) 存储内容:编译后的机器指令(程序代码)。特性: 只读:防止…...

OSPF综合实验实验报告

OSPF综合实验实验报告 一、实验拓扑 二、实验要求 1.R5为ISP&#xff0c;其上只能配置IP地址&#xff1b;R4作为企业边界路由器&#xff0c; 出口公网地址需要通过PPP协议获取&#xff0c;并进行chap认证 2&#xff0c;整个OSPF环境IP基于172.16.0.0/16划分&#xff1b; 3&…...

vue3+ant design vue + Sortable实现多级表格列拖动

1、最近遇到个需求&#xff0c;需使用vue3ant design vue Sortable实现多级表格的表头允许用户拖拽移动。即当用户拖拽一级表头时&#xff0c;其对应的子级表头及数据应同步移动&#xff0c;并且只允许一级非固定表头允许拖拽。 2、代码 <a-table:data-source"rowDat…...

基于开源链动2+1模式AI智能名片S2B2C商城小程序的分销价格管控机制研究

摘要&#xff1a;本文聚焦开源链动21模式AI智能名片S2B2C商城小程序在分销体系中的价格管控机制&#xff0c;通过解析其技术架构与商业模式&#xff0c;揭示平台如何通过"去中心化裂变中心化管控"双轨机制实现价格统一。研究显示&#xff0c;该模式通过区块链存证技术…...

阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化

作者&#xff1a;裘文成&#xff08;翊韬&#xff09; 摘要 随着企业全球化业务的扩展&#xff0c;如何高效、经济且可靠地将分布在海外各地的应用与基础设施日志统一采集至阿里云日志服务 (SLS) 进行分析与监控&#xff0c;已成为关键挑战。 本文聚焦于阿里云高性能日志采集…...