接口/总线/驱动
AHB概述
AHB(Advanced High-performance Bus),高性能总线的意思。该总线协议是ARM公司提出的AMBA总线结构之一,主要用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM、NAND FLASH、DMA、Bridge的连接。它支持以下特性:
AHB协议简介
AHB2 支持多个Bus Master,例如有三个Master,有四个slave,但是同时只有一个Mater可以拿到Bus的访问权。所以,总线的使用权就需要Master去申请,也就需要一个仲裁器(Arbiter)。同时也支持突发传输,分段传输,字节、半字节和字的传输,也可配置总线位宽。
AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。基础结构则由仲裁器(arbiter)、主模块到从模块的Mux、从模块到主模块的Mux、译码器(decoder)、虚拟从模块(dummy Slave)、虚拟主模块(dummy Master)所组成。其互连结构如下图所示。
AHB2协议要求Slave 的地址空间至少是以1KB为单位,这个要求在AHB-lite也存在。
AHB-lite是AMBA 3,在AHB2的基础上互连逻辑和slave设计上做了简化,为单Bus Master设计的(低端MCU的SoC系统使用的Bus master个数相对比较少)。
当然AHB3系统也是有办法实现支持多个Master的,多个Mater连接到一个MUX输入,slave连接该MUX输出,相当于一个简单的仲裁器。MUX 也可以只连接其中一个Master,这样其他Master就无法访问MUX连接的Slave,相当于该Slave就是连接到MUX上 的Master私有Slave,如下图:
AHB5是AMBA 5,在2015年发布,在AHB-lite的基础上增加功能,支持secure/non-sucure,配合v8系列架构的处理器,引入trustzone机制。
AHB信号描述
下表给出了AHB的基本信号:
AHB传输
AHB传输分为以下几个部分:
关于突发传输,理论上进行突发传输的主设备应当一直占据总线,但是为了缩短等待时间,AHB允许打断突发传输,并在一段时间后重启该突发传输。AHB的基本传输过程由两个部分组成:
无等待传输下,一个传输与三个时钟沿有关:
第一个时钟沿:第一个时钟沿后,主机将地址信息和控制信息发送到总线上
第二个时钟沿:第二个时钟沿上,从机采样主机的地址信息和控制信息。第二个时钟沿后,从机将响应信号和数据发送到总线上
第三个时钟沿:主机采样从机响应信号和数据,传输完成
有等待传输下,数据传输阶段可以扩展,即在HREADY拉高之前,数据传输阶段不结束。要求写数据在HREADY拉高前保持稳定,主机在HREADY拉高后采样读数据
AHB总线支持流水线传输,即将传输分为地址-数据两个部分流水进行,本次传输的地址必然在上一次地址之后,本次传输的数据必定紧跟在本次传输地址之后。因此,当上一次的数据传输阻塞导致传输周期增加时,下一传输的地址周期也会相应的变长:
传输类型
传输类型使用端口HTRANS标记,有以下取值:
例子如下图所示:
突发传输分为两类:
突发类型使用字段HBURST标记,含义如下表所示:
注意一次突发传输不能跨越1kB的地址区间,且传输的起始地址必须与数据类型对应,例如传输字数据的二进制起始地址必须满足后两位为00。
从机通过监控HTRANS发现突发传输的终止:
若突发传输是提前终止的,如总线控制权被剥夺,那么主机需要在可以进行传输时重建突发传输。例如一个4拍传输仅发送了一拍就终止,主机需要使用INCR类型的突发构建3拍传输以重建。
当传输位宽不同时,数据总线的使用情况如下所示(小端传输):
全部0条评论
快来发表一下你的评论吧 !