Quartus II 与ModelSim-Altera联合仿真FFT IP核之FFT IP核分析

FFT IP Core Features

参数设置

FFT IP核有4种模式,分别为:

  • 突发模式(Burst);
  • 缓存突发模式(Buffered Burst);
  • 流模式(Streaming);
  • 可变流模式(Variable Streaming);

前3中模式运算速度依次增大,占用资源也依次增加,第4种模式(Variable Streaming)可以用于在线改变FFT的大小。速度和流模式差不多,资源占用更多。

分为基本配置和高级配置两种,基本配置包括配置FFT ip核的变换长度,FFT还是IFFT,数据模式,输入、输出的顺序。数据精度等。高级配置包括FFT的结构,FFT的引擎数。

Tansform:

Length:是FFT的变换长度,只能选择指定长度,不能自定义。

Direction:指定该IP核完成的是FFT变换还是用户可控制的FFT变换或IFFT变换。

I/O:

Data Flow:选择输入数据流的方式,共有4中方式,突发(Burst)、缓存突发(BufferedBurst)、流模式(Streaming)、可变长度流模式(Variable Streaming),其中前3种方式运算速度依次增加,消耗的资源也依次增加,第4种方式允许用户改变FFT的变换长度,速度和流模式(Streaming)差不多,但消耗更多资源。

Input Otder:输入数据的顺序

Output Order:输出数据的顺序

Data and Twiddle:

Representation:数据数据的结构,有三种分别是:

  • Block Floating(块浮点);
  • Fixed Point(定点);
  • Single Floating Point(单浮点);

Fixed Point和Single Floating Point这两种方式只能用于可变流模式(Variable Streaming),对于突发(Burst)、缓存突发(Buffered Burst)、流模式(Streaming)这三种方式来说只能用(块浮点)Block Floating。块浮点就是在数据的一帧数据中有一个共同的缩放因子,这同时也带来了一个问题,当一帧数据中有大有小的时候,共用一个缩放因子会造成小数(比较小的数)误差增大。

  • 定点:小数点的位置确定;
  • 浮点:小数点的位置不确定,浮点数转换成二进制数存放的准则:如20.25,转换成二进制并归一化:10100.01=1.010001*2^4;用32位浮点表示 [31] 1位符号 [30-23]8位指数 [22-00]23位小数:0 00000100 00000000000000000010001
  • 块浮点:一个数据块的数据共享一个指数。例如一个数据块有6个数据,则开7个空间,前六个放数据,后一个放指数;指数用的是此数据块中最大值归一化后的指数,其余5个数按此指数存放二进制数;

Data Input Width:输入数据的数据宽度

Twiddle Width:旋转因子的数据宽度,旋转因子的数据宽度不能大于输入数据的数据宽度

Data Output Width::输出数据的数据宽度,FFT的计算结果是输出的实部和虚部与缩放因子(EXP)的结合,缩放因子为负表示,输出数据需要左移(增大),为正则右移,输出的实部和虚部,缩放因子都是有符号数,这点需要注意。

Latency Estimaters:

  • Calculation:计算的延迟
  • Throughput Latency:处理延迟

高级设置一共有两个选择,一个是选择运算的结构,一个是选择FFT的引擎数。

运算结构有两种:Single Output(单输出)和Qaud Output(四输出),单输出一个时钟周期只计算一个FFT的蝶形运算,四输出一个周期计算4个基4的蝶形运算。

FFT的引擎数越多,计算速度越快,当然也消耗更多的资源。默认是四输出,一个FFT引擎,默认设置即可。

设置完参数后即可点击Generate HDL来产生HDL文件(综合文件和仿真文件)。

接口信号信息

一个时钟,时钟就是FFT ip核运算的时钟;

一个复位,reset_n是FFT ip核复位信号,低电平有效,复位的时候sink_ready信号一直为低(无效);

一个FFT/IFFT控制线,inverser设置FFT变换还是IFFT变换,低电平表示FFT,高电平表示IFFT。一个sink,一个source 。

sink信号:

  • sink_valid:输入到FFT,输入数据有效信号,在输入数据期间要保持有效;
  • sink_sop:输入到FFT,输入数据起始信号,与第一个数据对齐,只需保持一个时钟周期即可;
  • sink_eop:输入到FFT,输入数据结束信号,与最后一个数据对齐,只需保持一个时钟周期;
  • sink_ready: FFT输出,输入准备好信号,此信号为高表示可输入变换数据,否则不要输入变换数据;
  • sink_error:输入到FFT,输入错误信号,置0即可;
  • sink_real:输入到FFT,输入的实部信号;
  • sink_imag:输入到FFT,输入的虚部信号;

Source信号:

  • source_valid:FFT输出,输出有效信号,FFT变换完成后,此信号置高,开始输出数据;
  • source_ready:输入到FFT,输出数据准备好信号,置1即可;
  • source_error:FFT输出,输出错误信号,若输入的数据格式有误,则不进行FFT变换,并给出错误值,根据错误值可查看手册,确定是输入数据怎么错了;
  • source_sop:FFT输出,输出数据起始信号,与输出的第一个数据对齐;
  • source_eop:FFT输出,输出数据的终止信号,与输出的最后一个数据对齐;
  • source_real:FFT输出,输出数据的实部;
  • source_imag:FFT输出,输出数据的虚部;
  • source_exp:FFT输出,数据的缩放因子;

输出数据格式

Source_exp的输出范围

注:

  • FFT IP核的输入数据和输出数据,缩放因子都是有符号数;
  • 实际运算的结果是实部和虚部与缩放因子的结合,若缩放因子为负,实部和虚部要左移相应的位数,若为正则右移,例如:缩放因子宽度为6,二进制值为101011,该值为有符号数,表示-21,则实部和虚部需要左移21位才是最终结果;
  • 若是FFT逆变换,只需要把inverser置1即可;

Burst接口时序

Streaming接口时序

流I/O数据流结构允许输入数据连续处理,并输出连续的复数数据流。这个过程不需要停止FFT函数数据流的进出。

注意:在每一帧数据传输时要注意sink_valide、sink_ready,inverse要同sink_sop同步。

当完成数据转换后,FFT模块将source_valid置为有效,并以自然顺序输出变换域的数据,FFT模块输出source_sop表示第一个有效数据的输出。在N个数据(一帧)都变换结束之后即 N个时钟后,FFT模块将source_eop置为有效表示输出数据的结束。输出时序图如下。

FFT兆核函数采用Altera Atlantic接口I/0协议,输入接口为主设备汇端(Master Sink)而输出接口为主设备源端(Master Source)。

在reset信号无效后,数据源将sink_valide置为高有效,向FFT通知在输入端至少有N个复数据样点可以输入。FFT函数将sink_ready信号置高电平,表明有能力接收这些输入信号。当sink_ready(FFT核发出的)和sink_valide同时有效时,传输开始。数据源加载第一个复数据样点到FFT函数中,同时将sink_sop(start)信号置高电平,表示输入模块的开始,在下一个时钟周期,sink_sop信号被复位,并以自然顺序加载数据样点;当最后一个数据输入后,sink_eop 被置为有效 ,sink_valid仍处于有效,并完成这一帧数据的传输。然后在下一个时钟将sink_sop置为有效,并重复上一过程。

sink_sop必须与sink_valid同时有效并且是一个周期,否则相对于sink_valid滞后的话source _error 出现01错误,查手册发现是valid goes high, but there is no start of frame。sink_sop滞后多少周期01就出现多少周期。

时间: 2024-08-03 09:37:45

Quartus II 与ModelSim-Altera联合仿真FFT IP核之FFT IP核分析的相关文章

【转】Quartus II和Modelsim的联合仿真(详细)

Quartus II和Modelsim的联合仿真(详细) 原文地址: http://www.cnblogs.com/Jezze/archive/2012/09/14/2684333.html 这篇文章不需要在modelsim中建库.映射.建工程等一些繁琐的步骤,直接使用modelsim中的默认work库.使用quartus+modelsim联合仿真. 首先推荐一篇文章 http://www.cnblogs.com/emouse/archive/2012/07/08/2581223.html 首先

(转)Quartus II和Modelsim的联合仿真(详细)

这篇文章不需要在modelsim中建库.映射.建工程等一些繁琐的步骤,直接使用modelsim中的默认work库.使用quartus+modelsim联合仿真. 首先推荐一篇文章 http://www.cnblogs.com/emouse/archive/2012/07/08/2581223.html 首先,根据上一篇文章,建立一个testbench模板: 第一次用modelsim+quartus的时候需要在quartus中设置modelsim的路径,quartus->tools->gener

【转】Quartus II调用modelsim无缝仿真

Quartus II调用modelsim无缝仿真 ★emouse 思·睿博客文章★ 原创文章转载请注明:http://emouse.cnblogs.com 本篇文章为转载,写的不错,最近在学modelsim仿真,网上的教程很乱,把自己认为不错的整理贴出来,后面有机会会写个详细点的. Quartus 中调用modelsim的流程 1. 设定仿真工具 assignmentèsettingèEDA tool settingèsimulation 选择你需要的工具.  2. 自动产生测试激励文件模板: 

通过文件读写方式实现Matlab和Modelsim的联合仿真

虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处理的函数,而且图形显示功能也很强大,所以在做数字信号处理算法的FPGA验证的时候借助Matlab会大大加快算法验证的速度. 关于Matlab和Modelsim联合仿真,我从网上看到两种方法,一种是通过Link for Modelsim建立Matlab和Modelsim的联合仿真接口:另一种就是通过文

Xilinx ISE如何调用Modelsim进行联合仿真

图: 在对设计的芯片进行测试时,经常要用到FPGA,可是里面的仿真工具却不如Modelsim那么好用,且在规模比较大时,ISE在仿真时,软件经常会报告内存限制的问题,此时一般会切换到Modelsim软件中去做仿真,这样便不会出现内存限制的问题,且仿真器也更加好用.这里介绍一下Xilinx ISE如何调用Modelsim进行联合仿真. 首先需要用Xilinx ISE里面的工具Simulation Library Compilation Wizard来产生仿真库文件.开始--所有程序--Xilinx

Quartus系列:Quartus II 调用ModelSim仿真调试

1.新建一个项目过程参考" Quartus II 创建工程流程",在该流程第5步时,选在EDA Tool的窗口时,选择第三方的EDA工具以及设计使用的设计语言,如下图所示: 设置完成后,按照之前流程直到项目创建成功. 2.创建成功后,对设计进行编译,确认设计编译正确,即可进入下一环节设置测试平台.编译如下图所示: 3.在新建工程的过程中,如果已经设置了EDA仿真工具为ModelSim,如果没有设置EDA仿真工具,可以按照下图在工程创建完成后再次设置EDA仿真工具: 在设置好仿真工具之后

vivado与modelsim的联合仿真

vivado软件中也自带仿真工具,但用了几天之后感觉仿真速度有点慢,至少比modelsim慢挺多的.而modelsim是我比较熟悉的一款仿真软件,固然选它作为设计功能的验证.为了将vivado和modelsim关联,需要进行一些设置,下面一一介绍. 一.在vivado中设置modelsim(即第三方仿真工具)的安装路径.在vivado菜单中选择"Tools"-->"Options...",选择"General"选项卡,将滚动条拉倒最底部,在

Quartus ii 12.0 和ModelSim 10.1 SE安装及连接

quartus ii 10.0后就没有自带的仿真软件,每次写完一个VerilogHDL都想简单仿真一下,结果发现没有了自带仿真软件.这时候就需要第三方仿真软件ModelSim 10.1 SE. Quartus ii安装与破解 1.下载Quartus ii 和Quartus ii 破解补丁.下载地址找百度,百度不到就到官网注册下载. 2.首先,安装quartus ii .next-->next-->finish.64位系统安装64位的,32位的装32位的,还有一个问题就是quartus ii 1

Quartus II 11.0 开始使用

一.Altera Quartus II 11.0套件介绍 所谓巧妇难为无米之炊,再强的软硬件功底,再多的思维创造力,没有软件的平台,也只是徒劳.因此,一切创造的平台——Quartus II 软件安装,由零开启的世界,便从此开始. 自从Bingo 2009年开始接触FPGA,Quartus II 版本的软件从n年前的5.1版本到今天的最新发布的11.0,都使用过:当然对于软件核心构架而言,万变不离其宗.虽然多多少少有点bug,但这10多个版本发展到了现在,能看到Altera一直在努力,致力于更完美

[重要更新][Quartus II][14.1正式版]

[Quartus II][14.1正式版] ----14.1版本最大的变化就是增加了2大系列的器件库: MAX 10和Arria 10.这2大系列据Altera中国区代理 骏龙科技的人说,就是为了和Xilinx打价格战的,其中MAX 10系列结构与性能和Cyclone IV差不多,价格更低,而且可以加密,集成了2个配置器件,Cyclone V系列是Cyclone最后一代产品了,从MAX 10开始Cyclone和MAX就合并了,以后都叫MAX了,都是FPGA集成高速配置器件的结构.Arria 10