CN110347968B - 一种基于fpga的优化fft算法和装置 - Google Patents

一种基于fpga的优化fft算法和装置 Download PDF

Info

Publication number
CN110347968B
CN110347968B CN201910609346.4A CN201910609346A CN110347968B CN 110347968 B CN110347968 B CN 110347968B CN 201910609346 A CN201910609346 A CN 201910609346A CN 110347968 B CN110347968 B CN 110347968B
Authority
CN
China
Prior art keywords
data
fft
analyzed
stage
twiddle factor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910609346.4A
Other languages
English (en)
Other versions
CN110347968A (zh
Inventor
王海滨
王杨圣
张辰予
孙洪文
罗成名
张�杰
陈正鸣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changzhou Campus of Hohai University
Original Assignee
Changzhou Campus of Hohai University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Changzhou Campus of Hohai University filed Critical Changzhou Campus of Hohai University
Priority to CN201910609346.4A priority Critical patent/CN110347968B/zh
Publication of CN110347968A publication Critical patent/CN110347968A/zh
Application granted granted Critical
Publication of CN110347968B publication Critical patent/CN110347968B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开一种基于FPGA的优化FFT算法和装置,涉及集成电路数字信号处理技术领域。方法包括:响应于外部输入有待分析数据,存储相应数据;按照预设的读取规则读取已存储的待分析数据;对待分析数据进行预处理;基于预处理后的待分析数据以及预设的旋转因子进行基2‑FFT的前两级蝶形计算;基于基2‑FFT的前两级蝶形计算结果进行基2‑FFT前两级之后的其它级蝶形计算,计算结果即为所述优化FFT算法的计算结果。本发明利用蝶形运算的前两级旋转因子取值有限的特性,通过预设旋转因子对传统的基2‑FFT算法进行简化,从而实现可由输入序列快速得到前两级蝶形运算的结果,且本发明能够适用于任何2N(N≥2)点FFT运算,实现算法的有效加速。

Description

一种基于FPGA的优化FFT算法和装置
技术领域
本发明涉及集成电路数字信号处理技术领域,特别是一种基于FPGA的优化FFT算法和 装置。
背景技术
为了更好的对信号进行分析,工程师们常常会使用傅里叶变换将复杂无序的信号分解为 一定频率的正弦信号和余弦信号的叠加,然后从已知的正弦信号和余弦信号的特性出发,分 析出原来信号的某些特性。由于直接进行离散傅里叶变换(DFT)的计算复杂度太高,所以 通常会选择使用计算复杂度较低的快速傅里叶变换(FFT)。
传统的快速傅里叶变换(Fast Fourier Transformation,简称FFT)相对DFT算法在很大程 度上优化了信号处理时的计算复杂度,但仍存在以下问题:传统的基2-FFT算法由多级蝶形 运算构成,而每完成一次蝶形运算都需要进行1次复数乘法和2次复数加法,这对于资源有 限的FPGA来说无疑会浪费巨大的资源;传统的基2-FFT算法在信号采样点数较多时,其蝶 形运算的级数也会增加较多。
在宇宙空间中存在着许多高能粒子,这些高能粒子的打击极容易使航天器中FPGA的功 能发生错误。在该辐射环境中,为了降低高能粒子对电路的影响,需要尽可能的对FFT电路 在面积和速度方面进行优化。而传统的基2-FFT算法电路倘若被高能粒子击中,中间电路的 故障极有可能被传播到输出上。
发明内容
本发明的目的是,提供一种基于FPGA的优化FFT算法和装置,可对传统基2-FFT算法 进行加速、降低资源消耗并提高可靠性。
本发明采取的技术方案为:一种基于FPGA的优化FFT算法,包括:
响应于外部输入有待分析数据,存储相应数据;
按照预设的读取规则读取已存储的待分析数据;
对待分析数据进行预处理;
基于预处理后的待分析数据以及预设的旋转因子进行基2-FFT的前两级蝶形计算;
基于基2-FFT的前两级蝶形计算结果进行基2-FFT前两级之后的其它级蝶形计算,计算 结果即为所述优化FFT算法的计算结果。
本发明利用蝶形运算的前两级旋转因子取值有限的特性,通过预设旋转因子对传统的基 2-FFT算法进行简化,从而实现可由输入序列快速得到前两级蝶形运算的结果,且本发明能 够适用于任何2N(N≥2)点FFT运算,实现算法的有效加速,进而可降低高能粒子对FFT 电路的影响。
优选的,响应于外部输入有待分析数据,将外部输入的待分析数据的实部和虚部分别存 储。可存储至数据ROM。
优选的,所述预设的读取规则为:响应于外部读取启动信号,利用时钟计数器在每个时 钟周期的上升沿读取一个已存储的待分析数据,直至取出全部已存储的待分析数据,时钟计 数器停止计数。
优选的,所述对待分析数据进行预处理包括:将待分析数据转化为16bit二进制补码数据 并保存为COE文件。
进一步的,所述对待分析数据进行预处理还包括:基于读出的待分析数据进行无故障注 入条件下的FFT计算,得到参考输出结果数据,并将参考输出数据转化为16bit二进制补码 数据,保存为COE文件。两类需要保存的COE文件分别存储于不同数据ROM中。可用于优化FFT算法结果的验证,特别是在有故障注入影响下的算法结果可靠性验证。
优选的,所述基于预处理后的待分析数据以及预设的旋转因子进行基2-FFT的前两级蝶 形计算包括:
以预处理后的待分析数据作为输入数据序列,对输入数据序列进行二进制数倒序排列;
定义N为大于等于2的正整数,对于任意n=2N点的FFT运算,将倒序排列后的输入数 据序列x(0)~x(n)分为n/4组;
基于每个分组的输入数据序列分别进行4点FFT运算的前两级蝶形计算:
利用基2-FFT算法获得输出数据与输入序列之间的关系数据,所述关系数据包括第一级 旋转因子和第二级旋转因子;
利用预设的旋转因子取值替换关系数据中的两级旋转因子,得到输出数据与输入序列之 间的简化关系数据,进而得到第二级蝶形运算的输出数据,即为基2-FFT算法前两级蝶形运 算的计算结果。
优选的,所述预设的旋转因子中,第一级蝶形运算的旋转因子为1,,第二级蝶形运算的 旋转因子为1或-j,-j为实部是0,虚部是-1的复数。
优选的,本发明中,基2-FFT算法前两级蝶形运算的旋转因子根据以下公式计算得到:
Figure BDA0002121832350000021
式中,
Figure BDA0002121832350000031
为N点FFT运算中第m+1级的旋转因子。因此,对于一个4点FFT的前两 级基2-FFT蝶形运算,分解为两个2点DFT后,第一级(m=0)蝶形运算的旋转因子/>
Figure BDA0002121832350000032
第二级(N=4,/>
Figure BDA0002121832350000033
)蝶形运算的旋转因子/>
Figure BDA0002121832350000034
和/>
Figure BDA0002121832350000035
分别为1和-j。
在进行输入数据序列分组后,对于每一组输入数据序列的前两级基2-FFT蝶形运算过程 具体为:定义分组后的4点FFT输入数据序列为x(0)~x(3),定义x(0)+x(2)=A, x(1)+x(3)=B,x(0)-x(2)=C,x(3)-x(1)=D,x(1)-x(3)=E,预设的第一级旋转因子为
Figure BDA0002121832350000036
第二级旋转因子/>
Figure BDA0002121832350000037
则该4点FFT运算的输出序列,即相应输入数据序列组对 应的基2-FFT前两级蝶形运算结果为:/>
Figure BDA0002121832350000038
本发明还公开一种优化FFT计算装置,包括:
待分析数据接收模块,用于响应于外部输入有待分析数据,存储相应数据;
待分析数据读取模块,用于按照预设的读取规则读取已存储的待分析数据;
预处理模块,用于对待分析数据进行预处理;
简化计算模块,用于基于预处理后的待分析数据以及预设的旋转因子进行基2-FFT的前 两级蝶形计算;
以及结果计算模块,用于基于基2-FFT的前两级蝶形计算结果进行基2-FFT前两级之后 的其它级蝶形计算,计算结果即为所述优化FFT算法的计算结果。
本发明的优化FFT计算装置可运行于FPGA中,作为FPGA的一部分用于实现基2-FFT计算的集成电路。
有益效果
与现有技术相比,本发明具有以下优点和进步:
利用蝶形运算的前两级旋转因子取值有限的特性,通过预设旋转因子取值对传统的基 2-FFT算法进行简化,可在很大程度上降低传统基2-FFT算法的计算复杂度,提高运算速度, 同时极大的降低FPGA设计的面积开销,使得FPGA设计具有更高的可靠性,能够降低高能 粒子对电路输出的影响。
附图说明
图1是本发明基于FPGA的优化FFT算法流程示意图;
图2是本发明优化FFT算法的一种实施例流程示意图;
图3是一种4点基2-FFT蝶形运算的运算示意图;
图4是本发明一种8点优化FFT算法的实施例运算示意图;
图5是对本发明优化FFT算法进行可靠性评估的系统框架示意图;
图6是图5中软错误缓解控制器的流程图;
图7是利用传统FFT与本发明优化FFT的两种8点FFT设计的性能对比图;
图8是两种8点FFT设计的可靠性对比图。
具体实施方式
以下结合附图和具体实施例进一步描述。
本发明利用蝶形运算的前两级旋转因子取值有限的特性,通过预设旋转因子对传统的基 2-FFT算法进行简化,从而实现可由输入序列快速得到前两级蝶形运算的结果,且本发明能 够适用于任何2N(N≥2)点FFT运算,实现算法的有效加速,进而可降低高能粒子对FFT 电路的影响。
实施例1
参考图1所示,本实施例基于FPGA的优化FFT算法,包括:
响应于外部输入有待分析数据,存储相应数据;
按照预设的读取规则读取已存储的待分析数据;
对待分析数据进行预处理;
基于预处理后的待分析数据以及预设的旋转因子进行基2-FFT的前两级蝶形计算;
基于基2-FFT的前两级蝶形计算结果进行基2-FFT前两级之后的其它级蝶形计算,计算 结果即为所述优化FFT算法的计算结果。
实施例1-1
参考图2至图4,基于实施例1,本实施例中,响应于外部输入有待分析数据,将外部输 入的待分析数据的实部和虚部分别存储,存储至数据ROM。
所述预设的读取规则为:响应于外部读取启动信号,利用时钟计数器在每个时钟周期的 上升沿读取一个已存储的待分析数据,直至取出全部已存储的待分析数据,时钟计数器停止 计数。
所述对待分析数据进行预处理包括:将待分析数据转化为16bit二进制补码数据并保存为COE文件。
所述对待分析数据进行预处理还包括:基于读出的待分析数据进行无故障注入条件下的 FFT计算,得到参考输出结果数据,并将参考输出数据转化为16bit二进制补码数据,保存为 COE文件。两类需要保存的COE文件分别存储于不同数据ROM中。可用于优化FFT算法 结果的验证,特别是在有故障注入影响下的算法结果可靠性验证。
参考图2所示,所述基于预处理后的待分析数据以及预设的旋转因子进行基2-FFT的前 两级蝶形计算包括:
以预处理后的待分析数据作为输入数据序列,对输入数据序列进行二进制数倒序排列;
结合图4所示,定义N为大于等于2的正整数,对于任意n=2N点的FFT运算,将倒序排列后的输入数据序列x(0)~x(n)分为n/4组;
结合图3所示,基于每个分组的输入数据序列分别进行4点FFT运算的前两级蝶形计算:
利用基2-FFT算法获得输出数据与输入序列之间的关系数据,所述关系数据包括第一级 旋转因子和第二级旋转因子;
利用预设的旋转因子取值替换关系数据中的两级旋转因子,得到输出数据与输入序列之 间的简化关系数据,进而得到第二级蝶形运算的输出数据,即为基2-FFT算法前两级蝶形运 算的计算结果。
上述对输入数据序列进行二进制数倒序排列以及分组为传统基2-FFT运算的现有处理过 程。
基2-FFT算法前两级蝶形运算的旋转因子根据以下公式计算得到:
Figure BDA0002121832350000051
式中,
Figure BDA0002121832350000052
为N点FFT运算中第m+1级的旋转因子。因此,对于一个图3所示的4点FFT的前两级基2-FFT蝶形运算,分解为两个2点DFT后,第一级(m=0)蝶形运算的旋转 因子
Figure BDA0002121832350000053
第二级(N=4,/>
Figure BDA0002121832350000054
)蝶形运算的旋转因子/>
Figure BDA0002121832350000055
和/>
Figure BDA0002121832350000056
分别为1和-j。
如图3所示为一次完整的4点FFT运算,共需要执行4次复数乘法和8次复数加法,即完成一个传统4点FFT运算共需要16次实数乘法和24次实数加法。从图4中可以得出输出 结果与输入序列的关系:
Figure BDA0002121832350000057
Figure BDA0002121832350000061
Figure BDA0002121832350000062
Figure BDA0002121832350000063
在进行输入数据序列分组后,对于每一组输入数据序列的前两级基2-FFT蝶形运算过程 具体为:定义分组后的4点FFT输入数据序列为x(0)~x(3),x(0)+x(2)=A,x(1)+x(3)=B, x(0)-x(2)=C,x(3)-x(1)=D,x(1)-x(3)=E,第一级旋转因子为
Figure RE-GDA0002172252820000064
第二级旋转因子 />
Figure RE-GDA0002172252820000065
则该4点FFT运算的输出序列,即相应输入数据序列组对应的基2-FFT前 两级蝶形运算结果为:
Figure BDA0002121832350000064
后续即可基于各组四点FFT的输出数据序列,继续进行基2-FFT运算的其它级蝶形运算, 直至得到最后结果。
而且根据上式可以看出,现在进行一次4点FFT不需要再进行实数乘法,并且实数加法 的次数也减小到了7次,分别是计算A,B,C,D,E,A+B和A-B,而这些数据都是与输 入数据相关的。可见相较于传统的基2-FFT算法的16次实数乘法和24次实数加法,本发明 提出的优化FFT设计大幅度减少了FFT算法的计算量。
因此本发明基于FPGA的优化FFT算法设计,可被应用于任何2N(N≥2)点FFT运算,用于对传统基2-FFT算法进行加速、降低其资源消耗并提高其可靠性。
实施例1-1-1
基于实施例1-1,具体应用时,本实施例可采用如下步骤:
步骤一:获取FFT模块所需的输入数据,并对获取的数据进行预处理,将其转化为FFT 模块可识别的16bit二进制补码数据,并将其保存为COE文件存入存储输入数据ROM中;同时使用Matlab计算出在相应输入数据在无故障注入情况下正确的输出数据,同样将其转化 为16bit二进制补码数据,并将其保存为COE文件存入存储正确输出数据ROM中;
步骤二:输入数据读取时,计数器开始计数,在每个时钟周期的上升沿从存储输入数据 ROM中取出一个输入数据,直到取出全部输入数据为止,计数器停止计数,将获取到的全部 输入数据作为FFT运算的输入数据序列;
步骤三:执行优化FFT算法,即基于已确定的第一级旋转因子和第二级旋转因子取值, 直接获得传统基2-FFT第二级蝶形运算后的结果;
步骤四:基于第二级蝶形运算结果,完成后续的传统FFT各级运算,得到最终优化FFT 运算的结果数据,此时可对结果进行输出。
实施例2
本实施例为一种优化FFT计算装置,包括:
待分析数据接收模块,用于响应于外部输入有待分析数据,存储相应数据;
待分析数据读取模块,用于按照预设的读取规则读取已存储的待分析数据;
预处理模块,用于对待分析数据进行预处理;
简化计算模块,用于基于预处理后的待分析数据以及预设的旋转因子进行基2-FFT的前 两级蝶形计算;
以及结果计算模块,用于基于基2-FFT的前两级蝶形计算结果进行基2-FFT前两级之后 的其它级蝶形计算,计算结果即为所述优化FFT算法的计算结果。
本发明的优化FFT计算装置可运行于FPGA中,作为FPGA的一部分用于实现基2-FFT计算的集成电路。
算法验证
基于实施例1和实施例2,参考图4所示,现以8点FFT运算为例,对本发明基于FPGA的优化FFT算法设计进行可靠性评估,可靠性评估的系统框架如图5所示,包括PC控制软件、软错误缓解控制器、优化FFT设计模块、传统FFT设计模块和输出对比模块。
PC控制软件用于向软错误缓解控制器发送故障注入指令,进而完成故障注入模拟,同时 也接收并记录来自输出对比模块返回的输出错误个数,若发现输出错误个数不为0,则调用 Tcl脚本对FPGA进行重配置并记录重配置次数,即重新写入FPGA程序将故障擦除。所述软 错误缓解控制器根据得到的故障注入指令,将指令所指向地址的配置单元进行配置位的数据 翻转。优化FFT设计模块利用本发明实施例1或2实现,传统FFT设计模块则直接进行8点 的传统基2-FFT多级蝶形运算,两者分别基于相同的输入数据序列进行FFT运算,并将运算 结果传入输出对比模块。利用Matlab等仿真计算出的正确输出数据,亦存入输出对比模块。
输出对比模块在获取到全部正确输出后,将其与优化FFT设计模块和传统FFT设计模块 传来的结果分别进行对比,并记录各自结果中错误的数量,然后将输出错误个数发送至PC 控制软件。
具体分析方法如下:
步骤1:获取8点FFT运算所需的输入数据,并对获取的数据进行预处理,将其转化为 FFT模块可识别的16bit二进制补码数据,并将其保存为COE文件存入存储输入数据ROM中;同时使用Matlab计算出在输入数据保持不变的情况下正确的输出数据,再将其转化为16bit二进制补码数据,并将其保存为COE文件存入存储正确输出数据ROM中;
步骤2:开始对数据进行读取时,计数器开始计数,在每个时钟周期的上升沿从存储输 入数据ROM中取出一个输入数据,直到取出全部输入数据为止,计数器停止计数,将获取 到的全部输入数据分别传入优化FFT设计模块和传统FFT设计模块进行8点FFT运算;
步骤3:与步骤2同步,PC控制软件从故障随机注入的地址范围中每次随机选择一个地 址单位随机故障注入传输至软错误缓解控制器,进入步骤7执行故障注入指令;
步骤4:优化FFT算法模块接收到输入数据后,首先执行优化FFT算法,快速获得第二 级蝶形运算后的结果,然后将该结果传输至蝶形运算模块进行步骤4的后续计算;传统FFT 设计模块接收到输入数据后,直接使用蝶形运算模块后进行8点的FFT运算,然后将结果传 输至输出对比模块;
这一步中,优化FFT和传统FFT皆首先将输入序列x(n)在输入前先进行倒序排列,然后 将其分为n/4组。但优化FFT算法模块根据旋转因子
Figure BDA0002121832350000081
在进行蝶形运算的前两级取值只有1 和-j的特点,可快速由输入序列得到原本的第二级蝶形运算的结果,然后再进行传统的蝶形 运算直至完成本次FFT运算;
步骤5:蝶形运算模块在接收到优化FFT算法模块传来的结果后,开始完成后续的FFT 运算,直至完成本次全部运算,然后将结果传输至输出对比模块,同时将标志计算完成的信 号传输至Golden Data模块;
步骤6:读取正确输出数据模块在接收到计算完成的信号后,计数器开始计数,在每个 时钟周期的上升沿从存储正确输出数据ROM中取出一个输入数据,直到取出全部正确输出 数据为止,计数器停止计数,将获取到的全部正确输出数据传输至输出对比模块进行步骤8 的输出结果对比;
步骤7:如图6所示,与步骤2同步,系统启动时,软错误缓解控制器执行初始化操作, 然后软错误缓解控制器再通过通用异步收发传输器从PC控制软件接收故障注入指令,然后 将接受到的指令进行解析指令所指向的配置单元的地址,通过ICAP接口对对该地址上的配 置单元中的配置位数据进行翻转,从而完成此次的故障注入;
步骤8:输出对比模块在接收到优化FFT设计模块和传统FFT设计模块传来的计算结果 还有Golden Data模块传来的正确输出数据后,将它们计算结果分别与正确输出数据逐个对 比,若发现不一致,则记录计算结果与正确输出数据中不一致输出的个数作为输出错误个数, 然后将各自的输出错误个数发送给PC控制软件,PC控制软件记录结果并调用Tcl脚本对 FPGA进行重配置,否则输出错误个数保持为0不变,但也将结果发送给PC控制软件。
根据步骤8记录的输出错误个数和重配置情况,分析可得到如图7、图8所示的结果, 优化FFT设计相对于传统FFT设计,实现时使用的LUTs是传统FFT设计的35.174%,Registers 是传统FFT设计的39.212%,在总体面积开销上有了巨大的提升;在运算速度方面也提升了 16.129%;在相同条件下进行故障注入模拟时,优化FFT设计出现故障次数仅为传统FFT设 计的41.346%,在可靠性方面也有了极大的提升。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。 因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的 形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储 介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形 式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/ 或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/ 或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令 到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个 机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程 图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工 作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制 造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指 定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或 其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编 程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多 个方框中指定的功能的步骤。
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方 式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发 明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这 些均属于本发明的保护之内。

Claims (2)

1.一种实现优化FFT计算的FPGA,其特征是,包括:
待分析数据接收模块,用于响应于外部输入有待分析的数据,存储相应数据;
待分析数据读取模块,用于按照预设的读取规则读取已存储的待分析数据;
预处理模块,用于对待分析数据进行预处理;
简化计算模块,用于基于预处理后的待分析数据以及预设的旋转因子进行基2-FFT的前两级蝶形计算,其中,所述预设的旋转因子中,第一级蝶形运算的旋转因子为1,第二级蝶形运算的旋转因子为1或-j,-j为实部是0,虚部是-1的复数;
以及结果计算模块,用于基于基2-FFT的前两级蝶形计算结果进行基2-FFT前两级之后的其它级蝶形计算,计算结果即为优化FFT算法的计算结果;
其中,待分析数据接收模块响应于外部输入有待分析数据,将外部输入的待分析数据的实部和虚部分别存储;
所述预设的读取规则为:待分析数据读取模块响应于外部读取启动信号,利用时钟计数器在每个时钟周期的上升沿读取一个已存储的待分析数据,直至取出全部已存储的待分析数据,时钟计数器停止计数;
所述预处理模块对待分析数据进行预处理包括:将待分析数据转化为16bit二进制补码数据并保存为COE文件;以及,基于读出的待分析数据进行无故障注入条件下的FFT计算,得到参考输出结果数据,并将参考输出数据转化为16bit二进制补码数据,保存为COE文件;且两类需要保存的COE文件分别存储于不同数据ROM中,用于在有故障注入影响下的算法结果验证;
所述简化计算模块基于预处理后的待分析数据以及预设的旋转因子进行基2-FFT的前两级蝶形计算包括:
以预处理后的待分析数据作为输入数据序列,对输入数据序列进行二进制数倒序排列;
定义N为大于等于2的正整数,对于任意n=2N点的FFT运算,将倒序排列后的输入数据序列x(0)~x(n)分为n/4组;
基于每个分组的输入数据序列分别进行4点FFT运算的前两级蝶形计算:
利用基2-FFT算法获得输出数据与输入序列之间的关系数据,所述关系数据包括第一级旋转因子和第二级旋转因子;
利用预设的旋转因子取值替换关系数据中的两级旋转因子,得到输出数据与输入序列之间的简化关系数据,进而得到第二级蝶形运算的输出数据,即为基2-FFT算法前两级蝶形运算的计算结果;
其中,定义分组后的4点FFT输入数据序列为x(0)~x(3),定义x(0)+x(2)=A,x(1)+x(3)=B,x(0)-x(2)=C,x(3)-x(1)=D,x(1)-x(3)=E,预设的第一级旋转因子为
Figure QLYQS_1
第二级旋转因子/>
Figure QLYQS_2
则该4点FFT运算的输出序列,即相应输入数据序列组对应的基2-FFT前两级蝶形运算结果为:/>
Figure QLYQS_3
2.根据权利要求1所述的实现优化FFT计算的FPGA,其特征是,基2-FFT算法前两级蝶形运算的旋转因子根据以下公式计算得到:
Figure QLYQS_4
式中,
Figure QLYQS_5
为N点FFT运算中第m+1级的旋转因子,/>
Figure QLYQS_6
对于一个4点FFT的前两级基2-FFT蝶形运算,分解为两个2点DFT后,
Figure QLYQS_7
m=0对应的第一级蝶形运算的旋转因子/>
Figure QLYQS_8
m=1对应的第二级蝶形运算的旋转因子/>
Figure QLYQS_9
和/>
Figure QLYQS_10
分别为1和-j。/>
CN201910609346.4A 2019-07-08 2019-07-08 一种基于fpga的优化fft算法和装置 Active CN110347968B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910609346.4A CN110347968B (zh) 2019-07-08 2019-07-08 一种基于fpga的优化fft算法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910609346.4A CN110347968B (zh) 2019-07-08 2019-07-08 一种基于fpga的优化fft算法和装置

Publications (2)

Publication Number Publication Date
CN110347968A CN110347968A (zh) 2019-10-18
CN110347968B true CN110347968B (zh) 2023-06-13

Family

ID=68178211

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910609346.4A Active CN110347968B (zh) 2019-07-08 2019-07-08 一种基于fpga的优化fft算法和装置

Country Status (1)

Country Link
CN (1) CN110347968B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117591784B (zh) * 2024-01-19 2024-05-03 武汉格蓝若智能技术股份有限公司 一种基于fpga的旋转因子计算方法及fpga芯片

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106415526A (zh) * 2016-08-10 2017-02-15 深圳市汇顶科技股份有限公司 Fft处理器及运算方法
CN108021781A (zh) * 2018-01-31 2018-05-11 中国电子科技集团公司第五十四研究所 一种可参数化的fft ip核设计和优化方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106415526A (zh) * 2016-08-10 2017-02-15 深圳市汇顶科技股份有限公司 Fft处理器及运算方法
CN108021781A (zh) * 2018-01-31 2018-05-11 中国电子科技集团公司第五十四研究所 一种可参数化的fft ip核设计和优化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OFDM系统中FFT算法的设计与FPGA实现;吴杨;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;全文 *

Also Published As

Publication number Publication date
CN110347968A (zh) 2019-10-18

Similar Documents

Publication Publication Date Title
US11106437B2 (en) Lookup table optimization for programming languages that target synchronous digital circuits
US20200225919A1 (en) Generating a synchronous digital circuit from a source code construct defining a function call
CN110347968B (zh) 一种基于fpga的优化fft算法和装置
CN101154216A (zh) 快速傅立叶变换电路及快速傅立叶变换方法
CN109241163B (zh) 电子凭证的生成方法及终端设备
CN117692126A (zh) 一种基于低复杂度模乘算法的Paillier同态加密方法及系统
CN113779499A (zh) 一种基于高层次综合工具的快速傅里叶算法优化方法及系统
US20210266168A1 (en) Zero knowledge proof hardware accelerator and the method thereof
CN112181479A (zh) 代码文件版本间差异的确定方法、装置及电子设备
CN116893797A (zh) 一种基于fifo存储的迭代型ntt系统
CN104008334A (zh) 一种文件的聚类方法和设备
CN114942396A (zh) 一种新能源发电组件质量检测方法及装置
Karabulut et al. Efficient, flexible, and constant-time gaussian sampling hardware for lattice cryptography
Mukhopadhyay et al. Hierarchical verification of Galois field circuits
CN113741972A (zh) 一种sm3算法的并行处理方法及电子设备
CN113704126A (zh) 验证方法及其装置、计算机存储介质以及处理器
CN109901993B (zh) 一种单路径线性约束的循环程序终止性判断方法
Zafar Performance of FPGA-based implementations of data classification techniques using HDL coder
Tandukar et al. Embedded Plant/Process Simulator: Design and System Integration for Scalable FFT/IFFT Computations
CN116488613B (zh) 一种滤波方法、装置、终端设备及可读存储介质
CN110750249B (zh) 一种快速傅里叶变换代码的生成方法及装置
US11481333B2 (en) Method, electronic device, and computer program storage for hashing and dividing data
CN118094450B (zh) 一种故障预警方法及相关设备
CN210222752U (zh) 一种基于fft卷积加速电路
CN118211534A (zh) 数字电路的处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant