首页 > 编程知识 正文

dsp开发用什么语言,c语言从入门到精通

时间:2023-05-04 03:09:06 阅读:32411 作者:4019

《DSP-快速傅立叶变换(FFT)算法实验》可供会员共享,在线阅读。 更多相关《DSP-快速傅立叶变换(FFT)算法实验(10页珍藏版)》请在人人文库网搜索。

1、中南大学DSP技术实验报告实验名称:快速傅立叶变换(FFT )算法实验专业班:信息0602学生名称: bldzdj )学号: 24 )奇怪笑容:陈宁完成日期: 2009年12月2日中南大学信息科学与工程学院快速傅立叶变换(FFT ) 双实验设备PC兼容机一台,操作系统安装Windows2000 (或Windows98、WindowsXP,以下默认为Windows2000 )、Code Composer Studio 2.0软件三实验原理1FFT的原理和。

2、参数生成公式:公式(1) FFT运算公式FFT不是新的变换,而是离散傅立叶变换(DFT )的快速算法。 因为我们在计算DFT时需要在一次复数乘法中使用四次实数乘法和两次实数加法; 一次复数加法定律需要二次实数加法。 运算一个x(k )需要4N次复数乘法和2n2(n-1 )=2) 2n-1次实数加法。 因此,在整个DFT运算中需要合计4N2次实数乘法和n*2(2n-1 )=2n ) 2n-1次的实数加法。 这样,计算时的乘法次数和加法次数都与n-2成比例,n大的情况下运算量变大,所以需要改良DFT的算法来降低运算速度。 由于傅立叶变换的对称性和周期性,可以综合DFT运算的几个项。 假设我们首先序列很长。

3、度为N=2L,l为整数。 将N=2L的系列x(n ) ) n=0,1,N-1 )按n的奇偶校验分为两组。 也就是说,将一个n点的DFT分解为两个N/2点的DFT,他们又重构为下式所示的n点的DFT。 一般来说,假设输入是连续的。 在输入为纯实数的情况下,我们可以利用左右对称的特性更好地计算DFT。 这种RFFT优化算法称为包装算法。 首先,2N点实数的连续输入称为“包入”。 接着n点的FFT连续运行。 最后,作为结果而产生的n点的合成输出被“导通”,以成为与最初的DFT一致的2N点输入。 使用这个思想,可以区分FFT的大小。 其中一半用于包装输入o(n )的操作和输出。

4、上。 这种RFFT算法与一般的FFT算法一样快,计算速度几乎达到两次DFT的连续输入。 以下部分详细介绍了TMS320C55x上的算法和运行。 5流程图:四实验步骤(一)第一部分1实验准备(-设置软件仿真模式。 启动CCS。 2开工。 浏览程序。 项目目录为c : ice tek-VC 5509-edulablab 0503-FFT FFT.pjt。 3编译并下载程序。 4打开观察窗口选择菜单(View-Graph-Time/Frequency5清除在上述打开的窗口中单击鼠标右键,从弹出菜单中选择“Clear Display”功能。 6要设置断点,程序FFT.c中有注释“break poi”。

5、在nt”语句中设置软件断点。 7执行和观察结果。 选择“调试”菜单中的“Animate”项目,或者按F12键运行程序。 观察" Test Wave "窗口时域图表; 在" Test Wave "窗口中右键单击并选择属性,将图形显示更改为FFT。 观察频域图形。 观察通过“FFT”窗口的CCS计算出的正弦波的FFT。 退出CCS。 9 .实验结果10 .源代码# include myapp.h # includeicetek-VC 5509-edu.h # includes can code.h # include # define pi3. # definine

6、); void MakeWave (; int INPUTSAMPLENUMBER、DATASAMPLENUMBER; float fWaveRSAMPLENUMBER、fWaveISAMPLENUMBER、wSAMPLENUMBER; float sin_tabSAMPLENUMBER,cos_tabSAMPLENUMBER; main ) ) int i; InitForFFT (; MakeWave (; for(I=0; i0 ) b=b*2; i-; /*b=2(L-1 )/for ) j=0; j0 )/* p=pow (2,7-l ) j; */p=p*2; i-; p=p*j; for(k=j;

七、k128; k=k2*b(/*for )3) */TR=dataRk; TI=dataIk; temp=数据b; datark=datarkdatarkb * cos _ tabpdataikb * sin _ tabp; dataik=dataik-datar kb * sin _ tabpdataikb * cos _ tabp; datar kb=tr-datar kb * cos _ tabp-datai kb * sin _ tabp; datai kb=titemp * sin _ tabp-datai kb * cos _ tabp; /*endfor(3) *//* ENDfor)//*end。

8、for(1) */for ) I=0; iSAMPLE

NUMBER/2;i+ ) wi=sqrt(dataRi*dataRi+dataIi*dataIi); /* END FFT */void InitForFFT()int i;for ( i=0;iSAMPLENUMBER;i+ )sin_tabi=sin(PI*2*i/SAMPLENUMBER);cos_tabi=cos(PI*2*i/SAMPLENUMBER);void MakeWave()int i;for ( i=0;iSAMPLENUMBER;i+ )INPUTi=sin(PI*2*i/SAMPLENUMBER*3)*1024;(。

9、二)第二部分1.程序参数说明extern void InitC5402(void)extern void OpenMcBSP(void)extern void CloseMcBSP(void)extern void READAD50(void)extern void WRITEAD50(void)void kfft(pr,pi,n,k,fr,fi,l,il):基2快速傅立叶变换子程序,n为变换点数,应满足2的整数次幂,k为幂次(正整数);数组x :输入信号数组,数据存放于地址为3000H307FH存储 器中,转为浮点型后,生成x数组,长度128;数组mo:FFT变换输出数组,长度128,浮点型。

10、,整型后,写入存储器中。2.子程序流程图:3.启动CCS 2.0,用Project/Open打开“ExpFFT01.pjt”工程文件双击“ExpFFT01.pjt” 及“Source”可查看各源程序;加载“ExpFFT01.out”;4.在主程序中,k+处设置断点5.单击“Run”运行程序或按F5运行程序;程序将运行至断点处停止;6.用View / Graph / Time/Frequency打开一个图形观察窗口;7.单击“Animate”运行程序。或按F10运行,调整观察窗口并观察变换结果。五.实验总结这次DSP技术的实验是在我们学习了数字信号处理、C语言程序设计的先修课程和DSP技术,以及。

11、熟悉了CCS软件之后完成的。实验一我们首先熟悉要用的各种软硬件环境,接下来的实验二和三我们完成了有限冲击响应滤波器(FIR)算法实验和快速傅里叶变换(FFT)算法实验。这次实验我个人认为在以下几个方面收获最大:1. 首先是实验前对自己过去几个学期已学理论知识的巩固加深、综合应用以及对实验相关资料的收集能力的提高。2. 实验中各个部分的要求要理解掌握,认真对待。实验锻炼了我们认真的态度和严谨的精神。3. 当遇到问题和困难的时候,一定要保持冷静,慢慢检查,自己多思考、多尝试,才能获得最终的成功。4. 实验中遇到问题无法解决的时候要主动向同学请教,同时也要乐于帮助同学。我认识到,在实验的过程中要互相信任、互相帮助。通过实验,我们加深了相互间的友情。总之,这次实验让我得到了很多平时理论学习中不能获得的收获,加深了我们对DSP特别是FIR滤波器和FFT算法的原理的理解,并且逐步开始应用于实际。而在个别程序和分析方面存在的不足还需要在今后的学习中慢慢进步。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。