我最近遇到了一些问题,我问自己,希望在我开始阅读长篇文章之前,我能在这里找到一个好的线索,甚至不知道这是不是正确的方法。
让我们假设我有一个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的方法?
谢谢。