在設定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月14日 星期六
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在一起。
放音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
放音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。
訂閱:
文章 (Atom)