1.AHB介绍和组成
AHB是针对高频率高频宽及快速系统模块设计的总线,构成包括主设备master、从设备slave、仲裁器arbiter、译码器decoder。每个AHB都需要一个仲裁器和一个译码器且只有一个。
2.AHB、AXI、APB对比
总线 | AHB | AXI | APB |
宽度 | 32,64,128,256 | 8,16,32,64,128,256,512,1024 | 8,16,32 |
地址宽度 | 32 | 32 | 32 |
特性 | 不支持读写并行 | 读写数据通道独立 | 不支持读写并行 |
体系结构 | 多主多从 | 多住多从 | 单主多从无仲裁 |
数据协议 | 支持流水 支持突发 支持乱序 不支持非对齐 | 支持流水 支持突发 支持乱序 支持非对齐 | 一次读写占用两个时钟 不支持突发 |
传输方式 | 不支持读写并行 | 支持读写并行 | 不支持读写并行 |
时序 | 同步 | 同步 | 同步 |
3.AHB接口
每个接口信号不过多介绍,可参考其他AHB文章,比如AMBA 系列之 AHB 协议_ahb resp-CSDN博客
接口图如下(重要):
arbiter和decoder:
特别注意,流水线(pipeline)操作时,如果由hready拉低导致了数据拍传输需要等待,相应的下一个传输的地址周期也将被拉长。
4.不同AHB协议版本
最早的AHB版本现在称为AHB2,后来又更新出了AHB-Lite和AHB5。AHB-Lite伴随AMBA3发布,相比于AHB2删掉了仲裁器,主要应用框架是单master多slave结构,属于简化版,类似于APB结构。AHB5 则将原来的hport位宽由[3:0]变成[6:0],变成扩展内存类型;同时增加了关于安全传输信号hnonsec,独立传输信号hexcl,并且取消了split传输对应的信号hsplit。
4.1AHB-Lite
AHB-Lite协议有以下特性:突发传输、单时钟沿操作、无三态、数据总线配置,最大为1024bit、基于地址对齐的突发传输、流水线传输。相比AHB2,增加了HREADYOUT信号,并且HRESP由四种删减成了OKAY、ERROR两种。
HREADYOUT是干嘛的呢?在实际传输中,AHB总线的slave一般有两个ready信号,一根输入,一根输出。有别于AHB2,此时的hready是slave的输入,表示上一笔数据的传输已经完成,可以准备下一笔传输;而hreadyout表示是当前这笔传输是否完成,向外输出用以拖延data phase周期。所以,Hready是slave用来判断master是否对其他slave操作已经完成。简单点理解,如果是单个master对多个slave,那么把slave的HREADYOUT通过一个MUX,产生HREADY相连,然后把HREADY接到master和各个slave上。
4.2AHB5
相比于AHB-lite协议,AHB5协议新增了以下特性:锁定传输、多从机选择、原子性访问、用户信号。新增信号展示如下:
参考AHB2、AHB-Lite、AHB5的区别_ahb-lite和ahb的差别-CSDN博客
5.Q&A
Q:为什么要burst传输,跟single有什么区别?
提高传输的效率。比如CPU要DRAM里面的数据,DRAM可以一次性读4个地址,放到buffer里面,然后再一个一个的发到总线上,这样不会占用DRAM。
Q:为什么出现ERROR时会有两个周期?
给master一定反应时间,比如说更改掉一个地址。
Q:WRAP的用处是什么?
用于CPU填充cacheline的时候,让地址可以从cacheline的起始地址继续传输。
标签:AHB,slave,读写,总线,支持,传输,master,AMBA From: https://blog.csdn.net/zangzangbupei/article/details/139844484