毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 嵌入式 >> 正文

如果FO过程中,CPU只处理FO数据没有及时FI,那么会导致采集丢失。那样是不是错误的?

更新时间:2012-12-17:  来源:毕业论文

我只知道FIFO是先进先出,比如我将FIFO设计在自制示波器前级采集端,当FI时是不是得等到数据存满了才逐个FO出来?那么在FO过程中还FI吗?
我想的是:如果FO过程中,CPU只处理FO数据没有及时FI,那么会导致采集丢失。那样是不是错误的?

随时输入,随时取出。

输入的时候如果满了就不输入,报溢出错误。输出的时候如果空了就不取出。

在同一段存储区域内滚动读写。

单向生长。

比如10个单位长的FIFO,你定义一个输入指针,定义一个输出指针,定义一个回滚标志。起始状态两个指针都指向0,回滚标志是false。

有数据进来,就写入位置0(输入指针指向的地址),然后输入指针+1,如果指针加到了9,则指针回到0,但回滚标志设置为true,提示你数据冒头了。

要取数据,就从位置0读取(输出指针指向的地址),然后输出指针+1,如果指针加到了9,则同样把指针归0,同时将刚才置为true的回滚标志改回false,表示冒头的数据被读出来了。

正向生长的FIFO,指针只会递增,不会递减。因此常见的情况是输入指针大于输出指针,表示有未读出的数据。比如下一个写入的地址是6,下一个要读出的地址是2。那么现在FIFO中的数据个数就是6-2=4个。

二者相等,表示FIFO为空。

如果输入小于输出,则说明写入的数据过了地址9又回滚到地址0了。比如下一个要读出的地址是8,下一个要写入的地址是6,回滚标志为true,则FIFO内数据个数是FIFO长度10-8+6=8个。

通过上述方法可以知道FIFO的所有状态,知道是空还是满,知道下一个输入数据该写入哪里,知道下一个输出数据该从哪里取。

当FI时是不是得等到数据存满了才逐个FO出来?
----不需要。尽量不要等它满了,尽量少丢失数据。
那么在FO过程中还FI吗?
----可以的。而且FIFO的设计,就是为了这样用。进时可出。
那样是不是错误的?
----那样会读空的。所以,倾向于读写存在某种同步。

fifo,设计时可以留些empty, full, clear 等设置的端口。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。