DMA传输后FIFO流数据丢失问题:是否与突发大小相关?
DMA FIFO数据丢失问题分析
问题与突发大小的关联
该问题大概率与突发大小配置或处理逻辑相关,从数据变化来看,单次4字节读请求触发了远超预期的FIFO计数减少,符合突发操作未被正确管控的特征。
可能的诱因
- DMA突发读配置不匹配:若DMA控制器默认配置了大于1的突发读长度,即使PS发起的是单4字节读请求,DMA仍会按预设突发长度从FIFO读取数据。PS仅接收首个4字节,剩余数据未被正确处理(如丢弃、未回传),但FIFO计数已减去整个突发长度,导致计数与实际剩余数据不符。
- FIFO计数更新逻辑错误:FIFO的已用空间计数(即写入计数)在处理读请求时,未按实际读取的单元数更新,而是直接减去了DMA配置的突发长度。比如无论实际读取1个还是N个单元,计数都固定减去预设突发值,导致计数与实际剩余数据出现偏差。
- AXI总线突发属性误转换:PS发起的单周期读请求被AXI总线或桥接模块强制转换为突发读操作,FIFO响应了整个突发读请求,而PS端仅接收了第一个数据Beat,剩余数据丢失,同时FIFO计数已扣除全部突发读取的单元数。
- FIFO读指针跳转异常:当FIFO处于满状态时,突发读操作触发了读指针的错误跳转(如指针未按实际读取步长递增,而是一次性跳过大量地址),导致大量数据被标记为已读取但实际未被传输,计数同步错误更新。
- 同步信号时序问题:DMA读使能、FIFO空满信号的同步逻辑存在时序偏差,导致突发读过程中FIFO被连续读取多个周期,超出PS请求的1个单元,剩余数据未被PS接收而丢失,同时FIFO计数正确扣除了实际读取的总量。
内容的提问来源于stack exchange,提问作者Sujan SM
相关产品推荐
相关产品推荐

