《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 解決方案 > 數(shù)字濾波器對(duì)模擬音頻信號(hào)電平的影響研究

數(shù)字濾波器對(duì)模擬音頻信號(hào)電平的影響研究

2011-07-14
作者:Jorge Arbona,Supriyo Palit

  問題理解

 

  使用數(shù)字濾波器時(shí)需要考慮的一個(gè)重要問題是信號(hào)電平對(duì)其數(shù)字到模擬域轉(zhuǎn)換產(chǎn)生的影響。假設(shè)系統(tǒng)為處理單元提供數(shù)字信號(hào),并在沒有進(jìn)行任何處理的情況下,使用一種理想的 DAC將其轉(zhuǎn)換為模擬,如圖1所示。本例中,我們將0-dBFS數(shù)字信號(hào)供給DAC,并把它轉(zhuǎn)換成模擬域。滿量程振幅信號(hào)編解碼器規(guī)范中說明了數(shù)字編碼和模擬輸出振幅之間的關(guān)系。如果滿量程振幅規(guī)范為0.707 VRMS(即1peak),這就意味著滿量程0-dBFS數(shù)字正弦波將會(huì)產(chǎn)生1-Vpeak的正弦波,如圖所示。

  如果DAC的限制為–2n–1和2n–1–1,由于在輸出端對(duì)其進(jìn)行削波處理,因此對(duì)超出這些限制的信號(hào)進(jìn)行放大處理會(huì)使信號(hào)失真(假設(shè)飽和邏輯),如圖2所示。請(qǐng)注意,大多數(shù)信號(hào)處理器一般在向DAC提供數(shù)據(jù)以前都允許一定量的余量。處理器內(nèi)存中的數(shù)據(jù)保持不失真很重要。圖2描述了超出限制時(shí)可能會(huì)出現(xiàn)輸出削波的一些DAC輸入限制。

 


  圖1:表示為1-Vpeak模擬信號(hào)的滿量程數(shù)字信號(hào)

  

  圖2:數(shù)字域的過多增益可使信號(hào)超出DAC的上下限

 

  這個(gè)問題的一種解決方案是保證放大信號(hào)時(shí)不超出DAC的限制(即保證不將正增益應(yīng)用于源信號(hào))。然而,許多情況下,這種解決方案的效果并不那么明顯。在某個(gè)具體頻率范圍內(nèi),相對(duì)于滿量程DAC輸入振幅執(zhí)行一次信號(hào)增強(qiáng),也會(huì)帶來一些不利影響。圖3中,500-Hz信號(hào)增強(qiáng)6 dB。我們?cè)谀M輸出中觀測(cè)到失真,這是由于DAC削波。

 

  

  圖3:指定頻率帶的可能升壓效果

 

  圖4同樣描述了這種概念。請(qǐng)注意,當(dāng)傳遞到處理器內(nèi)存的更大總線寬時(shí),源數(shù)據(jù)的噪聲得到了繼承。如前所述,數(shù)據(jù)下調(diào)量為最大總信號(hào)增強(qiáng)量,以適應(yīng)增強(qiáng)區(qū)域。但是,如圖5 所示,即使增強(qiáng)參考點(diǎn)位于某個(gè)較好的位置,DAC信號(hào)也會(huì)受到輸出SNR的影響。如果信號(hào)增強(qiáng)量并未極大地?fù)p害總系統(tǒng)SNR,則簡(jiǎn)單的調(diào)節(jié)或許是一種可行的解決方案。一些低功耗編解碼器擁有100dB的SNR,其允許在不犧牲原始16位源SNR的情況下,進(jìn)行一定量的調(diào)節(jié)。

 

  

  圖4:全數(shù)字信號(hào)鏈的信號(hào)組成

  

  圖5:使用調(diào)節(jié)時(shí)的信號(hào)組成

 

  問題理解

 

  使用數(shù)字濾波器時(shí)需要考慮的一個(gè)重要問題是信號(hào)電平對(duì)其數(shù)字到模擬域轉(zhuǎn)換產(chǎn)生的影響。假設(shè)系統(tǒng)為處理單元提供數(shù)字信號(hào),并在沒有進(jìn)行任何處理的情況下,使用一種理想的 DAC將其轉(zhuǎn)換為模擬,如圖1所示。本例中,我們將0-dBFS數(shù)字信號(hào)供給DAC,并把它轉(zhuǎn)換成模擬域。滿量程振幅信號(hào)編解碼器規(guī)范中說明了數(shù)字編碼和模擬輸出振幅之間的關(guān)系。如果滿量程振幅規(guī)范為0.707 VRMS(即1peak),這就意味著滿量程0-dBFS數(shù)字正弦波將會(huì)產(chǎn)生1-Vpeak的正弦波,如圖所示。

  如果DAC的限制為–2n–1和2n–1–1,由于在輸出端對(duì)其進(jìn)行削波處理,因此對(duì)超出這些限制的信號(hào)進(jìn)行放大處理會(huì)使信號(hào)失真(假設(shè)飽和邏輯),如圖2所示。請(qǐng)注意,大多數(shù)信號(hào)處理器一般在向DAC提供數(shù)據(jù)以前都允許一定量的余量。處理器內(nèi)存中的數(shù)據(jù)保持不失真很重要。圖2描述了超出限制時(shí)可能會(huì)出現(xiàn)輸出削波的一些DAC輸入限制。

 

  

  圖1:表示為1-Vpeak模擬信號(hào)的滿量程數(shù)字信號(hào)

  

  圖2:數(shù)字域的過多增益可使信號(hào)超出DAC的上下限

 

  這個(gè)問題的一種解決方案是保證放大信號(hào)時(shí)不超出DAC的限制(即保證不將正增益應(yīng)用于源信號(hào))。然而,許多情況下,這種解決方案的效果并不那么明顯。在某個(gè)具體頻率范圍內(nèi),相對(duì)于滿量程DAC輸入振幅執(zhí)行一次信號(hào)增強(qiáng),也會(huì)帶來一些不利影響。圖3中,500-Hz信號(hào)增強(qiáng)6 dB。我們?cè)谀M輸出中觀測(cè)到失真,這是由于DAC削波。

 

  

  圖3:指定頻率帶的可能升壓效果

 

  圖4同樣描述了這種概念。請(qǐng)注意,當(dāng)傳遞到處理器內(nèi)存的更大總線寬時(shí),源數(shù)據(jù)的噪聲得到了繼承。如前所述,數(shù)據(jù)下調(diào)量為最大總信號(hào)增強(qiáng)量,以適應(yīng)增強(qiáng)區(qū)域。但是,如圖5 所示,即使增強(qiáng)參考點(diǎn)位于某個(gè)較好的位置,DAC信號(hào)也會(huì)受到輸出SNR的影響。如果信號(hào)增強(qiáng)量并未極大地?fù)p害總系統(tǒng)SNR,則簡(jiǎn)單的調(diào)節(jié)或許是一種可行的解決方案。一些低功耗編解碼器擁有100dB的SNR,其允許在不犧牲原始16位源SNR的情況下,進(jìn)行一定量的調(diào)節(jié)。

 

  

  圖4:全數(shù)字信號(hào)鏈的信號(hào)組成

  

  圖5:使用調(diào)節(jié)時(shí)的信號(hào)組成

 

  量化與數(shù)字表示法

 

  在數(shù)字處理過程中,實(shí)數(shù)表示為一個(gè)具有固定精度的整數(shù)值。這被稱作為量化法,而量化值是一個(gè)原始值的近似值。整數(shù)值可以表示為一個(gè)定點(diǎn)數(shù)或者浮點(diǎn)數(shù)。表示為定點(diǎn)數(shù)的某個(gè)整數(shù)值由數(shù)字位和小數(shù)位組成。表示為浮點(diǎn)數(shù)的某個(gè)整數(shù)值由指數(shù)位和尾數(shù)位組成。本討論全部規(guī)定為定點(diǎn)數(shù)和定點(diǎn)運(yùn)算。

  在數(shù)字處理過程中,實(shí)數(shù)表示為一個(gè)具有固定精度的整數(shù)值。這被稱作為量化法,而量化值是一個(gè)原始值的近似值。整數(shù)值可以表示為一個(gè)定點(diǎn)數(shù)或者浮點(diǎn)數(shù)。表示為定點(diǎn)數(shù)的某個(gè)整數(shù)值由數(shù)字位和小數(shù)位組成。表示為浮點(diǎn)數(shù)的某個(gè)整數(shù)值由指數(shù)位和尾數(shù)位組成。本討論全部規(guī)定為定點(diǎn)數(shù)和定點(diǎn)運(yùn)算。定點(diǎn)數(shù)表示為小數(shù)點(diǎn)(十進(jìn)制小數(shù)點(diǎn))后固定數(shù)位的二進(jìn)制補(bǔ)碼整數(shù)。這些數(shù)字組成數(shù)值的小數(shù)部分。小數(shù)點(diǎn)前面的數(shù)字為整數(shù)部分,并表示數(shù)值的范圍。整數(shù)部分還包含數(shù)值的符號(hào)。

  進(jìn)入音頻處理器的數(shù)字?jǐn)?shù)據(jù)被認(rèn)為是位于-1和1-1LSB之間的一個(gè)實(shí)數(shù)。假設(shè)實(shí)值表示為一個(gè)16位定點(diǎn)數(shù), 則數(shù)值-1可以以二進(jìn)制表示為1000000000000000(或者十六進(jìn)制的 0x8000)。在二進(jìn)制補(bǔ)碼運(yùn)算中,0x8000對(duì)應(yīng)一個(gè)等于–32768的整數(shù)值。這就意味著,該整數(shù)值除以32768可以得到實(shí)值的量化近似值。二進(jìn)制的16位最大正數(shù)為0111111111111111(或者十六進(jìn)制的0x7FFF)。對(duì)應(yīng)整數(shù)值為32767。將其除以32768換算系數(shù),得到這種模式表示的最大實(shí)數(shù)。該數(shù)值為32767/32768 = 0.999969482421875。圖6 顯示了這種定點(diǎn)表示法。

 

  

  圖6:實(shí)數(shù)的定點(diǎn)表示法

 

  這種表示法中,共有15個(gè)小數(shù)位和1個(gè)整數(shù)位,同時(shí)也為符號(hào)位。這就意味著,量化以前實(shí)數(shù)必須位于-1和0.999969482421875之間。如果實(shí)數(shù)超過或者低于這一范圍,其便無法以給定格式表示,因?yàn)?16 位寄存器會(huì)溢出。為了容納更大的實(shí)數(shù),我們需要增加整數(shù)部分,代價(jià)是減少小數(shù)部分。這種格式也被稱作1.15格式(1=數(shù)字位,而15=符號(hào)位)。數(shù)字處理器的輸入始終以 1.n 格式表示,其中n為小數(shù)位數(shù)(15、19、23或者31)。0dBFS值對(duì)應(yīng)于滿量程正弦波的RMS值,而該正弦波的幅值為 (2n–1)/2n。給定格式的最大實(shí)數(shù)以2n表示。用于表示某個(gè)信號(hào)的位數(shù)被稱作信號(hào)位寬或者數(shù)據(jù)位寬。

 

  溢出與飽和

 

  處理單元計(jì)算產(chǎn)生值大于數(shù)據(jù)位寬值時(shí)出現(xiàn)溢出。溢出一般與累加器的計(jì)算有關(guān),其相同符號(hào)的連續(xù)數(shù)值相加,然后存儲(chǔ)起來。即使出現(xiàn)溢出以后,累加器一般還是會(huì)繼續(xù)累加,因?yàn)橹灰怀鲞吔缛匀贿€是會(huì)得到正確的最終結(jié)果。

  在其被存儲(chǔ)為信號(hào)值以前,累加器輸出就已飽和。飽和是一個(gè)正溢出轉(zhuǎn)換為最大正數(shù)而負(fù)溢出轉(zhuǎn)換為最小負(fù)數(shù)的過程。飽和是一種非線性運(yùn)算,并導(dǎo)致出現(xiàn)嚴(yán)重的輸出諧波失真。我們使用余量位來防止飽和。

 

  信號(hào)位

 

  信號(hào)和噪聲位影響系統(tǒng)性能。數(shù)字音頻處理器增加量化噪聲,整體性能是模擬電路噪聲和量化噪聲的結(jié)果。假設(shè)兩個(gè)噪聲源都為獨(dú)立隨機(jī)過程的結(jié)果,則總系統(tǒng)噪聲性能可定義為:

  

  其中S為均勻分布的隨機(jī)信號(hào),NC為DAC電路噪聲,而NQ為量化噪聲。使用100-dB DAC和120-dB信號(hào)處理器,會(huì)產(chǎn)生99.96 dB的總SNR。

  我們應(yīng)該注意到,總SNR也受到源—數(shù)字音頻處理器輸入的限制。如果輸入為16位數(shù),則系統(tǒng)的信號(hào)量化噪聲比(SQNR)至多為96 dB(假設(shè)為均勻分布的隨機(jī)信號(hào),未加權(quán))。因此,在這種情況下,就算是更高位的內(nèi)部表示(更低的 NQ)也不會(huì)有明顯的改善。

 

  噪聲位

 

  如前所述,信號(hào)位數(shù)決定數(shù)字音頻系統(tǒng)的性能。有時(shí),濾波器響應(yīng)計(jì)算會(huì)需要更多的位數(shù)。

  濾波器實(shí)施包括一個(gè)信號(hào)流經(jīng)并被存儲(chǔ)為濾波器延遲元的數(shù)據(jù)通路。信號(hào)和延遲值乘以濾波器抽頭相關(guān)系數(shù)。系數(shù)量化也對(duì)系統(tǒng)性能產(chǎn)生非常重要的作用。信號(hào)和系數(shù)值的積被存儲(chǔ)在累加器中,其一般比信號(hào)具有更高的位寬。后續(xù)的積在累加器中相加(更高位寬),而最終濾波器輸出再以信號(hào)精度存儲(chǔ)(更低位寬)。

  請(qǐng)思考圖7所示雙二階濾波器實(shí)現(xiàn)。圖中,輸入和輸出信號(hào)均以“A 位”表示。A和b系數(shù)以“B 位”表示。輸入信號(hào)及其延遲元乘以系數(shù),并在累加器相加。乘法器和累加器一共為 A+B位寬。之后,輸出信號(hào)被Q模塊量化,然后存儲(chǔ)為一個(gè)A位數(shù)。這樣便產(chǎn)生量化誤差,其為數(shù)字濾波器的噪聲源;因此,需要額外的位來確保數(shù)字濾波器的噪聲影響低于目標(biāo)SNR。這些額外位被稱作噪聲位。相比有限脈沖響應(yīng)(FIR)濾波器,噪聲對(duì)IIR濾波器的影響更加明顯。噪聲位數(shù)還取決于數(shù)字濾波器的采樣頻率和截止頻率。隨著采樣頻率上升,要求的噪聲位數(shù)也增加。隨著截止頻率下降,要求噪聲位數(shù)也隨之增加。48-kHz工作時(shí),14到16噪聲位便足以維持40-Hz濾波器的目標(biāo)SNR。

 

  

  圖7:雙二階濾波器實(shí)施

 

  余量位

 

  除了信號(hào)和噪聲位,還需要更多的位來防止溢出。這些位被稱作余量位。端到端音頻處理鏈一般會(huì)保持信號(hào)電平。這就意味著,如果0-dB信號(hào)為信號(hào)鏈的輸入,則輸出為0dB或者更低。(一般會(huì)有一個(gè)能將信號(hào)擺動(dòng)限制到零以下幾分貝的信號(hào)壓縮器。)如果我們使用升壓濾波器來放大某些的信號(hào)頻帶,則其它頻帶一般會(huì)被衰減,以阻止信號(hào)升至0dB以上。就后一種情況而言,當(dāng)輸入信號(hào)電平為0dB時(shí)(也稱作中性信號(hào)電平),輸出信號(hào)會(huì)低于0dB,且僅放大后的頻帶會(huì)在輸出端達(dá)到0dB。這樣會(huì)降低音頻信號(hào)的平均音量水平。

  盡管信號(hào)電平維持在0dB,但在中間處理點(diǎn)信號(hào)還是會(huì)溢出。為了防止溢出,我們需要余量位—即除信號(hào)和噪聲位以外的位。

  共有兩個(gè)溢出源:

  1、音頻處理鏈可以具有一個(gè)(在某些具體頻率值)增益大于0dB 的濾波器。該濾波器可以為一個(gè)級(jí)聯(lián)濾波器鏈(例如:低通、高通和/或帶通濾波器等)的組成部分,其總增益為0dB,或者也可以是一個(gè)放大中性信號(hào)電平相關(guān)具體頻率帶的頻率選擇濾波器(例如:現(xiàn)成的EQ濾波器)。請(qǐng)注意,如果實(shí)數(shù)以1.n格式表示(其中n為小數(shù)位數(shù)),則數(shù)字的大小始終小于1。因此,如果使用一個(gè)0dB以上增益(大于1的實(shí)數(shù))的濾波器,則輸入值為 0dB(等于1的一個(gè)實(shí)數(shù))時(shí)濾波器的輸出值將會(huì)溢出。為了防止在這類情況下出現(xiàn)溢出,我們需要更多的余量位。

  2、增益小于或者等于0dB的濾波器會(huì)有大于1的瞬態(tài)實(shí)值。為了確保這些瞬態(tài)值不溢出,需要使用余量位。

  圖8顯示了音頻處理器中信號(hào)的圖示。需要注意的重要一點(diǎn)是,余量位主要用于適應(yīng)中間信號(hào)增長(zhǎng)。預(yù)計(jì)在最終處理模塊的末端,輸出將會(huì)恰好位于信號(hào)位寬內(nèi)。另外,低信號(hào)振幅時(shí),輸出仍然會(huì)在限制以內(nèi),而不會(huì)失真;但是,高信號(hào)振幅時(shí),輸出將會(huì)飽和,并引起失真。為了防止出現(xiàn)失真,最好是在最終輸出以前讓信號(hào)衰減。

 

  

  圖8:余量位信號(hào)表示法

 

  調(diào)節(jié)

 

  調(diào)節(jié)用于避免增益超出0dB的濾波器出現(xiàn)飽和。我們可以專門使用一個(gè)升壓濾波器,獲得某個(gè)特定頻率。即使是一個(gè)多節(jié)低通濾波器也會(huì)有一個(gè)雙二階節(jié),其實(shí)際獲得某些高于有效余量的頻率(總響應(yīng)仍然為0dB)。在這種情況下,使用還是不使用調(diào)節(jié)方法,取決于輸入信號(hào)電平乘以總濾波器響應(yīng)的最大增益。如果乘積大于有效DAC余量,則可以使用調(diào)節(jié)方法來避免飽和。

  一種調(diào)節(jié)方法是讓系統(tǒng)的傳輸函數(shù)衰減一定量,該量的大小等于濾波器傳輸函數(shù)的最大振幅。調(diào)節(jié)因數(shù)可以定義為:

  

  其中0≤ω ≤ π。第二種方法是將輸入信號(hào)做S調(diào)節(jié)。圖9展示了調(diào)節(jié)傳輸函數(shù)的效果。滿量程正弦波為傳輸函數(shù)的輸入,其讓平坦頻率衰減6dB。相對(duì)于–6dBFS,1-kHz 信號(hào)增強(qiáng)了6 dB。

 

  

  圖9:傳輸函數(shù)調(diào)節(jié)

 

  在一些情況下,由于濾波器結(jié)構(gòu)和瞬態(tài)信號(hào)序列,濾波器的輸出會(huì)高于0dB,盡管其并沒有0dB以上的增益。如果單個(gè)內(nèi)存單元為0dB,且符號(hào)與抽頭相反,則FIR濾波器可以使信號(hào)增益增加的量為濾波器抽頭絕對(duì)值的和。濾波器響應(yīng)不能超出0dB,因此要使用額外余量。IIR濾波器額外余量的計(jì)算較為復(fù)雜,因?yàn)樗鼈冇性S多反饋單元,同時(shí)要找到?jīng)Q定瞬態(tài)增益上限的閉型表達(dá)式是一個(gè)復(fù)雜的過程。實(shí)際上,信號(hào)處理器提供額外余量(DAC 限制以上)的原因之一是允許瞬態(tài)值余量。我們可能會(huì)需要進(jìn)行一些測(cè)量,來計(jì)算額外余量。某些情況下,可能需要對(duì)SNR做一些讓步,以處理飽和帶來的失真問題,同時(shí)還可能會(huì)需要增加模擬增益來讓信號(hào)歸于0dB。

  使用調(diào)節(jié)方法,有時(shí)需要在模擬輸出級(jí)中添加額外增益(升壓)來進(jìn)行補(bǔ)償。應(yīng)特別注意的是,要確保升壓區(qū)域的信號(hào)不會(huì)使輸出放大器飽和,因?yàn)樗鼤?huì)導(dǎo)致出現(xiàn)失真信號(hào)。在處理器的最終輸出級(jí)同樣也有升壓,目的是對(duì)信號(hào)調(diào)節(jié)進(jìn)行補(bǔ)償。這是一些多節(jié)、0dB濾波器所要求的,其信號(hào)調(diào)節(jié)的目的是防止一個(gè)或多個(gè)單節(jié)出現(xiàn)溢出。就那些獲得0dB以上頻率的濾波器(現(xiàn)成的EQ濾波器)來說,中性信號(hào)電平被調(diào)節(jié)至0dB以下。這種情況下,并不要求末級(jí)升壓。結(jié)果是損失了平坦區(qū)域的SNR。

  一種更講究的解決方案是根據(jù)數(shù)字處理器應(yīng)用的音量增益來限制濾波器增益的大小,其非常適合于耳機(jī)應(yīng)用。在高音量時(shí),降低頻率升壓并最終在全音量時(shí)為平坦。

  在一些情況下,頻率升壓保持恒定,而在高音量時(shí)對(duì)信號(hào)進(jìn)行壓縮。這便是抗削波動(dòng)態(tài)范圍壓縮器 (DRC) 功能:低音量時(shí),保持原始SNR;但隨著音量的增加,調(diào)節(jié)度也成比例增加來防止出現(xiàn)失真。

  不管使用哪種方法,充分考慮人們對(duì)聲音和噪聲的感知過程都是很重要的。人的聽覺有一個(gè)明顯的動(dòng)態(tài)范圍。耳機(jī)放大器在噪聲層和輸出功率之間進(jìn)行平衡,以最好地適應(yīng)這一范圍。例如,TLV320AIC3254音頻編解碼器能夠向典型32-Ω或者16-Ω耳機(jī)負(fù)載提供非常高的純 500 mVRMS 聲壓級(jí) (SPL),同時(shí)具有滿量程以下100dB的噪聲底限(加權(quán)值),其在人的聽覺閾值以下(請(qǐng)參見圖 10)。有時(shí),甚至沒有必要在實(shí)施調(diào)節(jié)以后增加額外的放大率,因?yàn)檩敵龉β蔬h(yuǎn)高于舒適聽覺水平。

 

  

  圖10:相對(duì)人類聽覺的耳機(jī)音量

 

  作者:Jorge Arbona TI應(yīng)用工程師

  Supriyo Palit TI軟件系統(tǒng)工程師

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。