利用DSP实现信号频谱动态分析文档格式.doc

上传人:b****3 文档编号:15406573 上传时间:2022-10-30 格式:DOC 页数:18 大小:109.50KB
下载 相关 举报
利用DSP实现信号频谱动态分析文档格式.doc_第1页
第1页 / 共18页
利用DSP实现信号频谱动态分析文档格式.doc_第2页
第2页 / 共18页
利用DSP实现信号频谱动态分析文档格式.doc_第3页
第3页 / 共18页
利用DSP实现信号频谱动态分析文档格式.doc_第4页
第4页 / 共18页
利用DSP实现信号频谱动态分析文档格式.doc_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

利用DSP实现信号频谱动态分析文档格式.doc

《利用DSP实现信号频谱动态分析文档格式.doc》由会员分享,可在线阅读,更多相关《利用DSP实现信号频谱动态分析文档格式.doc(18页珍藏版)》请在冰豆网上搜索。

利用DSP实现信号频谱动态分析文档格式.doc

利用DSP实现信号频谱动态分析

一、实验内容

1.使用C语言编写信号实时谱分析程序,从MIC接口输入1KHZ正弦信号,分别利用CCS图形观察工具和虚拟示波器观察信号幅度频谱。

2.输入不同频率的信号和混合频率信号,观察信号的幅度频谱,分析并比较与实际理论幅度频谱的差别。

二、实验目的

1、掌握FFT的算法原理和基本性质

2、掌握利用DSP系统对连续信号进行幅度频谱分析

3、学会设置断点并利用CCS和虚拟仪器观察实时信号的频谱

4、熟练运用C语言进行编程实现实时信号的频谱分析

5、熟练使用CCS5402的操作方法和调试检验方式。

三、实验器材

DSP5402开发板,CCS软件环境,电源,电脑与板接口连线

四、实验原理

1、信号的实时采集与传输

本实验利用DMA通道2与McBSP1通道结合来读取A/D转换的数据,利用DMA通道3与McBSP1道结合来将处理后的数据发送至D/A。

选择McBSP1通道的接受寄存器DRR11(41H)DMA传送数据的首地址,并选择DMA源地址工作在不调整模式,选择McBSP1接收事件为DMA同步事件,以实现DMA和McBSP的结合。

A/D转换的数据按McBSP1设置被送到DSP内部接受寄存器DRR11中,再由DMA通道2将DRR11中的数据读到指定数据存储区&

p-inp中完成数据的采集。

DMA在传输外部来的数据时不会影响CPU的运行,当DMA通道2采集完一组数据后产生一个DMA中断事件中断CPU,来通知CPU对其进行处理,CPU通过对数据进行倒序和序列FFT处理并计算频谱,此时DMA通道2可以按照设定继续采集下一组数据,实现数据与CPU的并行处理。

当一组数据处理完成后,将数据存放在数据存储区&

out_buffer+frame*0x100中,选择&

out_buffer+frame*0x100为DMA通道3传送数据的首地址,并选择源地址工作在不调整模式。

选择McBSP1通道的发送寄存器DRR11(43h)为DMA通道3传送数据的目地地址,并选择DMA源地址工作在不调整模式,选择McBSP1接受事件为DMA同步事件,以实现DMA与McBSP的结合。

   待分析的外部模拟信号首先需经A/D转换成数字信号,然后通过DMA实时传输进入DSP系统,由FFT进行信号的频谱分析。

输入信号转换成数字信号后利用DMA通道2进行传输,信号的输出利用DMA通道3进行传输,因此需对DMA的通道2和通道3进行初始化。

2、FFT算法实现

快速傅里叶变换FFT是DFT的快速算法。

直接计算一个N点序列x【k】的DFTX[m]需要N次复数运算,而利用基2-时域抽取算法只需次复数乘法运算,可见FFT算法能有效提高DFT计算速度。

本实验直接调用DSPLIB库中的RFFT函数,其可以实现基2时域抽取FFT算法。

由于输入输出的次序不同,所以计算频谱时需要对信号数据进行倒序。

倒序算法可以调用DSPLIB库中的cbrev函数。

在利用DSPLIB库是,工程中要添加库文件54xdsp.lib,C源程序重要包含头文件dsplib.h。

序列倒序算法函数cbrev()的调用格式是:

voidcbrev(DATA*x,DATA*r,unshortn)

函数rfft()的调用格式是:

voidrfft(DATAy,n,shortscale) 

五、实验程序及注释:

1、C语言源程序如下:

主程序:

FFTlab。

C

/*****************************************************************************/

/*FIRlab.CAIC,McBSP,DMAinitializationforFIRlabFilter*/

/**/

/*Goal:

Thiscodeperformsthefollowingfunctions:

*/

/* -togglethethreeLEDsontheDSK */

/* -setupAIC(CODEC)parameters */

/* -initializeDMAChannel(CH2-input) */

/* -turnoninterrupts */

/* -runforever(waitingforDMAinterruptstotransferdata) */

/* */

/*Author:

ScottBlandDate:

03/20/2000 */

/*****************************************************************************/

/*IncludeFiles*/

#include<

type.h>

board.h>

codec.h>

firlab.h>

string.h>

dsplib.h>

/*FunctionPrototypes*/

voiddelay(s16period);

externvoidDMAC2ISR();

/*GlobalVariables*/

HANDLEhHandset;

unsignedintdmsefc,dmmcr,dmctr,src_addr,dst_addr;

unsignedintdmpre,dmsrcp,dmdstp,dmidx0,dmidx1,dmfri0,dmfri1,dmgsa,dmgda,dmgcr,dmgfr;

/*Createspecificdatasectionforbuffer(symbol,section_name)*/

#pragmaDATA_SECTION(inp_buffer,"

audio_buffer"

);

DATAinp_buffer[0x200];

#pragmaDATA_SECTION(out_buffer,"

outt_buffer"

DATAout_buffer[0x200];

/*declareandinitializetwovariablesforDMACISRs*/

intframe=0;

intflag=0;

inttemp;

intcurrbuff=0;

/*delayptrholdstheaddressofthestartofthedelaybuffer*/

interruptvoidDMAC2ISR();

/*MAIN*/

voidmain()

{

s16cnt=2;

/*ThesearetheitemsthatBIOSwillsetwhenweuseit*/

BSCR=0x8806;

XPC=0;

PMST=0xA0;

brd_set_cpu_freq(100);

TIMER_HALT(0);

brd_set_wait_states(7,7,9);

TIMER_RESET(0);

IMR=0;

//禁止所有中断

/*-----------------------------------------------------*/

if(brd_init_bios())

return;

while(cnt--)

{

brd_led_toggle(BRD_LED0);

//切换LED指示灯0的显示状态

delay(1000);

brd_led_toggle(BRD_LED1);

//切换LED指示灯1的显示状态

brd_led_toggle(BRD_LED2);

//切换LED指示灯2的显示状态

}

/*OpenHandsetCodec*/

hHandset=codec_open(HANDSET_CODEC);

/*Acquireha

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1