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