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

AMBA-AHB总线的基本操作和基本传输类型

总线操作概述        

        Master 必须获得授权接入总线,才可以进行 AHB 传输。这一过程开始于总线向 arbiter 发出请求信号,然后 arbiter 决定哪个 master 可以获得授权接入总线。
        获得授权的总线开始 AHB 传输,首先发出地址和控制信号。这些信号提供地址信息、传输方向和带宽以及 burst 类型。根据地址和控制信号确定 master 与哪个 slave 链接,进行 数据传输,数据传输通过数据总线完成。为避免出现三态总线, AHB 将读写总线分开,写数据总线用于从 master slave 的数据传输,读数据总线用于从 slave 到 master 的数据传输。 每比传输包括一个地址和控制周期,一个或多个数据周期。地址控制周期不能被扩展,因此slave 必须在一个周期采样地址信号。数据周期可以通过 HREADY 信号扩展 。但 HREADY为低时给传输加入一个等待状态以使 slave 获得额外的时间来提供或采样数据。另外 slave通过响应信号 HRESP 反映传输状态。
        一般情况下 master 完成的完整的 burst 传输, arbiter 才会授权给其他的 master 接入总线。
然而为避免过大的判决延迟, aibiter 也可能打断 burst 传输。在这种情况下 master 必须请求
再次接入总线以进行中断的 burst 的剩余部分的传输。

        一般来说在AMBA AHB总线协议中,​​请求总线使用权的实体是AHB总线上的主设备Master​​,而非其他系统总线(如APB或ASB)。

​(1)请求与仲裁机制​

  • ​请求主体​​:
    AHB总线上的主设备(如CPU、DMA控制器等)通过​​HBUSREQx信号​​向仲裁器(Arbiter)发起总线访问请求。例如,CPU需要读写内存时,会主动向仲裁器发送请求信号。

  • ​仲裁逻辑​​:
    仲裁器根据优先级算法(如固定优先级或循环优先级)决定授权哪个主设备使用总线,并通过​​HGRANTx信号​​通知主设备。AHB协议规定,同一时刻仅允许一个主设备占用总线。

​(2)总线层级与交互​

  • ​AHB总线作为单一系统总线​​:
    AHB总线本身是系统内的高性能主干总线,负责连接主设备、从设备及仲裁器。主设备直接通过AHB总线向仲裁器发送请求,无需经过其他总线(如APB或ASB)。

  • ​其他总线的角色​​:
    例如APB总线用于低速外设,需通过AHB-APB桥与AHB总线连接,但桥接器本身作为AHB从设备存在,不参与总线仲裁请求。

​一个典型场景示例​​:​​主设备竞争总线​
        当多个主设备(如CPU和DMA)同时请求总线时,仲裁器通过采样HBUSREQx信号,优先授权高优先级主设备。例如,DMA突发传输可能打断CPU的普通读写,但若CPU使用HLOCKx信号锁定总线,仲裁器会维持其控制权直至传输完成。

基本传输

         由上述可以知道一笔传输由如下两部分组成: 地址段,一个周期; 数据段,一个或多个周期,可以由 HREADY 发出请求延长一个周期。

简单例子        

下图显示了一笔没有等待状态的简单的传输:
                • HCLK 上升沿 master 驱动地址和控制信号
                • HCLK 下一周期上升沿 slave 采样地址和控制信息
                • 获得地址和控制信息后,slave 发出相应的放映信息,在第三个时钟上升沿被 master
                  采样,同时 slave 完成数据的读写操作。
        这个传输例子显示地址和数据传输发生在不同的周期。事实上,与这笔传输的 地址段传输的同时发生的是上一笔传输的数据段传输。这种地址与数据的交叠是总线流水线 的特征,允许高速传输,并为 slave 响应一笔传输留出充裕的时间。

​对AHB总线流水线特征的理解​

        在AHB总线协议中,流水线特征通过​​地址段与数据段的时间交叠​​实现高吞吐量和时序优化,其核心原理是​​隐藏延迟​​并​​利用总线空闲时段​​。以下从技术原理、典型场景和实例分析三个角度展开说明:​

(1)​​流水线化的时序交叠​
        AHB总线的传输分为两个阶段(地址段+数据段),每个阶段占用至少1个时钟周期。通过将​当前传输的数据段​与​下一传输的地址段​在时间上重叠,形成类似工厂装配线的流水线结构。例如:

  • ​周期1​​:Master发出地址A(地址段开始)。
  • ​周期2​​:Slave采样地址A,Master同时发出地址B(地址段B与数据段A交叠)。
  • ​周期3​​:Slave返回数据A,Master接收数据A并处理,同时Slave开始处理地址B的数据段。

​(2)隐藏延迟的关键作用​

  • ​Slave响应时间优化​​:Slave在地址段采样后,可利用后续周期处理数据操作(如内存读写),而无需等待当前传输完成。例如,若Slave需要2个周期准备数据,可通过延长数据段(HREADY拉低)隐藏延迟,而总线仍可并行处理下一地址段。
  • ​总线带宽利用率提升​​:地址与数据通道独立控制,避免总线空闲。例如,当Master连续发起写操作时,地址1的数据传输(周期3)与地址2的地址传输(周期2)并行进行。

(3)案例:AHB总线连续写操作​
假设Master需要向Slave连续写入两个32位数据(Data1和Data2),时序如下:

  1. ​周期1​​:
    • Master驱动地址Addr1和控制信号(写操作)。
  2. ​周期2​​:
    • Slave采样Addr1,启动内部写操作(如存储到缓冲区)。
    • ​同时​​,Master驱动下一地址Addr2(流水线交叠)。
  3. ​周期3​​:
    • Slave完成Data1写入,返回HREADY高电平。
    • Master在周期3的上升沿采样HREADY,确认Data1写入成功。
    • ​同时​​,Slave开始处理Addr2的Data2写入,而Master可能已发起第三个地址Addr3。

(4)​​效果​​:

  • ​传统非流水线总线​​:3周期完成1次写操作(地址1周期 + 数据1周期 + 响应1周期),带宽为1/3数据/周期。
  • ​流水线总线​​:3周期完成2次写操作(地址1+数据1与地址2+数据2交叠),带宽提升至2/3数据/周期。​

​(5)与非流水线总线的差异​

​特性​​流水线总线(AHB)​​非流水线总线​
​时序结构​地址与数据段交叠串行处理地址和数据段
​吞吐量​高(隐藏Slave延迟)低(需等待Slave响应)
​适用场景​高速、多主设备系统简单、低速设备

​   NOTE:扩展:CPU指令流水线​
        类似总线流水线,CPU指令流水线将指令执行分为取指、译码、执行等阶段。例如:

  • ​周期1​​:取指阶段获取指令A。
  • ​周期2​​:译码指令A,同时取指阶段获取指令B。
  • 通过阶段交叠,指令吞吐量显著提升。 
再来看一个例子,下面是一个带有等待状态的传输。写数据操作 master 必须在扩展的周期内保持总线上的数据稳定,而读数据操作则只需 slave 在传输完成前的一个周期提供有效的数据。
        扩展数据周期的一个负效应是必须延长相应的下一笔传输的地址周期。图五显示了三
笔不相关的传输。传输 A C 为零等待传输,传输 B 加入了一个等待周期,因此相应的传
C 的地址周期要进行扩展。

 

http://www.xdnf.cn/news/9490.html

相关文章:

  • B3694 数列离散化
  • python实战项目71:基于Python的US News世界大学排名数据爬取
  • 科技赋能音乐,指北科技新品闪耀广州国际乐器展
  • 【QueryServer】dbeaver使用phoenix连接Hbase(轻客户端方式)
  • 从0到1:某智慧园区数字孪生项目的技术选型复盘
  • Spring MVC极简入门:从@Reuest到Postman的全链路开发
  • 物流项目第九期(MongoDB的应用之作业范围)
  • neo4j删除所有数据
  • 常规算法学习
  • Flink 状态管理深度解析:类型与后端的全面探索
  • GNU AS汇编器的.align对齐
  • 多线程和并发之线程
  • jmeter对数据库进行单独压测
  • Spring Boot 整合 JdbcTemplate,JdbcTemplate 与 MyBatis 的区别
  • Spring AI 集成多个大语言模型
  • Android --- ObjectAnimator 和 TranslateAnimation有什么区别
  • 鸿蒙如何引入crypto-js
  • Vue3对接高德地图POI搜索
  • 容器化革命:告别传统Dockerfile,拥抱现代构建最佳实践
  • UDP数据报
  • 三十一、面向对象底层逻辑-SpringMVC九大组件之RequestToViewNameTranslator接口设计哲学
  • 随机游动算法解决kSAT问题
  • Prompt:开源库license的分类名称、说明、适应范围
  • 1.1 掌握HTML常用标签
  • 华为云Flexus+DeepSeek征文|华为云Flexus云服务器X实例上部署Dify:打造高效的开源大语言模型应用开发平台
  • 各类效果名称收集
  • JAVA网络编程——socket套接字的介绍下(详细)
  • day12 leetcode-hot100-19(矩阵2)
  • 2025年渗透测试面试题总结-匿名[校招]安全服务工程师(题目+回答)
  • RK3566 Android12 HG24C02MM/TR EEPROM适配