AMBA--AHB总线协议学习及Verilog实现与仿真(一)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1、AHB总线概述

AHBAdvanced High-performance Bus,即高级高性能总线。AHB总线是SOC芯片中应用最为广泛的片上总线。下图是一个典型的基于AMBA AHB总线的微控制器系统

        基于AMBA AHB的设计中可以包含一个或多个总线主机通常一个系统里至少包含一个处理器和一个测试接口DMA和DSP作为总线主机同样是比较常见的DMA既可以做为从机也可以做为主机当处理器向DMA发送指令时DMA做为从机当DMA与其他设备交换数据时DMA可以做为主机。

典型的AHB总线设计包括一下几个部分

1AHB主机主机可以通过提供地址和控制信息发起读写操作同一时刻总线上只允许一个主机占用总线

2AHB从机从机需在给定的地址空间范围内响应总线上的读或写操作从机通过信号将成功、失败、等待数据传输等信息返回至有效的主机。

3AHB仲裁器总线仲裁器确保同一时刻只有一个主机被允许发起传输。所有的AHB总线都必须包含一个仲裁器即使是在单主机总线系统中。

4AHB译码器译码器的作用是对传输中的地址信号进行译码并提供给从机一个选择信号。所有的AHB总线中都必须包含一个中央译码器。

2、总线互联

AMBA AHB总线协议被设计为一个使用中央多路选择器的互联方案如下表

        基于这种方案所有的主机在需要发起传输时都可以驱动地址和控制信号由仲裁器决定哪一个主机的地址和控制信号写传输时包含写数据信号连通到总线上的所有从机。同时总线需要一个中央译码器用于控制读数据和应答信号的多路数据选择器该多路数据选择器用于选择传输中涉及的从机的相关信号。

3、AHB信号

AHB信号以字母H作为前缀如下表所示

 AMBA AHB也需要一些信号用于支持多主机总线操作其中一些仲裁信号需要点对点连接

4、AMBA AHB操作概述

        在一次AHB传输开始之前主机必须被授予总线访问权。这个过程起始于主机向仲裁器发出一个总线请求由仲裁器决定该主机何时被授予总线使用权。被授权的主机通过驱动地址和控制信号来发起一次AHB传输这些信号提供了地址、传输方向、传输宽度等信息以及会表明当前传输是否为突发传输的一部分。AHB支持两种形式的突发传输

1增量突发在地址边界不进行回环

2回环突发在特定地址边界回环

写数据总线用于将数据从主机发送到从机读数据总线用于将数据从从机传输到主机。

每次数据传输包含

1一个地址和控制周期

2一个或多个数据周期

由于地址不支持扩展所以所有的从机必须在地址周期内采样地址而数据可以通过HREADY信号进行扩展延长当HREADY信号为低总线将插入等待状态以此提供从机额外的采样数据或者提供数据的时间

在传输中从机使用应答信号HRESP[1:0]来表示传输状态

1OKAYOKAY响应表示传输正常且当HREADY信号为高时表示传输成功

2ERRORERROR响应表示发生了传输错误并且传输失败

3RETRY and SPLITRETRY和SPLIT都表示当前传输未能即刻完成但是主机应继续尝试传输RETRY不会影响该请求主机的优先级但是SPLIT会影响该请求主机的优先级

一般而言仲裁器授权另一个主机前允许当前被授权主机完成突发传输。然而为了避免过多的仲裁延迟当前主机占用过多总线周期总线可以打断一个突发传输在这种情况下主机必须重新申请总线以完成后续的突发传输

5、基本传输

一个AHB传输包含两个部分

1地址相位仅包含一个时钟周期

2数据相位可以使用HREADY信号维持多个时钟周期

下图表示了一个无等待状态的简单传输

 无等待的简单传输时序图

        在无等待的简单传输中主机在HCLK的上升沿驱动地址和控制信号到总线上在下一个时钟上升沿时从机对地址和控制信号进行采样从机采样得到地址和控制信息后可以驱动应答信号给与主机适当的响应主机在第三个时钟的上升沿对应答信号进行采样。

        这个简单的例子演示了在不同的时钟周期地址和数据相位是怎样产生的。实际上当前传输的地址相位都对应于前一次传输的数据相位这种地址和数据交叠现象是总线能够进行流水线传输的基础这样不仅能够获得更高的传输性能也能为从机进行响应提供充足的时间。

        从机可以在数据相位中插入等待状态以此获得更多得时间来完成传输

 有等待状态的传输

注意

1在写传输中主机需要在整个扩展周期内保持写数据信号稳定

2在读传输中从机没必要提供有效数据直到传输结束时

当传输以这种方式做扩展时将对下一个传输的地址相位产生一个扩展的副作用如下图所示

 该图表示了三个不相关的地址A、B、C上的传输图中地址A和C的传输都没有等待状态地址B的传输通过HREADY信号的拉低插入了一个等待的数据相位这样导致了地址C传输的地址相位进行了扩展。

6、传输类型

AHB传输类型可以分为四种通过HTRANS[1:0]的取值来划分

 下图是一个不同传输类型的例子

从图中可以看出

第一个传输为以此突发传输的开始T1所以其传输类型为NONSEQ

主机不能立刻执行突发传输中的第二次传输所以使用了BUSY的传输类型(T2)来延迟下一次传输的开始注意此时地址已经时下次传输的地址控制信号和下次传输保持一致主机只插入了一个BUSY所以T3执行第二次传输

主机执行第三次传输T4由于从机将HREADY信号拉低插入了一个等待周期引起地址相位的扩展

T6周期完成第三次传输T7周期完成第四次传输图中T8边沿。

7、突发操作

AMBA AHB协议定义了4、8和16拍的突发未定义长度的突发传输以及单次传输协议支持增量和回环的突发方式。

增量突发方式访问连续地址空间每次传输的地址是前一次传输地址增加一个增量偏移

回环突发中如果传输的其实地址并未和突发中的字节总数对齐则突发传输地址将在达到边界处回环。例如一个4拍回环突发的字4字节访问将在16字节的边界处回环如果传输的起始地址为0x34那么突发中将包含4个地址0x34,0x38,0x3C,0x3016字节表示为0x100x3C的下一个地址应该为0x40但是0x40是边界所以0x3C后的下一个地址应该为0x40-0x10=0x30。

AMBA AHB 有8种突发操作使用信号HBRUST[2:0]表示

突发不能超过1K的地址边界所以主机尽量不要发起将要跨过地址边界的定长的增量突发

一次突发传输的数据总量等于节拍数乘以每拍包含的字节数。所以突发传输必须将地址边界和数据大小对齐例如字传输必须对齐到字地址边界即A[1:0]=00半字传输必须对齐到半字地址边界即A[0]=0。

参考

1.ARM IHI 0011A_AMBA Specification Rev2.0

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6