3.
\$\begingroup\$

我最近遇到了一些问题,我问自己,希望在我开始阅读长篇文章之前,我能在这里找到一个好的线索,甚至不知道这是不是正确的方法。

让我们假设我有一个FPGA设计,在这里我得到采样率为40MHz的ADC数据,所以我将来自ADC接口的数据锁存为40MHz。
但是我想让FPGA内部的DSP以100MHz的时钟速度工作(例如,因为我在DSP框图中有DDR3内存接口,它以400MHz的4:1时钟频率工作,这意味着DDR3的UI时钟为100MHz)。
来自ADC接口的数据(40MHz频率)的有效时间为90%,这意味着我需要大部分数据。

所以我想问的第一个问题是,如何将数据流从慢时钟域移动到快时钟域?
我已经为此做了一个工作机制,我填充了一个FIFO(1024深度),然后开始填充下一个FIFO(我使用了2个FIFO),
当第一个FIFO的读取过程从第一个FIFO被填充的那一刻开始,从现在开始,我只读取第一个、第二个、第一个和第二个,依此类推。。。同时保持每次写入2个FIFO。

在我写完这段代码后,我问自己是否有更好的方法,

我遇到了插值滤波器使用FIR,插值使这个工作从慢到快的时钟域的数据流?

我还看到了多相滤波器,这似乎也是一种移动到更快的采样率的方法。

其易于在FPGA中实例化的过滤器是将数据流移动到更快的时钟域的正确方法,还是我使用FIFO的方法?
谢谢。

\ \ endgroup \美元
5.
  • \$\begingroup\$ 这是错误的部分,您需要转到超级用户部分或信号处理,或硬件推荐:)但我确实对您的超级问题感兴趣。你想自己动手做FPGA吗?还是创建分析构建? \ \ endgroup \美元立方C273.15 20年12月28日7:46
  • 3.
    \$\begingroup\$ @XCSource在这一部分我得到了很多关于FPGA设计的帮助,我认为信号处理领域的任何人都不知道如何回答这个问题。因为它比DSP更像是一个FPGA设计问题。在DSP术语中,答案只是做一个插值滤波器,您的信号将获得更大的MSP->但我对FPGA设计角度的答案更感兴趣。 \ \ endgroup \美元迈克尔·阿斯塔霍夫 20年12月28日7:50
  • \$\begingroup\$ 你到底想干什么完成在这里吗?有什么原因你想要一个100 MSPS版本的信号?或者您只是想使用您的100mhz逻辑将40 MSPS样本存储在DDR中?这些都是近完全不同目标。 \ \ endgroup \美元克里斯斯特拉顿 20年12月28日8:10
  • \$\begingroup\$ @ChrisStratton我想使用100MHz时钟来处理数据,原因之一是使用100MHz时钟从DDR模块传递和接收数据更方便,不仅如此,还可以使FPGA内部的数据处理更快 \ \ endgroup \美元迈克尔·阿斯塔霍夫 20年12月28日8:12
  • \$\begingroup\$ 然后这样做。逻辑/处理器时钟速度不需要锁定到采样率(你当然不需要重新采样),它只需要足够跟上实时发生的数据流。 \ \ endgroup \美元克里斯斯特拉顿 20年12月28日8:15
4.
\$\begingroup\$

所以我想问的第一个问题是,如何将数据流从慢时钟域移动到快时钟域?我已经为此做了一个工作机制,我填充了一个FIFO(1024深度),然后开始填充下一个FIFO(我使用了2个FIFO),

就像你正在做的那样:时钟域通过FIFO。

在我写完这个模块后,我问自己是否有更好的方法,我遇到了使用FIR的插值滤波器,插值是否使数据流从慢时钟域移动到快时钟域?

不,我是说,是的,但不是。

你想通过吗相同的将样本转移到更快的时钟上,并在那里进行处理。插值(和所有重采样)实际上改变了数字信号。

让我们用一个例子来说明:假设您想要从40 MHz采样信号变为200 MS/s(兆采样每秒)。您只需在每个输入样本后插入4个零。因为您通常希望“零”不是零,而是表示模拟信号,就好像它是从200 MHz开始采样的一样,所以应用低通滤波器(在该应用程序中称为反成像滤波器)然后得到一个插值信号。

然而,仅仅因为您每秒得到2亿个样本,并不意味着您需要以每秒2亿个样本的吞吐量或以200兆赫时钟速率处理它们。您可以按照您想要的速度来处理它们,如果有足够的缓冲区,也可以按照您想要的速度来处理它们。

采样率和时钟率它们之间没有内在联系。

在你的PC上考虑一下:假设你有一个原始的PCM音频文件,采样速度为44.1 kS/s。你想把它编码成mpeg4音频;虽然音频片段可能有几分钟长,但编码过程只需要几秒钟:没有必要将音频文件带到CPU的“处理速率”(无论速率是多少——它真的不存在)。

对于FPGA域也是一样:当然,如果从低速ADC中输入样本,那么高时钟域逻辑可能不得不在中间空闲,但这只是意味着您可以放松,而且如果每个样本需要超过一个时钟周期才能工作也没关系。

\ \ endgroup \美元

    你的回答

    点击“发布您的答案”,您同意我们的建议服务条款,隐私政策cookie策略

    不是你想要的答案?浏览已标记的其他问题问你自己的问题.