2.2-AHB(传输)
资料来源
(1) amba bus spec翻译.pdf
3.传输
3.3锁定传输
(1) 如果master需要锁存访问locked access,它需要是能MASTLOCK信号;该信号告诉所有slave当前传输序列transfer sequence是不可分割的,需要优先处理(多master场景下的应用??);
注1:图3-7展示了微处理器SWP指令下HMASTLOCK信号,先对地址A进行读操作,在下一个周期执行写操作,中间不能进行其他传输,只能该master进行传输;
注2:推荐一个锁定传输后,master插入一个空闲传输IDLE;
注3:master可以在锁定传输序列的开始,中间和结束时对空闲传输使能HMASTLOCK信号,也就是将空闲传输当作锁定传输的一部分(但是不建议这样使用,因为空闲说明总线能被其他master使用,但又是锁定传输的一部分,就是说还是当前master占用总线);
注4:master可以在多个空闲传输上使能HMASTLOCK,并在没有执行一个非空闲传输的情况下释放HMASTLOCK信号(不建议这样使用,影响总线仲裁);
3.4传输大小
(1) HSIZE指出一次数据传输的大小;
(2) 传输大小必须小于等于数据总线宽度;
(3) HSIZE和HBRUST决定回环突发传输wrapping burst的地址边界,见3.5章节;
(4) HSIZE信号的时序和地址总线一样,但它们需要在整个突发传输中保持不变;
3.5 突发传输burst操作
(1) 本协议定义了4拍,8拍,16拍, 未定义长度和单次传输(如上图所示),支持增量突发传输(INCR)和回环突发传输(WRAP);
(2) 增量突发传输(incrementing burst)访问连续的地址,每次传输的地址时上次传输地址加固定数值,地址可以理解为等差数列;
(3) 回环突发传输(wrapping burst):当跨越地址边界时,拍的数目(HBURST)乘以传输的大小(HSIZE)得到地址边界(address boundary);
注1:如果回环突发传输中,HBURST=3‘b010(4拍回环突发传输),HSIZE=3'b011(8 byte),地址边界为4*8=32, 起始地址为0x34,那么4拍回环传输的地址分别为0x34, 0x3c, 0x44,0x4c(0x34='d52,除以32无法整除,保持原样; 0x3c=’d60,除以32无法整除,保持原样; 0x44='d68,除以32无法整除,保持原样; 0x4c='d76,除以32无法整除,保持原样);
注2:如果回环突发传输中,HBURST=3‘b010(4拍回环突发传输),HSIZE=3'b011(8 byte),地址边界为4*8=32, 起始地址为0x50,那么4拍回环传输的地址分别为0x50, 0x58, 0x40,0x48(0x50='d80,除以32无法整除,保持原样; 0x58=’d88,除以32无法整除,保持原样; 0x60='d96,除以32可以整除,地址变为0x60-0x20,即0x40; 0x48='d72,除以32无法整除,保持原样);
(4) Burst大小决定拍的数目,而不是传输大小,传输大小由HSIZE决定; Burst里的所有传输,必须和传输大小HSIZE地址边界对齐(空闲传输的地址也必须对齐);
3.5.1 在busy传输后终止突发传输
(1) 突发传输开始后,master使用忙传输busy请求更多的时间来继续完成下一个突发传输;
(2) 在未定义长度突发传输中,master可能插入busy传输,然后决定没有数据需要传输; 这种情况下,可以接受master执行一个非连续或者空闲传输终止突发传输;
(3) 协议不允许master使用busy传输结束固定长度的突发传输,如INCR4,INCR8,INCR16和WRAP4, WRAP8, WRAP16;这些固定长度的突发传输类型必须用SEQ传输终止;
(4) master也不允许在single突发传输后,使用busy传输; single突发传输必须跟着空闲传输或者非连续传输;
3.5.2 提前终止突发
(1) 当slave错误回应或多层互连终止时,突发传输会终止;
(2) slave发出错误响应,master可以取消突发传输剩下的部分;但是,这不是严格的要求,也允许master继续传输剩下的; 如果master取消传输,它需要在两个错误响应周期中将HTRANS改为空闲(???);
(3) 当多master系统使用多层互连组件,master可以终止突发传输以便另一个master可以访问该slave;
3.5.3 突发传输案例
(1) 上图为4拍回环突发传输的写操作;因为HSIZE为word,即4个byte,所以地址加4;此外,从图中可看出,第一次传输中slave增加了等待状态;
(2) 上图为4拍的增量突发读传输;第一个传输中,slave加入了等待状态;
(3) 上图为8拍的回环突发读传输;
(4) 上图展示了8拍的增量写突发传输;
(5) 上图中,第一个burst由两个半字传输组成,每次地址加2; 第二个burst由三个字传输组成,每次地址加4;