打印

FIFO具体有什么作用

[复制链接]
10448|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Fairchild2440|  楼主 | 2011-4-5 18:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一般的数据采集卡为例,数据都是先通过AD采样单片机处理后送至FIFO,然后再用总线控制器从FIFO读取数据送到PC。那么FIFO的作用是什么呢?
如果每秒钟AD产生的数据大于总线每秒钟所能发送的数据,那么FIFO中的数据不是会溢出么。如果溢出了,AD还在产生数据怎么办?
如果每秒钟AD产生的数据小于总线每秒钟所能发送的数据,那么是不是没必要用FIFO了,反正产生的数据都能及时上传。
希望大家指点指点。

相关帖子

沙发
dqyubsh| | 2011-4-5 22:16 | 只看该作者
FIFO是提高速度用的,它可以绕过CPU,直接让主机和设备交换数据。
AD采集速度大于USB传输速度,数据在AD之后进行缓冲,比如放入另外的FIFO中,采用乒乓机制,它的FIFO满了(半满)才置入USB的FIFO。
AD多慢,FIFO也是必要的,如果16位AD数据从51CPU(68013)读进来,可能要ms级别,这显然是太慢了。实际的系统除了采集数据还有其它开销,你会觉得CPU永远是太慢太慢。(外设拖得CPU更慢,所以才有中断、DMA和FIFO)

而且,通常采集数据并不是一刻不停地采集数据,主机收到的数据也不是完全连续的。都是采集一段,传输一段,处理一段。相邻两次处理之间是有停顿的。

使用特权

评论回复
板凳
邪恶猛男| | 2011-4-13 15:42 | 只看该作者
FIFO让你AD一次传送很多个数据 还可以处理了之后给MCU FIFO可以让MCU处理不过来的数据先预备下

使用特权

评论回复
地板
南极的问候| | 2015-8-17 14:41 | 只看该作者

使用特权

评论回复
5
Hu.Te| | 2016-7-5 09:17 | 只看该作者
恩。说的好。
数据缓冲就是为了平衡数据处理之间的不平衡而采用的。并非说谁快谁慢。
USB总线确实是需要一个时间点的,一帧的数据在USB2.0上时,125us,一个节点。
如果是Isochronous模式的话,取出的数据会比较大一些,不过也有可能会出现错误的机会。机制决定,如果是bulk型会要好一些吧。不过对实时性能要求高的话,还是需要FIFO的。(个人认为)
数据不可丢失。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

88

帖子

1

粉丝