实现fft/ifft变换的电路及方法

文档序号:6442349阅读:397来源:国知局
专利名称:实现fft/ifft变换的电路及方法
技术领域
本发明涉及信号处理技术领域,特别涉及一种实现FFT/IFFT变换(Fast FourierTransformat ion/Inver se Fast Fourier Transformation,快速傅里叶变换 / 快速傅里叶逆变换)的电路及方法。
背景技术
近年来,随着集成电路技术和医疗电子行业的发展,诸如人体传感器网络(bodysensor network)中的节点处理(Processing On Node)等新技术也随之产生,便携式、穿戴式等医疗电子设备受到大家的欢迎。这些设备主要是基于电池供电的,所以能量消耗是设备好坏的一个重要衡量指标。现有的FFT/IFFT —般都是用PC (Personal Computer)机来实现的,但是软件实现的方式存在占用指令周期长,吞吐量小,可扩展性差等缺点。因此又出现了通过硬件来实现的方法,目前硬件实现FFT/IFFT主要有三种方式:数字信号处理单元(Digital SignalProcessor,DSP),现场可编程门阵列(Field Programmable Gate Array,FPGA)和专用集成电路(Application Specific Integrated Circuit, ASIC)。其中,1、DSP具有乘法及加法单元,实现FFT/IFFT灵活、方便,但是计算能力有限,不适合超长点数的计算;2、FPGA实现方法计算速度难以提高,功耗大,不适合量产;3、专用集成电路(ASIC)速度快,功耗低。综合考虑各方面的因素,所以目前实现能量感知的FFT/IFFT主要采用ASIC的实现方法。但利用ASIC实现方法的能量感知(Energy-aware) FFT/IFFT仍存在可扩展性差等缺点。

发明内容
因此,本发明提供一种实现FFT/IFFT变换的电路及方法,其具备能量感知能力、可扩展性好且功耗低。具体地,本发明实施例提供的一种实现FFT/IFFT变换的电路,包括第一数据存储单元、第二数据存储单元、控制信号产生单元、蝶形单元组、旋转因子存储单元以及地址产生单元。其中,第一数据存储单元与第二数据存储单元分别电连接至第一多路选择器以接收数据序列输入,并分别电连接至第二多路选择器以输出结果数据。蝶形单元组通过第三多路选择器分别电连接至第一数据存储单及第二数据存储单元以读取蝶形运算所需数据,通过第四多路选择器分别电连接至第一数据存储单及第二数据存储单元以回写蝶形运算结果数据,并且通过第五多路选择器电连接至控制信号产生单元以接受控制信号产生单元之控制。旋转因子存储单元电连接至蝶形单元组并存储旋转因子。地址产生单元电连接至第一数据存储单元、第二数据存储单元、旋转因子存储单元以及控制信号产生单元,以接受控制信号产生单元的控制以提供第一数据存储单元、第二数据存储单元及旋转因子存储单元工作所需的地址。第一至第五多路选择器以及旋转因子存储单元分别接受控制信号产生单元的控制。在本发明实施例中,上述第一数据存储单元与第二数据存储单元例如皆为双端口静态随机存储器。而且,每个双端口静态随机存储器中可划分出实部模块与虚部模块,以分别存储数据序列中各个复数形式的数据点的实部和虚部。旋转因子存储单元可选用各种类型的单端口只读存储器。另外,在本发明实施例中,对于数据序列长度为N点FFT/IFFT变换,旋转因子存储单元中所需存储的旋转因子的个数例如为(I)个。蝶形单元组例如包括多个蝶形单元,每
个蝶形单元执行每级蝶形运算中的单个蝶形运算过程中的乘法运算次数例如配置为三次。本发明实施例提供的一种实现FFT/IFFT变换的方法,适于应用在包括第一数据存储单元、第二数据存储单元以及与第一、第二数据存储单元电连接的多个蝶形单元的实现FFT/IFFT变换的电路。具体地,实现FFT/IFFT变换的方法包括步骤a d:步骤a:接收并存储长度为NI点的第一数据序列至该第一数据存储单元;步骤b:选用该多个蝶形单元其中之一对存储于该第一数据存储单元中的该第一
Λ/
数据序列进行lt)gy级蝶形运算,每级蝶形运算均包括(Y)个蝶形运算,并且将每级蝶形运
算中的每个蝶形运算的结果数据回写至该第一数据存储单元;步骤c:接收 并存储长度为N2点的第二数据序列至该第二数据存储单元;以及步骤d:选用该多个蝶形单元其中之一对存储于该第二数据存储单元中的该第二
MO
数据序列进行级蝶形运算,每级蝶形运算均包括(Y)个蝶形运算,并且将每级蝶形运算中的每个蝶形运算的结果数据回写至该第二数据存储单元。在本发明实施例中,步骤c例如执行于步骤b的执行过程中,且步骤d执行于步骤b之后;在步骤b及步骤d中,每级蝶形运算中的每个蝶形运算例如仅执行三次乘法运算。另外,在本发明实施例中,当实现FFT/IFFT变换的电路更包括旋转因子存储单元时,上述实现FFT/IFFT变换的方法例如还包括步骤:根据旋转因子的周期性和对称性在该
旋转因子存储单元中存储(I)个旋转因子供步骤b及步骤d使用,其中M为实现FFT/IFFT
4
变换的电路可执行蝶形运算的最大数据序列长度,且M > NI, M ^ N2。简而言之,本发明实施例提出的实现FFT/IFFT变换的电路及方法,在电路设计中采用了流水线的设计结构,提高了处理速度。并且采用多个数据存储单元,例如两个双端口 SRAM(Static Random Access Memory,静态随机存储器)可交替进行信号处理,即其中某个SRAM进行FFT/IFFT运算时,可以初始化另外一个SRAM,在执行完FFT/IFFT运算时,可以立即执行另外一个SRAM的数据,提高了连续数据的处理速度。采用单端口只读存储器ROM (Read-only Memory,只读存储器)作为旋转因子存储单元的举例,将可变(vary bit)的SRAM和ROM集成到一个设计中,可共用电源因而降低了功耗,提高了访问速度;将ROM的存储空间降低到原来的1/4,减少了面积的开销;每个蝶形运算单元中减少乘法器的个数,降低了功耗,减少了面积;因此,较好地实现了低功耗可扩展FFT/IFFT电路的设计。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。


图1是本发明实施例的一种实现FFT/IFFT变换的电路的结构框图。
具体实施例方式为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的实现FFT/IFFT变换的电路及方法其具体实施方式
、方法、步骤、结构、特征及功效,详细说明如后。本发明下述实施例提供的实现FFT/IFFT变换的电路,具备能量感知能力、低功耗及可扩展好等优点,其采用最简的基2(Radix_2)算法,结构简单,实现简单;在设计中采用了流水线的设计,提高了处理速度。并且采用多个数据存储单元例如两个双端口 SRAM可交替进行信号处理,即其中一个SRAM进行FFT/IFFT运算时,可以同步初始化另外一个SRAM,在执行完FFT/IFFT运算后,可以立即执行另外一个SRAM中存储的数据,提高了连续数据的处理速度。采用单端口只读存储器ROM作为旋转因子存储单元,将可变的SRAM和ROM集成到一个设计中,可共用电源因而降低了功耗,提高了访问速度;将ROM的存储空间降低到原来的1/4,减少了面积的开销。每个蝶形运算单元中减少乘法器的个数,降低了功耗,减少了面积;因此,较好地实现了低功耗可扩展FFT/IFFT电路的设计。本发明实施例的实现FFT/IFFT变换的电路适用于对不同场景的生物医学信号进行处理,也可以适用于其它对能量要求比较高的电池供电的场合,例如一个无线传感网络,有成千上万个电池供电的微传感器分布在不同的地方,这些微传感器要发送数据到用户终端,则需要进行FFI/IFFT处理。请参阅图1,本发明实施例的一种实现FFT/IFFT变换的电路的结构框图。本发明实施例实现FFT/IFFT变换的电路10主要包括五大部分:地址产生单元11、第一及第二数据存储单元SRAMl及SRAM2例如双端口静态随机存储器、旋转因子存储单元Tw-ROM例如单端口只读存储器、蝶形单元组13、以及控制信号产生单元15。在此,将双端口静态随机存储器和单端口只读存储器集成到一个系统中,两者可共用电源,因而大大降低了功耗。本实施例中,第一及第二数据存储单元SRAMl及SRAM2分别电连接至第一多路选择器MUXl以接收数据序列输入并存储,并分别电连接至第二多路选择器MUX2以输出FFT/IFFT运算结果数据。此外,蝶形单元组13通过第三多路选择器MUX3分别电连接至第一及第二数据存储单元SRAMl及SRAM2以读取蝶形运算所需数据,通过第四多路选择器MUX4分别电连接至第一及第二数据存储单元SRAMl及SRAM2以回写蝶形运算结果数据(进行蝶形运算所需的数据读自哪个数据存储单元,则蝶形运算结果数据回存至原数据存储单元内),并且通过第五多路选择器MUX5电连接至控制信号产生单元15以接受控制信号产生单元15的控制。旋转因子存储单元Tw-ROM电连接蝶形单元组13并存储旋转因子。地址产生单元11电连接至第一及第二数据存储单元SRAMl及SRAM2、旋转因子存储单元Tw-ROM以及控制信号产生单元15,以接受控制信号产生单元15的控制,并向第一及第二数据存储单元SRAMl及SRAM2以及旋转因子存储单元Tw-ROM提供地址。各个多路选择器MUXl MUX5以及旋转因子存储单元Tw-ROM分别电连接至控制信号产生单元15以接受控制信号产生单元15的控制。具体地,第一数据存储单元SRAMl可划分为实部模块SRAM1_R和虚部模块SRAM1_I两个部分;类似地,第二数据存储单元SRAM2也可划分为实部模块SRAM2_R和虚部模块SRAM2_L.本实施例 中,第一及第二数据存储单元SRAMl及SRAM2通过第一多路选择器MUXl接收数据序列输入,而所输入的数据序列具体存储至第一及第二数据存储单元SRAMl与SRAM2中的哪一个则由控制信号产生单元15提供至第一多路选择器MUXl的控制信号决定。此外,输入的数据序列中的各个数据点通常为复数形式,且同一数据序列中的各个复数形式的数据点的实部存储在实部模块SRAM1_R(或SRAM2_R)中,而虚部则存储在SRAM1_I (或SRAM2_I)中。而数据序列的长度,也即数据点的个数定义为N;在此,N的取值例如为8、16、32、...,相应地实现FFT/IFFT变换的电路10则执行8点、16点、32点FFT/IFFT运算。第一及第二数据存储单元SRAMl与SRAM2的工作过程大致如下:在第一次初始化的过程中,根据控制信号产生单元15产生的控制信号选择是SRAMl还是SRAM2存储数据,如果开始初始化的是SRAM1,在接下来FFT/IFFT运算的过程中,因为采用的是流水线结构,蝶形单元组13中某个选定的蝶形单元131运算的结果可以一直存储到原来的地址中,与SRAM2没有关系;这与并行结构相比,大大减少了面积的开销。在SRAMl进行FFT/IFFT运算的过程中,可以初始化SRAM2,当SRAMl所进行的FFT/IFFT运算结束的时候可以直接转向SRAM2进行另一个数据序列的FFT/IFFT运算;在SRAMl及SRAM2皆已经初始化后的FFT/IFFT运算过程中,SRAMl和SRAM2可以交替进行工作,这样节省了初始化的时间。此外,在输出SRAMl (或SRAM2)的FFT/IFFT运算结果的过程中,就可以开始SRAM2 (或SRAM1)存储的数据序列的计算;就这种方法而言,在进行连续大点数的FFT/IFFT运算过程中,可以显著地提高工作效率。旋转因子存储单元Tw-ROM用来存储数据序列进行FFT/IFFT运算所需的旋转因
子。设进行N点FFT/IFFT运算,则需要N个旋转因子,但是根据旋转因子% 的周期
性和对称性(如关系式(I)),可以将旋转因子存储单元Tw-ROM中所需存储的旋转因子的个数降低到Ν/4个。因此采用这个设计思想,降低了旋转因子存储单元Tw-ROM的面积和功耗。在计算的过程中,根据控制信号产生单元15提供至旋转因子存储单元Tw-ROM的控制信号和计算的精度选择合适的位宽(bit width)。
权利要求
1.一种实现FFT/IFFT变换的电路,其特征在于,包括: 第一数据存储单元和第二数据存储单元,分别与第一多路选择器电连接,以接收数据序列输入;同时该第一数据存储单元和该第二数据存储单元还分别与第二多路选择器电连接,以输出结果数据; 控制信号产生单元; 蝶形单元组,通过第三多路选择器分别电连接至该第一数据存储单元与该第二数据存储单元以读取蝶形运算所需数据,通过第四多路选择器分别电连接至该第一数据存储单元与该第二数据存储单元以回写蝶形运算结果数据,并通过第五多路选择器电连接至该控制信号产生单元以接受该控制信号产生单元之控制; 旋转因子存储单元,电连接至蝶形单元组并存储旋转因子;以及地址产生单元,电连接至该第一数据存储单元、该第二数据存储单元、该旋转因子存储单元以及该控制信号产生单元,以接受该控制信号产生单元的控制向该第一数据存储单元、该第二数据存储单元及该旋转因子存储单元提供地址; 其中该第一至该第五多路选择器以及该旋转因子存储单元分别接受该控制信号产生单元的控制。
2.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该第一数据存储单元与该第二数据存储单元皆为双端口静态随机存储器。
3.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该第一数据存储单元与该第二数据存储单元中的每一个包括实部模块与虚部模块以分别存储数据序列中各个复数形式的数据点的实部和虚部。
4.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该旋转因子储存单元为单端口只读存储器。
5.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,对于数据序列长度为N点FFT/IFFT变换,该旋转因子存储单元所需存储的旋转因子的个数为(|)。
6.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该蝶形单元组包括多个蝶形单元,每个蝶形单元执行每级蝶形运算中的单个蝶形运算过程中的乘法运算次数配置为三次。
7.一种实现FFT/IFFT变换的方法,其特征在于,该实现FFT/IFFT变换的方法适于应用在包括第一数据存储单元、第二数据存储单元以及与该第一、第二数据存储单元电连接的多个蝶形单元的实现FFT/IFFT变换的电路,该实现FFT/IFFT变换的方法包括步骤: 步骤a:接收并存储长度为NI点的第一数据序列至该第一数据存储单元; 步骤b:选用该多个蝶形单元其中之一对存储于该第一数据存储单元中的该第一数据序列进行级蝶形运算,每级蝶形运算均包括(f)个蝶形运算,并且将每级蝶形运算中的每个蝶形运算的结果数据回写至该第一数据存储单元; 步骤c:接收并存储长度为N2点的第二数据序列至该第二数据存储单元;以及 步骤d:选用该多个蝶形单元其中之一对存储于该第二数据存储单元中的该第二数据Μ 序列进行1(5gy级蝶形运算,每级蝶形运算均包括(]_)个蝶形运算,并且将每级蝶形运算中的每个蝶形运算的结果数据回写至该第二数据存储单元。
8.如权利要求7所述的实现FFT/IFFT变换的方法,其特征在于,步骤c执行于步骤b的执行过程中,且步骤d执行于步骤b之后。
9.如权利要求7所述的实现FFT/IFFT变换的方法,其特征在于,在步骤b及步骤d中,每级蝶形运算中的每个蝶形运算执行三次乘法运算。
10.如权利要求7所述的实现FFT/IFFT变换的方法,其特征在于,该实现FFT/IFFT变换的电路更包括旋转因子存储单元,该实现FFT/IFFT变换的方法还包括步骤: 根据旋转因子的周期性和对称性在该旋转因子存储单元中存储(f)个旋转因子供步骤b及步骤d使用,其中M为该实现FFT/IFFT变换的电路可执行蝶形运算的最大数据序列长度,且M彡NLM ^ N2。
全文摘要
本发明涉及实现FFT/IFFT变换的电路及方法。该电路包括第一及第二数据存储单元、控制信号产生单元、蝶形单元组、旋转因子存储单元及地址产生单元。第一及第二数据存储单元通过第一多路选择器接收数据序列输入并通过第二多路选择器以输出结果数据,第一、第二多路选择器接受控制信号产生单元之控制。蝶形单元组电连接至第一、第二数据存储单元,旋转因子存储单元及控制信号产生单元以在控制信号产生单元的控制下进行蝶形运算。地址产生单元接受控制信号产生单元的控制向第一、第二数据存储单元及旋转因子存储单元提供地址。本发明提供的实现FFT/IFFT变换的电路及方法,具有能量感知能力、功耗低、数据点数及字长可扩展性好等优点。
文档编号G06F17/14GK103176950SQ20111043077
公开日2013年6月26日 申请日期2011年12月20日 优先权日2011年12月20日
发明者张凤娟, 聂泽东, 王磊 申请人:中国科学院深圳先进技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1