FPGA中使用vhdl核的DFT相位和幅度

Posted

技术标签:

【中文标题】FPGA中使用vhdl核的DFT相位和幅度【英文标题】:DFT phase and amplitude by using vhdl core in FPGA 【发布时间】:2016-11-17 13:39:57 【问题描述】:

如何找出模拟波形的相位和幅度? 我正在从一个传感器接收一个模拟信号,通过使用该模拟波形,我想找出基频和二次谐波的 DFT(相位,幅度)。我通过应用于 FPGA 的 ADC 转换模拟信号。在那个 FPGA 中,我想使用 IP DFT 4.0 内核,但 DFT 内核输出只是虚值和实值。使用它如何确定基波和谐波的相位和幅度?

【问题讨论】:

【参考方案1】:

对于每个复数 (re, im) 输出,您可以像这样计算幅度和相位:

magnitude = sqrt(re*re + im*im);
phase = atan2(im, re);

如果您知道基波(和谐波)的频率,那么您可以使用以下公式计算适当的 FFT 输出 bin 索引:

i = N * f / Fs

其中N 是 FFT 大小,f 是感兴趣的频率,Fs 是采样率。

【讨论】:

如何在 FPGA 中使用 IP DFT 4.0 内核找出二次谐波?如果可能,请通过 DFT 4.0 ip core。是否有可能在 VHDL 中进行这些计算(magnitude = sqrt(rere + imim); phase = atan2(im, re);)。? 您可以在您的 FPGA 上使用一些额外的逻辑来做到这一点,或者您可以将 DFT 结果传回您的主机 CPU 进行最终处理,因为与FFT 本身。 感谢您的耐心为我提供解决方案 MR Paul R 先生,1)。在这里,我通过 adc 向 FPGA 提供模拟信号。我想使用 DFT core 4.0 ip 处理该模拟信号,我的结果应该是 I 谐波的幅度和相位,II 谐波的幅度和相位相同。但在 IP 核 DFT4.0 的数据表中,输出只是实数值和虚数值。 2).我们将通过 RS232/422 在 GUI 中显示处理后的数据。如果我们需要任何小的乘法,我们将在 GUI 上进行。我们必须在 fpga 中使用什么样的逻辑来找出 I 谐波的相位和幅度以及 II 谐波?请描述 我已经在上面解释过了 - 只需将实数/图像 FFT 输出数据发送到您的主机 PC 并使用上述公式计算所需组件的相位和幅度。

以上是关于FPGA中使用vhdl核的DFT相位和幅度的主要内容,如果未能解决你的问题,请参考以下文章

FPGA教程案例24通过cordic核计算复数的相位

vivado中SRIO IP核的使用

FPGA的学习:PLL-IP核的调用

FPGA的学习:PLL-IP核的调用

Xilinx Zynq Z-7020这款FPGA是完全使用C语言开发的吗

DFT 和 FFT 之间有啥区别使 FFT 如此之快?