CN105045766A - 基于3072点快速傅里叶变换的数据处理方法及处理器 - Google Patents

基于3072点快速傅里叶变换的数据处理方法及处理器 Download PDF

Info

Publication number
CN105045766A
CN105045766A CN201510369088.9A CN201510369088A CN105045766A CN 105045766 A CN105045766 A CN 105045766A CN 201510369088 A CN201510369088 A CN 201510369088A CN 105045766 A CN105045766 A CN 105045766A
Authority
CN
China
Prior art keywords
data
memory module
point
dft
data memory
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.)
Granted
Application number
CN201510369088.9A
Other languages
English (en)
Other versions
CN105045766B (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.)
Shenzhen ZTE Microelectronics Technology Co Ltd
Original Assignee
Shenzhen ZTE Microelectronics Technology Co Ltd
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 Shenzhen ZTE Microelectronics Technology Co Ltd filed Critical Shenzhen ZTE Microelectronics Technology Co Ltd
Priority to CN201510369088.9A priority Critical patent/CN105045766B/zh
Publication of CN105045766A publication Critical patent/CN105045766A/zh
Priority to US15/561,980 priority patent/US10152455B2/en
Priority to PCT/CN2016/085423 priority patent/WO2017000756A1/zh
Application granted granted Critical
Publication of CN105045766B publication Critical patent/CN105045766B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B3/00Line transmission systems
    • H04B3/54Systems for transmission via power distribution lines
    • H04B3/542Systems for transmission via power distribution lines the information being in digital form

Landscapes

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

Abstract

本发明公开了一种基于3072点快速傅里叶变换的数据处理方法及处理器,包括:将3072点数据按照预定的映射关系,存储至数据存储模块中;从所述存储模块中并行读取16个数据,进行3点DFT运算,运算完成后将结果按原位存储至数据存储模块中;从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,运算完成后将结果按原位存储至数据存储模块中,直至完成3072点数据的快速傅里叶变换。

Description

基于3072点快速傅里叶变换的数据处理方法及处理器
技术领域
本发明涉及电力线载波通信领域,尤其涉及一种基于3072点快速傅里叶变换的数据处理方法及处理器。
背景技术
电力线载波(PLC,PowerLineCommunication)通信是利用高压电力线(在电力线载波领域通常指35kV及以上电压等级)、中压电力线(指10kV电压等级)或低压配电电线(380/220V用户线)作为信息传输媒介进行语音或数据传输的一种特殊通信方式。其最大特点是不需要重新架设网络,只要有电线,就可以进行数据传递。
家庭插电联盟(Homeplug)是电力线载波技术标准化组织主推的一种适用于电力线通信的协议,其物理(PHY)层定义的调制解调器(Modem)中使用了3072点快速傅里叶变换(FFT,FastFourierTransformation)来实现正交频分复用(OFDM,OrthogonalFrequencyDivisionMultiplexing)的调制功能,是其核心技术之一。
目前业内实现FFT的主要方法有基-2、基-4算法,其从软件仿真到硬件实现已经有很多种成熟的方法。在工程上都有很多种对应的处理器和可编程门阵列(FPGA,FieldProgrammableGateArray)IP核。但此算法只能处理2的幂次或者4的幂次点数的傅立叶变换,对于非2的幂次或者4的幂次点数的数据,可以采用内插的方式,将原数据内插成2的幂次或者4的幂次点数的数据之后在进行基-2或者基-4快速傅立叶变换处理。但是这样会带来两个主要问题:一、由于采用了内插,必然会带来误差;二、由于采样速率发生变化,在OFDM系统中还将增加同步的复杂度。对于上述中不满足2的幂次或者4的幂次点数的数据的快速傅立叶变换,如果数据点数是复合数,目前业内普遍采用混合基FFT算法,主要采用蝶形算法(Cooley-Tukey)、维诺格拉德-傅里叶变换算法(WFTA)等算法,但是往往这类算法硬件实现较为复杂,需要开辟更多的存储空间来存储中间运算结果以及进行数据位置转换,增加了随机存取存储器(RAM,RandomAccessMemory)的资源以及并且是芯片中走线拥塞问题更加严重。在提高快速傅里叶处理性能方面,目前采用的手段主要是提高运算的并行性,以及采用局部异步结构即提高局部处理主频。其中提高运算并行性是比较常用的方法,而局部异步对于电路设计以及低功耗都会带来不小的挑战,所以对成本以及功耗很敏感的芯片一般不采用这类方法。而增加算法的并行度又会增加对运算中间结果存储的复杂度,为了避免由于运算过程中由于存取数据造成冲突而造成运算中间出现气泡导致性能损失,提出了一种采用乒乓存储的方式来实现数据的运算和中间结果的存取,虽然该方法降低了中间结果存取的复杂度,但是也带来了RAM使用较多的后果,在大点数的快速傅里叶变换运算时会显著增加芯片的面积和功耗。
发明内容
为解决上述技术问题,本发明实施例提供了一种基于3072点快速傅里叶变换的数据处理方法,所述方法包括:
将3072点数据按照预定的映射关系,存储至数据存储模块中;
从所述存储模块中并行读取16个数据,进行3点离散傅里叶变换(DFT,DiscreteFourierTransform)运算,运算完成后将结果按原位存储至数据存储模块中;
从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,直至完成3072点数据的快速傅里叶变换。
本发明实施例中,所述将3072点数据按照预定的映射关系,存储至数据存储模块中,包括:
按照Good-Thomas算法对3072点数据进行排序,依据排序结果将3072点数据依次存储至数据存储模块中;所述数据存储模块由32个96×36(深度行数×位宽bit)RAM组成。
本发明实施例中,所述从所述存储模块中并行读取16个数据,进行3点DFT运算,包括:
从所述存储模块中并行读取16个数据,采用Goertzel算法进行3点DFT运算。
本发明实施例中,所述从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,包括:
从所述数据存储模块中并行读取32个数据,进行10级FFT运算。
本发明实施例中,所对从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,直至完成3072点数据的快速傅里叶变换,包括:
从所述数据存储模块中并行读取32个数据,采用Cooley-Tukey算法进行1024点DFT运算,直至完成3072点数据的快速傅里叶变换。
本发明实施例提供的基于3072点快速傅里叶变换的处理器包括:
映射单元,用于将3072点数据按照预定的映射关系,存储至数据存储模块中;
3点DFT运算单元,用于从所述存储模块中并行读取16个数据,进行3点DFT运算,运算完成后将结果按原位存储至数据存储模块中;
1024点DFT运算单元,用于从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,直至完成3072点数据的快速傅里叶变换。
本发明实施例中,所述映射单元,还用于按照Good-Thomas算法对3072点数据进行排序,依据排序结果将3072点数据依次存储至数据存储模块中;所述数据存储模块由32个96×36(深度行数×位宽bit)的RAM组成。
本发明实施例中,所述3点DFT运算单元,还用于从所述存储模块中并行读取16个数据,采用Goertzel算法进行3点DFT运算。
本发明实施例中,所述1024点DFT运算单元,还用于从所述数据存储模块中并行读取32个数据,进行10级FFT运算。
本发明实施例中,所述1024点DFT运算单元,还用于从所述数据存储模块中并行读取32个数据,采用Cooley-Tukey算法进行1024点DFT运算,直至完成3072点数据的快速傅里叶变换。
本发明实施例的技术方案中,3072点数据首先依次输入到数据存取控制模块,数据存取控制模块根据Good-Thomas算法将3072点数据按一定位序关系分散存储到数据存储模块中,待3072点数据全部存储完成之后再由数据存取控制模块发出读使能从数据存储模块取出数据送入到3点DFT运算单元,运算结果再由数据存取控制模块写回到数据存储模块,完成全部的3点DFT运算之后,数据又全部重新写回到数据存储模块,这时数据存取控制模块再次发出读使能从数据存储模块读取数据送入到1024点DFT运算单元中进行运算,运算结果再由数据存取控制模块写回到数据存储模块,待1024点DFT运算完成之后再由数据存取控制模块按照一定的顺序将存储在数据存储模块读取输出完成一次完整的3072点快速傅里叶变换运算。本发明实施例的技术方案克服了现有技术中存在的快速傅里叶变换过程中为了对输入输出以及运算中间结果进行缓存以及重新排序而需要较多的存储容量的问题和缺陷,通过选用多重算法,并结合各种算法的不同特性,从整体上进行统筹考虑,即减少了运算量,又对于目前混合算法中常常出现需要大量缓存来存储运算中间结果的情况进行优化,做到了资源、性能的平衡。并且,硬件实现简单,数据缓存消耗小、乘法器单元少,运算并行度高,运算精度灵活。
附图说明
图1为本发明实施例的基于3072点快速傅里叶变换的数据处理方法的流程示意图;
图2为本发明实施例的基于3072点快速傅里叶变换的处理器结构示意图一;
图3为本发明实施例的Good-Thomas算法示意图;
图4为本发明实施例的输入数据与RAM地址关系示意图;
图5为本发明实施例的Goertzel算法运算单元的示意图;
图6为本发明实施例的3点DFT运算单元的示意图;
图7为本发明实施例的蝶形运算示意图;
图8为本发明实施例的基-21024点FFT算法流图;
图9为本发明实施例的1024点DFT运算数据与地址关示意图;
图10为本发明实施例的第一级1024点DFT计算之后写回的数据与地址关系示意图;
图11为本发明实施例的1024点DFT运算单元结构示意图;
图12为本发明实施例的输出数据与RAM地址关系;
图13是本发明实施例的基于3072点快速傅里叶变换的处理器的结构组成示意图二;
图14为本发明实施例的基于3072点快速傅里叶变换的处理器的结构组成示意图三。
具体实施方式
为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。
图1为本发明实施例的基于3072点快速傅里叶变换的数据处理方法的流程示意图,该方法应用于基于3072点快速傅里叶变换的处理器,如图1所示,所述基于3072点快速傅里叶变换的数据处理方法包括以下步骤:
步骤101:将3072点数据按照预定的映射关系,存储至数据存储模块中。
本发明实施例中,按照Good-Thomas算法对3072点数据进行排序,依据排序结果将3072点数据依次存储至数据存储模块中;所述数据存储模块由32个96×36(深度行数×位宽bit)的RAM组成。
本发明实施例中,基于3072点快速傅里叶变换的处理器具有3点DFT运算单元和1024点DFT运算单元。
本发明实施例采用Good-Thomas算法将3072点FFT分解为3点DFT运算以及1024点DFT运算。
本发明实施例中,基于3072点快速傅里叶变换的处理器还具有数据存取控制模块、数据存储模块;其中,数据存取控制模块的主要功能是对输入数据,运算中间结果以及需要输出的数据进行统筹管理,是数据输入、运算处理以及最终输出的核心管理模块。数据存储模块的主要功能是对输入数据以及中间运算结果进行存储,由32个96×36(深度行数×位宽bit)的RAM组成。
本发明实施例中,根据并行度的要求由数据存取控制模块统一对输入数据的存储位序进行映射,具体地,按照Good-Thomas算法对数据排列,将3072点数据分散存储到由32个96×36(深度行数×位宽bit)的RAM组成的数据存储模块中。
步骤102:从所述存储模块中并行读取16个数据,进行3点DFT运算,运算完成后将结果按原位存储至数据存储模块中。
本发明实施例中,从所述存储模块中并行读取16个数据,采用Goertzel算法进行3点DFT运算。
本发明实施例采用Goertzel算法进行3点DFT运算的公式如下:
X ( k ) = Σ n = 0 2 x ( n ) W 3 k n
其中,x(n)为输入数据,X(k)为运算结果,W为蝶形旋转因子。
对上述公式进行变换,得到如下公式:
X ( k ) = x ( 0 ) + W 3 k ( x ( 1 ) + x ( 2 ) W 3 k )
可见,处理3点DFT运算的3点DFT运算单元包括3次复数加法以及2次复数乘法。
步骤103:从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,运算完成后将结果按原位存储至数据存储模块中,直至完成3072点数据的快速傅里叶变换。
本发明实施例中,从所述数据存储模块中并行读取32个数据,进行10级FFT运算。具体采用Cooley-Tukey算法进行1024点DFT运算,运算完成后将结果按原位存储至数据存储模块中,直至完成3072点数据的快速傅里叶变换。
本发明实施例的1024点DFT运算单元包含有16个蝶形运算单元以及旋转因子生成单元,采用Cooley-Tukey算法对读取到的数据进行1024点DFT运算。
本发明实施例中,每个蝶形运算单元中包含一次复数乘法运算,而每个复数乘法又可以拆分为5次实数加法和3次实数乘法。
本发明实施例中,为了保证不产生数据地址冲突影响并行性,数据存取控制模块需要对数据进行完第一级FFT运算之后写回数据存储模块时对写回地址进行调整,这种调整只需要进行一次。如图10所示,图中第一行标有“顺序”对应列表示第一级运算完写回数据仍然存储在原来位置的位置上;标有“逆序”对应的列表示第一级运算完写回的数据存储顺序需要颠倒,如RAM0地址1的数据经过第一级FFT运算完之后将写到RAM31地址1中。
本发明实施例中,在进行完3轮1024点DFT运算之后,数据存取控制模块再次按照Good-Thomas算法,从数据存储模块中依次读取数据输出,完成整个3072点快速傅里叶变换。
本发明实施例的技术方案中,3072点数据首先依次输入到数据存取控制模块,数据存取控制模块根据Good-Thomas算法将3072点数据按一定位序关系分散存储到数据存储模块中,待3072点数据全部存储完成之后再由数据存取控制模块发出读使能从数据存储模块取出数据送入到3点DFT运算单元,运算结果再由数据存取控制模块写回到数据存储模块,完成全部的3点DFT运算之后,数据又全部重新写回到数据存储模块,这时数据存取控制模块再次发出读使能从数据存储模块读取数据送入到1024点DFT运算单元中进行运算,运算结果再由数据存取控制模块写回到数据存储模块,待1024点DFT运算完成之后,再由数据存取控制模块按照由Good-Thomas算法决定的顺序将存储在数据存储模块中的数据依次输出,从而完成一次完整的3072点快速傅里叶变换运算。本发明实施例的技术方案克服了现有技术中存在的快速傅里叶变换过程中为了对输入输出以及运算中间结果进行缓存以及重新排序而需要较多的存储容量的问题和缺陷,通过选用多重算法,并结合各种算法的不同特性,从整体上进行统筹考虑,即减少了运算量,又对于目前混合算法中常常出现需要大量缓存来存储运算中间结果的情况进行优化,做到了资源、性能的平衡。并且,硬件实现简单,数据缓存消耗小、乘法器单元少,运算并行度高,运算精度灵活。
下面结合附图对本发明实施例的基于3072点快速傅里叶变换的数据处理方法进一步详细地说明。
本发明实施例采用的Good-Thomas算法,其流程如图3所示。将3072点快速傅里叶变换分解成3点DFT运算和1024点DFT运算。
首先对输入数据进行重新排列,之后每3点数据进行DFT运算,再将运算结果按图2所示的映射关系映射到1024点DFT运算单元进行运算。选用Good-Thomas做为顶层算法结构比Cooley-Tukey做为顶层算法结构可以省去2046次复数乘法。
首先将输入的数据x(n)分为3组,根据Good-Thomas算法,参见公式(1):
n=(N2n1+N1n2)modN(0≤n1≤N1-1;0≤n2≤N2-1)(1)
上式中N1=3,N2=1024,n为输入数据标号,mod为取余符号,N为DFT变换区间长度。
因此,输入的数据需要按照表1的顺序分成3组:
表1
这三组数据中n1等于0,第一行输入数据将存储在数据存储模块32个RAM的第0~31号地址中;n1等于1,第二行输入数据将存储在数据存储模块32个RAM的第32~63号地址中;n1等于2,第三行输入数据将存储在数据存储模块32个RAM的第64~95号地址中。为了保证在1024点FFT运算时输入的数据顺序按比特(bit)位逆序反转输入,表1中每行写入到RAM中的地址顺序还应当提前在数据存取控制模块中按照比特(bit)位逆序进行反转,输入数据与RAM地址关系如图4所示,上图中三块分别代表32个RAM的第0~31、32~63以及64~95地址空间。每块第一行数字表示具体的RAM地址,共96个地址;每块最右侧第一列表示RAM的编号,共32块RAM。每个地址中的数字序号表示输入数据的顺序号,第一个输入的数据序号为0,例如图中第一块中第3行第2列1536表示的是输入的第1537个数据存储在RAM1的第0号地址中。
将输入数据按照图4所示的映射关系存储到数据存储单元的32个RAM之后,开始进行3点DFT运算,共进行1024次,由于本发明3点DFT运算单元中采用了16个并行的3点DFT运算单元,所以一轮处理16次3点DFT运算,1024次3点DFT运算共需要16轮。数据存取控制单元从数据存储单元的32个RAM的第0~15号RAM和第16~31号RAM乒乓取出数据送入3点DFT运算单元进行运算,运算完的结果原位写回到相应的RAM地址中去。需要注意的是,根据Goertzel算法数据取出的顺序是地址从高到底依次取出。
本发明中采用Goertzel算法,3点DFT运算的公式如下:
X ( k ) = Σ n = 0 2 x ( n ) W 3 k n - - - ( 2 )
其中,x(n)为输入数据,X(k)为运算结果,W为蝶形旋转因子。
公式(2)可以为变换成公式(4)的形式:
X ( k ) = x ( 0 ) + W 3 k ( x ( 1 ) + x ( 2 ) W 3 k ) - - - ( 3 )
从上式可以看出X(k)的结果可以进行递归运算,如图5所示,Goertzel算法的结果见表2。
表2
其中,y(n)为每次步骤得到的结果,y(n)=x(n)+REG。x(n)和REG别为两项中间结果。REG代表寄存器中的数据。
为了提高数据处理能力,本发明在3点DFT运算单元中采用3个Goertzel运算单元并行运算的结构,处理时间可以提高3倍,其结构如图6所示。以第一轮运算,第0号3点DFT运算单元为例,从数据存储模块RAM0的第2048号、1024号以及0号地址中取出数据输入到3点DFT运算单元中,待运算完成后X(0)、X(1)以及X(2)的结果分别再写回到RAM0的第0、1024以及2048号地址中去达到原位运算的效果。其他轮次的其他3点DFT都依照类似的顺序从通过数据存取控制单元从数据存储单元中取出数据进行运算并原位写回。每个Goertzel运算单元除了需要输入x值之外还需要配合输入蝶形旋转因子W3 0、W3 1以及W3 2。在运算单元中输入12bit数据(1bit符号位、2bit小数位、9bit小数位)经过如图5所示的3次迭代之后输出13bit数据(1bit符号位、3bit小数位、9bit小数位),共需要进行2次复数乘法以及2次复数加法。为了防止数据溢出导致输出数据符号位发生错误,在最后一次迭代输出时需要对输出数据进行溢出保护处理。具体方法是,首先判断截止位是否每一bit都为全“0”或者全“1”,如果是则表示没有出现溢出,数据按照规则输出截取的13bit数据;如果不是全“0”或者全“1”,则表示数据超出13bit表示存在溢出,这时判断截止位的最高位,如果是“0”,则输出13’b0111111111111;如果是“1”,则输出13’b1000000000000.
在进行完所有的3点DFT运算之后就可以按照Good-Thomas算法对表1中每一行进行1024点DFT运算,共进行3轮。本发明采用Cooley-Tukey时间抽取基-2FFT算法,其算法流图如图7所示。1024点DFT运算共需要进行10级运算,每级进行512次蝶形运算,共计5120次蝶形运算;图7虚线框中表示的就是一个蝶形运算单元,其主要完成如图8所示的蝶形运算,蝶形运算器输入端口1的数据加上或者减去输入端口2的数据与旋转因子的乘积。每个蝶形运算中包含一次复数乘法,故整个1024点DFT运算总共需要进行5120次复数乘法;本发明实施例采用16个蝶形并行运算的硬件结构,故每一级1024点DFT运算需要进行32次运算,整个1024点DFT需要进行320次运算。
1024点DFT运算单元用来完成1024点DFT的运算,为了提高数据处理能力,增加运算的并行度,DFT运算单元包含16个蝶形运算单元,以及一个旋转因子产生单元用来产生运算时需要的旋转因子(如图11所示),其中蝶形运算单元主要完成如图8所示的蝶形运算,其中输入的X1(k)与X2(k)对应蝶形运算单元的a与b端口(参照图11中的蝶形运算单元),tw端口(参照图11中的蝶形运算单元)输入的是每次蝶形运算所需要的旋转因子,其由旋转因子产生单元生成。为了提高数据处理性能,蝶形运算单元采用全流水线结构,每4个时钟(clk)可以完成一次蝶形运算。完成一级运算需要32个时钟(clk)。由于1024点DFT运算需要进行10级,为了在保证性能的前提下尽可能的节省硬件存储资源,所以需要对每一级运算的结果进行截位处理。每一级截位以及定点情况如表3所示。
级数 符号 整数 小数 总位宽
第1级 1 3 9 13
第2级 1 4 9 14
第3级 1 4 9 14
第4级 1 5 9 15
第5级 1 5 9 15
第6级 1 6 9 16
第7级 1 6 9 16
第8级 1 7 9 17
第9级 1 7 9 17
第10级 1 8 9 18
表3
与Goertzel运算单元一样,蝶形运算单元也需要对运算结果进行溢出保护,其方法也与Goertzel运算单元类似,判断截止位是否每一bit都为全“0”或者全“1”,再根据判断结果对输出数据进行相应的调整。
本发明实施例对3072点数据分3轮进行1024点快速傅里叶变换运算,下面以第一轮1024点DFT运算为例介绍数据存取控制模块对运算中间结果的存取操作。第一轮需要进行1024点DFT运算的数据存储在数据存储单元中RAM0~31的地址0~31中,一共1024个数据,为描述方便,数据与地址关系如图9所示,这里每个地址存储的数据都是刚经历过3点DFT运算之后写回到对应地址的结果。在进行1024点DFT运算时每个时钟周期通过数据存取控制单元从数据存储单元的32个RAM中分别读取一个数据送入到1024点DFT运算单元中进行运算。由之前分析可知,1024点DFT运算共需要10级才能运算完成,而每一级又由于需要进32次运算,每次运算由16个蝶形运算单元并行完成,也就是每个时钟周期从RAM中读取32个数据进行运算,只要不发生地址冲突,则整个运算过程就可以流水线进行,为了保证整个运算过程中不发生读写地址冲突,在每一次1024点快速傅里叶运算的第一级运算完成之后数据写回时需要对数据存储地址进行调整,如图10所示,图中第一行标有“顺序”对应列表示第1级运算完写回数据仍然存储在原来位置的位置上;标有“逆序”对应的列表示第1级运算完写回的数据存储顺序需要颠倒,如RAM0地址1的数据经过第1级FFT运算完之后将写到RAM31地址1中。这种写回数据地址的调整仅在每次1024DFT运算的第1级完成之后进行,之后的运算则严格按照原位运算的原则从RAM中读写数据。做这次调整的目的是因为写回的数据还是按照之前输入数据与RAM地址对应关系存储,在运算进行到第6级时会发生地址冲突,影响运算的并行性。而这次调整仅在写回时进行,不会打断算法的流水处理。
1024点DFT运算需要进行10级,每一级运算都需要从数据存储单元的RAM中按图7所示排列顺序将数据出入到1024点DFT模块中进行运算。除了在进行第一级运算需要调整位序之外,之后的每一级运算数据都可以进行原位运算,这样的好处是使得整个运算的数据存储相对简单,也节省了大量的数据缓存空间,使得这个3072点快速傅里叶变换在整个运算过程中只使用3072个存储空间成为可能,使用RAM的资源达到最少。
在所有3072个数据在进行完3次1024点DFT运算之后需要根据Good-Thomas算法:
k = ( N 2 < N 2 - 1 > N 1 k 1 + N 1 < N 1 - 1 > N 2 k 2 ) mod N ( 0 &le; k 1 &le; N 1 - 1 ; 0 &le; k 2 &le; N 2 - 1 ) - - - ( 4 )
对输出数据序列再次进行索引变换,其中, 表示小于或者等于n中与n互为质数的个数,故所以输出数据的映射关系如表4所示:
表4
当k1等于0对应存储在数据存储单元的32个RAM的第0~31号地址中的数据;k1等于1对应存储在数据存储单元的32个RAM的第32~63号地址中的数据;k1等于2对应存储在数据存储单元的32个RAM的第64~95号地址中的数据。由于在进行1024点DFT运算时对数据存储的地址进行了一次调整,所以最终数据输出的顺序也响应的进行了调整,最终RAM中数据输出地址关系如图12所示,与图类似图中三块分别代表32个RAM的第0~31、32~63以及64~95地址空间。每块第一行数字表示具体的RAM地址,共96个地址;每块最右侧第一列表示RAM的编号,共32块RAM。每个地址中的数字序号表示输出数据的顺序号,第一个输出的数据序号为0,例如图中第一块中第3行第2列2049表示的是输出的第2050个数据存储在RAM1的第0号地址中。数据存取控制模块按照图所示的地址数据映射关系按顺序从数据存储单元中读取数据输出,最终完成3072点快速傅里叶变换。
基于上述具体实施方式,本发明实施例提供的基于3072点快速傅里叶变换的处理器具体为如图13所示的结构,包括:
数据存储模块,由32个96×36(深度行数×位宽bit)RAM组成。
数据存取控制模块,负责读写数据。
3点DFT运算单元,由16多组3个并行运算的Goertzel运算单元组成。
1024点DFT运算单元,由16个并行运算的蝶形运算单元以及旋转因子产生单元组成。
图14为本发明实施例的本发明实施例的基于3072点快速傅里叶变换的处理器的结构组成示意图三,如图14所示,所述处理器包括:
映射单元11,用于将3072点数据按照预定的映射关系,存储至数据存储模块中;
3点DFT运算单元12,用于从所述存储模块中并行读取16个数据,进行3点DFT运算,运算完成后将结果按原位存储至数据存储模块中;
1024点DFT运算单元13,用于从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,直至完成3072点数据的快速傅里叶变换。
本发明实施例中,所述映射单元11,还用于按照Good-Thomas算法对3072点数据进行排序,依据排序结果将3072点数据依次存储至数据存储模块中;所述数据存储模块由32个96×36(深度行数×位宽bit)的RAM组成。
本发明实施例中,所述3点DFT运算单元12,还用于从所述存储模块中并行读取16个数据,采用Goertzel算法进行3点DFT运算。
本发明实施例中,所述1024点DFT运算单元13,还用于从所述数据存储模块中并行读取32个数据,进行10级FFT运算。
本发明实施例中,所述1024点DFT运算单元13,还用于从所述数据存储模块中并行读取32个数据,采用Cooley-Tukey算法进行1024点DFT运算,直至完成3072点数据的快速傅里叶变换。
本领域技术人员应当理解,图14所示的基于3072点快速傅里叶变换的处理器中的各单元的实现功能可参照前述基于3072点快速傅里叶变换的数据处理方法的相关描述而理解。图14所示的基于3072点快速傅里叶变换的处理器中的各单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现。
具体实现时,上述映射单元11、3点DFT运算单元12、1024点DFT运算单元13,可采用中央处理器(CPU,CentralProcessingUnit)、数字信号处理器(DSP,DigitalSingnalProcessor)或可编程逻辑阵列(FPGA,Field-ProgrammableGateArray)实现。
本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

Claims (10)

1.一种基于3072点快速傅里叶变换的数据处理方法,其特征在于,所述方法包括:
将3072点数据按照预定的映射关系,存储至数据存储模块中;
从所述存储模块中并行读取16个数据,进行3点离散傅里叶变换DFT运算,运算完成后将结果按原位存储至数据存储模块中;
从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,运算完成后将结果按原位存储至数据存储模块中,直至完成3072点数据的快速傅里叶变换。
2.根据权利要求1所述的基于3072点快速傅里叶变换的数据处理方法,其特征在于,所述将3072点数据按照预定的映射关系,存储至数据存储模块中,包括:
按照Good-Thomas算法对3072点数据进行排序,依据排序结果将3072点数据依次存储至数据存储模块中;所述数据存储模块由32个96×36(深度行数×位宽bit)的随机存取存储器RAM组成。
3.根据权利要求1所述的基于3072点快速傅里叶变换的数据处理方法,其特征在于,所述从所述存储模块中并行读取16个数据,进行3点DFT运算,包括:
从所述存储模块中并行读取16个数据,采用Goertzel算法进行3点DFT运算。
4.根据权利要求1所述的基于3072点快速傅里叶变换的数据处理方法,其特征在于,所述从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,包括:
从所述数据存储模块中并行读取32个数据,进行10级快速傅里叶变换FFT运算。
5.根据权利要求1至4任一项所述的基于3072点快速傅里叶变换的数据处理方法,其特征在于,所对从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,运算完成后将结果按原位存储至数据存储模块中,直至完成3072点数据的快速傅里叶变换,包括:
从所述数据存储模块中并行读取32个数据,采用Cooley-Tukey算法进行1024点DFT运算,运算完成后将结果按原位存储至数据存储模块中,直至完成3072点数据的快速傅里叶变换。
6.一种基于3072点快速傅里叶变换的处理器,其特征在于,所述处理器包括:
映射单元,用于将3072点数据按照预定的映射关系,存储至数据存储模块中;
3点DFT运算单元,用于从所述存储模块中并行读取16个数据,进行3点DFT运算,运算完成后将结果按原位存储至数据存储模块中;
1024点DFT运算单元,用于从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,运算完成后将结果按原位存储至数据存储模块中,直至完成3072点数据的快速傅里叶变换。
7.根据权利要求6所述的基于3072点快速傅里叶变换的处理器,其特征在于,所述映射单元,还用于按照Good-Thomas算法对3072点数据进行排序,依据排序结果将3072点数据依次存储至数据存储模块中;所述数据存储模块由32个96×36(深度行数×位宽bit)的RAM组成。
8.根据权利要求6所述的基于3072点快速傅里叶变换的处理器,其特征在于,所述3点DFT运算单元,还用于从所述存储模块中并行读取16个数据,采用Goertzel算法进行3点DFT运算。
9.根据权利要求6所述的基于3072点快速傅里叶变换的处理器,其特征在于,所述1024点DFT运算单元,还用于从所述数据存储模块中并行读取32个数据,进行10级FFT运算。
10.根据权利要求6至9任一项所述的基于3072点快速傅里叶变换的处理器,其特征在于,所述1024点DFT运算单元,还用于从所述数据存储模块中并行读取32个数据,采用Cooley-Tukey算法进行1024点DFT运算,运算完成后将结果按原位存储至数据存储模块中,直至完成3072点数据的快速傅里叶变换。
CN201510369088.9A 2015-06-29 2015-06-29 基于3072点快速傅里叶变换的数据处理方法及处理器 Active CN105045766B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201510369088.9A CN105045766B (zh) 2015-06-29 2015-06-29 基于3072点快速傅里叶变换的数据处理方法及处理器
US15/561,980 US10152455B2 (en) 2015-06-29 2016-06-12 Data processing method and processor based on 3072-point fast Fourier transformation, and storage medium
PCT/CN2016/085423 WO2017000756A1 (zh) 2015-06-29 2016-06-12 基于3072点快速傅里叶变换的数据处理方法及处理器、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510369088.9A CN105045766B (zh) 2015-06-29 2015-06-29 基于3072点快速傅里叶变换的数据处理方法及处理器

Publications (2)

Publication Number Publication Date
CN105045766A true CN105045766A (zh) 2015-11-11
CN105045766B CN105045766B (zh) 2019-07-19

Family

ID=54452324

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510369088.9A Active CN105045766B (zh) 2015-06-29 2015-06-29 基于3072点快速傅里叶变换的数据处理方法及处理器

Country Status (3)

Country Link
US (1) US10152455B2 (zh)
CN (1) CN105045766B (zh)
WO (1) WO2017000756A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893328A (zh) * 2016-04-19 2016-08-24 南京亚派科技股份有限公司 一种基于Cooley-Tukey的FFT算法
WO2017000756A1 (zh) * 2015-06-29 2017-01-05 深圳市中兴微电子技术有限公司 基于3072点快速傅里叶变换的数据处理方法及处理器、存储介质
CN107358165A (zh) * 2017-06-15 2017-11-17 深圳市泰和安科技有限公司 基于fft滤波的方法、终端设备及计算机可读存储介质
CN109144793A (zh) * 2018-09-07 2019-01-04 合肥工业大学 一种基于数据流驱动计算的故障校正装置和方法
CN109543137A (zh) * 2018-11-20 2019-03-29 中国人民解放军国防科技大学 一种云中并行快速傅里叶变换数据处理方法及装置
CN112800386A (zh) * 2021-01-26 2021-05-14 Oppo广东移动通信有限公司 傅里叶变换处理方法和处理器、终端、芯片及存储介质
CN112905110A (zh) * 2021-01-29 2021-06-04 展讯半导体(成都)有限公司 数据存储方法及装置、存储介质、用户设备、网络侧设备

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992741B (zh) * 2019-03-15 2022-11-18 西安电子科技大学 一种混合基2-4串行fft实现方法及装置
CN113111300B (zh) * 2020-01-13 2022-06-03 上海大学 具有优化资源消耗的定点fft实现系统
CN112163184B (zh) * 2020-09-02 2024-06-25 深聪半导体(江苏)有限公司 一种实现fft的装置及方法
CN113157637B (zh) * 2021-04-27 2023-03-07 电子科技大学 一种基于fpga的大容量可重构的fft运算ip核

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102831099A (zh) * 2012-07-27 2012-12-19 西安空间无线电技术研究所 一种3072点fft运算的实现方法
CN103020015A (zh) * 2012-11-30 2013-04-03 桂林卡尔曼通信技术有限公司 点数为非2次幂的离散傅里叶变换快速计算的实现方法
CN103218348A (zh) * 2013-03-29 2013-07-24 北京创毅视讯科技有限公司 快速傅里叶变换处理方法和系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293330A (en) * 1991-11-08 1994-03-08 Communications Satellite Corporation Pipeline processor for mixed-size FFTs
KR100510551B1 (ko) * 2003-10-10 2005-08-26 삼성전자주식회사 Ofdm 신호 심볼의 공통 위상 에러(cpe)를 제거하는ofdm 디모듈레이터 및 그 cpe 제거 방법
CN102104773B (zh) 2009-12-18 2013-03-20 上海华虹集成电路有限责任公司 用于实现可变数据个数的fft/ifft处理器的基4模块
CN102238348B (zh) 2010-04-20 2014-02-05 上海华虹集成电路有限责任公司 一种可变数据个数的fft/ifft处理器的基4模块
CN105045766B (zh) 2015-06-29 2019-07-19 深圳市中兴微电子技术有限公司 基于3072点快速傅里叶变换的数据处理方法及处理器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102831099A (zh) * 2012-07-27 2012-12-19 西安空间无线电技术研究所 一种3072点fft运算的实现方法
CN103020015A (zh) * 2012-11-30 2013-04-03 桂林卡尔曼通信技术有限公司 点数为非2次幂的离散傅里叶变换快速计算的实现方法
CN103218348A (zh) * 2013-03-29 2013-07-24 北京创毅视讯科技有限公司 快速傅里叶变换处理方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YANBIN YAO等: "a polyphase-filter-based FFT for DFT calculation in LTE uplink", 《2013 IEEE INTERNATIONAL CONFERENCE ON COMMUNICATIONS(ICC)》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017000756A1 (zh) * 2015-06-29 2017-01-05 深圳市中兴微电子技术有限公司 基于3072点快速傅里叶变换的数据处理方法及处理器、存储介质
US10152455B2 (en) 2015-06-29 2018-12-11 Sanechips Technology Co., Ltd. Data processing method and processor based on 3072-point fast Fourier transformation, and storage medium
CN105893328A (zh) * 2016-04-19 2016-08-24 南京亚派科技股份有限公司 一种基于Cooley-Tukey的FFT算法
CN107358165A (zh) * 2017-06-15 2017-11-17 深圳市泰和安科技有限公司 基于fft滤波的方法、终端设备及计算机可读存储介质
CN109144793A (zh) * 2018-09-07 2019-01-04 合肥工业大学 一种基于数据流驱动计算的故障校正装置和方法
CN109543137A (zh) * 2018-11-20 2019-03-29 中国人民解放军国防科技大学 一种云中并行快速傅里叶变换数据处理方法及装置
CN109543137B (zh) * 2018-11-20 2022-11-11 中国人民解放军国防科技大学 一种云中并行快速傅里叶变换数据处理方法及装置
CN112800386A (zh) * 2021-01-26 2021-05-14 Oppo广东移动通信有限公司 傅里叶变换处理方法和处理器、终端、芯片及存储介质
CN112905110A (zh) * 2021-01-29 2021-06-04 展讯半导体(成都)有限公司 数据存储方法及装置、存储介质、用户设备、网络侧设备

Also Published As

Publication number Publication date
CN105045766B (zh) 2019-07-19
WO2017000756A1 (zh) 2017-01-05
US20180165250A1 (en) 2018-06-14
US10152455B2 (en) 2018-12-11

Similar Documents

Publication Publication Date Title
CN105045766A (zh) 基于3072点快速傅里叶变换的数据处理方法及处理器
Chen et al. Hardware efficient mixed radix-25/16/9 FFT for LTE systems
CN103970720B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN101571849B (zh) 一种快速傅立叶变换处理器及其方法
CN101154215B (zh) 基23频域取样快速傅立叶变换的硬件结构
CN101729463A (zh) 一种实现快速傅立叶变换、反变换的硬件装置及方法
CN101751375A (zh) 一种dft/idft的快速计算方法和装置
CN101136891A (zh) 流水线结构的3780点快速傅里叶变换处理器
CN109993273A (zh) 卷积神经网络的卷积实现方法及相关产品
CN102209962A (zh) 计算离散傅里叶变换(dft)系数矩阵的方法和设备
CN109416755A (zh) 人工智能并行处理方法、装置、可读存储介质、及终端
CN107783895A (zh) 基于正交表的多条件参数测试用例设计方法
CN103020015A (zh) 点数为非2次幂的离散傅里叶变换快速计算的实现方法
Jallouli et al. MIMO-OFDM LTE system based on a parallel IFFT/FFT on NoC-based FPGA
CN104657334B (zh) 一种快速傅里叶变化的基2-4-8混合基蝶算器及其应用
CN106844900B (zh) 电磁暂态仿真系统的搭设方法
KR20140142927A (ko) 혼합 기수 파이프라인 fft 프로세서 및 이를 이용한 fft 프로세싱 방법
EP2538345A1 (en) Fast fourier transform circuit
CN103095820B (zh) 一种确定访问页面的终端数量的方法及装置
CN102087640B (zh) 傅里叶变换的实现方法和装置
CN102255838A (zh) 一种用于sc-fdma的快速傅立叶处理方法
CN102339273B (zh) 一种基于上采样技术的fft/ifft近似计算方法和装置
CN103810144A (zh) 一种质数长度fft/ifft方法和装置
CN105608054A (zh) 基于lte系统的fft/ifft变换装置及方法
US6963892B2 (en) Real-time method and apparatus for performing a large size fast fourier transform

Legal Events

Date Code Title Description
C06 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