




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录摘要第1章 概述11.1设计目的11.2设计要求1第2章 系统硬件设计方案22.1 tms320vc5402芯片的基本原理22.2 语音采集与输出模块4第3章 软件设计与系统仿真53.1软件设计流程图53.2 ccs操作过程53.3系统仿真5第4章 课程设计总结8参考文献9附录:源程序代码10第1章 概述1.1设计目的在ccs环境下基于tms320vc5402芯片的语音采集压缩存储与回放。通过这次课程设计,加深对ccs集成开发环境的以及dsp试验系统箱的使用。锻炼逻辑思维能力、动手能力以及独立解决问题的能力,对以后更深入地学习和应用数字信号处理及相关知识作准备。1.2设计要求(1)了解dsp开发工具及其安装过程(2)熟悉dsp开发软件ccs使用(3)熟悉工程文件的建立方法、汇编程序开发调试过程(4)熟悉常用c5402系列指令的用法(5)在老师的指导下,独立完成课程设计的全部内容,并按要求编写课程设计论文,能正确阐述和分析设计和实验结果。第2章 系统硬件设计方案2.1 tms320vc5402芯片的基本原理tms320vc5402 数字信号处理器是ti公司为实现低功耗,高速实时信号处理而专门设计的16位定点数字信号处理器,采用改进的哈佛结构,具有高度的操作灵活性和运行速度,适用于远程通信等实时嵌入式应用的需要。广泛应用于电子测试、电子设计、模拟仿真、通信工程中。tms320vc5402具有的主要优点如下:(1) 围绕一组程序总线、三组数据总线和四组地址总线而建立的改进哈佛结构,提高了系统的多功能性和操作的灵活性。 (2) 具有高度的并行性和专用硬件逻辑的cpu设计,提高了芯片的性能。(3) 具有完善的寻址方式和高度专业化指令系统,更适用于快速算法的实现和高级语言编程的优化。(4) 模块化结构设计,使派生器件得到了更快的发展。(5) 采用先进的ic制造工艺,降低了芯片的功耗,提高了芯片的性能。(6) 采用先进的静态设计技术,进一步降低了功耗,使芯片具有更强的应用能力。tms320vc5402主要有中央处理器cpu,特殊功能寄存器,数据存储器ram,程序存储器rom,i/o接口功能,串行口,主机通信接口hpi,定时器,中断系统等10部分组成。各部分功能如下:(1) 中央处理器(cpu)它是dsp芯片的核心,它有以下特点:(a) 采用多总线结构,通过一组程序总线、三组数据总线和四组地址总线来实现。(b) 40位算术逻辑运算单元alu,包括一个40位的桶形移位寄存器和两个独立的40位累加器。(c) 1717位并行乘法器,与40位专用加法器相连,可用于进行非流水线的单周期乘法累加运算。(d) 比较、选择、存储单元,可用于viterbi译码器的加法比较选择运算。(e) 指数编码器,是一个支持单周期指令exp的专用硬件。可以在一个周期内计算40位累加器数值的指数。(f) 配有两个地址生成器,包括8个辅助寄存器和2个辅助寄存器运算单元。(2)数据存储器ramtms320vc5402有两种片内数据存储器:(a) 双寻址ram:在一个指令周期内,可对其进行两次存取操作,一次读出和一次写入;(b) 双寻址ram:在一个指令周期内,只能进行一次存取操作。(3) 程序存储器romtms320vc5402的程序存储器可由rom和ram配置而成,程序空间可以定义在rom上,也可以定义在rom上。当需要高速运行程序时,可以将片外rom中的程序调入到片内ram中,以提高程序运行速度。降低对外部rom的要求,增强系统整体抗干扰性能。(4) i/o口tms320vc5402芯片只有两个通用i/o引脚bio和xf,bio主要用来监测外部设备工作状态,而xf用来发信号给外部设备。 另外,芯片还配有主机接口hpi,同步串行口和64k字的i/o空间,hpi和串行口通过控制,用做通用i/o口使用。而64k字i/o空间可通过外加缓冲器或锁存电路,配合外部i/o读写控制时序构成片外外设的控制电路。(5) 定时器定时器是一个软件可编程计数器,用来产生定时中断。定时器主要由定时寄存器tm,定时周期寄存器prd,定时控制寄存器tcr及相应的逻辑控制电路组成。其中寄存器tim、prd和tcr都是存储映象寄存器,它们在数据存储器中的地址分别为0024h、0025h和0026h。tim是一个减1寄存器。prd用来存放定时时间常数。tcr中包含定时器的控制位和状态位。 (6) 中断系统tms320vc5402的中断系统具有硬件中断和软件中断。 硬件中断:由外围设备引起的中断分为片外外设所引起的中断和片内外设所引起的中断。软件中断:有程序指令intr、trap和reset所引起的中断。中断管理优先级为1116个固定级,有4种工作方式。 (7) 主机接口hpihpi是一个与主机通信的并行接口,主要用于dsp与其他总线或cpu进行通信,信息可通过tms320vc5402的片内存储器与主机进行数据交换。不同型号的器件配置不同的hpi口,可分为8位标准hpi口、8位增强型hpi接口和16位增强型hpi接口。 (8) 指令系统支持单指令重复和块指令重复;支持存储器块传送指令;支持32位长操作数指令;具有支持2操作数或3操作数的读指令;具有能并行存储和并行加载的算术指令;支持条件存储指令及中断快速返回指令。(9) 片外围电路具有软件可编程等待状态发生器;设有可编程分区转换逻辑电路;带有内部震荡器或外部时钟源的片内锁相环发生器;支持全双工操作的串行口,可进行8位或16位串行通信。2.2 语音采集与输出模块语音采集与输出模块采用的是ti公司推出的一款高性能的立体声音频codec芯片tlc320ad50c,内置耳机输出放大器,支持mic和line in两种输入方式(二选一),且对输入和输出都具有可编程增益调节。ad50的模数转换(adcs)和数模转换(dacs)部件高度集成在芯片内部,采用了先进的sigmadelta过采样技术,可以在8k到96k的频率范围内提供16bit、20bit、24bit和32bit的采样,adc和dac的输出信噪比分别可以达到90db和100db。与此同时,ad50还具有很低的能耗,回放模式下功率仅为23mw,省电模式下更是小于15uw。由于具有上述优点,使得ad50是一款非常理想的音频模拟i/o器件,可以很好的应用在随声听(如cd,mp3)、录音机等数字音频领域2。由tlc320ad50c组成的语音输入与输出模块不仅采样率高最高可达96k,且外围电路简单,性价比高。在主程序中通过a/d抽样量化,可以得到16位的线性编码,再由编码表通过软件计算得到8位a律编码,其中最高位为符号位,第6位到第4位为段落码,低4位为段内码。将8位的压缩结果存储到系统ram中进行缓存,根据抽样率、语音存储时间以及系统ram的容量设置语音存储缓冲区的大小,待缓冲区存满后,将缓冲区内的数据进行解压缩,然后输出到speaker接口输出端。若使用a/d转换器,必须首先对a/d转换器进行初始化设置,即设置a/d转换器的工作模式、输入增益以及抽样频率等。模拟信号源a/d转换电路数字逻辑电路dspd/a转换电路模拟信号输出图2.1 语音的采集和回放的基本结构图第3章 软件设计与系统仿真3.1软件设计流程图在对语音进行采集时,先要初始化dsp及其串口和a/d和d/a转换器。初始化dsp及串行口初始化a/d转换器d/a转换器语音经a/d转换器输入数据压缩数据存储解压缩经d/a转换器回放结束开始图3.1软件设计流程图3.2 ccs操作过程1将工程文件夹放入c盘要求目录下。2. 打开ccs,project open,打开工程文件。3进行编译,连接。4根据错误提示,对build option进行正确的设置,修改头文件路径。5再编译,连接,显示没有错误。6load program-run,此时三盏灯循环亮,之后程序开始,第一盏灯亮开始录音,一段时间后第二盏灯亮开始放音,然后又开始录音。依次循环。3.3系统仿真点击工具栏上面的“view”选择“watch window”然后再输入“buffer”后就可以出现此数组的值,其结果如下图所示:图4.1数组的值再在“view”中选择“memory”可以看到存储器中的数据,其结果如下图所示:图4.2存储器中的值在“view”中选择“graph”然后点击“time frequentcy”可以看到语音输入的波形,压缩后的波形以及解压后的波形图。在观察波形的时候可以加入断点,然后按animate动态显示,这更便于观察波形。图4.3语音采集的输入波形图4.4语音压缩后的波形图4.5语音解压后的波形从上面的三幅仿真结果图可以得到输入的波形图与压缩后的波形图相比,压缩后的波形比输入的波形要尖锐一些,而解压后的波形图与输入的波形相比基本上是一样的,也就是说该课程设计是成功的。第4章 课程设计总结通过这次的dsp课程设计,让我充分认识到了我的不足。我虽然学习过c语言的编程,但一旦将它应用到实际的比较专业的问题上,我所学的知识就变得完全不够用了,为了这次课程设计我查询了大量的资料,无论是c语言方面的还是压缩算法方面的都让我们花费了很多时间,查询到了需要的资料我们又对它们进行了整理,提取出我们需要的a律压缩和律压缩的算法和原理,并且努力去理解其中的知识,使其能为我们所用,尽管如此我们仍然没能成功的编出属于我们自己的程序,因此我们找到了一份编好的程序,用我们已经理解的知识去分析它,理解这份程序的原理,并根据我们的实际对它进行一些修改,从而我们才得出我们现在的程序。虽然程序编写成功了但我们在调试上又遇到了很多的问题,比如在ccs环境下我们要如何观察波形,波形有代表什么等等,为此我们又不断的翻阅课件和资料,才最终解决了所有的问题,我的课程设计才算基本完成了。整个课程设计过程中,我在不断的查阅资料和开动脑筋过程中,锻炼了我的资料采集能力,也锻炼了我的分析整理能力,为以后做毕业设计打下了基础;同样在实验过程中我遇到很多困难,而这些困难则锻炼了我的耐心和分析解决问题的能力;通过编程锻炼了我的编程能力,使我对c语言,汇编语言和matlab语言更加熟悉,让我能更好的运用它们;同时也锻炼了我们的团结协作能力,为将来走入社会能更好的工作打下了基础。总之通过这次的实验,让我认识到了自己的不足,同时又通过这次的实验让我们学到了让我们受用一生的知识。参考文献1戴明桢等编著.tms320c54x dsp 结构原理及应用. 北京:航空航天大学出版社,第2版,2007;2彭启琮编著.dsp技术的发展与应用.北京:高等教育出版社,2002;3胡广书编著.数字信号处理理论、算法与实现.北京:清华大学出版社,2005;4北京合众达电子技术有限公司编著.seed-dtk系列实验手册.北京合众达电子技术有限公司出版,2007。附录:源程序代码存储器的分配(5402.cmd)memory page 0: vecs: origin = 0080h, length = 0080h /* internal program ram */ pram: origin = 7600h, length = 8000h /* internal program ram */ page 1: scratch: origin = 0060h, length = 0020h /* scratch pad data ram */ dmaram: origin = 0c00h, length = 0300h /* dma buffer */ data: origin = 1100h, length = 0080h /* internal data ram */ stack: origin = 1180h, length = 0560h /* stack memory space */ inram: origin = 1900h, length = 0100h /* internal data ram */ hpram0: origin = 1a00h, length = 0002h /* hpi memory accessible by host and dsp */ hpram1: origin = 1a02h, length = 0280h /* hpi memory accessible by host and dsp */ hpram2: origin = 1c82h, length = 0280h /* hpi memory accessible by host and dsp */ exram: origin = 1f10h, length = 9000h /* external data ram */sections .cinit pram page 0 .text pram page 0 .vectors vecs page 0 init_var pram page 0 detect pram page 0 vrcprg pram page 0 matprg pram page 0 .stack stack page 1 .trap scratch page 1 .const exram page 1 .data exram page 1 .bss exram page 1 .cio exram page 1 .switch exram page 1 tables exram page 1 var exram page 1 svctab exram page 1 /* ss_v lsp table */ vctab exram page 1 /* v lsp table */ uvctab exram page 1 /* uv lsp table */ cuvtab exram page 1 /* stochastic codebook */ cdbktab exram page 1 /* various codebook tables*/ logtab exram page 1 /* table for log2 */ powtab exram page 1 /* table for pow2 */ hamtab exram page 1 /* table for hamming */ lgwtab exram page 1 /* table for lag window */ acostab exram page 1 /* table for arccos */ sqrtab exram page 1 /* table for square root */ acbtab exram page 1 /* table for thresholds in acb */ pm03tab exram page 1 /* table for x(-0.3) computation */ costab exram page 1 /* table for cosine */ v23 inram page 1 fsk inram page 1 hpibuff0 hpram0 page 1 hpibuff1 hpram1 page 1 hpibuff2 hpram2 page 1 dma_buff dmaram page 1/*主程序设计*/*语音采集及回放程序,用a律进行压缩及解压,采用ad50进行a/d,d/a转换 */ /*灯循环闪烁程序开始,l0:录音,l1:放音*/#include /* 头文件*/#include #include #include #definesign_bit(0x80)/* sign bit for a a-law byte. */#definequant_mask(0xf)/* quantization field mask. */#definensegs(8) /* number of a-law segments. */#defineseg_shift(4) /* left shift for segment number. */#defineseg_mask(0x70)/* segment field mask. */void delay(s16 period);void led(s16 cnt);void initcodec(void);void flashenable(void);unsigned char data2alaw(s16 pcm_val);int alaw2data(unsigned chara_val);static int search(int val,short*table,int size);handle hhandset;s16 data;s16 data1;u16 i=0;u16 temp1;u16 j=0;u16 k,l=0;u8 temp2;u16 buffer20000;static short seg_end8=0x1f,0x3f,0x7f,0xff,0x1ff,0x3ff,0x7ff,0xfff;void main() if (brd_init(100) return; led(2); /闪灯两次 initcodec(); /初始化codec flashenable(); /选择片外flash为片外存储器 delay(100); brd_led_toggle(brd_led0); for(i=0x9000;i0xefff;i+) reg_write(i,*(volatile u16*)drr1_addr(handset_codec); delay(20); brd_led_toggle(brd_led1); delay(200); for(i=0x9000;i0xefff;i+) *(volatile u16*)dxr1_addr(handset_codec)=reg_read(i); delay(20); brd_led_toggle(brd_led2) while (1) while (!mcbsp_rrdy(handset_codec) ; /等待接收handset处的采样 brd_led_toggle(brd_led0); data = *(volatile u16*)drr1_addr(handset_codec); /从handset处读取采样 temp1=data2alaw(data); /对采样进行a律压缩 i=i+1; if(i%2=1) bufferj=(temp1=40000) i=0; if(j=20000) j=0; brd_led_disable(brd_led0); brd_led_toggle(brd_led1); /点亮二极管1 表示放音开始 /* 放音部分 */ for(k=0;k8)&0x0ff; else temp2=bufferl&0x0ff; l+; if(l=20000) l=0; data1=alaw2data(temp2); / a律解压 while (!mcbsp_xrdy(handset_codec) ; *(volatile u16*)dxr1_addr(handset_codec) = data1;/将数据写入d/a转换器 /* 放音结束 */ brd_led_toggle(brd_led0); brd_led_toggle(brd_led1); /主程序结束 /*延时子程序*/void delay(s16 period) int i, j; for(i=0; iperiod; i+) for(j=0; j1; j+); /*闪灯*/void led(s16 cnt)while ( cnt- )brd_led_toggle(brd_led0); /切换led指示灯0的显示状态delay(1000);brd_led_toggle(brd_led1);delay(1000);brd_led_toggle(brd_led2);delay(1000);/*初始化codec*/void initcodec(void)/* open handset codec 获取设置codec的句柄*/ hhandset = codec_open(handset_codec); / acquire handle to codec codec_dac_mode(hhandset, codec_dac_15bit); / dac in 15-bit mode codec_adc_mode(hhandset, codec_adc_15bit); / adc in 15-bit mode codec_ain_gain(hhandset, codec_ain_6db); / 6db gain on analog input to adc codec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自动化施工方案
- 幼儿园大班《滑梯的回忆》教案
- 建筑施工特种作业-高处作业吊篮安装拆卸工真题库-2
- 容错性定义题目及答案
- 1 1 集合-2026版53高考数学总复习A版精炼
- 2023-2024学年云南省保山市高二下学期期末质量检测数学试题(解析版)
- 2023-2024学年山东省青岛市莱西市高二下学期期末考试数学试题(解析版)
- 新疆盛鼎龙新材料科技有限责任公司2500吨-年高效偶联剂5000吨-年甲基苯基硅油及3万吨-年硅酮胶项目环评报告
- 2025年秋三年级上册语文同步教案 8 总也倒不了的老屋
- 物流公司和客户合作协议
- 年产12000吨水合肼(100%)项目环评报告书
- 《有机波谱分析》期末考试试卷及参考答案
- 公路工程基本建设项目概算、预算编制办法
- 最详细的整车开发流程
- 部编版七年级历史(下)材料论述题专项训练
- 年产1000吨乳酸的生产工艺设计
- 博克服装CAD制版说明操作手册(共95页)
- 光电效应测普朗克常数-实验报告
- (完整word版)数据模型与决策课程案例分析
- 自制桁架移动式操作平台施工方案
- 物业服务参与校园文化建设及举办大型活动配合措施
评论
0/150
提交评论