DSP课程设计-音频信号频谱分析.doc_第1页
DSP课程设计-音频信号频谱分析.doc_第2页
DSP课程设计-音频信号频谱分析.doc_第3页
DSP课程设计-音频信号频谱分析.doc_第4页
DSP课程设计-音频信号频谱分析.doc_第5页
免费预览已结束,剩余28页可下载查看

下载本文档

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

文档简介

changsha university of science & technologydsp课程设计题目: dsp 音频信号频谱分析学生姓名: 学 号: 班 级: 07-01专 业: 电子信息工程指导教师: 实习起止时间: 2010年12月27日至2011年1月7日 音频信号频谱分析 音频信号频谱分析摘要 随着信息技术革命的深入和计算机技术的飞速发展,数字信号处理技术已经逐渐发展成为一门关键的技术学科。而dsp芯片的出现则为数字信号处理算法的实现提供了可能。这一方面极大地促进了数字信号处理技术的进一步发展;另一方面,它也使数字信号处理的应用领域得到了极大的拓展。在国外dsp芯片已经被广泛地应用于当今技术革命的各个领域;在我国,dsp技术也正以极快的速度被应用到科技和国民经济的各个领域。本次课程设计介绍了音频信号频谱分析的原理以及其所涉及的硬件结构和软件设计,该设计是基于快速傅立叶变换(fft)的方法对采集的音频信号进行频谱分析,得到音频信号的频率及功率,fft算法采用tlc320ad50编写dsp程序实现。现可以完成256点的fft运算,频率分辨率达到100hz,输入信号电压(峰峰值)可以达到100mv到4v。关键词:音频信号;快速傅立叶变换;频谱分析;分辨率目 录1 绪论.11.1 课题背景.11.2 课题目的.12 硬件电路. . . .32.1 系统框图. .32.2 信号处理部分. .32.2.1 信号叠加电路. . .3 2.2.2 低通滤波器. .3 2.2.3 50hz陷波电路. .4 2.2.4 电平转换电路. . . . .4 2.2.5 信号采集部分. . .42.3 时钟信号产生电路. . . . .133 软件设计. . . . .143.1 dsp初始化. . .143.2 ad50初始化. . .143.3 设置dsp中断. . . .143.4 数据存储. . . . . . .143.5 数据输出. . . . . .143.6 fft算法. . . . . .144 总结. .17参考文献. .19附录. 20 第 30 页 共 30 页1 绪论1.1 课题背景目前,在微电子技术发展的带动下,dsp芯片的发展日新月异,dsp的功能日益强大,性能价格比不断上升,开发手段不断改进。dsp芯片已经完全走下了“贵族”的圣坛。dsp芯片已经在通信与电子系统、信号处理系统、自动控制、雷达、军事、航空航天、医疗、家用电器、电力系统等许多领域中得到了广泛的应用,而且新的应用领域在不断地被发掘。ti、ad、at&t、motorola和lucent等公司是dsp芯片的主要生产商。其中ti公司的tms320系列的dsp占据了全球dsp市场的50%左右。该系列产品在我国同样被用户广泛使用,市场份额更高,超过90。鉴于多数dsp芯片和高速a/d、d/a芯片工艺为贴片封装,对一般用户来说工厂制版成本较高、手工工艺难制版、效果差等的困难,本系统设计了一套基于dsp芯片的最小系统板,并扩展了a/d、d/a实现语音信号的采集和回放,制作语音处理平台。设计的核心芯片采用ti公司的tms320vc5402pge100进行设计,其最高处理速度能达到100mips(每秒执行100百万条指令),性能优越、性价比高,适合大多数用户和教学科研。基于dsp的运用领域和前景,结合我的专业跟个人爱好,本次毕业设计所选课题为dsp语音采集回放处理平台。以tms320c5402dsp为核心,对外部语音信号进行采集,并对所采集信号进行语音处理,最后通过外部设备回放。该系统适合对单语音信号进行处理。由于设计过程中采用的a/d、d/a芯片是ti公司的tlc320ad50,所以最高采样速率为22.05khz。为了验证本次设计的正确性和可用性,对采集的语音信号进行fir滤波,滤除50hz交流信号,并抑制频率在3600hz以上的语音信号。所设计的滤波器是带通滤波器,通带为200hz3400hz,经过实验验证,得到了预期的滤波效果。证明本次单通道语音信号处理平台设计的正确性,可用性。1.2 课题目的dsp课程设计是对数字信号处理、dsp原理及应用等课程的较全面练习和训练,是实践教学中的一个重要环节。通过本次课程设计,综合运用数字信号处理、dsp技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。初步培养学生对工程设计的独立工作能力,掌握电子系统设计的一般方法。通过课程设计完成基本技能的训练,如查阅设计资料和手册、程序的设计、调试等,提高学生分析问题、解决问题的能力。本题目通过tlc320ad50采集音频信号(f.max10khz),编写dsp的fft处理程序(自定频谱分辨力),获得幅频特性之后,在点阵液晶(128*64)中大致显示出幅频图。并在液晶中用文字显示频率幅值前三的频率值。 1、dsp与tlc320ad50接口电路的原理图绘制;2、dsp控制tlc320ad50的程序编写与调试;3、tlc320ad50进行语音模拟量到数字信号的转换,实现声音的采集,在ccs软件中分析信号的幅频特性;4、编写dsp的fft处理程序;5、控制点阵液晶,实现绘图功能,将幅频图显示出来;6、按要求编写课程设计报告书,正确、完整的阐述设计和实验结果;7、在报告中绘制程序的流程图,并文字说明。2 硬件电路2.1 系统框图本系统的硬件电路主要由信号预处理模块、信号采集模块、信号频谱分析模块、时钟触发信号、系统控制模块和键盘显示模块6部分组成。系统组成框图如图2.1所示。 图2.1 系统组成框图22 信号处理部分信号预处理具体电路主要由信号合成、阻抗匹配、0.5f的低通滤波、50h的陷波器和信号抬高等部分组成,如图2.2所示。 图2.2 信号处理框图2.2.1 信号叠加电路信号叠加电路采用反向求和电路,将3信号求和的输出,运放采用op37。2.2.2 低通滤波器由于要求音频信号为10khz以下,为了使信号得到更高的纯度,则需对不用的高频信号进行滤出,从而提高系统测量精度。通过滤波器的快速设计方法设计出12khz的低通滤波器。2.2.3 50hz陷波电路在音频信号中,工频50hz信号对系统的影响最大,因此,在信号处理中加入50hz的陷波电路。计算工公式为:f=1/2rc。2.2.4 电平转换电路由于adc只能采集正电压,则需对信号进行抬高,分析计算得电路需加3v的直流电平。2.2.5 信号采集部分语音信号模数数模转换选择tlc320ad50(以下简称ad50)芯片,ad50使用过采样(over sampling)技术提供从数字信号到模拟信号(da)和模拟信号到数字信号(ad)的高分辨率低速信号转换。该器件包括两个串行的同步转换通道(用于各自的数据传输),在da之前有一个插人滤波器(interpolationfilter),在ad之后有一个抽取滤波器(decimdtionfilter),由此可降低ad50自身的噪声。此外,ad50还具有片内时序和控制功能。ad50特点如下。 输入信号。单端信号输人,幅度在14v之间。 输出信号。单端信号输出,幅度在14v之间。 单一 5v电源供电,也可以使用5v模拟电源和3v数字电源同时供电。 最大工作功耗为100mw。 通用16位数据格式,也可以采用2的补码数据格式。 内部基准电压。 ad为64倍采样,da为256倍采样。 支持各种v34协议的采样速率。 具有多种可选的采样频率。 支持商业级音响应用。 工作温度范围从40850。ad50的引脚分布如图2.3所示(1)为dw封装的引脚分布,(2)为pt封装的引脚分布)。 图2.3 ad50的引脚分布ad50的各个引脚的说明如表2-1所示。表2-1 ad50的引脚说明续表在ad50正常工作前,必须对它进行正确的初始化。初始化操作的主要工作是配置ad50的4个控制寄存器cr1、cr2、cr3和cr4。控制寄存器的读写是通过二次通信来实现。在二次通信中,d0d7为写人控制寄存器的数据或者从控制寄存器读出的数据,d8d12的内容决定选择哪个控制寄存器,d13位决定是读操作还是写操作。由d8d13位确定的所有情况如表2-2所示。表2-2ad50的d8d13位确定的所有操作情况控制寄存器1中各个控制位的功能说明如表2-3所示。表2-3控制寄存器1的各个控制位的功能说明控制寄存器2中各个控制位的功能说明如表2-4所示。表2-4 控制寄存器2的各个控制位的功能说明控制寄存器3中各个控制位的功能说明如表2-5所示。表2-5 控制寄存器3的各个控制位的功能说明控制寄存器4中各个控制位的功能说明如表2-6、2-7所示。表2-6 控制寄存器4的各个控制位的功能说明表2-7 控制寄存器4的第4第6位对应的n值ad50控制寄存器的设置必须在二次通信中完成。ad50有硬件和软件两种方式启动二次通信,下面介绍硬仵方式启动ad50的二次通信过程。硬件启动过程如下:c5409通过其内部寄存器将xf引脚变为高电平,从而控制ad50的fc引脚到高电平,然后向缓冲串口写一个16位的控制字,低8位是ad50的控制寄存器初始化值,高8位选择所要初始化的控制寄存器及操作。整个过程的时序如图2.4所示。图2.4 硬件启动ad50二次通信时序ad50的工作过程可分为ad通道工作过程和da通道工作过程。ad通道把模拟信号转换成数字信号,并以2进制补码形式表示。当帧同步信号有效时(fs为低电平),16位(或者15位)数字信号在sclk的上升沿输出到dout引脚,一位数据对应一个sclk周期。传输时序如图2.5所示。图2.5 ad50的ad通道数据传输时序ad50的da通道把送人的数字信号转换成模拟信号。在sclk的作用下,数字信号通过din引脚进人da通道,每个sclk的下降沿输人一位数字信号。da将输入的数字信号转换成模拟信号输出,da通道的传输时序如图2.6所示。图2.6 ad50的da通道数据传输时序ad50的前后端信号处理包括两个处理电路:输人模拟信号的处理电路和依据输出模拟信号的处理电路。这两个处理电路的主要作用是将信号进行处理,使之更加适合ad和da的要求。为了达到更好的信号处理效果,ad50的模拟信号输人一般采用差分输人方式,即使用两个运算放大器,将单端输入信号转换成差分输人信号,电路连接如图2.7所示。图2.7 ad50单端信号转换成差分信号由图可知,单端输人信号经过两个22f的隔直电容,送人运算放大器的反相端,输出反相信号imp;imp再输人到另一个信号的反相端,输出同相信号inp,从而形成差分输人信号inp和imp。图中的运算放大器选择的是ti公司的tlc4502,也可以选用其他可替代的运算放大器芯片。除了使用上述的运算放大器外,也可以使用变压器将单端信号转换成差分信号输人到ad50,如图2.8所示。图2.8 使用变压器将单端信号转换成差分信号 图中推荐的值为50,rin为22,cin为10f,这些元件的值也可以根据具体的信号进行调整,一般清况下电阻值在10100之间,电容值在10200pf之间。ad50的da输出为差分信号,可以直接驱动600的负载。da输出处理电路如图2.9所示。图2.9 ad50的da后端输出信号处理ad50的去耦合电容的连接如图2.10所示。图2.10 ad50的去耦合电容的连接ad50的模拟电源和数字电源可以使用一个电感连接在一起,连接方法如图2.11所示。图2.11 ad50模拟和数字电源的连接2.3 时钟信号产生电路通过计算,对模拟信号的采样速率为25.6khz,则需产生25.6khzr的方波.作为a/d转换数据的速率。可采用单片集成电路函数发生器icl8038。icl8038工作频率范围在几hz到几百khz之间,可以同时输出三角波、方波和正统波,满足设计要求。3 软件设计3.1 dsp的初始化包括定时器0的初始化,以确保tout0引脚能输出正确的时钟信号到ad50,使ad50能根据该时钟信号进行采样。初始化缓冲串口时,应使dsp工作于主设备方式,clkr0和fsx0引脚设为输出。dsp初始化完成后,在dsp的tout0,clkr0,fsx0这3个引脚可以看到连续输出的脉冲。3.2 ad50的初始化此时主要是设置dsp的xf引脚输出为高,以启动ad50的二次通信,在正确设置ad50的4个控制寄存器以后,ad50开始采样数据。此时检测ad50的dout引脚能,能发现引脚有连续的信号输出。3.3 设置dsp中断dsp的中断负责从缓冲串口读取数据,可以在ccs中查看读取的数据是否正确,如果每次读取的都是0或者同一个数据,说明ad50没有正常工作,此时需检查dsp或者ad50是否初始化成功。3.4 数据存储dsp从缓冲串口读取数据存放到ram,连续存放500或者1000个数据,可以通过ccs的画图功能看到采集到的数据。这时主要判断采样频率是否正确、有没有数据丢失等。3.5 数据输出 将ram中的数据直接送到ad50的d/a单元,转换成模拟信号后输出。这时从ad50的模拟信号输出端可以看到和输入端一样的信号。3.6 fft算法本系统软件设计主要实现fft算法和各频率和对应功率的分析和显示,由于dsp语言表达和运算能力比较强且具有很好的可移植性和硬件控制能力,则采用dsp语言实现。总体程序流程图如图3.1所示。 图3.1 总体程序流程图本设计中fft根据dft的基二分解方法,在第l(l表示从左到右的运算级数,l=1,2,3m)级中,每个蝶形的两个输入数据相距b(l-1)个点,同一旋转因子对应着间隔为2l点的2(m-l)个蝶形。从输入端开始,逐级进行,在进行l级运算时,依次求出2(l-1)不同的旋转因子,每求出一个旋转因子,就计算完它对应的所有的2(m-l)个蝶形。因此用三重循环程序实现fft变换。同时采用原址计算,可节省大量的存储单元。fft算法的程序框图如图3.2所示。图3.2 fft算法的程序框图系统用于实现语音信号的采集和播放,收到数据后,ad50对数据进行模数转换,变成数字语音信号后存储于内部ram,然后输出到ad50,ad50进行数模转换后输出到相应的后端处理电路,最后由后端电路将输入的语音信号显示。4 总结在这次课程设计中,我遇到了许多问题,这些问题是我们初学者经常会遇到的问题。通过老师的指导,和自己的思考,总结如下:问题1:单步可以运行,连续运行时总回0地址。解决办法:watchdog没有关,连续运行复位dsp回到0地址。问题2:out文件不能load到片内flash中。解决办法:flash不是ram,不能用简单的写指令写入,需要专门的程序写入。ccs和csourcedebugger中的load命令,不能对flash写入。out文件只能load到片内ram,或片外ram中。问题3:在flash中如何加入断点解决办法:在flash中可以用单步调试,也可以用硬件断点的方法在flash中加入断点,软件断点是不能加在rom中的。硬件断点,设置存储器的地址,当访问该地址时产生中断。问题4:中断向量解决办法:c2000的中断向量不可重定位,因此中断向量必须放在0地址开始的flash内。在调试系统时,代码放在ram中,中断向量也必须放在flash内。问题5:dsp初始化解决办法:dsp在reset后,许多的寄存器的初值一般同用户的要求不一致,例如:等待寄存器,sp,中断定位寄存器等,需要通过初始化程序设置为用户要求的数值。初始化程序的主要作用:1)设置寄存器初值。2)建立中断向量表。3)外围部件初始化。gel文件的功能:gel文件的功能同emuinit.cmd的功能基本相同,用于初始化dsp。但它的功能比emuinit的功能有所增强,gel在ccs下有一个菜单,可以根据dsp的对象不同,设置不同的初始化程序。以tms320lf2407为例:#definescsr10x7018;定义scsr1寄存器#definescsr20x7019;定义scsr2寄存器#definewdkey0x7025;定义wdkey寄存器#definewdntr0x7029;定义wdntr寄存器startup();开始函数gel_mapreset();存储空间复位gel_mapadd(0x0000,0,0x7fff,1,1);定义程序空间从00007fff可读写gel_mapadd(0x8000,0,0x7000,1,1);定义程序空间从8000f000可读写gel_mapadd(0x0000,1,0x10000,1,1);定义数据空间从000010000可读写gel_mapadd(0xffff,2,1,1,1);定义i/o空间0xffff可读写gel_mapon();存储空间打开gel_memoryfill(0xffff,2,1,0x40);在i/o空间添入数值40h*(int*)scsr1=0x0200;给scsr1寄存器赋值*(int*)scsr2=0x000c;给scsr2寄存器赋值,在这里可以进行mp/mc方式的转换*(int*)wdntr=0x006f;给wdntr寄存器赋值*(int*)wdkey=0x055;给wdkey寄存器赋值*(int*)wdkey=0x0aa;给wdkey寄存器赋值cmd文件:由3部分组成:1)输入输出定义:.obj文件:链接器要链接的目标文件;.lib文件:链接器要链接的库文件;.map文件:链接器生成的交叉索引文件;.out文件:链接器生成的可执行代码;链接器选项。2)memory命令:描述系统实际的硬件资源。3)sections命令:描述段如何定位。通过近两周的课程设计,我学到了许多知识,使我实现了从茫然到基本的认识到比较熟练的运用dsp的转变。刚开始自己编的程序运行就错误很多,当时都没信心能把这个课程设计完成,但什么都要自己面对的。后来在老师的指导和自己的思考下,我把程序统统都重新写了一遍,并反复修改,最后通过编译。在后面的时间里,我顺利完成了课程设计。参考文献1 邹彦. dsp原理及应用m. 北京:电子工业出版社,2005,1.2 戴明桢.tms320c54xdsp结构、原理及应用m.北京航空航天大学出版社,2001,8.3 胡圣尧. dsp原理及应用m.东南大学出版社,2008.7.4 清源科技.tms320c54xdsp应用程序设计教程m.机械工业出版社,2004,1.5 清源科技.tms320c54x硬件开发教程m.机械工业出版社,2003,1.附录a音频信号频谱分析完整程序ex12.asm* filename:ex12.asm * description:音频信号频谱分析实验 * copyright(c) sanzhi electronic, author zpin *.title ex12bsp.set1;当前使用mcbsp1;mcbsp 内存映射寄存器spsa0.set 038hspsd0.set 039hdrr10.set 021hdrr20.set020hdxr10.set 023hdxr20.set022hspsa1.set 048hspsd1 .set 049hdrr11 .set041hdrr21 .set 040hdxr11 .set 043hdxr21 .set042h;mcbsp subaddressed registersspcr1.set00hspcr2.set01hrcr1.set02hrcr2.set03hxcr1.set04hxcr2.set05hsrgr1.set06hsrgr2.set07hmcr1.set08hmcr2.set09hrcera.set0ahrcerb.set0bhxcera.set0chxcerb.set0dhpcr.set0eh.if bsp = 0spsa.setspsa0spsd.setspsd0rdrr.setdrr10rdxr.setdxr10.endif.if bsp = 1spsa.setspsa1spsd.setspsd1rdrr.setdrr11rdxr.setdxr11.endifwr_sub_reg.macro val,addr;写mcbsp控制寄存器stm addr,spsanopstm val,spsdnop.endmrd_sub_reg.macro addr,acc;读mcbsp控制寄存器stm #:addr:,spsanopldm spsd,accnopnopnop.endmwaittrx .macro;等待串口中断waitr? rd_sub_reg spcr1,a and #1录音;ld b,ab play;已结束-放音recordld #0d000h,bsub ar2,bbc load,bneq;录制数据放完,再从头放起stm#4000h,ar2load ld *ar2+,a;加载录制数据playand #0fffeh,a;放音stlm a,rdxrretetransrsbx xfrete.endex12.mak/* code composer v1 project data * the following section contains data generated by code composer to store project information like build options, source filenames and mand filenameexperi.cmd 1project rootd:dsp_user_softsanzhi12语音录放build options3linker = -o ex1.out -x assembler = -s compiler = -g -as -frd:dsp_user_softsanzhi source filesex12.asm 880946490 1-18158dependencies 0 -802version2.0*/-o ex1.out -xex12.objexperi.cmd/* end of project data generated by code composer */exx.asmbsp .set 0 ; 5409 dsk audio in/out codec uses mcbsp0samplerate .set 8 .mmregsspcr1_val .set 0000hspcr2_val .set 0200hrcr1_val .set 040hrcr2_val .set 004hxcr1_val .set 040hxcr2_val .set 004hpcr_val .set 0chmcbsp0_to_codec0 .set 0xfemcbsp1_to_codec1 .set 0xfdcodec1_fc_on .set 0x8codec0_fc_on .set 0x4cpld_ctrl2 .set 0x4* mcbsp memory mapped registersspsa0 .set 038hspsd0 .set 039hdrr10 .set 021hdxr10 .set 023hspsa1 .set 048hspsd1 .set 049hdrr11 .set 041hdxr11 .set 043h* mcbsp subaddresed registersspcr1 .set 00hspcr2 .set 01hrcr1 .set 02hrcr2 .set 03hxcr1 .set 04hxcr2 .set 05hsrgr1 .set 06hsrgr2 .set 07hpcr .set 0eh; choose appropriate sub-address registers and drr/dxr .if bsp = 0spsa .set spsa0spsd .set spsd0rdrr .set 21h ; mcbsp0 data receive register 1rdxr .set 23h ; mcbsp0 data transmit register 1mcbsp_to_codec .set mcbsp0_to_codec0imask .set (1 4) .endifwr_mcbsp_sub_reg .macro addr,val stm addr,spsa nop stm val,spsd nop .endmrd_mcbsp_sub_reg .macro addr,acc stm #:addr:,spsa nop ldm spsd,acc nop nop nop .endmwaittrx .macro ; wait for serial port to rx wordwaitr? rd_mcbsp_sub_reg spcr1,a and #11, a bc waitr?, aeq .endmprogreg .macro progword stm #01h,rdxr waittrx stm #:progword:,rdxr waittrx .endm wait .macro stm #0008h, ar0 ;ar0 points to acclrpt *ar0 ;repeat the # of times specified in acclnop ;do nothing in the delay loop.endm .global reset,aic_init,wait_int,_cpu_to_codec_ch1,read_samples .text .mmregs .def _mainp0_serialflag .set 060hp0_serialint .set 061hsystem

温馨提示

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

评论

0/150

提交评论