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

文档序号:9326852阅读:来源:国知局
035] 图10为本发明实施例的第一级1024点DFT计算之后写回的数据与地址关系示意 图;
[0036] 图11为本发明实施例的1024点DFT运算单元结构示意图;
[0037] 图12为本发明实施例的输出数据与RAM地址关系;
[0038] 图13是本发明实施例的基于3072点快速傅里叶变换的处理器的结构组成示意图 -* *
[0039] 图14为本发明实施例的基于3072点快速傅里叶变换的处理器的结构组成示意图 _-〇
【具体实施方式】
[0040] 为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发 明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。
[0041] 图1为本发明实施例的基于3072点快速傅里叶变换的数据处理方法的流程示意 图,该方法应用于基于3072点快速傅里叶变换的处理器,如图1所示,所述基于3072点快 速傅里叶变换的数据处理方法包括以下步骤:
[0042] 步骤101 :将3072点数据按照预定的映射关系,存储至数据存储模块中。
[0043] 本发明实施例中,按照Good-Thomas算法对3072点数据进行排序,依据排序结果 将3072点数据依次存储至数据存储模块中;所述数据存储模块由32个96 X 36 (深度行 数X位宽bit)的RAM组成。
[0044] 本发明实施例中,基于3072点快速傅里叶变换的处理器具有3点DFT运算单元和 1024点DFT运算单元。
[0045] 本发明实施例采用Good-Thomas算法将3072点FFT分解为3点DFT运算以及1024 点DFT运算。
[0046] 本发明实施例中,基于3072点快速傅里叶变换的处理器还具有数据存取控制模 块、数据存储模块;其中,数据存取控制模块的主要功能是对输入数据,运算中间结果以及 需要输出的数据进行统筹管理,是数据输入、运算处理以及最终输出的核心管理模块。数据 存储模块的主要功能是对输入数据以及中间运算结果进行存储,由32个96X36(深度行 数X位宽bit)的RAM组成。
[0047] 本发明实施例中,根据并行度的要求由数据存取控制模块统一对输入数据的存储 位序进行映射,具体地,按照Good-Thomas算法对数据排列,将3072点数据分散存储到由32 个96 X 36 (深度行数X位宽bit)的RAM组成的数据存储模块中。
[0048] 步骤102 :从所述存储模块中并行读取16个数据,进行3点DFT运算,运算完成后 将结果按原位存储至数据存储模块中。
[0049] 本发明实施例中,从所述存储模块中并行读取16个数据,采用Goertzel算法进行 3点DFT运算。
[0050] 本发明实施例采用Goertzel算法进行3点DFT运算的公式如下:
[0052] 其中,x(n)为输入数据,X(k)为运算结果,W为蝶形旋转因子。
[0053] 对上述公式进行变换,得到如下公式:
[0055] 可见,处理3点DFT运算的3点DFT运算单元包括3次复数加法以及2次复数乘 法。
[0056] 步骤103 :从所述数据存储模块中并行读取32个数据,进行1024点DFT运算,运 算完成后将结果按原位存储至数据存储模块中,直至完成3072点数据的快速傅里叶变换。
[0057] 本发明实施例中,从所述数据存储模块中并行读取32个数据,进行10级FFT运 算。具体采用Cooley-Tukey算法进行1024点DFT运算,运算完成后将结果按原位存储至 数据存储模块中,直至完成3072点数据的快速傅里叶变换。
[0058] 本发明实施例的1024点DFT运算单元包含有16个蝶形运算单元以及旋转因子生 成单元,采用Cooley-Tukey算法对读取到的数据进行1024点DFT运算。
[0059] 本发明实施例中,每个蝶形运算单元中包含一次复数乘法运算,而每个复数乘法 又可以拆分为5次实数加法和3次实数乘法。
[0060] 本发明实施例中,为了保证不产生数据地址冲突影响并行性,数据存取控制模块 需要对数据进行完第一级FFT运算之后写回数据存储模块时对写回地址进行调整,这种调 整只需要进行一次。如图10所示,图中第一行标有"顺序"对应列表示第一级运算完写回数 据仍然存储在原来位置的位置上;标有"逆序"对应的列表示第一级运算完写回的数据存储 顺序需要颠倒,如RAMO地址1的数据经过第一级FFT运算完之后将写到RAM31地址1中。
[0061] 本发明实施例中,在进行完3轮1024点DFT运算之后,数据存取控制模块再次按 照Good-Thomas算法,从数据存储模块中依次读取数据输出,完成整个3072点快速傅里叶 变换。
[0062] 本发明实施例的技术方案中,3072点数据首先依次输入到数据存取控制模块,数 据存取控制模块根据Good-Thomas算法将3072点数据按一定位序关系分散存储到数据存 储模块中,待3072点数据全部存储完成之后再由数据存取控制模块发出读使能从数据存 储模块取出数据送入到3点DFT运算单元,运算结果再由数据存取控制模块写回到数据存 储模块,完成全部的3点DFT运算之后,数据又全部重新写回到数据存储模块,这时数据存 取控制模块再次发出读使能从数据存储模块读取数据送入到1024点DFT运算单元中进行 运算,运算结果再由数据存取控制模块写回到数据存储模块,待1024点DFT运算完成之后, 再由数据存取控制模块按照由Good-Thomas算法决定的顺序将存储在数据存储模块中的 数据依次输出,从而完成一次完整的3072点快速傅里叶变换运算。本发明实施例的技术方 案克服了现有技术中存在的快速傅里叶变换过程中为了对输入输出以及运算中间结果进 行缓存以及重新排序而需要较多的存储容量的问题和缺陷,通过选用多重算法,并结合各 种算法的不同特性,从整体上进行统筹考虑,即减少了运算量,又对于目前混合算法中常常 出现需要大量缓存来存储运算中间结果的情况进行优化,做到了资源、性能的平衡。并且, 硬件实现简单,数据缓存消耗小、乘法器单元少,运算并行度高,运算精度灵活。
[0063] 下面结合附图对本发明实施例的基于3072点快速傅里叶变换的数据处理方法进 一步详细地说明。
[0064] 本发明实施例采用的Good-Thomas算法,其流程如图3所示。将3072点快速傅里 叶变换分解成3点DFT运算和1024点DFT运算。
[0065] 首先对输入数据进行重新排列,之后每3点数据进行DFT运算,再将运算结果按图 2所示的映射关系映射到1024点DFT运算单元进行运算。选用Good-Thomas做为顶层算法 结构比Cooley-Tukey做为顶层算法结构可以省去2046次复数乘法。
[0066] 首先将输入的数据X (η)分为3组,根据Good-Thomas算法,参见公式(1):
[0067] n = (N2I^N1Ii2) modN(0 < Ii1^i N「1 ;0< n2< N 2-1) (I)
[0068] 上式中N1= 3, N2= 1024, η为输入数据标号,mod为取余符号,N为DFT变换区间 长度。
[0069] 因此,输入的数据需要按照表1的顺序分成3组:
[0071] 表1
[0072] 这三组数据中nl等于0,第一行输入数据将存储在数据存储模块32个RAM的第 0~31号地址中;nl等于1,第二行输入数据将存储在数据存储模块32个RAM的第32~ 63号地址中;nl等于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。每个地址中的数字序号表不输入数据的 顺序号,第一个输入的数据序号为〇,例如图中第一块中第3行第2列1536表不的是输入的 第1537个数据存储在RAMl的第0号地址中。
[0073] 将输入数据按照图4所示的映射关系存储到数据存储单元的32个RAM之后,开始 进行3点DFT运算,共进行1024次,由于本发明3点DFT运算单元中采用了 16个并行的3 点DFT运算
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1