主要内容

为FPGA实现FFT算法

这个例子展示了如何用DSP实现hardware-targeted FFT HDL工具箱™块。

信号处理函数和模块从DSP系统工具箱™提供框架,浮点算法和可以作为行为参考硬件设计。然而,有效的硬件设计必须使用流数据接口和定点数据类型。硬件设计也常常需要控制信号等有效的,重置,反压力

块DSP HDL工具箱库提供hardware-optimized算法模型流数据接口,硬件延迟和控制信号的仿真软件®。万博1manbetx块可以并行处理大量的样本实现高吞吐量如gigasample-per-second (gsp)率。你可以改变块的参数去探索不同的硬件实现。这些块支持HDL代码生成和万博1manbetx部署与HDL编码™fpga。

这个示例介绍了hardware-friendly流数据接口和控制信号使用的DSP HDL工具箱块,并展示了如何使用两个FFT块提供的硬件架构。然后,它显示了你如何生成HDL代码设计。

DSP HDL工具箱FFT块提供了两种体系结构优化为不同的用例。你可以设置体系结构参数块上的这些选项之一。

  • 流基数2 ^ 2——高吞吐量的应用程序使用这个选项。体系结构实现gigasamples每秒(gsp)当您使用向量输入。

  • 破裂基数2——较低的地区应用程序使用这个选项。架构只使用一个复杂的蝴蝶。

这个例子包含两个模型,展示了如何使用FFT的流和破裂架构块。流模型展示了如何使用输入和输出有效的控制信号从时钟频率独立模型数据率。破裂模型展示了如何使用有效的控制信号模型丛发性数据流以及如何使用准备好了信号表明算法能和不能接受新的数据样本。

流基数2 ^ 2体系结构

现代adc的采样信号在采样率几个gigasamples每秒。然而,最快的FPGA时钟速度达不到这个采样率。fpga通常运行在数百兆赫。在一个FPGA执行gsp时处理的一种方法是在同一时间处理多个样本时钟频率要低得多。许多现代fpga支持JESD204B万博1manbetx标准接口接受标量GHz时钟频率输入,并产生一个向量样本在一个较低的时钟频率。因此,现代信号处理需要向量处理。

流基数2 ^ 2建筑的目的是支持高吞吐量的应用程序。万博1manbetx这个示例模型使用一个输入向量的大小8和体系结构FFT块的参数设置流基数2 ^ 2。时间图,支持功能,FPGA资源使用情况,明白万博1manbetx了FFT

modelname =“FFTHDLOptimizedExample_Streaming”;open_system (modelname);

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

FFTLength = 512;

输入数据是两个正弦波,200 KHz和250 KHz,每个采样1 * 2 e6赫兹。输入向量的大小是8样本。

FrameSize = 8;Fs = 1 * 2 e6;

为了演示使用有效的控制信号不连续的输入数据,这个例子应用有效输入每隔一个周期。

ValidPattern = (1,0);

开放频谱查看器和运行示例模型。

open_system (“FFTHDLOptimizedExample_Streaming /频谱查看器/功率谱查看器”);set_param (modelname“SimulationCommand”,“开始”)

使用逻辑分析仪的输入和输出信号FFT流子系统。波形显示输入有效信号是高每一秒周期,和之前有一些延迟块返回第一个有效的输出示例。块面具显示延迟从第一个有效的输入第一个有效输出,假设没有差距在输入有效的样本。在这种情况下,显示的实际延时较长延迟,因为空白的输入流。块返回输出数据没有缺口的有效样本。

破裂基数2(最低资源)体系结构

使用破裂基数2架构应用程序与FPGA资源有限,尤其是当FFT长度很大。这种架构只使用一个复杂的蝴蝶计算FFT。在这个模型中,体系结构FFT块的参数设置破裂基数2

当您选择此体系结构中,块输出控制信号,准备好了表示可以接受新的输入数据块。块设置准备好了信号1 (真正的)当它可以接受数据并开始处理整个FFT帧保存到内存中。在处理,不能接受数据块,块设置准备好了信号为0 ()。只有当你必须应用数据准备好了信号是1。块忽略任何数据时应用准备好了信号是0。

时间图,支持功能,FPGA资源使用情况,明白万博1manbetx了FFT

modelname =“FFTHDLOptimizedExample_Burst”;open_system (modelname);

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

FFTLength = 512;

输入数据是两个正弦波,200 KHz和250 KHz,每个采样1 * 2 e6赫兹。每周期数据是有效的。

Fs = 1 * 2 e6;ValidPattern = 1;

开放频谱查看器和运行示例模型。

open_system (“FFTHDLOptimizedExample_Burst /频谱查看器/功率谱查看器”);set_param (modelname“SimulationCommand”,“开始”)

使用逻辑分析仪的输入和输出信号FFT破裂子系统。波形显示输入数据到达的有效样本,和之前有一些延迟块返回有效的输出样本。上显示的波形匹配的延迟的延迟块面具。块还返回一个输出准备好了信号表明当它有房间开始接受下一个的输入数据。以确保下一个的输入数据是不应用块之前设置准备好了信号1(真正的),该模型使用了信号作为输入数据生成的启动信号。

生成HDL代码和试验台

你必须有HDL编码器产品生成HDL代码例子。你的模型必须有一个针对HDL代码生成子系统。

选择一个模型来生成HDL代码和试验台的FFT子系统。

systemname =“FFTHDLOptimizedExample_Burst / FFT破裂”;

systemname =“FFTHDLOptimizedExample_Streaming / FFT流”;

然后,使用这个命令来生成子系统的HDL代码。生成的代码可用于任何FPGA和ASIC的目标。

makehdl (systemname);

使用此命令来生成一个试验台相比,高密度脂蛋白模拟对模型模拟结果的行为。万博1manbetx

makehdltb (systemname);

另请参阅

|

相关的例子

更多关于