生成HDL代码的FFT HDL优化块
FFT和IFFT HDL优化块和系统对象支持许多应用程序的仿真和HDL代码生成。金宝app它们提供了针对不同用例优化的两种架构:
流的基数2^2
-适用于高吞吐量应用。当您使用矢量输入时,实现每秒千兆样本。爆发基数2
-低区域应用。只使用一个复杂的蝴蝶。
这个例子包括两个模型,分别展示了如何使用FFT HDL优化块的流和突发架构。
流式基数2^2架构
现代adc能够以高达每秒几千兆样本的采样率对信号进行采样。然而,最快的FPGA的时钟速度达不到这个采样率。fpga通常运行在数百兆赫兹。在FPGA上执行GSPS处理的一种方法是以低得多的时钟速率同时处理多个采样。许多现代fpga支持JESD204B金宝app标准接口,该接口以GHz时钟速率接受标量输入,并以较低时钟速率产生采样向量。因此,现代信号处理需要矢量处理。
的流的基数2^2
架构的设计是为了支持高吞吐量用例。金宝app这个示例模型使用大小为8的输入向量,并使用流的基数2^2
体系结构。看到FFT HDL优化文档时序图,支持的功能,和FPGA资源使用。金宝app
打开示例模型:
modelname =“FFTHDLOptimizedExample_Streaming”;open_system (modelname);
InitFcn回调(Model Properties > Callbacks > InitFcn)为模型设置参数。在这个例子中,参数控制FFT的大小和输入数据的特性。
FFTLength = 512;
输入数据是两个正弦波,200 KHz和250 KHz,每个采样频率为1*2e6 Hz。输入向量大小为8个样本。
FrameSize = 8;Fs = 1*2e6;
为了演示数据不需要连续出现,本例每隔一个周期应用有效输入。
ValidPattern = [1,0];
使用光谱查看器可视化结果。
open_system (' ffthdlooptimizedexample_streaming /Spectrum Viewer/Power Spectrum Viewer ');%运行示例模型:sim (modelname);
突发基数2(最小资源)架构
使用爆发基数2
架构适用于FPGA资源有限的应用,特别是FFT长度较大的应用。该架构仅使用一个复杂的蝴蝶来计算FFT。设计接受数据的同时准备好了
断言,一旦整个FFT帧被保存到内存中就开始处理。在处理过程中,设计无法接受数据,因此准备好了
de-asserted。看到FFT HDL优化文档时序图,支持的功能,和FPGA资源使用。金宝app
modelname =“FFTHDLOptimizedExample_Burst”;open_system (modelname);
InitFcn回调(Model Properties > Callbacks > InitFcn)为模型设置参数。在这个例子中,参数控制FFT的大小和输入数据的特性。
FFTLength = 512;
输入数据是两个正弦波,200 KHz和250 KHz,每个采样频率为1*2e6 Hz。数据每个周期有效。
Fs = 1*2e6;ValidPattern = 1;
使用光谱查看器可视化结果。
open_system (' ffthdlooptimizedexample_burst /频谱查看器/功率频谱查看器');%运行示例模型:sim (modelname);
生成HDL代码和测试台
为本示例生成HDL需要HDL Coder™许可证。
选择一种模型生成HDL代码和测试台:
systemname = ' ffthdoptimizedexample_burst /FFT HDL优化Burst';或systemname = ' ffthdoptimizedexample_streaming /FFT HDL优化流';
为生成的文件使用一个临时目录:
Workingdir = tempname;
可以运行以下命令来检查HDL代码生成的兼容性:
checkhdl (systemname TargetDirectory, workingdir);
执行如下命令生成HDL代码:
makehdl (systemname TargetDirectory, workingdir);
运行如下命令生成测试台:
makehdltb (systemname TargetDirectory, workingdir);