磁座钻厂家
免费服务热线

Free service

hotline

010-00000000
磁座钻厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

全面掌控频域免费猫

发布时间:2020-02-17 14:00:18 阅读: 来源:磁座钻厂家

全面掌控频域 - FPGA/CPLD - 电子工程网

但ReX和ImX是正弦波和余弦波的缩放结果,因此需要进行缩放。除Rex[0]和Rex[N/2]之外的所有情况,ReX和ImX的值均为ReX[k]或ImX[k]除以N/2。对Rex[0]和Rex[N/2],则除以N。出于明显的理由,这种运算被称为傅里叶反变换(IDFT)。

通过探讨确定DFT和IDFT所使用的算法,可能有助于了解如何加以利用这些算法。

您可以使用Octave、MATLAB 乃至Excel对所采集的数据进行DFT计算。许多实验室工具,如示波器,也能根据需要执行DFT计算。

不过需要指出的是上述的DFT和IDFT被称为实DFT和实IDFT,因为输入的是实数而非复数。很快就会清楚为何要了解这一点。

需要进行变换的地方

从电信到图像处理、雷达和声纳,难以想象有比傅里叶变换更强大、更适合并可实现FPGA中的分析技术。实际上DFT是最常用FPGA应用之一(即,生产有限输入响应(FIR)滤波器系数)的基础(参阅赛灵思中国通讯第43期《数字滤波器设计与实现详情》)。

但其用途不局限于滤波。DFT和IDFT还可用于电信处理中,用于执行电信通道的信道化和重组。在频谱监测应用中,它们可用来判断监测带宽内的频率构成。在图像处理中,它们用于处理图像卷积,供滤波器内核开展图像模式识别等操作。所有这些应用在实现过程中一般使用比上文介绍的更有效的算法来计算DFT。

总而言之,了解DFT并将其实现在FPGA中是每个FPGA开发人员的必备技能。

基于FPGA的实现方式

上文介绍的DFT和IDFT的实现一般采用嵌套循环,每个循环完成N次计算。因此实现DFT计算所需的时间为:

DFTtime = N * N * Kd ft

其中,Kdft表示完成每次迭代的处理时间。显然这种方法实现起来极为耗时。为此FPGA中实现DFT一般使用快速傅里叶变换算法(FFT)。FFT常常被称为我们时代最重要的算法,因为它对许多行业都产生根本性的影响。

FFT与DFT算法稍有不同,它计算的是复数DFT,即它需要实时域信号和虚时域信号,得到的结果的宽度是n位而非n/2位。这意味着如果需要计算实DFT,必须首先把虚部设为0,然后把时域信号转移到实部。如果要在赛灵思FPGA实现FFT,可以有两种选择。您可以使用您选择的HDL重新编写FFT,也可以使用Vivado 设计套件IP Catalog或其他来源提供的FFT IP。除非有不得已的原因不能使用IP,为缩短开发时间,一般都应该选择IP。

FFT的基本方法是将时域信号分解为一系列单点时域信号。因为样本被重新排序,这个过程常被称为位反转。如果没有位反转算法这一捷径可走,那么创建单点时域信号的级数可以用Log2 N计算得到,其中,N表示位数。

随后使用这些单点时域信号计算每个点的频谱。这一计算相当简单,因为频谱与单点的时域相等。

这些单频点的重组是FFT算法最复杂环节。必须每一级重组一次这些频点,恰好是时域分解的反向操作。因此要重建频谱需要Log2 N级,这里就是著名的蝶形FFT发挥作用的地方。

与DFT的执行时间相比,FFT用时为:

FFTtime = K f ft * N Log2 N

与计算DFT相比,执行时间明显缩短。

在FPGA中实现FFT算法时,还必须考虑FFT采样数。FFT采样数将决定本底噪声,在此之下将无法再看到有用信号。FFT采样数还将决定频点之间的间距。使用下面的公式可以确定FFT采样数:

东厂小说全文免费阅读

宜春旗袍

日韩美女

中秋故事会