基于DSP的FFT设计_第1页
基于DSP的FFT设计_第2页
基于DSP的FFT设计_第3页
基于DSP的FFT设计_第4页
基于DSP的FFT设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、自本1004班 邓静 28号 基于DSP的FFT滤波器设计 1 引言随着数字技术与计算机技术的发展,数字信号处理(DSP)技术已深入到各个学科领域。近些年来,数字信号处理技术同数字计算器、大规模集成电路等,有了突飞猛进的发展。在数字信号处理中,离散傅里叶变换(DiscreteTime Fourier Transform,DFT)是常用的变换方法,它在数字信号处理系统中扮演着重要角色。由离散傅里叶变换发现频率离散化,可以直接用来分析信号的频谱、计数滤波器的频率响应,以及实现信号通过线系统的卷积运算等,因而在信号的频谱分析方面有很大的作用。由于DFT的运算量太大,即使是采用计算机也很难对问题进行实

2、时处理,所以经过很多学者的不懈努力,便出现了通用的快速傅里叶变换(FFT)。快速傅里叶变换(Fast Fourier Transform,FFT)并不是与离散傅里叶变换不同的另一种变换,而是为了减少DFT计算次数的一种快速有效的算法。对FFT算法及其实现方式的研究是很有意义的。目前,FFT己广泛应用在频谱分析、匹配滤波、数字通信、图像处理、语音识别、雷达处理、遥感遥测、地质勘探和无线保密通讯等众多领域。在不同应用场合,需要不同性能要求的FFT处理器。在很多应用领域都要求FFT处理器具有高速度、高精度、大容量和实时处理的性能。因此,如何更快速、更灵活地实现FFT变得越来越重要。数字信号处理器(D

3、SP)是一种可编程的高性能处理器。它不仅是一种适用于数字信号处理,而且在图像处理、语音处理、通信等领域得到广泛的应用。DSP处理器中集成有高速的乘法硬件,能快速的进行大量的乘法加法运算1。本文主要介绍基于DSP用FFT变换实现对信号的频谱分析。研究离散傅里叶变换以及快速傅里叶变换的原理及算法。快速傅里叶变换和离散傅里叶变换的基本理论是一样的,它根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换进行了改进。在计算机系统或者数字系统中广泛应用者快速傅里叶变换,这是一个巨大的进步。本文主要解决的问题就是如何对信号的频谱进行研究,使FFT更广泛的应用于科学研究。2 快速傅里叶变换(FFT)2.

4、1 FFT算法基本原理 快速傅里叶变换(FFT)是离散傅里叶变换的快速算法,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的,它对离散傅里叶变换并没有新的发现。有限长序列x(n)及其频域表示X(k)可由以下离散傅立叶变换得出 (1) (2)其中。式(1)称为离散傅立叶正变换,式(2)称为离散傅立叶逆变换,x(n)与X(k)构成了离散傅立叶变换对。根据上述公式,计算一个X(k),需要N次复数乘法和N-1次复数加法,而计算全部X(k)( ),共需要次复数乘法和N(N-1)次复数加法。实现一次复数乘法需要四次实数乘法和两次实数加法,一次复数加法需要两次实数加法,因此

5、直接计算全部X(k)共需要4次实数乘法和2N(2N-1)次实数加法。当N较大时,对实时信号处理来说,对处理器计算速度有十分苛刻的要求,于是如何减少计算离散傅里叶变换运算量的问题变得至关重要。为减少运算量,提高运算速度,就必须改进算法。计算DFT过程中需要完成的运算的系数里,存在相当多的对称性。通过研究这种对称性,可以简化计算过程中的运算,从而减少计算DFT所需的时间。如前所述,N点的DFT的复乘次数等于。显然,把N点的DFT分解为几个较短的DFT,可是乘法的次数大大减少。另外,旋转因子具有明显的周期性和对称性,其周期为:其对称性表现为: 或FFT算法就是不断地把长序列的DFT分解成几个短序列的

6、DFT,并利用的周期性和对称性来减少DFT的运算次数。具有以下固有特性:(1)的周期性:(2)的对称性: (3)的可约性:另外,。利用的上述特性,将x(n)或X(k)序列按一定规律分解成短序列进行运算,这样可以避免大量的重复运算,提高计算DFT的运算速度。算法形式有很多种,但基本上可以分为两大类,即按时间抽取(Decimation In Time,DIT)FFT算法和按频率抽取(Decimation In Frequency,DIF)FFT算法。2.2 基-2FFT算法 如果序列x(n)的长度,其中M是整数(如果不满足此条件,可以人为地增补零值点来达到),在时域上按奇偶抽取分解成短序列的DFT

7、,使最小DFT运算单元为2点。通常将FFT运算中最小DFT运算单元称为基(radix),因而把这种算法称为基-2时间抽取FFT(DIT-FFT)算法4。将x(n)按n为奇偶分解成两个子序列,当n为偶数时,令n=2r;当n为奇数时,令n=2r+l;可得到 (3)则其DFT可写成 (4)和均分别是N/2点序列和的DFT,而且r与k的取值满足0,1,N/2-1。而X(k)是一个N点的DFT,因此式(4)只计算了X(k)的前N/2的值。由DFT和的性质可得到X(k)的后N/2的值为: (5)式(4)和式(5)表明,只要计算出两个N/2点的DFT 和,经过线性组合,即可求出全部N点的X(k)。由于,仍为

8、偶数,因而这样的分解可以继续进行下去,直到最后的单元只需要做2点DFT为止。若Xm(p)和Xm(q)为输入数据,和为输出数据,为旋转因子,则对于基-2DIT-FFT算法,蝶形运算的基本公式为 其图形表示如图1所示,称Xm(P)为上结点,Xm(q)为下结点。图1 时间抽取蝶形运算单元对于一个8点的FFT,根据上述算法可以得到一个完整的N=8的基-2DIT-FFT的运算流图,如图2所示。图2 N=8 DIT-FFT运算流图根据上述算法原理及运算流图,可以得出基-2DIT-FFT的基本特点,特点如下。(1)级数分解:对于。共分了M级,每级包含N/2个蝶形运算单元,总共所需蝶形运算个数为。(2)运算量

9、估计:每个蝶形运算需要一次复数乘法和两次复数加(减)法,N点FFT共需要次复数乘法,次复数加(减)法。实际上有些蝶形运算不需要做复乘。(3)原位运算:当数据输入到存储器以后,每一组蝶形运算后,结果仍然存放在这同一组存储器中的同一位置,不需要另辟存储单元,直到最后输出。(4)位码倒序:由图2可以看到,FFT输出的X(k)的次序正好是顺序排列的,即X(0),X(1),,X(7),而输入X(n)是按x(0),X(4),,X(7)的倒序存入存储单元,即为倒序输入,正序输出。这种顺序看起来相当杂乱,然而它是有规律的,即位码倒序规则。(5)旋转因子的确定:由8点FFT的三次迭代运算可以看出的变化。在第一级

10、迭代中,只有一种类型的蝶形运算系数,即,参加蝶形运算的两个数据点间隔为l;在第二级迭代中,有两种类型的蝶形运算系数,分别是和,参加蝶形运算的两个数据点间隔为2;在第三级迭代中,有四种类型的蝶形运算系数,分别是,参加蝶形运算的两个数据点间隔4。可见,每次迭代的蝶形类型比前一迭代增加一倍,间隔也增大一倍。最后一次迭代的蝶形类型最多,参加蝶形运算的两个数据点的间隔也最大,为N/2。3 FFT算法的DSP的实现3.1 基于DSP实现FFT变换频谱分析3.1.1DSP芯片和编程工具CCS 2.0的简介(1)TMS320C5402简介TMS320C5402是TI公司为了实现低功耗、高性能而专门设计的定点D

11、SP芯片。它有如下的特点:具有运算速度快,指令周期可以达10ns以内;优化的CPU结构,内部有1个40位的算术逻辑单元,2个40位的累加器,2个40位加法器,1个1717的乘法器和40位的桶形移位器。有4条内部总线和2个地址产生器。先进的DSP结构可以高效快速实现数字信号处理中的各种算法的运算。它不仅具有标准的串行口和时分复用(TDM)串行口,还提供了自动缓冲串行DBSP和与外部处理器通信的HPI的主机接口。HPI可以与外部标准的微处理器直接接口。(2)CCS2.0简介DSP编程工具CCS是继“一体化的DSP解决方案后,TI公司为了巩固其在DSP业界的地位而在开发工具方面的一次重拳出击。CCS

12、集成了开发环境,使得DSP代码开发过程从编程、编译到调试代码的性能测试都集成在一个环境下进行,而且各项功能都有了一定程度的提升,简化了开发过程,该工具主要集成了以下几个软件工具:(1)DSP代码产生工具(包括C编译器、汇编优化器、汇编器和连接器)。CCS不仅支持高级语言C编程、汇编语言编程,还支持高级语言C汇编语言混合模式编程,降低了代码开发难度;(2)软件模拟器(SIMULATOR)。模拟整个硬件的开发过程,使得系统的实现更加可靠;(3)实时基础软件。DSP/BIOS和主机目标机之间的实时数据交换软件RTDX,它们所提供的实时分析功能为目标系统提供了一个实时窗口,不仅可以直接实时显示原始数据

13、,还可以对原始数据进行处理。在传统的主机调试器必须通过在应用程序中插入断点,中断应用程序运行才能与目标系统交换数据,这种方法不仅麻烦,而且所得到的数据只是应用程序在高速运行中的一个侧面,为故障诊断和系统性能评测等带来了许多不便。利用RTDX技术,就可以在不中断应用程序的前提下完成主机与目标机之间的实时数据交换,另外RTDX完成主机与目标机数据交换所使用的是DSP内部的仿真逻辑和JTAG接口,它不占用DSP系统的总线、串口等I/O资源,所以可以在应用程序背景下运行对DSP系统的影响很小7-8。3.2.2利用DSP中的FFT函数进行频谱分析(1)启动CCS,在CCS中建立一个C源文件和一个命令文件

14、,并将这两个文件添加到工程,再编译并装载程序:阅读Dsp原理及应用中fft 用dsp实现的有关程序。双击,启动CCS的仿真平台的配着选项。选择C5502 Simulator。(3)启动ccs2后建立工程文件FFT.pjt(4)建立源文件FFT.c与链接文件FFT.cmd(5)将这两个文件加到FFT.pjt这个工程中。(6)创建out文件(7)加载out文件(8)加载数据(9)改变参数用View/Graph/Time/Frequency打开一个图形观察窗口;设置该图形窗口变量及参数,采用双踪观察在启动地址分别为0x3000H和0x3080H,长度为128的单元中数值的变化,数值类型为16位有符号

15、整型变量,这两段存储单元中分别存放的是经A/D转换后的语音信号和对该信号进行FFT变换的结果。单击“Animate”(或按F10)运行程序;调整观察窗口并观察输入信号波形及其FFT变换结果;单击“Halt”暂停程序运行,可以得到语音信号的时域波形和对该信号进行FFT变换谱分析的静态图像频谱分析结果(1)频谱分析结果(2)两图分别为输入语音信号频率大小不同情况下的结果;其中中上面的波形为语音信号的时域波形,下面的波形为对该信号进行FFT变换后的谱分析结果。由此我们可以得出:数字信号处理(DSP)能够对信号进行实时分析,以便我们对各种信息能够更及时的了解,这也是它的优越性所在,使得他在我们的生活生

16、产中有着更广泛的应用。结论本论文学习和研究了离散傅里叶变换(DFT)和快速傅里叶变换(FFT)的算法,把重点放在了时间抽取法基-2FFT算法上。以及在DSP基础上用FFT变换对信号进行频谱分析。明确了FFT在DSP芯片上的实现的关键。基于DSP的快速傅里叶变换频谱分析的研究使FFT能够有效的在DSP芯片上实现,有助于我们能够更及时的了解信息,对我们的生活生产以及科技研究有很大的帮助。自从快速傅里叶变换(FFT)出现以后,频谱分析技术便很快的发展起来,而且越来越贴近我们的生活生产,如医疗器械,无线电通信等等。但是我们对频谱分析技术的研究并未达到最高的层次,未来发展具有很广阔的空间。参考文献1 赵

17、红怡.DSP 技术与应用实例M .电子工业出版社,2008.2 汪安民.TMS320C54xx DSP 实用技术M .清华大学出版社,2007.3 戴明帖,周健江.TMS320C54x DSP 结构原理及应用M.北京航空航天大学出版社,2007.4 清源科技.TMS320C54x DSP 应用程序设计教程M .机械工业出版社,2004.5 潘松,黄继业.EDA 技术实用教程M.科学出版社,2002.6 万山明,TMS320F281xDSP原理与应用实例,北京航空航天大学出版社,2007.7.7 戴明桢等编著.TMS320C54X DSP 结构原理及应用. 北京:航空航天大学出版社,第2版,20

18、07. 8 彭启琮编著.DSP技术的发展与应用.北京:高等教育出版社,2002.9 乔瑞平,崔涛,张芳娟.TMS320C54X DSP原理及应用M. 西安:西安电子科技大学出版社,2010 .10 刘益成.DSP应用程序设计与开发M.北京:北京航空航天大学出版社,2002. 附录Cmd源文件代码:-f 0-w-stack 500-sysstack 500-l rts55.libMEMORY DARAM: o=0x100, l=0x7f00 VECT:o=0x8000, l=0x100 DARAM2:o=0x8100,l=0x7f00 SARAM: o=0x10000,l=0x30000 SDR

19、AM:o=0x40000,l=0x3e0000 SECTIONS .text: DARAM .vectors: VECT .trcinit:DARAM .gblinit:DARAM .frt:DARAM .cinit:DARAM .pinit:DARAM .sysinit:DARAM2 .far:DARAM2 .const:DARAM2 .switch:DARAM2 .sysmem:DARAM2 .cio:DARAM2 .MEM$obj:DARAM2 .sysheap:DARAM2 .sysstack:DARAM2 .stack:DARAM2 .input:DARAM2 .fftcode:DA

20、RAM2 C文件源码:#include math.h#define sample_1 256#define signal_1_f 60#define signal_2_f 200#define signal_sample_f 512#define pi 3.1415926int inputsample_1;float fwaversample_1,fwaveisample_1,wsample_1;float sin_tabsample_1;float cos_tabsample_1;void init_fft_tab();void input_data();void fft(float dat

21、arsample_1,float dataisample_1);void main() int i; init_fft_tab(); input_data(); for (i=0;isample_1;i+) fwaveri=inputi; fwaveii=0.0f; wi=0.0f;fft(fwaver,fwavei);while(1); void init_fft_tab() float wt1; float wt2; int i; for (i=0;isample_1;i+) wt1=2*pi*i*signal_1_f; wt1=wt1/signal_sample_f; wt2=2*pi*i*signal_2_f; wt2=wt2/signal_sample_f; inputi=(cos(wt1)+cos(wt2)/2*32768; void input_data() int i;for(i=0;isample_1;i+) sin_tabi=sin(2*pi*i/sample_1); cos_tabi=cos(2*pi*i/sample_1); void fft(float datarsample_1,f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论