嵌入式音頻處理基礎(chǔ)
音頻DAC
傳統(tǒng)的D/A轉(zhuǎn)換方法有加權(quán)電阻器、R-2R梯形網(wǎng)絡(luò)和零點(diǎn)交叉失真等。正如A/D中的情況那樣,Σ-Δ設(shè)計(jì)統(tǒng)治了D/A轉(zhuǎn)換的領(lǐng)域。這些轉(zhuǎn)換器可以接受16位44.1kHz的信號(hào),然后使用插值濾波器把它轉(zhuǎn)換為2.8224MHz的1位樣點(diǎn)流。然后用1位的DAC把這些超級(jí)采樣的樣點(diǎn)流轉(zhuǎn)換成模擬信號(hào)。
一個(gè)典型的嵌入式數(shù)字音頻系統(tǒng)可以使用一個(gè)Σ-Δ音頻ADC和一個(gè)Σ-Δ DAC,因此,在PCM信號(hào)和過(guò)采樣流之間的轉(zhuǎn)換要進(jìn)行兩次。由于這個(gè)原因,Sony與Philips (NXP半導(dǎo)體)已經(jīng)在它們的Super Audio CD(SACD)格式中引入了一種與PCM不同的格式,被稱為直接流數(shù)字(DSD)。這種格式用1位的高頻(2.8224MHz) Σ-Δ流來(lái)存儲(chǔ)數(shù)據(jù),因而繞過(guò)了PCM轉(zhuǎn)換。它的缺點(diǎn)是,DSD流不像PCM那樣直觀,而且需要一套獨(dú)立的數(shù)字音頻算法。
連接至音頻轉(zhuǎn)換器:一個(gè)ADC的例子
好了,我們有了足夠的背景知識(shí)。現(xiàn)在讓我們看一下實(shí)際的轉(zhuǎn)換器連接的例子。對(duì)于低成本音頻ADC的很好的選擇是ADI公司的AD1871,它使用Σ-Δ技術(shù)以96kHz的速率進(jìn)行24位的轉(zhuǎn)換。圖3a示出了AD1871的功能框圖。這個(gè)轉(zhuǎn)換器有左(VINLx)和右(VINRx)兩個(gè)輸入聲道,這其實(shí)就是能夠處理立體聲數(shù)據(jù)的另外一種說(shuō)法。數(shù)字化的音頻數(shù)據(jù)是通過(guò)數(shù)據(jù)端口串行流出的,通常流到信號(hào)處理器的一個(gè)相應(yīng)的串行端口(如Blackfin處理器上的SPORT接口)。另外還有一個(gè)SPI(串行外圍接口)端口,利用該端口,主處理器可對(duì)AD1871通過(guò)軟件命令進(jìn)行配置。這些命令包括設(shè)置采樣率、字長(zhǎng)、聲道增益和靜音等的方法,還有其他一些參數(shù)的設(shè)定。
圖3 (a)AD1871音頻ADC的功能框圖
(b) 一個(gè)ADSP-BF533媒體處理器與AD1871的無(wú)縫連接
正如圖3b中的框圖所指出的,AD1871 ADC與 Blackfin處理器可無(wú)縫連接。電路的模擬部分被簡(jiǎn)化了,因?yàn)樵谶@個(gè)討論中只有數(shù)字信號(hào)才是重要的。AD1871的過(guò)采樣率由外部晶振提供。圖中的處理器有2個(gè)串行端口(SPORT)和一個(gè)SPI端口,用于連接AD1871。被配置成I2S模式的SPORT是與AD1871進(jìn)行數(shù)據(jù)連接的端口,而 SPI端口用作控制連接。
I2S協(xié)議是由Philips(NXP半導(dǎo)體)為音頻信號(hào)的數(shù)字傳輸而開(kāi)發(fā)的一個(gè)標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)使音頻設(shè)備制造商所生產(chǎn)的器件可以相互兼容。
確切地說(shuō),I2S是一種用于傳輸立體聲數(shù)據(jù)的3線串行接口。正如圖4a中所示,它規(guī)定了位時(shí)鐘(中)、數(shù)據(jù)線(下)和左右同步線(上),而左右同步線用來(lái)選擇當(dāng)前正在傳送的數(shù)據(jù)幀是左聲道的還是右聲道的。
從本質(zhì)上講,I2S是一個(gè)帶有兩個(gè)活動(dòng)聲道的時(shí)分復(fù)用(TDM)串行流。TDM是一種通過(guò)一條物理鏈路傳輸超過(guò)一個(gè)聲道(比如左聲道與右聲道)的方法。
在AD1871電路結(jié)構(gòu)中,當(dāng)對(duì)SPORT時(shí)鐘(RSCLK)和幀同步(RFS)線進(jìn)行驅(qū)動(dòng)時(shí),ADC可以降低它從外部晶振接收到的12.288 MHz采樣率。該配置保證了采樣和數(shù)據(jù)傳輸是同步的。
SPI接口,如圖4b所示,是Motorola為了使主處理器可以與各種數(shù)字器件相連而設(shè)計(jì)的。這個(gè)在SPI主設(shè)備與SPI從設(shè)備之間的接口由一條時(shí)鐘線(SCK)、兩條數(shù)據(jù)線(MOSI和MISO)和一條從設(shè)備選擇(SPISEL)線組成。其中一條數(shù)據(jù)線由主設(shè)備(MOSI)驅(qū)動(dòng),而另一條由從設(shè)備(MISO)驅(qū)動(dòng)。在圖3b的例子中,處理器的SPI端口是無(wú)縫地與AD1871的SPI模塊相連接的。
圖4 (a)數(shù)據(jù)信號(hào)由AD1871使用I2S協(xié)議進(jìn)行傳送
(b) SPI 3線接口用于控制AD1871
帶有獨(dú)立SPI控制端口的音頻編解碼器允許主處理器在運(yùn)行中修改ADC的設(shè)置。除了靜音和增益控制外,其中一個(gè)確實(shí)很有用的ADC(如AD1871)設(shè)置是對(duì)節(jié)電模式的設(shè)置能力。對(duì)于電池供電的應(yīng)用來(lái)說(shuō),這通常是一個(gè)本質(zhì)功能。
DAC與編解碼器
將音頻DAC與主處理器相連接與我們才討論過(guò)的與ADC連接的過(guò)程完全一樣。在一個(gè)同時(shí)使用ADC和DAC的系統(tǒng)中,同一個(gè)支持雙向傳輸?shù)拇卸丝诳梢酝瑫r(shí)連接這兩者。[!--empirenews.page--]
但是,如果您正在考慮全雙工音頻,那么您最好采用一個(gè)可以同時(shí)完成模擬數(shù)字轉(zhuǎn)換和數(shù)字模擬轉(zhuǎn)換的單芯片音頻編解碼器。這樣的編解碼器的一個(gè)很好的選擇是ADI公司的AD1836,它有三個(gè)立體聲DAC和兩個(gè)立體聲ADC,而且可以通過(guò)多種串行協(xié)議進(jìn)行通訊,包括I2S。
在本文中,我們講到了將音頻轉(zhuǎn)換器與嵌入式處理器進(jìn)行連接的一些基本內(nèi)容。在本文的第二部分,我們將敘述音頻數(shù)據(jù)在存儲(chǔ)和處理時(shí)的格式。我們將特別回顧在選擇數(shù)據(jù)字長(zhǎng)時(shí)的折衷方法。這是很重要的,因?yàn)檫@決定了所用的數(shù)據(jù)類型,而且,如果希望獲得的質(zhì)量等級(jí)太高而某個(gè)特定器件達(dá)不到的時(shí)候,也可以避免選擇某些處理器。此外,數(shù)據(jù)字長(zhǎng)的選擇有助于在增加動(dòng)態(tài)范圍和增加處理能力之間的折衷選擇。
音頻功能在嵌入式媒體處理中起到關(guān)鍵性的作用。雖然一般來(lái)說(shuō),音頻處理比視頻處理占用較少的處理能力,但它們具有相同的重要性。
本文共包括三個(gè)部分,在第一部分中,我們將探討數(shù)據(jù)是如何從各種音頻轉(zhuǎn)換器(DAC和ADC)傳送給嵌入式處理器的。在這之后,我們將探討一些經(jīng)常用于連接音頻轉(zhuǎn)換器的外圍接口標(biāo)準(zhǔn)。
模擬與數(shù)字音頻信號(hào)之間的轉(zhuǎn)換
采樣
所有的A/D與D/A轉(zhuǎn)換都應(yīng)該遵循Shannon-Nyquist采樣定理。簡(jiǎn)言之,該定理規(guī)定了模擬信號(hào)在被采樣時(shí)的速率 (Nyquist采樣率)必需等于或超過(guò)它的帶寬(Nyquist頻率)的兩倍,以便可以在最后的D/A轉(zhuǎn)換中進(jìn)行信號(hào)重構(gòu)。低于Nyquist采樣率的采樣將產(chǎn)生混疊,而這種混疊是那些超過(guò)Nyquist頻率的頻率分量在低頻區(qū)的鏡像疊影。如果我們?nèi)∫粋€(gè)帶寬限制在0-20kHz范圍內(nèi)的音頻信號(hào),并在2×20kHz=40kHz頻率下進(jìn)行采樣,那么Nyquist定理就能確保我們可以對(duì)原來(lái)的信號(hào)進(jìn)行完美重構(gòu)而不會(huì)有任何信號(hào)損失。但是,對(duì)這個(gè)0-20kHz帶限信號(hào)用任何低于40kHz的采樣率進(jìn)行采樣時(shí),將會(huì)由于混疊而產(chǎn)生失真。圖1示出低于Nyquist采樣率的采樣如何使信號(hào)表示得不正確。在40kHz頻率下采樣時(shí),20kHz的信號(hào)被正確地表示(圖1a)。但是,同樣的20kHz正弦波,當(dāng)在30kHz頻率下采樣時(shí),實(shí)際上看起來(lái)像是原始正弦波在一個(gè)較低頻率上的混疊(圖1b)。
圖1 (a)用40kHz對(duì)20kHz信號(hào)進(jìn)行采樣可以正確地捕捉到原始信號(hào)。
(b)用30kHz對(duì)同一個(gè)20kHz信號(hào)進(jìn)行采樣所捕捉到的是一個(gè)被混疊了的信號(hào)(低頻重影)
然而,沒(méi)有一個(gè)實(shí)際系統(tǒng)是正好用兩倍的Nyquist頻率進(jìn)行采樣的。例如,把一個(gè)信號(hào)限制于一個(gè)指定的頻帶內(nèi)要使用模擬低通濾波器,但這些濾波器從來(lái)就不是理想濾波器。因此,通常用來(lái)還原音樂(lè)的最低采樣率是44.1kHz而不是40kHz,而且許多高質(zhì)量系統(tǒng)是用48kHz進(jìn)行采樣的,以捕捉到0-20kHz范圍內(nèi)更加逼真的聽(tīng)覺(jué)感受。
由于語(yǔ)音信號(hào)只是我們可以聽(tīng)到的頻率范圍的一小部分,所以4kHz以下的能量就足以使還原的語(yǔ)音信號(hào)能夠聽(tīng)得懂?;谶@個(gè)原因,電話應(yīng)用中通常只使用8kHz的采樣率(=2×4kHz)。表1歸納了我們所熟悉的一些系統(tǒng)的采樣率。
表1 常用的采樣率
PCM輸出
音頻信號(hào)最常用的數(shù)字表示是PCM(脈沖編碼調(diào)制)信號(hào)。在這種表示中,對(duì)每個(gè)采樣周期內(nèi)的一個(gè)模擬幅度用一個(gè)數(shù)字量進(jìn)行編碼。這樣得到的數(shù)字波形是一個(gè)用來(lái)近似地表示輸入模擬波形的由抽取點(diǎn)組成的矢量。所有A/D轉(zhuǎn)換器的分辨率都是有限的,所以轉(zhuǎn)換器引入了數(shù)字音頻系統(tǒng)所固有的量化噪聲。圖2示出模擬正弦波的PCM表示(圖2a),它是用一個(gè)理想的A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換的,圖中的量化操作顯現(xiàn)為一種“階梯效應(yīng)”(圖2b)。您可以看到,較低的分辨率導(dǎo)致了對(duì)原始波形的較差的表示(圖3c)。
圖2 (a)一個(gè)模擬信號(hào) (b) 數(shù)字化之后的PCM信號(hào)
(c) 使用較少位數(shù)精度進(jìn)行數(shù)字化之后的PCM信號(hào)
作為一個(gè)數(shù)值例子,讓我們假設(shè)用一個(gè)24位A/D轉(zhuǎn)換器對(duì)一個(gè)模擬信號(hào)進(jìn)行采樣,而這個(gè)模擬信號(hào)的范圍從-2.828V到 2.828V(5.656的峰峰值)。24位有224(16777216)個(gè)量化等級(jí)。因此,有效的電壓分辨率為 5.656V/16777216=337.1nV。在本文的第二部分,我們將看到編解碼器的分辨率如何影響音頻系統(tǒng)的動(dòng)態(tài)范圍。
PWM輸出
脈寬調(diào)制(PWM)是不同于PCM的另一種調(diào)制方法,它可以直接驅(qū)動(dòng)輸出電路而無(wú)需任何DAC的幫助。這在需要低成本的解決方案時(shí)特別有用。
在PCM中,對(duì)每個(gè)采樣周期內(nèi)的幅度進(jìn)行一次編碼,而在PWM信號(hào)中描述幅度的是占空比。PWM信號(hào)可以通過(guò)通用I/O引腳產(chǎn)生,或者可以用許多處理器中都有的專用PWM定時(shí)器來(lái)直接驅(qū)動(dòng)。
為了使PWM音頻達(dá)到相當(dāng)好的質(zhì)量,PWM的載波頻率應(yīng)該至少12倍于信號(hào)的帶寬,而且定時(shí)器的分辨率(即占空比的間隔時(shí)間)應(yīng)該有16位。由于載波頻率的需求,傳統(tǒng)PWM音頻電路曾經(jīng)被用于窄帶音頻,比如超重低音。但是,利用目前的高速處理器,就可以擴(kuò)展到更寬的音頻譜。
PWM流必須經(jīng)過(guò)低通濾波,以去除高頻載波。這通常是用驅(qū)動(dòng)揚(yáng)聲器的放大器電路來(lái)完成。D類放大器已經(jīng)被成功地用于這種結(jié)構(gòu)。當(dāng)不需要放大時(shí),一個(gè)低通濾波器就足以用作輸出級(jí)。在一些低成本應(yīng)用中,聲音的品質(zhì)不是那么重要,就可以把PWM流與揚(yáng)聲器直接相連。在這樣的系統(tǒng)中,揚(yáng)聲器紙盆的機(jī)械慣性充當(dāng)了濾除載波頻率的低通濾波器。
音頻轉(zhuǎn)換器的簡(jiǎn)要背景
音頻ADC
完成A/D轉(zhuǎn)換可以有許多種方法。一個(gè)傳統(tǒng)的方法是逐次逼近的方案,該方案使用一個(gè)比較器對(duì)模擬輸入信號(hào)與一連串中間D/A轉(zhuǎn)換輸出之間的比較結(jié)果進(jìn)行檢測(cè),然后得到最后的結(jié)果。
但目前的大多數(shù)ADC都是Σ-Δ轉(zhuǎn)換器。這種轉(zhuǎn)換器不是使用逐次逼近的方法來(lái)產(chǎn)生很高的分辨率,而是使用了1位的ADC。為了對(duì)這個(gè)減少了的量化等級(jí)數(shù)進(jìn)行補(bǔ)償,這些轉(zhuǎn)換器在比Nyquist頻率高得多的頻率下進(jìn)行過(guò)采樣操作。把這些過(guò)采樣的1位樣點(diǎn)流轉(zhuǎn)換成一個(gè)較低速率、較高分辨率的樣點(diǎn)流是使用這些轉(zhuǎn)換器內(nèi)部的數(shù)字濾波模塊完成的,目的是為了適應(yīng)傳統(tǒng)PCM流的處理。例如,一個(gè)16位44.1kHz的Σ-Δ ADC可以用64倍的過(guò)采樣率,產(chǎn)生一個(gè)速率為2.8224MHz的1位樣點(diǎn)流。然后用一個(gè)數(shù)字抽取濾波器把這個(gè)超級(jí)采樣的樣點(diǎn)流轉(zhuǎn)換成一個(gè)速率等于44.1kHz的16位樣點(diǎn)流。
由于對(duì)模擬信號(hào)的過(guò)采樣操作,Σ-Δ ADC放寬了對(duì)用來(lái)限制輸入信號(hào)帶寬的模擬低通濾波器的性能要求。這些轉(zhuǎn)換器還具有將輸出噪聲分布在比傳統(tǒng)轉(zhuǎn)換器更寬的頻譜內(nèi)的優(yōu)點(diǎn)。