1、江苏大学dsp课程设计 JIANGSU UNIVERSITY 本 科 生 课 程 设 计 DSP课程设计实验报告 基于ICETEK5509实验箱和基2FFT算法的频谱分析学院名称: 计算机科学与通信工程学院 专业班级: 通信工程 学生姓名: 指导教师姓名: 指导教师职称: 年 月1、设计目的与意义 1、本课程设计与理论课、实验课一起构成DSP芯片原理与应用完整课程 体系; 2、针对理论课、实验课中无时间和不方便提及内容和需强调重点进行补充与 完善; 3、以原理算法的实现与验证体会DSP技术的系统性,并加深基本原理的体会。2、设计要求 1、系统设计要求: .设计一个以ICETEK5509为硬件主
2、体,FFT为核心算法的频谱分析系统 方案; .用C语言编写系统软件的核心部分,熟悉CCS调试环境的使用方法, 在CCS IDE中仿真实现方案功能; .在实验箱上由硬件实现频谱分析。 2、具体要求: .FFT算法C语言实现与验证 1) 参考教材节FFT核心算法在CCS软件仿真环境中建立FFT工 程:添加main()函数,更改教材中个别语法错误,添加相应的库文 件,建立正确的FFT工程; 2) 设计检测信号,验证FFT算法的正确性及FFT的部分性质; 3) 运用FFT完成IFFT的计算。 .单路、多路数模转换(A/D) 1) 回顾CCS的基本操作流程,尤其是开发环境的使用; 2) 参考实验指导和示
3、例工程掌握5509芯片A/D的C语言基本控制流 程; 3) 仔细阅读工程的源程序,做好注释,为后期开发做好系统采集前端 设计的准备。 .系统集成,实现硬件频谱分析 1) 整合前两个工程,实现连续信号的频谱分析工程的构建; 2) 参考A/D转换示例和DSP系统功能自检示例完成硬件连接,并测试 开发系统运行效果; 3) 基于现有系统,对于实时频谱分析给出进一步开发设计和系统改良 方案。三、课程设计原理1、DSP应用系统构成: 注:一般的输入信号首先进行带限滤波和抽样,然后进行模数(A/D)转换,将信号变成数字比特流。根据奈奎斯特抽样定理,对低通信号模拟,为保持信号的不丢失,抽样频率必须至少是输入带
4、限信号的最高频率的2倍,工程上为带限信号最高频率的3-5倍。2、快速离散傅里叶变换(FFT)的基本原理:频谱分析系统FFT是一种快速有效地计算离散傅里叶变换(DFT)的方法。它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。因为需要N次复数乘法和N-1次复数加法,所以计算全部X(k),共需要次复数乘法和N(N-1)次复数加法。实现一次复数乘法需要四次实数乘法和两次实数加法,一次复数加法需要两次实数加法,因此直接计算全部X(k)共需要4次实数乘法和2N(2N-1)次实数加法。为减少运算量,提高运算速度,就必须改进算法。FFT算法就是不断地把长序列的DFT分解成几
5、个短序列的DFT,并利用的周期性和对称性来减少DFT的运算次数。具有以下固有特性:(1)的周期性:(2)的对称性: (3)的可约性:另外,。利用的上述特性,将x(n)或X(k)序列按一定规律分解成短序列进行运算,这样可以避免大量的重复运算,提高计算DFT的运算速度。算法形式有很多种,但基本上可以分为两大类,即按时间抽取(Decimation In Time,DIT)FFT算法和按频率抽取(Decimation In Frequency,DIF)FFT算法。 N=8的按时间抽取FFT N=8的按频率抽取FFT 实数序列的FFT:反FFT运算可以表示为: 式中,是时域信号的傅里叶变换。比较和可以看
6、出,通过下列修改,我们可以用FFT算法来实现反FFT: 增加一个归一化因子;将用其复共轭代替。由于第二点需要修改符号,因此FFT程序还不能不加修改的来计算反FFT。因为 可见,求的反FFT可以分为以下三个步骤:取的共轭,得; 求的FFT,得;取的共轭,并除以,即得。采用这种方法可以完全不用修改FFT程序就可以计算反FFT。3、单路、多路模数转换实验原理(AD) TMS320VC5509A模数转换模块特性: 带内置采样和保持的10位模数转换模块ADC,最小转换时间为500ns, 最大采样率为。 2个模拟输入通道(AIN0-AIN1)。 采样和保持获取时间窗口有单独的预定标控制。 模数转换工作过程
7、: 模数转换模块接到启动转换模块后,开始转换第一通道的数据。 经过一个采样时间的延迟后,将采样结果放入转换结果寄存器保存。 转换结束,设置标志。 等待下一个启动信号。 模数转换的程序控制: 模数转换相对于计算机来说是一个较为缓慢的过程。一般采用中断方式启动转换或保存结果,这样在CPU忙于其它工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换手段,也要能及时地保存结果。 由于TMS320VC5509A DSP芯片内的A/D转换精度是10位,转换结果的低10位为所需数值,所以在保留时应注意将结果的高6位去除,取出低10位有效数字。 实
8、验程序流程图: 开 始 初始化CPU时钟、 EMIF、AD采样时钟启动AD0通道采集(连续256次)存入缓冲区nADC0启动AD1通道采集(连续256次)存入缓冲区nADC1 实验程序流程图 四.实验程序和流程图: 1、FFT FFT程序:#include struct compx float real,imag; struct compx EE(struct compx b1,struct compx b2) eal=xini.; xinip.imag =xini.; xini.real=xini.real+; xini.imag=xini.imag+; v=EE(v,w); return;
9、/*main programe*/#include#include#include#includefloat result257;float input257;struct compx s257;int Num=256 ;const float pp= ;main() int i=1 ; for(;i257;i+) eal=sin(pi*i/128); si.real=cos(2*pp*i/256); si.imag=0 ; inputi=sin(2*pp*i/256); FFT(s,Num); for(i=1;i257;i+) resulti=sqrt(pow(si.real,2)+pow(
10、si.imag,2); 开始输入xin,Nm=log2N变址运算l=1结束输出频谱图l+第l次蝶形运算l=mFFT流程图 3、AD AD程序 #include #include #include #include #include struct compx s0257,s1257; float input0256,input1256,output0256,output1256; #define pi 3. void InitADC(); void wait( unsigned int cycles ); void EnableAPLL( ); unsigned int nADC0256,nAD
11、C1256; main() int i; unsigned int uWork; EnableAPLL(); SDRAM_init(); InitADC(); PLL_Init(132); while ( 1 ) for ( i=0;i256;i+ ) ADCCTL=0x8000; eal=nADC0i; eal; s0i+1.imag=0; eal=nADC1i; eal; s1i+1.imag=0;eal,2)+pow(s0i+1.imag,2); eal,2)+pow(s1i+1.imag,2); asm( nop); 4f1f1f1f1f4F1f1f6-3-1个工程整合后:六、课程设计心得本次DSP课程设计针对理论课、实验课中无时间和不方便提及内容和需强调重点进行补充与完善,以原理算法的实现与验证体会DSP技术的系统性,并加深了我对基本原理的体会。在这几天中,我学到了如下几点: 通过对FFT算法进行分析研究,从基础深入研究和学习,掌握FFT 算法的关键; 通过对DSP芯片工作原理以及开发环境的回顾,在DSP芯片上实现对信 号的实时频谱分析; 这次课程设计,虽然不能做到完全理解掌握,但依然让我加深了对各门专 业课之间的联系; 通过与同组成员的互相沟通,不仅使各自的知识得到了扩充,而且从中得 到了很多的启示,增强了团队合作能力;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1