忽略FPGA中FIFO输入数据的总体影响是什么?

问题描述 投票:-1回答:2

我理解FIFO的操作,但我想我错过了它的实用性。

当在FPGA中实现FIFO时,假设跨时钟域,似乎您经常会遇到FIFO已满的情况,但仍有数据应该在每个周期中计时。如果写入机制以比读取机制读出数据更快的速度计时数据,则可能发生这种情况。显然,一旦FIFO满了,它将开始忽略数据,直到它有继续存储数据的空间。

我的问题是,这不是一个大问题吗?我们基本上只是丢失数据?当然FIFO正在做它的工作,但整个系统只是丢弃数据

我得出了两个可能的结论

1)在这种情况下(输入数据速率大于输出数据速率),如果我们真的关心不丢失任何数据,可能FIFO不是跨越这些域的最佳方式(特别是如果写入机制是时钟比读取域快得多)。如果这是真的,那么传统的交叉时钟域比使用FIFO更好吗?也许答案是你需要在FIFO之前使用另一个元素,比如抽取器?

2)我们在系统上设置了一个约束,即在FIFO需要时间清除数据之前,您只能写入X数据量(或周期或时间等)。对我来说这似乎不太令人满意,我们必须关闭数据流一段时间,等待FIFO清除一些空间,直到我们继续写。但话说回来,我是数字系统的新手,也许这只是我不习惯的严酷现实:)

因此,当越过时钟域时,FIFO的最佳用途似乎是进入FIFO的数据速率和FIFO外的数据速率相同,因为它可以跟上自身的步伐。

vhdl verilog fpga fifo hdl
2个回答
0
投票

看来你把两个问题合二为一。

有时钟域交叉和输入数据缓冲。只是FIFO将这两个任务的实现组合在一个实体中。

如果接收器无法跟上发射器,并且没有流量控制,则数据将丢失,数据是否跨越时钟域并不重要。如果不添加某种握手或流控制线,则无法解决数据丢失问题。

如果没有流量控制,则必须确保输入缓冲区大小足以处理特定情况下的负载峰值。

至于影响 - 如果您的设计没有数据丢失,则它是不存在的,或者如果设计不能容忍数据丢失,您将拥有无功能的设备。


0
投票

FIFO还具有不同输入和输出宽度的功能。这意味着例如你有一个100 Mhz 32位输入和一个50Mhz 64位输出。进出fifo的数据速率是一半,但数据是两倍。

© www.soinside.com 2019 - 2024. All rights reserved.