基于 FPGA的音频分析系统实现 - globesci.com ·...

3
33 2011 214-216 世界科技研究与发展 WORLDSCITECHR&D Vol.33 Apr.2011 No.2 pp.214-216 214 www.globesci.com 基金项目: 211 工程”三期创新人才培养计划建设项目( S09102 通讯作者: Email xcliqi8686@yahoo.com.cn 基于 FPGA的音频分析系统实现 黄扬帆 (重庆大学通信工程学院,重庆 400044 要: 采用 Altera 公司的 FPGA芯片 EP2C20 作为控制和运算核心,实现对频率范围在 20Hz~20kHz 的音频信号分析和测试。 采用 FFT 算法对音频信号进行频谱分析和计算处理,实现失真度分析,并完成信号总功率、各分量频率、周期等参数分析测量。采 TFTLCD作为显示终端,能够直观显示功率谱曲线和各测试参数值。通过软件分析对比测试发现,该系统实时性强,测量准确 度高,误差优于 03%,可以有效完成音频信号分析和处理。 关键词: EP2C20 ;音频分析; FFT 算法;系统设计 中图分类号: TP302   文献标识码: A    ImplementationofAudioAnalysisSystemBasedonFPGA HUANGYangfan WANG Lu GANPing HUANG Fa CollegeofCommunicationEngineering ChongqingUniversity Chongqing400044 Abstract AlterasFPGAchipEP2C20isusedasthecontrolandoperationcoretoanalyseandtesttheaudiosignalinthefrequencyrangeof 20Hz~20kHz.FFTalgorithmusedforspectralanalysisandcomputationofaudiosignal distortionanalysis analysingandmeasuringthe signalstotalpower frequencyofeachcomponent periodandotherparameters.TFTLCDisusedasitsdisplayterminalsoastogetadirect viewingshowofpowerspectrumandtestparameters.Bysoftwareanalysisandcomparisontest itisprovedthatthissystemisstrongrealtime withhighmeasurementaccuracyandlessthan03%error.Theaudiosignalanalysisandprocessingcanbecompletedeffectively. Keywords EP2C20 audioanalysis FFTalgorithm systemdesign 1 引言 音频是信息交互的一种重要媒体,人类能够听见的音频 信号的频率范围大约是 20Hz~20kHz 。对全范围的语音信 号分析则可以用来衡量各类音频设备的性能,同时音频信号 分析是声信号定位、语音合成、语音识别、语音增强等技术的 前提和基础,因此音频分析系统是非常重要并在众多领域中 被广泛使用的测量仪器之一。音频分析利用时域分析、频域 分析、失真分析等方法,通过测量各类音频参数来评价音频 系统的性能。随着信息技术和集成电路技术的高速发展,基 于快速傅里叶变换( FFT )的现代音频分析系统已成为音频 分析技术发展的主流。通过傅里叶变换将被测信号分解频 率分量,这类音频分析仪采用模拟 数字转换器( ADC )对输 入音频信号采样,将模拟信号转换为数字信号后再经 FFT 理获得各自的频谱分量。 音频分析系统的核心算法是 FFT FFT 的性能用取样点 数和取样率来表征,最高输入频率取决于采样率,分辨率取 决于采样点数。FFT 运算时间与采样点数成对数关系,在进 行高频率、高分辨率的高速运算时,要求选用高速的 FFT 件或者相应的数字信号处理器( DSP )芯 片。目 前 音 频 分 析 系统主要采用 DSP芯片来实现控制和核心运算 ,但是 DSP 芯片在内部时钟、系统结构、指令模式等方面都是基于 串行工作和流水线方式设计的,对采样数字信号处理的实时 性和精确性有一定的局限。基于此问题,本文采用具有并行 处理能力的 FPGA芯片作为核心控制器来完成 FFT 等运算 功能,实现音频信号分析和计算处理,增强信号处理的实时 性,依靠 FPGA内部的数控锁相环技术获得较高的系统时 钟,提 高 处 理 的 精 确 性。采 用 Altera公司的 FPGA 芯片 EP2C20 作为控制和运算核心,实现对频率范围在 20Hz~ 20kHz 的音频信号分析和测试;采用 FFT 算法对音频信号进 行频谱分析和计算处理,实现失真度分析,并完成信号总功 率、各分量频率、周期等参数分析测量;采用 TFTLCD作为显 示终端,能够直观显示功率谱曲线和各测试参数值。 2 分析算法 音频分析系统采用 FFT 算法 对音频信号进行频谱分 析和计算处理,结合相关性原理进行失真度分析,并完成信 号总功率、各分量频率、周期等参数分析测量。 如果失真的周期性音频信号,除了基波电压分量外,还 存在各次谐波分量,将其展开成傅立叶级数,可以表示为: n= sin ω t+φ 其中, )是含有谐波分量的周期性音频信号, 为第 谐波的振幅。 -jn ω dt 式中, /2 为正弦波中直流分量, 为失真波中所含最高谐 波分量数, ω 是正弦波基波角频率, φ 是第 次谐波相对于 基波的初相角。 2.1 功率谱测量 功率谱的测量,采用利用 CooleyTukey 。首先将音 频信号 )为采样后数据信号 ),再进行 FFT 变换得到 频谱,在每次的 FFT 计算中,采样 2048 个点,即 N=2048 采样频率为 441k ,所用离散傅立叶变换公式为 N- n= -j π nk k=,…N-

Transcript of 基于 FPGA的音频分析系统实现 - globesci.com ·...

Page 1: 基于 FPGA的音频分析系统实现 - globesci.com · 基于FPGA芯片采用VHDL语言实现FFT处理硬核,其 组成部分主要包括串行数据转并行数据单元、双端口RAM

第33卷2011年4月

  第2期214-216页

世界科技研究与发展WORLDSCITECHR&D

Vol.33Apr.2011

  No.2pp.214-216

第214   页 www.globesci.com

基金项目:“211工程”三期创新人才培养计划建设项目(S09102)通讯作者:Email:xcliqi8686@yahoo.com.cn

基于 FPGA的音频分析系统实现

黄扬帆 王 璐 甘 平 黄 发(重庆大学通信工程学院,重庆 400044)

摘 要:采用Altera公司的FPGA芯片EP2C20作为控制和运算核心,实现对频率范围在20Hz~20kHz的音频信号分析和测试。采用FFT算法对音频信号进行频谱分析和计算处理,实现失真度分析,并完成信号总功率、各分量频率、周期等参数分析测量。采用TFTLCD作为显示终端,能够直观显示功率谱曲线和各测试参数值。通过软件分析对比测试发现,该系统实时性强,测量准确度高,误差优于03%,可以有效完成音频信号分析和处理。关键词:EP2C20;音频分析;FFT算法;系统设计中图分类号:TP302   文献标识码:A   

ImplementationofAudioAnalysisSystemBasedonFPGA

HUANGYangfan WANGLu GANPing HUANGFa(CollegeofCommunicationEngineering,ChongqingUniversity,Chongqing400044)

Abstract:AlterasFPGAchipEP2C20isusedasthecontrolandoperationcoretoanalyseandtesttheaudiosignalinthefrequencyrangeof20Hz~20kHz.FFTalgorithmusedforspectralanalysisandcomputationofaudiosignal,distortionanalysis,analysingandmeasuringthesignalstotalpower,frequencyofeachcomponent,periodandotherparameters.TFTLCDisusedasitsdisplayterminalsoastogetadirectviewingshowofpowerspectrumandtestparameters.Bysoftwareanalysisandcomparisontest,itisprovedthatthissystemisstrongrealtime,withhighmeasurementaccuracyandlessthan03% error.Theaudiosignalanalysisandprocessingcanbecompletedeffectively.Keywords:EP2C20;audioanalysis;FFTalgorithm;systemdesign

1 引言

音频是信息交互的一种重要媒体,人类能够听见的音频

信号的频率范围大约是20Hz~20kHz。对全范围的语音信号分析则可以用来衡量各类音频设备的性能,同时音频信号

分析是声信号定位、语音合成、语音识别、语音增强等技术的

前提和基础,因此音频分析系统是非常重要并在众多领域中

被广泛使用的测量仪器之一。音频分析利用时域分析、频域

分析、失真分析等方法,通过测量各类音频参数来评价音频

系统的性能。随着信息技术和集成电路技术的高速发展,基

于快速傅里叶变换(FFT)的现代音频分析系统已成为音频分析技术发展的主流。通过傅里叶变换将被测信号分解频

率分量,这类音频分析仪采用模拟/数字转换器(ADC)对输入音频信号采样,将模拟信号转换为数字信号后再经FFT处理获得各自的频谱分量。

音频分析系统的核心算法是 FFT,FFT的性能用取样点数和取样率来表征,最高输入频率取决于采样率,分辨率取

决于采样点数。FFT运算时间与采样点数成对数关系,在进行高频率、高分辨率的高速运算时,要求选用高速的 FFT硬件或者相应的数字信号处理器(DSP)芯片。目前音频分析系统主要采用 DSP芯片来实现控制和核心运算[1,2],但是

DSP芯片在内部时钟、系统结构、指令模式等方面都是基于串行工作和流水线方式设计的,对采样数字信号处理的实时

性和精确性有一定的局限。基于此问题,本文采用具有并行

处理能力的 FPGA芯片作为核心控制器来完成 FFT等运算功能,实现音频信号分析和计算处理,增强信号处理的实时

性,依靠FPGA内部的数控锁相环技术获得较高的系统时钟,提高处理的精确性。采用 Altera公司的 FPGA芯片EP2C20[3]作为控制和运算核心,实现对频率范围在20Hz~20kHz的音频信号分析和测试;采用FFT算法对音频信号进行频谱分析和计算处理,实现失真度分析,并完成信号总功

率、各分量频率、周期等参数分析测量;采用TFTLCD作为显示终端,能够直观显示功率谱曲线和各测试参数值。

2 分析算法

音频分析系统采用 FFT算法[4]对音频信号进行频谱分

析和计算处理,结合相关性原理进行失真度分析,并完成信

号总功率、各分量频率、周期等参数分析测量。

如果失真的周期性音频信号,除了基波电压分量外,还

存在各次谐波分量,将其展开成傅立叶级数,可以表示为:

x(t)=A02+∑

n=1Ansin(nω0t+φn) (1)

其中,x(t)是含有谐波分量的周期性音频信号,An为第 n次谐波的振幅。

An =1T∫

0x(t)e-jnω0tdt (2)

式中,A0/2为正弦波中直流分量,n为失真波中所含最高谐波分量数,ω0是正弦波基波角频率,φn是第 n次谐波相对于基波的初相角。

2.1 功率谱测量功率谱的测量,采用利用 CooleyTukey法[5]。首先将音

频信号x(t)为采样后数据信号 x(n),再进行 FFT变换得到频谱,在每次的 FFT计算中,采样 2048个点,即 N=2048,采样频率为441k,所用离散傅立叶变换公式为

X(k)=∑N-1

n=0x(n)e-j

2πNnk k=0,1,2,…N-1 (3)

Page 2: 基于 FPGA的音频分析系统实现 - globesci.com · 基于FPGA芯片采用VHDL语言实现FFT处理硬核,其 组成部分主要包括串行数据转并行数据单元、双端口RAM

2011年4月    世界科技研究与发展 自动化、计算机技术

www.globesci.com 第215   页

其中,x(n)为输入采样信号,X(k)为变换后的频域信号,然后利用功率谱计算式。

SX^(k)= 1N X(k)2 k=0,1,2,…N-1 (4)

其中,SX^(k)即为对应频点的功率谱。

2.2 失真度测量失真度的定义为所有谐波能量之和除以基波能量后的

平方根。其表达式为:

  γ=U22+U

23+…U

2n

U槡 21

(5)

其中,γ为失真度,U1为基波电压的有效值,U1-Un为谐波

电压的有效值,且 Un=An/2,n=1,2,…n。求出各次谐波的幅值,可以计算出信号的失真度。式(1)和(2)中 An为第 n次谐波的振幅,采用FFT法,式(5)可以表示为:

γ=A22+A

23+…A

2n

A槡 21

(6)

2.3 周期测量如果输入信号为周期性信号,那么在功率谱中的对应频

点上,应该会出现尖峰值。因此在输出功率谱中,我们统计

除了0频点的各个功率值,如果其中没有任何一个功率幅值能够超过设定的阈值,说明输入信号为非周期信号,否则为

周期信号,其阈值的设定通过多次测试比较确定。

假定输入信号由多个频率成分组成,其表达式为

f(t)=A1sin(ω1t)+A2sin(ω2t)+A3sin(ω3t) (7)其中,输出信号f(t)的频率为各分量 ω1、ω2、ω3的最大公约数。测出信号功率谱中的各频率,然后计算所有有效频点的

最大公约数就是频率f,周期T=1/f。

3 系统设计与实现

音频分析系统采用专用语音采集芯片 WM8731[6]获得16bit采样数据,将采样数据送入FPGA,并基于FPGA的逻辑单元和内嵌式存储单元采用VHDL语言设计实现FFT算法。由此计算出音频信号的各个信号分量的频谱,然后将计算结

果送入内嵌的软核处理器 NiosII,采用 C语言进行功率谱的计算,将频率谱和功率谱通过图形方式显示在LCD320×240的真彩色液晶屏上。设计中数据处理采用并行方式,速度

快,音频采样数据位数达到16位,并运用嵌入式CPU实现浮点运算和图形化显示。图1为系统原理框图。

图1 系统原理框图Figure1 Principleconfigurationofthesystem

系统设计采用音频采集芯片 WM8731,该芯片输入阻抗为10~20K,支持的数字音频的位数可以是16位至32位,采样精度高,能够无失真采集电压范围(峰峰值)为80mV~52V的音频信号,采样率设置为441kHz,能够采集20Hz~20kHz的信号。其中数字音频接口采用来自内部 ADC数字滤波器的数据并在 ADCDAT输出上。ADCDAT是来自ADC的数字滤波器的格式化数字音频数据流输出,左/右声道复用在一起。ADCLRC是一个对齐时钟,在ADCDAT线上控制左或右通道数据。通过总线时钟先高后低的过渡,ADCDAT和ADCLRC过渡标志的每个数据位时同步的。图 2为WM8731音频信号采样电路原理图:

图2 WM8731音频信号采样电路原理图Figure2 PrincipleconfigurationofWM8731audiosignalsamplingcircuit

Page 3: 基于 FPGA的音频分析系统实现 - globesci.com · 基于FPGA芯片采用VHDL语言实现FFT处理硬核,其 组成部分主要包括串行数据转并行数据单元、双端口RAM

自动化、计算机技术 世界科技研究与发展    2011年4月

第216   页 www.globesci.com

  基于FPGA芯片采用VHDL语言实现FFT处理硬核,其组成部分主要包括串行数据转并行数据单元、双端口 RAM数据存储单元、FFT运算单元、旋转因子产生器(ROM)、地址生成及控制单元、倒序单元六个模块。实现算法基于第2部分的FFT算法,FFT运算单元是硬核处理的重点单元,FFT运算单元的核心采用蝶形运算方式,利用 EP2C20内嵌的DSP乘法模块实现乘法器和加法器的设计,采用VHDL语言实现定点 FFT处理器。在所设计的定点 FFT基础上采用两个有符号的定点数来实现复数 FFT功能,并用补码表示负数。所设计的FFT处理器是2048点输入为16位的复数处理器。图3是FFT硬核处理单元结构图。

图3 FFT硬核处理单元结构图Figure3 Chartofhard_coreprocessingunit

将FFT单元的频谱数据结果送入内嵌的软核处理器NiosII,采用C语言进行功率谱测量、失真度测量、周期测量,将频率谱和功率谱通过图形方式显示在屏幕上。

4 实验测试

功率谱和失真度测量方法采用输入含有多个谐波分量

的类正弦波音频信号,基波频率为1kHz,采样频率为441kHz,输入幅度1V。通过音频分析系统,测试其频谱分量,并获得对应功率谱和失真度。图4为输入基波为1kHz的含谐波分量音频信号,图形获取通过基于 FPGA的嵌入式逻辑分析仪得到。经过分析系统计算得到其功率谱如表1。

图4 输入基波为1kHz的含谐波分量音频信号Figure4 Audiosignalthatinputfundamentalfrequencyis1kHz

containingharmoniccomponent表1 采集得到的数据Table1 Thesampleddata

频率(kHz) 1.02 1.97 2.94 3.96功率值(W) 0.83 0.11 0.04 0.02

  音频周期性测试方法是当输入纯音信号时,按照第2部分周期性测量原理测量实测周期及其误差,测试结果如表2。将相同信号输入通过声卡采样后,采用Matlab工具实现音频信号分析[7],其结果与音频分析系统获得的结果基本一致,

测量准确度高、误差优于03%。表2 实测周期及其误差

Table2 Measurementcycleanderror

输入周期(s) 实测周期(s) 误差(%)0.05 0.049 20.004 0.0039 2.50.0005 0.00049 20.0007 0.00069 1.4

5 结论

本文以FPGA芯片 EP2C20作为控制和运算核心,实现对频率范围在20Hz~20kHz的音频信号分析和测试,采用专用语音采集芯片WM8731获得16bit采样数据,利用FPGA的逻辑单元和内嵌式存储单元采用 VHDL语言设计实现FFT算法,采用内嵌于FPGA的软核处理器NiosII,用C语言完成功率谱测量、失真度测量、周期测量计算,并将结果显示

在LCD320×240的真彩色液晶屏上。音频分析系统采用FFT算法对音频信号进行频谱分析和计算处理,实现失真度分析,并完成信号总功率、各分量频率、周期等参数分析测

量。实验测试结果表明系统的实时性强,采样精度高,误差

优于03%,能有效完成音频信号分析和处理。

参考文献[1]张家田,封川川,严正国.基于 DSP的音频信号分析仪设计[J].西安石油大学学报(自然科学版),2009,24(1):8588.

[2]孙伟,郭宝龙,陈龙.一种新的音频分析系统的实现方法[J].仪器与仪表学报,2009,30(11):22492254.

[3]ALTERA.CydoneⅡ DeviceHandlook:SectionsIV.I/OStandards[EB/OL].http://www.altera.com.cn,2004.

[4]丁玉美,高西全.数字信号处理[M].3版.西安:西安电子科技大学出版社,2008:97127.

[5]张长森.数字信号处理[M].北京:中国电力出版社,2007:97100.

[6]王杰玉,杜炜,潘红兵.基于 FPGA的音频编解码芯片接口设计[J].现代电子技术,2009,5:179181.

[7]陈宇锋.基于声卡和 MATLAB的语音信号采集和处理[J].中国现代教育装备,2006,5:4951.

作者简介

黄扬帆(1964),男,高级工程师,主要研究方向:信号与信息处理。王璐(1986),女,硕士研究生,主要研究方向:信号与信息处理。甘平(1974),男,副教授,主要研究方向:信号与信息处理。黄发(1986),男,硕士研究生,主要研究方向:电路与系统。