CN103176950A - 实现fft/ifft变换的电路及方法 - Google Patents

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

Info

Publication number
CN103176950A
CN103176950A CN201110430773XA CN201110430773A CN103176950A CN 103176950 A CN103176950 A CN 103176950A CN 201110430773X A CN201110430773X A CN 201110430773XA CN 201110430773 A CN201110430773 A CN 201110430773A CN 103176950 A CN103176950 A CN 103176950A
Authority
CN
China
Prior art keywords
data storage
fft
storage cell
butterfly
data
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
CN201110430773XA
Other languages
English (en)
Other versions
CN103176950B (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 Institute of Advanced Technology of CAS
Original Assignee
Shenzhen Institute of Advanced Technology of CAS
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 Institute of Advanced Technology of CAS filed Critical Shenzhen Institute of Advanced Technology of CAS
Priority to CN201110430773.XA priority Critical patent/CN103176950B/zh
Publication of CN103176950A publication Critical patent/CN103176950A/zh
Application granted granted Critical
Publication of CN103176950B publication Critical patent/CN103176950B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明涉及实现FFT/IFFT变换的电路及方法。该电路包括第一及第二数据存储单元、控制信号产生单元、蝶形单元组、旋转因子存储单元及地址产生单元。第一及第二数据存储单元通过第一多路选择器接收数据序列输入并通过第二多路选择器以输出结果数据,第一、第二多路选择器接受控制信号产生单元之控制。蝶形单元组电连接至第一、第二数据存储单元,旋转因子存储单元及控制信号产生单元以在控制信号产生单元的控制下进行蝶形运算。地址产生单元接受控制信号产生单元的控制向第一、第二数据存储单元及旋转因子存储单元提供地址。本发明提供的实现FFT/IFFT变换的电路及方法,具有能量感知能力、功耗低、数据点数及字长可扩展性好等优点。

Description

实现FFT/IFFT变换的电路及方法
技术领域
本发明涉及信号处理技术领域,特别涉及一种实现FFT/IFFT变换(FastFourier Transformation/Inverse Fast Fourier Transformation,快速傅里叶变换/快速傅里叶逆变换)的电路及方法。
背景技术
近年来,随着集成电路技术和医疗电子行业的发展,诸如人体传感器网络(body sensor network)中的节点处理(Processing On Node)等新技术也随之产生,便携式、穿戴式等医疗电子设备受到大家的欢迎。这些设备主要是基于电池供电的,所以能量消耗是设备好坏的一个重要衡量指标。
现有的FFT/IFFT一般都是用PC(Personal Computer)机来实现的,但是软件实现的方式存在占用指令周期长,吞吐量小,可扩展性差等缺点。因此又出现了通过硬件来实现的方法,目前硬件实现FFT/IFFT主要有三种方式:数字信号处理单元(Digital Signal Processor,DSP),现场可编程门阵列(Field Programmable Gate Array,FPGA)和专用集成电路(ApplicationSpecific 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变换,旋转因子存储单元中所需存储的旋转因子的个数例如为
Figure BSA00000640403300031
个。蝶形单元组例如包括多个蝶形单元,每个蝶形单元执行每级蝶形运算中的单个蝶形运算过程中的乘法运算次数例如配置为三次。
本发明实施例提供的一种实现FFT/IFFT变换的方法,适于应用在包括第一数据存储单元、第二数据存储单元以及与第一、第二数据存储单元电连接的多个蝶形单元的实现FFT/IFFT变换的电路。具体地,实现FFT/IFFT变换的方法包括步骤a~d:
步骤a:接收并存储长度为N1点的第一数据序列至该第一数据存储单元;
步骤b:选用该多个蝶形单元其中之一对存储于该第一数据存储单元中的该第一数据序列进行
Figure BSA00000640403300032
级蝶形运算,每级蝶形运算均包括
Figure BSA00000640403300033
个蝶形运算,并且将每级蝶形运算中的每个蝶形运算的结果数据回写至该第一数据存储单元;
步骤c:接收并存储长度为N2点的第二数据序列至该第二数据存储单元;以及
步骤d:选用该多个蝶形单元其中之一对存储于该第二数据存储单元中的该第二数据序列进行
Figure BSA00000640403300034
级蝶形运算,每级蝶形运算均包括
Figure BSA00000640403300035
个蝶形运算,并且将每级蝶形运算中的每个蝶形运算的结果数据回写至该第二数据存储单元。
在本发明实施例中,步骤c例如执行于步骤b的执行过程中,且步骤d执行于步骤b之后;在步骤b及步骤d中,每级蝶形运算中的每个蝶形运算例如仅执行三次乘法运算。
另外,在本发明实施例中,当实现FFT/IFFT变换的电路更包括旋转因子存储单元时,上述实现FFT/IFFT变换的方法例如还包括步骤:根据旋转因子的周期性和对称性在该旋转因子存储单元中存储个旋转因子供步骤b及步骤d使用,其中M为实现FFT/IFFT变换的电路可执行蝶形运算的最大数据序列长度,且M≥N1,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、第一及第二数据存储单元SRAM1及SRAM2例如双端口静态随机存储器、旋转因子存储单元Tw-ROM例如单端口只读存储器、蝶形单元组13、以及控制信号产生单元15。在此,将双端口静态随机存储器和单端口只读存储器集成到一个系统中,两者可共用电源,因而大大降低了功耗。
本实施例中,第一及第二数据存储单元SRAM1及SRAM2分别电连接至第一多路选择器MUX1以接收数据序列输入并存储,并分别电连接至第二多路选择器MUX2以输出FFT/IFFT运算结果数据。此外,蝶形单元组13通过第三多路选择器MUX3分别电连接至第一及第二数据存储单元SRAM1及SRAM2以读取蝶形运算所需数据,通过第四多路选择器MUX4分别电连接至第一及第二数据存储单元SRAM1及SRAM2以回写蝶形运算结果数据(进行蝶形运算所需的数据读自哪个数据存储单元,则蝶形运算结果数据回存至原数据存储单元内),并且通过第五多路选择器MUX5电连接至控制信号产生单元15以接受控制信号产生单元15的控制。旋转因子存储单元Tw-ROM电连接蝶形单元组13并存储旋转因子。地址产生单元11电连接至第一及第二数据存储单元SRAM1及SRAM2、旋转因子存储单元Tw-ROM以及控制信号产生单元15,以接受控制信号产生单元15的控制,并向第一及第二数据存储单元SRAM1及SRAM2以及旋转因子存储单元Tw-ROM提供地址。各个多路选择器MUX1~MUX5以及旋转因子存储单元Tw-ROM分别电连接至控制信号产生单元15以接受控制信号产生单元15的控制。
具体地,第一数据存储单元SRAM1可划分为实部模块SRAM1_R和虚部模块SRAM1_I两个部分;类似地,第二数据存储单元SRAM2也可划分为实部模块SRAM2_R和虚部模块SRAM2_I。本实施例中,第一及第二数据存储单元SRAM1及SRAM2通过第一多路选择器MUX1接收数据序列输入,而所输入的数据序列具体存储至第一及第二数据存储单元SRAM1与SRAM2中的哪一个则由控制信号产生单元15提供至第一多路选择器MUX1的控制信号决定。此外,输入的数据序列中的各个数据点通常为复数形式,且同一数据序列中的各个复数形式的数据点的实部存储在实部模块SRAM1_R(或SRAM2_R)中,而虚部则存储在SRAM1_I(或SRAM2_I)中。而数据序列的长度,也即数据点的个数定义为N;在此,N的取值例如为8、16、32、...,相应地实现FFT/IFFT变换的电路10则执行8点、16点、32点FFT/IFFT运算。
第一及第二数据存储单元SRAM1与SRAM2的工作过程大致如下:在第一次初始化的过程中,根据控制信号产生单元15产生的控制信号选择是SRAM1还是SRAM2存储数据,如果开始初始化的是SRAM1,在接下来FFT/IFFT运算的过程中,因为采用的是流水线结构,蝶形单元组13中某个选定的蝶形单元131运算的结果可以一直存储到原来的地址中,与SRAM2没有关系;这与并行结构相比,大大减少了面积的开销。在SRAM1进行FFT/IFFT运算的过程中,可以初始化SRAM2,当SRAM1所进行的FFT/IFFT运算结束的时候可以直接转向SRAM2进行另一个数据序列的FFT/IFFT运算;在SRAM1及SRAM2皆已经初始化后的FFT/IFFT运算过程中,SRAM1和SRAM2可以交替进行工作,这样节省了初始化的时间。此外,在输出SRAM1(或SRAM2)的FFT/IFFT运算结果的过程中,就可以开始SRAM2(或SRAM1)存储的数据序列的计算;就这种方法而言,在进行连续大点数的FFT/IFFT运算过程中,可以显著地提高工作效率。
旋转因子存储单元Tw-ROM用来存储数据序列进行FFT/IFFT运算所需的旋转因子。设进行N点FFT/IFFT运算,则需要N个旋转因子,但是根据旋转因子
Figure BSA00000640403300081
的周期性和对称性(如关系式(1)),可以将旋转因子存储单元Tw-ROM中所需存储的旋转因子的个数降低到N/4个。因此采用这个设计思想,降低了旋转因子存储单元Tw-ROM的面积和功耗。在计算的过程中,根据控制信号产生单元15提供至旋转因子存储单元Tw-ROM的控制信号和计算的精度选择合适的位宽(bit width)。
W N n = W N n n ∈ ( 0 , N / 4 ) W N N / 4 × W N n - N / 4 = - j × W N n - N / 4 n ∈ ( N / 4 , N / 2 ) W N N / 2 × W N n - N / 2 = - W N n - N / 2 n ∈ ( N / 2 , 3 N / 2 ) W N 3 N / 4 × W N n - 3 N / 4 = j × W N n - 3 N / 4 n ∈ ( 3 N / 4 , N ) . . . ( 1 )
地址产生单元11需要生成下述三个阶段I~III所需的正确地址。其中,阶段I:第一及第二数据存储单元SRAM1及SRAM2初始化;阶段II:FFT/IFFT运算过程中访问实部模块SRAM1_R及SRAM2_R、虚部模块SRAM1_I及SRAM2_I和旋转因子存储单元Tw-ROM;阶段III:FFT/IFFT运算结果输出。各个阶段详述如下:
阶段I:第一及第二数据存储单元SRAM1及SRAM2初始化采用码位倒置算法。例如N=16时,顺序计数器的输出结果依序为:(0000),(0001),(0010),(0011),(0100),(0101),(0110),(0111),(1000),(1001),(1010),(1011),(1100),(1101),(1110)及(1111);则对应产生的地址依序为(0000),(1000),(0100),(1100),(0010),(1010),(0110),(1110),(0001),(1001),(0101),(1101),(0011),(1011),(0111)及(1111)。
阶段II:FFT/IFFT运算过程中访问实部模块SRAM1_R及SRAM2_R、虚部模块SRAM1_I及SRAM2_I和旋转因子存储单元Tw-ROM的地址生成算法为:
设数据序列长度N=2m,m是蝶形运算的级数,每级蝶形运算均有N/2个蝶形运算。在每级蝶形运算时,用B来计数执行蝶形运算的次数,因此可知:旋转因子的存储地址waddr一定与m,B,N和FFT/IFFT最大能计算的点数M存在关系,例如满足关系式(2)。
waddr = mask ( B , l og 2 N - 1 - m ) < < ( log 2 M - log 2 N ) B &Element; ( 0 , N / 4 ) [ mask ( B , log 2 N - 1 - m ) < < ( log 2 M - log 2 N ) ] - { 1 &prime; b 1 , a &prime; b 0 } B &Element; ( N / 4 , N / 2 ) . . . ( 2 )
其中,a旋转因子的存储地址位宽。
首先解释一下mask(x,y)的意思:将x的低y位掩掉,也即将低y位用0代替。关系式(2)中是将蝶形运算次数B的低位用0代替,然后向左移
Figure BSA00000640403300093
位。关系式(2)中:当B小于N/4时用上面一个公式,当大于N/4时用下面一个公式。例如:当M=256且N=8时,B的取值为0到3;当进行第二级蝶形运算时,m=1,则
Figure BSA00000640403300094
旋转因子的存储深度是M/4(在此,假设M=256,M/4=64,a=6)。当B=0或1时,例如B=1=000001,掩掉低1位后则为000000,再向左移
Figure BSA00000640403300101
位后得到waddr=000000=0;当B=2或3时,例如B=3=000011,掩掉低1位后则为000010,再向左移5位后为100000,再减去{1′b1,a′b0}后得到waddr=000000=0,而真正的旋转因子的地址是waddr[5:0],也就是waddr产生的地址屏蔽掉最高位。
在FFT/IFFT运算过程中,实部模块的地址R_addr和虚部模块的地址I_addr的计算公式,例如关系式(3)为:
R _ addr = R ( 2 B + 0 , m ) I _ addr = R ( 2 B + 1 , m ) . . . ( 3 )
R(x,y)表示将x的低
Figure BSA00000640403300103
位循环左移y位,例如对于正在运算的N点FFT,需要循环左移的并非2B和2B+1,而是2B和2B+1的低
Figure BSA00000640403300104
位循环左移。例如N=8,则计算的是8点FFT,在生成第三级(m=2)蝶形运算中的第4次(B=3)蝶形运算输入输出数据的存储地址时,B=3,则2B=00000110,2B+1=00000111,然后低3位循环左移2位,则R_addr=00000011,I_addr=00000111。
阶段III:FFT/IFFT运算结果输出可以按地址空间的顺序依次输出。
蝶形单元组13由不同输入不同精度(对应不同字长)的蝶形单元131组成。在FFT/IFFT运算过程中,根据需要由控制信号产生单元15提供控制信号至蝶形单元组13中的各个蝶形单元131来选择合适的蝶形单元131。蝶形单元131执行的蝶形运算原理如下附:
Figure BSA00000640403300105
其中,X0,Y0,W,X1,Y1全为复数。
根据公式:
W×Y0=(Wr+jWi)×(Y0r+jY0i)
=(WrY0r-WiY0i)+j(WrY0i+WiY0r)
=[Wi(Y0r-Y0i)+Y0r(Wr-Wi)]+j[Wr(Y0r+Y0i)-Y0r(Wr-Wi)]
=Wi(Y0r-Y0i)+(1-j)Y0r(Wr-Wi)+jWr(Y0r+Y0i)
因此,可以将原来的4个乘法器减少为3个乘法器,或者说单次蝶形运算中执行的乘法运算的次数由原来的四次减少至三次。因为乘法器消耗面积和功耗要比加法器大很多,所以采用这个方法实现FFI/IFFT运算,减少了面积,降低了功耗。
控制信号产生单元15是本实施例中实现FFT/IFFT变换的电路10的核心。在初始化过程中,控制信号可以控制选择精度不同的输入数据序列,并且在FFT/IFFT运算的过程中,控制选择适合精度的旋转因子和合适的一个蝶形单元131进行蝶形运算。此外,在根据需要选择数据序列输入、所需旋转因子和蝶形单元131后开始进行FFT/IFFT运算的过程中,FFT/IFFT运算是完全按照状态机(FSM,Finite State Machine)的转换来实现的。在每个蝶形单元131也由状态机完成,包括读取数据、计算、输出蝶形运算结果数据三个状态。在功能实现过程中,为了提高计算速度,在某个蝶形运算的过程中,可以同时读进下一个蝶形运算所需的数据。
此外,由上可知,应用于电路10的实现FFT/IFFT变换的方法可归纳为如下步骤(1)~(4)。具体地,步骤(1):接收并存储长度为N1点的第一数据序列至第一数据存储单元SRAM1(或SRAM2)。步骤(2):选用蝶形单元组13中的多个蝶形单元131其中之一对存储于第一数据存储单元SRAM1(或SRAM2)中的第一数据序列进行
Figure BSA00000640403300111
级蝶形运算,每级蝶形运算均包括
Figure BSA00000640403300112
个蝶形运算,并且将每级蝶形运算中的每个蝶形运算的结果数据回写至第一数据存储单元SRAM1(或SRAM2)。步骤(3):接收并存储长度为N2点的第二数据序列至第二数据存储单元SRAM2(或SRAM1)。步骤(4):选用蝶形单元组13中的多个蝶形单元131其中之一对存储于第二数据存储单元SRAM2(或SRAM1)中的第二数据序列进行
Figure BSA00000640403300121
级蝶形运算,每级蝶形运算均包括
Figure BSA00000640403300122
个蝶形运算,并且将每级蝶形运算中的每个蝶形运算的结果数据回写至第二数据存储单元SRAM2(或SRAM1)。
另外,优选地,步骤(3)例如执行于步骤(2)的执行过程中,且步骤(4)执行于步骤(2)之后;在步骤(2)及步骤(4)中,每级蝶形运算中的每个蝶形运算例如仅执行三次乘法运算;每个蝶形单元例如配置成具有不同的蝶形运算精度。再者,还可根据旋转因子的周期性和对称性在旋转因子存储单元Tw-ROM中仅存储
Figure BSA00000640403300123
个旋转因子供步骤(2)及步骤(4)使用,其中,M为实现FFT/IFFT变换的电路10的最大能计算的点数,也即可执行蝶形运算的最大数据序列长度,且M≥N1,M≥N2。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (10)

1.一种实现FFT/IFFT变换的电路,其特征在于,包括:
第一数据存储单元和第二数据存储单元,分别与第一多路选择器电连接,以接收数据序列输入;同时该第一数据存储单元和该第二数据存储单元还分别与第二多路选择器电连接,以输出结果数据;
控制信号产生单元;
蝶形单元组,通过第三多路选择器分别电连接至该第一数据存储单元与该第二数据存储单元以读取蝶形运算所需数据,通过第四多路选择器分别电连接至该第一数据存储单元与该第二数据存储单元以回写蝶形运算结果数据,并通过第五多路选择器电连接至该控制信号产生单元以接受该控制信号产生单元之控制;
旋转因子存储单元,电连接至蝶形单元组并存储旋转因子;以及
地址产生单元,电连接至该第一数据存储单元、该第二数据存储单元、该旋转因子存储单元以及该控制信号产生单元,以接受该控制信号产生单元的控制向该第一数据存储单元、该第二数据存储单元及该旋转因子存储单元提供地址;
其中该第一至该第五多路选择器以及该旋转因子存储单元分别接受该控制信号产生单元的控制。
2.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该第一数据存储单元与该第二数据存储单元皆为双端口静态随机存储器。
3.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该第一数据存储单元与该第二数据存储单元中的每一个包括实部模块与虚部模块以分别存储数据序列中各个复数形式的数据点的实部和虚部。
4.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该旋转因子储存单元为单端口只读存储器。
5.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,对于数据序列长度为N点FFT/IFFT变换,该旋转因子存储单元所需存储的旋转因子的个数为
Figure FSA00000640403200021
6.如权利要求1所述的实现FFT/IFFT变换的电路,其特征在于,该蝶形单元组包括多个蝶形单元,每个蝶形单元执行每级蝶形运算中的单个蝶形运算过程中的乘法运算次数配置为三次。
7.一种实现FFT/IFFT变换的方法,其特征在于,该实现FFT/IFFT变换的方法适于应用在包括第一数据存储单元、第二数据存储单元以及与该第一、第二数据存储单元电连接的多个蝶形单元的实现FFT/IFFT变换的电路,该实现FFT/IFFT变换的方法包括步骤:
步骤a:接收并存储长度为N1点的第一数据序列至该第一数据存储单元;
步骤b:选用该多个蝶形单元其中之一对存储于该第一数据存储单元中的该第一数据序列进行级蝶形运算,每级蝶形运算均包括个蝶形运算,并且将每级蝶形运算中的每个蝶形运算的结果数据回写至该第一数据存储单元;
步骤c:接收并存储长度为N2点的第二数据序列至该第二数据存储单元;以及
步骤d:选用该多个蝶形单元其中之一对存储于该第二数据存储单元中的该第二数据序列进行
Figure FSA00000640403200031
级蝶形运算,每级蝶形运算均包括
Figure FSA00000640403200032
个蝶形运算,并且将每级蝶形运算中的每个蝶形运算的结果数据回写至该第二数据存储单元。
8.如权利要求7所述的实现FFT/IFFT变换的方法,其特征在于,步骤c执行于步骤b的执行过程中,且步骤d执行于步骤b之后。
9.如权利要求7所述的实现FFT/IFFT变换的方法,其特征在于,在步骤b及步骤d中,每级蝶形运算中的每个蝶形运算执行三次乘法运算。
10.如权利要求7所述的实现FFT/IFFT变换的方法,其特征在于,该实现FFT/IFFT变换的电路更包括旋转因子存储单元,该实现FFT/IFFT变换的方法还包括步骤:
根据旋转因子的周期性和对称性在该旋转因子存储单元中存储
Figure FSA00000640403200033
个旋转因子供步骤b及步骤d使用,其中M为该实现FFT/IFFT变换的电路可执行蝶形运算的最大数据序列长度,且M≥N1,M≥N2。
CN201110430773.XA 2011-12-20 2011-12-20 实现fft/ifft变换的电路及方法 Active CN103176950B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110430773.XA CN103176950B (zh) 2011-12-20 2011-12-20 实现fft/ifft变换的电路及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110430773.XA CN103176950B (zh) 2011-12-20 2011-12-20 实现fft/ifft变换的电路及方法

Publications (2)

Publication Number Publication Date
CN103176950A true CN103176950A (zh) 2013-06-26
CN103176950B CN103176950B (zh) 2017-04-05

Family

ID=48636836

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110430773.XA Active CN103176950B (zh) 2011-12-20 2011-12-20 实现fft/ifft变换的电路及方法

Country Status (1)

Country Link
CN (1) CN103176950B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106415526A (zh) * 2016-08-10 2017-02-15 深圳市汇顶科技股份有限公司 Fft处理器及运算方法
CN110600019A (zh) * 2019-09-12 2019-12-20 东南大学 基于实时场景下语音信噪比预分级的卷积神经网络计算电路

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080071848A1 (en) * 2006-09-14 2008-03-20 Texas Instruments Incorporated In-Place Radix-2 Butterfly Processor and Method
CN101231632A (zh) * 2007-11-20 2008-07-30 西安电子科技大学 应用fpga进行浮点fft处理的方法
US20080215656A1 (en) * 2006-09-26 2008-09-04 Oki Electric Industry Co., Ltd. Fast fourier transform circuit and fast fourier transform method
CN101330489A (zh) * 2008-07-28 2008-12-24 中兴通讯股份有限公司 快速傅立叶变换/快速傅立叶反变换处理器及其处理方法
CN101847986A (zh) * 2009-03-27 2010-09-29 中兴通讯股份有限公司 一种实现fft/ifft变换的电路及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080071848A1 (en) * 2006-09-14 2008-03-20 Texas Instruments Incorporated In-Place Radix-2 Butterfly Processor and Method
US20080215656A1 (en) * 2006-09-26 2008-09-04 Oki Electric Industry Co., Ltd. Fast fourier transform circuit and fast fourier transform method
CN101231632A (zh) * 2007-11-20 2008-07-30 西安电子科技大学 应用fpga进行浮点fft处理的方法
CN101330489A (zh) * 2008-07-28 2008-12-24 中兴通讯股份有限公司 快速傅立叶变换/快速傅立叶反变换处理器及其处理方法
CN101847986A (zh) * 2009-03-27 2010-09-29 中兴通讯股份有限公司 一种实现fft/ifft变换的电路及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BIXUEXIA: "第2章离散傅里叶变换及其快速算法3", 《百度文库》, 29 June 2011 (2011-06-29), pages 7 - 15 *
李小进等: "高速基2FFT处理器的结构设计与FPGA实现", 《电路与系统学报》, vol. 10, no. 5, 31 October 2005 (2005-10-31) *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106415526A (zh) * 2016-08-10 2017-02-15 深圳市汇顶科技股份有限公司 Fft处理器及运算方法
CN106415526B (zh) * 2016-08-10 2019-05-24 深圳市汇顶科技股份有限公司 Fft处理器及运算方法
CN110600019A (zh) * 2019-09-12 2019-12-20 东南大学 基于实时场景下语音信噪比预分级的卷积神经网络计算电路
CN110600019B (zh) * 2019-09-12 2022-02-15 东南大学 基于实时场景下语音信噪比预分级的卷积神经网络计算电路

Also Published As

Publication number Publication date
CN103176950B (zh) 2017-04-05

Similar Documents

Publication Publication Date Title
CN103677736B (zh) 数字信号处理器的数据路径电路
CN109146067B (zh) 一种基于FPGA的Policy卷积神经网络加速器
CN109992743A (zh) 矩阵乘法器
CN107392309A (zh) 一种基于fpga的通用定点数神经网络卷积加速器硬件结构
CN101937424A (zh) 基于fpga实现高速fft处理的方法
CN104969215A (zh) 具有用于提供多模基-2x蝶形向量处理电路的可编程数据路径的向量处理引擎以及相关的向量处理器、系统和方法
CN109284824B (zh) 一种基于可重构技术的用于加速卷积和池化运算的装置
CN102945224A (zh) 基于fpga的高速可变点fft处理器及其处理方法
CN105988973B (zh) 快速傅里叶变换/快速傅里叶变换的方法和电路
CN108647779A (zh) 一种低位宽卷积神经网络可重构计算单元
WO2018027706A1 (zh) Fft处理器及运算方法
CN103176949A (zh) 实现fft/ifft变换的电路及方法
Kiningham et al. Design and analysis of a hardware cnn accelerator
Revanna et al. A scalable FFT processor architecture for OFDM based communication systems
CN103412851A (zh) 一种高精度低功耗的fft处理器
WO2023065701A1 (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN106951394A (zh) 一种可重构定浮点通用fft处理器
CN116710912A (zh) 一种矩阵乘法器及矩阵乘法器的控制方法
CN102129419B (zh) 基于快速傅立叶变换的处理器
CN103176950A (zh) 实现fft/ifft变换的电路及方法
CN103034621A (zh) 基2×k并行fft架构的地址映射方法及系统
CN109284085B (zh) 一种基于fpga的高速模乘和模幂运算方法及装置
CN115167815A (zh) 乘加器电路、芯片及电子设备
CN106385311A (zh) 一种基于fpga的复混沌简化系统的混沌信号发生器
Chen et al. Exploiting on-chip heterogeneity of versal architecture for GNN inference acceleration

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant