电子设计大赛音频信号分析仪设计.docx

上传人:b****5 文档编号:8638049 上传时间:2023-02-01 格式:DOCX 页数:15 大小:161.79KB
下载 相关 举报
电子设计大赛音频信号分析仪设计.docx_第1页
第1页 / 共15页
电子设计大赛音频信号分析仪设计.docx_第2页
第2页 / 共15页
电子设计大赛音频信号分析仪设计.docx_第3页
第3页 / 共15页
电子设计大赛音频信号分析仪设计.docx_第4页
第4页 / 共15页
电子设计大赛音频信号分析仪设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

电子设计大赛音频信号分析仪设计.docx

《电子设计大赛音频信号分析仪设计.docx》由会员分享,可在线阅读,更多相关《电子设计大赛音频信号分析仪设计.docx(15页珍藏版)》请在冰豆网上搜索。

电子设计大赛音频信号分析仪设计.docx

电子设计大赛音频信号分析仪设计

音频信号分析仪

本系统基于AlteraCycloneII系列FPGA嵌入高性能的嵌入式IP核(Nios)处理器软核,代替传统DSP芯片或高性能单片机,实现了基于FFT的音频信号分析。

  

音频信号分析仪 

摘要:

本系统基于AlteraCycloneII系列FPGA嵌入高性能的嵌入式IP核(Nios)处理器软核,代替传统DSP芯片或高性能单片机,实现了基于FFT的音频信号分析。

并在频域对信号的总功率,各频率分量功率,信号周期性以及失真度进行了计算。

并在FPGA中嵌入了8阶IIR切比雪夫(Chebyshev)II型数字低通滤波器,代替传统有源模拟滤波器实现了性能优异的音频滤波。

配合12位A/D转换芯片AD1674,和前端自动增益放大电路,使在50mV到5V的测量范围下,单一频率功率及总功率测量误差均控制在1%以内。

关键词:

FPGA;IP核;FFT;IIR;可控增益放大

Abstract:

ThissystemisbasedonIPcore(Nios)soft-coreprocessorsembeddedintheFPGAofAlteraCycloneIIfamily.InsteadofusingDSPormicrocontroller,weuseNiosIItoperformalow-costFFT-basedanalysisoftheaudiosignal.Andwecaculatedthepowerofthewholesignal,thepowerofeachfrequencepointthatcomponentedthesignal.Bytheway,weanlysiseditsperiodicityanddistortion.Wealsoembeddedan8-orderChebyshevIIIIRdigitallow-passfiltertoreplacethetraditionalanalogActiveFiltertoperformanexcellentaudiofilter.With12bitA/DconverterchipAD1674,andthefront-endautomaticgainamplifier,thissystem’ssingle-frequencypowerandtotalpowermeasurementerrorisbelow1%in50mVto5Vmeasurementrange.

Keyword:

FPGA;IPcore;FFT;IIR;automaticgainamplifier

 

一、          方案选择与论证

1、整体方案选择

音频分析仪可分为模拟式与数字式两大类。

方案一:

以模拟滤波器为基础的模拟式频谱分析仪。

有并行滤波法、扫描滤波法、小外差法等。

因为受到模拟滤波器滤性能的限制,此种方法对我们来说实现起来非常困难。

方案二:

以FFT为基础的的数字式频谱分析仪。

通过信号的频谱图可以很方便的得到输入信号的各种信息,如功率谱、频率分量以及周期性等。

外围电路少,实现方便,精度高。

所以我们选用方案二作为本音频分析仪的实现方式。

2、FFT计算方式选择

方案一:

使用VHDL硬件实现。

FFT的VHDL程序编写难度大,短时内不易实现。

方案二:

在FPGA中嵌入NiosII处理器,通过软件实现。

NiosII支持C语言编程方式,普通的C语言版的FFT稍加改正即可应用到本方案中。

四天之内我们不可能实现一个用硬件实现的FFT算法,因此我们选用方案二。

3、采样电路与A/D芯片选择

本设计中要求分析的信号峰峰值范围为100mVp-p~5Vp-p,用8位A/D进行采样,不能满足题目的精度要求,采用12位的A/D芯片AD1674,其分辨率可达到1.2mV(相对于5Vp-p信号),满足了题目要求的5%误差范围。

同时其100K的采样频率也满足本设计中的频率要求。

4、信号调理方案

AD1674信号输入满偏电压在双极性时为±5V,即峰峰值10V。

方案一:

将输入信号放大2倍,以达到AD1674的满偏输入,以提高A/D的精度。

但若输入信号都比较小时,采样精度就会下降。

方案二:

将前端信号放大调理电路分为几个档,针对不同幅度的信号选择合适的通道进行放大,放大倍数以当前信号中的最大峰值为选择基准。

这样在输入信号比较小时可以选择比较大的放大倍数,以提高A/D采样的精度。

明显方案2优于方案1。

5、采样及滤波方案选择

方案一:

按照奈奎斯特定律采样,以传统模拟方式滤波。

传统模拟方式或有源滤波芯片难以实现很好的频带外衰减。

从而使运算结果误差增大。

方案二:

在A/D前进行简单的抗混叠滤波,以比较高的速率采样,然后在FPGA中用数字滤波器进行精确滤波。

滤波后进行二次采样以减少运算量。

切比雪夫(Chebyshev)II型低通IIR滤波器有平坦的通带,等波纹的抑制频带、适中的过度频带,非常适合于音频滤波。

可以使分析达到很好的精度。

方案二外围电路要求少,实现方便,我们采用方案二。

6、信号功率的计算。

方案一:

通过测真有效值的方式实现,应用普通的真有效值检测芯片可以方便的测出信号在一定时间段内的总功率。

但对单个频点处的功率测量无能为力。

方案二:

在用FFT得到信号的频谱后根据帕斯瓦尔定律可以很方便的得到信号各频率分量的功率及信号的总功率。

因为本设计中我们可以通过FFT得到信号的频谱,因此方案二最适合本设计。

总体方案确定:

经过以上论证我们确定总体设计方案框图如下:

 

                        图1-1、系统整体方案框图

二、          系统具体设计与实现

1、前端可控增益放大电路及增益控制电路

针对音频信号的特点以及题目中对精度的要求,我们选用了特别适合音频信号处理的经典运放NE5532。

峰值保持部分使用普通运放TL084。

信号进入后首先经过一与50欧姆精密电阻并联的跟随器,以满足题目中的50欧姆输入阻抗的要求,同时增强带后级带负载的能力。

然后经过隔直电容进入后级放大电路。

放大电路同时设置了×1,×2,×20,×200,4个放大通道,分别对10Vp-p、5Vp-p、500mVp-p、50mVp-p信号进行不同放大,这样将可测量信号的动态范围扩展到了10mV;电路图见图2-1。

同时通过峰值保持电路记录一个FFT运算周期内的信号峰值,通过与设定的参考电压进行比较以确定信号的峰峰值范围,以作为下一次采样时放大通道的选择参考;控制器通过模拟开关来选择不同的放大通道。

峰值保持电路部分采用精密二极管与充电电容进行信号峰值保持。

为减小电容漏电流对峰值保持的影响,选择了47uF的电容。

每次采样前对读入峰峰值范围并对电容放电以记录下一次的峰峰值。

图2-1、输入信号放大通路

图2-2、峰值保持电路

2、抗混叠滤波我们选择简单易用的管脚可编程滤波芯片MAX263来实现,该滤波芯片无需外加外围电路,减少了外界环境对其性能的影响。

电路图见附图1-2

3、A/D转换部分电路见附图1-3。

4、数字滤波及Nios核实现方式见附图2-1。

5、本设计中增加了一分贝测量的附加功能。

三、理论分析与参数设计

1、采样频率计算:

根据奈奎斯特定律采样率应满足,本题目中信号输入频率最大为10KHz,因此,为进行二次采样,我们的采样率应大于40KHz。

进行FFT的点数按计算。

又因为FFT运算量为2的n次方点时比较容易实现。

在满足频率分辨力并尽量减小运算量的条件下我们可得出某一频率分辨率与采样率的关系。

例如我们设计的频率分辨力为100Hz,则为分辨出10KHz的信号,则,求得N=200,我们取N=256。

其他分辨力类推。

本设计中我们设计了以下四个频率分辨力档:

表3-1频率分辨力与FFT点数及采样速率对应表

分辨力

FFT点数

FFT测量频率*

二次采样速的**

原始采样速度

100Hz

256点

12.8K

25.6K

76.8K

50Hz

512点

12.8K

25.6K

76.8K

20Hz

1024点

10.24K

20.24K

60.72K

10Hz

2048点

10.24K

20.24K

60.72K

*FFT测量频率:

FFT变换所能表示的最高频率。

**二次采样速度:

原始采样数据经数字滤波后,经二次采样(降低采样率)后的实际采样速度。

2、IIR数字低通滤波器设计

在进行FFT运算之前应当尽量避免频谱的混叠,即对带外信号要进行尽可能大的衰减,挈比雪夫(Chebyshev)II型滤波器具有通带内平坦并且衰减速度快的特点。

其相频响应及群延迟特性都比较好。

其转移函数具体系数计算可通过Matlab的FilterDesign&AnalysisTool来实现。

得到系数后打开AlteraDSPbuider,在它的可视化界面中搭建出自己所需的滤波器。

3、信号功率及各频率分量功率计算:

连续傅立叶变换下的帕斯瓦尔能量定率为:

离散傅立叶变换下的帕斯瓦尔能量定律为,由此可推出

同时可推出,即可得出个频率分量的功率。

在计算时应当注意补偿因经过滤波器时信号的衰减,以及根据放大倍数还原信号到其实际值。

从而使计算结果更加精确。

4、信号周期性判断及周期测量

周期信号的频谱都是谐波离散的,它仅含有的各频率分量,即含有基频(T为周期信号的周期)和基频的整数倍(n=1,2,3,…)这些频率成份,频谱图中相邻普贤的间隔是基频,周期信号越长,谱线间隔愈小,频谱愈稠密,反之则愈稀疏。

这是周期信号频谱的最基本特点。

因此信号的周期性判断可用以下方式判断:

从最小频率点开始观察,若最小频率分辨率点处的频率分量为0(实际不为0,而是一个很小的数值),则这个信号就是周期的。

然后继续向上观察,出现第一个峰值的频率点处既是这个信号的基频。

这种分析方法虽然可以很方便的测出基频大于最小分辨率信号的周期,但是对于基频等于或小于最小频率分辨率的信号的周期性就无能为力了。

要测出基频更小的信号的周期性就要增加FFT的点数。

5、正弦信号的失真度测量方法

一般地,正弦波的失真是用失真度,即所有谐波能量之和与基波能量之比的平方根来表示的。

在频域中即可通过一下方式计算:

,其中为基波分量的傅立叶系数,、、…为谐波的傅立叶系数。

四、          软件设计

在本设计中,控制及计算部分都由FPGA来实现。

其中Nios核完成键盘控制,液晶显示、FFT算法实现、功率计算、周期性判断及失真度测量的功能;而自动增益控制、A/D转换控制以及数字滤波器则由VHDL语言实现,以减轻CPU的负担,同时两部分并行处理提高了系统的速度。

系统框图及流程图如下:

 

图4-1软件流程图

五、          指标测试

1.调试方法和过程

采用模拟电路由前端到后段,数字电路先仿真再试测,先逐个模块测试再连调的办法。

2.测试仪器(见附录三)

3.输入阻抗测量

使用分压法测量:

在系统输入上串联一个的精度0.1%的电阻,用34401A61/2数字万用表测量精密电阻和系统输入端的电压比值。

用TFG2040DDS函数信号发生器输出:

F=5KHzVp-p=1V的正弦波

用34401A61/2数字万用表测得精密电阻两端Vp-p=0000.501V

测得系统输入端电压Vp-p=0000.499V

因此算得输入阻抗为:

4.信号总功率及各频率分量功率测量

使用两台TFG2040DDS函数信号发生器产生两路信号叠加后进行测试,现列出一组典型信号测试结果:

两路输入电压分别为Vp-p1=1.0000V(0.01W),=1KHz,Vp-p2=2.0000V(0.04W),

=3KHz。

详细测试结果见附录三。

表5-1信号功率测量结果 单位:

W

 

信号总功率

最大功率

次大功率

各频率点功率和

各频率功率和与总功率误差

理论值

0.05000

0.04000

0.01000

0.05000

0

本系统测得

0.05021

0.03990

0.01013

0.05003

0.36%

综合各项测试结果得总功率相对误差小于1%,各频率功率误差小于2%。

5.转换时间测试

每完成一次转换让Nios对外接的一个LED灯置高一次,再完成一次转换后将LED灯置低,依次循环。

把本音频分析仪频率分辨率设定在10Hz,用秒表记录LED灯亮起10次(即20个刷新周期)的时间,记录3次,取均值。

表5-3、数据刷新时间测量单位S

 

第一次

第二次

第三次

平均

时间

16.73

16.51

16.49

16.577

单次转换时间

0.837

0.826

0.825

0.829

6.失真度测试

(1)用1KHz方波测试失真度

用TFG2040DDS函数信号发生器产生近似理想的1KHz方波

理论计算失真度:

46%(计算到10次谐波)本系统测得失真度:

46.8%

(2)测量用EE1642产生的不非常理想的正弦波

用ZQ4126失真度测试仪测得失真度:

0.9%;

用本音频分析系统测得失真度:

0.54%

7.动态范围测试

使用TFG2040产生5V1KHz信号,D120DDS产生5KHz小信号,两信号叠加后输入系统进行测试从100mV开始逐步调小小信号的幅度,从频谱图上观察是否可分辨小信号峰值。

表5-4动态范围测量结果

100mV

50mV

30mV

10mV

5mV

可明显分辨

可明显分辨

可分辨

可分辨

不可分辨

8.周期性测试

使用TFG2040产生1K的方波、正弦波、三角波进行测试:

检测为周期波

使用TFG2040产生M序列,检测为非周期波。

六、结论

本设计很好的满足了题目要求,对频率分辨力、动态范围及精度都做了较大的扩展。

其实本设计还有很大的提升空间,但由于我们的动手能力以及理论水平有限,没能很好的达到。

通过本次设计,我们的动手能力以及处理问题的能力都有了很大的提高,并加深了对信号处理的理解,我们的收获很大!

 

 

参考书目:

【1】VinayK.IngleJohnG.Proakis数字信号处理科学出版社2006年

【2】程佩青数字信号处理教程清华出版社2004年

【3】吴京等信号与系统分析国防科技大学出版社2006年

【4】周立功等SOPC嵌入式系统基础教程北京航空航天大学出版社

【5】(美)UweMeyer-Baese数字信号处理的FPGA实现清华大学出版社2006年

【6】NiosIISoftwareDeveloper’sHandbookALTERAco.

 

 

 

附录一:

前向通道电路图

附图1-1、峰值范围确定电路

附图1-2、抗混叠滤波电路图

附图1-3、A/D模块电路图

附录二FPGA内部数字滤波及Nios核框图

 

附图2-1、FPGA内部嵌入IP核、采样控制器及滤波器组成框图

 

附录三、

1、测试仪器

TFG2040DDS函数信号发生器D120DDS函数信号发生器/计数器

EE1642模拟函数发生器YB4360模拟双踪示波器M890C+31/2数字万用表34401A61/2数字万用表SS1792D支流稳定电源ZQ4126失真度测试仪

秒表

2、信号功率及各频率分量功率测量

附表3-1、信号功率及各频率分量功率测量结果单位:

W

 

频率(Hz)

信号总功率

最大功率

次大功率

各频点功率和

误差

1

f1=10K,f2=9K

0.04978

0.03952

0.00978

0.0496

0.80%

2

f1=1K,f2=3K

0.05021

0.03990

0.01013

0.05003

0.36%

3

f1=110,f2=100

0.05034

0.04028

0.01019

0.05057

0.45%

4

f1=30,f2=20

0.05004

0.03954

0.01016

0.0495

0.67%

测试电路图:

附图3-1信号功率测试电路图

附录四、FFT源程序(仅核心部分)

#include

#include

#include

#definesize_xN

typedefstruct

{

doublereal;

doubleimg;

}complex;

complexW[size_x/2];

complexx[size_x];

 

doublePI;

 

voidfft();

voidinitW();

voidchange();

voidadd(complexa,complexb,complex*c);

voidmul(complexa,complexb,complex*c);

voidsub(complexa,complexb,complex*c);

voiddivi(complexa,complexb,complex*c);

voidoutput();

 

intmain()

{

system("cls");

PI=atan

(1)*4;

initW();

fft();

output();

return0;

}

 

voidfft()

{

inti=0,j=0,k=0,l=0;

complexup,down,product;

change();

for(i=0;i<(int)(log(size_x)/log

(2));i++)

{

l=(1<

for(j=0;j

{

for(k=0;k

{

mul(x[j+k+l],W[size_x*k/2/l],&product);

add(x[j+k],product,&up);

sub(x[j+k],product,&down);

x[j+k]=up;

x[j+k+l]=down;

}

}

}

}

 

voidinitW()

{

inti;

for(i=0;i

{

W[i].real=cos(2*PI/size_x*i);

W[i].img=-1*sin(2*PI/size_x*i);

}

}

voidchange()

{

complextemp;

inti=0,j=0,k=0,t;

for(i=0;i

{

k=i;j=0;

t=(unsigned)(log(size_x)/log

(2));

while(t--)

{

j=j<<1;

j|=(k&1);

k=k>>1;

}

if(j>i)

{

temp=x[i];

x[i]=x[j];

x[j]=temp;

}

}

}

 

voidoutput()

{

inti;

printf("Theresultareasfollows\n");

for(i=0;i

{

printf("%.4f",x[i].real);

if(x[i].img>=0.0001)printf("+%.4fj\n",x[i].img);

elseif(fabs(x[i].img)<0.0001)printf("\n");

elseprintf("%.4fj\n",x[i].img);

}

}

voidadd(complexa,complexb,complex*c)

{

c->real=a.real+b.real;

c->img=a.img+b.img;

}

voidmul(complexa,complexb,complex*c)

{

c->real=a.real*b.real-a.img*b.img;

c->img=a.real*b.img+a.img*b.real;

}

voidsub(complexa,complexb,complex*c)

{

c->real=a.real-b.real;

c->img=a.img-b.img;

}

 

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1