問題理解
使用數(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ī)范中說(shuō)明了數(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ù)字域的過(guò)多增益可使信號(hào)超出DAC的上下限
這個(gè)問題的一種解決方案是保證放大信號(hào)時(shí)不超出DAC的限制(即保證不將正增益應(yīng)用于源信號(hào)),。然而,,許多情況下,這種解決方案的效果并不那么明顯,。在某個(gè)具體頻率范圍內(nèi),,相對(duì)于滿量程DAC輸入振幅執(zhí)行一次信號(hào)增強(qiáng),也會(huì)帶來(lái)一些不利影響,。圖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ī)范中說(shuō)明了數(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ù)字域的過(guò)多增益可使信號(hào)超出DAC的上下限
這個(gè)問題的一種解決方案是保證放大信號(hào)時(shí)不超出DAC的限制(即保證不將正增益應(yīng)用于源信號(hào)),。然而,許多情況下,,這種解決方案的效果并不那么明顯,。在某個(gè)具體頻率范圍內(nèi),相對(duì)于滿量程DAC輸入振幅執(zhí)行一次信號(hào)增強(qiáng),,也會(huì)帶來(lái)一些不利影響,。圖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ù)字處理過(guò)程中,實(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ù)字處理過(guò)程中,,實(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ù)超過(guò)或者低于這一范圍,,其便無(wú)法以給定格式表示,因?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ǔ)起來(lái),。即使出現(xiàn)溢出以后,累加器一般還是會(huì)繼續(xù)累加,,因?yàn)橹灰怀鲞吔缛匀贿€是會(huì)得到正確的最終結(jié)果,。
在其被存儲(chǔ)為信號(hào)值以前,累加器輸出就已飽和,。飽和是一個(gè)正溢出轉(zhuǎn)換為最大正數(shù)而負(fù)溢出轉(zhuǎn)換為最小負(fù)數(shù)的過(guò)程,。飽和是一種非線性運(yùn)算,并導(dǎo)致出現(xiàn)嚴(yán)重的輸出諧波失真,。我們使用余量位來(lái)防止飽和。
信號(hào)位
信號(hào)和噪聲位影響系統(tǒng)性能,。數(shù)字音頻處理器增加量化噪聲,,整體性能是模擬電路噪聲和量化噪聲的結(jié)果。假設(shè)兩個(gè)噪聲源都為獨(dú)立隨機(jī)過(guò)程的結(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ù)字濾波器的噪聲源;因此,,需要額外的位來(lái)確保數(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)和噪聲位,還需要更多的位來(lái)防止溢出,。這些位被稱作余量位,。端到端音頻處理鏈一般會(huì)保持信號(hào)電平。這就意味著,,如果0-dB信號(hào)為信號(hào)鏈的輸入,,則輸出為0dB或者更低。(一般會(huì)有一個(gè)能將信號(hào)擺動(dòng)限制到零以下幾分貝的信號(hào)壓縮器,。)如果我們使用升壓濾波器來(lái)放大某些的信號(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é)方法來(lái)避免飽和,。
一種調(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ù)雜的過(guò)程,。實(shí)際上,,信號(hào)處理器提供額外余量(DAC 限制以上)的原因之一是允許瞬態(tài)值余量。我們可能會(huì)需要進(jìn)行一些測(cè)量,,來(lái)計(jì)算額外余量,。某些情況下,可能需要對(duì)SNR做一些讓步,,以處理飽和帶來(lái)的失真問題,,同時(shí)還可能會(huì)需要增加模擬增益來(lái)讓信號(hào)歸于0dB。
使用調(diào)節(jié)方法,,有時(shí)需要在模擬輸出級(jí)中添加額外增益(升壓)來(lái)進(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濾波器)來(lái)說(shuō),,中性信號(hào)電平被調(diào)節(jié)至0dB以下。這種情況下,,并不要求末級(jí)升壓,。結(jié)果是損失了平坦區(qū)域的SNR。
一種更講究的解決方案是根據(jù)數(shù)字處理器應(yīng)用的音量增益來(lái)限制濾波器增益的大小,,其非常適合于耳機(jī)應(yīng)用,。在高音量時(shí),降低頻率升壓并最終在全音量時(shí)為平坦,。
在一些情況下,,頻率升壓保持恒定,而在高音量時(shí)對(duì)信號(hào)進(jìn)行壓縮,。這便是抗削波動(dòng)態(tài)范圍壓縮器 (DRC) 功能:低音量時(shí),,保持原始SNR;但隨著音量的增加,,調(diào)節(jié)度也成比例增加來(lái)防止出現(xiàn)失真,。
不管使用哪種方法,充分考慮人們對(duì)聲音和噪聲的感知過(guò)程都是很重要的,。人的聽覺有一個(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)工程師