音頻接口是連接麥克風和其他聲源與計算機的設備,其在模擬和數字信號之間起到了橋梁連接的作用。音頻接口通常與前置麥克風、線路輸入和其他一系列的輸入設備配合使用。
1 IIS總線
IIS(Integrate InteRFace of Sound)即集成音頻接口,在上個世紀80年代首先被Philips公司用于消費產品的音頻設備,并在一個稱為LRCLK(Left/Right CLOCK)的信號機制中經過多路轉換,將兩路音頻信號合成單一的數據隊列。當LRCLK為高時,左聲道數據被傳輸;LRCLK為低時,右聲道數據被傳輸(也可以反過來,高低與左右聲音的對應可以自定義)。對于多通道系統,在同樣的BCLK和LRCLK條件下,并行執行幾個數據隊列也是可能的。由于IIS、PCM和類似的音頻接口不能提供寄存器入口,因此需要獨立的控制接口。
IIS總線一般具有4根信號線,如圖1所示,包括串行數據輸入(IISDI)、串行數據輸出(IISD0)、左/右聲道選擇(IISLRCK)和串行數據時鐘(IISCLK);產生IISLRCK和IISCLK的是主設備。
2 IIS音頻驅動實現
音頻驅動有3種模式:MDD/PDD模式、Wavedev2模式、UAM模式。它們相同的地方很明顯:接口相同,都是流驅動,透過流接口與上層的waveapi.dll交互。
第1種MDD/PDD模式是最早的模式,也是其他驅動常見的分層模式。如果使用CE提供的MDD(wavem—dd.1ib),會受到一些限制:僅支持一個設備;一個設置僅支持一個流;對循環的支持不大可靠;對流的支持較弱。當然,由于提供了源碼,可以自己修改MDD,突破以上這些限制。
第2種Wavedev2模式,是因為2000年的Smartphone項目產生了新的要求,這些需求需要大改MDD/PDD。比如上面的限制2,根據CE的開發歷史,此時waveapi.dll也不支持software mixer,這就是說只能同時允許一個應用在播放。所以根據當時情況,CE的多媒體開發團隊設計了Wavedev2模式。這是一個單體(不分層)的驅動模式,平臺相關的模塊都在hwctxt.h和hwetxt.cpp中,此外還加入了midi支持、software mixer支持、S/PDlF接口、gain class接口、forcespeaker接口,等等。因此,開發Smartphone或者PPC,這個模式是挺適合的。
第3種UAM模式,即統一音頻模式(Unified AudioModel),在開發WinCE4.2時,要增加對DirectSound的支持,而且有一些音頻設備是支持硬件mixer的,對此使用UAM是很好的選擇。
本測試采用MDD/PDD的驅動結構,下面講述本驅動的關鍵點。
2.1 DMA控制及驅動
通俗地講,DMA(直接內存存取)不需要CPU干擾也不消耗CPU資源,可以把音頻數據自動地從系統總線搬到IIS總線上;如果音頻平均按采樣頻率44.1 kHz、16位字長、左右2聲道計算,碼流為1.411 Mbps,通常在1~3Mbps,所以采用DMA傳輸十分必要。
2.2 時鐘配置
只要位時鐘和采樣時鐘能匹配好,IIS數據格式主從一致,DMA配置好,音頻就可以工作了。
IIS數據格式主要分3種:左對齊、右對齊、IIS格式。聲音聽起來“怪怪地”,就是數據格式不對。頻率計算方法如表1所列。
IIS主設備時鐘頻率可以通過采樣頻率來選擇。IIS主設備時鐘頻率是由IIS預分頻器產生的(IIS主設備時鐘頻率=MCLK/預分頻器值),因此必須選擇合適的預分頻器的值和CODECLK的采樣頻率類型(256或者384fs),才能獲得合適的IISLRC采樣頻率(IISLRCK頻率=IIS主設備時鐘頻率/CODECLK的采樣頻率類型);串行位采樣頻率類型(16/32/48fs)可以通過配置每個通道的串行位數和CODECLK采樣頻率類型來完成,它們之間的關系如表2所列。
如晶振頻率為16.934 4 MHz,通過384分頻為44.1kHz(采樣頻率就是這么來的)。
位時鐘頻率=采樣頻率×數據位×2=44.1 kHz×16×2=1.411 MHz
對于其他頻率的晶振或是來自于總線的時鐘頻率,就要計算出IISC0N中的分頻系數了,以最大限度擬合CODECLK。
2.3 CODEC控制
目前有SPI、I2C和L3三種總線控制CODEC。L3總線(L3MODE、L3CLOCK、L3DATA)都是由通用的I/O端口來控制的。其中L3接口實際上是一種串行接口,它由3根信號線組成,完成處理器和C0DEC之間的數據和控制信號交換。UDAl341TS就是采用L3接口的。
L3DATA:處理器接口數據線。
L3MODE:處理器接口模式信號線。
L3CLOCK:處理器接口時鐘信號線。
三種控制方式中以I2C最為常見。其中I2C又分為寄存器方式和I/O模擬方式兩種,I/O模擬方式的可移植性好,僅I/0模擬方式的I2C驅動又可分為8位、9位、16位,以及是否帶子地址、是否可以連讀連寫、是否要兼容SCCB總線。
2.4 音量控制節點
使用音量調節的地方較多。圖2是音量控制節點的一般模型。
①處的增益由播放器的音量控制功能決定,最大是0dB。也就是說,最多只能還原出原信號強度。
②和③處的增益由Coded IC自身控制,WM8731沒有產生增益功能,②處容易引入信號失真,一般置為O dB,codec加大音量時主要在③處提高增益。
④、⑤處由功放決定,最大也是O dB,便攜式功放通常是電流型,靠放大電流去推動揚聲器。
①+②+③三處的增益和超過O dB時,1 kHz的信號就會產生失真,但是大部分音樂的強度都小于1 kHz測試方波時的強度,所以這三項的和可以比O dB略大,但不能太大,否則會引起信號失真。
a.應用程序通過調用waveOutSetVolume,與手工在控制面板中調節音量等效。
b.調節MediaPlay播放器音量時,通過消息跟蹤可以判斷是否改變了①處的增益,即ARM的DSP數字輸出增益。
c.調節控制面板里的音量時,會發現CODEC的功放寄存器值也會改變。猜想是通過IIS總線實現控制相關寄存器,因為在IoControl消息中沒有發現通過I2C改寫任何寄存器。
通過分析調整音量的方法,有圖2所示的5個節點可控制,目的是音量最大失真最小:讓①處輸出增益最大的情況下,②處PCM Volume置為0 dB(此處放大最容易引入失真),功放置最大時便能獲得不失真最大音量了;如果想再增大音量只能犧牲失真度了,人耳最多接收10%THD(Total Hamonic Distortion,總諧波失真),此種情況下主要靠調節③處的增益。
3 提高音量的有效方法
①在C0DEC與功放不可更改的前提下,選擇合適的喇叭至關重要(不同的喇叭效果大不一樣)。口徑大小不等,紙盆有深有淺。在選擇喇叭時一般要求功放的額定功率是喇叭額定功率的2倍以上,喇叭的實際最大承受功率是其額定輸出功率的2~3倍。喇叭的靈敏度參數很重要,一般是O.1 W時85 dB左右,還要看額定功率時的靈敏度。靈敏度用來衡量將電能轉換為聲音的效率,只講額定功率不講額定功率時的靈敏度是沒有意義的,額定功率下的低靈敏度無益于電阻絲“發熱不出聲”。
②提高功放電壓,根據P=U·U/R,很小的提升電壓,就能獲得平方級的功率提升。如由4 V→6V,功率可提高2.25倍。
③改善音腔設計。
④原則上不建議以犧牲保真度來換取音量。如不得已而為之,使用時也要嚴格控制在THD<10%。
3.1 功放與揚聲器的匹配和選擇
功放的輸出功率一定要大于喇叭的輸出功率,否則不但會影響聲音效果,而且會加速功放的損壞。如選擇的喇叭阻抗比功放的輸出阻抗高時,將影響放大器的輸出功率;而當喇叭的阻抗過低時(如低于4Ω),使用的功率放大器與額定的輸出功率又不相匹配,這種情況下失真將增大。如果喇叭的阻抗符合要求,額定功率又比功放的額定功率稍小,失真就相對小,喇叭的聲音質量就好。
揚聲器的選擇:
①口徑大,紙盆深,轉換效率就高,承受功率也越大;口徑小,紙盆過淺,高頻響應就不好。
②用手輕按同樣口徑的紙盆時,比較費力的揚聲器諧振頻率高,動態范圍較大。
③堅硬、密實紙盆的揚聲器,高頻性能一般較好;粗疏、柔軟紙盆的揚聲器,音質一般較柔和。
④放大器應該有足夠的功率輸出,尤其是晶體管放大器。揚聲器的最大輸出功率應該是其額定功率的3倍以上,并且揚聲器的最大輸入功率應該等于放大器的輸出功率,以保護揚聲器的安全。
⑤阻抗匹配是最基本的要求:對于Class D類功效,由于PWM易引起高頻干擾,因此還要考慮合適的感抗,以起到濾波作用。如圖3所示,線圈的阻抗和感抗組成了一個低通濾波器,理想情況下將阻隔PWM產生的高頻諧波干擾。這里選擇增益為一3 dB時的頻率作為高頻的截止點fc=RL/2πL。當阻抗為8Ω時,令截止頻率為20kHz,則有L=RL/2πfc=8Ω/(2π×20 kHz)=64μH。8 Ω的便攜式揚聲器感抗為20~100μH。如果實際感抗>64μH,將限制帶通特性;如果實際感抗<64μH,截止頻率會>20 Hz,此時又會引入噪聲。所以,選擇揚聲器時感抗要盡量接近64μH;對于AB類功放,則不作嚴格要求。
3.2 音腔設計
好的音腔,同樣的功率下,音量會更大。
①音腔內要平,不要有高低不平的落差感。
②出音孔是音腔面積的15%~20%(手機中常用的)。
③音腔要盡量深,形成“V”型出音,效果較好。
④前后音腔要隔開,以免前后聲音互相干擾。這個原理和喇叭放出的聲音比起喇叭裝在箱子里面的聲音要小很多的原因一致。
⑤前音腔:揚聲器前面音腔的大小主要由揚聲器上面的泡棉高度所決定,一般來說至少要留O.2 mm的泡棉。前音腔主要對高頻聲音有所影響,對于SPL(SoundPressure Level,聲壓級)影響不是太大。
⑥后音腔:要足夠大,如果能夠達到手機喇叭的等效聲容積的2倍的水平最好;更大的后音腔使得揚聲器在低頻可以得到更好的效果。
⑦前音腔和出音孔要設計合理、恰當:前音腔和出聲孔形成一個Helmholtz共鳴器,會在某個頻率點出現諧振峰。若不是特殊設計,可以把該諧振峰調整到高頻端(>10 kHz),相應地就要求前腔淺,出音孔面積大;若有特殊設計要求,譬如為了提高響度,可以把諧振峰調整到3.4~6 kHz,不過帶來的結果將是聲音偏單調,而且對音源的要求會苛刻。
⑧密封性:最基本的是要讓揚聲器的前音腔和后音腔分開,保證良好的密封性(盡可能地保證手機音腔的密封性)。良好的密封性使得揚聲器在低頻段可以得到更好的效果(可以得到更大、更柔美的聲音)。
4 音效測試
由于人耳對音頻發聲的感官不盡相同,且主觀差異較大,曾想寫一篇文章,專門介紹音效的評測及控制方法,需控要什么樣的儀器,實驗方案如何。但由于實驗條件和本人能力有限,加上專業性很強,不敢寫也怕寫不好,只好作罷。以下是Wolfson Microelectronics plc Jason Fan所列(僅供參考),同時期待這類文章早日出現。
①基本儀器:穩壓電源、內置濾波器的毫伏表(可以測量輸出的噪聲和輸出的功率)、失真儀、聲壓儀、信號發生器。
②高級儀器:AP音頻分析儀、音頻全頻掃描儀(用來測試揚聲器功率)。
③音頻系統的評估指標有基本指標和升級指標。
基本指標有:輸出功率、信噪比、頻率響應、失真度、左右通道分離度、左右聲道平衡度。
升級指標(需使用音頻分析儀測量)有:THD+N、動態范圍、FFT。
作音頻測試時,一般會使用一些標準的測試信號,如左右聲道1 kHz O dB;左右聲道30 Hz O dB;左右聲道100Hz 0 dB;左右聲道10 kHz 0 dB;左右聲道16 kHz O dB;左聲道l kHz O dB;右聲道1 kHz 0 dB。
上述儀器都會附帶使用方法和實驗方案。
5 總 結
面對音視頻驅動,首先不要有畏懼心理而覺得其高深莫測不敢去接觸。掌握基礎原理和上述要點后,一般的IIS音頻CODEC均能驅動。在本人驅動WMXXX系列(WM9712/WM8978/WM8960/WM8731)、UDAl314、PCMl770、UCBl440、CS4344等芯片的過程中,均得到了有效驗證。
在應用CS42L52時,發現背景噪聲明顯,但耳機音質很好,說明噪聲來自于功放;一上電不做任何初始化照樣有,進一步說明來自功放,而且不隨音量改變而改變。不能正面降噪,后來采取的規避措施是:沒有DMA傳輸時關掉聲音通道,此問題后來通過新老電路板對比,查出是揚聲器的輸出端所接LC回路中電感參數不當產生了自激。把電感換成O Ω電阻后,噪聲基本消除。
在ARM中,晶振以12 MHz和16.934 4 MHz最為常見(視頻系統中也有27 MHz或28.XXX MHz),系統外圍總線是50 MHz,能不能配成精準的44.1 kHz或48kHz,要視各芯片自身的PLL了,這一點要格外重視。如果頻率相差太多,也會引入噪聲且有語速不正常現象。
-
寄存器
+關注
關注
31文章
5318瀏覽量
120015 -
麥克風
+關注
關注
15文章
632瀏覽量
54767 -
分頻器
+關注
關注
43文章
447瀏覽量
49814
發布評論請先 登錄
相關推薦
評論