基于dsp芯片的fft加速器的制造方法

xiaoxiao2020-7-22  15

基于dsp芯片的fft加速器的制造方法
【专利摘要】本发明公开一种基于DSP芯片的FFT加速器,包括:模式配置模块,接收数据地址、运算规模及运算次数的配置数据;FFT运算控制模块,当运算规模小于能够直接支持的最大运算规模时控制FFT计算模块执行一维FFT运算,当大于能够直接支持的最大运算规模时,控制FFT计算模块执行二维FFT运算;数据访问控制模块,控制以DMA方式从存储器中读取运算数据并将运算结果写回存储器;FFT计算模块,根据FFT运算控制模块输出的控制信号并行执行FFT运算。本发明具有支持运算规模、运算次数和数据格式的多种配置方式、能够实现从小规模到大规模范围内的FFT运算、执行效果高、硬件资源利用率高的优点。
【专利说明】基于DSP芯片的FFT加速器
【技术领域】
[0001]本发明涉及数据处理中的FFT计算【技术领域】,尤其涉及一种基于DSP芯片的FFT加速器。
【背景技术】
[0002]DFT (Discrete Fourier Transformation,离散傅里叶变换)是数字信号处理领域不可缺少的工具之一,它将一种信号从时域变换到频域,广泛应用于声学、图像、雷达、电信和无线信号处理等领域。FFT (Fast Fourier Transformation,快速傅立叶变换)是DFT的一种快速实现方法,FFT的出现使得DFT在实际应用中得到了更为广泛的应用。FFT算法是
利用复指数常数Wn的特性将信号序列x(n)或X(k)的排列次序进行重排并分解成
短序列运算,将DFT运算复杂度由0(n2)降低到O(nlogn)。
[0003]在实时信号处理领域,需要支持实数FFT、复数FFT、实数IFFT (Inverse FFT)和复数IFFT的运算,数据格式可能是IEEE-754标准的浮点格式或定点格式,对于不同的应用FFT的运算规模变化也非常大,可能为数十点或数十万点。
[0004]现有技术 中,部分DSP芯片中虽然提供了 FFT加速方案,但支持的最大运算规模仅为1K,限制FFT加速器的应用范围,且通常仅能支持32位定点计算,对于更常用IEEE-754标准浮点格式不提供支持。例如TI C55X系列DSP芯片,其包含一个紧耦合FFT加速器(称为HWA),通过使用加速器指令可以实现FFT加速器与C55X DSP通讯,该FFT加速器仅支持32位定点格式的8点到1024点实数和复数FFT计算。

【发明内容】

[0005]本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种结构简单、成本低廉、支持可变的运算规模且能够支持大规模的FFT运算、应用范围广、执行效率高的基于DSP芯片的FFT加速器。
[0006]为解决上述技术问题,本发明提出的技术方案为:
[0007]一种基于DSP芯片的FFT加速器,包括:
[0008]模式配置模块,用于从DSP内核接收数据地址、运算规模N = 2k及运算次数M的配置数据,输出至FFT运算控制模块及数据访问控制模块;
[0009]FFT运算控制模块,用于判断运算规模N是否大于阈值N1,若为否,控制FFT计算模块进行N点一维FFT运算;若为是,控制FFT计算模块进行NfN2的二维FFT运算,其中N=N1^N2, N1为FFT计算模块能够直接支持的最大FFT运算规模且N1大于或等于N2,输出控制信号至FFT计算模块;
[0010]数据访问控制模块,用于FFT计算模块执行运算时,根据数据地址控制以DMA方式从存储器中读取出运算数据至FFT计算模块,并将FFT计算模块输出的运算结果存储回存储器中;[0011]FFT计算模块,用于根据FFT运算控制模块输出的控制信号并行执行FFT运算;进行一维FFT运算时,并行执行N点的一维FFT运算;进行二维FFT运算时,并行执行N2次N1点的列方向一维FFT计算,对计算结果进行旋转因子补偿,再并行执行N1次N2点的行方向一维FFT计算,完成N点的FFT运算。
[0012]作为本发明的进一步改进:还包括分别与数据访问控制模块、FFT计算模块的输出端连接的数据格式转换模块,所述数据格式转换模块用于当数据访问控制模块读取的运算数据为定点格式时将运算数据转换为浮点格式,输出至FFT计算模块,并将FFT计算模块输出的运算结果转换为对应的定点格式后输出回数据访问控制模块。
[0013]作为本发明的进一步改进:所述FFT计算模块包括两个并行的FFT执行子模块以及分别与两个FFT执行子模块连接的CORDIC补偿旋转因子计算子模块;两个所述FFT执行子模块并行执行两组数据的FFT计算,其中一组数据为规模小于或等于N1点的数据,所述CORDIC补偿旋转因子计算子模块根据数据地址及运算规模N采用CORDIC算法计算补偿旋转因子,分别输出至两个所述FFT执行子模块。
[0014]作为本发明的进一步改进:每个所述FFT执行子模块包括FFT计算控制单元、数据存储单元、并行蝶形运算单元以及旋转因子存储单元;所述FFT计算控制单元接收FFT运算控制模块输出的控制信号,控制并行蝶形运算单元和CORDIC补偿旋转因子计算子模块的启动;所述数据存储单元存储并行蝶形运算单元待输入的运算数据以及待输出的运算结果;所述并行蝶形运算单元并行执行一组数据的蝶形运算或补偿旋转因子计算,所述旋转因子存储单元存储蝶形运算时的旋转因子。
[0015]作为本发明的进一步改进:所述并行蝶形运算单元包括两个并行的蝶形运算部件。
[0016]作为本发明的进一步改进:每个所述蝶形运算部件包括多个IEEE-754标准的单精度浮点乘法器、多个单精度浮点加/减法器。
[0017]作为本发明的进一步改进:所述单精度浮点乘法器为4个,所述单精度浮点加/减法器为6个。
[0018]作为本发明的进一步改进:所述数据存储单元包括两组数据存储器,对待输入的运算数据以及待输出的运算结果进行乒乓结构的缓存;每组所述数据存储器包括4个双端口 的 RAM。
[0019]作为本发明的进一步改进:所述旋转因子存储单元采用两个查找表,每个所述查找表具有N1个选项;每个所述查找表对应连接一个所述蝶形运算部件。
[0020]与现有技术相比,本发明的优点在于:
[0021](I)本发明根据运算规模及运算次数的配置数据控制执行FFT运算,对于大规模的FFT,将N点一维FFT运算转换为二维FFT运算,能够实现小规模到大规模范围内的FFT运算,应用范围广泛、灵活性强;执行FFT运算时采用IEEE-754标准的浮点运算并通过CORDIC算法计算补偿旋转因子,能够支持更为常用的浮点格式FFT运算,通过数据格式的转换还能够支持32位定点数据格式,运算规模、运算次数及数据格式支持多种配置模式。
[0022](2)本发明执行FFT计算时采用两个FFT执行子模块并行执行两组数据的FFT计算,每个FFT执行子模块采用两个蝶形运算部件并行执行,能够有效的加速实现FFT运算、提高加速器的执行性能;同时由两个FFT执行子模块共享一个CORDIC补偿旋转因子计算子模块,每个FFT执行子模块中蝶形运算与旋转因子补偿计算复用同一硬件结构,使硬件执行效率最大化同时节省硬件资源。
[0023](3)本发明在FFT计算时采用两组乒乓多体结构的数据存储器存储读入或写出的数据,两组数据的FFT计算的交替执行,同时每组数据存储器由4个RAM组成,保证数据存储器的初始化与FFT计算同时进行,通过FFT的计算开销隐藏从存储器访问数据的开销,从而提高FFT的计算性能。
【专利附图】

【附图说明】
[0024]图1是本实施例基于DSP芯片的FFT加速器结构示意图。
[0025]图2是本实施例中基于DSP芯片的FFT加速器的外部接口结构示意图。
[0026]图3是本实施例中CORDIC补偿旋转因子计算子模块结构示意图。
[0027]图4是本实施例中角度计算单元结构示意图。
[0028]图5是本实施例中迭代单元ROT结构示意图。
[0029]图6是本实施例中第一 FFT执行子模块(FFT_PE[1])结构示意图。
[0030]图7是本实施例中并行蝶形运算单元结构示意图。
[0031]图8是本实施例中蝶形运算部件结构示意图。
[0032]图9是本实施例中数据存储单元结构示意图。
[0033]图10是本实施例中旋转因子存储单元结构示意图。
[0034]图11是本实施例中两个FFT执行子模块FFT-PE计算时的时序原理示意图。
[0035]图例说明
[0036]1、模式配置模块;2、FFT运算控制模块;3、数据访问控制模块;4、FFT计算模块;41、第一 FFT 执行子模块(FFT-PE[1]) ;42、第二 FFT 执行子模块(FFT_PE[2]) ;43、CORDIC补偿旋转因子计算子模块;411、FFT计算控制单元;412、数据存储单元;413、并行蝶形运算单元;414、旋转因子存储单元;5、数据格式转换模块。
【具体实施方式】
[0037]以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
[0038]如图1所示,本实施例基于DSP芯片的FFT加速器结构,包括:
[0039]模式配置模块1,用于从DSP内核接收数据地址、运算规模N = 2k及运算次数M的配置数据,输出至FFT运算控制模块2及数据访问控制模块3 ;
[0040]FFT运算控制模块2,用于判断运算规模N是否大于阈值N1,若为否,控制FFT计算模块4进行N点一维FFT运算;若为是,将初始运算数据转换为NfN2的二维矩阵并控制FFT计算模块4进行二维FFT运算,其中N = N1^N2, N1为为FFT计算模块4能够直接支持的最大FFT运算规模且N1大于或等于N2,输出控制信号至FFT计算模块4 ;
[0041]数据访问控制模块3,用于FFT计算模块4执行运算时,根据数据地址控制以DMA方式从存储器中读取出运算数据至FFT计算模块4,并将FFT计算模块4输出的运算结果存储回存储器中;
[0042]FFT计算模块4,用于根据FFT运算控制模块2输出的控制信号并行执行FFT运算;进行一维FFT运算时,并行执行N点的一维FFT运算;进行二维FFT运算时,并行执行N2次N1点的列方向一维FFT计算,对计算结果进行旋转因子补偿,再并行执行N1次N2点的行方向一维FFT计算,完成N点的FFT运算。
[0043]本实施中,阈值N1由DSP芯片中实际采用的FFT计算模块4能够直接支持的最大FFT运算规模决定,如采用现有技术中的FFT加速器。运算规模N小于阈值N1时,FFT加速器可直接支持,通过执行N点的一维FFT运算完成;对于大于阈值N1的大规模FFT运算,则将N点FFT运算转换为二维FFT运算,FFT运算采用浮点格式。采用以上方法,本实施例基于DSP芯片的FFT加速器能够支持的最大规模为NfN1的FFT运算。
[0044]本实施例中,还包括分别与数据访问控制模块3、FFT计算模块4的输出端连接的数据格式转换模块5。对于定点输入数据,数据格式转换模块5将数据转换为浮点格式并将FFT计算结果转换为相应的定点格式。输入的数据为定点格式时,在数据输入阶段,数据访问控制模块3从存储器中读取定点格式的初始数据,由数据格式转换模块5将数据转换为浮点格式输出至FFT计算模块4 ;在数据写回阶段时,将FFT计算模块4输出的运算结果转换为对应的定点格式后输出回数据访问控制模块3。工作时,由FFT运算控制模块2输出数据格式及计算阶段至数据访问控制模块3,数据格式转换模块5根据数据格式及计算阶段执行数据格式的转换。采用浮点格式计算FFT运算,能够实现对实际应用中更为常用的IEEE-754标准浮点格式数据的FFT计算,同时通过数据格式的转换也能够支持定点格式数据的计算,对输入数据的格式要求灵活。
[0045]本实施例中,模式配置模块I通过命令总线从DSP内核接收配置数据,其中配置数据包括初始数据起始地址、中间数据地址及结果数据地址、运算规模N、FFT运算个数M、浮点和定点选择信号以及定点格式信号。FFT运算控制模块2根据配置数据,控制FFT计算模块4执行不同运算规模、不同FFT运算个数以及浮点或定点格式的FFT运算,能够支持可变的运算规模及FFT运算个数,输入数据可以为IEEE-754标准的单精度浮点格式或32位定点数据格式,能够支持多种配置模式,满足不同嵌入式应用领域的要求,应用范围广泛且灵活性强。在其它实施例中配置数据还可包括FFT与IFFT选择信号、实数与复数选择信号、浮点和定点选择信号以及定点格式信号,FFT运算控制模块2根据配置数据控制FFT计算模块4执行FFT或IFFT运算、实数或复数类型的FFT/IFFT运算,实现多种运算模式。
[0046]对于N点FFT且NSN1,总共需要执行| log)次蝶形运算,包括lc)gf级、每级|次蝶
形运算。小规模FFT计算中,即运算规模N小于N1时,同一级的*次蝶形运算可以并行执行。
[0047]本实施例中,由FFT运算控制模块2控制FFT计算模块4运行完成N点FFT运算。FFT运算控制模块2通过命令总线从DSP内核接收命令,命令包括启动FFT执行命令、暂停FFT执行命令、恢复FFT执行命令以及作废FFT执行命令,控制FFT计算模块4执行相应的命令。启动FFT执行命令为启动进行FFT计算,暂停FFT执行命令为暂停数据访问总线,恢复FFT执行命令为恢复本次FFT计算,作废FFT执行命令为作废本次FFT运算。当FFT计算模块4完成所有FFT计算后,FFT运算控制模块2立即向DSP内核发送FFT完成中断信号,同时置完成寄存器的值为I。[0048]FFT运算控制模块2控制FFT计算模块4启动FFT执行命令时,发送启动命令并根据配置数据控制FFT计算模块4执行,输出相应的控制信号及运算规模N至FFT计算模块4并向数据访问控制模块3发送数据访问请求。数据访问控制模块3响应FFT运算控制模块2的数据访问请求,根据数据地址控制读取运算数据至FFT计算模块4进行运算。对于大于N1点的FFT运算,FFT运算控制模块2将N点初始运算数据视为N2-N1的二维矩阵,控制FFT计算模块4执行二维FFT运算,FFT计算模块4进行二维FFT运算时,首先并行执行N2次N1点的列方向一维FFT计算,进行旋转因子补偿后完成列方向的FFT运算,再对列方向的FFT运算结果并行执行N1次N2点的行方向一维FFT计算,完成N点的FFT运算;对于运算规模N小于N1的FFT运算,直接并行执行N点的一维FFT。
[0049]FFT运算过程中,需要将初始运算数据、中间数据及运算结果存储在片外或片上存储器中。对于片外的DDR存储器,能够提供较大的存储空间(G量级)来存储初始数据和运算结果,然而DDR存储器组织结构特点决定了需要以突发方式连续访问数据;对于片上SRAM存储器,能够以随机访问方式快速得到SRAM中任何地址中的数据,其数据组织较为灵活,然而占用了 DSP芯片资源且存储容量有限(M量级),进行大规模FFT计算时原始数据和计算结果不能都存储在片上SRAM存储器中。
[0050]如图2所示,本实施例中基于DSP芯片的FFT加速器的外部接口结构,由数据访问控制模块3实现与DSP芯片内或芯片外存储器的数据交互,模式配置模块I接收DSP内核的配置数据、FFT运算控制模块2接收DSP内核的命令并将FFT完成中断信号发送至DSP内核。FFT计算模块4每次执行计算时,由FFT运算控制模块2向数据访问控制模块3发送数据访问请求,控制进行运算数据的读写。数据访问控制模块3将FFT运算控制模块2的读、写数据请求转换为DDR总线协议的访问或者SRAM总线协议的访问,其中对于读数据请求,数据访问控制模块3根据数据地址从片外DDR存储器或者片上SRAM存储器中以突发方式读出数据,并将数据写到FFT计算模块4的数据存储器中;对于写数据请求,从FFT计算模块4的数据存储器中读出数据,并写回到片外DDR存储器或者片上SRAM中。
[0051]本实施例中,结合片外DDR存储器和片上SRAM存储器对数据进行存储,利用片外DDR存储器存储数据量大的初始运算数据和计算结果,利用片上SRAM存储器随机访问的特性存储FFT计算时的中间数据,同时使用片上SRAM存储器完成二维FFT计算时的二维数据转置,避免对片外DDR存储器中数据进行按列访问。采用DMA的方式实现DSP芯片内外数据的交互,能够最大化发挥各个数据通路的带宽,结合DDR存储器和SRAM存储器的优点共同实现对大点数FFT运算数据的存储,存储带宽利用率高、有效发挥DSP芯片的流水线计算效率。
[0052]一级蝶形运算表达式可以表示为:
[0053]
【权利要求】
1.一种基于DSP芯片的FFT加速器,其特征在于,包括: 模式配置模块(I),用于从DSP内核接收数据地址、运算规模N = 2k及运算次数M的配置数据,输出至FFT运算控制模块⑵及数据访问控制模块(3); FFT运算控制模块⑵,用于判断运算规模N是否大于阈值N1,若为否,控制FFT计算模块⑷进行N点一维FFT运算;若为是,控制FFT计算模块⑷进行N1^N2的二维FFT运算,其中N = N1*N2, N1为FFT计算模块(4)能够直接支持的最大FFT运算规模且N1大于或等于N2,输出控制信号至FFT计算模块(4); 数据访问控制模块(3),用于FFT计算模块(4)执行运算时,根据数据地址控制以DMA方式从存储器中读取出运算数据至FFT计算模块(4),并将FFT计算模块(4)输出的运算结果存储回存储器中; FFT计算模块(4),用于根据FFT运算控制模块(2)输出的控制信号并行执行FFT运算;进行一维FFT运算时,并行执行N点的一维FFT运算;进行二维FFT运算时,并行执行N2次N1点的列方向一维FFT计算,对计算结果进行旋转因子补偿,再并行执行N1次N2点的行方向一维FFT计算,完成N点的FFT运算。
2.根据权利要求1所述的基于DSP芯片的FFT加速器,其特征在于:还包括分别与数据访问控制模块(3)、FFT计算模块(4)的输出端连接的数据格式转换模块(5),所述数据格式转换模块(5)用于当数据访问控制模块(3)读取的运算数据为定点格式时将运算数据转换为浮点格式,输出至FFT计算模块(4),并将FFT计算模块(4)输出的运算结果转换为对应的定点格式后输出回数据访问控制模块(3)。
3.根据权利I或2所述的基于DSP芯片的FFT加速器,其特征在于:所述FFT计算模块(4)包括两个并行的FFT执行子模块以及分别与两个FFT执行子模块连接的CORDIC补偿旋转因子计算子模块(43);两个所述FFT执行子模块并行执行两组数据的FFT计算,其中每一组数据为规模小于或等于N1点的数据,所述CORDIC补偿旋转因子计算子模块(43)根据数据地址及运算规模N采用CORDIC算法计算补偿旋转因子,分别输出至两个所述FFT执行子模块。
4.根据权利3所述的基于DSP芯片的FFT加速器,其特征在于:每个所述FFT执行子模块包括FFT计算控制单元(411)、数据存储单元(412)、并行蝶形运算单元(413)以及旋转因子存储单元(414);所述FFT计算控制单元(411)接收FFT运算控制模块(2)输出的控制信号,控制并行蝶形运算单元(413)及CORDIC补偿旋转因子计算子模块(43)的启动;所述数据存储单元(412)存储并行蝶形运算单元(413)待输入的运算数据以及待输出的运算结果;所述并行蝶形运算单元(413)并行执行一组数据的蝶形运算或补偿旋转因子计算,由所述旋转因子存储单元(414)存储蝶形运算时的旋转因子。
5.根据权利4所述的基于DSP芯片的FFT加速器,其特征在于:所述并行蝶形运算单元(413)包括两个并行的蝶形运算部件。
6.根据权利5所述的基于DSP芯片的FFT加速器,其特征在于:每个所述蝶形运算部件包括多个IEEE-754标准的单精度浮点乘法器、多个单精度浮点加/减法器。
7.根据权利6所述的基于DSP芯片的FFT加速器,其特征在于:所述单精度浮点乘法器为4个,所述单精度浮点加/减法器为6个。
8.根据权利4~7中任意一项所述的基于DSP芯片的FFT加速器,其特征在于:所述数据存储单元(412)包括两组数据存储器,对待输入的运算数据以及待输出的运算结果进行乒乓结构的缓存;每组所述数据存储器包括4个双端口的RAM。
9.根据权利5~7中任意一项所述的基于DSP芯片的FFT加速器,其特征在于:所述旋转因子存储单元(414)采用两个查找表,每个所述查找表具有N1个选项;每个所述查找表对应连接一个所述蝶形运算部件。
【文档编号】G06F17/14GK103955447SQ201410174795
【公开日】2014年7月30日 申请日期:2014年4月28日 优先权日:2014年4月28日
【发明者】刘宗林, 雷元武, 郭阳, 陈书明, 鲁建壮, 彭元喜, 吴虎成, 罗恒, 孙永节, 陈跃跃, 陈小文, 孙书为 申请人:中国人民解放军国防科学技术大学

最新回复(0)