论文部分内容阅读
[摘 要]大点数快速傅里叶变换(FFT)运算在通信信号处理中有广泛应用。采用二维处理方式,将大点数的FFT拆分成两个小点数的FFT。在C6455高速DSP芯片上应用此算法实现了最高1M点的复FFT运算。应用此算法执行1M点复FFT运算只需要76ms。工程应用实际表明,该实现方法具有运行速度快、调试方便及易于实现的优点。
[关键词]DSP FFT 增强型直接存储器存取
中图分类号:TN144 文献标识码:TN 文章编号:1009―914X(2013)25―0363―01
引言
快速傅里叶变换(FFT)作为数字信号处理必不可少的手段之一,已广泛应用于雷达、通信信号侦察等诸多领域[1]。而随着信号处理技术的不断发展,对FFT点数的需求也越来越大。在实际的工程实现中,信号处理的复杂运算一般采用数字信号处理器(DSP)来实现,而由于DSP片内存储器的大小及其函数库的限制,直接调用函数库所能实现的FFT点数一般在64K以下。如果要在DSP上实现较大点数FFT,需要在算法、存储器使用及运行速度等方面进行全面考虑。
1.算法原理
设x(n)为N点有限长序列,其离散傅里叶变换(DFT)[2]为:
(1)
式中 称为旋转因子;k= 0,1,...,N-1。假设N为一复合数,N=R×C,则可以将n,k用下面的公式表示:
(2)
将n,k代入(1)式,得到:
(3)
由上式(3)可以看出,方括号中的项是C点的FFT变换,一共R个。最外层的项是R点的FFT变换,一共C个。这样就将一维FFT转换为二维FFT运算。其数据处理过程为:
a)数据重排,将N点数据排成C×R点矩阵格式。
b)对表中的数据按列读出,对每一列数据分别进行一维的C点的FFT运算,共R个FFT,运算结果再分别保存到各列中。
c)对步骤b)的输出结果按行读出,乘以旋转因子 后,再分别进行M点的FFT运算,即C个R点的FFT运算,运算结果保存到各行中。
d)最后按列输出结果。
2.C6455的主要特点[3]
C6455作为TI C6000系列高性能定点数字信号处理器,尽管已推出多年,目前仍是速度最快的单核定点DSP,已广泛应用于通信、雷达、医疗等诸多领域。
C6455的主要特点如下:
a)最高主频达到了1.2GHz,每秒可并行执行8条指令,峰值速度达到了9600MIPS。
b)使用了C64+的内核,L1P为32K字节,L1D为32K字节,L2为2M字节。
c)提供了丰富的外围总线:一个外部存储器接口(64bit EMIFA),一个千兆网,一个PCI总线,一个DDR2-533控制器,一个I2C总线,两个McBSP,一个HPI总线及4个1X高速串行总线(SRIO)。
d)具有64个独立通道的EDMA控制器,可以在CPU运行算法的同时搬移数据。
3.算法实现
为了使算法执行速度达到最优,需要综合考虑DSP存储器资源分配、数据搬移及核心算法实现等问题。
3.1 存储资源的分配
以1M点复FFT为例,如果使用二维1K点复FFT来实现,使用的存储器主要有:1M点32bit输入IQ数据,即8M字节;1M点32bit输出IQ数据,也是8M字节;中间旋转因子8M字节;1K点FFT输入、输出、旋转因子共24K字节。由于C6455的片内L2存储空间仅为2M字节,其中1M点输入输出数据及旋转因子共24M字节必须放在片外DDR2中存储,而进行小点FFT的24K存储器放在片内L2中。
3.2 EDMA数据搬移[4]
由于本算法存在大量矩阵转置操作,并且需要在DDR2和DSP片内L2之间进行数据传输,如果使用CUP进行数据搬移操作,将耗费大量时间,所以需要使用EDMA进行数据的搬移操作以减少CPU的运行时间,并且在EDMA搬数的同时CPU可以解放出来进行FFT操作和旋转因子的乘操作。
3.3 核心算法实现[5]
CPU进行的运算主要是小点数的FFT操作和旋转因子的复乘操作。FFT操作可使用DSP的FFT库函数,而旋转因子的复乘使用手写汇编来实现,这两个函数都使用编译器进行软件流水优化,以达到最快的运行速度。
4.结束语
通过将一维大点数FFT分解为二维小点数FFT的算法,使得大点数FFT在C6455上成功实现。工程实践表明,通过合理的存储器资源分配、EDMA数据搬移及软件流水算法优化使得在C6455上运行1M点FFT只需要76ms。
参考文献
[1] 皇甫堪,陈建文,楼生强. 现代数字信号处理. 北京:电子工业出版社,2003.
[2] 郑君里,应启珩,杨为理.信号与系统[M].北京:高等教育出版社,2000:88-89.
[3] TMS320C6455 Fixed-Point Digital Signal Processor[Z].Texas Instruments Incorporated,2007.
[4] TMS320C645x DSP Enhanced DMA(EDMA3)Controller User's Guide[Z]Texas Instruments Incorporated,2007.
[5] TMS320C6000 Programmer’s Guide[Z]. Texas Instruments Incorporated,2002.
[关键词]DSP FFT 增强型直接存储器存取
中图分类号:TN144 文献标识码:TN 文章编号:1009―914X(2013)25―0363―01
引言
快速傅里叶变换(FFT)作为数字信号处理必不可少的手段之一,已广泛应用于雷达、通信信号侦察等诸多领域[1]。而随着信号处理技术的不断发展,对FFT点数的需求也越来越大。在实际的工程实现中,信号处理的复杂运算一般采用数字信号处理器(DSP)来实现,而由于DSP片内存储器的大小及其函数库的限制,直接调用函数库所能实现的FFT点数一般在64K以下。如果要在DSP上实现较大点数FFT,需要在算法、存储器使用及运行速度等方面进行全面考虑。
1.算法原理
设x(n)为N点有限长序列,其离散傅里叶变换(DFT)[2]为:
(1)
式中 称为旋转因子;k= 0,1,...,N-1。假设N为一复合数,N=R×C,则可以将n,k用下面的公式表示:
(2)
将n,k代入(1)式,得到:
(3)
由上式(3)可以看出,方括号中的项是C点的FFT变换,一共R个。最外层的项是R点的FFT变换,一共C个。这样就将一维FFT转换为二维FFT运算。其数据处理过程为:
a)数据重排,将N点数据排成C×R点矩阵格式。
b)对表中的数据按列读出,对每一列数据分别进行一维的C点的FFT运算,共R个FFT,运算结果再分别保存到各列中。
c)对步骤b)的输出结果按行读出,乘以旋转因子 后,再分别进行M点的FFT运算,即C个R点的FFT运算,运算结果保存到各行中。
d)最后按列输出结果。
2.C6455的主要特点[3]
C6455作为TI C6000系列高性能定点数字信号处理器,尽管已推出多年,目前仍是速度最快的单核定点DSP,已广泛应用于通信、雷达、医疗等诸多领域。
C6455的主要特点如下:
a)最高主频达到了1.2GHz,每秒可并行执行8条指令,峰值速度达到了9600MIPS。
b)使用了C64+的内核,L1P为32K字节,L1D为32K字节,L2为2M字节。
c)提供了丰富的外围总线:一个外部存储器接口(64bit EMIFA),一个千兆网,一个PCI总线,一个DDR2-533控制器,一个I2C总线,两个McBSP,一个HPI总线及4个1X高速串行总线(SRIO)。
d)具有64个独立通道的EDMA控制器,可以在CPU运行算法的同时搬移数据。
3.算法实现
为了使算法执行速度达到最优,需要综合考虑DSP存储器资源分配、数据搬移及核心算法实现等问题。
3.1 存储资源的分配
以1M点复FFT为例,如果使用二维1K点复FFT来实现,使用的存储器主要有:1M点32bit输入IQ数据,即8M字节;1M点32bit输出IQ数据,也是8M字节;中间旋转因子8M字节;1K点FFT输入、输出、旋转因子共24K字节。由于C6455的片内L2存储空间仅为2M字节,其中1M点输入输出数据及旋转因子共24M字节必须放在片外DDR2中存储,而进行小点FFT的24K存储器放在片内L2中。
3.2 EDMA数据搬移[4]
由于本算法存在大量矩阵转置操作,并且需要在DDR2和DSP片内L2之间进行数据传输,如果使用CUP进行数据搬移操作,将耗费大量时间,所以需要使用EDMA进行数据的搬移操作以减少CPU的运行时间,并且在EDMA搬数的同时CPU可以解放出来进行FFT操作和旋转因子的乘操作。
3.3 核心算法实现[5]
CPU进行的运算主要是小点数的FFT操作和旋转因子的复乘操作。FFT操作可使用DSP的FFT库函数,而旋转因子的复乘使用手写汇编来实现,这两个函数都使用编译器进行软件流水优化,以达到最快的运行速度。
4.结束语
通过将一维大点数FFT分解为二维小点数FFT的算法,使得大点数FFT在C6455上成功实现。工程实践表明,通过合理的存储器资源分配、EDMA数据搬移及软件流水算法优化使得在C6455上运行1M点FFT只需要76ms。
参考文献
[1] 皇甫堪,陈建文,楼生强. 现代数字信号处理. 北京:电子工业出版社,2003.
[2] 郑君里,应启珩,杨为理.信号与系统[M].北京:高等教育出版社,2000:88-89.
[3] TMS320C6455 Fixed-Point Digital Signal Processor[Z].Texas Instruments Incorporated,2007.
[4] TMS320C645x DSP Enhanced DMA(EDMA3)Controller User's Guide[Z]Texas Instruments Incorporated,2007.
[5] TMS320C6000 Programmer’s Guide[Z]. Texas Instruments Incorporated,2002.