2007年4月14日 星期六

設定Audio Path相關注意事項

在設定Audio Path時,需考慮到比較重要的地方如下:

1.音源輸入與輸出訊號的種類:

目前案子常見的音源輸入訊號為single-end或differential,所以針對不同的輸入訊號,設定Audio Path所需注意的地方也不同:

single-end:

如輸入訊號為single-end,則處理方式比較單純,可以依輸出訊號的不同來做相對應的處理,當輸出訊號同樣為single-end時,只要將輸入訊號的Audio Path設定為直接進直接出就好了,ㄧ般常用於耳機的輸出。


但是當輸出訊號為differential時,由於左右聲道輸入同樣為single-end的訊號,所以必須將其中ㄧ邊的訊號作反向的動作,如下圖所示,只要有通過Audio Path中的反向器(如紅色框框),即可做訊號反向的動作。以下圖為例,將左聲道訊號作反向,則左右聲道輸出的訊號為ㄧ正ㄧ反,輸出訊號即為differential。




differential:

如輸入訊號為differential,設定Audio Path時須特別注意,因為Audio Path都會經過Mixer,而Mixer可將多個音源訊號mix在一起,但differential訊號為ㄧ正ㄧ反,當differential訊號進入同ㄧ個Mixer時,會將ㄧ正ㄧ反的訊號mix在一起,導致兩訊號互相抵消,所以在經過Mixer後,differential訊號就會因此而消失不見,如9712 Audio Path中兩個單一Mixer,分別為Speaker Mixer與Phone Mixer,如下圖所示。




此兩Mixer都為單一Mixer,所以在設定Audio Path時必須特別注意,differential訊號是不能進入此兩個Mixer的,唯一可以進入的就是Headphone Mixer,因為此Mixer左右聲道有個別的Mixer,因此不會對differential訊號作抵消。

輸入訊號為differential,但輸出訊號卻為single-end時,則必須透過Inverter將ㄧ邊訊號反向回來,這樣兩邊訊號才會同相位,輸出才能轉換為single-end。

如欲輸出的訊號為differential,則將Audio Path設為直接進直接出即可,輸出即為differential。

2007年4月7日 星期六

Audio Path的設定(錄/放音)

9712基本錄放音的Audio Path設定:

放音Audio Path:

CPU->AC97->DAC->Speaker Mixer->OUT2


CPU將聲音資料透過AC97傳輸介面,將資料傳送給Audio Codec xx9712,進入9712後,會透過內部的數位類比轉換器將聲音訊號由數位轉換成類比訊號,其中在DAC有一組Amplifier(18h)可調整聲音的GAIN值,透過喇叭混音器即可將左聲道與右聲道mix在一起。

9712內建BTL音頻放大器,所謂BTL,即可將原本single-end(mono)的訊號放大為兩倍,其作法為將左右聲道其中ㄧ組訊號反向,輸出的訊號變成ㄧ正ㄧ反,即所謂的differential訊號,最後再將兩訊號作相減的動作,即可將訊號放大為兩倍。




而在9712裡,左聲道(LOUT2)輸出前有即一組反向器可將訊號作反向的動作,在訊號輸出之前,還有一組Amplifier(02h)可以調整輸出聲音的gain值,因此放音路徑總共有兩組Ampilifier可供調整聲音大小。

放音audio path regisiter設定程式碼:

Audio Path可參照spec page14

WriteAC97Codec(register,設定值);

WriteAC97Codec(0x18,0xa808);
->允許聲音訊號只能進入Speaker Mixer,並將DAC Volume設定為0db (0db為預設值)








WriteAC97Codec(0x02,0x40);
->將左聲道訊號相位反向,並將輸出gain值設定為0db




ㄧ般而言,不管聲音訊號進入哪個Mixer,最好將進入其他的Mixer的路徑關掉,以防止訊號互相干擾的問題。

錄音Audio Path:

(MIC1 or MIC2)->ADC->(ALC)->AC97->CPU

9712可以提供兩個Mic輸入點(0eh),ㄧ般而言單獨一個Mic輸入音源都是mono ,但是如果兩個Mic輸入點分成左右聲道輸入音源,則音源為stereo,而ADC主要是把從Mic輸入的類比訊號轉換成給CPU的數位訊號,這條path會經過兩個Ampilifer(1ch/1ah),可調整錄音的gain值,至於ALC的主要功用為抑制輸入過大的音源訊號,而且可以把過大的音源訊號平均掉,可以視情況使用,最後音源訊號會透過AC97傳輸介面傳送給CPU。

錄音audio path regisiter設定程式碼:



WriteAC97Codec(0x0e,0x0);
->選擇Mic1作為音源訊號輸入點




WriteAC97Codec(0x1a,0x4000);
->將錄音的訊號boost 20db的gain值




WriteAC97Codec(0x1c,0x0);
->將ADC的Record gain調為0db


9712的MICBIAS PIN腳可提供ㄧ組電壓供MIC使用,並且可由韌體去控制電壓是否開啟,位址為24h,電壓大小也可作調整,位址為5Ch。