为了突出重点,仅对I/O数据流为steaming的情况作简要说明,以便快速上手,有关FFT ip核模型及每种设置详细介绍请参考官方手册FFT MegaCore Function User Guide。

1 配置

在FFT Megacore Function中选择“parameterize”,弹出对话框。

“Parameters”栏中,选择器件、转换数据的长度、数据精度已经旋转因子的精度。注意旋转因子精度必须小于等于数据精度。

“Architecture”栏中,有FFT引擎选择,在I/O数据流选择Streanming(流水线)的时候,引擎默认为1个四输出引擎。

img

“Implementation Options”栏中,Structure中选择乘法器和加法器组合,有4 Mults/2 Adders和3 Mults/5 Adders两种,本例选择前者。Implement Multiplier in代表实现FFT的逻辑资源分配形式,有DSP Blocks/Logic cells、DSP Blocks ONLY和Logic Cells ONLY三种,Logic cells顾名思义就是消耗FPGA的逻辑资源,而DSP Blocks则将一部分逻辑资源用Embedded Multiplier 9-bit elements表示。本例选择DSP Blocks/Logic cells混合模式。全局时钟和存储器选择采用默认方式。

FFT Megacore Function中“step 2”为跟仿真有关的选项,根据需求选择即可。

“step 3”生成IP核。注意,在生成IP核的过程中,进度条可能会卡主不动,可能是破解的问题(版本13.1)。遇到该问题时,多试几次,或者改动设计参数,可能会顺利生成。

2 信号

生成的FFT IP核,其端口列表如下,相关的详细说明可以在官方手册中查到:

端口说明

端口 端口类型 说明
Inverse / 改变FFT变换方向,置1时为FFI的你变换。
Sink_valid I 拉高表示通知FFT即将有N个数据输入
Sink_sop I 输入数据起始标记脉冲(维持一个时钟的高电平),与第一个数据同步
Sink_eop I 输入数据结束标记脉冲(维持一个时钟的高电平),与最后一个数据同步
Sink_real I 输入数据的实部
Sink_imag I 输入数据的虚部
sink_error I 指示数据流的错误信息:00——没有错误;01——丢失SOP;10——丢失EOP;11——多余的EOP;
sink_ready O FFT模块准备就绪,可以接收数据
source_ready I 表明downstream模块(理解为FFT的后续接收数据模块)可以接收数据
source_error O 表明upstream模块或者FFT模块出了问题,错误信息提示与sink_error一样
source_sop O 输出数据起始标记
source_eop O 输出数据结束标记
source_valid O 置高,准备输出结果
source_exp O 结果数据缩放因子:这个指数位的意思打个比方说吧,比如它是3,就是说这时输出的虚部和实部的数值要除以2的3次方,如果是10,就要除以2的10次方,如果对结果精度要求不高的话,可以直接截去相应的长度,比如指数是3,实部输出101101110111,那么此刻实际的值应该为101101110.111;取整就是101101110
source_real O 变换后输出数据的实部
source_imag O 变换后输出数据的虚部

3 仿真结果



sink_ready由FFT模块发出,代表其准备就绪。复位至少数个周期。当复位失效,FFT准备就绪后,sink_ready被置高。将Sink_valid拉高,通知FFT准备接收发来的数据。Sink_sop代表流水线输入数据的开始,在Sink_sop拉高的同时,第一个数据已经发送。

当一帧的数据(FFT处理的点数)输出完成后,将sink_eop拉高,代表一帧数据的结束,注意最后一个数据在sink_eop拉高的同时传输。注意:如果多帧数据连续输入,为了简化程序设计,将两帧数据中间放置一个时钟的周期的间隔,此时必须将Sink_valid拉低一个时钟周期,否则FFT的sourse_error会报01的错误,即缺少数据开始标志Sink_sop。当然,在程序设计上让Sink_sop和sink_eop首尾相连,则不需要拉低一个周期的Sink_valid。

在数个时钟周期之后,FFT模块开始输出转换完成的数据。与输入相似,当完成时,FFT模块会拉高转换完成信号source_valid和输出起始标志信号source_sop,与此同时,第一个数据输出。

当一帧数据转换完成后,FFT模块会将source_eop拉高,同时输出最后一个转换完成的数据。

Quartus FFT IP核简介的更多相关文章

  1. FPGA基础学习(1) -- FFT IP核(Quartus)

    为了突出重点,仅对I/O数据流为steaming的情况作简要说明,以便快速上手,有关FFT ip核模型及每种设置详细介绍请参考官方手册FFT MegaCore Function User Guide. ...

  2. 从Xilinx FFT IP核到OFDM

    笔者在校的科研任务,需要用FPGA搭建OFDM通信系统,而OFDM的核心即是IFFT和FFT运算,因此本文通过Xilinx FFT IP核的使用总结给大家开个头,详细内容可查看官方文档PG109.关于 ...

  3. 实测—fft IP核使用(包括ifft的配置使用)

    Vivado xilinx fft9.0 使用笔记: ****注 仿真实测1024点的转换需要经过1148个时钟周期才能得到转换结果: 模块配置信号含义请参考pg109文档手册(写的贼烂会看晕),不详 ...

  4. FFT IP核调用与仿真之SCALE压缩因子设置

    关于FFT IP核的配置,网上有很多相关的资料可以参考,但是唯独涉及到scaled压缩因子设置这个参数,资料却非常匮乏,这是个什么参数,应该整么设置,设置后对结果输出会有什么影响,整样才能知道它设置的 ...

  5. FFT IP核调用与仿真之FFT数学分析

    对于FFT这个IP核,我其实对它真的是又爱又恨,因为它真的耗费了我太多时间,但是随着研究的深入,遇到的问题一点点给消化解决,终于不用带着问题睡觉了,哈哈,有时候真的挺佩服自己的,遇到不懂的,不了解的, ...

  6. Xilinx FFT IP核缩放因子说明

    以1024点FFT为例, reg [9:0] scale_sch = 10'b11_10_01_01_01; 流水线结构中,将每个基 2 的蝶形处理单元视为一个阶段. 每个阶段进行一次数据的缩减,缩减 ...

  7. FFT ip core

    The FFT core provides four architecture options to offer a trade-off权衡取舍 between core size andtransf ...

  8. 如何用ModelsimSE仿真IP核-以PLL为例

    我们之前介绍了如何使用Modelsim SE进行仿真和利用do文件的仿真方法,但是其中待仿真的模块是我们自己编写的Verilog模块,但是在实际工作中,我们的设计中会经常用到FPGA厂商给我们提供的现 ...

  9. Xilinx FFT IP v9.0 使用(一)

    reference:https://blog.csdn.net/shichaog/article/details/51189711 https://blog.csdn.net/qq_36375505/ ...

随机推荐

  1. Linux目录结构详解(一)

    Linux目录结构,在逻辑上所有目录只有一个顶点,即/(根目录),是所有目录的起点.根下面类似于一个倒挂着的树的结构. Linux目录按照类别组织: 应用程序 /usr/bin 数据文件,帮助/usr ...

  2. Android Annotations Eclipse 配置 (3)

    Android Annotations 本来我想写个 Java 版本的<RESTful客户端库:RestClient>用于 Android 应用开发,结果发现不太好写,虽然用了 Dynam ...

  3. spring容器启动扩展

    我们可以在spring容器启动时添加自己的定制化初始化工作. 1)具体方法为:在web.xml中配置初始化属性contextInitializerClasses的值例如: <context-pa ...

  4. Windows 10 16251 添加的 api

    本文主要讲微软最新的sdk添加的功能,暂时还不能下载,到 7月29 ,现在可以下载是 16232 ,支持Neon效果 实际上设置软件最低版本为 16232 就自动支持 Neon 效果. 主要添加了 A ...

  5. hdu 4751 Divide Groups bfs (2013 ACM/ICPC Asia Regional Nanjing Online 1004)

    SDUST的训练赛 当时死磕这个水题3个小时,也无心去搞其他的 按照题意,转换成无向图,预处理去掉单向的边,然后判断剩下的图能否构成两个无向完全图(ps一个完全图也行或是一个完全图+一个孤点) 代码是 ...

  6. Java常用类(一)之Object类详解

    大家都知道Object是所有类的父类,任何类都默认继承Object 理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Object类,因此省 ...

  7. (转)JVM性能调优之生成堆的dump文件

    转自:http://blog.csdn.net/lifuxiangcaohui/article/details/37992725 最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一 ...

  8. dubbo 笔记-XML配置文件简介

    <dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心. eg.<dubbo:service r ...

  9. Python连接SQLite数据库

    SQLite作为一款轻型数据库,管理工具有很多,比如SQLite Expert Professional,很适合用来存储Python网站,爬虫的相关数据,下面列出基本的增删查改操作 读取操作: con ...

  10. Mybatis基本用法--中

    Mybatis基本用法--中 第四部分 动态 SQL 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似.MyBatis 采用功能强大的基于 OGNL 的表达式来消除其他元素 ...