Dirac Delta在Xlinx FPGA上的卷积

时间:2015-05-25 13:45:42

标签: fpga xilinx convolution time-frequency

我正在尝试在Xilinx Virtex 7上使用Dirac Delta卷积16位输入数据流。

更具体地说,我不想将我的输入流乘以时域中的余弦,而是想在频域中将其与以下表达式进行卷积: F(f)= 0.5 *(delta(f-f0)+ delta(f + f0))

有没有人知道如何实现它?实际上,我的问题唯一可能有趣的Xilinx IP内核是FIR Complier,但我不知道如何将我的函数F(f)表示为此IP内核的“系数”输入。

编辑:在数学上,由于目标卷积仅涉及Dirac Deltas,因此可以通过简单地评估点f0处的输入函数来避免卷积。但是我不知道如何实现它......

提前谢谢

1 个答案:

答案 0 :(得分:1)

Xilinx has an IP to perform Fast Fourier Transform on the FPGA。进入频域后,您可以自行执行操作。您可以使用FIR IP内核,但由于您的功能非常简单,与自定义实现相比会浪费大量资源。最后,Xilinx的内核可以进行逆FFT以回到时域。

AFAIK,没有核心可以帮助在频域中执行卷积。所以不要忘记重叠 - 添加变换以进行正确的计算。 Matlab将成为你的朋友!

最后,您可能对Number Theoretic Transform(NTT)感兴趣。该算法比FPGA更有效,可用于执行卷积。缺点是你可以拥有的变换长度存在限制,并且频率域系数为"频域系数"与频率完全无关(它们有点随机)。如果您想要快速卷积,NTT适合您,如果您正在寻找这些傅里叶系数的其他用途,那么它就不是。然而,余弦的余弦表达会更加复杂,并且会破坏你的工作目的,但我认为你可能对学术观点感兴趣。正如我在评论中所述,毕竟在时域中乘以余弦更简单。