CN104778150B - 一种频域处理方法及装置 - Google Patents
一种频域处理方法及装置 Download PDFInfo
- Publication number
- CN104778150B CN104778150B CN201510142045.7A CN201510142045A CN104778150B CN 104778150 B CN104778150 B CN 104778150B CN 201510142045 A CN201510142045 A CN 201510142045A CN 104778150 B CN104778150 B CN 104778150B
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- need
- frequency domain
- handle
- 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.)
- Active
Links
Landscapes
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明公开了一种频域处理方法及装置,属于数字信号处理领域。所述方法包括:获得当前周期实际需处理数据D1;D1包括T个时钟周期输入的采样数据,每一个时钟周期输入的采样数据包括M个连续的采样点,sum0为M与N的最小公倍数,N为预设FFT所需点数;确定当前周期需处理数据D;D包括数据头和数据尾,数据头为前一个周期需处理数据尾部的tap位数据,tap=N/2,数据尾为D1;对D进行分割和重叠,得到g个数据块;每一个数据块包括D中N个连续的采样点,第i个数据块尾部的tap位数据与第i+1个数据块头部的tap位数据相同,i=1,2,...,或g‑1,g=(T*M+tap)/tap‑1;对g个数据块分别进行频域处理,得到g个频域处理后的数据块;从g个频域处理后的数据块中,获得频域处理后的D1。
Description
技术领域
本发明涉及数字信号处理领域,特别涉及一种频域处理方法及装置。
背景技术
在数字信号处理过程中,常常需要对信号进行频域处理。频域处理主要包括快速傅里叶变换(英文:Fast Fourier Transformation,简称:FFT)。由于进行FFT的采样点点数是有限的,再加上时域信号本身的非周期性,但频域处理是将时域信号当作周期信号进行处理,从而导致时域信号在频域处理后相比于原始时域信号,数据不连续。
为了保证时域信号的数据连续性,现有技术提供了一种频域处理方法。假设时域信号为x[k],k为采样点数且k取无限大。同时,每个时钟周期输入的采样点点数为K,K为正整数。该方法包括如下步骤1至步骤4。
步骤1、参见图1(a),先对当前时钟周期输入的K点时域序列与缓存的前一个时钟周期输入的K点时域序列进行重叠(Overlap)处理,得到图1(b)示出的2K点时域序列。例如,假设当前时钟周期输入的采样点的序号是(K-1)~(2K-1),前一个时钟周期输入的采样点的序号是0~(K-1),那么,重叠处理后的时域序列包括0~(2K-1)。
步骤2、对重叠得到的2N点时域序列进行FFT等频域处理,得到图1(c)示出的时域周期序列。
步骤3、在频域处理之后进行IFFT,并在IFFT之后将数据进行去重叠(De-overlap)处理,得到最终的时域周期序列。去重叠后的时域周期序列如图1(d)所示,经频域处理后的时域信号如图1(e)所示。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
现有技术中进行FFT的点数与每个时钟周期输入的点数是关联的,当每个时钟周期输入K点时域序列时,经过overlap处理之后变为2K点时域序列,那么需要进行2K点FFT和反傅里叶变换(英文:Inverse Fast Fourier Transformation,简称:IFFT)。一方面,如果2K不是2的整数次幂,那么需要做非2整数次幂点数的FFT和IFFT,实现时相对于2整数次幂点数的FFT和IFFT更为复杂,运算量更大;另一方面,如果2K点FFT和IFFT已经超过算法性能指标,那么现有技术会造成大量实现资源浪费。
发明内容
本发明实施例提供了一种频域处理方法及装置,可以解决进行FFT的点数与每个时钟周期输入的点数关联时带来的FFT和IFFT过于复杂、运算量大、以及资源浪费的问题。所述技术方案如下:
第一方面,提供了一种频域处理方法,所述方法包括:
获得当前周期实际需处理数据D1;其中,所述实际需处理数据D1包括T个时钟周期输入的采样数据,每一个所述时钟周期输入的采样数据包括M个连续的采样点,sum0为M与N的最小公倍数;
确定当前周期需处理数据D;其中,所述需处理数据D包括数据头和数据尾,所述数据头为前一个周期实际需处理数据尾部的tap位数据,tap=N/2,所述数据尾为所述实际需处理数据D1;
对所述需处理数据D进行分割和重叠,得到g个数据块;其中,每一个所述数据块包括所述需处理数据D中N个连续的采样点,第i个数据块尾部的tap位数据与第i+1个数据块头部的tap位数据相同,i=1,2,...,或g-1,g=(T*M+tap)/tap-1;
对所述g个数据块分别进行频域处理,得到g个频域处理后的数据块;
从所述g个频域处理后的数据块中,获得频域处理后的实际需处理数据D1;
其中,N为预设FFT所需点数且N为大于4的2的整数次幂。
结合第一方面,在第一方面的第一实施方式中,对所述g个数据块分别进行频域处理,包括:
当g不能整除T时,将所述g个数据块分配到b个并行通道进行傅里叶变换FFT运算;其中,所述b个并行通道中第一通道b1在所述T个时钟周期内完成一个数据块的FFT运算,所述b个并行通道中除所述b1外的其他并行通道各自在每个所述时钟周期完成一个数据块的FFT运算; 表示向上取整运算;
当g能整除T时,将所述g个数据块分配到p个并行通道进行FFT运算,其中,所述p个并行通道中每个通道各自在每个所述时钟周期完成一个数据块的FFT运算,p=g/T。
结合第一方面及第一方面的第一实施方式,在第一方面的第二实施方式中,所述方法还包括:
对每一个完成FFT运算后的数据块分别进行频域相移处理。
结合第一方面,在第一方面的第三实施方式中,从所述g个频域处理后的数据块中,获得频域处理后的实际需处理数据D1,包括:
对每一个所述频域处理后的数据块进行反傅里叶变换IFFT运算,得到g个完成IFFT运算后的数据块;
将每一个完成IFFT运算后的数据块的头部和尾部各tap/2位数据丢弃,得到g个去重叠的数据块;
按照所述g个数据块中的各个数据块的编号的排列顺序,对所述g个去重叠的数据块进行排列,得到频域处理后的实际需处理数据D1,其中,所述g个数据块中的各个数据块的编号是依照所述g个数据块各自头部的tap位数据在所述需处理数据D中的排列顺序排列的。
结合第一方面及第一方面的第一至第三实施方式,在第一方面的第四实施方式中,对所述D进行分割和重叠,得到g个数据块,包括:
将所述D分割为c个连续的数据序列,每一个所述数据序列包括所述需处理数据D中tap个连续的采样点,每一个所述数据序列包括的采样点不同;c=g+1;
将相邻两个所述数据序列拼接成一个数据块,得到所述g个数据块。
第二方面,提供了一种频域处理装置,所述装置包括:
第一获取模块,用于获得当前周期实际需处理数据D1;其中,所述实际需处理数据D1包括T个时钟周期输入的采样数据,每一个所述时钟周期输入的采样数据包括M个连续的采样点,sum0为M与N的最小公倍数;
确定模块,用于确定当前周期需处理数据D;其中,所述需处理数据D包括数据头和数据尾,所述数据头为前一个周期实际需处理数据尾部的tap位数据,tap=N/2,所述数据尾为所述实际需处理数据D1;
重叠模块,用于对所述需处理数据D进行分割和重叠,得到g个数据块;其中,每一个所述数据块包括所述需处理数据D中N个连续的采样点,第i个数据块尾部的tap位数据与第i+1个数据块头部的tap位数据相同,i=1,2,...,或g-1,g=(T*M+tap)/tap-1;
处理模块,用于对所述g个数据块分别进行频域处理,得到g个频域处理后的数据块;
第二获取模块,用于从所述g个频域处理后的数据块中,获得频域处理后的实际需处理数据D1;
其中,N为预设FFT所需点数且N为大于4的2的整数次幂。
结合第二方面,在第二方面的第一实施方式中,所述处理模块用于,
当g不能整除T时,将所述g个数据块分配到b个并行通道进行傅里叶变换FFT运算;其中,所述b个并行通道中第一通道b1在所述T个时钟周期内完成一个数据块的FFT运算,所述b个并行通道中除所述b1外的其他并行通道各自在每个所述时钟周期完成一个数据块的FFT运算; 表示向上取整运算;
当g能整除T时,将所述g个数据块分配到p个并行通道进行FFT运算,其中,所述p个并行通道中每个通道各自在每个所述时钟周期完成一个数据块的FFT运算,p=g/T。
结合第二方面及第二方面的第一实施方式,在第二方面的第二实施方式中,所述处理模块还用于,
对每一个完成FFT运算后的数据块分别进行频域相移处理。
结合第二方面,在第二方面的第三实施方式中,所述第二获取模块包括:
反傅里叶变换IFFT单元,用于对每一个所述频域处理后的数据块进行IFFT运算,得到g个完成IFFT运算后的数据块;
去重叠单元,用于将每一个完成IFFT运算后的数据块的头部和尾部各tap/2位数据丢弃,得到g个去重叠的数据块;
排列单元,用于按照所述g个数据块中的各个数据块的编号的排列顺序,对所述g个去重叠的数据块进行排列,得到频域处理后的实际需处理数据D1,其中,所述g个数据块中的各个数据块的编号是依照所述g个数据块各自头部的tap位数据在所述需处理数据D中的排列顺序排列的。
结合第二方面及第二方面的第一至第三实施方式,在第二方面的第四实施方式中,所述重叠模块包括:
分割单元,用于将所述需处理数据D分割为c个连续的数据序列,每一个所述数据序列包括所述需处理数据D中tap个连续的采样点,每一个所述数据序列包括的采样点不同;c=g+1;
拼接单元,用于将相邻两个所述数据序列拼接成一个数据块,得到所述g个的数据块。
本发明实施例提供的技术方案带来的有益效果是:
通过获得当前周期实际需处理数据D1,实际需处理数据D1包括T个时钟周期输入的采样数据,每一个时钟周期输入的采样数据包括M个连续的采样点;确定当前周期需处理数据D;需处理数据D包括数据头和数据尾,数据头为前一个周期实际需处理数据尾部的tap位数据,数据尾为实际需处理数据D1;对需处理数据D进行分割和重叠,得到g个数据块;对g个数据块分别进行频域处理;由于每一个数据块包括需处理数据D中N个连续的采样点,即进行FFT等频域处理的点数为N,N为预设FFT所需点数,这样使得FFT等频域处理所需点数只取决于N且与每个时钟周期输入的点数不再关联,那么,可以将N设置为2的整数次幂,这样,可以避免对每个数据块进行2的非整数次幂的FFT和IFFT,从而降低了复杂程度和运算量;同时,N可以设置为满足算法性能指标的值,这样能够合理利用资源,降低功耗。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种频域处理方法的示意图;
图2是本发明实施例提供的一种频域处理方法的流程图;
图3是本发明实施例提供的一种频域处理方法的流程图;
图4是本发明实施例提供的重叠数据序列的示意图;
图5是本发明实施例提供的FFT时隙安排的示意图;
图6是本发明实施例提供的FFT时隙安排的又一示意图;
图7是本发明实施例提供的一种频域处理方法的示意图;
图8是本发明实施例提供的一种频域处理装置的结构示意图;
图9和图10是本发明实施例提供的一种频域处理装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为便于对本发明实施例提供的技术方案的理解,首先对数字信号的频域处理流程进行介绍。
数字信号的频域处理流程为流水线的处理流程。假设数字信号表示为x[n],n为采样点数且n取无限大。则,x[n]的采样点可以按照时钟周期连续地输入到频域处理系统中,频域处理系统可以按照处理周期连续地对输入的x[n]的采样点进行频域处理并输出。也就是说,x[n]的采样点的输入与x[n]的采样点的频域处理是同步的。
此外,输入数据并行度,指每个时钟周期输入的数据宽度。在本实施例中,输入数据并行度指每个时钟周期输入的采样点点数。输入数据并行度由承载频域处理系统的硬件平台决定,当硬件平台建成之后,输入数据并行度将无法改变。
实施例一
本发明实施例提供了一种频域处理方法,参见图2,该方法流程包括:
步骤101、获得当前周期实际需处理数据D1。
其中,当前周期实际需处理数据D1包括T个时钟周期输入的采样数据,每一个时钟周期输入的采样数据包括M个连续的采样点,sum0为M与N的最小公倍数,N为预设FFT所需点数。
其中,预设FFT所需点数N是可以满足性能需求且符合技术指标的值,可以直接指定,也可以通过计算得到。
步骤102、确定当前周期需处理数据D。
其中,当前周期需处理数据D包括数据头和数据尾,数据头为前一个周期实际需处理数据尾部的tap位数据,tap=N/2,数据尾为实际需处理数据D1。
步骤103、对当前周期需处理数据D进行分割和重叠,得到g个数据块。
其中,每一个数据块包括需处理数据D中N个连续的采样点,第i个数据块尾部的tap位数据与第i+1个数据块头部的tap位数据相同,i=1,2,...,或g-1,g=(T*M+tap)/tap-1。
步骤104、对g个数据块分别进行频域处理,得到g个频域处理后的数据块。
步骤105、从g个频域处理后的数据块中,获得频域处理后的实际需处理数据D1。
本发明实施例通过获得当前周期实际需处理数据D1,实际需处理数据D1包括T个时钟周期输入的采样数据,每一个时钟周期输入的采样数据包括M个连续的采样点;确定当前周期需处理数据D;需处理数据D包括数据头和数据尾,数据头为前一个周期实际需处理数据尾部的tap位数据,数据尾为实际需处理数据D1;对需处理数据D进行分割和重叠,得到g个数据块;对g个数据块分别进行频域处理;由于每一个数据块包括需处理数据D中N个连续的采样点,即进行FFT等频域处理的点数为N,N为预设FFT所需点数,这样使得FFT等频域处理所需点数只取决于N且与每个时钟周期输入的点数不再关联,那么,可以将N设置为2的整数次幂,这样,可以避免对每个数据块进行2的非整数次幂的FFT和IFFT,从而降低了复杂程度和运算量;同时,N可以设置为满足算法性能指标的值,这样能够合理利用资源,降低功耗。
实施例二
本发明实施例提供了一种频域处理方法,参见图3,方法流程包括:
步骤201、获得当前周期实际需处理数据D1。
其中,当前周期实际需处理数据D1包括T个时钟周期输入的采样数据,每一个时钟周期输入的采样数据包括M个连续的采样点,sum0为M与N的最小公倍数,N为预设FFT所需点数。
可以推知,当前周期实际需处理数据D1的宽度为T*M。
步骤202、确定当前周期需处理数据D。
其中,当前周期需处理数据D包括数据头和数据尾,数据头为前一个周期实际需处理数据尾部的tap位数据,tap=N/2,数据尾为当前周期实际需处理数据D1。
在前一个周期进行频域处理时,可以将实际需处理数据尾部的tap数据进行缓存。
可以推知,当前周期需处理数据D的宽度sum1=T*M+tap。
步骤203、将当前周期需处理数据D分割为c个连续的数据序列。
其中,每一个数据序列包括需处理数据D中tap个连续的采样点,每一个数据序列包括的采样点不同。
由于当前周期需处理数据D的宽度sum1=T*M+tap,因此可以推知c=(T*M+tap)/tap。
需要说明的是,结合T=sum0/2M及tap=N/2,可以推知c=sum0/N+1。由于sum0是M与N的公倍数,即sum0/N是整数,因此c也是整数。也就是说,当前周期需处理数据D一定能分割成整数个连续的数据序列。
步骤204、将相邻两个数据序列拼接成一个数据块,得到g个数据块。
其中,每一个数据块包括需处理数据D中N个连续的采样点,第i个数据块尾部的tap位数据与第i+1个数据块头部的tap位数据相同,i=1,2,...,或g-1。
其中,g=c-1。由于c=(T*M+tap)/tap,因此可以得到g=(T*M+tap)/tap-1。
参见图4,假设步骤203中分割出5个连续的数据序列DATA0、DATA1、DATA2、DATA3和DATA4。则将DATA0与DATA1拼接成数据块BLOCK0,将DATA1和DATA2拼接成数据块BLOCK1,将DATA2和DATA3拼接成数据块BLOCK2,将DATA3和DATA4拼接成数据块BLOCK3,即得到4个数据块BLOCK0、BLOCK1、BLOCK2和BLOCK3。
其中,得到g个数据块后,给每个数据块进行编号。各个数据块的编号可以依照g个数据块各自头部的tap位数据在当前周期需处理数据D中的排列顺序排列。
通过步骤203和步骤204实现了,对当前周期需处理数据D进行分割和重叠,得到g个数据块。
步骤205、对g个数据块分别进行FFT运算,得到g个完成FFT运算后的数据块。
本实施例提供两种方式对g个数据块分别进行FFT运算。
第一种方式,当g不能整除T时,将g个数据块分配到b个并行通道进行FFT运算。其中,b个并行通道中第一通道b1在T个时钟周期内完成一个数据块的FFT运算,b个并行通道中除b1外的其他并行通道各自在每个时钟周期完成一个数据块的FFT运算。 表示向上取整运算。
参见图5,假设g个数据块分别是BLOCK_1、BLOCK_2、...、BLOCK_g/T、BLOCK_(g/T+1)、...、BLOCK_[(T-1)(g/T)+1]、...、BLOCK_g。b个并行通道中除b1外的其他并行通道分别是b2~b(g/T)。那么,第一通道b1在T个时钟周期内完成数据块BLOCK_1的FFT运算。通道b2~b(g/T)在T个时钟周期的第一个时钟周期分别完成BLOCK_2~BLOCK_g/T的FFT运算,在T个时钟周期的第二个时钟周期分别完成BLOCK_(g/T+1)~BLOCK_(2g/T-1)的FFT运算,以此类推。
当g能整除T时,将g个数据块分配到p个并行通道进行FFT运算,其中,p个并行通道中每个通道各自在每个时钟周期完成一个数据块的FFT运算,p=g/T。
参见图6,假设p个并行通道分别是p1~p(g/T),那么,通道p1~p(g/T)在T个时钟周期的第一个时钟周期分别完成BLOCK_1~BLOCK_g/T的FFT运算,在T个时钟周期的第二个时钟周期分别完成BLOCK_(g/T+1)~BLOCK_2g/T的FFT运算,以此类推。
第二种方式,将g个数据块分配到g个并行通道进行FFT运算。g个并行通道中每个通道各自在T个时钟周期内完成一个数据块的FFT运算。
上述两种方式均是为了在T个时钟周期内完成当前周期需处理数据D的FFT而进行的FFT时隙安排。第一种方式相比于第二种方式,并行通道的数量较少,占用的资源较少,并行度利用率较高。
步骤206、对g个完成FFT运算后的数据块分别进行频域相移处理。
其中,频域相移处理方式可以采用本领域已知方式,在此不再赘述。需要说明的是,在频域相移处理之后,还可以对g个数据块进行增益处理等其他频域处理。
通过步骤205至步骤206实现了,对g个数据块分别进行频域处理,得到g个频域处理后的数据块。
步骤207、对每一个频域处理后的数据块进行IFFT运算,得到g个完成IFFT运算后的数据块。
在FFT运算和频域相移处理等频域处理之后,对每一个频域处理后的数据块进行IFFT运算。
需要说明的是,IFFT运算的方式可以与步骤205提供的FFT运算的方式相同,在此省略描述。
步骤208、将每一个完成IFFT运算后的数据块的头部和尾部各tap/2位数据丢弃,得到g个去重叠的数据块。
其中,将每一个完成IFFT运算后的数据块的头部和尾部各tap/2位数据丢弃包括,将每一个完成IFFT运算后的数据块的头部tap/2位数据丢弃、以及将每一个完成IFFT运算后的数据块的尾部tap/2位数据丢弃。
完成丢弃后,每一个去重叠的数据块的宽度为tap。
步骤209、按照各个数据块的编号的排列顺序,对g个去重叠的数据块进行排列,得到频域处理后的实际需处理数据D1。
其中,g个去重叠的数据块进行排列后,构成的数据宽度为g*tap。结合,g=(T*M+tap)/tap-1、以及tap=N/2,可以推知g*tap=T*M,即当前周期实际需处理数据D1的宽度。
通过步骤207至步骤209实现了,从g个频域处理后的数据块中,获得频域处理后的实际需处理数据D1。
下面结合实际应用场景简单介绍本发明实施例。
已知每个时钟周期输入160点连续的采样点,即M=160。
场景一是进行128点FFT运算满足性能需求,即N=128。那么,M与N的最小公倍数sum0=640,tap=64,T=2,g=5,
参见图7,第一步,获得当前周期实际需处理数据D1,D1包括2个时钟周期输入的数据d2和d3,d2和d3均包括160点采样点。
第二步,确定当前周期需处理数据D。假设前一个周期实际需处理数据包括数据d0和d1,则d1的96~159点数据为前一个周期实际需处理数据尾部的64点数据。那么,当前周期需处理数据D包括d1的96~159点数据、d2的0~159点数据、以及d3的0~159点数据。
第三步,对当前周期需处理数据D进行分割和重叠,得到5个128点的数据块FFT_0、FFT_1、FFT_2、FFT_3、和FFT_4。
第四步,将5个128点的数据块分配到3个并行通道(包括通道一至三)进行FFT运算。通道一在2个时钟周期完成FFT_0的FFT运算,通道二和三分别在2个时钟周期完成FFT_1、FFT_2、FFT_3、和FFT_4的FFT运算。
第五步,将完成FFT运算的5个128点的数据块分配到3个并行通道进行IFFT运算,得到5个128点数据块IFFT_0、IFFT_1、IFFT_2、IFFT_3、和IFFT_4。
第六步,将IFFT_0、IFFT_1、IFFT_2、IFFT_3、和IFFT_4各自的头部和尾部32位丢弃,获得5个64点数据块Temp_0、Temp_1、Temp_2、Temp_3、以及Temp_4。
第七步、对Temp_0、Temp_1、Temp_2、Temp_3、以及Temp_4进行排列,得到频域处理后的实际需处理数据D1。
场景二是进行64点FFT运算满足性能需求,即N=64。那么,M与N的最小公倍数sum0=320,tap=32,T=1,g=5,
第一步,获得当前周期实际需处理数据D1,D1包括1个时钟周期输入的数据d1,d1包括160点采样点。
第二步,确定当前周期需处理数据D。假设前一个周期实际需处理数据包括数据d0,则d0的128~159点数据为前一个周期实际需处理数据尾部的32点数据。那么,需处理数据D包括d0的128~159点数据、和d1的0~159点数据。
第三步,对需处理数据D进行分割和重叠,得到5个64点的数据块FFT_0、FFT_1、FFT_2、FFT_3、和FFT_4。
第四步,将5个64点的数据块分配到5个并行通道(包括通道一至五)进行FFT运算。通道一至五分别在1个时钟周期完成FFT_0、FFT_1、FFT_2、FFT_3、和FFT_4的FFT运算。
第五步,将完成FFT运算的5个64点的数据块分配到5个并行通道进行IFFT运算,得到5个64点数据块IFFT_0、IFFT_1、IFFT_2、IFFT_3、和IFFT_4。
第六步,将IFFT_0、IFFT_1、IFFT_2、IFFT_3、和IFFT_4各自的头部和尾部16位丢弃,获得5个32点数据块Temp_0、Temp_1、Temp_2、Temp_3、以及Temp_4。
第七步、对Temp_0、Temp_1、Temp_2、Temp_3、以及Temp_4进行排列,得到频域处理后的实际需处理数据D1。
场景三是进行320点FFT运算满足性能需求,即N=320。那么,M与N的最小公倍数sum0=320,tap=160,T=1,g=1,
第一步,获得当前周期实际需处理数据D1,D1包括1个时钟周期输入的数据d1,d1包括160点采样点。
第二步,确定当前周期需处理数据D。假设前一个周期实际需处理数据包括数据d0,则d0的0~159点数据为前一个周期实际需处理数据尾部的160点数据。那么,D包括d0的0~159点数据、和d1的0~159点数据。
第三步,对需处理数据D进行分割和重叠,得到1个320点的数据块FFT_0。
第四步,将1个320点的数据块分配到1个并行通道(包括通道一)进行FFT运算。通道一在1个时钟周期完成FFT_0的FFT运算。
第五步,将完成FFT运算的1个320点的数据块分配到1个并行通道进行IFFT运算,得到1个320点数据块IFFT_0。
第六步,将IFFT_0的头部和尾部80位丢弃,获得1个160点数据块Temp_0,即频域处理后的实际需处理数据D1。
本发明实施例通过获得当前周期实际需处理数据D1,实际需处理数据D1包括T个时钟周期输入的采样数据,每一个时钟周期输入的采样数据包括M个连续的采样点;确定当前周期需处理数据D;需处理数据D包括数据头和数据尾,数据头为前一个周期实际需处理数据尾部的tap位数据,数据尾为实际需处理数据D1;对需处理数据D进行分割和重叠,得到g个数据块;对g个数据块分别进行频域处理;由于每一个数据块包括需处理数据D中N个连续的采样点,即进行FFT等频域处理的点数为N,N为预设FFT所需点数,这样使得FFT等频域处理所需点数只取决于N且与每个时钟周期输入的点数不再关联,那么,可以将N设置为2的整数次幂,这样,可以避免对每个数据块进行2的非整数次幂的FFT和IFFT,从而降低了复杂程度和运算量;同时,N可以设置为满足算法性能指标的值,这样能够合理利用资源,降低功耗。
实施例三
本发明实施例提供了一种频域处理装置,参见图8,该装置包括:
第一获取模块301,用于获得当前周期实际需处理数据D1。
其中,实际需处理数据D1包括T个时钟周期输入的采样数据,每一个时钟周期输入的采样数据包括M个连续的采样点,sum0为M与N的最小公倍数,N为预设FFT所需点数;
确定模块302,用于确定当前周期需处理数据D。
其中,需处理数据D包括数据头和数据尾,数据头为前一个周期实际需处理数据尾部的tap位数据,tap=N/2,数据尾为实际需处理数据D1。
重叠模块303,用于对需处理数据D进行分割和重叠,得到g个数据块。
其中,每一个数据块包括需处理数据D中N个连续的采样点,第i个数据块尾部的tap位数据与第i+1个数据块头部的tap位数据相同,i=1,2,...,或g-1,g=(T*M+tap)/tap-1。
处理模块304,用于对g个数据块分别进行频域处理,得到g个频域处理后的数据块。
第二获取模块305,用于从g个频域处理后的数据块中,获得频域处理后的实际需处理数据D1。
本发明实施例通过获得当前周期实际需处理数据D1,实际需处理数据D1包括T个时钟周期输入的采样数据,每一个时钟周期输入的采样数据包括M个连续的采样点;确定当前周期需处理数据D;需处理数据D包括数据头和数据尾,数据头为前一个周期实际需处理数据尾部的tap位数据,数据尾为实际需处理数据D1;对需处理数据D进行分割和重叠,得到g个数据块;对g个数据块分别进行频域处理;由于每一个数据块包括需处理数据D中N个连续的采样点,即进行FFT等频域处理的点数为N,N为预设FFT所需点数,这样使得FFT等频域处理所需点数只取决于N且与每个时钟周期输入的点数不再关联,那么,可以将N设置为2的整数次幂,这样,可以避免对每个数据块进行2的非整数次幂的FFT和IFFT,从而降低了复杂程度和运算量;同时,N可以设置为满足算法性能指标的值,这样能够合理利用资源,降低功耗。
实施例四
本发明实施例提供了一种频域处理装置,参见图9,该装置包括第一获取模块401、确定模块402、重叠模块403、处理模块404和第二获取模块405。第一获取模块401和确定模块402的结构分别与实施例三提供的第一获取模块301和确定模块302的结构相同,在此不再赘述。本实施例提供的频域处理装置与实施例三提供的频域处理装置的不同之处如下。
其中,重叠模块403包括分割单元4031和拼接单元4032。
分割单元4031,用于将需处理数据D分割为c个连续的数据序列,每一个数据序列包括需处理数据D中tap个连续的采样点,每一个数据序列包括的采样点不同;c=g+1。
拼接单元4032,用于将相邻两个数据序列拼接成一个数据块,得到g个数据块。
其中,处理模块404用于,当g不能整除T时,将g个数据块分配到b个并行通道进行FFT运算;其中,b个并行通道中第一通道b1在T个时钟周期内完成一个数据块的FFT运算,b个并行通道中除b1外的其他并行通道各自在每个时钟周期完成一个数据块的FFT运算; 表示向上取整运算;当g能整除T时,将g个数据块分配到p个并行通道进行FFT运算,其中,p个并行通道中每个通道各自在每个时钟周期完成一个数据块的FFT运算,p=g/T。
其中,处理模块404还用于,对每一个完成FFT运算后的数据块分别进行频域相移处理。
其中,第二获取模块405包括IFFT单元4051、去重叠单元4052和排列单元4053。
IFFT单元4051,用于对每一个频域处理后的数据块进行IFFT运算,得到g个完成IFFT运算后的数据块。
去重叠单元4052,用于将每一个完成IFFT运算后的数据块的头部和尾部各tap/2位数据丢弃,得到g个去重叠的数据块。
排列单元4053,用于按照各个数据块的编号的排列顺序,对g个去重叠的数据块进行排列,得到频域处理后的实际需处理数据D1,其中,各个数据块的编号是依照g个数据块各自头部的tap位数据在需处理数据D中的排列顺序排列的。
本发明实施例通过获得当前周期实际需处理数据D1,实际需处理数据D1包括T个时钟周期输入的采样数据,每一个时钟周期输入的采样数据包括M个连续的采样点;确定当前周期需处理数据D;需处理数据D包括数据头和数据尾,数据头为前一个周期实际需处理数据尾部的tap位数据,数据尾为实际需处理数据D1;对需处理数据D进行分割和重叠,得到g个数据块;对g个数据块分别进行频域处理;由于每一个数据块包括需处理数据D中N个连续的采样点,即进行FFT等频域处理的点数为N,N为预设FFT所需点数,这样使得FFT等频域处理所需点数只取决于N且与每个时钟周期输入的点数不再关联,那么,可以将N设置为2的整数次幂,这样,可以避免对每个数据块进行2的非整数次幂的FFT和IFFT,从而降低了复杂程度和运算量;同时,N可以设置为满足算法性能指标的值,这样能够合理利用资源,降低功耗。
图10示出了一种频域处理装置,可适用于实施例一或二提供的频域处理方法。参见图10,该装置包括处理器11(例如CPU)、存储器12和输入接口13。
下面结合图10对该装置的各个构成部件进行具体的介绍:
输入接口13用于输入采样点。
存储器12可用于存储软件程序和/或应用模块,从而执行频域处理装置的各种功能应用以及数据处理。存储器12可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储输入的采样点,例如存储每个周期实际需处理数据的后tap位数据等。此外,存储器12可以包括高速RAM(RandomAccess Memory,随机存取存储器),还可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
具体地,通过运行或执行存储在存储器12内的软件程序和/或应用模块,以及调用存储在存储器12内的数据,处理器11可以实现,获得当前周期实际需处理数据D1;其中,实际需处理数据D1包括T个时钟周期输入的采样数据,每一个时钟周期输入的采样数据包括M个连续的采样点,sum0为M与N的最小公倍数,N为预设FFT所需点数;确定当前周期需处理数据D;其中,需处理数据D包括数据头和数据尾,数据头为前一个周期实际需处理数据尾部的tap位数据,tap=N/2,数据尾为实际需处理数据D1;对需处理数据D进行分割和重叠,得到g个数据块;其中,每一个数据块包括需处理数据D中N个连续的采样点,第i个数据块尾部的tap位数据与第i+1个数据块头部的tap位数据相同,i=1,2,...,或g-1,g=(T*M+tap)/tap-1;对g个数据块分别进行频域处理,得到g个频域处理后的数据块;从g个频域处理后的数据块中,获得频域处理后的实际需处理数据D1。
优选地,处理器11可以实现,当g不能整除T时,将g个数据块分配到b个并行通道进行FFT运算;其中,b个并行通道中第一通道b1在T个时钟周期内完成一个数据块的FFT运算,b个并行通道中除b1外的其他并行通道各自在每个时钟周期完成一个数据块的FFT运算; 表示向上取整运算;当g能整除T时,将g个数据块分配到p个并行通道进行FFT运算,其中,p个并行通道中每个通道各自在每个时钟周期完成一个数据块的FFT运算,p=g/T。
优选地,处理器11可以实现,对每一个完成FFT运算后的数据块分别进行频域相移处理。
优选地,处理器11可以实现,对每一个频域处理后的数据块进行IFFT运算,得到g个完成IFFT运算后的数据块;将每一个完成IFFT运算后的数据块的头部和尾部各tap/2位数据丢弃,得到g个去重叠的数据块;按照各个数据块的编号的排列顺序,对g个去重叠的数据块进行排列,得到频域处理后的D1,其中,各个数据块的编号是依照g个数据块各自头部的tap位数据在需处理数据D中的排列顺序排列的。
优选地,处理器11可以实现,将需处理数据D分割为c个连续的数据序列,每一个数据序列包括需处理数据D中tap个连续的采样点,每一个数据序列包括的采样点不同;c=g+1;将相邻两个数据序列拼接成一个数据块,得到g个数据块。
需要说明的是:上述实施例提供的频域处理装置在频域处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的频域处理装置与频域处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种频域处理方法,其特征在于,应用于频域处理系统,所述方法包括:
获得当前周期实际需处理数据D1;其中,所述实际需处理数据D1包括T个时钟周期输入的采样数据,每一个所述时钟周期输入的采样数据包括M个连续的采样点,sum0为M与N的最小公倍数,所述采样数据为时域信号;
确定当前周期需处理数据D;其中,所述需处理数据D包括数据头和数据尾,所述数据头为前一个周期实际需处理数据尾部的tap位数据,tap=N/2,所述数据尾为所述实际需处理数据D1;
对所述需处理数据D进行分割和重叠,得到g个数据块;其中,每一个所述数据块包括所述需处理数据D中N个连续的采样点,第i个数据块尾部的tap位数据与第i+1个数据块头部的tap位数据相同,i=1,2,...,或g-1,g=(T*M+tap)/tap-1;
对所述g个数据块分别进行频域处理,得到g个频域处理后的数据块;
从所述g个频域处理后的数据块中,获得频域处理后的实际需处理数据D1;
其中,N为预设傅里叶变换FFT所需点数且N为2的整数次幂。
2.根据权利要求1所述的方法,其特征在于,对所述g个数据块分别进行频域处理,包括:
当g不能整除T时,将所述g个数据块分配到b个并行通道进行傅里叶变换FFT运算;其中,所述b个并行通道中第一通道b1在所述T个时钟周期内完成一个数据块的FFT运算,所述b个并行通道中除所述b1外的其他并行通道各自在每个所述时钟周期完成一个数据块的FFT运算; 表示向上取整运算;
当g能整除T时,将所述g个数据块分配到p个并行通道进行FFT运算,其中,所述p个并行通道中每个通道各自在每个所述时钟周期完成一个数据块的FFT运算,p=g/T。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对每一个完成FFT运算后的数据块分别进行频域相移处理。
4.根据权利要求1所述的方法,其特征在于,从所述g个频域处理后的数据块中,获得频域处理后的实际需处理数据D1,包括:
对每一个所述频域处理后的数据块进行反傅里叶变换IFFT运算,得到g个完成IFFT运算后的数据块;
将每一个完成IFFT运算后的数据块的头部和尾部各tap/2位数据丢弃,得到g个去重叠的数据块;
按照所述g个数据块中的各个数据块的编号的排列顺序,对所述g个去重叠的数据块进行排列,得到频域处理后的实际需处理数据D1,其中,所述g个数据块中的各个数据块的编号是依照所述g个数据块各自头部的tap位数据在所述需处理数据D中的排列顺序排列的。
5.根据权利要求1-4任一项所述的方法,其特征在于,对所述需处理数据D进行分割和重叠,得到g个数据块,包括:
将所述需处理数据D分割为c个连续的数据序列,每一个所述数据序列包括所述需处理数据D中tap个连续的采样点,每一个所述数据序列包括的采样点不同;c=g+1;
将相邻两个所述数据序列拼接成一个数据块,得到所述g个数据块。
6.一种频域处理装置,其特征在于,应用于频域处理系统,所述装置包括:
第一获取模块,用于获得当前周期实际需处理数据D1;其中,所述实际需处理数据D1包括T个时钟周期输入的采样数据,每一个所述时钟周期输入的采样数据包括M个连续的采样点,sum0为M与N的最小公倍数,所述采样数据为时域信号;
确定模块,用于确定当前周期需处理数据D;其中,所述需处理数据D包括数据头和数据尾,所述数据头为前一个周期实际需处理数据尾部的tap位数据,tap=N/2,所述数据尾为所述实际需处理数据D1;
重叠模块,用于对所述需处理数据D进行分割和重叠,得到g个数据块;其中,每一个所述数据块包括所述需处理数据D中N个连续的采样点,第i个数据块尾部的tap位数据与第i+1个数据块头部的tap位数据相同,i=1,2,...,或g-1,g=(T*M+tap)/tap-1;
处理模块,用于对所述g个数据块分别进行频域处理,得到g个频域处理后的数据块;
第二获取模块,用于从所述g个频域处理后的数据块中,获得频域处理后的实际需处理数据D1;
其中,N为预设傅里叶变换FFT所需点数且N为2的整数次幂。
7.根据权利要求6所述的装置,其特征在于,所述处理模块用于,
当g不能整除T时,将所述g个数据块分配到b个并行通道进行傅里叶变换FFT运算;其中,所述b个并行通道中第一通道b1在所述T个时钟周期内完成一个数据块的FFT运算,所述b个并行通道中除所述b1外的其他并行通道各自在每个所述时钟周期完成一个数据块的FFT运算; 表示向上取整运算;
当g能整除T时,将所述g个数据块分配到p个并行通道进行FFT运算,其中,所述p个并行通道中每个通道各自在每个所述时钟周期完成一个数据块的FFT运算,p=g/T。
8.根据权利要求7所述的装置,其特征在于,所述处理模块还用于,
对每一个完成FFT运算后的数据块分别进行频域相移处理。
9.根据权利要求6所述的装置,其特征在于,所述第二获取模块包括:
反傅里叶变换IFFT单元,用于对每一个所述频域处理后的数据块进行IFFT运算,得到g个完成IFFT运算后的数据块;
去重叠单元,用于将每一个完成IFFT运算后的数据块的头部和尾部各tap/2位数据丢弃,得到g个去重叠的数据块;
排列单元,用于按照所述g个数据块中的各个数据块的编号的排列顺序,对所述g个去重叠的数据块进行排列,得到频域处理后的实际需处理数据D1,其中,所述g个数据块中的各个数据块的编号是依照所述g个数据块各自头部的tap位数据在所述需处理数据D中的排列顺序排列的。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述重叠模块包括:
分割单元,用于将所述需处理数据D分割为c个连续的数据序列,每一个所述数据序列包括所述需处理数据D中tap个连续的采样点,每一个所述数据序列包括的采样点不同;c=g+1;
拼接单元,用于将相邻两个所述数据序列拼接成一个数据块,得到所述g个数据块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510142045.7A CN104778150B (zh) | 2015-03-27 | 2015-03-27 | 一种频域处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510142045.7A CN104778150B (zh) | 2015-03-27 | 2015-03-27 | 一种频域处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104778150A CN104778150A (zh) | 2015-07-15 |
CN104778150B true CN104778150B (zh) | 2018-12-14 |
Family
ID=53619624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510142045.7A Active CN104778150B (zh) | 2015-03-27 | 2015-03-27 | 一种频域处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104778150B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106782573B (zh) * | 2016-11-30 | 2020-04-24 | 北京酷我科技有限公司 | 一种编码生成aac文件的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192846A (zh) * | 2007-07-25 | 2008-06-04 | 中兴通讯股份有限公司 | 一种自适应设置重叠剪切法的保护间隔的方法 |
CN101364840A (zh) * | 2008-09-28 | 2009-02-11 | 中国科学院声学研究所 | 一种改变批处理数据块块长的均衡系统及方法 |
CN101374129A (zh) * | 2007-08-20 | 2009-02-25 | 中兴通讯股份有限公司 | 基于正交频分复用的同步序列生成方法、同步方法及系统 |
CN101655519A (zh) * | 2009-09-14 | 2010-02-24 | 国电南京自动化股份有限公司 | 数字化变电站测控装置交流采样数据处理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1333618A (zh) * | 2000-07-18 | 2002-01-30 | 日本胜利株式会社 | 递归型离散傅立叶变换装置 |
CN101930425B (zh) * | 2009-06-24 | 2015-09-30 | 华为技术有限公司 | 信号处理方法、数据处理方法及装置 |
-
2015
- 2015-03-27 CN CN201510142045.7A patent/CN104778150B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192846A (zh) * | 2007-07-25 | 2008-06-04 | 中兴通讯股份有限公司 | 一种自适应设置重叠剪切法的保护间隔的方法 |
CN101374129A (zh) * | 2007-08-20 | 2009-02-25 | 中兴通讯股份有限公司 | 基于正交频分复用的同步序列生成方法、同步方法及系统 |
CN101364840A (zh) * | 2008-09-28 | 2009-02-11 | 中国科学院声学研究所 | 一种改变批处理数据块块长的均衡系统及方法 |
CN101655519A (zh) * | 2009-09-14 | 2010-02-24 | 国电南京自动化股份有限公司 | 数字化变电站测控装置交流采样数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104778150A (zh) | 2015-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105915241B (zh) | Fpga中实现超高速数字正交下变频及抽取滤波的方法与系统 | |
JP6373991B2 (ja) | フィルタベクトル処理動作のためのタップ付き遅延線を利用するベクトル処理エンジンと、関連するベクトル処理システムおよび方法 | |
CN104375802B (zh) | 一种乘除法器及运算方法 | |
CN103970718A (zh) | 一种快速傅里叶变换实现装置及方法 | |
JP2016537724A (ja) | ベクトル処理動作のために実行ユニットに入力ベクトルデータのインフライトフォーマット変換を提供するためにベクトルデータメモリと実行ユニットとの間でデータフローパスにおいてフォーマット変換回路を利用するベクトル処理エンジン(vpe)および関連するベクトル処理システムと方法 | |
JP2016541057A (ja) | ベクトルデータメモリに記憶される出力ベクトルデータのインフライト並び替えを提供するために実行ユニットとベクトルデータメモリとの間でデータフローパスにおいて並び替え回路を利用するベクトル処理エンジン(vpe)および関連するベクトルプロセッサシステムと方法 | |
JP2016537726A (ja) | 実行ユニットとベクトルデータメモリとの間のマージング回路を備えるベクトル処理エンジンおよび関連する方法 | |
JP2016537725A (ja) | 実行ユニットとベクトルデータメモリとの間のデータフローパスにおいて逆拡散回路を利用するベクトル処理エンジン、および関連する方法 | |
JP2016537723A (ja) | フィルタベクトル処理動作のためのタップ付き遅延線を利用するベクトル処理エンジンと、関連するベクトル処理システムおよび方法 | |
CN104679474A (zh) | 有限域gf(2^227)上的乘法器及模乘算法 | |
CN104967428B (zh) | 用于fpga的高速高阶fir滤波器的频域实现方法 | |
KR100989797B1 (ko) | Fft/ifft 연산코어 | |
CN105573716A (zh) | 基于传输触发结构体系的专用指令集处理器 | |
Lee et al. | Design of low energy, high performance synchronous and asynchronous 64-point FFT | |
CN107769755B (zh) | 一种并行fir抽取滤波器的设计方法和并行fir抽取滤波器 | |
CN104778150B (zh) | 一种频域处理方法及装置 | |
Kumar et al. | Design of fractional order differentiator using type-III and type-IV discrete cosine transform | |
CN104504205A (zh) | 一种对称fir算法的并行化二维分割方法及其硬件结构 | |
CN107092462B (zh) | 一种基于fpga的64位异步乘法器 | |
CN105975436A (zh) | 一种SoC系统中通用可配置加速单元的IP电路 | |
CN105893326B (zh) | 基于fpga实现65536点fft的装置和方法 | |
Bansal et al. | Memory-efficient Radix-2 FFT processor using CORDIC algorithm | |
US8385340B1 (en) | Pipeline of a packet processor programmed to concurrently perform operations | |
Malashri et al. | Low power and memory efficient FFT architecture using modified CORDIC algorithm | |
Gunasekaran et al. | FPGA Based Implementation of Brent Kung Parallel Prefix Adder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |