Altera FFT兆核函数2.0.0版简介
一.FFT兆核函数简介
Altera FFT兆核函数2.0.0版是一个高性能、参数化快速傅立叶变换(FFT)处理器,对Altera Stra
tix II、Stratix GX、Stratix以及Cyclone器件系列已经进行了设计优化。FFT兆核函数可以完成高性能复数FFT或逆FFT(IFFT)。
1.FFI2.0.0版本
FFT2.0.0版具有以下基本性能:
? 完全支持Stratix II、Stratix GX、Stratix以及Cyclone和Cyclone II系列器件。
? 支持Windows、Solal.is以及Linux操作系统。
? 高吞吐量四输出基一4FFT引擎。
? 并行支持多倍单输出和四输出引擎。
? 多路I/O数据流模式:流(Streaming)、缓冲突发(BufferedBurst)以及突发(Burst)。
? Atlantic Compliant输入输出接口。
? 指定参数以产生VHDL和Verilog HDL测试台。
? 每个模块转换方向(FFT/IFFT)可指定。
? 易于使用的IP工具台(Toolbench)接口。
? Altera支持的VHDL和Verflog HDL
仿真器上的IP功能仿真模型。
2.特点
FFT 2.0.0版具有以下特点:
? 基-4算法和基-4/2混合基算法。
? 模块浮点结构,可在处理过程中保持最大数据动态范围。
? 使用嵌入式存储器。
? 最大系统时钟频率大于300 MHz。
? 为使用Stratix II、Stratix GX以及Stratix DSP模块和TriMatrix存储器结构进行了优化。
? 支持OpenCore Plus兆核函数评估。
3.性能
FFT兆核函数2.O.O版可以完成变换长度为2m(6≤m≤14)的基一2/4按频率抽选(DIF)的FFT算法。在FFT兆核函数内部,FKr使用模块浮点结构获得最大SNR和最少逻辑需求之间的平衡。
由于FFT兆核函数的性能在很大程度上取决于FFT引擎结构和I/O数据流,因而很难描述FFI、兆核的所有性能结果。表8.1、8.2、8.3、8.4和8.5给出FFT兆核函数的大部分器件性能和资源使用结果。
注释:
(1) 描述数据和旋转因子精度。
(2) 使用Stratix II器件设计,Quartus II软件报告的设计使用的自适应查找表(ALUT)数。逻辑单元(LE)数ALUT数相关。
(3) 在允许使用M-RAM资源的情况下,前面的数字表明在FFT设计向导中取消使用M-RAM时.M4K-RAM的模块数。
注释:
(1) 同表8.1(1)。
(2) 当使用缓冲突发结构时,在FFT。向导中可以指定四输出(Quad.output)FFT擎数。
(3) 同表8.1(2)。
(4) 同表8.1(3)。
注释:
(1) 同表8.1(1)。
(2) 当使用缓冲突发结构时,在FFI、向导中可以指定四输出(Quad—output)FFT引擎数。用户可以并行选择1、2或4个四输出引擎。
(3) 在缓冲突发结构中,转换时间(Transform Time)定义为从已经加载N点输入数据块到第一个转换输出样点准备输出之间的时间。转换时间不包括输出所有转换输出数据块所用的额外N一1个时
注释:
(1) 同表8.1(1)。
(2) 当使用突发数据流结构时,在FFT向导中可以指定引擎数。可以并行选择l到2个单输出引擎或1、2或4个四输出引擎。
(3) 同表8.1(2)。
表8.5在stratix Ⅱ器件中使用突发(BurSt)数据流结构的性能
注释:
(1) 同表8.1(1)。
(2) 在突发I/O数据流结构中,可以在FFT向导中指定引擎数。可以并行选择1到2个单输出引擎,或1、2或4个四输出引擎。
(3) 转换时间定义为从已经加载输入数据块到第一个转换结果样点(对应于输入数据块)输出之间的时帧(Time )。转换时间不包括输出所有转换输出数据块的时间。
(4) 同表8.3(4)。
二.FFT兆核函数的应用
1 系统要求
本节讲述的应用需要下列硬件和软件配置:
? 装有Windows NT/2000/XP,Red Hat Linux 7.3/8.0或Red Hat企业版,Linux 3.0操作系统的PC机;或装有Solaris 7或8操作系统的Sun工作站。
? Quartus II 4.1版本或更高版本软件。
? Altera支持的VHDL或Verilog HDL仿真器(可选)。
2 下载并安装FFT
下载FFT兆核函数的过程与下载PCI编译器的过程相同,请参考7.2.3节下载PCI译器的过程。
1.安装FFT兆核函数文件
可以在Windows、Solaris或Linux操作系统中安装FFT兆核函数。
1) Windows
在装有Windows操作系统的PC机上安装FFT的步骤如下:
(1) 用鼠标左键双击F载的FF~兆核函数安装文件ffl—v
.exe,如fft-v2.0.0exe其中表示FFT兆核函数的版本号。
(2) 在出现FFT安装界面后,根据安装提示完成FFT兆核函数的安装。
2) Solaris
在Solaris操作系统上安装FFT的步骤如下
(1) 键入下面的命令解压FFT压缩包:
gunzip fft—v一solaris.tar.gzr.(回车)
(2) 键入下面的命令提取压缩包内容:
tar vxf fft—v一solaris.tar(回车)
3) Linux
在Linux操作系统上安装FFT的步骤如下:
(1) 键入下面的命令解压FFT压缩包:
gunzip fit—v一linux.tar.gzr(回车)
(2) 键入下面的命令提取压缩包内容:
tar vxf fft—v一linux.tar(回车)
2.目录结构
图8.1给出了安装FFT兆核函数文件后生成的目录结构,其中表示FFT兆核函数安装目录。
3.FFT兆核函数设计应用
本节介绍如何在Windows操作系统下使用Quartus II软件和IP工具台创建一个FFT兆核函数的用户变量。当产生一个FFT兆核函数用户变量以后,设计者即可将其加入到总的工程设计中使用。
1.建立一个新的Quartus II工程
建立一个新的Quartus II工程文件时,可以使用Quartus II New Project Wizard工程向导为工程文件设置工作目录,分配1二程名称,指定项层设计输入的文件名,同时必须指定FFF兆核函数用户库。建立新工程的操作步骤如下:
(1) 启动Quartus II软件。
(2) 选择File→New Project Wizard命令。
(3) 指定新建工程文件的工作目录,本节使用c:\qdesignsfft。
(4) 指定工程文件名,本节使用fft—example。
(5) 点击Next按钮。
(6) 点击User Library Pathnames按钮。
(7) 存Library name栏中指定kfft—vklib\,其中表示安装FFT兆核函数的目录,默认安装目录为c:WlegaCore。点击Add按钮添加用户库,点击OK按钮确定。
(8) 连续点击两次Next按钮,在指定目标器件系列中选择Stratix系列。
(9) 点击Next按钮,选择目标器件。
(10) 点击Finish按钮完成建立新工程。
2.启动IP工具台
根据下面的操作步骤,在Quartus II软件中启动IP工具台:
(1) 选择Tools→MegaWizard Plug—In Manager命令运行MegaWizard Plug-In管理器,弹出MegaWizard Plug-In Manager对话框。
(2) 选择Create a new custom mega variation选项l并点击Next按钮。
(3) 在Installed Plug—Ins中点击Signal Processing文件夹前面的加号“+”展开,同样展开里面的Transforms文件夹。
(4) 选择FFTv2.0.0。
(5) 指定输出文件类型,如AHDL、Verilog HDL或VHDL,本节选择VHDL。
(6) 指定输出文件目录及文件名,如图8.2所示。
(7) 点击Next按钮,Quartus II软件启动FFT兆核函数IP T具台,如图8.3所示。
3.确定参数
使用FFT兆核函数IP工具台创建一个FFT兆核函数用户变量,步骤如下:
(1) 点击FFT兆核函数IP 工具台上的Step 1:Parameterize按钮,弹出Parameterize-FFTMegaCore(g~核函数参数设置)对话框,选择Parameters标签页,如图8.4所示。 (2) 从Target Device Family列表中选择目标器件系列。
(3) 分别从Transform Length、Data Precision和Twiddle Precision列表中选择转换长度、数据精度和旋转因子精度。
注意:旋转因子精度必须小于或等于数据精度。
(4) 设置好FFT兆核函数参数设置对话框的Parameters标签页以后,选择Architecture标签页,如图8.5所示。
(5) 在I/O Data Flow中选择Buffered Burst,然后在Engine Options栏的FFT EngineArchitecture列表中选择Quad Output,在Number of Parrallel FFT Engines列表中选择2。
如果在I/O Data Flow中选择Streaming,FFT兆核函数生成一个具有最少Quad OutputFFT引擎数的设计来满足所需的I/O吞吐量。
注意:一个单FFT引擎结构可以达到点数为1024的Steaming I/O数据流FFT的足够性能。
对于Buffered Burst和Burst I/O数据流结构,可以在l、2和4个Quad Output FFT引擎之间选择并行工作;也可以在FFT Engine Architecture列表中选择Single Outpu FFI"引擎结构,则可以选择1或2个引擎并行工作。如果可以在器件资源和数据吞吐量之间进行折中选择,则选择多个并行引擎可以在牺牲器件资源的情况下减少FFT兆核函数的转换时间。
(6) 设置好FFT兆核函数参数设置对话框的Architecture标签页以后,选择Implementation Options标签页,如图8.6所示。
(7) 在Complex Multiplier Implementatin选择栏中的Structure列表中选择期望的复数乘法器结构。
复数乘法器可以使用4个实数乘法器和2个加法/减法器完成,或使用3个乘法器、5个加法器和一些附加的延时单元完成。在Stratix II、Stratix GX和Stratix器件中选择4个乘法器和2个加法器可以最大化DSP模块的使用并最小化逻辑单元(LE)的使用。
(8) 在Implement Multipliers in列表中选择在器件资源中如何实现乘法器,包括DSP Blocks/Logic Cells、Logic Cells ONLY和DSP Blocks ONLY三个选项。
每个实数乘法器可以仅由DSP Blocks或逻辑单元(LEs)实现,或使用两者组合共同实现。如果选择使用DSP Blocks和LEs组合实现,FFT兆核函数将使用逻辑单元扩展DSP模块的18×18乘法器资源。
(9) 在Memory Options栏中指定存储器选项。
高吞吐量FFT参数设置将增加存储旋转因子的ROM需求。如果选择的目标器件系列支持M512 RAM模块,则设计者可以通过设置Twiddle ROM Distribution滑动条,在M4KRAM和M512 RAM模块之间分配所需的ROM存储空间。设置滑动条位置到最左端,意味着完全在M4K RAM模块中实现ROM存储;设置滑动条位置到最右端,意味着完全在M512 RAM模块中实现ROM存储;设置滑动条在中间位置,意味着使用M4K和M512 RAM模块实现ROM存储。
(10) 完成Implementation Options中的选项设置后点击Finish按钮完成参数设置。
4.建立仿真
IP功能仿真模型是由Quartus II软件(3.0以上版本)产生的周期精确(Cvcle—Accurate)的VHDL或Verilog HDL模型文件。该仿真模型允许使用工业标准的VHDL和Verilog I-IDL仿真器进行IP快速功能仿真。
注意:这些仿真模型输出文件只能用于仿真目的,一定不能用于综合或其他用途使用这些模型进行综合,将产生非函数设计(Non—al Design)。
使用下面的步骤为FFT兆核函数产生IP功能仿真模型:
(1) 点击图8.3所示FFT兆核函数IP工具台上的Step 2:Set Up Simulation按钮。
(2) 选择Set Up Simulator—FFT MegaCore对话框中的Generate Simulation Model选项,如图8.7所示。
(3) 在Language列表中选择兆核函数输出文件语言类型。
(4) 点击OK按钮完成设置。
5.产生兆核函数
指定参数值和IP功能仿真模型选项以后,即可产生用户FFT兆核函数。
(1) 点击图8.3所示的FFT兆核函数IP工具台上的Step 3:Generate按钮。
(2) 弹出IP测试台设计文件报告列表窗口,如图8.8所示,点击Exit按钮关闭该窗口。
IP测试台产生文件的描述见表7.4所示。表8.6列出了FFT兆核函数输出文件的描述。
表中的
表示FFT兆核函数变量文件名,如fft example。
(3) 查看完生成报告以后,点击生成报告窗口的Exit按钮关闭IP工具台并返回到Quartus 1I软件。
4. 设计仿真
使用IP工具台生成的II)功能仿真模型完成设计仿真。IP功能仿真模型是vo或VHO文件,由建立仿真中的设置决定。这些文件用户指定的工作目录中产生,在仿真环境中编译该IP功能仿真模型完成用户FFT 兆核函数变量的功能仿真。
下面的步骤是在ModelSim软件中完成仿真的过程,也可以在任何Altera支持的VHDL或Verilog HDL仿真器上仿真FFT兆核函数。
在ModelSim软件中使用MegaWizard Plug-In设计向导产生的ModelSim Tcl脚本完成仿真的过程如下:
(1) 启动ModelSim仿真器软件。
(2) 在仿真器中,选择File→Change Directory命令,改变工作目录为当前生成的FFT兆核函数变量工作目录。
(3) 存仿真器命令提示符中执行Tcl命令脚本。
? 如果功能仿真语言选择的是VHDL,则执行vho msim.tcl脚本文件;
? 如果功能仿真语言选择的是Verilog HDL,则执行一vomsim.tcl脚本文件。
Tcl脚本建立ModelSim 工程,完成库映射,编译项层设计和相关测试台,然后在波形观察窗L]中给出仿真结果波形。
5. 设计编译
使用Quartus II软件对设计进行综合、布局和布线,完成用户FFT兆核函数变量的编译步骤如卜:
(1) 在Quartus II软件中选择Assignments→Settings命令,弹出Settings对话框。
(2) 在Category中选择Files页面,点击Add按钮。
(3) 添加fft-v2.0.Olib目录下面的fft—pack.vhd文件到OuartusII工程中,如图8.9所示。
注意:确保fit_pack.vhd文件位于File naine框的最顶层,如图8.9所示。否则,在File name框中选中fft_pack.vhd文件,点击图8.9右边的Up按钮将其移动到所有文件的顶层。
(4) 点击OK按钮确定。
(5) 在Quartus ⅡJ软件中选择Processing→Start Compilation命令启动编译。
6. 器件编程
工程编译完成后,可以下载到Altera目标器件中并进行用户硬件功能测试。Altera免费的OpenCore Plus评估特性允许设计者在购买授权之前评估FFT兆核函数的功能。OpenCore Plus评估可以产生IP功能仿真模型以及具有时间限制的编程文件。
当在Quartus II软件中选择Tools→Programmer进行器件编程时,将弹出如图8.10所示的警告对话框,提示生成的编程文件具有时间限制。
7. 安装授权文件
硬件测试结果满足功能和性能上的要求以后,需要购买FFT兆核函数的授权才能将设计转化为产品。
购买了FFT兆核函数的授权以后,需要从Altera网站WWW.altera.com/licensing上申请一个授权文件并安装在用户的计算机上。
在安装FFT兆核函数的授权文件之前,必须已经成功安装了授权的Quartus II软件。安装FFT兆核函数授权文件的方法有下面两种。
1.将FFT兆核函数授权文件内容粘贴到Quartus II授权文件中
(1) 如果正在运行下列软件,应先关闭:Quartus II软件,MAX+PLUS II软件,LeonardoSpectrum综合工具软件,Synplify软件以及ModelSim仿真器软件。
(2) 在文本编辑器中打开FFT兆核函数授权文件,该文件中应包含FEATURE行。
(3) 在文本编辑器中打开Quartus II软件的授权文件。
(4) 从FFT兆核函数授权文件中拷贝FEATURE行(一般包括2行)并粘贴到Quartus II授权文件中。
(5) 保存Quartus II授权文件,扩展名必须为.dat。
2.在Quartus II软件中指定FFT兆核授权文件.
(1) 首先将Altera通过E—mail发送的FFT兆核授权文件license.dat重新命名,如_license.dat
(2) 启动Quartus II软件。
(3) 选择Tools→License Setup,启动Options对话框的License Setup页面。
(4) 在License file栏,在已经存在的授权文件后面加一个分号“:”,在后面正确输入
FFT兆核函数授权文件的路径及文件名。
(5) 点击OK按钮确定设置。
三. FFT兆核函数规范
3.1 功能描述
长度为N的离散傅立叶变换(DFT)是计算单位圆上N点均匀分布的离散时间序列( k=2nk/N,k=0,…,N—1)的取样傅立叶变换。