新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

作者: 時間:2016-10-15 來源:網(wǎng)絡(luò) 收藏

摘要:本文提出一種利用實(shí)現(xiàn)16位高音質(zhì)語音文件播放的設(shè)計(jì),并提給3種解決方案和對比論證,闡述了其實(shí)現(xiàn)過程并通過實(shí)驗(yàn)驗(yàn)證。該方法不僅成本低,其音質(zhì)接近16位精度,而且由于編碼方式簡單,在單片機(jī)上解碼容易實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果表明,該方法音質(zhì)效果較好,可應(yīng)用范圍廣。

本文引用地址:http://www.butianyuan.cn/article/201610/307462.htm

引言

波由諧波和直流量組成,諧波是需要被濾除的信號,即通過模擬低通濾波器可以將調(diào)制后的信號轉(zhuǎn)換成模擬信號,濾波器可以消除大部分高頻成分,最后只留下直流量,圖1為PWM信號還原為模擬信號的示意圖。普通單片機(jī)受限于其處理能力,一般只能調(diào)制8位左右的PWM信號,因此只能還原8位的聲音文件。而用D/A轉(zhuǎn)換器實(shí)現(xiàn)模擬量的輸出成本較高,音質(zhì)效果也不佳。對各頻帶及幅值的信號的阻礙比較統(tǒng)一,保證了聲音信號保真率。本文將16位高音質(zhì)WAV信號進(jìn)行拆分處理,一部分由PWM進(jìn)行調(diào)制,另一部分控制8個I/O口中的某幾路輸出PWM,信號經(jīng)低通濾波和功率放大后送至喇叭等放聲設(shè)備,以此將數(shù)字語音信號轉(zhuǎn)換成模擬信號,達(dá)到語音播放的目的。

PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

1 原理及誤差分析

1.1 基本原理

16位數(shù)字信號可表示自然界65 535種聲音信號,據(jù)此將16位數(shù)字量量化為對應(yīng)的模擬信號,便完成聲音的還原:

PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

這里將16位數(shù)據(jù)Data拆分為X1和X2,且有Data=X1×X2。將X1通過單片機(jī)的定時器調(diào)制為PWM信號,通過控制占空比來控制輸出電壓大小,即:

PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

將X2用來控制單片機(jī)的8路I/O是輸出調(diào)制好的PWM信號,還是輸出信號“0”,該8路信號送到,即:

PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

則最后輸出的電壓大小為:

PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

,以此便可以實(shí)現(xiàn)16位D/A轉(zhuǎn)換。

1.2 數(shù)據(jù)拆分形式分析

針對基本原理中提出的將16位數(shù)據(jù)拆分為高低位兩部分在單片機(jī)中的實(shí)現(xiàn),提出3種方案并對其進(jìn)行對比分析。

1.2.1 方案1

將16位數(shù)據(jù)從中間截斷,并判斷高低8位的值是否為0,是則補(bǔ)1,避免拆分的兩個數(shù)據(jù)有一個為0時導(dǎo)致輸出也為0。拆分后的低8位送給定時器進(jìn)行PWM合成,高8位送給電阻網(wǎng)絡(luò)控制輸出。該方式占用單片機(jī)資源很少,對單片機(jī)處理能力沒有要求,可以在所有單片機(jī)上實(shí)現(xiàn)。但PWM與電阻網(wǎng)絡(luò)模擬電壓輸出均有非線性失真,當(dāng)拆分的兩個數(shù)據(jù)中有一個較小(接近0)或較大(接近255)時,對最后的輸出電壓有較大影響。

1.2.2 方案2

利用查表法,將Data=X1×X2的所有65 536種數(shù)據(jù)的拆分結(jié)果計(jì)算出來,建表后存到單片機(jī)中,只需根據(jù)數(shù)據(jù)大小對號查出X1、X2進(jìn)行PWM調(diào)制并控制電阻網(wǎng)絡(luò)輸出即可(X1、X2均不大于256)。該數(shù)組需占用128 K的存儲空間,但不是所有數(shù)據(jù)都能寫成Data=X1×X2形式,只能盡可能地去逼近,最終的輸出值與Data會有少許出入。該方案也不需要單片機(jī)具有較強(qiáng)的處理能力,且避免了方案1的缺陷,但因其逼近的拆分方式導(dǎo)致其輸出精度有損,達(dá)不到16位高精度。

1.2.3 方案3

判斷16位數(shù)據(jù)的高位為0的位數(shù),將不為0的低位數(shù)據(jù)從中間一分為二,然后將拆分后的數(shù)據(jù)均左移相同的位數(shù),保證數(shù)據(jù)拆分前后“一致”,將拆分后的數(shù)據(jù)分別進(jìn)行PWM調(diào)制和控制電阻網(wǎng)絡(luò)輸出。一般單片機(jī)可輕松完成,占用資源較少,避免了方案2的缺陷,但在左移時會

有數(shù)據(jù)丟失,導(dǎo)致輸出誤差較大,特別是當(dāng)數(shù)據(jù)小于255時,其誤差是不可接受的。

根據(jù)現(xiàn)有的理論分析和實(shí)際的測試效果來看,方案2較為理想。本文針對方案2展開設(shè)計(jì)。

2 系統(tǒng)設(shè)計(jì)

系統(tǒng)框圖如圖2所示,該方案采用TI公司的MSP430F5529作為主控MCU,它將TF卡中的WAV文件讀取出來,并在TF卡中的數(shù)據(jù)表中查出對應(yīng)的數(shù)據(jù)拆分值,然后存放在單片機(jī)中分出來的1 KB的緩沖區(qū)中。定時器A定時讀取緩沖區(qū)中的數(shù)據(jù),定時器B完成PWM調(diào)制并同時控制電阻網(wǎng)絡(luò)輸出。由電阻網(wǎng)絡(luò)輸出的信號經(jīng)二階低通濾波器和功率放大器后送到喇叭完成語音播放。帶觸摸功能的TFT液晶屏用來顯示和控制語音播放。單片機(jī)的供電由兩節(jié)干電池完成,功率放大電路供電由12 V直流電源提供。

PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

2.1 硬件設(shè)計(jì)

電阻網(wǎng)絡(luò)的電路圖如圖3所示,利用電壓疊加定理和電阻分壓計(jì)算分析可知,其輸出為Vout=(1/2×Viol+1/4×Vio2+1/8×Vio3+…+1/256×Vio8)×Vcc。它僅由兩種阻值的電阻組成,阻值選取容易,其成本也低。

PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

低通濾波和功率放大電路如圖4所示,設(shè)計(jì)中采用了二階無源低通濾波器,功率放大器選擇TI公司的LM386,它適合放大低電壓的音頻信號。圖4中R1、R2、C5、C6組成二階低通濾波器,其在下降率為6 dB時的截止頻率為16kHz,用以播放采樣頻率為22.05 kHz的WAV語音。C7、

R3組成了一階高通濾波器。此處電壓增益為20 dB,C3為隔直電容。LS1接0.5 W/8 Ω的喇叭。

PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

2.2 軟件設(shè)計(jì)

本系統(tǒng)在硬件平臺的支持下,采用狀態(tài)機(jī)的形式完成對SD卡的讀取、觸摸控制信號的獲取、WAV文件的播放以及WAV的文件名和進(jìn)度等信息的顯示。SD卡讀取及LCD顯示驅(qū)動現(xiàn)已比較成熟,此處不再展開。其中的關(guān)鍵點(diǎn)在于保證WAV音頻高音質(zhì)流暢播放的“同時”,完成控制及顯示等功能。為實(shí)現(xiàn)這一目標(biāo),本設(shè)計(jì)用另一個定時器來計(jì)算下次指令執(zhí)行所剩時間,低于某一閾值則暫停觸控信號的獲取及信息的更新顯示,優(yōu)先保證音頻能流暢播放。實(shí)驗(yàn)表明,該方法在觸控及LCD顯示上并無明顯延遲。其軟件流程圖如圖5所示。

PWM結(jié)合電阻網(wǎng)絡(luò)實(shí)現(xiàn)16位WAV語音播放

結(jié)語

語音的頻率范圍為300~3 000 Hz,而音樂的頻率范圍為20 Hz~20 kHz,在PWM語音播放器中需要注意的是PWM的頻率一般是低通濾波器截止頻率的4倍以上,所以在播放音樂時可根據(jù)實(shí)際需要提高聲音的PWM頻率,還可以修改低通濾波器的電容參數(shù)(C5、C6),將電容減小,并增大濾波器的截止頻率,從而達(dá)到音樂的頻帶要求。

該方案采用PWM并結(jié)合電阻網(wǎng)絡(luò)的形式,其結(jié)構(gòu)簡單,性價比高。現(xiàn)單片機(jī)的主頻很容易突破12 MHz,加上MSP430F5529為16位單片機(jī),其調(diào)制PWM的精度可達(dá)10位以上,基本彌補(bǔ)了數(shù)據(jù)的逼近處理帶來的誤差,提高了整個系統(tǒng)的語音播放音質(zhì)。該方案可廣泛用于火車站的播報提醒、銀行等場合的叫號系統(tǒng)、電話應(yīng)答機(jī)以及各種需要高音質(zhì)語音播報的場合。



關(guān)鍵詞: WAV PWM 電阻網(wǎng)絡(luò)

評論


技術(shù)專區(qū)

關(guān)閉