【手撕AHB-APB Bridge】~ AMBA总线 之 AHB
本章目录:
- 一. 引入
- 二. 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相关推荐
- AMBA总线协议AHB、APB
一.什么是AMBA总线 AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus).ASB (Advanced ...
- AMBA总线概述——AHB、APB、AXI
参考:https://blog.csdn.net/burningCky/article/details/109630018 https://blog.csdn.net/bleauchat/articl ...
- AMBA总线协议AHB、APB、AXI对比分析
一.AMBA概述 AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构 AHB (Advanced High-performance B ...
- AMBA总线协议-ahb总线互联结构结合协议的理解
总线互联结构(以4*4的总线互联结构为例,其中对于master来说优先级3>2>0>1 ,其中2是dummy master,1是defalult master):1.结构中最多可以有 ...
- 【手撕AHB-APB Bridge】~ AMBA总线 之 APB
本章目录: 前言 一. 引入 二. APB总览 1. APB信号 2. APB的读写时序图 2.1 APB写操作的时序图 2.2 APB读操作的时序图 三. 地址映射关系 四.实现方式 五. 数据流向 ...
- AMBA总线—APB总线协议详解
文章目录 一.APB总线介绍 1.1.什么是APB总线 1.2.典型的基于 AMBA 总线的系统架构 1.3.APB信号列表(重点) 二.APB总线传输(时序) 2.1.APB 状态机 2.2.写操作 ...
- AMBA总线协议(一)——一文看懂APB总线协议
0.AMBA总线概括 AMBA AHB 总线协议介绍请点击以下链接: AMBA总线协议(二)一文看懂AMBA2 AHB2与AMBA3 AHB-Lite总线协议的区别 AMBA总线协议(三)--一文看懂 ...
- AMBA:AXI/AHB/APB学习笔记
AMBA.AXI.AHB.APB学习笔记 AMBA总线:各模块之间的连接 AHB 特性: 组成部分: AXI APB AMBA总线:各模块之间的连接 advanced microcontroller ...
- 数字IC设计----AMBA总线协议(来自英文原版)
第一章 AMBA总线介绍 1.AMBA总线协议总览 AMBA(Advanced Microcontroller Bus Architecture)总线协议是一种面向高性能嵌入式微控制器设计的片上联接 ...
最新文章
- 20_Android中apk安装器,通过WebView来load进一个页面,Android通知,程序退出自动杀死进程,通过输入包名的方式杀死进程
- MyBatis3.x和Spring3.x的整合
- perl 字符串删除末尾几个字符_perl中的字符串操作函数chomp与chop介绍
- 东大OJ-Prim算法
- Stata:何时使用线性概率模型而非Logit?
- Sql server 2008
- 汽车汽油电子喷射系统
- mysql error 1114_ERROR 1114 (HY000): The table 'ds_data' is full (innodb_data_file_path)
- Excel字符函数(3):字符查找函数Find、Search
- 32位和64位系统对于程序员的影响
- 山东专科学校排名计算机类,2017计算机专科学校排名一览表,2017计算机专科学校排名一览表...
- TCP/IP英文缩写汇总
- javaer的目标,是星辰大海!
- ue4 项目模板_Unreal 学习和使用UE4的第二步——创建项目和模板试玩 - 游戏编程 ️...
- 【雅思阅读】王希伟阅读P1(阅读判断题)
- 如何破译Charles
- 漏洞挖掘中的各种奇淫技巧(持续更新...)
- 设置SVN提交代码时,忽略无效的文件和文件夹
- 日常整理的一些网址,希望对大家有所帮助
- QPS、RPS、TPS、PV、UV、GMV、IP
热门文章
- 并发编程之Executor线程池原理与源码解读
- HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第2章HTML基础知识
- 计算机辅助机床,计算机辅助机床造型设计.pdf
- 流媒体网络协议 -- HLS
- TYPE-C接口投影机方案
- spring boot 实现 阿里云视频点播 功能 实现视频上传,视频删除,视频播放功能
- 桔子浏览器|1M安装包|hao123专属浏览器
- 语法错误 : 缺少 “ ; ” (在 “ ” 的前面)
- 新书推荐 |《5G NR标准:下一代无线通信技术》
- video + canvas = magic--html-canval前段渲染