本章目录:

  • 一. 引入
  • 二. AHB总览
    • 1. AHB的组成部分
    • 2. AHB的信号
    • 3. AHB传输的两个阶段
    • 4. AHB的传输
      • 4.1 AHB的基本传输
      • 4.2 AHB的Pipeline传输
      • 4.3 AHB的Burst传输
    • 5. AHB的时序分析
  • 声明
  • 下期预告:

一. 引入

AHB(Advanced High performance Bus)总线在AMBA2中就已经定义,AHB总线一开始主要是作为系统高速总线使用,适用于高性能,低功耗的系统设计。目前因为AXI总线作为高速总线的优势更加明显,AHB会用在相对低速的系统设计中。基本排序就是APB适用于低速设计,AXI适用于高速设计,AHB则介于两者之间。

在AMBA协议中,AHB一开始主要面向系统级高带宽高性能的系统互联设计,支持多master,多slave的互联模式。但是随着系统的发展,AHB更多用于支持简单的数据传输,因此后来对AHB协议做了简化设计,定义了AHB-Lite协议,简化之后的协议主要用在单master数据访问中,不需要支持Split与Retry。

以AHB2APB为例,BRIDGE左侧的部分就是AHB总线,可以挂载很多,比如CPU,RAM、DMA以及高带宽的外部存储接口,如下图所示:

二. AHB总览

AHB支持多master,多slave的互联模式,如上图所示。Master就是就是挂载到AHB总线上的一些外设,Slave就是我们上一节讲到的APB。AHB中最重要的就是需要掌握以下几点:

a. AHB的组成部分?

b. AHB有哪些信号?

c. AHB传输的两个阶段是什么?

d. AHB的传输?

e. AHB的时序分析举例?


1. AHB的组成部分


AHB支持多master,多slave的互联模式,如上图所示,master和slave要想通信,那肯定需要有 先后顺序 和寻找地址 来完成,那这时候就有了arbiter 和 decoder。

因此,AHB由四个部分组成:Master、Slave、Arbiter和Decoder。

当我们只有一个Master的时候,此时我们还需要仲裁哪个Master的优先级要高吗?

答案是完全不需要,因此,引出了AHB-Lite,其可以说是一款轻量级的总线,结构图如下:

由上图可见,没有了Arbiter,也就是不用仲裁哪个master优先级高了,变成了一对多的模式。

2. AHB的信号

HCLK和HRESETn表示的是 Global 变量,不论在AHB还是APB中都有的,以下几个信号是AHB的信号:




3. AHB传输的两个阶段

4. AHB的传输

4.1 AHB的基本传输

基本传输又包括两种传输类型:一次无需等待状态的简单传输、需要两个等待周期的简单传输

  • 一次无需等待状态的简单传输

    我们上边说过,AHB传输有两个阶段:Address Phase 和 Data Phase。第一个阶段,Master把地址和控制信号扔到总线上;第二个阶段,Slave去拿做出响应。如上图所示,两个阶段之间是没有空闲的,也就是说没有等待的,再往底层说就是Slave给Master的反馈信号HREADY拉高了,就说,哥们,我准备好了,操作我吧!!!
  • 需要两个等待周期的简单传输


唉,这个为什么第二个阶段持续了这么久呢?原因就在于第一个阶段完事之后,我master已经把地址和控制信号扔到总线上了,而你slave不给我面子啊,你的反馈信号HREADY迟迟不肯拉高,那只能和你干耗着了(注意:这里持续最长周期不能超过12个,这是协议中规定的)!!!直到你HREADY拉高之后,完成一次操作。

这样的基本传输有一个很重要的问题,那就是一次传输至少需要2个时钟周期,甚至要三四个,这效率也太低了吧!!!怎么解决?这就引入了Pipeline传输!!!

4.2 AHB的Pipeline传输


如上图所示,在第一阶段传一个地址进去,第二个阶段传数据,在传数据的同时,你传地址不是空闲的嘛?那我指定不能让你闲着呀,你给我传下一个操作的地址,就这样,它很快就被榨干了,啊,不对,很快就把效率提升起来了,哈哈哈!!!

那么又有问题了,尽管提高了效率,但是你还是single传输啊,也就是说每次传输都有一个新的地址,此时就需要重新decode,decode需要时间等待处理,那如何减少等待时间呢?这就引入了burst传输。

4.3 AHB的Burst传输

Burst传输一次可以发送多个地址传输,那么又有问题了,你这个地址是怎么操作的呢?你怎么知道每次是增加1呢?还是增加4呢?此时就有了burst type,其中包括single transfer、INCR、Wrap 4、8、16.


到这里又有问题了,那就是如果在burst传输的时候,如果slave没有准备好,有hready=0,那如果你是master没有准备好,咋办?此时就引入了HTRANS了,是一个两位的信号,有四种结果:00IDLE、01BUSY、10NOSEQ、11SEQ。


5. AHB的时序分析


很简单,第一次传输HTRANS就是NONSEQ,其余的一般是SEQ,可以是BUSY、IDLE;还应当注意的是HREADY保持高才有效,低电平保持到直到拉高信号。

  • INCR8 BURST

  • WRAP8 BURST

  • INCR4 BURST

  • WRAP4 Burst

  • 未定义长度的BURST传输


好了,今天就写到这里吧,有问题可以评论区或者加群寻求他人帮助,拜拜!!!

声明

本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!

本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!

如果觉得对你有用的话,记得点赞+收藏+评论!!!

下期预告:

大家有想看的吗?可以告诉我。

没有的话,下期直接上代码吧!!!

全网各平台同名===> “IC二舅”

下一期如果有大家想看的或者哪块不懂想学习的,可以私聊或在群里提问都可以,“二舅”肯定是知无不言言无不尽!!!

“二舅”博客:

https://blog.csdn.net/qq_40549426?spm=1019.2139.3001.5343

“二舅”精神内耗学习群:878501676

【手撕AHB-APB Bridge】~ AMBA总线 之 AHB相关推荐

  1. AMBA总线协议AHB、APB

    一.什么是AMBA总线 AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus).ASB (Advanced ...

  2. AMBA总线概述——AHB、APB、AXI

    参考:https://blog.csdn.net/burningCky/article/details/109630018 https://blog.csdn.net/bleauchat/articl ...

  3. AMBA总线协议AHB、APB、AXI对比分析

    一.AMBA概述 AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构 AHB (Advanced High-performance B ...

  4. AMBA总线协议-ahb总线互联结构结合协议的理解

    总线互联结构(以4*4的总线互联结构为例,其中对于master来说优先级3>2>0>1 ,其中2是dummy master,1是defalult master):1.结构中最多可以有 ...

  5. 【手撕AHB-APB Bridge】~ AMBA总线 之 APB

    本章目录: 前言 一. 引入 二. APB总览 1. APB信号 2. APB的读写时序图 2.1 APB写操作的时序图 2.2 APB读操作的时序图 三. 地址映射关系 四.实现方式 五. 数据流向 ...

  6. AMBA总线—APB总线协议详解

    文章目录 一.APB总线介绍 1.1.什么是APB总线 1.2.典型的基于 AMBA 总线的系统架构 1.3.APB信号列表(重点) 二.APB总线传输(时序) 2.1.APB 状态机 2.2.写操作 ...

  7. AMBA总线协议(一)——一文看懂APB总线协议

    0.AMBA总线概括 AMBA AHB 总线协议介绍请点击以下链接: AMBA总线协议(二)一文看懂AMBA2 AHB2与AMBA3 AHB-Lite总线协议的区别 AMBA总线协议(三)--一文看懂 ...

  8. AMBA:AXI/AHB/APB学习笔记

    AMBA.AXI.AHB.APB学习笔记 AMBA总线:各模块之间的连接 AHB 特性: 组成部分: AXI APB AMBA总线:各模块之间的连接 advanced microcontroller ...

  9. 数字IC设计----AMBA总线协议(来自英文原版)

    第一章  AMBA总线介绍 1.AMBA总线协议总览 AMBA(Advanced Microcontroller Bus Architecture)总线协议是一种面向高性能嵌入式微控制器设计的片上联接 ...

最新文章

  1. 20_Android中apk安装器,通过WebView来load进一个页面,Android通知,程序退出自动杀死进程,通过输入包名的方式杀死进程
  2. MyBatis3.x和Spring3.x的整合
  3. perl 字符串删除末尾几个字符_perl中的字符串操作函数chomp与chop介绍
  4. 东大OJ-Prim算法
  5. Stata:何时使用线性概率模型而非Logit?
  6. Sql server 2008
  7. 汽车汽油电子喷射系统
  8. mysql error 1114_ERROR 1114 (HY000): The table 'ds_data' is full (innodb_data_file_path)
  9. Excel字符函数(3):字符查找函数Find、Search
  10. 32位和64位系统对于程序员的影响
  11. 山东专科学校排名计算机类,2017计算机专科学校排名一览表,2017计算机专科学校排名一览表...
  12. TCP/IP英文缩写汇总
  13. javaer的目标,是星辰大海!
  14. ue4 项目模板_Unreal 学习和使用UE4的第二步——创建项目和模板试玩 - 游戏编程 ️...
  15. 【雅思阅读】王希伟阅读P1(阅读判断题)
  16. 如何破译Charles
  17. 漏洞挖掘中的各种奇淫技巧(持续更新...)
  18. 设置SVN提交代码时,忽略无效的文件和文件夹
  19. 日常整理的一些网址,希望对大家有所帮助
  20. QPS、RPS、TPS、PV、UV、GMV、IP

热门文章

  1. 并发编程之Executor线程池原理与源码解读
  2. HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第2章HTML基础知识
  3. 计算机辅助机床,计算机辅助机床造型设计.pdf
  4. 流媒体网络协议 -- HLS
  5. TYPE-C接口投影机方案
  6. spring boot 实现 阿里云视频点播 功能 实现视频上传,视频删除,视频播放功能
  7. 桔子浏览器|1M安装包|hao123专属浏览器
  8. 语法错误 : 缺少 “ ; ” (在 “ ” 的前面)
  9. 新书推荐 |《5G NR标准:下一代无线通信技术》
  10. video + canvas = magic--html-canval前段渲染