音頻控制芯片PGA2311的音頻增益自動(dòng)控制
引言
音頻接收設(shè)備已經(jīng)是日常生活、學(xué)習(xí)、工作中不可缺少的工具,但是在使用過(guò)程中由于某些原因,如切換頻道、播放廣告等,信號(hào)輸出時(shí)會(huì)出現(xiàn)音量大小不一的情況,嚴(yán)重影響用戶(hù)的收聽(tīng)效果。產(chǎn)生這種音量相差較大的主要原因是音頻信號(hào)輸入的幅度不一致,解決辦法就是進(jìn)行增益控制。
最早的增益控制是模擬電路檢測(cè)控制,但模擬電路設(shè)計(jì)相對(duì)繁瑣,且難以實(shí)現(xiàn)較寬范圍的增益控制,因此隨著數(shù)字信號(hào)處理器件(DSP)的發(fā)展,采用DSP進(jìn)行增益控制成為主流。起初數(shù)字器件處理的一般方法是大的信號(hào)減小增益,小的信號(hào)不處理?,F(xiàn)在也有對(duì)小信號(hào)進(jìn)行放大的方法,但由于擔(dān)心在沒(méi)有信號(hào)輸入的情況下增益調(diào)整太大,會(huì)使背景噪聲也加大,因此增益調(diào)整范圍不大,不能達(dá)到理想的控制效果。另外,基本都是對(duì)輸入信號(hào)進(jìn)行檢測(cè),即前饋控制,對(duì)輸出信號(hào)不進(jìn)行檢測(cè),這樣在輸人時(shí)若增益較大,輸出會(huì)被限幅,影響收聽(tīng)效果。且DSP方案成本相對(duì)較高。本方案采用成本低的單片機(jī)為處理核心,通過(guò)簡(jiǎn)單的增益控制算法完成增益自動(dòng)控制。
1 系統(tǒng)硬件設(shè)計(jì)
如圖1所示,整個(gè)系統(tǒng)以音頻信號(hào)的采集處理為核心進(jìn)行設(shè)計(jì)。音頻控制芯片PGA2311兩邊的音頻信號(hào)輸入和輸出端,經(jīng)放大器TL084電平搬移后送到MSP430F149的A/D口進(jìn)行采樣(對(duì)信號(hào)輸入/輸出端都進(jìn)行檢測(cè)目的是解決在輸入端無(wú)信號(hào)情況下增益是否調(diào)整的問(wèn)題,同時(shí)避免增益過(guò)大導(dǎo)致輸出端限幅發(fā)生)。采樣數(shù)據(jù)由軟件算法處理得到增益值,經(jīng)電平變換器74HC245配置到PGA2311。按鍵和數(shù)碼管完成輸出電平門(mén)限范圍的設(shè)置和顯示。
1.1 主控電路
主控芯片MSP430F149是一款16位、48個(gè)8位并行I/O口、具有精簡(jiǎn)指令集、超低功耗(節(jié)電模式下最低只有0.1μA)的單片機(jī),其尋址空間共64 KB其中RAM為2KB,給系統(tǒng)開(kāi)發(fā)帶來(lái)很大的方便。它內(nèi)置一個(gè)12位A/D轉(zhuǎn)換器ADC12、采樣保持器和模擬多路器。ADC12具有高速、通用的特點(diǎn),能夠?qū)?個(gè)外部模擬源和4個(gè)內(nèi)部參考電源(包括內(nèi)部溫度傳感器源)進(jìn)行A/D轉(zhuǎn)換。ADC12還提供多種采樣觸發(fā)方式、轉(zhuǎn)換時(shí)鐘周期、轉(zhuǎn)換模式的選擇。
PGA2311是一款雙聲道、可編程增益放大器,與MSP430F149之間通過(guò)SPI總線交互,其增益范圍為+31.5~-95.5 dB。
圖1中MSP430F149是3.3 V供電,而PGA231l是±5 V供電的CMOS器件,因此在I/O邏輯電平匹配時(shí)需要注意,在驅(qū)動(dòng)PGA2311時(shí)用電平移位器74HC245達(dá)到電平匹配。[!--empirenews.page--]
1.2 電平搬移電路
由于一般音頻輸出設(shè)備音量大小不一且為交流耦合形式,而MSP430F149的A/D采樣電壓范圍是0~2.5 V,為了使被采樣信號(hào)與A/D匹配避免削波失真,需要將輸入信號(hào)比例放大(或縮小),并將中心電壓搬移至1.25 V附近。如圖2所示。
2 軟件設(shè)計(jì)
軟件設(shè)計(jì)包括按鍵顯示、外設(shè)控制、音頻信號(hào)處理幾個(gè)部分,重點(diǎn)是音頻信號(hào)處理的AGC算法。按鍵顯示響應(yīng)用戶(hù)設(shè)置輸出音量大小并顯示出來(lái),外設(shè)控制主要是對(duì)PGA2311進(jìn)行配置。
2.1 AGC算法
AGC算法核心是通過(guò)信號(hào)的包絡(luò)信息來(lái)判斷信號(hào)的動(dòng)態(tài)范圍是否超過(guò)設(shè)置大小,這里需要快速跟蹤包絡(luò)的變化,及時(shí)進(jìn)行增益控制。
以往的AGC算法中乘除法運(yùn)算對(duì)CPU資源的占用較大。這里提出的AGC算法比較簡(jiǎn)單實(shí)用,其流程如圖3所示。具體實(shí)現(xiàn)過(guò)程:從單片機(jī)的A/D口,獲得音頻輸入/輸出信號(hào)的電平存入數(shù)組。數(shù)組存儲(chǔ)數(shù)據(jù)達(dá)到門(mén)限比較要求,進(jìn)入峰值比較流程。根據(jù)存儲(chǔ)的輸入信號(hào)數(shù)據(jù),采用冒泡排序的算法找出最大幅值,判斷輸入端是否有信號(hào)。如果判定沒(méi)有音頻信號(hào)輸入,則增益不調(diào)整,防止由于輸出信號(hào)太小而一直增大增益,噪聲過(guò)大,或者一旦出現(xiàn)聲音,由于增益過(guò)大而出現(xiàn)短時(shí)間輸出聲音太大。輸入端有信號(hào),則對(duì)輸出端進(jìn)行檢測(cè),同樣調(diào)用冒泡排序程序找出最大幅值,如發(fā)現(xiàn)輸出信號(hào)大小超過(guò)設(shè)定門(mén)限,則減小增益,反之則增大增益。在減小增益時(shí),步進(jìn)要大些,而在增大增益時(shí)步進(jìn)要小些,這樣在增益調(diào)整時(shí)輸出的音量使用戶(hù)聽(tīng)覺(jué)上不覺(jué)得難受。
3 實(shí)驗(yàn)論證
為驗(yàn)證設(shè)計(jì)的正確性進(jìn)行實(shí)驗(yàn)論證。設(shè)定輸出電平范圍,由計(jì)算機(jī)輸入突變的音頻信號(hào),通過(guò)示波器觀察輸出,如圖4所示。
從圖4中方框所標(biāo)示的音量突變區(qū)域,可以看出輸入音量突然增大后,在500 ms內(nèi)就將增益調(diào)低,保持音量輸出在設(shè)定范圍輸出。高音突變低音等實(shí)驗(yàn)由于調(diào)整周期較長(zhǎng),這里就不作圖示整個(gè)調(diào)整過(guò)程了。
結(jié)語(yǔ)
實(shí)驗(yàn)結(jié)果說(shuō)明,該設(shè)計(jì)增益控制及時(shí)、準(zhǔn)確,保持輸出信號(hào)電平在設(shè)定范圍穩(wěn)定輸出,且低功耗,實(shí)現(xiàn)簡(jiǎn)單,可移植性強(qiáng),可以滿(mǎn)足目前用戶(hù)對(duì)音頻接收設(shè)備音量輸出的要求。