音频信号分析仪.docx
《音频信号分析仪.docx》由会员分享,可在线阅读,更多相关《音频信号分析仪.docx(25页珍藏版)》请在冰豆网上搜索。
音频信号分析仪
音频信号分析仪(A题)
【本科组】
一、任务
设计、制作一个可分析音频信号频率成分,并可测量正弦信号失真度的仪器。
二、要求
1.基本要求
(1)输入阻抗:
50Ω
(2)输入信号电压范围(峰-峰值):
100mV~5V
(3)输入信号包含的频率成分范围:
200Hz~10kHz
(4)频率分辨力:
100Hz(可正确测量被测信号中,频差不小于100Hz的频率分量的功率值。
)
(5)检测输入信号的总功率和各频率分量的频率和功率,检测出的各频率分量的功率之和不小于总功率值的95%;各频率分量功率测量的相对误差的绝对值小于10%,总功率测量的相对误差的绝对值小于5%。
(6)分析时间:
5秒。
应以5秒周期刷新分析数据,信号各频率分量应按功率大小依次存储并可回放显示,同时实时显示信号总功率和至少前两个频率分量的频率值和功率值,并设暂停键保持显示的数据。
2.发挥部分
(1)扩大输入信号动态范围,提高灵敏度。
(2)输入信号包含的频率成分范围:
20Hz~10kHz。
(3)增加频率分辨力20Hz档。
(4)判断输入信号的周期性,并测量其周期。
(5)测量被测正弦信号的失真度。
(6)其他。
三、说明
1.电源可用成品,必须自备,亦可自制。
2.设计报告正文中应包括系统总体框图、核心电路原理图、主要流程图、主要的测试结果。
完整的电路原理图、重要的源程序、和完整的测试结果用附件给出。
音频信号分析仪的设计
作者:
王金庭 夏春华 单位:
湖北经济学院电子工程系 转载:
电子测量技术 发布时间:
2008-09-17
0引言
音频信号分析仪是一种用来对被测信号进行频率、频谱及波形分析的重要测量工具。
它主要利用频谱分析原理,频谱分析是把信号的能量用频率的函数显示出来,该仪器广泛应用于电声测量、音频制作、信号分析乃至振动测试等领域。
其基本工作原理是对所测量的音频信号进行DFT(离散傅立叶变换)或FFT(快速傅立叶变换)变换[1],把时域信号转变为频域信号,在此基础上可以进行各种分析。
本文将介绍一种基于FFT的音频信号分析仪的设计。
1系统硬件电路设计
本系统的硬件电路主要由信号预处理模块、信号采集模块、信号的频谱分析模块、时钟触发信号、系统控制模块和键盘显示模块六部分组成。
系统组成框图如图1。
1.1信号处理部分
信号预处理具体电路主要由信号合成、阻抗匹配、0.5fs的低通滤波、50Hz的陷波器和信号抬高等部分组成(如图2所示)。
1.1.1信号叠加电路
信号叠加电路采用反向求和电路[2],将三路信号求和后输出,运放采用OP37。
1.1.2低通滤波器
由于要求音频信号为10KHz以下,为了使信号得到更高的纯度,则需对不用的高频信号进行滤出,从而提高系统测量精度。
通过滤波器的快速设计方法设计出12KHz的低通滤波器。
1.1.350Hz陷波电路
在音频信号中,工频50Hz信号对系统的影响最大,因此,在信号处理中加入50Hz的陷波电路。
计算公式为:
f=1/2PiRC(Pi=3.1415926)。
1.1.4电平转换电路
由于ADC只能采集正电压,则需对信号进行抬高,分析计算得电路需加3V的直流电平。
1.2信号采集部分
TLC5510是美国德州仪器(TI)公司生产的8位半闪速结构模数转换器[3],它采用CMOS工艺制造,可提供最小20Msps的采样率。
可广泛用于语音信号采集、高速数据转换等。
其典型应用电路见如图3。
1.3时钟信号产生电路
通过计算,对模拟信号的采样速率为25.6KHz,则需产生25.6KHz的方波,作为A/D转换数据的速率[4]。
可采用单片集成电路函数发生器ICL8038。
ICL8038工作频率范围在几Hz到几百kHz之间,可以同时输出三角波、方波和正弦波,满足设计要求。
2软件设计
本系统软件设计主要实现FFT算法和各频率和对应功率的分析和显示[5],由于C语言表达和运算能力比较强,且具有很好的可移植性和硬件控制能力,则采用C语言实现。
总体程序流程图如图4[6]。
本设计中FFT根据DFT的基二分解方法,在第L(L表示从左到右的运算级数,L=1,2,3…M)级中,每个蝶形的两个输入数据相距B(L-1)个点,同一旋转因子对应着间隔为2L点的2(M-L)个蝶形[7]。
从输入端开始,逐级进行,在进行L级运算时,依次求出个2^(L-1)不同的旋转因子,每求出一个旋转因子,就计算完它对应的所有的2(M-L)个蝶形。
因此我们可以用三重循环程序实现FFT变换。
同时采用原址计算,可节省大量的存储单元。
3系统测试与结果分析
3.1测试仪器
1)DS5062M双踪示波器
2)EE1640C型函数信号发生器
3)数字万用表
3.2测试方法
测试主要基于三个方面[8],第一,测量系统音频信号的分析精度。
模拟音频信号的频率成分,将3路不同频率的信号通过加法器进入系统,测系统能否检测出不同的频率成分,并测量各频率成分所对应的功率,以及音频信号的总功率,分析误差。
第二,输入周期信号,判断其周期性。
第三,测试系统对正弦信失真度测试。
3.3测试结果
依据测试方法测量数据,提取其中几点测试数据如下:
输入:
f1=390Hz,f2=1135Hz,f3=4119HzV1=V2=V3=1.5V。
输出:
f1=0.4kHz,f2=1.1kHz,f3=3.9kHz
p1=0.3419W,p2=0.3860W,p3=0.3321W。
输入:
f1=821Hz,f2=3115Hz,f3=10727Hz
V1=V2=V3=1.5V。
输出:
f1=0.8kHz,f2=3.0kHz,f3=10.4kHz
p1=0.3257W,p2=0.2822W,p3=0.2740W。
通过分析,检测出信号总功率大于输入信号总功率的96%,单个频率的功率误差绝对值小与8%。
系统能够测量信号周期性及失真度。
4结论
本文介绍的音频信号分析仪加入了语音提示和频谱图显示模块,使的系统更趋于智能化、人性化。
整个系统采用凌阳单片机和简单硬件电路构成,控制简单,设计成本低,有一定的实用价值。
题目名称:
音频信号分析仪(A题)
华南理工大学电子与信息学院参赛队员:
陈旭张洋林士明
摘要:
本音频信号分析仪由32位MCU为主控制器,通过AD转换,对音频信号进行采样,把连续信号离散化,然后通过FFT快速傅氏变换运算,在时域和频域对音频信号各个频率分量以及功率等指标进行分析和处理,然后通过高分辨率的LCD对信号的频谱进行显示。
该系统能够精确测量的音频信号频率范围为20Hz-10KHz,其幅度范围为5mVpp-5Vpp,分辨力分为20Hz和100Hz两档。
测量功率精确度高达1%,并且能够准确的测量周期信号的周期,是理想的音频信号分析仪的解决方案。
关键词:
FFTMCU频谱功率
Abstract:
Theaudiosignalanalyzerisbasedona32-bitMCUcontroller,throughtheADconverterforaudiosignalsampling,thecontinuoussignaldiscrete,andthenthroughtheFFTfastFouriertransformcomputing,inthetimedomainandfrequencydomainofthevariousaudiofrequencysignalweightandpower,andotherindicatorsforanalysisandprocessing,andthenthroughthehigh-resolutionLCDdisplaysignalsinthespectrum.Thesystemcanaccuratelymeasuretheaudiosignalfrequencyrangeof20Hz-10KHz,therangeof5-5VppmVpp,resolutionof20Hzand100Hzcorrespondent.Powermeasurementaccuracyupto1%,andbeabletoaccuratelymeasuringtheperiodicsignalcycleistheidealaudiosignalanalyzersolution.
Keyword:
FFTMCUSpectrumPower
1方案论证与比较3
1.1采样方法方案论证3
1.2处理器的选择方案论证3
1.3周期性判别与测量方法方案论证3
2系统设计4
2.1总体设计4
2.2单元电路设计5
2.2.1前级阻抗匹配和放大电路设计5
2.2.2AD转换及控制模块电路设计6
2.2.3功率谱测量单元电路设计6
3软件设计7
4系统测试8
5结论9
参考文献:
9
附录:
9
附1:
元器件明细表:
9
附2:
仪器设备清单9
附3:
电路图图纸10
附4:
程序清单11
1方案论证与比较
1.1采样方法比较与选择
方案一、用DDS芯片配合FIFO对信号进行采集,通过DDS集成芯片产生一个频率稳定度和精度相当高的信号作为FIFO的时钟,然后由FIFO对A/D转换的结果进行采集和存储,最后送MCU处理。
方案二、直接由32位MCU的定时中断进行信号的采集,然后对信号分析。
由于32位MCU-LPC2148是60M的单指令周期处理器,所以其定时精确度为16.7ns,已经远远可以实现我们的40.96KHz的采样率,而且控制方便成本便宜,所以我们选择由MCU直接采样。
1.2处理器的比较与选择
由于快速傅立叶变换FFT算法设计大量的浮点运算,由于一个浮点占用四个字节,所以要占用大量的内存,同时浮点运算时间很慢,所以采用普通的8位MCU一般难以在一定的时间内完成运算,所以综合内存的大小以及运算速度,我们采用Philips的32位的单片机LPC2148,它拥有32K的RAM,并且时钟频率高达60M,所以对于浮点运算不论是在速度上还是在内存上都能够很快的处理。
1.3周期性判别与测量方法比较与选择
对于普通的音频信号,频率分量一般较多,它不具有周期性。
测量周期可以在时域测量也可以在频域测量,但是由于频域测量周期性要求某些频率点具有由规律的零点或接近零点出现,所以对于较为复杂的,频率分量较多且功率分布较均匀且低信号就无法正确的分析其周期性。
而在时域分析信号,我们可以先对信号进行处理,然后假定具有周期性,然后测出频率,把采样的信号进行周期均值法和定点分析法的分析后即可以判别出其周期性。
综上,我们选择信号在时域进行周期性分析和周期性测量。
对于一般的音频信号,其时域变化是不规则的,所以没有周期性。
而对于单频信号或者由多个具有最小公倍数的频率组合的多频信号具有周期性。
这样我们可以在频域对信号的频谱进行定量分析,从而得出其周期性。
而我们通过先假设信号是周期的,然后算出频率值,然后在用此频率对信号进行采样,采取连续两个周期的信号,对其值进行逐次比较和平均比较,若相差太远,则认为不是周期信号,若相差不远(约5%),则可以认为是周期信号。
2系统设计
2.1总体设计
音频信号经过一个由运放和电阻组成的50Ohm阻抗匹配网络后,经由量程控制模块进行处理,若是一般的100mV-5V的电压,我们选择直通,也就是说信号没有衰减或者放大,但是若信号太小,12位的A/D转换器在2.5V参考电压的条件下的最小分辨力为1mV左右,所以如果选择直通的话其离散化处理的误差将会很大,所以若是采集到信号后发现其值太小,在20mV-250mV之间的话,我们可以将其认定为小信号,从而选择信号经过20倍增益的放大器后再进行A/D采样。
经过12位A/D转换器ADS7819转换后的数字信号经由32位MCU进行FFT变换和处理,分析其频谱特性和各个频率点的功率值,然后将这些值送由Atmega16进行显示。
信号由32位MCU分析后判断其周期性,然后由Atmegal6进行测量,然后进行显示。
总体设计框架图
2.2单元电路设计
2.2.1前级阻抗匹配和放大电路设计
信号输入后通过R5,R6两个100Ohm的电阻和一个高精度仪表运放AD620实现跟随作用,由于理想运放的输入阻抗为无穷大,所以输入阻抗即为:
R5//R6=50Ohm,阻抗匹配后的通过继电器控制是对信号直接送给AD转换还是放大20倍后再进行AD转换。
在这道题目里,需要检测各频率分量及其功率,并且要测量正弦信号的失真度,这就要求在对小信号进行放大时,要尽可能少的引入信号的放大失真。
正弦信号的理论计算失真度为零,对引入的信号失真非常灵敏,所以对信号的放大,运放的选择是个重点。
我们选择的运放是TI公司的低噪声、低失真的仪表放大器INA217,其失真度在频率为1KHz,增益为20dB(100倍放大)时仅为0.004%,其内部原理图如下图所示。
其中放大器A1的输出电压计算公式为
OUT1=1+(R1/RG)*VIN+
同理,OUT2=1+(R2/RG)*VIN--
R3、R4、R5、R6及A3构成减法器,最后得到输出公式
VOUT=(VIN2-VIN1)*[1+(R1+R2)/RG]
R1=R2=5K,取RG=526,从而放大倍数为20。
2.2.2AD转换及控制模块电路设计
采用12位AD转换器ADS7819进行转换,将转换的数据送32位控制器进行处理。
2.2.3功率谱测量
功率谱测量主要通过对音频信号进行离散化处理,通过FFT运算,求出信号各个离散频率点的功率值,然后得到离散化的功率谱。
由于题目要求频率分辨力为100Hz和20Hz两个档,这说明在进行FFT运算前必须通过调整采样频率(fK)和采样的点数(N),使其基波频率f为100Hz和20Hz。
根据频率分辨率与采样频率和采样点数的关系:
f=fk/N;
可以得知,fk=N*f;
又根据采样定理,采样频率fk必须不小于信号频率fm的2倍,即:
fk>=2fm;
题目要求的最大频率为10KHz,所以采样频率必须大于20KHz,考虑到FFT运算在2的次数的点数时的效率较高,所以我们在20Hz档时选择40.96KHz采样率,采集2048个点,而在100档时我们选择51.2KHz采样率,采集512个点。
通过FFT分析出不同的频率点对应的功率后,就可以画出其功率谱,并可以在频域计算其总功率。
3软件设计
主控制芯片为LPC2148,测量周期为Atmega16实现,由于处理器速度较快,所以采用c语言编程方便简单.软件流程图如下:
主流程图周期性分析和测量流程图
4系统测试
4.1总功率测量(室温条件下)
输入信号
频率
幅度
测量时域总功率(w)
测量频域总功率(w)
理论值
估算误差
正弦波
100Hz
1Vpp
0.127
0.129
0.125
1.2%
1KH
1Vpp
0.126
0.129
0.125
1.3%
音频信号
20Hz-10KHz
20mVpp-5Vpp
0.783
0.761
X
《5%
1.803
1.777
X
《5%
结果分析:
由于实验室提供的能够模仿音频信号的且能方便测量的信号只有正弦信号,所以我们用一款比较差点的信号发生器产生信号,然后进行测量,发现误差不达,在+-5%以内。
我们以音频信号进行测量,由于其实际值无法测量,所以我们只能根据时域和频域以及估计其误差,都在5%以内。
4.2单个频率分量测量(室温条件下)
输入信号
频率
幅度
最大功率频点
最大功率频点功率
次大功率频点
次大功率频点功率
正弦波
500Hz
100mVpp
500Hz
1.20mw
520Hz
0.04mW
正弦波
5KHz
1Vpp
5KHz
120mw
5.02KHz
3.56mw
音频信号
20Hz-10K
X
880Hz
23mw
600Hz
4.3mw
结果分析:
我们首先以理论上单一频率的正弦波为输入信号,在理想状况下,其频谱只在正弦波频率上有值,而由于有干扰,所以在其他频点也有很小的功率。
音频信号由于有多个频点,所以没有一定的规律性。
由于音频信号波动较大,没有一定的规律,且实验室没有专门配置测量仪器,所以我们只好以正弦波和三角波作为信号进行定量分析测量,以及对音频信号进行定性的分析和测量。
我们发现其数字和用电脑模拟的结果符合得很近。
5结论
由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。
参考文献:
《信号与系统》,ALANV.OPPENHEIM著,西安:
西安交通大学出版社,1997年;
《数字图像处理学》,元秋奇著,北京:
电子工业出版社,2000年;
《模拟电子线路基础》,吴运昌著,广州:
华南理工大学出版社,2004年;
《数字电子技术基础》,阎石著,北京:
高等教育出版社,1997年;
《数据结构与算法》,张晓丽等著,北京:
机械工业出版社,2002年;
《ARM&Linux嵌入式系统教程》,马忠梅等著,北京:
北京航空航天大学出版社,2004年;
《单片机原理及应用》,李建忠著,西安:
西安电子科技大学,2002年;
附录:
附1:
元器件明细表:
1、LPC2148
2、ATMEGA16
3、AD620
4、ADS7819
5、液晶320*240
附2:
仪器设备清单
1、低频信号发生器
2、数字万用表
3、失真度测量仪
4、数字示波器
5、稳压电源
附3:
电路图图纸
电源系统
前级放大和AD转换
Atmega16控制板
附4:
程序清单
/*/////////////////////////////////////////////////////////////////////////////////////////////////
FFT转换函数,dataR:
实部,datai:
虚部,
////////////////////////////////////////////////////////////////////////////////////////////////*/
voidFFT(float*dataR,float*dataI,intn)
{
inti,L,j,k,b,p,xx,qq;
intx[11]={0};
floatTR,TI,temp;
floatQQ;
//////////////////////////////////位倒置////////////////////////////////////////////////////
for(i=0;i{xx=0;
for(j=0;jx[j]=0;
for(j=0;j{x[j]=(i/count[j])&0x01;}
for(j=0;j{xx=xx+x[j]*count[n-j-1];}
dataI[xx]=dataR[i];
}
for(i=0;i{dataR[i]=dataI[i];
dataI[i]=0;
}
////////////////////////////////////蝶形运算////////////////////////////////////////
for(L=1;L<=n;L++)
{
b=1;i=L-1;
while(i>0)
{b=b*2;
i--;
}
for(j=0;j<=b-1;j++)
{p=1;i=n-L;
while(i>0)
{p=p*2;i--;}
p=p*j;
for(k=j;k{
TR=dataR[k];
TI=dataI[k];
temp=dataR[k+b];
QQ=2*pi*p/count[n];
qq=p*count[11-n];
dataR[k]=dataR[k]+dataR[k+b]*cos_tab[qq]+dataI[k+b]*sin_tab[qq];
dataI[k]=dataI[k]-dataR[k+b]*sin_tab[qq]+dataI[k+b]*cos_tab[qq];
dataR[k+b]=TR-dataR[k+b]*cos_tab[qq]-dataI[k+b]*sin_tab[qq];//查表运算
dataI[k+b]=TI+temp*sin_tab[qq]-dataI[k+b]*cos_tab[qq];
}
}
}
for(i=0;i{
w[i]=sqrt(dataR[i]*dataR[i]+dataI[i]*dataI[i]);
w[i]=w[i]/count[n-1];
}
w[0]=w[0]/2;
}
///////////////////////////回放数据/////////////////////////
voidviewdata(void)
{
unsignedintkey,page,i;
page=0;
LCD_PenColor=0x1F;//红色
LCD_WriteChineseString(font5,2,40,0);
LCD_PenColor=0xFC;//蓝色
while
(1){
key=getkey();
if(key!
=0xFF)
{
if(key==4){SystemState=fft_mode;return;}//返回
if(key==2){
LCD_ClearScreen();
LCD_WriteChineseString(font3,2,10,0);LCD_WriteChineseString(font4,2,60,0);
i=page*4+1;
p3510(Re[i],0,15);print3510(Im[i]*mode,50,15);
p3510(Re[i+1],0,26);print3510(Im[i+1]*mode,50,25);
p3510(Re[i+2],0,38);print3510(Im[i+2]*mode,50,35);
p3510(Re[i+3],0,50);print3510(Im[i+3]*mode,5