第七章-音频信号处理应用程序设计ppt课件_第1页
第七章-音频信号处理应用程序设计ppt课件_第2页
第七章-音频信号处理应用程序设计ppt课件_第3页
第七章-音频信号处理应用程序设计ppt课件_第4页
第七章-音频信号处理应用程序设计ppt课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

.,1,第一章音频信号处理应用程序设计,(3学时),.,2,主要内容,如何通过PCM3002、TLV320AIC23实现音频信号的输入与输出?如何通过DIP开关与LED指示灯完成程序功能的选择控制与信息提示?如何通过FLASH存储器实现数据的断电保护存储?如何设计并实现一个具有保密通信功能的音频信号处理应用程序?,.,3,DSP应用系统的一般构成,.,4,设计目标,(1)音频信号的采集与输入;(2)音频信号的加密与解密处理;(3)音频信号的回放输出;(4)系统控制信息提示;,如何解决?,.,5,音频信号的采集与I/O,音频信号类型:,(1)语音(50Hz4KHz);(2)音乐(22KHz);(3)MIDI,(1)程序合成音频;(2)线路输入音频;(3)麦克风输入音频。,音频信号来源:,音频信号的获取:,DSP,音频信号,CODEC(AD/DA),PCM3002;TLV320AIC23,.,6,PCM3002,采样率:6KHz48KHz(48KHz);量化位:16或20(16位);,.,7,PCM3002,.,8,PCM3002,.,9,PCM3002应用程序接口,(1)DSK5416_PCM3002_openCodec()打开指定名称的音频CODEC设备(2)DSK5416_PCM3002_closeCodec()释放指定名称的音频CODEC设备(3)DSK5416_PCM3002_config()配置音频CODEC的寄存器参数(4)DSK5416_PCM3002_read16()从音频数据流中读入16比特数据(5)DSK5416_PCM3002_read32()从音频数据流中读入32比特数据(6)DSK5416_PCM3002_write16()向音频CODEC写入16比特数据(7)DSK5416_PCM3002_write32()向音频CODEC写入32比特数,TMS320VC5416DSK使用PCM3002,.,10,(8)DSK5416_PCM3002_rset()设置音频CODEC的控制寄存器(9)DSK5416_PCM3002_rget()读取音频CODEC寄存器数据(10)DSK5416_PCM3002_outGain()设置音频CODEC的输出增益(11)DSK5416_PCM3002_loopback()控制音频CODEC的硬件回放模式(12)DSK5416_PCM3002_mute()控制音频CODEC的静音模式(13)DSK5416_PCM3002_powerDown()控制音频CODEC的省电模式(14)DSK5416_PCM3002_setFreq()设置音频信号的采样率,PCM3002应用程序接口,程序需要包含dsk5416.h,dsk5416_pcm3002.h,dsk5416f.lib,.,11,PCM3002应用程序接口,句柄:DSK5416_PCM3002_CodecHandlemyCodec;程序需要包含:dsk5416.h,dsk5416_pcm3002.h,dsk5416f.lib,DSK5416_PCM3002_Configsetup=0 x1ff,/寄存器0的配置,设置左声道DAC的衰减0 x1ff,/寄存器1的配置,设置右声道DAC的衰减0 x000,/寄存器2的配置,设置控制位0 x000,/寄存器3的配置,设置数据格式,基本配置,.,12,TLV320AIC23B,采样频率:8KHz96KHz;量化比特位:16、20、24和32;信噪比:90dB和100dB以上;,.,13,TLV320AIC23B,(1)codec_open()获取指定CODEC设备的句柄(2)codec_close()释放一个指定CODEC设备(3)codec_reset()复位CODEC设备的默认参数(4)codec_write_reg()写入参数到指定寄存器(5)codec_read()从CODEC读入一个或多个字的数据(6)codec_write()向CODEC写入一个或多个子的数据(7)codec_power()设置CODEC的省电模式,SEED5416DTK使用TLV320AIC23B,.,14,TLV320AIC23B,句柄:HANDLEmyCodec;程序需要包含:codec.h,dec5416.c,(8)codec_analog_mode()设置模拟音频处理参数,输入选择(9)codec_digital_mode()设置数字音频处理参数(10)codec_headhponeout_gain()设置音频信号输出增益(11)codec_lineain_gain()设置音频信号输入增益(12)codec_digital_format()设置数字音频数据格式,量化比特位(13)codec_sample_rate()设置音频信号的采样率,.,15,程序外部控制与信息提示,TMS320C5416DSK:4个DIP开关和4个LED指示灯。,(1)DSK5416_DIP_init()初始化所有DIP开关(2)DSK5416_DIP_get()读取指定DIP开关的状态(3)DSK5416_LED_init()初始化LED指示灯模块(4)DSK5416_LED_off()将指定的指示灯OFF(5)DSK5416_LED_on()将制定的指示灯ON(6)DSK5416_LED_toggle()使指定的指示灯闪烁,程序包含:dsk5416.h,dsk5416_dip.h,dsk5416_led.h,dsk5416.lib或dsk5416f.lib。,.,16,FLASH存储器数据读写,FLASH存储器:一种可读写的非易失性可编程存储器。TMS320C5416DSK使用了一片256K字的FLASH芯片Am29LV400B;SEED5416DTK使用的是256K字的SST39VF400。,.,17,FLASH存储器数据读写,Am29LV400BFLASH存储器字节方式下的逻辑地址范围为:00000h7FFFFh,共有512K字节,字方式下逻辑地址范围为:00000h3FFFFh,有256KW。,FLASH存储器逻辑地址通过映射到DSP数据空间的8000hFFFFh或者程序空间进行,由于只有32K的寻址空间,因此每次只可以对其逻辑地址的一部分进行读写。FLASH的256KW逻辑空间被划分成8个页面,,FLASH与DSP和内部存储器相比,读写速度低许多。,.,18,C5416DSK的FLASH读写,(1)DSK5416_FLASH_init()初始化FLASH操作(2)DSK5416_FLASH_setpage()选择FLASH页面(3)DSK5416_FLASH_read()从FLASH读取一个字的数据(4)DSK5416_FLASH_write()将一个字的数据写入FLASH(5)DSK5416_FLASH_erase()擦除一个FLASH页面中的数据,程序包含DSK5416_FLASH.h,此头文件包含所有API函数。,.,19,flash_erase()擦除FLASH指定区域的数据flash_writes()向FLASH指定地址写入一个数据flash_writem()向FLASH指定地址写入指定长度的数据flash_reads()从FLASH指定地址读入一个数据flash_readm()从FLASH指定地址读入指定长度的数据,程序包含memory.h,C5416DTK的FLASH读写,.,20,音频信号处理程序,FLASH的数据存储器总共256KW,8个页面(07页)的空间,前面32KW(第0页)留给实验开发系统的引导程序,最后32KW(第7页)预留不用。这样,实际可以使用的空间为6页共192KW,前面三页(13页:08000h1FFFFh)存原始音频数据,后三页(46页:20000h37FFFh)存加密音频数据,每个部分的空间为96KW,在8KHz采样时可以存放12.288秒单声道16比特音频数据。,.,21,音频信号的采集与存储,/应用于TMS320C5416DSK的源代码DSK5416_PCM3002_Configsetup=/配置音频CODEC寄存器参数0 x1ff,/寄存器0的参数0 x1ff,/寄存器1的参数0 x000,/寄存器2的参数0 x000/寄存器3的参数;,.,22,Int16data;longintp,k;DSK5416_PCM3002_CodecHandlehCodec;hCodec=DSK5416_PCM3002_openCodec(0,音频信号的采集与存储,.,23,音频信号的采集与存储,/应用于SEED5416DTK的源代码unsignedintaudiodata,flashaddr;HANDLEcodec_command;HANDLEcodec_data;codec_data=codec_open(CODEC_DATA);codec_command=codec_open(CODEC_COMMAND);codec_analog_mode(codec_command,0 x14);/选择麦克风作为输入/codec_digital_format(codec_command,0);/设置量化比特位为16codec_sample_rate(codec_command,0 x0d);/设置采样率为8KHz/以上初始化代码各个子功能模块都需要,最后可放在程序的总控模块中,见7.4.6小节总控模块,.,24,音频信号的采集与存储,for(flashaddr=0 x410000;flashaddr0 x428000;flashaddr=flashaddr+0 x8000)flash_erase(flashaddr,BLOCK_ERASE);/清除FLASH第13页的音频数据flashaddr=0 x10000;for(;)while(!MCBSP_RRDY(CODEC_DATA);/等待音频数据准备好读出codec_read(codec_data,.,25,音频信号的回放输出,/应用于TMS320C5416DSK的源代码Int16data;longintp,k;/这条变量定义语句最后放在7.4.6小节总控模块中定义/音频CODEC和FLASH的初始化与其他模块一样,见7.4.6小节总控模块/for(p=1;p=3;p+)/从FLASH第13页读出12.288秒音频数据回放DSK5416_FLASH_setpage(p);for(k=0;k32767;k+)data=DSK5416_FLASH_read(0 x8000+k);while(!DSK5416_PCM3002_write16(hCodec,data);while(!DSK5416_PCM3002_write16(hCodec,data);,.,26,音频信号的回放输出,/应用于SEED5416DTK的源代码unsignedintaudiodata,flashaddr;/音频CODEC和FLASH的初始化与其他模块一样,见7.4.6小节总控模块/for(flashaddr=0 x10000;flashaddr0 x28000;)audiodata=flash_reads(flashaddr);while(!MCBSP_XRDY(CODEC_DATA);/等待音频数据准备好写入codec_write(codec_data,.,27,音频信号的加密,/应用于TMS320C5416DSK的源代码Int16data,data_orig,data_code;/以下两条变量定义语句最后放在7.4.6小节总控模块中定义longintp,k;/音频CODEC和FLASH的初始化与其他模块一样,见7.4.6小节总控模块/data_code=0 x2222;/初始密钥for(p=1;p=3;p+)/开始加密处理DSK5416_FLASH_setpage(p+3);DSK5416_FLASH_erase();/擦除加密数据区,.,28,音频信号的加密,for(k=0;k32767;k+)DSK5416_FLASH_setpage(p);data_orig=DSK5416_FLASH_read(0 x8000+k);/读FLASH数据data_code=data_codedata_orig;/加密运算DSK5416_FLASH_setpage(p+3);DSK5416_FLASH_write(0 x8000+k,data_code);/写入FLASHfor(p=4;p=6;p+)/从FLASH第46页输出12.288秒加密数据回放试听DSK5416_FLASH_setpage(p);for(k=0;k32767;k+)data=DSK5416_FLASH_read(0 x8000+k);while(!DSK5416_PCM3002_write16(hCodec,data);while(!DSK5416_PCM3002_write16(hCodec,data);,.,29,音频信号的加密,/应用于SEED5416DTK的源代码unsignedintaudiodata,flashaddr,audio_code;/音频CODEC和FLASH的初始化与其他模块一样/audio_code=0 x2222;/初始密钥for(flashaddr=0 x428000;flashaddr0 x440000;flashaddr=flashaddr+0 x8000)audiodata=flash_reads(flashaddr);/读出原始音频数据audio_code=audio_codeaudiodata;/加密运算flash_writes(flashaddr+0 x18000,audio_code);/写入加密音频数据,.,30,音频信号的加密,for(flashaddr=0 x28000;flashaddr=0 x3FFFF;flashaddr+)audiodata=flash_reads(flashaddr);while(!MCBSP_XRDY(CODEC_DATA);codec_write(codec_data,.,31,音频信号的解密,/应用于TMS320C5416DSK的源代码Int16data,data_orig,data_code;/最后放在总控模块中定义longintp,k;/音频CODEC和FLASH的初始化与其他模块一样/data=0 x2222;/initialkey,.,32,for(p=4;p=6;p+)/开始解密处理DSK5416_FLASH_setpage(p);for(k=0;k32767;k+)data_code=DSK5416_FLASH_read(0 x8000+k);/data_orig=data_codedata;/解密运算data=data_code;while(!DSK5416_PCM3002_write16(hCodec,data_orig);while(!DSK5416_PCM3002_write16(hCodec,data_orig);,音频信号的解密,.,33,/SEED5416DTK的源代码unsignedintaudiodata,flashaddr,audio_code,data;/音频CODEC和FLASH的初始化与其他模块一样/data=0 x2222;/初始密钥for(flashaddr=0 x28000;flashaddr=0 x3FFFF;flashaddr+)audio_code=flash_reads(flashaddr);audiodata=data_codedata;/解密运算data=data_code;while(!MCBSP_XRDY(CODEC_DATA);codec_write(codec_data,音频信号的解密,.,34,总控模块,/应用于TMS320C5416DSK的源代码/在这里应该包含一个应用程序的DSP/BIOS配置头文件*cfg.h/#includedsk5416.h#includedsk5416_pcm3002.h#includedsk5416_led.h#includedsk5416_dip.h#includedsk5416_flash.hDSK5416_PCM3002_Configsetup=/配置音频CODEC寄存器参数0 x1ff,/寄存器0的参数0 x1ff,/寄存器1的参数0 x000,/寄存器2的参数0 x000/寄存器3的参数;voiduserApp()/音频信号处理程序入口/变量定义区,各子模块中的变量都在这里定义/DSK5416_PCM3002_CodecHandlehCodec;hCodec=DSK5416_PCM3002_openCodec(0,.,35,总控模块,while(1)/等待按下一个开关选择子功能程序执行if(DSK5416_DIP_get(0)=0)/音频采集与输入DSK5416_LED_toggle(0);/在这里调用音频采集与输入模块程序/DSK5416_LED_toggle(0);if(DSK5416_DIP_get(1)=0)/原始音频信号回放DSK5416_LED_toggle(1);/在这里调用音频回放输出模块程序/DSK5416_LED_toggle(1);if(DSK5416_DIP_get(2)=0)/音频信号加密DSK5416_LED_toggle(2);/在这里调用音频信号加密模块程序/DSK5416_LED_toggle(2);,.,36,总控模块,if(DSK5416_DIP_get(3)=0)/音频信号解密DSK5416_LED_toggle(3);/在这里调用音频信号解密模块程序/DSK5416_LED_toggle(3);DSK5416_PCM3002_closeCodec(hCodec);voidmain()DSK5416_init();/初始化开发系统DSK5416_LED_init();/初始化LED指示灯DSK5416_DIP_init();/初始化DIP开关,.,37,总控模块,/SEED5416DTK的源代码/程序设计时工程中必须包含DEC5416.C文件#includecodec.h#includesysreg.h#includemcbsp54.h#includememory.h#defineAUDIO_RECORD0/音频信号采集与输入#defineAUDIO_PLAY1/音频信号回放输出#defineAUDIO_CODE2/音频信号加密处理#defineAUDIO_DECODE3/音频信号解密处理main()/变量定义区,各子模块中的变量都在这里定义/HANDLEcodec_command;HANDLEcodec_data;sys_clk(CLK160);/设置系统时钟,.,38,总控模块,dec5416_init();/初始化SEED5416DTKcodec_data=codec_open(CODEC_DATA);codec_command=codec_open(CODEC_COMMAND);codec_analog_mode(codec_command,0 x14);/选择麦克风作为输入/codec_digital_format(codec_command,0);/设置量化比特位为16codec_sample_rate(codec_command,0 x0d);/设置采样率为8KHzswitch(1)/通过命令代码选择子功能模块程序执行caseAUDIO_RECORD:/在这里调用音频采集与输入模块程序/;break;caseAUDIO_PLAY:/在这里调用音频回放输出模块程序/;break;caseAUDIO_CODE:/在这里调用音频信号加密模块程序/;break;caseAUDIO_DEC

温馨提示

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

评论

0/150

提交评论