DSP课设AD数据采集分析与语音分析设计

上传人:飞*** 文档编号:44129524 上传时间:2018-06-08 格式:DOC 页数:18 大小:867.50KB
返回 下载 相关 举报
DSP课设AD数据采集分析与语音分析设计_第1页
第1页 / 共18页
DSP课设AD数据采集分析与语音分析设计_第2页
第2页 / 共18页
DSP课设AD数据采集分析与语音分析设计_第3页
第3页 / 共18页
DSP课设AD数据采集分析与语音分析设计_第4页
第4页 / 共18页
DSP课设AD数据采集分析与语音分析设计_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《DSP课设AD数据采集分析与语音分析设计》由会员分享,可在线阅读,更多相关《DSP课设AD数据采集分析与语音分析设计(18页珍藏版)》请在金锄头文库上搜索。

1、课程设计报告课程设计报告( 20122013 年度第 2 学期)名 称: DSP 课程设计 题 目: AD 数据采集分析与语音分析设计 院 系: 电子与电气工程学院 班 级: 电子 1002 班 学 号: 学生姓名: 指导教师: 设计周数: 2 周 成 绩: 日期: 2013 年 07 月 11 日一、一、课设目的课设目的学习利用 C5409 和 AD 做数据采集和信号分析。 熟悉 CCS 编程流程,并利用 CCS 查看芯片内存及数据。 熟悉对信号采集分析这一系列流程。 了解ICETEKVC5509-A 板上语音codec 芯片TLV320AIC23的设计和程序控制原理。 了解数字回声产生原理

2、、编程及其参数选择、控制。二、二、课设内容课设内容1、 通过查询法对 DSP 实验箱上信号源进行 AD 采样,同时在液晶上单点显示 AD 采样值,将 采集结果用 CCS 的显示波形功能进行显示 2、 对 AD 采样结果进行 FFT 分析和 FIR 滤波分析 3、 利用板上语音 codec 芯片产生数字回声三、三、系统硬件设计系统硬件设计3.1 系统所需模块系统所需模块为完成课设要求,需用实验箱上两片 8038 信号发生器,外扩键盘,12864 液晶,AD 模块, TLV320AIC23 语音模块(信号源)板上是以 CPLD 作为桥梁,对外扩设备进行控制四、四、软件设计软件设计4.1 软件思想概

3、述软件思想概述根据课设要求,需要查询按键的键值,通过键值来确定 dsp 进行 AD 全周波 采样、单点采样、数字回声、FFT、FIR 滤波等。为方便代码阅读,将按键查询 封装为 key_scan(),主函数一直查询按键状态,按下“1” ,进行数字回声;按下“2” ,进行全周波采样并 FFT 分析;按下“3” ,进行 FIR 的信号滤波。4.2 程序流程图程序流程图开始CPU 初始化外扩设备初始化查询按键?Nothing to do 无按键按下 按下哪个按键?有按键按下AD 全周波采样并 FFT 分析AD 单点采样液 晶显示FIR 信号滤波数字回声结束4231五、五、结果分析结果分析5.1 全周

4、波全周波 AD 采样及采样及 FFT 分析分析利用 nADC0 通道对信号源 1 进行 AD 采样 256 点,波形为正弦波,下图为 FFT 分析由图可知,系统能够比较好的采到信号;通过 DATAS 的 fft 显示于通过程序处 理后得到的波形对比,整体波形趋势相对一致。考虑到不可避免的噪声,得到 的波形符合预期结果,程序正确。5.2 单点单点 AD 采样采样选取 AD 的 5 位有效精度,按键一次,采取通道 2 信号的一个点。5.3 FIR 的信号滤波的信号滤波选用的 FIR 滤波器为带通滤波器,带通滤波 500Hz-5kHz,增益 40dB。对 AD 进行连续采 样,每次采样首先设置 AD

5、 转换控制寄存器(ADCCTL),发送转换通道号和启动命令,然 后循环等待转换结果,最后将结果保存。由于需要进行实时混频,所以交替转换通道 0 和 通道 1(ICETEK-VC5509-A 实验箱上 ADCIN2 和 ADCIN3)。混频的波形通过 FIR 滤波器,得到输出波形。5.4 数字回声数字回声通过调整 uDelay 和 uEffect 的取值可以调节回声的间隔及音效强度,取值在 0-1023 范围内。六、系统评估六、系统评估从实现效果上说,系统能较好的完成课设要求。通过配置 AD 寄存器,查 询按键,对采样结果进行实时处理。 从性能上说,系统的 CPU 利用率很高,几乎不存在任务等待

6、的情况。程序 运行的稳定性强,不容易跑飞。 从系统的时序上,条理清晰,代码可读性强。七、设计历程及心得七、设计历程及心得为期两周的 DSP 设计结束了。感谢老师的不断点播和细心讲解,不仅让我 在设计过程中有了明确的设计方案和目的,又使我在程序设计这方面有了长足 的提高。 从开始慢慢接触已经快忘光的信号算法,到最后慢慢综合一个个算法案例。对数字信号处理有了更深的理解。刚开始,遇到的堆栈分配、向量表错误,导 致课设进度停滞不前,后来在修改 cmd 文件中 DDRAM 后,程序才得以编译无 错。在设计过程,对实验箱上外扩设备有了一定了解,比如板上液晶为慢速扫 描,一旦系统时钟过快,便有可能导致液晶乱

7、码。 设计过程中遇到了不少大大小小的问题,最终在老师的帮助和自己的努力 下,把麻烦一一解决。不仅在期终学到许多新方法,而且在程序设计思路上又 有不少的提高。我觉得此次课程设计是大学三年来最有价值的一次课程设计了。源程序源程序#define LCDDELAY 1#include “myapp.h“ #include “ICETEK-VC5509-EDU.h“#include “scancode.h“ #include “stdio.h“ #include “fir.h“ #include #define KEYDIR (*(unsigned int *)0x602800) #define COL

8、 (*(unsigned int *)0x600803) #define ROW (*(unsigned int *)0x600804) #define TEST (*(unsigned int *)0x600801)#define PI 3.1415926 #define SAMPLENUMBER 256 /*/ int INPUTSAMPLENUMBER,DATASSAMPLENUMBER; float fWaveRSAMPLENUMBER,fWaveISAMPLENUMBER,wSAMPLENUMBER; float sin_tabSAMPLENUMBER,cos_tabSAMPLENU

9、MBER; /*/ void InitForFFT(); void FFT(); void MakeWave(); void FLYT(); void InitADC(); void ADC1(); void ADC2(); void wait(unsigned int cycles); void EnableAPLL( ); void InitMcBSP(); void key_scan(); void FIR(); void LCD_Init(); int Smenu_Disp(); /*/ unsigned int nADC0256,nADC1,nADC10NX,nADC00NX; in

10、t i=0; unsigned int dbReturn; unsigned char flag=0;/转换完成标志 unsigned table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39; main() /unsigned char m;/unsigned int uWork;EnableAPLL();PLL_Init(20); SDRAM_init();InitADC(); InitCTR(); InitMcBSP();LCD_Init();AIC23_Init(); while (1) key_scan(); /*LCD Init

11、ial*/ void LCD_Init() wr_lcd (comm,0x30); /*30-基本指令动作*/ wr_lcd (comm,0x01); /*清屏,地址指针指向 00H*/wr_lcd (comm,0x06); /*光标的移动方向*/wr_lcd (comm,0x0c); /*开显示,关游标*/clrram(); /*清 DDRAM*/ Smenu(); Delay(2000); wr_lcd(comm,0x01); /*KEY_SCAN*/ void key_scan() for(i=0;i0 ) b=b*2; i-; /* b= 2(L-1) */ for ( j=0;j0

12、) /* p=pow(2,7-L)*j; */ p=p*2; i-; p=p*j; for ( k=j;k=1;/ 限幅,混频后仍然产生 12 位数据 xi=uWork1; fir2(x, h, r, db, NX, NH);/ 调用滤波程序计算当前输出 /*Show AD variable*/int Smenu_Disp(int datt)int a,b,c,d,e;a=datt%10;b=datt/10%10;c=datt/10/10%10;d=datt/10/10/10%10;e=datt/10/10/10/10%10;wr_lcd(comm,0x30);wr_lcd(comm,0x90

13、);wr_lcd(dat,tablee);wr_lcd(dat,tabled);wr_lcd(dat,tablec);wr_lcd(dat,tableb);wr_lcd(dat,tablea);return 0; /*/ void MakeWave() int i; ADC1(); for ( i=0;iSAMPLENUMBER;i+ ) INPUTi=nADC0i; void FLYT() InitForFFT();MakeWave(); for ( i=0;iSAMPLENUMBER;i+ ) fWaveRi=INPUTi; fWaveIi=0.0f; wi=0.0f; FFT(fWaveR,fWaveI); for ( i=0;iSAMPLENUMBER;i+ ) DATASi=wi;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号