多粒度并行FFT计算装置制造方法及图纸

技术编号:7287553 阅读:273 留言:0更新日期:2012-04-22 03:54
本发明专利技术公开了一种多粒度并行FFT计算装置,包括三个存储器、蝶形计算装置、状态控制单元、数据反序网络和第一选择器,三个存储器均为多粒度并行存储器,用于存储蝶形组数据以及与蝶形组数据对应的旋转因子。蝶形计算装置根据从第一选择器输出的蝶形组数据和从一个存储器输出的与该蝶形组数据对应的旋转因子完成一个蝶形组的计算,并将计算结果写回其它两个存储器。本发明专利技术利用特定的读写粒度,可从多粒度并行存储器中并行读取蝶形组数据和对应的旋转因子,读取过程中不会产生存储器冲突,也不需要额外的步骤再对读写数据进行排序。

【技术实现步骤摘要】

本专利技术涉及集成电路设计领域中的快速傅立叶变换(FFT)数据的并行存储、并行读写及并行计算。
技术介绍
信号处理系统经常需要将信号内容在时域和频域进行转换,快速傅立叶变换算法 (FFT)可进行时域和频域间的信号转换。相对于其它转换算法来说,快速傅立叶变换算法具有结构统一、计算量少的优点,因此广泛应用于信号处理系统中。FFT算法输入N个数据,输出N个数据;一般称时域至频域的变换为正向变换,而频域至时域的变换变逆向变换。FFT算法有多种实现方式,但都由库利-图基算法演变而来。对于N个数据点,基2的库利-图基算法包括Iog2N个计算级。每个计算级输入N个数,输出N个数;前一计算级的输出经过一定的排序后作为后一计算级的输入。第一级输入为原始数据,最后一级输出为FFT计算结果,如图1所示。图1中假定数据点长度为8,整个计算过程需要计算三个计算级103 :S0、S1、S2。每个计算级103由N/2个蝶形(102)组成,蝶形计算的计算结构如图2所示。每个蝶形计算输入两个数据点A和B,以及一个旋转因子W,得到两个计算结果A+BW和A-BW。 在每个蝶形计算中,输入数据A和B的序号具有确定的对应关系,该对应关系由蝶形所在的计算级以及输入数据A或B的序号来确定;同时,旋转因子W的值由当前蝶形所在的计算级 103、输入数据A或B的序号以及FFT的数据长度确定。例如在图1中,SO计算级中的第1 个数据必定与第0个数据构成一蝶形,并且第0个数据为蝶形输入的A,第1个数据为蝶形输入的B,而W的值为1。而Sl计算级中的第1个数据必定与第3个数据构成一蝶形,并且第1个数据为蝶形输入的A,第3个数据为蝶形输入的B,而W的值为1。蝶形计算的计算级之间存在数据相关,后一计算级必须等待前一计算级完成以后才能开始计算。因此,每级计算完成后都需要将结果存放在存储器中,下一级计算从存储器中读取上一级的计算结果作为本计算级计算的输入。计算级内的蝶形相互独立,蝶形的计算顺序不影响计算结果,但每个蝶形所读取的数据A、B和旋转因子W必须满足内在的对应关系。在并行FFT计算中,运算部件从多粒度并行存储器中读取多个蝶形所需数据及对应的旋转因子,并行计算多个、多级蝶形,然后将计算结果并行写入存储器,以便进行一下级计算,如图3所示。图3中,假定数据长度为64,并行粒度为4,即多粒度并行存储器300 —次可读写 4个数据。此时,两相邻计算级中存在数据相关的4个蝶形303构成一个蝶形组302,两相邻计算级中的蝶形组构成一计算节301。在蝶形组302中,每个蝶形的输入A、B、W仍必须满足其内在的对应关系,因此,并行FFT算法中必须考虑计算数据和旋转因子在存储器中的分布,以及每个蝶形组302的读写地址和读写方式,以保证蝶形计算装置每次都能并行读取所需数据和旋转因子。4大部分并行FFT算法相关的专利都着重讨论如何将长序列的FFT数据分解成多个短序列的FFT,利用多个处理器并行计算各个短序列的FFT,最后对多个短序列的FFT进行交织计算,得到最终的长序列FFT结果。如美国专利 US 6,792,441 B2 (Parallel Multiprocessing For Fast Fourier Transform With Pipeline Architecture)。这一类算法都没考虑多个处理单元同时访问存储器时的冲突问题,以及多个处理器如何交织多个短序列FFT结果。而实际应用中,存储器访问冲突以及处理器之间的同步和通信效率将严重影响FFT的计算效率。美国专利US 6,304,887 Bl (FFT-Based Parallel System For Array Processing With Low Latency)讨论了 FFT算法中数据并行读写的问题,该专利将FFT数据存放在多个存储器中,利用多个数据缓冲区、多个选择器对数据进行排序,以保证每次读写的数据分布在不同的存储器中,实现并行读写。但该专利需要专用的存储器、数据缓冲区和选择器,读写地址计算复杂,难以实现不同数据长度、不同读写粒度的并行FFT算法。
技术实现思路
(一)要解决的技术问题本专利技术要解决的技术问题实现对不同数据算度、不同读写粒度的FFT计算的支持,并提高FFT计算装置的计算效率,。(二)技术方案本专利技术提出的一种多粒度并行FFT计算装置包括第一存储器、第二存储器、第三存储器、蝶形计算装置、状态控制单元、数据反序网络和第一选择器,所述第一存储器、第二存储器用于存储蝶形组数据,所述第三存储器用于存储与蝶形组数据对应的旋转因子;所述蝶形计算装置的输入端分别与第三存储器和第一选择器的输出端相连接,根据从第一选择器输出的蝶形组数据和从第三存储器输出的与该蝶形组数据对应的旋转因子,完成一个蝶形组的计算,并将计算结果写回第一存储器或第二存储器;所述状态控制单元用于根据当前计算节和计算级,生成第一、第二和第三存储器的读写地址和读写控制信号;所述数据反序网络用于蝶形组组内数据的反序排列;第一选择器的两个输入端分别接收原始输入数据和经数据反序网络位反序排列后的数据;如果当前处于计算节0,第一选择器选择位反序排列后的数据,否则选择原始数据。所述第一、第二和第三存储器为多粒度并行存储器,均连接于所述状态控制单元并接受状态控制单元的读写控制。所述状态控制单元用于根据当前计算节和计算级,生成第一、第二和第三存储器的读写地址和读写控制信号。所述状态控制单元包括第一计算器、第二计算器和第三计算器,分别用于计算当前计算节号S、当前逻辑Bank号i和当前存储行号j。所述状态控制单元还包括第一地址产生单元、第二地址产生单元和第三地址产生单元,分别用于产生旋转因子读取地址、数据写地址和数据读地址。所述第一地址产生单元根据第一、第二、第三计算器分别计算得到的当前计算节号S、当前逻辑Bank号i和当前存储行号j产生旋转因子读取地址,并将该地址输出到第三存储器。 所述第二地址产生单元根据第二、第三计算器分别计算得到的当前逻辑Bank号i 和当前存储行号j产生数据写地址,并输出到地址分发器。 所述状态控制单元还包括第二选择器和地址分发器;所述第三地址产生单元根据第二、第三计算器分别计算得到的当前逻辑Bank号i 和当前存储行号j产生数据读地址,并输出到地址反序逻辑和第二选择器;所述第二选择器的输入端分别接收原始读地址和经过位反序后的读地址,并根据当前计算节号s进行选择,以输出到地址分发器。如果当前处理计算节号为0,则该第二选择器选择位反序后的读地址,否则该第二选择器选择原始读地址。所述地址分发器根据当前计算节号s的值确定读地址输出到第一存储器还是第二存储器,以及确定写地址输出到第一存储器还是第二存储器。(三)有益效果本专利技术提出的多粒度并行FFT计算装置可实现自然序列数据输入,自然序列数据输出,并且实现了一次读写、多级计算,最大程度上减少存储器访问次数,以减少芯片功耗; 本专利技术还可根据需要具体指定并行粒度;本专利技术利用特定的读写粒度,可从多粒度并行存储器中并行读取蝶形组数据和对应的旋转因子,读取过程中不会产生存储器冲突,也不需要额外的步骤再对读写数据进行排序;同时,可以在读取的同时实现位反序操作,因此,原始数据可以以自然序存放在存储器中。附图说本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:王东琳谢少林蒿杰林啸汪涛尹磊祖
申请(专利权)人:中国科学院自动化研究所
类型:发明
国别省市:

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

1
相关领域技术