AHB总线简介
AHB是新一代的AMBA总线,旨在解决高性能可综合设计的要求。它是一种高性能的系统总线,能够支持多总线master,提供高带宽操作。AMBA AHB实现高性能、高时钟频率系统所需的功能,包括:
- 突发传输
- 拆分transactions
- 当时钟周期mater切换
- 单时钟沿操作
- non-tristate实现
- 更宽的数据总线配置(64/128位)。
AHB总线和ASB/APB可以通过bridge有效连接,这使得现有的设计能够轻松集成;
AHB设计可能包含一个或者多个master总线,一个典型的系统只少会包含一个处理器和测试接口。然而,一个系统通常会包括一个DMA或者DSP作为一个总线master;
外部存储接口、APB桥和内部缓存是最常见的AHB slave。系统里任何其他外设都能够作为AHB slave。但是,小带宽外设通常挂在APB上面;
一个典型的AMBA AHB系统包括以下4个部分:
- AHB master:能够通过地址和控制信息发起读写操作;同时只能有一个master发起读写操作;
- AHB slave:响应有效地址空间内的master读写操作,包括成功、失败或者等待数据传输的信息;
- AHB arbiter:确保同一时间内只有一个master发起读写操作;仲裁算法是固定的,但是可以根据应用进行相应的选择。
- AHB decoder:用来解码地址和选择相应slave的响应信号。
AHB总线互联
AHB总线互联如上图所示:其中master发送包括haddr的控制信号,已经写操作的hwdata。ahb总线系统允许多个mater存在;arbiter会根据预设算法决定将mater控制信号发送给所有slave。slave会接收mater的控制信号,写操作时接收hwdata,读操作时返回hrdata。decoder根据master的控制信号haddr选择相应的slave的响应信号和读操作时的hrdata给master。
AHB总线操作
AHB总线传输钱,mater必须获取总线访问权限:master先向仲裁器(arbiter)发送一个申请(request),仲裁器返回授权(granted)信号,表示该mater可以使用总线;
获得授权的master发送地址和控制信号,以此开始一次AHB传输;控制信号包括已下信息:传输方向、宽度和突发类型。突发类型包括:incrementing突发和wrapping突发,他们的区别是在地址边界是否会回绕;
每次传输包括两个阶段:控制阶段和数据阶段(传输数据,会持续一个或几个周期);
控制阶段:传输地址和控制信息,只会持续一个周期;所以,在这个周期内必须能够采样到相应地址和控制信号。
数据阶段:传输数据,会持续一个或几个周期;slave可以通过拉低HREADY信号来获取额外的时间来提供数据或者才牙膏数据;
slave可以通过HRESP[1:0]来只是传输状态:
OKEY:表示传输处理正常,当HREADY拉高,OKEY表示传输成功完成;
ERROR:传输过程中有错误发生。创数不成功;
RETRY/SPLIT:表示传输不能够立即完成,mater需要重试传输;
在正常操作中,在仲裁器授予另一个主机访问总线的权限之前,允许主机完成特定突发中的所有传输。 但是,为了避免仲裁等待时间过长,仲裁器可能会中断突发,在这种情况下,主机必须重新仲裁总线以完成突发中的剩余传输。
无等待状态传输时序
有等待状态传输时序
OVERLAP多次传输时序
传输类型
HTRANS[1:0] | Type | 描述 |
00 | IDLE | 表示没有数据需要传输;当master获得granted后,没有数据需要传输;此时,slave需要回复OKAY,且忽略盖茨传输; |
01 | BUSY | 表示master有数据需要传输,但是传输不能够马上进行;master使用BUSY传输必须能够反映busrt传输得下一次传输;slave必须马航回复OKAY。 |
10 | NONSEQ | 表示burst传输得第一次传输,地址和控制信号与前一次传输没有关系。单次busrt传输类型也是NONSEQ。 |
11 | SEQ | 表示burst传输得第一次以后得传输,地址和控制信号与前一次相关。 |
突发类型
HBURST[3:0] | 类型 | 描述 |
000 | 单次突发 | 单独一次独立传输 |
001 | 递增突发 | 不定义长度、地址递增得突发传输 |
010 | 4次回绕突发 | 当地址到达4*size边界位置会回绕的4次突发 |
011 | 4次递增突发 | 当地址到达4*size边界位置不会回绕的4次突发 |
100 | 8次回绕突发 | 当地址到达8*size边界位置会回绕的8次突发 |
101 | 8次递增突发 | 当地址到达8*size边界位置不会回绕的8次突发 |
110 | 16次回绕突发 | 当地址到达16*size边界位置会回绕的16次突发 |
111 | 16次递增突发 | 当地址到达16*size边界位置不会回绕的16次突发 |
无论哪一种突发,haddr地址都不能跨过1kB地址边界。
地址译码
地址译码器回根据地址产生给每个slave HSELx信号。地址译码通常是利用组合逻辑完成,所以需要逻辑简单。
当HREADY为高是,slave必须能够采样地址、控制信号和HSELx,这表明当前传输完成。一些情况下,在HREADY为低的情况下,HSELx有可能为高;但是,在当前传输完成前,该slave必须将HREADY拉高。
对于每个slave最小的地址空间为1kB。在突发不超过1kB边界的情况下,地址不会超过地址解码边界。
当系统里面存在不使用的地址,需要存在一个默认的slave来回复master传输。当传输类型是NONSEQ或这SEQ,默认slave回复ERROR;当传输类型为IDLE或者BUSY,应该立即回复OKAY。
slave传输响应
AHB里面,一旦传输开始,master是不能够取消传输的;所以,无论何时slave接收到传输都要放回相应的响应,它回指示传输的状态。HREADY可以用来扩展传输;HRESP[1:0]被用来指示传输状态。
HREADTY为低时扩张传输;为高时表示传输已经完成;
HRESP[1:0] | 响应 | 描述 |
00 | OKAY | 当HREADY为高时,HRESP为OKAY,表示传输成功完成; |
01 | ERROR | 当HREADY为高时,HRESP为ERROR,表示传输过程中有错误; |
10 | RETRY | 当HREADY为高时,HRESP为RETRY/SPLIT,表示传输无法立即完成,但是先释放总线给其他master,稍后master重新申请总线以完成传输;RETRY时,只有更高优先级的master才能申请到总线; |
11 | SPLIT | 当HREADY为高时,HRESP为RETRY/SPLIT,表示传输无法立即完成,但是先释放总线给其他master,稍后重新获取总线以完成传输;当传输能够完成时,SLAVE代替master申请总线。SPLIT时,较低优先级的master也能申请到总线; |