突发操作
在本协议中定义了4拍、8拍和16拍的突发,以及未定义长度的突发和单次传输。它支持增量和包装突发:
- 增量突发访问连续位置,每个传输的地址是前一个地址的增量。
- 包装突发在跨越地址边界时会包装。地址边界的计算方法是突发中拍数与传输大小的乘积。拍数由HBURST控制,传输大小由HSIZE控制。
例如,一个四拍的包装突发对字(4字节)访问在16字节边界处包装。因此,如果突发的起始地址是0x34,那么它由四个传输组成,地址分别是0x34、0x38、0x3C和0x30。
HBURST[2:0]控制突发类型。表3-3列出了可能的突发类型。
HBURST[2:0] | 类型 | 描述 |
---|---|---|
000 | SINGLE | 单次传输突发 |
001 | INCR | 未定义长度的增量突发 |
010 | WRAP4 | 4拍包装突发 |
011 | INCR4 | 4拍增量突发 |
100 | WRAPS | 8拍包装突发 |
101 | INCRS | 8拍增量突发 |
110 | WRAP16 | 16拍包装突发 |
111 | INCR16 | 16拍增量突发 |
master不应尝试开始一个跨越1KB地址边界的增量突发。
master可以使用以下方式执行单次传输:
- 单次传输突发。
- 长度为1的未定义长度突发。
注意 突发大小表示突发中的拍数,而不是传输的字节数。通过将拍数乘以每个拍中的数据量(由HSIZE[2:0]指示)来计算突发中传输的总数据量。
所有突发传输必须对齐到等于传输大小的地址边界。例如,字传输必须对齐到字地址边界(HADDR[1:0] = 00),半字传输必须对齐到半字地址边界(HADDR[0] = 0)。IDLE传输的地址也必须对齐,否则在仿真期间,总线监视器可能会报告错误的警告。
1. 在busy传输后终止突发
一旦突发开始,如果master在继续下一个传输之前需要更多时间,它将使用busy传输。
在未定义长度的增量突发(INCR)期间,master可能会插入busy传输,然后决定不再需要更多的数据传输。在这种情况下,master可以执行一个非顺序(NONSEQ)或空闲(IDLE)传输,从而有效地终止未定义长度的突发。
协议不允许master使用busy传输来结束固定长度的突发,对于以下类型的固定长度突发:
- 增量突发:INCR4、INCR8 和 INCR16。
- 包装突发:WRAP4、WRAP8 和 WRAP16。
这些固定长度的突发类型必须以顺序(SEQ)传输结束。
master在单次传输突发(SINGLE burst)后不允许立即执行busy传输。单次传输突发必须跟随一个空闲(IDLE)传输或非顺序(NONSEQ)传输。
2. 提前终止突发
突发可以通过以下任一方式终止:
- slave错误响应(Slave error response)。
- 多层互连终止(Multi-layer interconnect elimination)。
2.1 slave错误响应(Slave error response)。
如果slave提供错误响应,master可以取消突发中剩余的传输。然而,这不是一个严格的要求,master也可以继续完成突发中的剩余传输。
如果master取消突发中剩余的传输,那么它必须在两周期的错误响应期间改变HTRANS以指示空闲(IDLE)。
如果master没有完成那个突发,那么在下次访问该slave时,没有要求它重新构建突发。例如,如果一个master只完成了一个8拍突发中的3拍,那么在下次访问该slave时,它不必完成剩余的5个传输。
2.2 多层互连终止
尽管master不允许提前终止突发请求,但slave必须设计得能够在突发未完成时正确工作。
当在多master系统中使用多层互连组件时,它可以终止一个突发,以便另一个master可以访问slave。slave必须从原始master终止突发,然后,如果发生这种情况,适当地响应新master。
2.3 burst examples
2.3.1 四拍包装突发,WRAP4
图3-8 展示了使用四拍包装突发进行写传输的过程,为第一个传输添加了等待状态。
因为这是一个四拍字传输的包装突发,地址在16字节边界处包装,传输到地址0x3C后,紧接着是传输到地址0x30。
2.3.2 四拍增量突发,INCR4
图3-9 展示了使用四拍增量突发进行读取传输的过程,为第一个传输添加了等待状态。 在这种情况下,地址在16字节边界处不会包装,地址0x3C之后的传输是到地址0x40。
2.3.3 八拍包装突发,WRAP8
图3-10 展示了使用八拍包装突发进行读取传输的过程。
因为这是一个八拍字传输的包装突发,地址在32字节边界处包装,传输到地址0x3C后,紧接着是传输到地址0x20。
2.3.4 八拍增量突发,INCR8
图3-11 展示了一个使用半字(Halfword)传输的八拍增量突发。
这个突发使用半字传输,因此地址以2的增量递增。由于突发是增量的,地址在超过16字节地址边界后继续递增。
2.3.5 未定义长度的增量突发,INCR
图3-12 展示了未定义长度的增量突发。
图3-12 展示了两个突发:
- 第一个突发是一个写操作,由两个半字传输组成,地址从0x20开始。这些传输的地址递增。
- 第二个突发是一个读操作,由三个字传输组成,地址从0x5C开始。这些传输的地址也递增。