这个例子展示了如何使用FFT HDL优化块来实现硬件的FFT。
FFT和IFFT HDL优化块和系统对象支持许多应用程序的仿真和HDL代码生成。金宝app它们为不同的用例提供了两种优化的架构:
流基数2 ^ 2
—适用于高吞吐量应用。当你使用矢量输入时,达到每秒gigasample (GSPS)。
破裂基数2
-用于低面积应用。只使用一种复杂的蝴蝶
这个例子包括两个模型,分别展示了如何使用FFT HDL优化块的流和突发架构。
现代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
架构适用于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 Coder™许可证来为这个示例生成HDL。
选择一个模型来生成HDL代码和测试平台:
systemname ='FFTHDLOptimizedExample_Burst/FFT HDL优化突发';
或
systemname ='FFTHDLOptimizedExample_Streaming/FFT HDL优化流';
使用这个命令来生成FFT模式下的HDL代码。所生成的可用于任何FPGA或ASIC目标。
makehdl (systemname);
使用这个命令来生成一个测试工作台,用来比较HDL仿真的结果和Simulink仿真行为。金宝app
makehdltb (systemname);