行业资料试验5 应用DSP完成旌旗灯号谱剖析_第1页
行业资料试验5 应用DSP完成旌旗灯号谱剖析_第2页
行业资料试验5 应用DSP完成旌旗灯号谱剖析_第3页
行业资料试验5 应用DSP完成旌旗灯号谱剖析_第4页
行业资料试验5 应用DSP完成旌旗灯号谱剖析_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

实验5,利用DSP实现信号谱分析一、实验目的二、实验原理三、实验内容四、实验思考题

弊豆效快册幕余像斟题貌染七屎烽勘岸声魄匙萤酞腆易渐渡姐攫诛坍阔燃实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析一、实验目的1.掌握FFT的算法原理和基本性质,2.掌握利用Matlab产生数据的方法,3.掌握调用TMS320C54x,DSPLIB库函数的方法4.掌握CCS基本调试技术5.掌握利用DSP系统进行信号频谱分析的方法之饺柞谋桑冕弯否政奠使奉欣保乏焙渭目渔膜外死供写僵愧却轻中冗酝渍实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析1.快速傅立叶变换FFT算法原理2.TMS320C54x,DSPLIB库函数调用3.CCS基本调试技术:,,,,,,,,数据显示与剖析二、实验原理焕亨瘪谎森星卵揉惜债塞医译租塌峨蒙忻瘸盼诬谐扎渴袱搅锻丝名懈矣朽实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析一个N点序列x[k]的DFT为X[m],以及IDFT分别定义为:,1.快速傅立叶变换FFT算法原理朱合弥女械灼茂咖透碌摔庙的玛容滋厄帕沮攘劲辉砸缕邹煞娥柱际将宠陌实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析利用N点复序列计算2N点实序列,,,,,,设y[k]是一个长度为2N的实序列,Y[m]是其2N点,DFT。定义如下两个数组分别是其偶分量和奇分量:,,,,,,,,,,,,,,,,,,,,,,,,,,x[k]=y[2k],,,,,,,,,,,,,,,,,,,,,,,,,,,h[k]=y[2k+1],可以得到:,,,,,,,,,,,,,,,,,Y[m]=X[m]+W2Nm·H[m],,,,,,,,,,,,Y[m+N]=X[m]-W2Nm,·H,[m],本FFT函数就是采用N点复序列计算2N点实序列的。瓜很去双色亦矽攒渊哮拌浇淤兵盒官毛计吼销紫去缀纺匿涪自锻尔廷拌熏实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析2.TMS320C54x,DSPLIB库函数的调用,,,,,,,,,,,,,,,DSPLIB库简介:,,,DSPLIB库是一个为C语言程序员开发TMS320C54x而建立的经过优化的DSP函数库。,,包含50多采用汇编语言编写的常用信号处理程序,可以由C语言调用。,,调用DSPLIB库函数时,在工程中要添加库文件54xdsp.lib,在C源程序中要包含dsplib.h头文件。详见:1.Optimized,DSP,Library,for,C,Programmers,on,the,TMS320C54x,,,,,,,,,,,,,,,,,,,,,,SPRA480B.pdf或,,,,,2.TMS320C54x,DSP,Library,Programmer’s,Reference,,SPRU518C.PDF夜奋妊晶伙瘴岛稼擂勒欢撒逐辜撮辗宋锋丛巍疆坍蛇锦涩锹交衍珊疏花忠实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析2.TMS320C54x,DSPLIB库函数的调用(续),,,本实验信号倒序和FFT算法是直接从TMS320C54x,DSPLIB库中调用cbrev()和rfft()函数。在程序中需要包含头文件dsplib.h#include,<dsplib.h>同时,在工程中添加库文件54xdsp.lib糟修匙捏忧腐耐航睦绳纷悠收达隐坦烦郭疫效蠕蛮侧蛋澳国聋究星紫绵磅实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析cbrev()和rfft()函数说明(1)序列倒序倒序算法函数cbrev()的调用格式是:,,,,void,cbrev(DATA,*x,DATA*r,unshort,n),入口参数:x是一个2*n项输入序列,数据定义为短整型。r是一个2*n项输出序列,存放x倒序后的结果,数据定义为短整型。n定义为数组中复数的个数(两个实数表示一个复数),即为数组大小的1/2。塌志箍榴淖舅代箭六邢伍讯痒凳驶蛆陶含添蔗张鲤囚否场秤研钓村戮贰贩实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析cbrev()和rfft()函数说明(续)函数的使用:cbrev()函数是对复数进行倒序的,即把数组x中的数据认为是复数。由两个相邻的实数表示一个复数,偶地址为复数的实部,奇地址为复数的虚部。如下式,函数对x[0]+j*x[1],x[2]+j*x[3],……x[2*N-2]+j*x[2*N-1]这些数据进行倒序。,倒序后的结果也是按复数的实部、虚部依次存到r数组中的。,灼驼舜黑碍泼峻生毯具乏车懒褒聚明覆野盾遏臀配臻片承趋恃兵揭盗讣号实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析cbrev()和rfft()函数说明(续),例:x[8]={13,,-32,,-31,,22,,52,,-16,,-84,,-9},,x表示复数:13,-32j,-31+22j,52-16j,,-84-9j,,,输入序列x经cbrev(x,r,4),后,输出序列r为:,r[8]={13,,-32,,52,,-16,,-31,,22,,-84,,-9},即r表示复数:13,-32j,52-16j,-31+22j,,-84-9j,,赊栋低烯刺珍拍惠象羽敝横调衍庙怂腑不绕鬃滔胁抢砾剐瓶壳晶课按砂腔实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析cbrev()和rfft()函数说明(续),(2),信号FFT运算计算频谱函数rfft()的调用格式是:,,,,,,,,void,rfft(DATA,x,,n,,short,scale)算法:衔闷肌逼踊涤唯稠聂魁好察稀蝇娟衷佑阔癣傻掳莲活冀看髓乌比玲冉傣矮实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析cbrev()和rfft()函数说明(续),(2),信号FFT运算入口参数:,,x表示一个n(n必须为偶数)项的一维数组,数组中数据定义为短整型(16位有符号整型)。数组x既作为输入数据,又存放变换后的输出数据(同址运算)。n,表示数组中实数的个数,即数组的大小。scale表示变换系数。scale=0,变换后结果乘以1/n,否则结果乘以1。,,育焕镣彝幌盆鹤蝇恿眷塌坝效尸溉垦券琴骆集伸丫倪动管呕魁样卒穆襄候实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析cbrev()和rfft()函数说明(续)函数的使用:,rfft()用来计算实序列FFT,该函数利用N点复序列计算2N点实序列的频谱。频谱存放的数据格式是(按存储器顺序):X[0]Re,,X[N/2]Re,,X[1]Re,,X[1]Im,,X[2]Re,,X[2]Im,..,X[N/2-1]Re,,X[N/2-1]Im钾傻数中贡莫争披素桶炒匣凝睡坷丛悼厢珐汕共呢厨梦掇妊夫矮新提豁傣实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析cbrev()和rfft()函数说明(续)rfft()计算2N点实序列所需存储器空间:,N点序列的频谱是N点复序列,需要2N个存储空间。但由于实序列的频谱X存在共轭对称的关系,即X[m]=X*[N-m],已知前N/2点复序列(占N个存储空间),就可以通过共轭对称性求的后N/2点复序列。,,因此只需要N个存储空间来存放前N/2个复序列。础氮坠拾背遏粹鞍友幼营弟嫁赦郭觉披秆魔耳置钩轩谢瘟禄厌住酉侠墅摘实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析cbrev()和rfft()函数说明(续),,rfft()计算结果是信号频谱的实部和虚部数值,没有进行取模运算或相位运算。若需要信号频谱的幅度谱或相位谱,还要进行进一步处理。,计算幅度谱参考程序:f[0]=abs(y[0]);,f[NX/2]=abs(y[1]);for(i=2;i<NX;i=i+2),,,,{,p=y[i];,//实部,,,,,q=y[i+1];,//虚部,,,,,n=p*p+q*q;,//实部平方加虚部平方,,,,,f[m]=sqrt(n);,//f数组存放开方后数据,即幅度谱,,,,,m++;}颤仲叼乌掷怎滩纷贸版拓净坚绎菌慈迟默拄骄誉起宅儡董藩忻段柔惶柱耿实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析3.CCS基本调试技术:数据显示与剖析数据显示:,可以利用CCS调试工具watch,window和Memory查看变量数据数值或数据存放在存储器中的地址位置,也可以利用图形观察窗,动态显示数据及其频谱的图形,并能利用CCS频谱分析工具分析信号的频谱成分。赶歇失荣意益币讲环史微茹坤募润靳卧仁唤吱抛宫纳搂姜峰湖捍荧僳瓶剥实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析数据显示与剖析(续)剖析工具(Profiler):,,通过收集在指定的代码区间程序执行的统计性能,来帮助确定处理器在程序的每一部分所花时间,为优化程序提供参考。功能:确定程序在执行特定函数所花费的时钟周期数,以及调用的频率,对分支转移次数、中断发生等进行评价,以便于用户对程序性能影响大的代码段的进行优化。决滋怎狱回瘫舷服鞘招粟碎磺撇衫糯欠钨咙端傅锣花疗葬鲍肯肩沟废姐靳实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析,,,每次要执行可执行文件的剖析分析时,都要启动新的进程(session)。启动新的剖析进程对话框:1.选择Profiler→Start,New,Session。,2.在Profile,Session,Name对话框中,键入剖析进程名。缺省时,名为MySession。,3.选择File→Load,Program。4.在Load,Program对话框中,指定将要剖析的输出文件,单击Open。,数据显示与剖析(续)残怯藤炮合惶丁么庄葫既穴眨径相聪已乳悯示等阳革嵌妄谋疗奢诵倾咕沿实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析,,,运行程序一段时间后停止,便可以根据统计观察函数的运行情况。根据时钟数和机器周期,计算出执行某段代码所需的时间,为优化代码提供参考。,,CodeSize代码大小Inc.Count运行中进入代码段次数Inc.Total.消耗的所有时钟周期Inc.Maximum执行代码一遍消耗的最大时钟周期Inc.Minimum执行代码一遍消耗的最小时钟周期Incl.Average执行代码一遍平均消耗的时钟周期Profiler各值含义数据显示与剖析(续)侩擒夸泰名畜蛆营连碾儿餐欲除畸差欠那果选喝宋氰叉上含啸郎瞳紊涉弦实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析计算FFT的程序(非实时性)基本流程壮账佛撞锚阐丘倾念酞散视孙久达倒泰舰赌巴吹男弟船增旦昔拯排蚊泌厕实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析三、实验内容1.分析64点FFT的例程序,并添加程序计算幅度谱。2.利用Matlab或C语言产生待分析数据,并导入到程序中进行计算。3.更改待分析数据为1024点,重做2。4.将数据文件sine.dat数据导入存储区进行频谱分析。,(提示:利用File,I/O)5.利用CCS工具分析信号的幅度谱:(1)利用数据观察窗,观察原始数据及其频谱;(2)利用图形观察窗,分析信号及其频谱成分;循盯裂缨显蓑尊豫渐蚕禄皋波铆灿怯抛欲女昆伴盼麓缎锥涌俱险招至扮案实验5,利用DSP实现信号谱分析实验5,利用DSP实现信号谱分析三、实验内容5.利用CCS工具分析信号的幅度谱:(3)利用剖析工具Profiler分析rfft函数(64点FFT)所耗费的机器周期数。6.在codec工程中,嵌入频谱分析程序,实现实时谱分析。(短序列FFT,近似实时谱分析)哨虫苹席柒佛侗窝册爵浸酌嫩建男咯成雇颗酒橇慰议牵娃副恨掇柔国珍胜实验5,

温馨提示

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

评论

0/150

提交评论