简介

快速傅里叶变换(Fast Fourier Transform)最为一种高效的算法,被广泛的用于信号处理与数据分析等领域。对于设计工程师来讲,自己动手采样可编程语言来实现一个FFT/IFFT模块,不知要花费多少心血。所幸的是Altera和Xilinx两大巨头都提供了自己FFT核,本文将详细讲解如何使用Altera的FFT核。

Altera FFT核

FFT IP core的总体架构分析:FFT分为fixed transform size architectture 和 variable streaming architecture。variable streaming architecture下又分为radix 2 和radix 4两种运算结构,而内部数据运算表达方式可分为fixed point ,floating point 和block floating point三种。

IO数据流支持流(Streaming)、可变流(Variable Streaming)、缓存突发(Buffered Burst)和突发(Burst)等I/O数据流结构。流FFT结构可以连续处理输入的数据和输出连续的复数数据流,不需要在FFT快内或模块外暂停数据流。突发缓存结构和突发结构的FFT比流FFT结构所需资源更少,但代价是平均块吞吐量下降。

指定FFT复数乘法的实现结构,可包括4 Mults/2 Adders 和 3 Mults/5 Adders。前者使用DSP块结构最小化逻辑资源的使用,但最大化DSP块的使用,这种结构能够提高FFT的最大频率;后者要求的DSP块较少,但需要更多的逻辑资源,得到的FFT的最大频率也相对低些。如果勾选Implement appropriate logic function in RAM则表示使用内嵌的RAM块实现内部逻辑功能,例如FFT中的抽头延迟线,该选项可以减少逻辑资源的使用。

Quartus II提供GUI界面来配置参数,按照以下步骤操作,进可完成功能仿真。

  1. 建立工程,根据GUI界面完成FFT核配置参数
  2. 设置好仿真工具(在Quartus工具栏Options下选择EDA Tools Options),编译。
  3. 执行工程目录下的Tcl文件,然后启动仿真

当完成功能仿真后,会发现得到数据和Matlab仿真的结果相差比较大,因为功能仿真的结果需要按照公式output∗2−exponent进行转换(注意:公式1/N∗output∗2−exponent对应于IFFT),才可以得到正确的结果。

案例

实际工程中,需要我们编写逻辑来控制FFT核。IFFT是OFDM基带发送部分的关键,下面给出怎么实现IFFT变换。配置参数为:点数N为64、流水线结构、输入输出位宽16bit、输入输出为自然顺序、Quad Output(4 输出)。

上图是流水线结构的输入时序。在reset信号无效后,将sink_valide置为高有效,表示输入端至少有N个复数据样点可以输入。当sink_ready(FFT核输出的)信号为高电平,表明有能力接收这些输入数据。同时将sink_sop(start)信号置为高电平,表示输入一帧数据(64)的开始,当最后一个数据输入后,sink_eop 被置为高电平 ,表示完成这一帧数据的传输。一定要控制好sink_valid、sink_sop、sink_eop三个信号的时序,否则会导致没有输出或者输出数据出错(笔者曾遇到过)。下图为功能仿真波形图:

参考资料FFT MegaCore Function User Guide
工程代码

Altera FFT核使用详解的更多相关文章

  1. 关于altera的fft核使用问题记录

    altera的fft核使用比较特别,今天我做了一下仿真,发现一些问题,现做记录如下: 1,ip配置 parameters选项卡主要是fft变换的长度和数据长度,旋转因子长度,需要注意的是“Twiddl ...

  2. stm32F103RCT6使用FFT运算分析波形详解(非常新手)

    最近学校电赛院队招新,出的招新题就是低频示波器的.之前一直没有弄懂FFT,借着这次机会实现了一下. FFT原理详解 FFT,就是快速傅里叶变换,这个操作能够将时域信号转化成频域信号,然后对信号进行分析 ...

  3. [Spark內核] 第41课:Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解

    本课主题 Checkpoint 运行原理图 Checkpoint 源码解析 引言 Checkpoint 到底是什么和需要用 Checkpoint 解决什么问题: Spark 在生产环境下经常会面临 T ...

  4. EasyPR--开发详解(6)SVM开发详解

    在前面的几篇文章中,我们介绍了EasyPR中车牌定位模块的相关内容.本文开始分析车牌定位模块后续步骤的车牌判断模块.车牌判断模块是EasyPR中的基于机器学习模型的一个模块,这个模型就是作者前文中从机 ...

  5. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  6. mina框架详解

     转:http://blog.csdn.net/w13770269691/article/details/8614584 mina框架详解 分类: web2013-02-26 17:13 12651人 ...

  7. Nginx配置文件详解

    Nginx是一款面向性能设计的HTTP服务器,相较于Apache.lighttpd具有占有内存少,稳定性高等优势. ######Nginx配置文件nginx.conf中文详解##### #定义Ngin ...

  8. Nginx中文详解、配置部署及高并发优化

      一.Nginx常用命令: 1. 启动 Nginx          /usr/local/nginx/sbin/nginxpoechant@ubuntu:sudo ./sbin/nginx2. 停 ...

  9. MYSQL服务器my.cnf配置文档详解

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...

随机推荐

  1. Java基础 -- 泛型之泛型参数

    泛型机制常用的参数有3个: “?”代表任意类型.如果只指定了<?>,而没有extends,则默认是允许任意类. extends关键字声明了类型的上界,表示参数化的类型可能是所指定的类型,或 ...

  2. C#在Linux上的开发指南

    本人才疏学浅,在此记录自己用C#在Linux上开发的一点经验,写下这篇指南.(给想要在Linux上开发C#程序的朋友提供建议) 目前在Linux上跑的网站:http://douxiubar.com | ...

  3. kolla制作过程中:neutron-sfc-agent 报错的问题

    在使用二进制方式编译镜像的时候,neutron的sfc-agent提示如下错误ERROR:kolla.image.build:neutron-sfc-agent Failed with status: ...

  4. SCUT - 289 - 小O的数字 - 数位dp

    https://scut.online/p/289 一个水到飞起的模板数位dp. #include<bits/stdc++.h> using namespace std; typedef ...

  5. dbms_xplan的display查看执行计划

    DBMS_XPLAN包包括一系列函数,主要是用于显示SQL语句的执行计划,且不同的情形下使用不同的函数来显示,如预估的执行计划则使用 display函数,而实际的执行计划则是用display_curs ...

  6. 使用combobox下拉列表框实现省 市 县 的三级联动

    package com.hanqi.entity; //地区 public class Region { //地区id private String regionID; //地区名称 private ...

  7. Could not find iPhone X simulator

    Could not find iPhone X simulator Error: Could not find iPhone X simulator at resolve (/Users/zhouen ...

  8. jenkins相关下载链接

    Jenkins官网:https://jenkins.io/ 下载rpm安装包:   https://pkg.jenkins.io     http://mirrors.jenkins-ci.org/s ...

  9. JavaScript专题(二)闭包

    前言 - ES6 之前,JS没有块级作用域,只有全局作用域和函数作用域 用了许久ES6,春招在即,重写下博文. 还是讲讲闭包.我们要知其然,知其所以然. 仿佛大众情人一般,很多前端面试官都会问一问,说 ...

  10. 旅行青蛙分析(Android篇)

    近期旅行青蛙这款游戏非常的火热,周围的朋友.家人都养了一只小青蛙.看到网上有人说这款游戏可以直接逆向编译,没有加密:所以在搜索相关资料后花了一些时间进行逆向分析与修改.这篇文章里,我将介绍如何获取稀有 ...