kWN(5)旋转因子的确定:由8点FFT的三次迭代运算可以看出的变化。在第一级迭代中,只有一种0W8类型的蝶形运算系数,即,参加蝶形运算的两个数据点间隔为l;在第二级迭代中,有两种类02WW型的蝶形运算系数,分别是8和8,参加蝶形运算的两个数据点间隔为2;在第三级迭代中,有0123WWWW8888四种类型的蝶形运算系数,分别是,,,,参加蝶形运算的两个数据点间隔4。可见,
每次迭代的蝶形类型比前一迭代增加一倍,间隔也增大一倍。最后一次迭代的蝶形类型最多,参加蝶形运算的两个数据点的间隔也最大,为N/2。
4 FFT算法的MATLAB仿真及DSP的实现
4.1 MATLAB仿真
4.1.1 相关的MATLAB功能函数简介
(1)图像显示函数:plot,x轴和y轴均为线性刻度。 (2) 图形生成函数:figure,生成图形窗口。
(3)FFT函数:fft(S),其中S为加窗后的一个帧信号。因为实时信号FFT的频域样值关于中
点(即采样频率的1/2)对称,所以fft(S)给出的矩阵数据只有前半部分有用。
(4)复数取共轭函数:conj(Z),其中Z是fft的结果。该函数在求X(m,k)(是个复数)的幅度
时是有用的。
(5) randn:产生正态分布的随机数或矩阵的函数[5-6]。 4.2.2 用FFT变换进行频谱分析在MATLAB软件上的验证
为了验证FFT算法的正确性,在这里设定一个由f1=50Hz,f2=200Hz正弦波组成的信号
y?sin(2?f1t)?sin(2?f2t),给信号加上一个高斯白噪声。以FS=1000Hz的采样频率进行采样,进行N=2048点的FFT分析。在MATLAB软件上进行编程仿真,我们可以得到信号的时域波形(如图3所示)和谱分析曲线(如图4所示)。
图3 时域波形
图4 FFT谱分析结果
由图4可以看出,只有f1和f2是有用的信号,其余的是由我们所加上的高斯白噪声干扰所产生的误差。由此可以得出,FFT算法是正确的。 4.2 基于DSP实现FFT变换频谱分析 4.2.1DSP芯片和编程工具CCS 2.0的简介
(1)TMS320C5402简介
TMS320C5402是TI公司为了实现低功耗、高性能而专门设计的定点DSP芯片。它有如下的特
点:具有运算速度快,指令周期可以达10ns以内;优化的CPU结构,内部有1个40位的算术逻辑单元,2个40位的累加器,2个40位加法器,1个17×17的乘法器和40位的桶形移位器。有4条内部总线和2个地址产生器。先进的DSP结构可以高效快速实现数字信号处理中的各种算法的运算。它不仅具有标准的串行口和时分复用(TDM)串行口,还提供了自动缓冲串行DBSP和与外部处理器通信的HPI的主机接口。HPI可以与外部标准的微处理器直接接口。
(2)CCS2.0简介
DSP编程工具CCS是继“一体化的DSP解决方案\后,TI公司为了巩固其在DSP业界的地位而在开发工具方面的一次重拳出击。CCS集成了开发环境,使得DSP代码开发过程从编程、编译到调试代码的性能测试都集成在一个环境下进行,而且各项功能都有了一定程度的提升,简化了开发过程,该工具主要集成了以下几个软件工具:
(1)DSP代码产生工具(包括C编译器、汇编优化器、汇编器和连接器)。CCS不仅支持高级语言C编程、汇编语言编程,还支持高级语言C汇编语言混合模式编程,降低了代码开发难度;
(2)软件模拟器(SIMULATOR)。模拟整个硬件的开发过程,使得系统的实现更加可靠; (3)实时基础软件。DSP/BIOS和主机目标机之间的实时数据交换软件RTDX,它们所提供的实时分析功能为目标系统提供了一个实时窗口,不仅可以直接实时显示原始数据,还可以对原始数据进行处理。在传统的主机调试器必须通过在应用程序中插入断点,中断应用程序运行才能与目标系统交换数据,这种方法不仅麻烦,而且所得到的数据只是应用程序在高速运行中的一个侧面,为故障诊断和系统性能评测等带来了许多不便。利用RTDX技术,就可以在不中断应用程序的前提下完成主机与目标机之间的实时数据交换,另外RTDX完成主机与目标机数据交换所使用的是DSP内部的仿真逻辑和JTAG接口,它不占用DSP系统的总线、串口等I/O资源,所以可以在应用程序背景下运行对DSP系统的影响很小[7-8]。 4.2.2利用DSP中的FFT函数进行频谱分析
启动CCS 2.0,用Project/Open打开 “ExpFFTAD50.pjt”工程文件;双击“expFFTAD50.pjt”及“Source”可查看各源程序;加载“exp FFTAD50.out”;在主程序中,K++设置断点;单击“Run”运行程序,程序将运行至断点处停止,如图5所示。
图5 设置断点
用View/Graph/Time/Frequency打开一个图形观察窗口;设置该图形窗口变量及参数,如图6所示。
采用双踪观察在启动地址分别为0x3000H和0x3080H,长度为128的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的语音信号和对该信号进行FFT变换的结果。
图6 参数设置
单击“Animate”(或按F10)运行程序;调整观察窗口并观察输入信号波形及其FFT变换结果;单击“Halt”暂停程序运行,可以得到语音信号的时域波形和对该信号进行FFT变换谱分析的静态图像,如图7、图8所示。
图7 频谱分析结果(一)
图8 频谱分析结果(二)
图7和图8分别为输入语音信号频率大小不同情况下的结果;其中中上面的波形为语音信号的时域波形,下面的波形为对该信号进行FFT变换后的谱分析结果。
由此我们可以得出:数字信号处理(DSP)能够对信号进行实时分析,以便我们对各种信息能够更及时的了解,这也是它的优越性所在,使得他在我们的生活生产中有着更广泛的应用。