您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 北京信息科大学综合电子设计课程设计(语音存储于回放系统)
数字化语音存储与回放系统1.题目数字化语音存储与回放系统2.任务设计并制作一个数字化语音存储与回放系统,其示意图如下:3.要求(1)放大器1的增益为46dB,放大器2的增益为40dB,增益均可调;(2)带通滤波器:通带为300Hz~3.4kHz;(3)ADC:采样频率fs=8kHz,字长=8位;(4)语音存储时间≥10秒;(5)DAC:变换频率fc=8kHz,字长=8位;(6)回放语音质量良好。4.原理电路的设计(1)设计方案总体原理框图如下:首先通过MIC录入一段语音信号,信号通过放大电路后使信号的幅度达到A/D采样的要求,放大电路中要可以实现增益可调。放大后的模拟语音信号送入ADC0809转换成数字语音驻极体话筒输入射级跟随器AGC、放大器电平提升、限幅电路带通滤波电路ADC0809AT89C52键盘显示62256存储DAC0832、IV转换电容隔直、带通滤波器LM386功率放大喇叭输出数据,然后通过C52单片机把数字语音数据存储到外部数据存储器62256上。回放时,由程序控制从62256中提取出数字语音数据,然后送入DAC0832转换成模拟信号,最后送入扬声器回放出来。其中ADC0809采样频率以及DAC0832转换频率由单片机的定时/计数器产生。语音采集原理人耳能听到的声音是一种频率范围为20Hz~20000Hz的声波,而一般语音频率最高为3400Hz。语音的采集是指语音声波信号经麦克风和高频放大器转换成有一定幅度的模拟量电信号,然后再转换成数字量的全过程。根据“奈奎斯特采样定理”,采样频率必须大于模拟信号最高频率的两倍,由于语音信号频率为300~3400Hz,所以把语音采集的采样频率定为8kHz。语音生成原理单片机语音生成过程,可以看成是语音采集过程的逆过程,但又不是原封不动地恢复原来的语音,而是对原来语音的可控制、可重组的实时恢复。在放音时,只要依原先的采样值经D/A接口处理,便可使原音重现。(2)硬件电路设计输入电路:选择话筒时,需要先仔细的挑选灵敏度较高的话筒,并判别好话筒的极性。所选话筒的工作电流为几毫安,故选择电源电压5V,限流电阻20K,隔直电容4.7uf。射级跟随器:射极跟随器就是一种电流放大器。信号从发射极输出的放大器。其特点为输入阻抗高,输出阻抗低,电压放大系数略低于1,负载能力强,常作阻抗变换和级间隔离用。它从基极输入信号,从射极输出信号。在话筒的输出端接一个跟随器提高了负载能力,以便于后级放大。仿真和实际焊接后测试都得到较好的结果。AGC自动增益放大电路:OUT由于声音信号离传感器较远时,输出的声信号比较弱;反之,则较强。当声音信号离传感器较远时,输出信号很微弱,就要把放大器的放大倍数提高。但是放大倍数的提高,对于近距离的目标,输出信号将出现饱和现象(被后级限幅电路滤去)。因此就有必要设计一种自动增益电路,当信号微弱时放大倍数提高,而当信号强烈时放大倍数相对较小。自动增益电路是根据场效应管GS间的电压变化会导致其DS间电阻的变化的原理,将DS之间的电阻作为放大电路的反馈电阻,将输出电压信号接入GS。如上图,将U1的输出接到Q2(N沟道增强型MOS管)的输入,当输出信号变小时,反馈电阻(DS之间的电阻)变大,U3放大倍数增加,U1的输入增加;当输出信号变大时,反馈电阻(DS之间的电阻)变小,U3放大倍数变小,U1的输入减小。最后通过U2以及可调电阻R14(反馈电阻)实现最终增益可调。仿真和实际电路焊接后测试,都得到较好的效果。电平提升电路:由于声音信号有正有负,而运算放大器的输出信号是对称的即可正可负,若直接将这个对称的信号给ADC0809的输入端将导致ADC采集不准确。ADC0809的参考电压接的是+5v,OUTOUT去掉这一块电路,直接将2和5短接故其采集的信号范围为0—5v。一方面为保证ADC0809采样有效,另一方面保证它有一定的采样精度,须将上述放大电路的输出信号的电压提升。此电压提升电路电路是由一个运算放大器NE5532所搭建而成的加法器。加法器的一个输入端接语音采集信号,另一个输入端接偏置直流电压(通过R7电压可调),从而使加法器输出保证在0—4.5v之间,即保证ADC输出不出现负值的电压。仿真时,电平提升电路是没有问题的,但是在实际焊完电路后,经测试。通过加法器后信号波形失真,经过一番调试,发现上实际上并不需要通过运算放大器而是直接将导线2和5短接一起就能实现电平提升且可调。(如上图)限幅电路:为了防止输入到ADC0809的电压过大(超过了5v)而出现ADC采样的不准确现象,需要设计了一个限幅器。此限幅器利用二极管的电压钳制作用,如上图,当输出电压超过5v时,二极管会将输出钳制在最大值5v。(二极管的导通电压为0.7v)由于前面已将电平提升到0v之上,将此限幅器的输出作为ADC0809的输入端就可以保证ADC0809的输入信号在0–5v之间。仿真和实际焊接测试后都得到较好的结果。带通滤波电路:为了滤除不必要的干扰及杂波,系统前向通道和后向通道中各设计了一个通带为300Hz~3400Hz的带通滤波器。此带通滤波器由一个低通滤波器和一个高通滤波器串联而成。OUT其中低通滤波器上限频率为3400Hz,高通滤波器下限频率为300Hz,电路如图3所示,其中U1、U2构成四阶低通滤波器,U3、U4构成四阶高通滤波器。在设计带通滤波器时,按品质因数Q的大小,分为窄带(Q10)和宽带(Q10)两种情况,若上限频率为fh,下限频率为fl,中心频率为fo,则lhfff0)1(0fffQh滤波器的类型可由下面的公式给出定量计算,当25.1~1lhlhffff时,应采用高通-低通相级联的方式来实现。根据实际要求,设计300Hz~3.4kHz的带通滤波器,采用两级低通级联、两级高通级联来提高Q值,并把低通和高通模块级联起来。通过仿真,此电路确实能有效滤除低频和高频的噪声,实际焊接完成的电路经过测试,发现一旦低通滤波器和高通滤波器接在一起,滤波效果就会非常的差,几经检查未果。为了取得最佳的滤波效果,考虑到实际上主要滤除的还是高频频信号,故在实际操作上,放弃了高通滤波器。ADC0809:利用单片机的ALE端口在单片机正常工作时,有2Mhz的脉冲信号,通过74HC161二分频之后直接作为AD的时钟信号。ADC0809采用单缓冲方式工作,通过通道0将输入的模拟声信号转换为数字语音信号,具体将在软件设计中说明。DAC0832:ALEINDAC0832是8位双极性电流驱动的数模转换器。由于所要转换输出的信号为语音信号,其本身是双极性的信号,因此对杂音的处理尤其重要。在无信号输出时,希望其输出对地是零电位,因此应用两组运算放大器作为电流到电压的转换器,完成双极性控制的目的。数字信号经D/A转换、双极性电流至电压变换后已成为模拟语音信号。理论上输出信号为-5v~+5v。功率提升电路:从DA转换出来的语音信号经过大电容隔直、后级带通滤波之后,输出-5v~+5v语音信号,已足以驱动一般的耳机。考虑到实际上可能还需要用到扬声器回放,故输出之前再通过音频功率放大器LM386经过适当的功率提升,保证能过驱动扬声器。数字控制电路、AD、DA:利用74LS138选通四片62256,三个按键分别表示录音、暂停(长按代表停止)和播放,四个发光二极管分别代表录音、暂停、停止和播放状态。(3)软件设计程序主要的功能分为以下几部分:(1)启动ADC0809进行模/数转换,采样得到数字数据并存储到62256中。(2)把数据从62256中提取出来,启动DAC0832进行数/模转换。(3)控制计数/定时器T0、T1产生8KHz的中断信号。(4)外部中断INT0检测是否有按键按下。(5)对整个系统的运行进行控制。主要子程序说明:键盘检测子程序:采用中断方式工作的独立式键盘,一旦有键按下,则产生中断,调用键盘检测程序,返回键值。录音子程序:利用定时器T0定时125us,保证数据采样数据为8Khz。中断程序中调用录音子程序,每采集一次数据,调用一次数据压缩子程序,将压缩后的数据存入62256中。数据压缩(解压)原理:当有两个以上连续相等的数据时,可以用三个字节表示,即前两个字节相等表示被压缩的数据值,后一个字节表示重复的次数。由于语音信号自身的特点,即冗余度大,这就为此种压缩提供了可能。同样,在解压时,程序读入数据流,当遇到两个相等数据时则重复此数,重复次数由后一个数据决定。62256存储原理:62256为32K×8的ram存储器,采用分页的原理,每页32Kb,利用3——8译码器根据实际情况分别选通四片存储器达到分页的目的。放音子程序:利用定时器T1定时125us,保证播放的语音速度与采集时相同。中断程序中调用放音子程序,放音子程序中访问外部数据存储器并且调用解压子程序解压数据。最后在主程序中不断检测当前状态,亮相应的灯指示当前状态,并进入相应的状态。5.设计、调试过程中的问题及课程设计总结体会:两个星期的课程设计已经结束,整个过程中有过惊喜,有过失望。虽然最终并未取得预期的圆满结果,十分的令人失望,但是这个过程让我学会了很多。最重要的是要先在此对两位杨老师不辞辛劳的耐心辅导表示衷心的感谢。回想起整个课设过程,遇到的主要问题和解决方法以及体会如下:一、首先遇到的问题是分析设计的任务和设计要求,大概构造整个设计思路,然后查找相关资料。在具体过程中,我是边下载资料边浏览,看了这个模块的资料忘了那个模块的资料,重复的下载查看资料,浪费了大量的时间。现在想想,觉得应该是在大概的确定最终方案后,先将整个方案分块,分成具体的几个模块。然后浏览分析所查得的资料,将所有资料分别对应各个模块分类。最后对应各个模块设计具体的方案。二、接下来遇到的问题就是利用multisim软件仿真模拟电路。现在总结起来,由于仿真与实际情况相差较大,觉得不应当在仿真中花费太多的精力。还有,在各个模块的仿真中应当考虑到具体模块的输入输出信号的变化范围,在这个输入范围内调节输入,这样才能达到仿真的实际的最大相似,保证最终结果。最后,仿真中在选择所使用的元器件时,应当考虑到实验室所能提供的元器件,尽量避免使用实验室无法提供的器件,这样才不会导致最后焊接电路时发现缺少相应元器件,影响设计进度。另外在对各个模块仿真时还应考虑各个模块之间的连接问题,连接后会不会使模块之间相互影响,导致模块无法正常工作。三、再接下来的问题就是连接控制电路。即单片机与DA、AD、62256、键盘、显示的连接问题。这个时候就要先了解清楚单片机具体功能、单片机与各个外围电路的连接方式以及各个外围电路的工作方式,还要将这些硬件上的连接与软件的设计综合起来考虑,分配好单片机的各个端口与外围电路的连接,使硬件的连接最大的方便软件的设计,而且还要切实可行。对于任何不清楚、不确定的地方,一定要先弄明白,任何模糊的地方都有可能导致最后竹篮打水一场空,这部分电路决定了最终结果能不能实现。最后就是将各个外围电路分模块,具体设计,画出连接电路。四、然后就是根据控制电路的设计进行软件编程的问题了。对于软件编程,脑力所限,总有一些漏洞。并不是一次编好就搞定的,写好程序后可以利用proteus仿真,不断的测试,发现问题,解决问题。这一次写好后,隔一段时间再读一下程序,检查漏洞,修改程序。还有,编写程序之初就应该考虑到程序应该便于查看、修改,按格式规范写程序,写好函数解释,对重要语句以及重要变量进行相关解释,而且程序应尽量的优化、简洁、思路清晰明了。最后,还可以让别人读一下自己的程序,也更容易发现程序问题。五、再然后就是焊接电路的问题了。这个问题可以说是课设中较难、最容易出现问题的地方。我也在这个环节上吃了不少亏。首先,焊接之前要想想各个器件如何排布,做到便于测试、便于检查错误、便于发现解决问题、便于焊接、尽量美观等等。实际焊接中,将各个模块分开,分别引出输入输出,每焊接完一个模块利用万用表、信号发生器、电源、示波器,查错、改错,相邻模块完成后连接起来一并测试,检错、改错。然后,焊接电路时要注意焊接时,是否虚焊,是否不小心
本文标题:北京信息科大学综合电子设计课程设计(语音存储于回放系统)
链接地址:https://www.777doc.com/doc-6054825 .html