本章目录:

  • 一. 引入
  • 二. 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. python使用matplotlib可视化、使用英文单次或者缩写指定使用的颜色、使用16进制的RGB字符串指定颜色、使用RGB或者RGBA数字元组指定颜色
  2. eclipse的怪问题。background indexer crash recovery .java.lang.OutOfMemoryError: Java heap space
  3. map()和zip()操作
  4. 基于电子邮件的InfoPath表单发布的注意点 [Infopath 2007]
  5. linux中的变量文件路径,Linux库文件和Shell可执行程序命令文件搜索路径变量的设置...
  6. Linux统一编程接口,restful接口设计规范总结
  7. python中int和float的区别_Python学习(四)数据结构 —— int float
  8. jdk8 lambda表达式
  9. M3 Build6801 Discovery support Virtual Hard Disks
  10. 如何快速将一个lista集合中的部分字段值组合成新的的listb部分*
  11. devgis分享 只分享有价值的东西!http://download.csdn.net/user/devgis
  12. PDCA循环的四个阶段八个步骤,你知道么?
  13. 浏览班级为计算机的同学记录的命令,2011年全国计算机等级考试二级VFP笔记(4)...
  14. 英语在计算机上的应用研究,计算机在英语教学中的应用
  15. CM108AH和DP108/DP108T的区别
  16. Centos7 网卡做 bond 以及 team
  17. 数据结构查找-7-7 词典 (15 分)
  18. 概率论与统计学的关系是什么?
  19. [vue]开源一个精致完整的Vue项目(豆瓣)
  20. 如何利用有限的数据发表更多的SCI论文?——利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物的影响

热门文章

  1. HAST多源融合精准定位,究竟有何神奇之处?
  2. Oracle集群—DG2—环境搭建
  3. 药房管理程序c语言,源程序(医院药房药品管理系统C++)
  4. VC++ 2010(学习版) 安装教程—图文详解
  5. 51单片机蓝牙温度检测风扇
  6. ajax接收后台传来的图片
  7. GD32E230 printf 之 J-LINK RTT Viewer
  8. 2021-2027全球与中国汽车视觉摄像头市场现状及未来发展趋势
  9. c语言dfp算法程序,拟牛顿法中的DFP算法和BFGS算法
  10. java:收银柜台收款程序