下载

2下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 FFT资料quartus中fft模块使用

FFT资料quartus中fft模块使用.doc

FFT资料quartus中fft模块使用

草上飞
2018-09-08 0人阅读 举报 0 0 暂无简介

简介:本文档为《FFT资料quartus中fft模块使用doc》,可适用于工程科技领域

AlteraFFT兆核函数版简介清钟沁桐AlteraFFT兆核函数版简介一FFT兆核函数简介AlteraFFT兆核函数版是一个高性能、参数化快速傅立叶变换(FFT)处理器对AlteraStratixII、StratixGX、Stratix以及Cyclone器件系列已经进行了设计优化。FFT兆核函数可以完成高性能复数FFT或逆FFT(IFFT)。  .FFI版本  FFT版具有以下基本性能:  完全支持StratixII、StratixGX、Stratix以及Cyclone和CycloneII系列器件。  支持Windows、Solal.is以及Linux操作系统。  高吞吐量四输出基一FFT引擎。  并行支持多倍单输出和四输出引擎。  多路I/O数据流模式:流(Streaming)、缓冲突发(BufferedBurst)以及突发(Burst)。  AtlanticCompliant输入输出接口。  指定参数以产生VHDL和VerilogHDL测试台。  每个模块转换方向(FFT/IFFT)可指定。  易于使用的IP工具台(Toolbench)接口。  Altera支持的VHDL和VerflogHDL仿真器上的IP功能仿真模型。.特点FFT版具有以下特点:  基算法和基/混合基算法。  模块浮点结构可在处理过程中保持最大数据动态范围。  使用嵌入式存储器。  最大系统时钟频率大于MHz。  为使用StratixII、StratixGX以及StratixDSP模块和TriMatrix存储器结构进行了优化。  支持OpenCorePlus兆核函数评估。.性能FFT兆核函数OO版可以完成变换长度为m(≤m≤)的基一/按频率抽选(DIF)的FFT算法。在FFT兆核函数内部FKr使用模块浮点结构获得最大SNR和最少逻辑需求之间的平衡。由于FFT兆核函数的性能在很大程度上取决于FFT引擎结构和I/O数据流因而很难描述FFI、兆核的所有性能结果。表、、、和给出FFT兆核函数的大部分器件性能和资源使用结果。注释:()  描述数据和旋转因子精度。()  使用StratixII器件设计QuartusII软件报告的设计使用的自适应查找表(ALUT)数。逻辑单元(LE)数ALUT数相关。()  在允许使用MRAM资源的情况下前面的数字表明在FFT设计向导中取消使用MRAM时.MKRAM的模块数。注释:()  同表()。()  当使用缓冲突发结构时在FFT。向导中可以指定四输出(Quad.output)FFT擎数。()  同表()。()  同表()。注释:()  同表()。()  当使用缓冲突发结构时在FFI、向导中可以指定四输出(Quadoutput)FFT引擎数。用户可以并行选择、或个四输出引擎。()  在缓冲突发结构中转换时间(TransformTime)定义为从已经加载N点输入数据块到第一个转换输出样点准备输出之间的时间。转换时间不包括输出所有转换输出数据块所用的额外N一个时注释:()  同表()。()  当使用突发数据流结构时在FFT向导中可以指定引擎数。可以并行选择l到个单输出引擎或、或个四输出引擎。()  同表()。表在stratixⅡ器件中使用突发(BurSt)数据流结构的性能注释:()  同表()。()  在突发I/O数据流结构中可以在FFT向导中指定引擎数。可以并行选择到个单输出引擎或、或个四输出引擎。()  转换时间定义为从已经加载输入数据块到第一个转换结果样点(对应于输入数据块)输出之间的时帧(Time)。转换时间不包括输出所有转换输出数据块的时间。()  同表()。二FFT兆核函数的应用  系统要求本节讲述的应用需要下列硬件和软件配置:  装有WindowsNT//XPRedHatLinux/或RedHat企业版Linux.操作系统的PC机或装有Solaris或操作系统的Sun工作站。  QuartusII版本或更高版本软件。  Altera支持的VHDL或VerilogHDL仿真器(可选)。  下载并安装FFT下载FFT兆核函数的过程与下载PCI编译器的过程相同请参考节下载PCI译器的过程。  .安装FFT兆核函数文件可以在Windows、Solaris或Linux操作系统中安装FFT兆核函数。  )  Windows在装有Windows操作系统的PC机上安装FFT的步骤如下:()  用鼠标左键双击F载的FF~兆核函数安装文件fflv<version>.exe如fftvexe其中<version>表示FFT兆核函数的版本号。  ()  在出现FFT安装界面后根据安装提示完成FFT兆核函数的安装。  )  Solaris在Solaris操作系统上安装FFT的步骤如下  ()  键入下面的命令解压FFT压缩包:      gunzipfftv<version>一solaristargzr(回车)  ()  键入下面的命令提取压缩包内容:      tarvxffftv<version>一solaris.tar(回车)  )  Linux在Linux操作系统上安装FFT的步骤如下:  ()  键入下面的命令解压FFT压缩包:      gunzipfitv<version>一linuxtargzr(回车)  ()  键入下面的命令提取压缩包内容:      tarvxffftv<version>一linuxtar(回车).目录结构图.给出了安装FFT兆核函数文件后生成的目录结构,其中<path>表示FFT兆核函数安装目录。FFT兆核函数设计应用  本节介绍如何在Windows操作系统下使用QuartusII软件和IP工具台创建一个FFT兆核函数的用户变量。当产生一个FFT兆核函数用户变量以后设计者即可将其加入到总的工程设计中使用。  .建立一个新的QuartusII工程建立一个新的QuartusII工程文件时可以使用QuartusIINewProjectWizard工程向导为工程文件设置工作目录分配二程名称指定项层设计输入的文件名同时必须指定FFF兆核函数用户库。建立新工程的操作步骤如下:()  启动QuartusII软件。()  选择File→NewProjectWizard命令。()  指定新建工程文件的工作目录本节使用c:\qdesignsfft。()  指定工程文件名本节使用fftexample。()  点击Next按钮。()  点击UserLibraryPathnames按钮。()  存Libraryname栏中指定<path>kfftv<version>klib\其中<path>表示安装FFT兆核函数的目录默认安装目录为c:WlegaCore。点击Add按钮添加用户库点击OK按钮确定。()  连续点击两次Next按钮在指定目标器件系列中选择Stratix系列。()  点击Next按钮选择目标器件。()  点击Finish按钮完成建立新工程。.启动IP工具台根据下面的操作步骤在QuartusII软件中启动IP工具台:()  选择Tools→MegaWizardPlugInManager命令运行MegaWizardPlugIn管理器弹出MegaWizardPlugInManager对话框。()  选择Createanewcustommegavariation选项l并点击Next按钮。()  在InstalledPlugIns中点击SignalProcessing文件夹前面的加号“”展开同样展开里面的Transforms文件夹。()  选择FFTv。()  指定输出文件类型如AHDL、VerilogHDL或VHDL本节选择VHDL。()  指定输出文件目录及文件名如图所示。  ()  点击Next按钮QuartusII软件启动FFT兆核函数IPT具台如图所示。.确定参数使用FFT兆核函数IP工具台创建一个FFT兆核函数用户变量步骤如下:()  点击FFT兆核函数IP工具台上的Step:Parameterize按钮弹出ParameterizeFFTMegaCore(g~核函数参数设置)对话框选择Parameters标签页如图所示。()  从TargetDeviceFamily列表中选择目标器件系列。()  分别从TransformLength、DataPrecision和TwiddlePrecision列表中选择转换长度、数据精度和旋转因子精度。  注意:旋转因子精度必须小于或等于数据精度。()  设置好FFT兆核函数参数设置对话框的Parameters标签页以后选择Architecture标签页如图所示。  ()  在I/ODataFlow中选择BufferedBurst然后在EngineOptions栏的FFTEngineArchitecture列表中选择QuadOutput在NumberofParrallelFFTEngines列表中选择。  如果在I/ODataFlow中选择StreamingFFT兆核函数生成一个具有最少QuadOutpFT引擎数的设计来满足所需的I/O吞吐量。注意:一个单FFT引擎结构可以达到点数为的SteamingI/O数据流FFT的足够性能。对于BufferedBurst和BurstI/O数据流结构可以在l、和个QuadOutputFFT引擎之间选择并行工作也可以在FFTEngineArchitecture列表中选择SingleOutpuFFI"引擎结构则可以选择或个引擎并行工作。如果可以在器件资源和数据吞吐量之间进行折中选择则选择多个并行引擎可以在牺牲器件资源的情况下减少FFT兆核函数的转换时间。()  设置好FFT兆核函数参数设置对话框的Architecture标签页以后选择ImplementationOptions标签页如图所示。()  在ComplexMultiplierImplementatin选择栏中的Structure列表中选择期望的复数乘法器结构。复数乘法器可以使用个实数乘法器和个加法/减法器完成或使用个乘法器、个加法器和一些附加的延时单元完成。在StratixII、StratixGX和Stratix器件中选择个乘法器和个加法器可以最大化DSP模块的使用并最小化逻辑单元(LE)的使用。()  在ImplementMultipliersin列表中选择在器件资源中如何实现乘法器包括DSPBlocks/LogicCells、LogicCellsONLY和DSPBlocksONLY三个选项。每个实数乘法器可以仅由DSPBlocks或逻辑单元(LEs)实现或使用两者组合共同实现。如果选择使用DSPBlocks和LEs组合实现FFT兆核函数将使用逻辑单元扩展DSP模块的×乘法器资源。()  在MemoryOptions栏中指定存储器选项。高吞吐量FFT参数设置将增加存储旋转因子的ROM需求。如果选择的目标器件系列支持MRAM模块则设计者可以通过设置TwiddleROMDistribution滑动条在MKRAM和MRAM模块之间分配所需的ROM存储空间。设置滑动条位置到最左端意味着完全在MKRAM模块中实现ROM存储设置滑动条位置到最右端意味着完全在MRAM模块中实现ROM存储设置滑动条在中间位置意味着使用MK和MRAM模块实现ROM存储。()  完成ImplementationOptions中的选项设置后点击Finish按钮完成参数设置。.建立仿真IP功能仿真模型是由QuartusII软件(以上版本)产生的周期精确(CvcleAccurate)的VHDL或VerilogHDL模型文件。该仿真模型允许使用工业标准的VHDL和VerilogIIDL仿真器进行IP快速功能仿真。注意:这些仿真模型输出文件只能用于仿真目的一定不能用于综合或其他用途使用这些模型进行综合将产生非函数设计(NonalDesign)。使用下面的步骤为FFT兆核函数产生IP功能仿真模型:()  点击图所示FFT兆核函数IP工具台上的Step:SetUpSimulation按钮。()  选择SetUpSimulatorFFTMegaCore对话框中的GenerateSimulationModel选项如图所示。()  在Language列表中选择兆核函数输出文件语言类型。()  点击OK按钮完成设置。.产生兆核函数指定参数值和IP功能仿真模型选项以后即可产生用户FFT兆核函数。()  点击图所示的FFT兆核函数IP工具台上的Step:Generate按钮。()  弹出IP测试台设计文件报告列表窗口如图所示点击Exit按钮关闭该窗口。IP测试台产生文件的描述见表所示。表列出了FFT兆核函数输出文件的描述。表中的<vatiationname>表示FFT兆核函数变量文件名如fftexample。()  查看完生成报告以后点击生成报告窗口的Exit按钮关闭IP工具台并返回到QuartusI软件。设计仿真使用IP工具台生成的II)功能仿真模型完成设计仿真。IP功能仿真模型是vo或VHO文件由建立仿真中的设置决定。这些文件用户指定的工作目录中产生在仿真环境中编译该IP功能仿真模型完成用户FFT兆核函数变量的功能仿真。下面的步骤是在ModelSim软件中完成仿真的过程也可以在任何Altera支持的VHDL或VerilogHDL仿真器上仿真FFT兆核函数。在ModelSim软件中使用MegaWizardPlugIn设计向导产生的ModelSimTcl脚本完成仿真的过程如下:()  启动ModelSim仿真器软件。()  在仿真器中选择File→ChangeDirectory命令改变工作目录为当前生成的FFT兆核函数变量工作目录。()  在仿真器命令提示符中执行Tcl命令脚本。 如果功能仿真语言选择的是VHDL则执行<variationname>vhomsim.tcl脚本文件 如果功能仿真语言选择的是VerilogHDL则执行<variationname>一vomsim.tcl脚本文件。Tcl脚本建立ModelSim工程完成库映射编译项层设计和相关测试台然后在波形观察窗L中给出仿真结果波形。设计编译使用QuartusII软件对设计进行综合、布局和布线完成用户FFT兆核函数变量的编译步骤如卜:()  在QuartusII软件中选择Assignments→Settings命令弹出Settings对话框。()  在Category中选择Files页面点击Add按钮。()  添加<FFT兆核函数安装路径>fftvOlib目录下面的fftpack.vhd文件到OuartusII工程中如图所示。注意:确保fitpackvhd文件位于Filenaine框的最顶层如图所示。否则在Filename框中选中fftpackvhd文件点击图右边的Up按钮将其移动到所有文件的顶层。()  点击OK按钮确定。  ()  在QuartusⅡJ软件中选择Processing→StartCompilation命令启动编译。  器件编程工程编译完成后可以下载到Altera目标器件中并进行用户硬件功能测试。Altera免费的OpenCorePlus评估特性允许设计者在购买授权之前评估FFT兆核函数的功能。OpenCorePlus评估可以产生IP功能仿真模型以及具有时间限制的编程文件。当在QuartusII软件中选择Tools→Programmer进行器件编程时将弹出如图所示的警告对话框提示生成的编程文件具有时间限制。  安装授权文件硬件测试结果满足功能和性能上的要求以后需要购买FFT兆核函数的授权才能将设计转化为产品。购买了FFT兆核函数的授权以后需要从Altera网站WWW.altera.com/licensing上申请一个授权文件并安装在用户的计算机上。在安装FFT兆核函数的授权文件之前必须已经成功安装了授权的QuartusII软件。安装FFT兆核函数授权文件的方法有下面两种。.将FFT兆核函数授权文件内容粘贴到QuartusII授权文件中()  如果正在运行下列软件应先关闭:QuartusII软件MAXPLUSII软件LeonardoSpectrum综合工具软件Synplify软件以及ModelSim仿真器软件。()  在文本编辑器中打开FFT兆核函数授权文件该文件中应包含FEATURE行。()  在文本编辑器中打开QuartusII软件的授权文件。()  从FFT兆核函数授权文件中拷贝FEATURE行(一般包括行)并粘贴到QuartusII授权文件中。()  保存QuartusII授权文件扩展名必须为dat。.在QuartusII软件中指定FFT兆核授权文件.()  首先将Altera通过Email发送的FFT兆核授权文件licensedat重新命名如<FFTVersion>licensedat()  启动QuartusII软件。()  选择Tools→LicenseSetup启动Options对话框的LicenseSetup页面。  ()  在Licensefile栏在已经存在的授权文件后面加一个分号“:”在后面正确输入FFT兆核函数授权文件的路径及文件名。()  点击OK按钮确定设置。三  FFT兆核函数规范  功能描述长度为N的离散傅立叶变换(DFT)是计算单位圆上N点均匀分布的离散时间序列(k=nk/Nk=…N)的取样傅立叶变换。DFI直接计算的复杂性可以通过快速傅立叶变换(FFT)算法大大降低。FFT算法基于()和()式中求和运算的嵌套分解以及复数乘法的对称性得以实现。其中一类FFT算法为库利一图基(CooleyTukey)基r按频率抽选(decimationinfrequency缩写为DIF)法将输入序列循环分解为N/r个长度为r的序列并需要LOgrN级运算。每一级分解由同一个硬件单元完成包括数据从存储器中读取、通过FFT处理器以及写入存储器的过程。每次通过FFf。处理器需要完成log,N次运算。通常基数选择仁、和增加分解基数r可以在牺牲器件资源的情况下减少通过FFT处理器的次数。  将输入序列循环分解为点序列的基分解使用点.FFT在乘法运算上具有更大优势这也是AlteraFFT兆核函数所选择的分解基数是可以获得最大数据吞吐量的分解这种分解仅在蝶形运算之后乘旋转因子中才有复数乘法。在N是的奇数幂的情况下FFT兆核自动在完成转换的最后使用基运算。为了在整个转换计算过程中保持高信噪比(SNR)FFT兆核函数采用块浮点(Blockfloatingpoint)结构这种结构是定点(Fixedpoint)与全浮点(Fullfloatingpoint)结构之间的平衡。在定点结构中数据精度必须足够大才能充分表示整个转换计算过程中所有的中间计算结果。在执行定点FFT过程中经常出现数据位数过大或精度损失的现象。在浮点结构中每个数用单独的指数和尾数来表示虽然这样可以极大提高数据精度但浮点运算需要占用更多的器件资源。在块浮点结构中每个数据模块中所有的数值都有一个独立的尾数但共享一个公共的指数输入到FFT函数的数据作为定点复数。块浮点结构保证了在FFT函数和整个转换过程中数据位数的完整使用。每次通过基FFT运算以后数据位数最大可能增加位根据前面输出数据模块动态范围的测量进行按比例换算换算过程中累计的移位次数被作为整个模块的指数输出。这种移位方法保证最低位(LSB)的最小值在乘法运算后的输出进行舍入操作之前就被丢弃。实际上块浮点表示法起到了数字自动增益控制(AGC)的作用。为了在连续输出模块中产生统一的比例必须用最终的指数对FFT函数输出进行比例换算。注意:AlteraFFT兆核函数的块浮点输出与Matlab这种全精度FFT的输出相比应该用(exponentout)进行比例换算来解决转换过程中最低位(LSB)被丢弃的影响。其中exponentout表示指数输出。  FFT处理器引擎结构  FFT兆核函数可以通过定制参数来使用两种不同的引擎结构:四输出(Quadoutput)或单输出(Singleoutput)引擎结构。为了增加FFT兆核函数的总吞吐量也可以在一个FFT兆核函数变量中使用多个并行引擎。  .四输出FFT引擎结构对于需要最少转换时间的应用四输出FFT引擎结构是最佳选择。四输出(Quadoutput)指的是内部FFT蝶形处理器的吞吐量这种引擎实现结构在一个单时钟周期内计算所有四个基蝶形复数输出。图给出了四输出FFT引擎结构的框图。  复取样数据xk,m从内部存储器并行读出并由变换开关(sw)重新排序。紧接着排序后的取样数据由基处理器处理并得到复数输出Gk,m。由于基按频率抽选(DIF)分解方法固有的数学特点在蝶形处理器输出上仅需要个复数乘法器完成次乘旋转因子(有一个旋转因子为不需要乘)计算。为了辨别取样数据的最大动态范围四个输出由块浮点单元(BFPU)并行估计丢弃适当的最低位(LSB)在写入内部存储器之前对复数值进行四舍五入并重新排序。.单输出FFT引擎结构在需要最小尺寸FFT函数的应用中单输出引擎最适合。单输出也指的是内部FFT蝶形处理器的吞吐量。在这种引擎结构中每个时钟周期计算一个单蝶形输出需要一个单独的复数乘法器其引擎结构如图所示。图  单输出FFT引擎结构  I/O数据流结构  FFT兆核函数支持的I/O数据流结构选项包括:流(Streaming)、缓冲突发(BufferedBurst)和突发(Burst)。  .流(Streaming)I/O数据流结构流I/数据流结构允许输入数据连续处理并输出连续的复数数据流这个过程中不需要停止FFT函数数据流的进出。图给出了一个这种数据流结构的仿真结果。FFT兆核函数采用AlteraAtlantic接口I/协议输入接口为主设备汇端(MasterSink)而输出接口为主设备源端(MasterSource)。在系统复位信号(reset)变为低电平后数据源将masterlsinkdav信号置为高电平对于FFT函数来说这表明在输入端至少有N个复数据样点可以输入。作为回应FFT函数将mastersinkena信号置高电平表明有能力接收这些输入信号。数据源加载第一个复数据样点到FFT函数中同时将mastersinksop信号置高电平表示输入模块的开始。在下一个时钟周期mastersinksop信号被复位并以自然顺序加载数据样点。图详细说明了输入信号流程控制时序图中xr(n)表示输入复数据实部xi(n)表示输入复数据虚部。在Streaming数据流结构中FFT函数希望输入端的输入数据连续可用因此mastersinkena一直保持高电平除非系统复位或由于mastersinkdav信号复位显示输入数据模块不完整或mastersinksop信号置高电平失败mastersinkena信号才复位。  如果要在一个输入模块的边界上停止模块数据流mastersinksop信号在前一个模块的最后数据样点输入以后将保持低电平。FFT函数复位mastersinkena信号并继续处理已经载入的数据模块。FFT函数中的流水线已经清除以后mastersinkena重新置为高电平通过在下一个输入模块流的第一个输入数据样点上置位mastersinksop信号来初始化下一个输入模块的读取。当FFT已经完成了输入模块的变换并且从设备汇端(slavesink)将mastersourcedav信号置高电平(表示数据从设备接收器可以接收输出数据模块)时FFT将mastersourceena信号置高电平并且以自然顺序输出复数变换域数据模块。FFT函数在mastersourcesop信号上输出一个高电平脉冲表示第一个输出样点如图所示。图详细说明了输出流程控制时序。N个时钟周期以后mastersourceeop信号被置为高电平表示转换输出数据块结束如图所示。.缓冲突发(BufferedBurst)I/O数据流结构缓冲突发I/O数据流结构的FFT需要的存储器资源比流动I/O数据流结构少但平均模块吞吐量减少。图给出了一个缓冲突发I/O数据流结构的仿真波形实例。在系统复位信号(reset)变为低电平后数据源将mastersinkdav信号置为高电平对于FFT函数来说这表明在输入端至少有N个复数据样点可以输入。作为刚应FFT函数将mastersinkena信号置高电平表明有能力接收这些输入信号。数据源加载第一个复数据样点到FFT函数中同时将mastersinksop信号置高电平表示输入模块的开始。在下一个时钟周期,mastersinksop信号复位并以自然顺序加载后面的N个复输入数据样点。当完全载入输入模块时FFT函数复位mastersinkena信号表示FFT不再接收其他输入数据。此时FFT函数开始计算输入数据模块的变换结果。图详细说明了输入信号流程控制时序。在FFT处理器从内部输入缓冲区读取输入样点之后FFT将mastersinkena信号重新置为高电平准备读取下一个输入模块。下一个输入模块的起点由mastersinksop脉冲确定。当FFT完成输入模块的变换并且从设备汇端(SlaveSink)置mastersourcedav信号为高电平(表示数据从设备接收器可以接收输出数据模块)时FFT将mastersourceena信号置高电平并以自然顺序输出复数变换域数据模块。图说明了输出信号流程时序。信号mastersourcesop和mastersourceeop分别表示输出模块数据包的起点(startofpacket)和终点(endofpacket)如图所示。.突发(Burst)I/数据流结构  突发I/数据流结构的执行过程与缓冲突发结构相同不同的是对于给定参数设置突发结构在降低平均吞吐量的前提下需要更少的存储资源。图给出了突发结构的仿真结果。同样mastersourceena和mastersinkena信号分别表示FFT的系统数据源和从设备汇端(SlaveSink)信号即当:FFT可以接收新的数据块以及FFT输出端存在有效输出数据块时信号有效。在突发I/O数据流结构中载入一个有效输入模块以后mastersinkena信号被复位直到FFT函数完成转换并且输出数据模块被完全读出为止这时mastersinkena信号才被重新置位准备下一个输入模块的载入。四Atlantic接口Altera提供的经过互用性测试、高性能的标准接口IP(IntellectualProperty)核允许设计者像使用POSPHY、UTOPIA、FlexBus、RapidIO和HyperTransport这样的协议一样使用IP协议。其中POSPHY和UTOPIA协议分别为SONET/SDH和异步传输模式(ATM)提供物理层和链路层的接口FlexBus接口由AMCC开发可处理SONET传输层上的变长度IP包:RapidIO技术是高性能的包交换互连技术用于微处理器、数字信号处理器、通信和网络处理器、系统存储器和外部设备之间数据和控制信息的传送HyperTransport技术是一种主要用于处理器接口的高速、高性能点对点链路技术。随着AlteraAtlantic标准片上接口的引入设计人员可以通过简单的布线来桥接不同的I/O标准。Altera标准化Atlantic数据路径接口简化了桥接各种不兼容设备的任务Atlantic总线是一种用于IP核快速集成的片上数据路径总线。图是使用Atlantic接口的FlexBusLevel和。POSPHYLevel协议接口的桥接方式。Atlantic接口是一种可扩展的高速片上接口主要用于数据包和数据单元的传输。对可编程逻辑器件(PLD)进行优化以后Atlantic接口使得设计者能方便迅速地将不兼容的设备连接在一起并便于用户IP核集成简单、定义清晰、受支持的接口。Atlantic接口是一种面向数据包传输的同步点对点连接可扩展的时钟频率和数据总线宽度使得对于任意长度数据包都能有很高的吞吐量。Atlantic接口支持主设备源端到从设备汇端或者从设备源端到主设备汇端的互连关系。控制信号和固定的数据包起始点(SOP)对齐简化了包的处理并使流程控制变得更灵活。对Atlantic接口的特点总结如下:  任意长度的面向数据包的灵活接口  连接所有Altera数据单元和数据包兆核函数的接口  同步点对点连接  高吞吐量且控制流程灵活  具有主设备源端/从设备汇端或主设备汇端/从设备源端的相对关系  可扩展的时钟频率和数据路径宽度  固定的数据包起始点(SOP)对齐简化了包的处理。  Atlantic接口功能描述Atlantic接口上的数据流方向可以由主设备到从设备(主设备源端)也可以由从设备到主设备(从设备源端)。图l(a)给出了由主设备源端到从设备汇端传输的Atlantic接口框图图l(b)给出了由从设备源端到主设备汇端传输的Atlantic接口框图。  图给出了一个数据包(主设备或从设备源端)配置传输实例在这种情况下ena和val信号持续高电平。      说明:()sop信号标记数据包起始点(SOP)。()eop信号标记数据包终止点(EOP)mty信号表示无效字节数。  .主设备源端  从设备汇端(slaveSink)接口响应主设备源端接口的写命令。主设备置位ena信号并驱动dat总线上的数据。在下一个clk上升沿从设备监测dat和ena信号。如果ena信号为高电平从设备接收并处理dat总线数据否则放弃dat总线数据。由于ena信号已经表明了dat总线上包含新的有效数据因此在这个方向上不需要val信号。如果ena信号为低电平表明dat总线没有定义。从设备汇端没有周期循环(cyclebycycle)流程控制它通过dav信号请求主设备停止数据传输。但根据不同的应用模式主设备可能需要几个时钟周期的时间才能停止传输数据。dav信号表示从设备可以接收大批数据但数据的数量取决于应用模式。如果主设备在dav信号复位后的长时间内连续置位ena信号将导致从设备溢出。对于主设备源端而言在ena信号置位或复位之后以及dat总线上的数据流开始或停止之后都不需要延时。图所示为主设备源端Atlantic接口时序波形。时序说明:()从设备汇端有空间接收起始字(ThresholdWords)。()主设备源端开始向从设备汇端写数据。()从设备汇端不再接收起始字主设备源端可以继续发送数据但必须保证从设备汇端不溢出。()主设备源端停止发送数据。()从设备汇端有空间接收起始字。()主设备源端开始向从设备汇端写数据。()从设备汇端还有空间但主设备源端数据已经发送完。()主设备源端监测到一个错误并置位err信号。()主设备源端识别到一个数据错误置位err信号并保持直到eop信号复位。图  主设备源端Atlantic接口时序波形  .从设备源端  主设备汇端接口向从设备源端接口产生读命令。当主设备准备好接收数据时主设备置位ena信号。在下一个clk的上升沿从设备监测到ena置位从立即在dat总线上驱动新的数据并置位val信号或复位val信号。在下一个clk上升沿主设备监测val信号状态并采集dat总线数据。如果val信号为高电平主设备可以使用dat总线上的数值否则dat总线没有定义主设备将放弃dat总线上的信号。如果ena信号在前一个时钟沿被置位并且val信号在当前时钟沿置位那么dat、sop、eop以及err信号在当前时钟沿有效并且dat总线包含新的数据。如果val信号被复位sop、eop、err以及dat信号不明确。dav信号表示从设备可以提供大批量数据但数据的数量取决于应用模式。如果主设备在dav信号复位后的长时间内连续置位ena信号将导致从设备下溢。图所示为从设备源端流程控制时序。时序说明:()主设备置位ena信号请求新的数据。()从设备响应主设备请求驱动dat总线并置位val信号。()由于主设备没有数据请求从设备保持dat和val信号由于dat总线一直保持常数不变主设备可以在任何一点采样。()主设备再一次置位ena信号请求新的数据。()从设备没有数据并复位val信号。()()从设备有新数据开始驱动dat总线并置位val信号。()从设备保持val、sop、eop、err和dat信号。图  从设备源端流程控制时序图所示为从设备源端下溢处理时序。主设备可以连续保持ena信号为高电平让从设备在dat总线上随意传送数据通过val信号说明dat总线是否包含新的数据。图所示为在从设备流程控制下的从设备源端时序。通常如果主设备检测到val信号在当前clk信号上升沿被置位并且ena信号在前一个clk上升沿置位则主设备仅接收新数据。但是如果ena信号被复位从设备将保持dat、sop、eop、CIT和val信号状态。这时主设备可以随时采集val和dat信号直到ena信号重新被置位之后的clk边沿为止。图所示为主设备流程控制下的从设备源端时序。时序说明:()从设备复位dav信号表明可能发生下溢。()从设备下溢并复位val信号dat、sop、eop以及err信号成为不确定信号()主设备复位ena信号停止数据流val信号保持dat、sop、eop和err信号不确定。()从设备置位dav信号表示dat总线上有数据可用。因为ena信号被复位val保持复位状态并且  dat、sop、eop和err信号不确定。()主设备置位ena信号重新启动数据流。()从设备一个周期后恢复数据然后将val信号置位dat、sop、eop和err信号恢复有效。图  从设备源端下溢处理时序时序说明:()()从设备有新数据从设备驱动dat总线并置位val信号。()()从设备没有新数据dat总线状态没有定义从设备复位val信号。图  从设备流程控制的从设备源端时序时序说明:()主设备置位ena信号请求数据。()从设备在dat总线上驱动新数据。()从设备检测到ena信号复位保持dat和val信号当前状态。()主设备可以在所指的任一时钟边沿采集dat信号。图  主设备流程控制下的从设备源端时序对于从设备源端到主设备汇端来说从ena信号被置位或复位到dat总线上数据流开始或停止之间有一个时钟周期的延时。当主设备置位ena信号时直到clk信号的下一个上升沿以后在dat总线上才会有新的数据。同样当主设备复位ena信号时在clk的下一个上升沿dat和val信号将处于保持状态直到ena被重新置位。由于接口采样流水线结构因而这个延时并不影响接口的净吞吐量。dav信号有效表明从设备有大量有效数据。但如果daV信号无效主设备也可以置位ena信号。当ena信号被置位时如果从设备没有可以立刻读取的数据从设备将复位val信号。图所示为具有主设备汇端的Atlantic接口时序。时序说明:()从设备源端表明数据可用。()主设备汇端开始读数据。()主设备汇端在一个时钟周期时间内停止读数据val信号保持高电平并且dat、sop和eop信号  保持当前状态。()从设备源端表明只有少量可读数据。主设备汇端在检测到val信号复位之前可继续读取数据。()主设备汇端继续读取数据val信号为高电平时数据仍然有效。()从设备源端不能提供更多数据复位val信号。()在dav信号被重新置位之前主设备汇端处于空闲状态。()从设备源端检测到一个eop错误同时置位err信号。()从设备源端检测到一个数据错误在复位eop信号之前置位err信号。图具有主设备汇端的Atlantic接口时序  信号说明为了在同一模块中支持多个Atlantic接口用户应通过加入前缀的方法区分各个接口的信号名即<前缀><信号名>。表、、分别给出了Atlantic接口全局信号、控制信号和数据信号的描述。Altera提供的FFTMegacore提供三个有关信号的输出也就是实部幅值虚部幅值和指数值。FFT采用BlockFloatingPoint的数字表达方式。所谓的BFP是介于定点数和浮点数之间的一种数字表示方法。众所周知每个浮点数由尾数(mantissa)和指数(Exponent)共同组成。如果要计算的数多了额外的指数寄存器就会让一些系统吃不消了。一个解决办法就是一批要被同样的算法处理的数假设把n个这样的数叫做一个block让他们共享一个指数寄存器数与数的区别仅在其尾数项。在运算的时候幅值最大的那个数的最高位成为敏感位如果它要溢出那么指数寄存器记录一次(如果用符号表示溢出一次原来指数寄存器的值为则新值应该为)同时尾数向右移一位(LSB被丢弃MSB前面补符号位)这样尾数就不会溢出。到最后综合计算结果的时候尾数的值向左移n位(如果指数最后值为n的话)或者说尾数乘上的n次方才对应真正的输出。这样的好处是节约了寄存器缺点是引入了一定的误差同时有个特点:对于多次运算的系统每一次运算中产生的最大幅值的数可能不同(比如说前次运算最大幅值由第m个数产生而下次可能由第j个数产生)到最后群龙无首后果可能是指数项绝对值很大但是尾数幅值很小(比如说尾数或者我觉得叫基数可能更合适一些如果是位那么数据最高位可能只是第位其余的高位全是符号位)。有些系统里面人们并不关心输出结果相对于输入的真是幅值是多少而更想让一个block的输出幅值相对于基数的fullscale尽量地大比方说一个block中幅值输出是位那就希望该block中的最大幅值的最大数据位出现在MSB的下一位只有MSB一位表示符号位。这样的情况很多比如运算系统的位输出接一个位的DAC这种情况下系统输出幅值相对于位的fullscale越大则DAC输出的模拟信号的幅值就越大发射的信号也就越强。实习的时候Modem里就碰到了类似的情况。一开始不管我们怎么调输入DAC的输出始终很小也就是说出现了上面描述的问题。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/25

FFT资料quartus中fft模块使用

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利