专利名称:一种FFT处理器
专利类型:发明专利
专利申请号:CN202011117587.6
专利申请(专利权)人:南京宁麒智能计算芯片研究院有限公司
权利人地址:江苏省南京市江宁区麒麟科技创新园智汇路300号B单元二楼
专利发明(设计)人:李丽,赵毅峰,傅玉祥,何书专,李剑斌,陈健
专利摘要:本发明公开一种FFT处理器,属于数字信号处理技术领域。针对现有技术中存在的流水型架构硬件实现的FFT算法资源消耗大,递归型架构性能不高,现有技术无法解决FFT算法硬件实现性能和功耗同时满足的问题,本发明提供一种FFT处理器,包括顶层控制模块、数据索引模块、旋转因子索引模块和蝶形运算单元模块,顶层控制模块控制运算,数据索引模块对数据SRAM进行寻址,旋转因子索引模块对旋转因子SRAM进行寻址,蝶形运算单元模块根据顶层控制模块的信息重构运算单元进行蝶形运算,该处理器能够支持FFT/IFFT批处理运算,与传统FFT处理器相比,提高硬件资源的利用率,在保证高性能的基础上兼具低功耗的特点。
主权利要求:
1.一种FFT处理器,其特征在于,包括顶层控制模块、数据索引模块、旋转因子索引模块和蝶形运算单元模块,顶层控制模块与数据索引模块、旋转因子索引模块和蝶形运算单元模块均连接,蝶形运算单元模块与数据索引模块和旋转因子索引模块均连接;顶层控制模块控制运算,数据索引模块对数据SRAM进行寻址,旋转因子索引模块对旋转因子SRAM进行寻址,蝶形运算单元模块根据顶层控制模块的信息重构运算单元进行蝶形运算;
旋转因子索引模块检测到旋转因子的偏移地址为0时,不对旋转因子SRAM进行读数据操作,直接生成旋转因子的结果;蝶形运算单元模块在执行非最后一级FFT运算时,若检测到旋转因子的值为1,复加/复减运算后的结果不输入复乘器与旋转因子相乘,输入寄存器寄存;蝶形运算单元模块在执行最后一级FFT运算时,复加/复减运算后的结果不与旋转因子相乘,直接输出;蝶形运算单元模块执行基2运算时,包括两个复数加法器、一个复数乘法器和一个寄存单元;第一路复数加法器和第二路复数加法器的输入端连接不同的数据源,第一路复数加法器的输出端与寄存单元连接,第二路复数加法器的输出端与复数乘法器的输入端连接,复数乘法器的输入端还与旋转因子索引模块的输出端连接;蝶形运算单元模块包括八个复数加法器和四个复数乘法器重构成四个基2蝶形运算单元,实现八路并行计算;蝶形运算单元模块执行基4运算时,包括八个复数加法器、三个复数乘法器、一个中间寄存单元和一个寄存单元;八个复数加法器分为两级,第一级复数加法器和第二级复数加法器通过中间寄存单元相连;第二级的第一路复数加法器的输出端与寄存单元相连,第二级的第二、三、四路复数加法器的输出端分别与第一、第二、第三路复数乘法器的输入端连接,第一、第二、第三路复数乘法器的输入端还都与旋转因子连接。
2.根据权利要求1所述的一种FFT处理器,其特征在于,蝶形运算单元模块在执行基4运算时,基于公式(A+Bj)*(‑j)=B‑Aj,两级复数加法器在运算间直接采用符号位改变和实虚部交换的逻辑操作替代复数乘法运算。
3.根据权利要求1所述的一种FFT处理器,其特征在于,执行IFFT运算时,顶层控制模块在源数据输入时通过符号位取反的方式得到源数据的共轭值,在运算结果数据输出时通过符号位取反的方式得到结果数据的共轭值,通过移位的方式实现1/N的操作,N表示进行转换的采样点数量。
4.根据权利要求1所述的一种FFT处理器,其特征在于,数据进行流水运算,一级运算完成后执行下一级运算;当运算多批次数据时,所有批次的第一级同时计算,所有批次的一级运算完成后执行所有批次的下一级运算。 说明书 : 一种FFT处理器技术领域[0001] 本发明涉及数字信号处理技术领域,更具体地说,涉及一种FFT处理器。背景技术[0002] 快速傅里叶变换(FastFourierTransform,FFT)是一种将数据从时域转换到变换域进行处理的快速算法,FFT算法的提出使傅里叶变换成为数字信号处理中最基本的计算技术,被广泛应用于雷达信号处理、通信、图像处理、生物医学等领域。在雷达信号处理中,FFT算法可以用于多普勒滤波器组,完成雷达信号的频域检测;可以用于匹配滤波器,使输出的信噪比最大;可以用于计算模糊函数,大大减少计算量。在通信领域,FFT/IFFT算法可以用于OFDM的调制与解调;可以用于信道均衡和信道估计等。[0003] FFT算法通常包括流水型架构和递归型架构两种硬件实现方案。流水型架构能够保证FFT运算每一级内部流水和级间流水,固定延时少,但是每一级运算需要单独的运算结构,总的资源消耗=每一级的资源消耗×最大运算级数,资源消耗很大。递归型架构只能在每一级运算内实现流水,级间无法流水,性能略低,但在硬件实现时,不同级运算采用同一运算资源,运算资源消耗少,且对不同点数的FFT具有配置灵活的特点。[0004] 此外,随着人们对数据处理性能的要求的不断提高和芯片功耗的愈发重视,一方面需要采用流水线和并行处理等方法提高硬件的执行效率;另一方面也需要针对信号处理算法或硬件结构本身进行优化,通过减少访存或提高资源利用率等方式降低硬件的功耗,使硬件电路兼具高性能和低功耗的特点。[0005] 《太赫兹科学与电子信息学报》第16卷第2期,公开日2018年4月30日,公开论文《低功耗浮点FFT处理器的设计》,作者:杨琳琳、王新胜、王静,公开一种基于现场可编程门阵列(FPGA)的低功耗可配置浮点快速傅里叶变换(FFT)处理器的设计,可进行4点、16点、64点以及256点运算。采用按频率抽取的基‑4算法和基于存储器的单蝶形结构。对蝶形运算单元进行优化,减少乘法器的数目,降低了功耗。存储单元采用乒乓存储结构,提高了数据的吞吐率。同时,采用浮点运算提高了处理器的运算精确度。该处理器采用中芯国际(SMIC)0.18μm工艺库进行综合,工作频率为100MHz,功耗为0.82mW/MHz,执行256bit操作需要20us,并在ACX1329‑CSG324FPGA上实现,功耗和性能未达到很好的改善,实际应用价值不高。发明内容[0006] 1.要解决的技术问题[0007] 针对现有技术中存在的流水型架构硬件实现的FFT算法资源消耗大,递归型架构性能不高,现有技术无法解决FFT算法硬件实现性能和功耗同时满足的问题,本发明提供一种FFT处理器,对传统递归型FFT处理器进行优化,有效降低硬件功耗,且性能较好。[0008] 2.技术方案[0009] 本发明的目的通过以下技术方案实现。[0010] 一种FFT处理器,包括顶层控制模块、数据索引模块、旋转因子索引模块和蝶形运算单元模块,顶层控制模块与数据索引模块、旋转因子索引模块和蝶形运算单元模块均连接,蝶形运算单元模块与数据索引模块和旋转因子索引模块均连接;顶层控制模块控制运算,数据索引模块对数据SRAM进行寻址,旋转因子索引模块对旋转因子SRAM进行寻址,蝶形运算单元模块根据顶层控制模块的信息重构运算单元进行蝶形运算。[0011] 顶层控制模块对外部输入的配置信息进行解析,控制FFT的整体运算流程;数据索引模块根据顶层控制模块的信息生成数据的地址,对数据SRAM进行寻址。旋转因子索引模块根据算法的需求生成旋转因子的地址,对旋转因子SRAM进行寻址;蝶形运算单元模块根据顶层控制模块的信息将浮点运算IP重构成基2或基4运算单元。[0012] 更进一步的,旋转因子索引模块检测到旋转因子的偏移地址为0时,不对旋转因子SRAM进行读数据操作,直接生成旋转因子的结果。此时旋转因子的值为1,不读数据直接生成旋转因子的结果,减少数据访存引起的功耗。[0013] 更进一步的,蝶形运算单元模块在执行非最后一级FFT运算时,若检测到旋转因子的值为1,复加/复减运算后的结果不输入复乘器与旋转因子相乘,输入寄存器寄存。[0014] 更进一步的,蝶形运算单元模块在执行最后一级FFT运算时,复加/复减运算后的结果不与旋转因子相乘,直接输出。最后一级运算结果不与旋转因子相乘直接输出一方面减少数据访存引起的功耗和执行复数乘法产生的功耗,另一方面由于去掉复数乘法操作后减少最后一级的计算时间,提高整个FFT处理器的工作效率。[0015] 更进一步的,蝶形运算单元模块执行基2运算时,包括两个复数加法器、一个复数乘法器和一个寄存单元;第一路复数加法器和第二路复数加法器的输入端连接不同的数据源,第一路复数加法器的输出端与寄存单元连接,第二路复数加法器的输出端与复数乘法器的输入端连接,复数乘法器的输入端还与旋转因子索引模块的输出端连接。[0016] 更进一步的,蝶形运算单元模块包括八个复数加法器和四个复数乘法器重构成四个基2蝶形运算单元,实现八路并行计算。所述基2蝶形运算单元具体工作流程如下,两个源数据在两个复数加法器中分别进行复数加法和复数减法运算,复数减法的结果与旋转因子相乘,复数加法的结果不与旋转因子(值为1)进行复数乘法运算,而是用寄存单元现与复数乘法的同步,寄存的周期与复乘器的运算周期相同,整体实现八路并行计算。[0017] 更进一步的,蝶形运算单元模块执行基4运算时,包括八个复数加法器、三个复数乘法器、一个中间寄存单元和一个寄存单元;八个复数加法器分为两级,第一级复数加法器和第二级复数加法器通过中间寄存单元相连;第二级的第一路复数加法器的输出端与寄存单元相连,第二级的第二、三、四路复数加法器的输出端分别与第一、第二、第三路复数乘法器的输入端连接,第一、第二、第三路复数乘法器的输入端还都与旋转因子连接。[0018] 更进一步的,蝶形运算单元模块在执行基4运算时,基于公式(A+Bj)*(‑j)=B‑Aj,两级复数加法器在运算间直接采用符号位改变和实虚部交换的逻辑操作替代复数乘法运算。基4蝶形运算单元具体工作流程如下,第一级复数加法/减法完成后进入中间寄存单元,其中第一级复数加法器的第一、二、三路的结果直接寄存,第四路的结果需要与(‑j)相乘。通过实虚部交换和符号位取反的方式实现与(‑j)相乘的结果。对于第二级复数加法器的运算结果,与基2蝶形运算流程类似,第二级的第一路复数加法器的结果不与旋转因子(值为1)进行复数乘法运算,而是用寄存模块实现与复数乘法的同步,寄存的周期与复乘器的运算周期相同,整体能够实现四路并行计算。[0019] 更进一步的,执行IFFT运算时,顶层控制模块在源数据输入时通过符号位取反的方式得到源数据的共轭值,在运算结果数据输出时通过符号位取反的方式得到结果数据的共轭值,通过移位的方式实现1/N的操作。本发明硬件结构可直接用于执行IFFT运算,不用再设计另一套计算架构执行IFFT算法;还避免使用更多的浮点乘法器和除法器完成共轭和除法操作。[0020] 更进一步的,数据进行流水运算,一级运算完成后执行下一级运算;当运算多批次数据时,所有批次的第一级同时计算,所有批次的一级运算完成后执行所有批次的下一级运算。相比于现有技术采用完成第一批运算后进行第二批运算,直至完成最后一批运算,现有技术由于级间不流水引起的固定延时为N;定义批数为m,本实施例方法的级间中断引起的固定延时仅为N/m。[0021] 本发明FFT处理器在蝶形运算单元采用简单的寄存单元替代复数乘法器,对旋转因子SRAM的读使能端加入了偏移地址控制信号,旋转因子的偏移地址为0时,不对旋转因子SRAM进行读数据操作,直接生成旋转因子的结果,减少数据访存引起的功耗。在执行最后一级FFT运算时,复加/复减运算后的结果不与旋转因子相乘,直接输出,减少功耗的同时还减少最后一级的计算时间,提高整个FFT处理器的工作效率。[0022] 3.有益效果[0023] 相比于现有技术,本发明的优点在于:[0024] 本发明根据FFT基2算法和基4算法的原理对蝶形运算单元进行优化,减少浮点运算IP的使用,采用简单的寄存单元替代复数乘法器,寄存的周期与复乘器的运算周期相同,在面积和功耗上都具有更好的性能。[0025] 对旋转因子SRAM的读使能端加入了偏移地址控制信号,当偏移地址不为0时才能对旋转因子SRAM进行读请求,旋转因子索引模块检测到旋转因子的偏移地址为0时,不对旋转因子SRAM进行读数据操作,直接生成旋转因子的结果,减少数据访存引起的功耗。[0026] 在顶层控制模块,通过状态机的优化,保证最后一级运算能够不经过复数乘法器直接输出。对于最后一级运算,由于所有蝶形运算单元的旋转因子均为1,直接将复加/复减后的结果输出。能够有效的降低硬件功耗,还能在减少整体的计算周期,具有功耗低,性能高的优点。附图说明[0027] 图1是本发明中FFT处理器的硬件架构图。[0028] 图2是本发明中基2蝶形运算原理图。[0029] 图3是本发明中基2蝶形运算单元结构图。[0030] 图4是本发明中基4蝶形运算原理图。[0031] 图5是本发明中基4蝶形运算单元结构图。具体实施方式[0032] 下面结合说明书附图和具体的实施例,对本发明作详细描述。[0033] 实施例1[0034] 如图1所示,本实施例的低功耗浮点型FFT处理器包括顶层控制模块、数据索引模块、旋转因子索引模块和蝶形运算单元模块,顶层控制模块与数据索引模块、旋转因子索引模块和蝶形运算单元模块均连接,蝶形运算单元模块还与数据索引模块和旋转因子索引模块均连接。[0035] 顶层控制模块对外部输入的配置信息进行解析,控制FFT的整体运算流程;数据索引模块根据顶层控制模块的信息生成数据的地址,对数据SRAM进行寻址。[0036] 旋转因子索引模块根据算法的需求生成旋转因子的地址,对旋转因子SRAM进行寻址;旋转因子索引模块检测到旋转因子的偏移地址为0时,此时旋转因子的值为1,不对旋转因子SRAM进行读数据操作,直接生成旋转因子的结果,减少数据访存引起的功耗,降低本实施例的功耗。[0037] 蝶形运算单元模块根据顶层控制模块的信息将浮点运算IP重构成基2或基4运算单元。蝶形运算单元模块在执行基2算法或基4算法时,根据基2或基4算法的原理对硬件电路进行优化,减少复数乘法器的使用,从而减少处理器的面积,还降低硬件产生的功耗。[0038] 蝶形运算单元模块执行基2算法时,基2蝶形运算的原理图如图2所示。如图3所示,基2蝶形运算单元硬件结构系统包括两个复数加法器、一个复数乘法器和一个寄存单元;两路复数加法器的输入端各连接不同的两路数据源,第一路复数加法器的输出端与寄存单元相连,第二路复数加法器的输出端与复数乘法器的输入端相连,复数乘法器的输入端还与连接有旋转因子。[0039] 本实施例蝶形运算单元模块使用八个复数加法器和四个复数乘法器重构成四个基2蝶形运算单元。所述基2蝶形运算单元具体工作流程如下,两个源数据在两个复数加法器中分别进行复数加法和复数减法运算,复数减法的结果与旋转因子相乘,复数加法的结果不与旋转因子(值为1)进行复数乘法运算,而是用寄存单元现与复数乘法的同步,寄存的周期与复乘器的运算周期相同,整体能够实现八路并行计算。[0040] 蝶形运算单元模块执行基4算法时,基4蝶形运算的原理图如图4所示,如图5所示,基4蝶形运算单元硬件系统包括八个复数加法器、三个复数乘法器、一个中间寄存单元和一个寄存单元;八个复数加法器分为两级复数加法器,第一级复数加法器和第二级复数加法器通过中间寄存单元相连,即第一级复数加法器的输出端连接中间寄存单元的输入端,中间寄存单元的输出端连接第二级复数加法器的输入端;第二级的第一路复数加法器的输出端与寄存单元相连,第二级的第二、三、四路复数加法器的输出端分别与第一、第二、第三路复数乘法器的输入端连接,第一、第二、第三路复数乘法器的输入端还都与不同的旋转因子连接,共连接有三个旋转因子。本实施例蝶形运算单元模块可以重构成一个基4蝶形运算单元。[0041] 基4蝶形运算单元具体工作流程如下,第一级复数加法/减法完成后进入中间寄存单元,其中第一级复数加法器的第一、二、三路的结果直接寄存,第四路的结果需要与(‑j)相乘。相比于现有技术,本方法避免了使用额外的复数乘法器进行复乘操作,在确定乘数为(‑j)的情况下,根据如下公式换算:[0042] (A+Bj)*(‑j)=B‑Aj[0043] 如上述公式所示,可以通过实虚部交换和符号位取反的方式实现与(‑j)相乘的结果。对于第二级复数加法器的运算结果,与基2蝶形运算流程类似,第二级的第一路复数加法器的结果不与旋转因子(值为1)进行复数乘法运算,而是用寄存模块实现与复数乘法的同步,寄存的周期与复乘器的运算周期相同,整体能够实现四路并行计算。[0044] 本实施例蝶形运算单元模块在执行最后一级FFT运算时,复加/复减运算后的结果不与旋转因子相乘,直接输出。当顶层控制模块解析到FFT处理器硬件在执行最后一级FFT运算时,由于所有的旋转因子均为1,顶层控制模块关闭旋转因子索引模块,将蝶形运算单元的复数加法/复数减法后的结果直接输出。当使用基2蝶形运算单元计算时为第一级运算的结果直接输出,当使用基4蝶形运算单元计算时为第二级运算的结果直接输出。最后一级运算结果不与旋转因子相乘直接输出一方面减少数据访存引起的功耗和执行复数乘法产生的功耗,另一方面由于去掉复数乘法操作后减少最后一级的计算时间,提高整个FFT处理器的工作效率。相比于现有技术,本实施例用简单的寄存单元替代了复数复乘器,在功耗和面积都更具优势。[0045] 本发明在顶层控制模块控制FFT处理器支持批处理运算,每次对所有批数的第一级FFT运算进行流水运算,一级运算完成后执行下一级FFT运算。当顶层控制模块解析到输入配置为批处理FFT运算时,顶层控制模块会控制其他模块完成所有批的第一级运算后然后进行第二级运算,以此类推,完成最后一级运算。相比于现有技术采用完成第一批运算后进行第二批运算,直至完成最后一批运算,现有技术由于级间不流水引起的固定延时为N;定义批数为m,本实施例方法的级间中断引起的固定延时仅为N/m。[0046] 当顶层控制模块解析到输入配置为IFFT运算时,根据IFFT算法的原理有:[0047][0048] 上述公式中,X(k)表示频域值, 表示旋转因子,N表示进行转换的采样点数量,k表示频域值的索引,n表示时域采样点的序列索引,x(n)表示时域采样点。根据上述公式将IFFT运算转化成FFT运算,在硬件执行IFFT运算时,顶层控制模块会控制数据传输过程,在源数据输入时通过符号位取反的方式得到源数据的共轭值,在结果数据输出时通过符号位取反的方式得到结果数据的共轭值,通过移位的方式实现1/N的操作。不用再设计另一套计算架构执行IFFT算法;还避免使用更多的浮点乘法器和除法器完成共轭和除法操作。[0049] 本实施例的低功耗浮点型FFT处理器从减少对存储器的访问和对浮点IP的使用两个方面对算法的各个模块进行优化,在保证性能的前提下降低硬件功耗,实现低功耗处理。本实施例基于12nm工艺库进行综合,时钟周期可达500MHz,功耗为0.75mW/MHz,执行256bit操作仅需要376ns,相较于现有技术,本实施例的功耗和性能大幅提升。支持数据总点数小于256K点的任意批数和任意点数的FFT运算,具有较强的灵活性。[0050] 以上示意性地对本发明创造及其实施方式进行了描述,该描述没有限制性,在不背离本发明的精神或者基本特征的情况下,能够以其他的具体形式实现本发明。附图中所示的也只是本发明创造的实施方式之一,实际的结构并不局限于此,权利要求中的任何附图标记不应限制所涉及的权利要求。所以,如果本领域的普通技术人员受其启示,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本专利的保护范围。此外,“包括”一词不排除其他元件或步骤,在元件前的“一个”一词不排除包括“多个”该元件。产品权利要求中陈述的多个元件也可以由一个元件通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
专利地区:江苏
专利申请日期:2020-10-19
专利公开日期:2024-08-30
专利公告号:CN112231626B