在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 10031|回复: 11

异步fifo的数据丢失问题

[复制链接]
发表于 2009-9-14 10:50:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
之前使用fifo为的就是保持在两种不同的时钟下的数据传输。可是在实际应用中,发现有数据丢失的问题出现。
异步fifo是读写分开的,可是要是这边一直写,而读得周期很慢的话,由于双端口RAM只有那么大,那就会发生数据丢失问题。
例如:我在AD采样的速率是4Mhz,  然后数据经过  异步fifo   ,传输到 TXD模块(TXD模块的波特率为9600)。这个时候除非我把异步fifo的RAM设置的很大,不然的话,由AD采样的数据送到TXD模块(发送模块),就会出现数据丢失。
想问一下,怎么解决这种数据丢失的问题呢?
发表于 2009-9-14 11:00:35 | 显示全部楼层
解决不了吧?丢数据是必然的。。。
无论FIFO多大,只要输入流量大于输出流量,必然丢失数据。。。
除非输出为输入的抽样(例如输入流量4MB,输出流量为9600bit/4MB抽样,则输出为9600baud)才行。。。
一个过程中,输入流量小于输出流量,才能不丢失数据。。。
 楼主| 发表于 2009-9-14 11:28:46 | 显示全部楼层


原帖由 liulanghan 于 2009-9-14 11:00 发表 解决不了吧?丢数据是必然的。。。无论FIFO多大,只要输入流量大于输出流量,必然丢失数据。。。除非输出为输入的抽样(例如输入流量4MB,输出流量为9600bit/4MB抽样,则输出为9600baud)才行。。。一个过程中 ...


那这样子 岂不是做不了高速的采样。。。。只能做低速的?
那有没有其他办法可以解决两个不同时钟之间的数据传输问题?

[ 本帖最后由 nazhao001 于 2009-9-14 11:32 编辑 ]
发表于 2009-9-14 22:51:05 | 显示全部楼层
这就是FIFO深度的计算了  快些慢读肯定会产生阻塞的
发表于 2009-9-24 19:06:21 | 显示全部楼层
控制写使能啊,非满才写
读是非空就读
发表于 2009-9-26 18:11:49 | 显示全部楼层
你这个,如果这个异步FIFO的输入与输出速率不等(时钟频率与进出FIFO的数据宽度)的话,你可以用的乒乓包级FIFO可以解决的
发表于 2009-9-26 18:26:01 | 显示全部楼层
如果Input数据无法控制的话,只有通过提高你的内部数据能力了,具体到你的FIFO深度的问题要看处理能力和Input数据比值了。
发表于 2009-9-28 13:51:48 | 显示全部楼层
平均输出速率赶不上赶不上输入速率就没有办法解决
发表于 2009-9-28 21:14:31 | 显示全部楼层
在一个有限容量的水箱里
大水管往水箱抽水,小水管从水箱里放水,水迟早都会溢出
发表于 2009-9-29 19:34:46 | 显示全部楼层
后级处理数据跟不上,肯定不是会反压的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 15:17 , Processed in 0.023007 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表