FFT
- 更新时间2025-01-28
- 阅读时长12分钟
计算快速傅里叶变换(FFT)。单通道、单采样输入格式逐点计算FFT。单通道、多采样输入格式允许用户对带多个采样/周期的数据流执行FFT分析。
使用Express VI的 单通道单采样 输入格式Scaled Window Express VI 可最大程度地减少与截断波形相关的频谱泄漏。您还可以使用如使用 单通道、单采样 输入格式,FFT to SpectrumVI可将该Express VI的输出转换为幅度谱或功率谱。

对话框选项
| 参数 | 说明 |
|---|---|
| 输入格式 | 包含下列选项:
|
| 转换参数 | 包含下列选项:
|
| 输出数据类型 | 包含下列选项:
|
| 执行模式 | 包含下列选项:
|
| 实现目标 | 指定Express VI是否优化FFT结果精度,或FPGA终端的资源使用量。仅当用户在输入格式中选择单通道、多采样,在输出数据类型中选择匹配至源时,该选项可用。如取消选择匹配至源,仅能选择精度。此时用户配置的输出字节长度将决定精度和FPGA资源使用量。包含下列选项:
|
| 输入/输出索引模式 | 指定输入/输出数据的FFT帧的索引间隔。下图 输入/输出索引码型 表示您选择的配置。包含下列选项:
|
| 配置反馈 | 显示Express VI的执行方式和其他有用信息,如警告和错误信息。 |
输入/输出
实数数据输入
—
虚数数据输入
—
重置
—
实部数据输出
—
输出有效
—
数据索引
—
虚数数据输出
—
|
单周期定时循环外部的定时框图(单通道、单采样输入格式)
下列框图演示了在单周期定时循环外使用该Express VI时的定时。
单周期定时循环内部的定时框图(吞吐率为1 周期/输入)
下列框图演示了吞吐率为1 周期/输入时,在单周期定时循环内使用该Express VI的定时。
单周期定时循环内部的定时框图(吞吐率不等于1 周期/输入)
下列框图演示了吞吐率不等于1 周期/输入时,在单周期定时循环内使用该Express VI的定时。
FFT计算时避免数据丢失
在单周期定时循环内部,该Express VI执行快速傅立叶变换时不会接收或返回值。在该段时间,如系统或其他节点发送数据至该Express VI,LabVIEW将忽略该数据。FFT Express VI接收复杂的,不具有统一格式的数据时可能发生上述情况。
为确保数据不丢失,创建FIFO 保存数据,直至Express VI再次接受值。确保创建的FIFO足够大,其能够在FFT计算时间内收集并保存所有的数据点。如需粗略估计要创建的FIFO的大小,可使用平均系统吞吐率除以该Express VI的延迟。
选择适当的输入/输出索引码型(单通道,多采样输入格式)
使用单通道、多采样输入格式时,必须选择适当的输入/输出索引模式。如FFT Express VI的数据源为FPGA I/O节点,选择连续输入索引/连续输出索引。如数据源为另一个FFT Express VI的输出(例如,对FFT结果执行反傅立叶变换),请确保第二个FFT Express VI的输入模式与第一个FFT Express VI的输出模式相同。否则,将导致FFT结果不准确。
对于4096点FFT(4采样/周期),使用连续输入索引/ M间隔输出索引输入/输出索引模式(其中M等于1024),第一个有效输入周期中的输入采样索引为0, 1, 2, 3,第二个周期中的索引为4, 5, 6, 7并以此类推。第一个有效输出周期中的输出采样索引为0, 1024, 2048, 3072,第二个周期中的输出索引为1, 1025, 2049, 3073并以此类推。下图为连续输入索引/ M间隔输出索引输入/输出索引模式:
相反,如选择M间隔输入索引/连续输出索引输入/输出索引模式,输出为连续模式。与上述情况比较,输入和输出模式互为相反。下图为M间隔输入索引/连续输出索引输入/输出索引模式:
实现目标注意事项(单通道,多采样输入格式)
理论上,对定点输入数据执行N点FFT将为输出数据增加log2(N)+1位字节长度。在实现目标中选择精度时,FFT Express VI通过填充零将输入数据字节长度扩展为输出字节长度,所有内部复数乘法运算均使用该字节长度。相反,选择资源使用时,FFT Express VI由输入至输出逐级增加字节长度。因此,复数乘法器的位长度也是逐级增加的。
选择资源使用时,复数乘法器相比选择精度时保留更少的位,因此输出数据增加的log2(N)+1位与选择精度时相比,精度较低。由于复数乘法器和内部寄存器的位宽度少于选择精度时生成结果的位宽度,因此资源使用可节省FPGA资源。选择资源使用时,编译时可实现更高的FPGA时钟速率,因为相对于选择精度实现目标,复数乘法器使用更少的字节长度。
范例
参考LabVIEW FPGA模块中包含的下列范例文件。
- labview\examples\CompactRIO\FPGA Fundamentals\FPGA Math and Analysis\FFT\FFT.lvproj
- labview\examples\R Series\FPGA Fundamentals\FPGA Math and Analysis\FFT (1 Channel, N Samples)\FFT (1 Channel, N Samples).lvproj
- labview\examples\R Series\FPGA Fundamentals\FPGA Math and Analysis\Cross-correlation Using FFT (1 Channel, N Samples)\Cross-correlation Using FFT (1 Channel, N Samples).lvproj
- labview\examples\R Series\FPGA Fundamentals\FPGA Math and Analysis\FFT\FFT.lvproj
实数数据输入
—
重置
—
实部数据输出
—
输出有效
—
数据索引
—