《实现FFT/IFFT变换的电路及方法.pdf》由会员分享,可在线阅读,更多相关《实现FFT/IFFT变换的电路及方法.pdf(11页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103176949 A(43)申请公布日 2013.06.26CN103176949A*CN103176949A*(21)申请号 201110430750.9(22)申请日 2011.12.20G06F 17/14(2006.01)(71)申请人中国科学院深圳先进技术研究院地址 518055 广东省深圳市南山区西丽大学城学苑大道1068号(72)发明人张凤娟 聂泽东 王磊(74)专利代理机构深圳市科进知识产权代理事务所(普通合伙) 44316代理人宋鹰武(54) 发明名称实现FFT/IFFT变换的电路及方法(57) 摘要一种实现FFT/IFFT变换的电路,包括控制信号。
2、产生单元、蝶形结构单元、数据存储单元、旋转因子存储单元和地址生成单元。该控制信号产生单元连接该蝶形结构单元、该数据存储单元、该旋转因子存储单元和该地址生成单元;该数据存储单元用于接收数据序列的输入,并输出结果数据;该旋转因子存储单元用于存储旋转因子;该地址生成单元连接该数据存储单元和该旋转因子存储单元,为该数据存储单元和旋转因子存储单元提供地址;该蝶形结构单元连接该数据存储单元和该旋转因子存储单元以根据该旋转因子存储单元所提供的旋转因子对该数据序列进行蝶形运算以产生结果数据。本发明的电路具有功耗低、面积小、可扩展性好以及实时性好等优点。(51)Int.Cl.权利要求书1页 说明书6页 附图3页。
3、(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书1页 说明书6页 附图3页(10)申请公布号 CN 103176949 ACN 103176949 A1/1页21.一种实现FFT/IFFT变换的电路,其特征在于,该实现FFT/IFFT变化的电路包括:控制信号产生单元、蝶形结构单元、数据存储单元、旋转因子存储单元和地址生成单元,其中,该控制信号产生单元连接该蝶形结构单元、该数据存储单元、该旋转因子存储单元和该地址生成单元;该数据存储单元用于接收数据序列的输入,并输出结果数据;该旋转因子存储单元用于存储旋转因子;该地址生成单元连接该数据存储单元和该旋转因子存储单元,以为该数据存储。
4、单元和旋转因子存储单元提供地址;而该蝶形结构单元连接该数据存储单元和该旋转因子存储单元以根据该旋转因子存储单元所提供的旋转因子对该数据序列进行蝶形运算以产生结果数据。2.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该数据存储单元包括两个双端口的静态随机存取存储器。3.如权利要求2所述的实现FFT/IFFT变换的电路,其特征在于,一个双端口的静态随机存取存储器作为该数据存储单元的实部模块,以存储该数据序列中各个复数形式的数据点的实部;而另一个双端口的静态随机存取存储器作为该数据存储单元的虚部模块,以存储该数据序列中各个复数形式的数据点的虚部。4.如权利要求1所述的实现FFT/I。
5、FFT变换的电路,其特征在于,该旋转因子存储单元为单端口的只读存储器。5.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该数据存储单元接收的该数据序列的长度为N,而该旋转因子存储单元根据周期性和对称性而存储N/4个旋转因子,该蝶形结构单元执行m级的蝶形运算,且每级蝶形运算均执行N/2个蝶形运算,其中N2m。6.如权利要求5所述的实现FFT/IFFT变换的电路,其特征在于,每个旋转因子的存储地址由m,B,N和M所决定,其中,B用来计数执行蝶形运算的次数,而M为实现FFT/IFFT变换的电路最大能计算的点数。7.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该蝶形结。
6、构单元执行每级蝶形运算中的单个蝶形运算过程中的乘法运算次数为三次。8.一种实现FFT/IFFT变换的方法,其特征在于,该实现FFT/IFFT变换的方法包括:步骤a:接收并存储长度为N的数据序列;步骤b:利用蝶形结构单元对该数据序列进行级蝶形运算,且每级蝶形运算均包括个蝶形运算。9.如权利要求8所述的实现FFT/IFFT变换的方法,其特征在于:步骤b是分别从N/4个旋转因子中选择出正确的旋转因子而对该长度为N的数据序列进行级蝶形运算。10.如权利要求8所述的实现FFT/IFFT变换的方法,其特征在于:每级蝶形运算中的每个蝶形运算执行三次乘法运算。权 利 要 求 书CN 103176949 A1/。
7、6页3实现 FFT/IFFT 变换的电路及方法技术领域0001 本发明涉及一种信号处理技术,特别是涉及一种用于对生物医学信号实现FFT/IFFT变换(快速傅立叶变换/快速傅立叶逆变换)的电路及方法。背景技术0002 近年来,随着微电子技术和医疗电子行业的发展,以及全球老龄化社会的到来,新技术新思想(例如,processing on node技术)的产生,便携式、植入式、穿戴式等一系列便携式医疗电子产品受到广泛的关注。这些产品的主要特征是小型化、智能化、高集成度和电池供电,所以其面积和功耗对产品性能影响很大。而且这些产品需要具有能在节点处理的能力,即,把采集的信号在节点实时处理之后,再发送出去的。
8、能力。0003 许多重要的生理信号(例如:EEG、ECG、心率)在频域反应出信号的特征,所以,频谱分析是很重要的一个环节。对于进行频谱分析,就要对生理信号进行FFT/IFFT变换处理。0004 现有的实现FFT/IFFT变换的方式主要有两种,一种实现方式是基于软件的实现方式,即将采集到的生理信号发送到PC机上,在PC机上利用软件而进行处理,但是这种基于软件的实现方式存在着占用指令周期长、吞吐量小、可扩展性差等等的缺陷。而另一种实现方式是基于硬件的实现方式,例如采用数字信号处理单元(Digital Signal Processor,DSP)、现场可编程门阵列(Field Programmable。
9、 Gate Array,FPGA)和专用集成电路(Application Specific Integrated Circuit,ASIC)。其中,数字信号处理单元DSP具有乘法加法单元,其实现FFT/IFFT变换灵活、方便,但是其计算能力有限,不适合超长点数的计算。现场可编程门阵列FPGA的计算速度难以提高、功耗大,且其不适合量产。而专用集成电路ASIC的速度快、功耗低。也就是说,现有的基于硬件的实现方式中,有些是集中于计算速度的提高,有些是集中于精度的提高,有些是集中于功耗的降低,有些是集中于面积的减少,其都没有同时考虑这些因素。因此,目前亟需提出一种新的实现FFT/IFFT变换的电路及方。
10、法,以克服上述缺陷。发明内容0005 本发明的目的在于,克服现有技术的缺陷,提供一种实现FFT/IFFT变换的电路及方法,其功耗低、面积小、可扩展性好以及实时性好,利于进行生理信号的处理。0006 本发明的目的及解决其技术问题是采用以下技术方案来实现的。0007 本发明提供一种实现FFT/IFFT变换的电路,其包括控制信号产生单元、蝶形结构单元、数据存储单元、旋转因子存储单元和地址生成单元。其中,该控制信号产生单元连接该蝶形结构单元、该数据存储单元、该旋转因子存储单元和该地址生成单元;该数据存储单元用于接收数据序列的输入,并输出结果数据;该旋转因子存储单元用于存储旋转因子;该地址生成单元连接该。
11、数据存储单元和该旋转因子存储单元,以为该数据存储单元和旋转因子存储单元提供地址;而该蝶形结构单元连接该数据存储单元和该旋转因子存储单元以说 明 书CN 103176949 A2/6页4根据该旋转因子存储单元所提供的旋转因子对该数据序列进行蝶形运算以产生结果数据。0008 优选地,该数据存储单元包括两个双端口的静态随机存取存储器。0009 优选地,一个双端口的静态随机存取存储器作为该数据存储单元的实部模块,以存储该数据序列中各个复数形式的数据点的实部;而另一个双端口的静态随机存取存储器作为该数据存储单元的虚部模块,以存储该数据序列中各个复数形式的数据点的虚部。0010 优选地,该旋转因子存储单元。
12、为单端口的只读存储器。0011 优选地,该数据存储单元接收的该数据序列的长度为N,而该旋转因子存储单元根据周期性和对称性而存储N/4个旋转因子,该蝶形结构单元执行m级的蝶形运算,且每级蝶形运算均执行N/2个蝶形运算,其中N2m。0012 优选地,每个旋转因子的存储地址由m,B,N和M所决定,其中,B用来计数执行蝶形运算的次数,而M为实现FFT/IFFT变换的电路最大能计算的点数。0013 优选地,该蝶形结构单元执行每级蝶形运算中的单个蝶形运算过程中的乘法运算次数为三次。0014 本发明还提供一种实现FFT/IFFT变换的方法,其包括步骤a:接收并存储长度为N的数据序列;以及步骤b:利用蝶形结构。
13、单元对该数据序列进行级蝶形运算,且每级蝶形运算均包括个蝶形运算。0015 优选地,步骤b是分别从N/4个旋转因子中选择出正确的旋转因子而对该长度为N的数据序列进行级蝶形运算。0016 优选地,每级蝶形运算中的每个蝶形运算执行三次乘法运算。0017 本发明的用于对生物医学信号实现FFT/IFFT变换的电路及方法,采用最简单的Radix_2算法,实现简单。在设计中采用了流水线的设计,提高了处理速度;将数据存储单元SRAM和旋转因子存储单元ROM集成到一个系统中,降低了功耗,提高了访问速度;将旋转因子存储单元ROM的存储空间降低到原来的1/4,减少了面积的开销;而蝶形结构单元中会减少乘法器的个数,降。
14、低了功耗,减少了其面积。由上可知,本发明的实现FFT/IFFT变换的电路具有功耗低、面积小、可扩展性好以及实时性好等优点。0018 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。附图说明0019 图1为本发明一较佳实施例所揭示的实现FFT/IFFT变换的电路的示意图;0020 图2为图1所示实现FFT/IFFT变换的电路进行FFT/IFFT运算过程中控制信号产生单元的状态装换示意图;0021 图3为本发明的实现FFT/IFFT变换的电路。
15、的实验结果示意图。具体实施方式0022 为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的实现FFT/IFFT变换的电路及其方法其具体实施说 明 书CN 103176949 A3/6页5方式、方法、步骤、结构、特征及其功效,详细说明如下。0023 有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的较佳实施例的详细说明中将可清楚呈现。通过具体实施方式的说明,当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。0024 图1为本发明一较佳实施例所。
16、揭示的实现FFT/IFFT变换的电路的示意图。如图1所示,本发明的实现FFT/IFFT变换的电路100主要包括五大部分,即包括控制信号产生单元110、蝶形结构单元120、数据存储单元例如静态随机存取存储器SRAM、旋转因子存储单元例如只读存储器ROM、以及地址生成单元150。其中数据存储单元SARM和旋转因子存储单元ROM,可以是利用软件产生存储模块的数据。本发明将数据存储单元SRAM和旋转因子存储单元ROM集成到一个系统中,从而大大降低了功耗。0025 在本实施例中,控制信号产生单元110分别连接蝶形结构单元120、数据存储单元SRAM、旋转因子存储单元ROM和地址生成单元150,而蝶形结构。
17、单元120与数据存储单元SRAM和旋转因子存储单元ROM分别连接,且地址生成单元150与数据存储单元SRAM和旋转因子存储单元ROM分别连接。0026 具体地,数据存储单元SRAM可分为实部模块SRAM_R和虚部模块SRAM_I两个部分,即其包括两个双端口的静态随机存取存储器,其中一个作为该数据存储单元的实部模块SRAM_R,而另一个作为该数据存储单元的虚部模块SRAM_I。在本实施例中,数据存储单元SRAM可接收数据序列的输入,而输入的数据序列中的各个数据点通常为复数,且同一数据序列中的各个数据点的实部存储在实部模块SRAM_R中,而虚部则存储在SRAM_I中。而数据序列的长度,也即数据点的。
18、个数定义为N;在此,N的取值例如为8、16、32、.,相应地实现FFT/IFFT变换的电路100则执行8点、16点、32点FFT/IFFT运算、.。0027 此外,数据存储单元SRAM可为双端口的存取单元。为了提高实现FFT/IFFT运算的计算精度,数据存储单元SRAM中的实部模块SRAM_R和虚部模块SRAM_I的输入输出位宽可以是20bit,且每块模块的容量可以是20*256。因为ECG等生理信号一般都是通过12bit的逐次逼近型模数转换器SAR_ADC将采集的模拟信号变化为数字信号,所以在开始初始化的过程中需要正确连接信号。而在计算过程中,本发明采用的是流水线结构,蝶形结构单元120可将。
19、其计算的结果暂存到原来的单元中,与并行结构相比,大大减少了面积的开销。0028 旋转因子存储单元ROM可为单端口的ROM,其用来存储旋转因子。当本发明的实现FFT/IFFT变换的电路进行N点FFT/IFFT运算时,则其一般需要对应的N个旋转因子。但是根据旋转因子的周期性和对称性(如公式(1),可以将旋转因子存储单元ROM中所需要存储的旋转因子的个数降低到N/4个。因此采用这个设计思想,本发明可降低旋转因子存储单元ROM的面积和功耗。在计算过程中,可根据控制信号产生单元11提供的控制信号和计算精度至旋转因子存储单元ROM,而选择具有合适位宽的旋转因子存储单元ROM。例如,在本实施例中,旋转因子存。
20、储单元ROM的位宽可以是10bit,所以其存储容量是10*64(256/4)。说 明 书CN 103176949 A4/6页60029 0030 地址生成单元150需要生成下述三个阶段IIII所需的正确地址。其中阶段I:数据存储单元SRAM初始化阶段;阶段II:在FFT/IFFT运算过程中访问数据存储单元SRAM中的实部模块SRAM_R和虚部模块SRAM_I、以及旋转因子存储单元ROM的阶段;和阶段III:计算结果输出阶段。具体地,0031 (1)阶段I:数据存储单元SRAM初始化阶段。在本阶段I中,本发明可采用码位倒置算法。例如假设N16,对于顺序算法,地址A(0000)、A(0001)、A。
21、(0010)、A(0011)、A(0100)、A(0101)、A(0110)、A(0111)、A(1000)、A(1001)、A(1010)、A(1011)、A(1100)、A(1101)、A(1110)、A(1111)是依次地存入数据点x(0000)、x(0001)、x(0010)、x(0011)、x(0100)、x(0101)、x(0110)、x(0111)、x(1000)、x(1001)、x(1010)、x(1011)、x(1100)、x(1101)、x(1110)、x(1111)。0032 而对于码位倒置算法,地址A(0000)、A(0001)、A(0010)、A(0011)、A(01。
22、00)、A(0101)、A(0110)、A(0111)、A(1000)、A(1001)、A(1010)、A(1011)、A(1100)、A(1101)、A(1110)、A(1111)中依次存入的数据点分别为x(0000)、x(1000)、x(0100)、x(1100)、x(0010)、x(1010)、x(0110)、x(1110)、x(0001)、x(1001)、x(0101)、x(1101)、x(0011)、x(1011)、x(0111)、x(1111)。0033 (2)阶段II:在FFT/IFFT运算过程中访问数据存储单元SRAM中的实部模块SRAM_R和虚部模块SRAM_I、以及旋转因子。
23、存储单元ROM的阶段的地址生成算法为:0034 假设数据序列长度N2m,其中,m是蝶形运算的级数,每级蝶形运算均有N/2个蝶形运算。在每级蝶形运算时,用B来计数执行蝶形运算的次数,因此可知:旋转因子的存储地址waddr一定与m,B,N和FFT/IFFT最大能计算的点数M有关系,例如满足关系式(2)。0035 0036 其中,a旋转因子的存储地址位宽。0037 首先解释一下mask(x,y)的意思:将x的低y位掩掉,也即将低y位用0代替。关系式(2)中是将蝶形运算次数B的低位用0代替,然后向左移关系式(2)中:当B小于N/4时用上面一个公式,当大于N/4时用下面一个公式。例如:当M256且N8时。
24、,B的取值为0到4;当进行第二级蝶形运算时,m1,则旋转因子的存储深度是M/4(在此,假设M256,M/464,a6)。当B0或1时,例如B1000001,掩掉低1位后则为000000,再向左移位后得到waddr0000000;当B2或3时,例如B3000011,掩掉低1位后则为000010,再向左移说 明 书CN 103176949 A5/6页75位后为100000,再减去1b1,ab0后得到waddr0000000。而真正的旋转因子的地址是waddr5:0,也就是waddr产生的地址屏蔽掉最高位。0038 此外,在本阶段中,进行FFT/IFFT运算过程中,访问实部模块的地址和虚部模块的地址。
25、的计算公式,例如关系式(3)为:0039 0040 R(x,y)表示将x的低位循环左移y位,例如对于正在运算的N点FFT,需要循环左移的是并非是2B和2B+1,而是2B和2B+1的低位循环左移。例如N8,则计算的是8点FFT,在生成第三级(m2)蝶形运算中的第4次(B3)蝶形运算输入输出数据的存储地址时,B3,则2B00000110,2B+100000111,然后低3位循环左移2位,则R_addr00000011,I_addr00000111。0041 (3)阶段III:将FFT/IFFT运算结果输出可以按照地址空间的顺序,依次输出。0042 蝶形结构单元120具有多个复数乘法器。在FFT/I。
26、FFT运算过程中,蝶形单元执行的蝶形运算原理如下附:0043 0044 其中,X0,Y0,W,X1,Y1全为复数。0045 根据公式:0046 WY0(Wr+jWi)(Y0r+jY0i)0047 (WrY0r-WiY0i)+j(WrY0i+WiY0r)0048 Wi(Y0r-Y0i)+Y0r(Wr-Wi)+jWr(Y0r+Y0i)-Y0r(Wr-Wi)0049 Wi(Y0r-Y0i)+(1-j)Y0r(Wr-Wi)+jWr(Y0r+Y0i)0050 因此,根据上述公式可知,本发明中每级蝶形运算中的每个蝶形运算可以只执行三次乘法运算,因此其可以将蝶形结构单元120中的原来的4个乘法器减少为3个乘。
27、法器。因为乘法器消耗面积和功耗要比加法器大很多,所以采用这个方法实现FFI/IFFT运算,减少了面积,降低了功耗。0051 控制信号产生单元110可完全由状态机(FSM)来实现的(如图2所示)。图2为图1所示实现FFT/IFFT变换的电路进行FFT/IFFT运算过程中,控制信号产生单元110的状态装换示意图。其中,控制信号产生单元110产生的控制信号可保证FFT/IFFT运算能够正常工作,同时计算m和B,产生正确的地址。因为FFT/IFFT运算可以一次计算8点,16点,32点.等等。则在公式中p代表进行蝶形运算的级数,而N代表计算的点数。假设N8,P3,所以实现8点的FFT/IFFT运算需要经。
28、过三级蝶形运算才可以输出计算结果,此时第0级stage0、第1级stage1的蝶形运算没有结果,只有到第2级stage2才有结果。实现16点的FFT/IFFT运算需要经过四级蝶形运算才可以输出计算结果。实现32点的FFT/IFFT运算需要经过五级蝶形运算才可以输出结果。依次类推。.0052 每一级蝶形运算中都有N/2个蝶形运算单元,每一蝶形运算单元也有状态机完说 明 书CN 103176949 A6/6页8成,读数据,计算,输出计算结果的三个状态。在功能实现过程中,为了提高计算速度,当一个蝶形计算的过程中,同时读进下一个蝶形要计算的数据,从而提高了计算速度。0053 图3为本发明的实现FFT/。
29、IFFT变换的电路的实验结果示意图。如图3所示,通过对matlab50HZ的正弦信号的四个周期分别进行8点,16点,32点,64点,128点,256点抽取采样,然后再分别进行对应点数的FFT/IFFT变换。实验结果表明在本发明的实现FFT/IFFT变换的电路在精度,功耗和面积方面均具有优势。实验的结果如图(3)所示,其中(a)中计算8点需要31个周期,在2.5MHZ情况,功耗消耗为0.083w;(b)进行误差计算公式为:0054 0055 0056 其中,上述公式中,Sum_mat_r代表matlab计算结果的实部之和,Sum_mat_i代表matlab计算结果的虚部之和;Sum_fft/if。
30、ft_r代表本实现方案的计算结果的实部之和,Sum_fft/ifft_i代表本实现方案的计算结果的虚部之和。(c)图是利用XILINX软件综合之后的资源消耗。综上可知,本发明的实现FFT/IFFT变换的电路在面积,速度,精度,功耗等方面有所提高,达到了预期的效果。0057 本发明的用于对生物医学信号实现FFT/IFFT变换的电路,采用最简单的Radix_2算法,实现简单。在设计中采用了流水线的设计,提高了处理速度;将数据存储单元SRAM和旋转因子存储单元ROM集成到一个系统中,降低了功耗,提高了访问速度;将旋转因子存储单元ROM的存储空间降低到原来的1/4,减少了面积的开销;而蝶形结构单元中会。
31、减少乘法器的个数,降低了功耗,减少了其面积。由上可知,本发明的实现FFT/IFFT变换的电路具有功耗低、面积小、可扩展性好以及实时性好等优点。0058 因此,本发明所揭示的FFT/IFFT变换的电路可以较好的实现低功耗可扩展功能,并可以使生物医学信号在节点进行实时的处理。此外,本发明所揭示的实现FFT/IFFT变换的电路除了可以处理低频率的生物医学信号,其也可以适用于处理通信领域的低频信号。0059 以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。说 明 书CN 103176949 A1/3页9图1说 明 书 附 图CN 103176949 A2/3页10图2说 明 书 附 图CN 103176949 A10。