音频信号分析仪_第1页
音频信号分析仪_第2页
音频信号分析仪_第3页
音频信号分析仪_第4页
音频信号分析仪_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

PAGE1222/222/21音频信号分析仪指导老师:邓晶年纪专业:11信息工程成员:刘丽梅(1128401039)东飞(1128401014)罗兰(1128401128)日期:2014年6月摘要:本音频信号分析仪基于快速傅里叶变换的原理,以32位CPUSTM32构成的最小系统为控制核心,由电压跟随、程控放大、峰值检测、抗混叠滤波等模块组成。本音频信号分析仪由STM32控制,通过AD转换,对音频信号进行采样,把连续信号离散化,然后通过FFT运算,对音频信号各个频率分量以及功率等指标进行分析和处理,然后通过高分辨率的LCD对信号的频谱进行显示。该系统能够精确测量的音频信号频率范围为50Hz-10KHz,其幅度范围为5mVpp-5Vpp,分辨力为50Hz。关键词:FFT嵌入式系统前级信号处理功率谱Abstract:ThisaudiosignalanalyzerbasedontheprincipleoffastFouriertransform,theminimumsystemconsistingofSTM32embeddedsystemascontrolcore,followedbythevoltage,program-controlledamplifier,peakdetection,suchasantialiasingfiltermodules.Thisaudiosignalanalyzercontrolledbyanembeddedsystem,throughtheADconversion,theaudiosignalsampling,thecontinuoussignaldiscretization,thenthroughFFTarithmetic,eachfrequencycomponentandthepowerindexintheaudiosignalanalysisandprocessing,andthenthroughhighresolutiondisplayLCDfrequencyspectrumofthesignalandthecharacteristicsof.Thesystemcanaccuratelymeasuretheaudiosignalfrequencyrangeof50-10KHZ,itsamplituderangeis5mVpp-5Vpp,resolutionof50Hz.目录TOC\o"1-2"\h\z\u摘要 2目录 3引言 41系统方案比较与选择 31.1主控芯片的选择 31.2采样方法比较与选择 41.3信号功率的计算 41.4系统总体方案 42硬件设计 52.1程控放大电路设计 52.2峰值检测电路设计 62.3总硬件电路 73软件调试 94.1软件总体流程图设计 94.2程控放大程序设计 104.3FFT程序 114.4功率计算 114.5周期计算 124系统调试 125.1总硬件焊接图 125.2电压跟随电路 75.3程控放大电路 85.4峰值检测电路 85.5电压抬升电路 185.6液晶屏显示图 135.7测试结果 145总结 15参考文献 15附录1:元器件明细表和仪器设备清单 15附录2:FFT程序 15附录3:周期计算程序 17附录4:主程序 18引言早期专业的音频分析仪种类很少,在做音频测量时一般是利用万用电表、频率计、示波器及频谱仪等组合成一套音频测试系统。这种测试系统中间环节多,各环节之间接口匹配较为困难,使用起来比较麻烦,测量结果往往也不精确。

近年来出现的音频分析仪器也与仪器的主流发展趋势一致,朝着高度集成化、智能化的方向发展,这些仪器集成了复杂音频信号发生装置、功率放大装置等,具备了一些初步的图形化分析功能,使用户很容易组建音频测量系统。

美国Audio

Precision公司是一家全球最大的音频测试仪器制造商;创立于1984年,其音频测试仪器System

Two/

AP2700系列是目前音频测试业界的标准测试仪器,为Dobly,

DTS,等多家研究机构采用,是miscrosoft

DTM认证的指定仪器。

RS公司的“精灵系列”音频分析仪UP300&UP350也是这类仪器的典型代表,可测量双向信道串扰,可产生双音信号,用于调制失真分析和差频失真测量,且测量范围宽,精度较,UP350还可分析数字音频信号,采样率高达192KHz,可用于数字音频设备测量和模拟/数字混合接口的相关应用。音频信号分析仪利用频谱分析原理来分析被测信号的频率、频谱及波形。常用的频谱分析方法有:扫频法、数字滤波法、FFT法。这里提出一种基于FFT方法的音频信号分析仪设计方案,通过快速傅里叶变换(FFT)把被测的音频信号由时域信号转换为频域信号,将其分解成分立的频率分量,在此基础上对其进行各种分析,达到与传统频谱分析仪同样效果。该系统设计可应用于音频制作、信号分析等领域,具有一定的科学价值和实用价值。1系统方案比较与选择1.1主控芯片的选择本系统采用基于32位的ARMCortex-M3处理器STM32F103VBT6作为主控芯片,它具有非常丰富的片内资源,例如实时时钟(RTC)、定时器(TIM)、通用I/O接口(GPIO)、DMA控制器、A/D转换器、USART接口、I2C接口、SPI接口和CAN总线接口还包括20kB的片内SRAM,128KB的片内FLASH以及一个支持USB2.O规范的全速USB外围设备等,它是整个系统的主控单元,协调其它模块完成数据采集、存储、处理、控制、传输等多项功能。它的引脚图如图1-1所示:图1-1STM32F103VB引脚图1.2采样方法比较与选择方案一:采用12位AD转换器ADS7819进行转换,将转换的数据送32位控制器进行处理。方案二:利用STM32对数据进行采集,然后利用STM32自带的12位AD转换器进行转换后送入内部,然后由STM32对数据进行处理。方案一能采集电压值为负的信号,方案二易于控制采样频率,硬件简单,综合考虑以及使硬件简单化,所以我们选择了方案二。1.3信号功率的计算方案一:通过测真有效值的方式实现,应用普通的真有效值检测芯片可以方便的测出信号在一定时间段内的总功率。但对单个频点处的功率测量无能为力。方案二:在用FFT得到信号的频谱后根据帕斯瓦尔定律可以很方便的得到信号各频率分量的功率及信号的总功率。因为本设计中我们可以通过FFT得到信号的频谱,因此方案二最适合本设计。1.4系统总体方案根据以上的方案论证与比较,先将输入信号通过电压跟随电路,一路送给峰值检测电路,然后一路送给程控放大模块,调理到ADC适合采样的输入范围内,经过抗混叠滤波后进行电压抬升,送人STM32内部的AD进行采样。根据频率分辨力来确定采样率,利用STM32快速数据处理能力,在其中完成1024点的FFT运算计算该信号的功率谱,并能实时显示信号总功率及主要频率成分功率。其中,对于信号周期性的判断与测量,我们采用自相关的方法,大大提高了判断的准确性。最后系统总体实现方案如图1-3所示:信号输入内部ADC峰值检测信号输入内部ADC峰值检测电压跟随电压跟随抗混叠滤波电压抬升程控放大抗混叠滤波电压抬升程控放大LCD显示STM32LCD显示STM32键盘键盘图1-4系统总体方案2、硬件设计2.1程控放大电路程控放大电路电路图如图2-1-1所示。该电路主要由2个DAC0832和1个OP07组成。令R2=R1,输出与输入的关系是Vo/Vi=-D1/D2.理论上它可以实现使信号最大放大255倍和最大缩小255倍。图2-1-2,2-1-3,2-1-4为它的仿真结果(上面的信号为输入信号,下面的信号为输出信号),分别为放大21倍,放大1倍和缩小0.6倍。图2-1-1程控放大电路电路图图2-1-220倍放大仿真图图2-1-3倍放大仿真图图2-1-40.6倍放大仿真图2.2峰值检测电路峰值检测电路图如图2-2-1所示。它的工作原理如下:初始状态电容电压Uc=0时,当输入电压Ui>0时,由于运放U1A充当跟随器,故U2=Ui。二极管D1,D2导通,电压Ui电容C充电,直至电容C上的电压Uc等于Ui的峰值。只要Ui<=Uc,二极管D1,D2截止,电容电压Uc保持不变。只有输入电压Ui>Uc时,二极管才导通,电容C进行充电。运放U1B也充当跟随器的作用,使峰值检测与后面电路隔离。它的仿真结果如图2-2-2所示。图2-2-1峰值检测电路图图2-2-2峰值检测电路仿真图2.3总硬件电路如图2-3-1所示为总硬件电路,输入信号首先经过电阻匹配和电压跟随电路,实现输入阻抗50欧姆和输入信号与后级电路隔离,然后经过放大电路,通过主板来控制放大倍数,接着接入抗混叠滤波电路,实现输入信号截止频率为10KHz,最后接入电压抬升电路,使信号电压不为负值。如图2-3-2所示为STM32与外围电路的连接图图2-3-1总硬件电路PC1PC1PC4PC53、硬件调试(1为输入(上面),2为输出(下面))3.1电压跟随电路如图3-1所示,当输入信号为幅值Vi=1.24V,频率为F=1.00KHz时,输出信号为Vo=1.28V,误差率:S1=((1.28-1.24)/1.24)*100%=3.2%图3-1电压跟随电路测试结果3.2程控放大电路如图3-2-1所示为放大21倍结果显示,当输入信号为幅值Vi-pp=130mV,频率为F=1.00KHz时,输出信号为Vo-pp=2.64V,误差率:S2=((2.73-2.64)/2.73)*100%=3.3%如图3-3-2所示为放大0.6倍结果显示,当输入信号为幅值Vi-pp=3.48V,频率为F=1.00KHz时,输出信号为Vo-pp=2.24V,误差率:S3=((2.24-2.088)/2.088)*100%=7%图3-2-1放大21倍测试结果图3-2-2放大0.6倍测试结果3.3峰值检测电路如图3-3所示,当输入信号为幅值Vi=1.12V,频率为F=4.00KHz时,输出信号为Vo=1.08V,误差率:S4=((1.12-1.08)/1.08)*100%=3.7%图3-3峰值检测电路测试结果3.4电压抬升电路图3-4为抬升1.5V电压测试结果显示,当输入信号为幅值Vi=1.48V,频率为F=1.00KHz时,输出信号为Vo=1.44V,平均值为1,59V,误差率:S5=((1.59-1.5)/1.5)*100%=6%图3-4电压抬升测试结果4软件设计4.1系统总体程序流程图系统总体程序流程图如图4-1所示,主程序见附录4。开始开始系统初始化设置系统初始化设置求峰值求峰值放大倍数设置放大倍数设置否信号采样完成?否信号采样完成?是是FFT运算FFT运算功率计算功率计算暂停健按下?LCD显示周期计算暂停健按下?LCD显示周期计算否是否是图4-1系统总体程序流程图4.2程控放大程序设计图4-2为程控放大程序流程图。峰值采样10个点峰值采样10个点求平均值求平均值是是峰值大于峰值大于1.5V?、否设置倍数为0.6否设置倍数为0.6是峰值大是峰值大70mV?否设置倍数为1否设置倍数为1设置设置倍数为21图4-2程控放大程序流程图4.3FFT程序设计FFT程序主要由位倒置和蝶形运算组成。其位倒置程序流程图如图4-3所示:i=1,j=512i=1,j=512i<1023?i<1023?是是i<j?i<j?否是否是XX[i]X[j]j最高位加1,逢2向次高位进1j最高位加1,逢2向次高位进1图4-3位倒置程序流程图FFT程序见附录2。4.4功率计算功率谱表示单位频带内信号功率随频率的变化情况,它反映了信号功率在频域的分布情况。对于功率谱的测量我们采用的是周期图法。已知随机信号的功率谱和自相关函数是傅氏变换对,即功率谱。而自相关函数定义为:,则用有限长的样本序列来估计功率密度谱即为。对于的求解,我们在STM32内部完成了1024点的基2时域抽取法FFT运算。计算出了各频率分量上的功率大小,那么根据失真度的定义,即信号中全部谐波分量的能量与基波能量之比的平方根值,正弦信号的失真度可以很方便得求出。4.5周期计算我们根据相关性能够反映信号相似程度的特点来解决周期性的判断问题。自相关函数为:。它表示信号的波形与自身经过时刻后的波形的相似程度。当m=0时具有极大值,即相似性最好的时候。当移位时间恰好等于一个周期时,又有一个极大值,且两个极大值相等,则周期即为移位时间m.实际测试时采样点要包含两个以上的周期,先取长为L的窗对数据进行加窗后再作上述的相关运算。得到需要的移位时间K后,根据采样频率即可计算出周期大小T为(为采样率)。周期程序见附录3。5、系统调试5.1总硬件焊接图图5-1为总硬件焊接图5-1总硬件焊接图5.2液晶屏显示图:当输入信号为Vi=1.05V,频率为F=1000Hz的正弦信号时,系统得到的测试结果为平均功率P均=10.979mW,是周期信号Y=1,周期为0.97ms最大功率的频率f1=1050Hz,功率为P1=4.785mW次大功率的频率f2=0Hz,功率为P2=0.2mW失真度为ds=38.2%,放大倍数为b=1;5-2液晶屏显示图5.3测试结果测试结果1如表1所示,当输入频率相同,而输入幅度不同时,测得功率随幅度而变化;当输入幅度相同,而输入频率不同时,测得周期随输入频率而变化表1输入信号实际测量类型频率(Hz)幅度(V)理论功率(mV)测量功率(mV)误差(%)周期(ms)误差(%)失真度(%)正弦10004.02161.604158.61.90.97334.1正弦10001.0511.02510.9794.60.97333.4正弦10000.050.0250.02346.40.99135.3正弦10003.77142.1137.23.41.971.538.9正弦50003.77142.1130.48.20.21151.2正弦10003.77142.1101.728.30.091036.8测试结果2如图5-3-1,图5-3-2,图5-3-3所示,当输入为2次,4次,8次谐波时,正弦波失真度分别为70.6%,85.4%,93.6%图5-3-1图5-3-2图5-3-3测试结果3如图5-3-4所示当输入信号为2000Hz与3000Hz的正弦信号相加时,测得的周期为0.9ms图5-3-46、总结从对嵌入式的一窍不通到现在基本熟练,“音频信号分析仪”课程设计起了莫大的作用。对于我们三个来说,音频信号分析仪是我们迄今为止做过的最难的课程设计。一开始的我们对这个课题充满迷茫,特别是STM32。经过上网查阅资料和自学,才对这个课题有了初步的认识与了解。因为在此之前完全没有学过嵌入式,所以看书很吃力。后来嵌入式入门后,看书就相对简单了,越学就越简单了。在此次课题设计中,可谓遇到过许多困难。因为没有熟识的人请教,所以一切都由我们自己摸索与上网查阅。在硬件调试中,因为虚焊和连接错误而反复的测量各个部分的电压。在软件调试中,问题更多。当时就是每天改程序,改程序…做的时候就感觉很累很累,做完就感觉轻松轻松。在学习上没有做不成的事,只有你不想去完成的事,坚持不懈就一定有所收获。参考文献1.《数字信号处理教程——MATLAB释义与实现》.陈怀琛著2.《嵌入式系统原理及应用》.屈召贵等著3.《ARMCortex嵌入式系统开发教程》.黄建华等著4.《STM32嵌入式微控制器快速上手》陈志旺等编著附录附录1:元器件明细表和仪器设备清单核心板STM32F103VB:1块TFT液晶屏:1块DAC0832:2个OP07:4个LM741:2个1N4148:2个电阻:若干电容:若干万用表:1个函数发生器:1台示波器:1台附录2:FFT程序structcomplex//构造复数结构{floatreal;floatimag;};typedefstructcomplexCOMPLEX;voidfft(COMPLEX*x){doubletemp_re;doubletemp_im;unsignedinti,j,k,P;unsignedintLH,K,B; COMPLEXtmp;LH=512;j=LH;for(i=1;i<1023;i++)//倒序最高位加1,逢2向次高位进位{if(i<j){tmp.real=x[j].real;tmp.imag=x[j].imag;x[j].real=x[i].real;x[j].imag=x[i].imag;x[i].real=tmp.real;x[i].imag=tmp.imag;}K=512;while((j<K)==0){j=j-K;K=K/2;}j=j+K;}//对1024点输入序列进行位for(i=1;i<=10;i++)//第一重循环控制蝶形的级数{B=pow(2,(i-1));for(j=0;j<=(B-1);j++)//控制每级的蝶形和旋转因子{P=pow(2,(10-i))*j;temp_re=cos(2*3.1415926*P/1024);temp_im=sin(2*3.1415926*P/1024);for(k=j;k<=1023;k=k+pow(2,i)){COMPLEXFFT_temp1,FFT_temp2;FFT_temp1.real=x[k].real;FFT_temp2.real=x[k+B].real;FFT_temp1.imag=x[k].imag;FFT_temp2.imag=x[k+B].imag;x[k].real=FFT_temp1.real+FFT_temp2.real*temp_re+FFT_temp2.imag*temp_im;x[k].imag=FFT_temp1.imag+FFT_temp2.imag*temp_re-FFT_temp2.real*temp_im;x[k+B].real=FFT_temp1.real-FFT_temp2.real*temp_re-FFT_temp2.imag*temp_im;x[k+B].imag=FFT_temp1.imag-FFT_temp2.imag*temp_re+FFT_temp2.real*temp_im;}}}}附录3:周期计算程序intperiod(COMPLEX*T,intk)//参数T为时域数组地址,参数k为最大功率的频率{ inti,m,t; floatRx0=0,Rxx;if(k>0) { t=512/k; } if(k>=20) { for(i=0;i<=k;i++) Rx0+=T[i].real*T[i].real; for(m=t;m<512;m++) { Rxx=0; for(i=0;i<=k;i++) Rxx+=T[i].real*T[i+m].real; if((Rx0-Rxx)/Rx0<0.04)break;//误差在4%以内则是周期信号 }} else if(k>0) { for(i=0;i<=2*t;i++) Rx0+=T[i].real*T[i].real; for(m=t;m<512;m++) { Rxx=0; for(i=0;i<=2*t;i++) Rxx+=T[i].real*T[i+m].real; if((Rx0-Rxx)/Rx0<0.04)break; }} else { for(i=0;i<=100;i++) Rx0+=T[i].real*T[i].real; for(m=2;m<512;m++) { Rxx=0; for(i=0;i<=100;i++) Rxx+=T[i].real*T[i+m].real; if((Rx0-Rxx)/Rx0<0.04)break; }} returnm;}附录4:主程序intmain(void){STM32_init(); delay_init(56); LCD_Init();TIM2->CR1|=0x01; GPIO_Write(GPIOB,0x00ff);while(1) { shua=1; TIM3->CR1|=0x01; while(count!=10); average=sum/10; //峰值大于3V,倍数为0.6;峰值大于140mv,倍数为1;峰值大于25mv,倍数为21;峰值小于25mv,倍数为101 if(average>1861) { GPIO_Write(GPIOB,0x03ff);/ LCD_ShowString(10,130,16,"b:0.6",1); } else if(average>160) { GPIO_Write(GPIOB,0x00ff); LCD_ShowString(10,130,16,"b:1",1);} else { GPIO_Write(GPIOB,0x14ff); LCD_ShowString(10,130,16,"b:21",1); } while(flag);//等待采集信号1024点结束for(i=0;i<1024;i++){ x[i].real=y[i].real; x[i].imag=0; } fft(x);//FFT计算t=frequency(x);//功率计算dis=(u16)(1000*sqrt((power/2-Max)/Max));//失真度cir=period(y,t);//周期计算 if(cir==(512/t)||cir==512||cir==2) yes=0; else yes=1; cir=1000*cir/512; /************液晶屏显示*************/ LCD_ShowString(10,10,16,"P:",1); LCD_ShowNum(50,10,(u16)(power*100),7,16); LCD_ShowString(120,10,16,"mW(e-2)",1); if(yes==1) { LCD_ShowString(10,25,16,"Y:1",1); LCD_ShowString(10,40,16,"T:",1); LCD_ShowNum(50,40,cir,3,16); LCD_ShowString(110,40,16,"ms(e-2)",1); } else LCD_ShowString(10,25,16,"N:0",1); LCD_ShowString(10,55,16,"f1:",1); LCD_ShowNum(50,55,50*t,5,16); LCD_ShowString(100,55,16,"Hz",1); LCD_ShowString(10,70,16,"p1:",1); LCD_ShowNum(50,70,(u16)(Max*100),5,16); LCD_ShowString(100,70,16,"mW(e-2)",1); LCD_ShowString(10,85,16,"f2:",1); LCD_ShowNum(50,85,50*f2,5,16); LCD_ShowString(100,85,16,"Hz",1); LCD_ShowString(10,100,16,"p2:",1); LCD_ShowNum(50,100,(u16)x[f2].real,5,16); LCD_ShowString(100,100,16,"mW",1); LCD_ShowString(10,115,16,"ds:",1); LCD_ShowNum(50,115,dis,5,16); LCD_ShowString(100,115,16,"/1000",1); for(i=0;i<220;i++) { y[i].real=40*y[i].real; x[i].real=x[i].real; GUI_DrawPoint(10+i,220-y[i].real,RED); if(i>0) LCD_DrawLine((9+i),220-y[i-1].real,(10+i),220-y[i].real);//画时域波形 LCD_DrawLine((10+i),lcddev.height,(10+i),lcddev.height-(u16)x[i].real);//画频率波形 delay_ms(10); } while(shua);LCD_Clear(WHITE); }}目录TOC\o"1-2"\h\z第一章项目的意义和必要性 11.1项目名称及承办单位 11.2项目编制的依据 11.3肺宁系列产品的国内外现状 21.4产业关联度分析 31.5项目的市场分析 4第二章项目前期的技术基础 82.1成果来源及知识产权情况,已完成的研发工作 82.3产品临床试验的安全性和有效性 8第三章建设方案 233.1建设规模 233.2建设内容 233.3产品工艺技术 233.5产品质量标准 293.6土建工程 373.7主要技术经济指标 39第四章建设内容、地点 414.1建设内容及建设规模 414.2建设地点 414.3外部配套情况 44第五章环境保护、消防、节能 465.1环境保护 465.2消防 495.3节能 50第六章原材料供应及外部配套条件落实情况 526.1主要原辅材料、燃料、动力消耗指标 526.2公用工程 5

温馨提示

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

评论

0/150

提交评论