主要内容

用FFT HDL优化块实现FPGA的FFT

这个例子展示了如何使用FFT HDL优化块来实现硬件的FFT。

FFT和IFFT HDL优化块和系统对象支持许多应用程序的仿真和HDL代码生成。金宝app它们为不同的用例提供了两种优化的架构:

  • 流基数2 ^ 2—适用于高吞吐量应用。当你使用矢量输入时,达到每秒gigasample (GSPS)。

  • 破裂基数2-用于低面积应用。只使用一种复杂的蝴蝶

这个例子包括两个模型,分别展示了如何使用FFT HDL优化块的流和突发架构。

流式基数2^2架构

现代adc能够以每秒几gigasample的采样速率对信号进行采样。然而,最快的FPGA的时钟速度低于这个采样速率。fpga通常在数百兆赫兹运行。在FPGA上执行GSPS处理的一种方法是以低得多的时钟速率同时处理多个采样。许多现代fpga支持JESD204B金宝app标准接口,该接口在GHz时钟速率下接受标量输入,并在较低时钟速率下产生样本向量。因此,现代信号处理需要向量处理。

流基数2 ^ 2体系结构被设计来支持高吞吐量的用例。金宝app这个示例模型使用的输入向量大小为8,并计算FFT使用流基数2 ^ 2体系结构。有关时序图、支持的特性和FPGA资源使用金宝app,请参见FFT HDL优化块引用页面。

modelname =“FFTHDLOptimizedExample_Streaming”;open_system (modelname);

InitFcn回调(模型属性>回调> InitFcn)为模型设置参数。在这个例子中,参数控制FFT的大小和输入数据的特征。

FFTLength = 512;

输入数据为200 KHz和250 KHz两个正弦波,每个正弦波采样频率为1*2e6 Hz。输入向量大小为8个样本。

FrameSize = 8;Fs = 1 * 2 e6;

为了证明数据不需要连续出现,本例每隔一个周期应用有效输入。

ValidPattern = (1,0);

打开Spectrum查看器并运行示例模型。

open_system ('FFTHDLOptimizedExample_Streaming/频谱查看器/功率频谱查看器');sim (modelname);

突发基数2(最小资源)架构

使用破裂基数2架构适用于FPGA资源有限的应用,特别是当FFT长度很大时。该体系结构只使用一个复杂的蝴蝶来计算FFT。设计接受数据,同时准备好了断言,并在整个FFT帧保存到内存后开始处理。在处理时,设计不能接受数据,所以准备好了de-asserted。有关时序图、支持的特性和FPGA资源使用金宝app,请参见FFT HDL优化块引用页面。

modelname =“FFTHDLOptimizedExample_Burst”;open_system (modelname);

InitFcn回调(模型属性>回调> InitFcn)为模型设置参数。在这个例子中,参数控制FFT的大小和输入数据的特征。

FFTLength = 512;

输入数据为200 KHz和250 KHz两个正弦波,每个正弦波采样频率为1*2e6 Hz。数据在每个周期都是有效的。

Fs = 1 * 2 e6;ValidPattern = 1;

打开Spectrum查看器并运行示例模型。

open_system (' ffthdloptimizeddexample_burst /频谱查看器/功率频谱查看器');sim (modelname);

生成HDL代码和测试平台

需要一个HDL Coder™许可证来为这个示例生成HDL。

选择一个模型来生成HDL代码和测试平台:

systemname ='FFTHDLOptimizedExample_Burst/FFT HDL优化突发';

systemname ='FFTHDLOptimizedExample_Streaming/FFT HDL优化流';

使用这个命令来生成FFT模式下的HDL代码。所生成的可用于任何FPGA或ASIC目标。

makehdl (systemname);

使用这个命令来生成一个测试工作台,用来比较HDL仿真的结果和Simulink仿真行为。金宝app

makehdltb (systemname);