APP下载

基于DSP-TMS320F2812自动控制系统的分裂基FFT算法的实现

2011-04-10随顺科孙长江周选选

制造业自动化 2011年11期
关键词:序号运算芯片

随顺科,孙长江,周选选

SUI Shun-ke,SUN Chang-jiang,ZHOU Xuan-xuan

(中国矿业大学 信息与电气工程学院,徐州 221116)

0 引言

离散傅里叶变换(Discrete Fourier Tran- sform,DFT)是把时域信号变换成频域信号进行处理的一种方式,它具有原理简单、实现方便、功能多、精度高等许多优点。而快速傅里叶变换(Fast Fourier Transform,FFT)是离散傅里叶变换的一种快速算法,FFT可以明显的降低运算量,大大的提高DFT的运算速度。根据FFT算法中按时间抽选和按频率抽选的推导中可以看出,每级抽选时,每一组的偶序号部分都不乘旋转因子,乘旋转因子都出现在奇序号上,加之考虑到基-4FFT算法比基-2FFT算法更有效,1984年法国的Duhamel和Holtmann提出了“分裂基”FFT算法(split-radix FFT或SRFFT)。分裂基算法能有效减少运算量,节省运算时间,节省存储单元,提高运算效率[1]。

本文将基于分裂基算法的原理和实现方法,采用数字信号处理芯片DSP TMS320F- 2812来实现分裂基FFT运算,能快速实现数据的采集,进行实时分析处理。

1 分裂基算法

分裂基算法的基本思路是对偶序号输出使用基-2算法,对奇序号输出使用基-4算法。在N=2L各种算法中,分裂基算法所需的乘法数和加法次数为最小,并接近理论上的最小值。例如对于长度为N=2L的实序列x(n),其DFT所需的理论上的最小实数乘法次数仅是LR=2N-L2-L-2,并且分裂基算法还具有和基-2 FFT算法同样好的同址运算结构,因此被认为是一种实用的高效算法。

分裂基FFT算法要求序列次数N为2的整幂次,即N=2L(L为正整数),有

这里,X1(k)为偶序号X(n)组成N/2点DFT,X2(k)和X3(k)为奇序号的x(n)组成N/4点DFT[1]。

由上综合其计算公式可得如下:

1)对偶数序号的输出项采用基2算法,即

2)对于奇序号项采用基4算法,即

图1 分裂基算法的示意图

从图1中可以看出一个N点序列x(n)的N点DFT可以分解成1个N/2点DFT和2个N/4点DFT。这种分解既有基-2,也有基-4部分,令基-2部分x(2r)的奇数点部分又进一步按基-4抽取分解,而基4部分的偶数点部分又进一步按基-2抽取分解。以此类推的进行下去,直至分解为4点或2点DFT,完成序列x(n)的N点DFT的快速运算[4]。

现以N=8为例,推导其算法,信号流程图如图2所示。

综上可得:

图2 8点分裂基算法信号流图

2 TMS320F2812的结构与特征

TMS320F2812是TI(Texas Instruments)公司推出的性价比极高的、最佳测控应用的32位定点DSP芯片,它不但具有数字信号处理能力,又具有强大的事件管理能力和嵌入式控制能力,是目前在国内外使用较为广泛的DSP芯片之一。

TMS320F2812具有以下特点:哈佛总线结构,8级流水线操作,采用高性能的静态CMOS技术,时钟频率可达150 MHz,能在一个周期内完成16x16、32x32的乘法和累加运算,快速的指令周期,支持JTAG边界扫描。另外由于他采用了内部1.8V,外部3.3V供电,因而功耗很低等特点。除此之外TMS320F2812还具有丰富的片上资源[2]:

1)18k×16位的SARAM,分别为1k×16位的M0和M1,4K×16位的L0和L1,及8K×16位的H0。

2)4 k×16位的Boot ROM (3FF000H-3FFFC0H)。包含了Boot loader引导程序,当芯片工作于微计算机模式,ROM内的Boot loader引导程序在加电后自动运行,将外部载体(如ROM,串口)内的用户代码加载到片外程序存储器或片内SRAM的任何空间。

3)内部锁相环电路(PLL)。在保持工作频率相同的情况下,能够使用低速的晶振或晶体,最高的锁相倍数可达到数倍。

4)片上还包括SPI、SCIs、eCAN、McBSP,以及12位的ADC等。

其功能结构图如图3所示。

图3 TMS320F2812功能结构图

3 分裂基算法在F2812上的实现

3.1 系统硬件平台设计

系统实现的硬件平台框图如图4所示,它主要有TMS320F2812处理芯片、信号的采集调理电路、数据程序的存储单元,以及按键显示等电路构成。

图4 系统硬件平台结构图

本系统采用DSP TMS320F2812作为核心,相比于其它处理芯片而言,其具有更大的运算能力,而且该型号的DSP在某一时刻,流水线上可以运行8条指令,这样大大提高了程序的执行效率。在采集调理电路中,主要是对信号进行相应的信号转换和放大处理,使得信号在0-3.3V内,以满足DSP的输入要求。同时在ADC中可以选择外接A/D转换器,也可以使用芯片自带的12位ADC,本系统采用了自带的12位ADC。在芯片内部虽然有数据和程序存储器,但可根据数据处理量的大小进行外扩一部分存储器。通过人机接口部分还可以控制和查看程序的运行和输出。

3.2 软件程序的设计

这里采用的是基于频域抽取(decimation in frequency)的原位(in place)分裂基算法[1,3]。程序共分3个部分:

1)进行L型蝶形运算,由一个3层循环嵌套构成。最外层的循环对于N点FFT(N=2L)控制循环M回,只需在初始时给定N的值,就可以进行相应各点的FFT。中间的循环要进行AK次,这里的AK等于N/2K+1次(0≤k≤L-1),它表示在第k回循环分成了nK(nK=(1/3)[2k+(-1)K+1])组中每一组L型蝶形运算的数目,同在一组具有相同的结构及旋转因子分布。里层的循环用来计算相邻的蝶型运算和他们的旋转因子。

2)单独计算基2蝶型运算。

3)进行整序运算,在FFT中由于不断地对输入序列进行奇偶抽取,导致序列最后按称之为倒序的规律排列,所以最后要重新排序。

以其计算蝶形因子的部分程序为例如:

3.3 调试仿真结果分析

当输入f=100Hz的正弦信号,采样点N=256时,并调整采样频率使得256个点采样时间为10ms,即一个输入信号的周期,即截取信号的长度T0=10ms(信号的周期)。我们在CCS仿真环境下观察采样后的正弦序列,如图5所示,其中横坐标为采样点,纵坐标为输入信号的幅值。对该正弦信号分别进行基一2FFT计算和分裂基FFT计算,可分别得到其频谱如图6和图7所示,其中横坐标为K,纵坐标为x(k)。经比较可知两种方法得到的结果基本相同。

图5 输入f=100Hz的正弦序列,采样点数=256

图6 由基2算法得到的频谱图

图7 由分裂基算法得到的频谱图

4 结束语

在工业控制的数据采集后的处理过程中,如何提高数据的精度和缩短处理所耗费的时间,对工业控制系统的改进有着至关重要的作用。通过以上实验可以看出,分裂基FFT分析方法能快速有效地实时检测出数据参数,保证了检测精度的情况下,同时相对于其它算法而言有着更快的速度,从而提高了系统的效率。

[1] 胡广书.数字信号处理——理论、算法与实现[M].北京:清华大学出版社,2003.

[2] 孙丽明.TMS320F2812原理及其C语言程序[M].北京:清华大学出版社,2008.

[3] 王裕,黄洪全.分裂基FFT在电力系统谐波检测中的应用[J].自动化技术与应用,2010,29(4):73-76.

[4] 刘欢,谢志远.分裂基FFT算法的讨论与改进[J].通信技术,2008,3(41):124-128.

猜你喜欢

序号运算芯片
芯片会议
重视运算与推理,解决数列求和题
人体微芯片
关于射频前端芯片研发与管理模式的思考
有趣的运算
“整式的乘法与因式分解”知识归纳
技术指标选股
技术指标选股
技术指标选股
技术指标选股