新手入门
- 积分
- 4
- 金钱
- 4
- 注册时间
- 2021-12-23
- 在线时间
- 0 小时
|
发表于 2021-12-23 11:54:53
|
显示全部楼层
关于突发自己的理解:
*DMA传输需要用到总线矩阵,有个总线仲裁管理总线事务,由它来控制该谁谁用总线
*普通的DMA传输可能传一段数据就必须跟总线仲裁提要求,总线仲裁才来安排传输
这里的一段数据是根据根据MSIZE字段就行配置, 比如字节、半字(两个字节)、字(4个字节), 这是一个原子操作。
而1次突发就是传一段数据的优先级别提高到最高, 不需要总线仲裁。
而几个节拍的意思就是重复几次这样的操作。
1.为什么MSIZE=字节,FIFO级别是1/4,只有MBURST=INCR4可行?
因为MSIZE=1个字节 所以一个突发只能传一个字节, 而FIFO级别是1/4, FIFO的容量是4级32位, 相当于16个字节数。所以FIFO中的有效字节数是16*(1/4)=4字节。 所以只能选择4个节拍的1次突发。
2.为什么MSIZE=半字,FIFO级别是3/4,所有突发都不能使用?
因为MSIZE=半字=2个字节, 所以一个突发能传2个字节, 而FIFO级别是3/4。所以FIFO中的有效字节数是16*(3/4)=12字节=6个半字。
而MBURST=INCR4的时候是传输4个半字, MBURST=INCR8的时候是传输8个半字,MBURST=INCR16的时候是传输8个半字
不满足传送6个半字, 所以都不能使用。
3.为什么MSIZE=字,FIFO级别是满,只有MBURST=INCR4可行?
因为MSIZE=字=4个字节, 而FIFO级别是满, 所以FIFO中的有效字节数是16个字节=4个字
所以只能选择MBURST=INCR4, 即发送4段数据, 每段数据是一个字。
而MBURST=INCR8的意思是发送8段数据, 每段数据是一个字, 相当于传输了8个字(32个字节)。 同理MBURST=INCR16更不行。
|
|