当前位置:网站首页>【手撕AHB-APB Bridge】~ AMBA总线 之 AHB
【手撕AHB-APB Bridge】~ AMBA总线 之 AHB
2022-08-04 23:11:00 【IC二舅】
本章目录:
一. 引入
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
边栏推荐
猜你喜欢

基于深度学习的路面坑洞检测(详细教程)

【3D建模制作技巧分享】ZBrush如何重新拓扑

未上市就“一举成名”,空间媲美途昂,安全、舒适一个不落

good luck

年薪50W+的测试工程师都在用这个:Jmeter 脚本开发之——扩展函数

未来我们还需要浏览器吗?(feat. 枫言枫语)

Reconfigure the ffmpeg plugin in chrome

一点点读懂thermal(一)

【字符串函数内功修炼】strlen + strstr + strtok + strerror(三)

I was rejected by the leader for a salary increase, and my anger rose by 9.5K after switching jobs. This is my mental journey
随机推荐
Pytorch分布式训练/多卡/多GPU训练DDP的torch.distributed.launch和torchrun
直接插入排序
CS8416国产替代DP8416 数字音频接收器
未上市就“一举成名”,空间媲美途昂,安全、舒适一个不落
一点点读懂regulator(二)
【软件测试】常用ADB命令
The market value of 360 has evaporated by 390 billion in four years. Can government and enterprise security save lives?
各行各业都受到重创,游戏行业却如火如荼,如何加入游戏模型师职业
未来我们还需要浏览器吗?(feat. 枫言枫语)
SSM整合完整流程讲解
go语言的time包介绍
应用联合、体系化推进。集团型化工企业数字化转型路径
被领导拒绝涨薪申请,跳槽后怒涨9.5K,这是我的心路历程
postman接口测试
生产者消费者问题
容联云发送短信验证码
Pytest learning - fixtures
从“草原牛”到“数字牛”:蒙牛的数字化转型之道
Linux系统重启和停止Mysql服务教程
Shell expect real cases