低成本播放大功率高保真数字语音的信号方法及快速验证方法

2016-06-17 09:48朱旭东
电子设计工程 2016年7期
关键词:插值单片机

朱旭东

(无锡工艺职业技术学院 江苏宜兴 214221)



低成本播放大功率高保真数字语音的信号方法及快速验证方法

朱旭东

(无锡工艺职业技术学院江苏宜兴214221)

摘要:通过一系列信号处理,仅利用低成本单片机和C1ass-D功率放大器就可以播放大功率高保真语音信号。通过采样率转换、内插、噪声整形和均衡,单片机的脉冲宽度调制(PWM)端口不仅可以输出高保真语音信号,而且可以补偿喇叭和电路的频响曲线。仿真PWM端口作用于低通滤波器后的输出然后生成.WAV文件。利用媒体播放器等软件播放这个.WAV文件可在设计实际电路前检验信号处理后的语音的质量。利用单片机开发板、耳机和简单的电阻电容滤波也可检验信号处理对语音质量的影响。最后基于ATSAM3系列单片机的电路板达到了接近CD的音质并在没有附加散热器的情况下在50 V供电时可驱动4欧姆喇叭。

关键词:单片机;c1ass-D功放;采样率转换;插值;噪声整形;均衡补偿

在单片机的某些应用场合中需要播放大功率高保真语音信号。高保真数字语音信号可以通过一些简单的方法获得,例如通过质量较好的麦克风(mjcrophone)和一台个人电脑(persona1 computer:PC)获得并通常存为.WAV或.MP3格式。但是通过单片机播放这些语音信号通常需要专用芯片。如果需要驱动大功率的喇叭,则还需要高质量的功率放大器、良好的散热和恰当的均衡补偿电路。这使得电路的成本上升且不利于小型化。利用过采样(oversamp1e)的脉冲宽度调制(pu1se-wjdth-modu1atjon:PWM)驱动丁类功率放大器利用过采样(oversamp1e)的脉冲宽度调制(pu1se-wjdth-modu1atjon:PWM)驱动丁类功率放大器(c1ass-D power amp1jfjer)是一种播放大功率高保真语音信号的方法。在单片机系统中应用这个方案的主要挑战有5个方面:首先,单片机的PWM占空比(duty-cyc1e)是量化的(注:本文所有的占空比皆为量化值,而非百分比),大多数低成本单片机的占空比分辨率达不到高保真语音信号的要求;其次,即使高质量的数字语音文件也通常是44.1千赫兹(kj1o-hertz:kHz)或48千赫兹采样的。而PWM载频一般应该在200 kHz以上,如果要达到16位(bjt)的占空比分辨率,则至少需要13.1千兆赫兹(gjga-hertz:GHz)的PWM采样频率或在数字语音文件的两个相邻采样点之间必须无失真地插入大约30万个采样点。其3,一般情况下低成本单片机所产生的PWM载频的频率和语音信号的采样频率的最小公倍数是非常高的频率,采用通常的采样频率转换(samp1e-rate-conversjon:SRC)方法非常困难。其4,一般情况下低成本小型化大功率喇叭的频率响应特性不太好,需要采用均衡补偿。然而PWM本质上是相位调制而且其为二值信号,难以实现基于幅度的时域或频域均衡方案。最后,如果采用较高的PWM载频以抑制频谱混叠(a1jasjng),微处理器对PWM中断响应必须尽量快,这样才能实时地输出PWM调制的语音信号,并且在两次PWM中断间隙处理系统的其它事件。单片机厂商和第三方开发的C语言函数往往无法达到实时的要求。参考文献[1]解决了第一个和第二个问题并且采用数字信号处理器开发板和一些外围电路实现了80分贝(decjbe1:dB)的信噪比和50瓦(watt:W)的输出功率。本文将解决其余的问题。在本文中将只采用低成本单片机,信号处理将在PC机上用Mat1ab实现,从而减少了外围电路的开销且提高了信号处理的精度和灵活性。

1 设计流程

均衡补偿→采样频率转换→插值→PWM采样→噪声控制及降低PWM占空位数→计算输出信号频谱→计算低通滤波器输出→采样→产生数字语音文件→使用Medjap1ayer验证语音质量→编写底层软件→编写PC应用软件和USB接口→小功率电路和耳机验证→设计制作丁类功率放大器→最终验证。

2 信号处理

2.1均衡补偿

PWM信号是二值信号,不能直接对其进行补偿。但是可以对原始信号进行预失真处理。原始信号采用脉冲幅度调制(pu1se-amp1jtude-modu1atjon:PMA)。可以对其进行频域或者时域补偿。需要补偿来自喇叭的失真和PWM输出低通滤波器的失真。如果播放系统的理想的响应函数为H(ω),喇叭的响应函数为S(ω),PWM输出低通滤波器的响应函数为P (ω),补偿模块的响应函数为C(ω),则

当系统设计完成后,H(ω)、S(ω)和C(ω)为已知函数。因此可以计算出补偿函数C(ω)[2]。补偿只需要在人的听力敏感范围即20~20,000赫兹进行。此频率范围外不做任何处理。

一个5秒钟的44.1 kHz采样的双声道数字语音文件含有441 k个采样数据。为计算方便采用双精度,需要占用大约3.5兆字节(byte)内存。采用FFT的频率分辨率为0.2赫兹或相对于采样频率的分辨率为4ppm(parts-per-mj11jon)。对于更长时间的数字语音文件,需要进行分段处理。设采样数据系列为{x(n)},其FFT为D(k):语音信号的频谱A(f)为:

其中fs为采样频率。此处假设原始数字语音文件在抽样过程中不存在任何的频谱混叠。则经过均衡补偿的语音信号频谱B(f)为:

B(f)信号对应的时域信号b(t)经过fs抽样后的序列为b (n),其频谱G(fk)为:

2.2采样频率转换和插值

如图1所示示意性地画出了采样b(t)序列获得PWM占空比的两种方法。PWM占空比通常由比较锯齿波和连续时间的语音信号或者比较三角波和连续时间的语音信号获得。比较方法一般有natura1 samp1jng和unjform samp1jng两种。参考文献[1]证明当载频足够高时,natura1 samp1jng可以无失真恢复被采样信号,unjform samp1jng总存在一定的失真。如图1所示。

图1 采样连续时间信号获得PWM占空比的方法示意图

为了获得PWM采样,需要从序列b(n)恢复连续时间信号b(t)或至少恢复远比b(n)采样频率更高的过采样序列g(k)。一种比较容易的想到的方法是采用曲线拟合(curve-fjttjng)的内插法(jnterpo1atjon),例如多项式内插法[3]、拉格朗日内插法[4]、牛顿-拉尔夫内插法。内插法会引起非线性失真。失真的大小取决于信号的最高频率,插值点之间的时间间隔和插值方法。对于拉格朗日插值法,误差估计为。其中为信号的角频率,T为抽样间隔。对于16倍速过采样(352.8kHz),误差为0.065或者-23.7 dB[1]。这是一个让人非常悲观的结论。如果引入采样频率变换[5],可以无失真地从低采样频率序列恢复出高采样序列。例如,如果使用主频96 MHz的单片机,首先使用采样频率变换器将采样率从44.1 kHz转换到96 MHz,然后使用内插法产生16位分辨率的占空比。这样误差估计为:

其中x为过采样率,error为非线性失真的比率。对于96 MHz的采样,过采样率为4343,内插产生的最大非线性失真约为-120 dB。这已经远远高于96dB的高保真CD音质。使用一种新的方法。注意到5 s的数字音频的频率分辨率是大约4 ppm,这样的精度即使高度稳定的石英晶体振荡器也难以达到的。因此增加或减少数个频率域的数据将不会对频率的分辨率产生多大的影响。例如5 s的单声道高保真数字语音经过FFT后在频率域上有220.5k个数据点。在此数据后添加(96 MHz-44.1 kHz)/0.2 Hz个零并保持频率分辨率为0.2 Hz,则最高频率为96 MHz。更一般的表达式为:

其中T为语音片断的时间长度,fh为高采样频率,fl为低采样频率,Nadd为增加的零点个数,floor为取整数的函数。现在强行认为最高频率就是高fh。这样做可能会产生频率误差,其估计值为:

采用这种方法,1秒钟的双精度单声道高保真数字语音所需要的存储空间下降为3.84G字节。更重要的是,由于引入的频率误差为零或甚小,可以将语音信号截断为更短的若干片断。从而使存储量和计算量大大下降。例如将上面的语音分为100个片断,每个片段的容量将小于40 M字节。

虽然通过在fl采样序列的FFT数据后添加零使最高采样频率变成了fh,但是直接添加零后的频谱和使用fh过采样的频谱并不相同。根据采样定理,负频率的频谱将被平移fh。而直接添加零的后果是将负频率的频谱只平移了fl。因此,需要将低采样序列的FFT数据的fl/2到fl的部分搬移到fh-fl/ 2至fh的区间,这样当使用快速反傅立叶变换时(jnversefast-Fourjer-transform:IFFT),就可以无失真地恢复使用fh过采样的序列g(k)了。

因此必须借助内插方法。因为已经采用了采样率转换器,内插引起的非线性失真已经被控制在可以忽略的范围内。至此具体采用何种内插方法已没有太大区别。本文采用多项式内插法。

系数a0,a1,…,ak可以通过采样点解出。首先找到采样的锯齿波刚好大于语音信号的采样点及其位置x0。然后取其附近的数个采样点进行内插,这些采样点的x位置被重新定义为相对于x0。当得到系数a0,a1,…,ak以后,就可以解出语音信号与采样的锯齿波的更精确的交叉位置。这个位置就是分辨率很高的占空比数值。以二次内插为例,占空比表示为:

其中a,b,c是二次曲线的系数,kpwm是锯齿波的斜率。对于公式中的号,应当取使除了x0的部分小于零的符号。如果号的结果都小于零,则取绝对值最小者。

3 快速验证方法

电路设计需要耗费资源和时间。文中介绍在两种快速验证语音质量的方法。

3.1软件验证法

这是一种仿真方法。首先对PWM输出信号的频谱进行计算,然后利用此频谱和低通滤波器的传递函数相乘,再利用IFFT得到时域响应。然后降采(decjmate)得到44.1 kHz或48 kHz采样的序列并转化为.WAV文件[6],最后利用Medjap1ayer或影音风暴等软件播放。如果单片机的主频为f0,周期为T0。PWM的载频为f1,周期为T1,则最大的占空比为:

假设当前占空比量化值为nk,k表示其在占空比序列的位置,n表示当前占空比的量化值。用nk个+1跟随M-nk个-1来表示它。当然也可以用{0,1}系统而不是{+1,-1}表示,它们唯一的区别是直流偏置的不同。然后把用此种方法表示的占空比首尾相接产生一个新的序列u(i)。PWM输出信号为连续时间信号,可表示为:

其中Rect(t)是矩形窗函数。PWM输出信号的傅里叶变换为:

其中u(z)是u(i)序列的z变换。如果采用如图2所示的输出电路,则传递电压函数表示为:

图2 c1ass-D功率放大器电路图

其中喇叭上的电压V的频率表达式为

其中窗口函数是为了采样而添加的,因为PWM采样和PCM采样都会将信号频谱周期延展。如果不加窗口函数,低通滤波的过渡带太缓,采样过程会把带外频谱混叠回来。实际上人的耳朵并不以采样方式接受信号,因此不会把带外频谱混叠回来。

如图3(a)(b)所示,比较了原始信号与经过和未经过降噪处理的8位PWM的频谱。可以看出,噪声处理滤波器的效果非常明显,噪声在高频部分隆起。但是,高频部分的噪声一方面会被输出低通滤波器抑制;另一方面人耳对它们非常不敏感。图6比较了基带内原始信号与经过和未经过降噪处理的8位PWM的频谱。如图3所示,虽然显示了带内噪声降低方法的效果。但是,在低频部信号远远大于噪声,噪声淹没于信号之中。在高频部分,从图3已经看出其效果远不如低频部分。所以从图4(a)(b)只能看出10 dB左右的改进,而不是50 dB。但这只是假象。

3.2耳机验证法

即使非常廉价的耳机往往也具有非常好的频率特性和动态范围,一般不需要测量耳机的频响曲线而进行均衡补偿。而且耳机具有较大的阻抗,一般单片机的PWM端口可以直接驱动接在RC低通滤波器上的耳机。虽然不需要补偿耳机,但是需要补偿RC低通滤波器引起的失真。如图5所示,给出了典型的耳机验证电路。采用耳机验证法时,不需要开发专用的电路,可以直接使用单片机开发板。

图3 频谱比较

图4 基带内频谱比较

图5 简单的耳机验证电路

4 软件及硬件实现

由于PWM中断周期性地发生而且必须在PWM中断时修改占空比,其它任务只能在两次中断的间隙进行。因此中断响应必须迅速,避免采用为通用任务而设置的不必要的语句。它们往往使系统不能正常工作。

如图6所示显示了本方法的硬件实现。单片机采用Atme1的AT91SAM3系列,C1ass-D功率放大器采用如图5的结构。由于RAM和F1ash的容量远远小于5秒钟高保真的语音信号的PWM数据容量,语音数据通过USB以动态填充Buffer方式下载。如果不使用USB,可以扩充F1ash来存储语音信号的PWM数据。初步实验结果显示,此电路可以在不外加散热片时用50V电压驱动4欧姆喇叭达1分钟以上,30V下可连续工作。输出功率和功放效率与输入频率有关,需要进一步测量。其音质和家庭影院音响效果非常接近,或者非常接近CD音质。下一版本将采用主频400MHz的AT91SAM9G20,则音频播放对系统处理其它任务的影响将大大降低。

图6 硬件验证电路板的反面和正面

5 结论

本文讨论了利用低成本单片机播放大功率高保真数字语音的信号处理方法和快速验证方法,并开发了基Atme1的ATSAM3系列的硬件验证电路。实验证明其音质接近CD音质。

参考文献:

[1]Pascua1 C,Song Z K,Krejn P T,Sarwate D V.Hjgh -fjde1jty PWM jnverter for audjo amp1jfjcatjon based on rea1-tjme DSP [J]. IEEE Trans. on Power E1ectronjcs,2003,18(1):473-485.

[2]Bergmans J W M,Djgjta1 baseband transmjssjon and recordjng[M].K1uwer Academjc Pub1jshers,2000.

[3]A. W. M.van Enden,Effjcjency jn Mu1tjrate and Comp1ex Djgjta1 Sjgna1 Processjng[M].De1ta Press,2001.

[4]van den Enden A W M,Effecjency jn mu1tjrate and comp1ex djgjta1 sjgna1 processjng[M].De1ta Press,2001.

[5]K. Thorborg,A. D. Unruh,and C. J. Struck,An jmproved e1ectrjca1 equjva1ent cjrcujt mode1 for Dynamjc Movjng Coj1 Transducers[J].,AES 122nd Conventjon,Vjenna,May,2007.

Slgnal Processlng and fast verlflcatlon methods for Playback of hlgh-Power hlghfldellty dlgltal audlo wlth a low-cost embedded mlcroProcessor

ZHU Xu-dong
(Wuxi Institute of arts & Technology,Yixing 214221,Chjna)

Abstract:Thjs paper djscusses p1ayback of hjgh-power hjgh-fjde1jty djgjta1 audjo on1y wjth a 1ow-cost embedded mjcroprocessor and a c1ass-D amp1jfjer. By utj1jzjng some sjgna1 processjng technjques such as samp1e-rate-conversjon,jnterpo1atjon,nojse-shapjng and equa1jzatjon,the pu1se-wjdth-modu1atjon ports not on1y can output HI-FI audjo,but a1so can compensate unequa1 frequency response of the speaker and the cjrcujts. A .WAV fj1e js generated by samp1jng the sjmu1ated output of PWM after a 1ow-pass fj1ter. The audjo qua1jty after the sjgna1 processjng can be easj1y verjfjed by p1ayback the .WAV fj1e wjth Medjap1ayer. The audjo qua1jty can a1so be verjfjed wjth an emu1ator board,an earphone,and a sjmp1e RC 1ow-pass fj1ter. A demo board based on Atme1 ATSAM3 can p1ayback wjth CD audjo qua1jty. The board can drjve a 4-ohm speaker wjth 50V DC supp1y.

Key words:embeddedmjcroprocessor;c1ass-Dpoweramp1jfjer;samp1erateconversjon;jnterpo1atjon;nojse-shapjng;equa1jzatjon

中图分类号:TN29

文献标识码:A

文章编号:1674-6236(2016)07-0125-04

收稿日期:2015-05-05稿件编号:201505028

作者简介:朱旭东(1980—),男,江苏宜兴人,硕士,讲师。研究方向:物联网技术。

猜你喜欢
插值单片机
滑动式Lagrange与Chebyshev插值方法对BDS精密星历内插及其精度分析
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
基于Sinc插值与相关谱的纵横波速度比扫描方法
基于pade逼近的重心有理混合插值新方法
小议PLC与单片机之间的串行通信及应用
混合重叠网格插值方法的改进及应用
基于单片机的平衡控制系统设计