一种基于FPGA的大容量可重构的FFT运算IP核制造技术

技术编号:29400537 阅读:13 留言:0更新日期:2021-07-23 22:37
本发明专利技术公开了一种基于FPGA的大容量可重构FFT运算IP核,将确定好的倒位序数据存入倒位序存储单元,将确定好的旋转因子存入旋转因子存储单元,采用两块数据存储RAM形成乒乓结构进行数据存储,将旋转因子存储单元和数据存储RAM进行分块,在运算开始时,数据缓存模块将数据按照倒位序存入数据存储RAM中,在每级蝶形结运算时,FFT运算模块按照特定规则从数据存储RAM和旋转因子存储单元中分批次读取数据,并行进行蝶形结运算,将计算结果存入另一块数据存储RAM中,直到计算完毕,将FFT运算结果进行输出。本发明专利技术IP核可自由配置并行数,通过并行与流水线运算相结合的方式解决大点数FFT运算中时钟周期过多、进行大点数的运算较为困难等问题。

【技术实现步骤摘要】
一种基于FPGA的大容量可重构的FFT运算IP核
本专利技术属于数据采集领域,更为具体地讲,涉及一种基于FPGA的大容量可重构的FFT运算IP核。
技术介绍
随着电子技术的发展,测量仪器在工程领域扮演着越来越重要的角色,广泛地应用于各个领域;数据采集作为测量仪器中的一个关键环节,其速率高低是衡量测量仪器性能优劣的一个重要指标;如今实际的工程环境愈加复杂,测量仪器也面临着越来越高的测量指标要求,低延时与高精度测量需求已成为了其发展的主要瓶颈;要在有限的硬件资源下实现更高精度、更快速的测量,对于数据采集系统而言也将面临着更加巨大的挑战。当前具有低延时与高精度的各种测量仪器都长期被国外生产厂商垄断,而国内研究与生产的厂商在相关技术上存在着很大的空缺。因此,尽快打破这一领域国外技术封锁对于我国精密仪器行业,乃至国防科技的发展都有着重要的意义。基于这样的技术背景下,提高设备数据处理速率将有重要的意义。在众多的测量仪器中,如示波器、频谱分析仪以及功率分析仪等,其都需要对待测信号进行频谱分析,FFT算法作为一种常用方法,在各种仪器中都被广泛使用,该算法的传统的实现方法主要有三种途径,其运算快慢会直接影响设备的数据处理的速度。其一,通过上位机中CPU进行运算,其优点是灵活且易开发,但由于CPU的串行计算原理,计算时间长。其二,通过专用DSP芯片进行计算,其较CPU而言运算时间会大量减少,但其本质还是串行计算,减少的时间依赖于芯片性能,提升有限。其三,直接使用FPGA进行运算,由于其能在数据采集后直接运算,减少了大容量数据传输的时间,运算速度更快,但目前实现此方法的主要途径是使用相关公司提供的IP核,其为了保证通用性,在性能与功能上有一定的局限性。比如xilinx公司提供的IP只能实现8点到65536点范围内2的整数次幂点数的FFT计算,且无法设置并行数以提升计算效率。鉴于现有IP核的局限性,设计一种基于FPGA内部逻辑资源的大容量可重构的通用FFT运算方法,并封装为通用IP核,以满足速度与资源的均衡配置,这在实际的工程运用中将有着巨大的价值。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种基于FPGA的大容量可重构的FFT运算IP核,该IP核可自由配置并行数,通过并行与流水线运算相结合的方式解决大点数FFT运算中时钟周期过多、进行大点数的运算较为困难等问题,并根据实际资源情况调整并行数,以实现速度与资源的均衡。为了实现上述专利技术目的,本专利技术基于FPGA的大容量可重构的FFT运算IP核包括倒位序存储单元、旋转因子存储单元、数据存储RAMA、数据存储RAMB、数据缓存模块、FFT运算模块和数据输出处理模块,以上模块均在FPGA中设置,其中:倒位序存储单元用于存储预先根据全基二蝶形结算法和FFT运算点数N确定好的倒位序数据,第n个倒位序数据即为FFT运算中第n个数据在数据存储RAMA的存储地址,n=0,1,…,N-1;旋转因子存储单元用于顺序存储预先根据全基二蝶形结算法和FFT运算点数N确定好的N/2旋转因子数据其中t表示旋转角度份数,t=0,1,…,N/2-1;记预先设置的并行路数为P,P为2的整数次幂且P≤N/2;当旋转因子存储单元采用单口ROM时,将旋转因子存储单元等分为P个分块,记各个分块的序号为m,分块中各个旋转因子的序号为n,其中m=1,2,…,P,n=0,1,…,N/2P-1;当旋转因子存储单元采用双口ROM时,将旋转因子存储单元等分为P/2个分块,记各个分块的序号为m,分块中各个旋转因子的序号为n,其中m=1,2,…,P/2,n=0,1,…,N/P-1;数据存储RAMA、数据存储RAMB用于形成乒乓结构以存储运算数据,即一个用于读取,另一个用于写入,蝶形结运算的每级流图对两个RAM进行交替读写;数据存储RAMA和数据存储RAMB采用相同的存储结构,分别等分为P个分块,记各个分块的序号为i,分块中各个数据的序号为j,其中i=1,2,…,P,j=0,1,…,N/P-1;数据缓存模块用于将上级FIFO传入的数据进行预处理,数据缓存模块包括浮点转换模块和倒位序存储模块,其中浮点转换模块用于将上级FIFO中所存储的输入数据转换为浮点数据,然后发送给倒位序存储模块;倒位序存储模块从倒位序存储单元中读取倒位序数据,按照倒位序数据将浮点转换模块转换得到的各个浮点数据的实部和虚部存储至数据存储RAMA相应存储地址对应的实部存储单元和虚部存储单元;FFT运算模块用于实现上级FIFO传入数据的FFT运算,FFT运算模块包括级数计数器、读取选择模块、蝶形结计算模块和写入选择模块,其中:级数计数器用于对蝶形结运算的级数进行计数;读取选择模块用于根据蝶形结运算级数从数据存储RAMA或数据存储RAMB中分批读取所需进行蝶形结计算的数据对,从旋转因子存储单元中读取数据对进行蝶形结运算时所需的旋转因子,将数据对和旋转因子按批次发送至蝶形结计算模块;蝶形结计算模块用于对每个批次接收的数据对和旋转因子并行进行蝶形结运算,将计算结果发送至写入选择模块;写入选择模块用于根据蝶形结运算级数将本次蝶形结运算的结果写入数据存储RAMB或数据存储RAMA中;FFT运算模块的工作流程如下:S1:级数计数器设置级数值k=1;S2:读取选择模块判断当前级数值k是否为奇数,如果是,则从数据存储RAMA中读取数据,否则从数据存储RAMB中读取数据;读取数据的方法为:从当前进行数据读取的数据存储RAM中分N/2P个批次进行数据读取并发送给蝶形结计算模块,第d个批次数据包括P个数据对,每个数据对包括一个偶数点数据和一个奇数点数据,即每个分块中第2d个数据和第2d+1个数据,d=0,1,…,N/2P-1;并计算未分块前数据对的原始地址发送给写入选择模块,记数据对所在分块的序号为i,记偶数点数据所在的地址序号为j,奇数点数据的地址序号为j+1,偶数点数据的原始地址addi,j和奇数点数据的原始地址addi,j+1的计算公式分别如下:读取选择模块在读取每个数据对的同时,计算得到该数据对所对应旋转因子在旋转因子存储单元中的地址,然后读取对应的旋转因子并送入蝶形结计算模块;旋转因子地址的计算方法如下:采用以下公式计算该组数据进行蝶形结计算时所需旋转因子数据中旋转角度份数t的取值:其中,表示向下取整;采用以下公式计算得到旋转因子数据的分块序号m和在分块中的序号n:其中,%表示求取余数;当旋转因子存储单元采用双口ROM时,采用以下公式计算得到旋转因子数据的分块序号m和在分块中的序号n:S3:蝶形结计算模块在每接收到一个批次的P个数据对和对应的P个旋转因子后,进行P路并行蝶形结运算,N/2P个批次的P路并行蝶形结运算采用流水线结构进行,将得到N/2组加法计算结果和减法运算结果发送至写入选择模块;S4:写入选择模块判断本文档来自技高网
...

【技术保护点】
1.一种基于FPGA的大容量可重构FFT运算IP核,其特征在于,包括倒位序存储单元、旋转因子存储单元、数据存储RAMA、数据存储RAMB、数据缓存模块、FFT运算模块和数据输出处理模块,以上模块均在FPGA中设置,其中:/n倒位序存储单元用于存储预先根据全基二蝶形结算法和FFT运算点数N确定好的倒位序数据,第n个倒位序数据即为FFT运算中第n个数据在数据存储RAMA的存储地址,n=0,1,…,N-1;/n旋转因子存储单元用于顺序存储预先根据全基二蝶形结算法和FFT运算点数N确定好的N/2旋转因子数据

【技术特征摘要】
1.一种基于FPGA的大容量可重构FFT运算IP核,其特征在于,包括倒位序存储单元、旋转因子存储单元、数据存储RAMA、数据存储RAMB、数据缓存模块、FFT运算模块和数据输出处理模块,以上模块均在FPGA中设置,其中:
倒位序存储单元用于存储预先根据全基二蝶形结算法和FFT运算点数N确定好的倒位序数据,第n个倒位序数据即为FFT运算中第n个数据在数据存储RAMA的存储地址,n=0,1,…,N-1;
旋转因子存储单元用于顺序存储预先根据全基二蝶形结算法和FFT运算点数N确定好的N/2旋转因子数据其中t表示旋转角度份数,t=0,1,…,N/2-1;记预先设置的并行路数为P,P为2的整数次幂且P≤N/2;当旋转因子存储单元采用单口ROM时,将旋转因子存储单元等分为P个分块,记各个分块的序号为m,分块中各个旋转因子的序号为n,其中m=1,2,…,P,n=0,1,…,N/2P-1;当旋转因子存储单元采用双口ROM时,将旋转因子存储单元等分为P/2个分块,记各个分块的序号为m,分块中各个旋转因子的序号为n,其中m=1,2,…,P/2,n=0,1,…,N/P-1;
数据存储RAMA、数据存储RAMB用于形成乒乓结构以存储运算数据,即一个用于读取,另一个用于写入,蝶形结运算的每级流图对两个RAM进行交替读写;数据存储RAMA和数据存储RAMB采用相同的存储结构,分别等分为P个分块,记各个分块的序号为i,分块中各个数据的序号为j,其中i=1,2,…,P,j=0,1,…,N/P-1;
数据缓存模块用于将上级FIFO传入的数据进行预处理,数据缓存模块包括浮点转换模块和倒位序存储模块,其中浮点转换模块用于将上级FIFO中所存储的输入数据转换为浮点数据,然后发送给倒位序存储模块;倒位序存储模块从倒位序存储单元中读取倒位序数据,按照倒位序数据将浮点转换模块转换得到的各个浮点数据的实部和虚部存储至数据存储RAMA相应存储地址对应的实部存储单元和虚部存储单元;
FFT运算模块用于实现上级FIFO传入数据的FFT运算,FFT运算模块包括级数计数器、读取选择模块、蝶形结计算模块和写入选择模块,其中:
级数计数器用于对蝶形结运算的级数进行计数;
读取选择模块用于根据蝶形结运算级数从数据存储RAMA或数据存储RAMB中分批读取所需进行蝶形结计算的数据对,从旋转因子存储单元中读取数据对进行蝶形结运算时所需的旋转因子,将数据对和旋转因子按批次发送至蝶形结计算模块;
蝶形结计算模块用于对每个批次接收的数据对和旋转因子并行进行蝶形结运算,将计算结果发送至写入选择模块;
写入选择模块用于根据蝶形结运算级数将本次蝶形结运算的结果写入数据存储RAMB或数据存储RAMA中;
FFT运算模块的工作流程如下:
S1:级数计数器设置级数值k=1;
S2:读取选择模块判断当前级数值k是否为奇数,如果是,则从数据存储RAMA中读取数据,否则从数据存储RAMB中读取数据;读取数据的方法为:从当前进行数据读取的数据存储RAM中分N/2P个批次进行数据读取并发送给蝶形结计算模块,第d个批次数据包括P个数据对,每个数据对包括一个偶数点数据和一个奇数点数据,即每个分块中第2d个数据和第2d+1个数据,d=0,1,…,N/2P-1;并计算未分块前数据对的原始地址发送给写入选择模块,记数据对所在分块的序号为i,记偶数点数据所在的地址序号为j,奇数点数据的地址序号为j+1,偶数点数据的原始地址addi,j和奇数点数据的原始地址addi,j+1的计算公式分别如下:






读取选择模块在读取每个数据对的同时,计算得到该数据对所对应旋转因子...

【专利技术属性】
技术研发人员:许波白利兵程玉华钟乔耿航陈凯陈子灵赵佳
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1