【问题标题】:Convolution by Dirac Delta on Xlinx FPGA赛灵思 FPGA 上的 Dirac Delta 卷积
【发布时间】:2015-08-07 00:33:37
【问题描述】:

我正在尝试在 Xilinx Virtex 7 上将 16 位输入数据流与 Dirac Delta 进行卷积。

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

有人知道如何实现吗?事实上,解决我的问题的唯一可能有趣的 Xilinx IP 内核是 FIR 编译器,但我不知道如何将我的函数 F(f) 表示为该 IP 内核的“系数”输入。

编辑:从数学上讲,由于目标卷积只涉及狄拉克增量,因此可能存在一种更短的方法来避免卷积,只需在点 f0 处评估输入函数。但我也不知道如何实现..

提前谢谢你

【问题讨论】:

  • 我要问为什么?在 fpga 或任何其他设备上执行乘法比卷积要简单得多,即使使用 dirac delta 也是如此。
  • 实际上我的项目是关于在频域中实现 QAM 调制器。此过程的优点是频域中的滤波比时域中的滤波要简单得多,因此我希望我的调制器比标准时域调制器更快。
  • 余弦乘法在时域更简单。过滤在频率上的操作成本较低,但要复杂得多,尤其是在 FPGA 上,因为您必须在跟踪边界以进行适当卷积的同时进行 FFT、乘法、IFFT。此外,FPGA 经过优化,可以在时域中使用乘法累加 DSP 执行卷积,因此通常最好采用这种方式。它可能不是算法最优的,但它是资源最优的!
  • 感谢您的回答。我理解资源优化的想法..这意味着我的调制器不会更快,但我仍然必须完成我的项目......我已经在时域中实现了一个调制器,项目的下一步是与一个已实现的比较在频域。然后我将不得不比较和讨论这两种解决方案。
  • 狄拉克增量的卷积不只是+/- f0的移位吗?

标签: fpga xilinx convolution time-frequency


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回答。这将为我提供从哪里开始解决问题的方向。正如您所建议的,我将深入研究 NTT 算法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 2021-04-05
相关资源
最近更新 更多