如何处理FIFO的多个同时输入?

问题描述 投票:0回答:1

我的verilog代码为8个通道生成DAC斜坡信号(通道,值)。我将此功能添加到已具有DAC控制器/通信器和相关FIFO的项目中。我想将所有8个通道同时生成的数据添加到现有的FIFO中。我很容易为单个频道完成此操作,但我不确定包含所有频道的最佳方式。

斜坡不是很快,所有时钟都是50 MHz。所以,我有很多时钟周期(约150 +)可供使用。但是,数据可能来自同一时钟周期中的多个通道。

我应该创建8个FIFO(只有几个指令足够大),每个通道1个?或者有更有效的方法吗?

如果我偶尔丢失数据点,这不会是一个大问题。

verilog fifo
1个回答
0
投票

不确定这是否是简单的CDC fifo或其他什么,但这可以通过多种方式完成,如果您在下一个数据包到达之前有足够的时间,那么您可以:

  • (1)在推送域中实现简单的循环算法,它将按顺序从每个通道推送数据。您可能希望添加3位边带信号以进行通道识别,以便pop域可以根据实际数据来源进一步分发它。
  • (2)在推送到FIFO之前汇总所有数据,并使FIFO数据端口宽度等于8x输入通道的宽度。在pop域中你可以再次对它进行解聚(如果需要),定位应该是确定性的,所以这个操作非常简单。

如果需要某种更复杂的数据流管理您可能被迫使用8个单独的FIFO。

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