盧瑋
(國家廣播電視總局723臺,河北石家莊,050408)
我單位的發(fā)射機房負責(zé)廣播節(jié)目的發(fā)射傳輸,并且要對傳輸效果監(jiān)聽監(jiān)測。目前使用的是20 多年前的老設(shè)備,其原理是從平轉(zhuǎn)取樣模擬信號,將其通過75 歐的射頻電纜傳送到調(diào)幅度測試儀。經(jīng)過一系列轉(zhuǎn)化后送到功放音箱,進行監(jiān)測。該方法有2 個弊端,第一,無法循環(huán)切換通道,我機房有6 部發(fā)射機,每一部發(fā)射機都要監(jiān)聽,這就需要值班人員不停的手動切換,增加了值班的工作量;第二,不同的發(fā)射機送來的音頻信號,其音量大小不一,聲音忽大忽小,給值班員的監(jiān)聽造成困擾。鑒于以上原因,我機房計劃開發(fā)一套數(shù)字式音頻監(jiān)聽系統(tǒng),平衡各個發(fā)射機的音頻輸出信號,改善監(jiān)聽效果。
在本方案中,系統(tǒng)有以下幾部分組成。采樣、差分放大、檢波、八選一、模數(shù)轉(zhuǎn)換、算法補償、數(shù)模轉(zhuǎn)換、音頻監(jiān)聽,如圖1 所示。
圖1 系統(tǒng)基本結(jié)構(gòu)
在采樣時,使用1 個真空電容加在平轉(zhuǎn)的輸出端,通過電容耦合來將大電流大電壓的包絡(luò)信號采集出來,之后送到差分放大電路。
在這個環(huán)節(jié),電路使用了2 個放大器,做成前后兩級,每一級都是用數(shù)個電阻和比較器組成放大電路。具體電路圖如圖2 所示。
圖2 差分放大電路第一級
第一級的作用是消除共模干擾,從平轉(zhuǎn)到差分電路之間的信號線容易受到包括氣壓、溫度、濕度等因素的干擾。它是由1 個比較器S1 和4 個電阻R1,R2,R3,R4 還有2個電容C1,C2 搭配組成了減法器電路,將電纜芯和外層包裹的地線都存在的干擾信號一同減掉,這樣就得到干凈的信號。在圖1 中,比較器S1 接±15V 電源,這兩個電源通過電容C1,C2 接地,目的是消除電源中的交流毛刺。根據(jù)比較器虛短虛斷的原理,在電路中U3=U4,經(jīng)過R1 的電流不會流入比較器的引進2,而是全部流向R3。流過電阻R2 的電流不會進入比較器的引進3,而是全部流向R4,進而流入地。因此可以得到兩個公式:。在選擇電阻的阻值時,取R1=R2=R3=R4,則這兩個公式可變成,又由于U3=U4,得到U5=U2-U1。這樣電壓U5 的值就是兩個輸入端口的差值,這樣就消除了共模干擾。之后,信號被送至第二級,電路圖見圖3。
圖3 差分放大電路第二級
在第二級電路中,R8,R9,R10,R11 組成調(diào)零電路。在電路使用時,首先進行調(diào)零操作。將第一級的兩個輸入端短接,即U5=U2-U1=0,這時候測量第二級的輸出電壓U7是否為0。如果不為零,則調(diào)整R10,使得U7 變成0。
對于放大功能,主要是通過R6,R7,R13 來實現(xiàn)的。根據(jù)虛短虛斷的關(guān)系可得:,令R5+R6=R7,得到U5-U6=U6,U5=2U6。而可得。則,這樣就確定了差分放大電路輸入與輸出之間的關(guān)系。輸出信號被送往檢波電路進行檢波處理。
檢波也稱為解調(diào),是調(diào)制的逆過程,即從已調(diào)波中提取出調(diào)制信號的過程。由于我機房安裝的是調(diào)幅發(fā)射機,一次需要從調(diào)幅度中提取調(diào)制信號,也叫包絡(luò)檢波。這里的調(diào)制信號即收聽的音頻信號,高頻信號是載波信號。
本方案中,我們使用二極管檢波器,其原理如圖4 所示。
圖4 檢波原理
在圖4 中,二極管VD1 是負責(zé)檢波的主要工作,C1 是濾波電容,把信號里面的高頻載波成分出去,電阻R1 是檢波電路的負載電阻,電容C2 是耦合作用,將信號里面的直流成分去除,在輸出端得到一個頻率較低的音頻信號。工作的時候,調(diào)制信號加到該電路的輸入端,即二極管VD1 的正極,VD1 的工作原理和整流二極管基本上一樣,利用信號的幅度變化控制二極管的導(dǎo)通與截止,最后得到音頻信號。
在檢波電路輸出了音頻信號后,送入八選一電路。因為我們部門的發(fā)射機有6 臺,都要進行監(jiān)聽,為了節(jié)省成本,使用8 選1 電路。主要的芯片是CD4051。這是一個單刀8擲開關(guān)。他的基本作用是從前級送來的最多8 路模擬信號,在每一時刻只有一路可以被CD4051 選擇輸出到后級,其余的7 路被阻止。CD4051 芯片的引腳有16 個,其中包括8 路模擬量輸入端口,VDD 電源端口,3 個地址選擇端口,數(shù)字信號接地端口,INH 禁止端口,VEE 負電壓端口,公共輸出端口。
8 路輸入端口接的是需要傳輸?shù)囊纛l信號,3 個地址選擇端口,通過二進制組合來分成8 個不同的地址號,分別與8 路輸入對應(yīng)。這3 個端口與單片機的3 個IO 口相連接,由單片機對地址進行選擇控制,決定哪一路模擬端口被打開使其音頻信號流通。VDD 電源端口外接5 伏直流電壓,為芯片供電。INH 禁止端口決定著芯片能否正常工作,當(dāng)給INH 高電平的時候,芯片不工作,8 個輸入通道的信號都無法向后級輸出,只有INH 是低電平的時候,才可以輸出。因此這個端口可以作為片選信號來使用。在編程的時候,如果使用了數(shù)據(jù)總線的模式,可以將該口作為片選信號來編程。接地端外接電路的地信號。VEE 是一個電平位移口,使得芯片可以傳輸最大峰峰值為VDD+VEE 的交流信號。公共輸出端口將8 路輸入信號里面的某一路輸出到下一級。
本方案里面的模數(shù)轉(zhuǎn)換是使用單片機控制MAX187 芯片來實現(xiàn)。MAX187 是1 個12 位精度的模數(shù)轉(zhuǎn)換芯片,它使用了采樣/保持電路,逐次比較寄存器,使用高速3 線的串行通信接口。只需要3 根通訊線SCLK,CS,DOUT 與單片機相連就能夠?qū)崿F(xiàn)控制和數(shù)字結(jié)果的傳送。
MAX187 有8 個引腳。其中引腳1 外接5V 電源,為芯片供電。引腳2 是模擬信號輸入端,信號的大小范圍是0-VREF。引腳3 是/SHDN,操作模式的選擇,外接高電平時可以正常工作。VREF 是參考電壓,一般使用其內(nèi)部參考電壓4.096V,這個引腳外接一個4.7μF 的電容后接地。引腳5 是地信號。引腳6 是數(shù)據(jù)輸出,將模數(shù)轉(zhuǎn)換的12 位數(shù)字量經(jīng)次引腳送給單片機。引腳7 是片選信號/CS,與單片機相連作為本芯片的是否工作的控制信號。引腳8 是時鐘信號SCLK,與單片機相連,由單片機為芯片提供時鐘信號,最高為5MHz。
MAX187、CD4051 與單片機的接線如圖5 所示。
圖5 MAX187、CD4051 與單片機的接線圖
在圖5 里面,單片機的P10,P11,P12 連接CD4051 的3 個地址端口A1,A1,A2。P13,P14,P15 連接MAX187 的/CS,SCLK,DOUT3 個信號線。具體的編程在下一節(jié)會講解。
當(dāng)數(shù)字式音頻信號進入單片機之后,單片機對數(shù)據(jù)進行計算處理。在本方案里面使用了STC89C52RC 型號的51 單片機。它的引腳VD 外接5V 電源,XTAL1 和XTAL2 與外部晶振、電容組成晶振電路。引腳9 外接1 個按鈕、電解電容、電阻,再接地,組成復(fù)位電路。本方案里面,單片機要實現(xiàn)以下幾個功能:第一,控制CD4051 的8 路模擬量輸入,在每一時刻只有1 路可以輸出。第二,控制MAX187 芯片對模擬信號進行模數(shù)轉(zhuǎn)換,并將轉(zhuǎn)換結(jié)果接收。第三,對數(shù)字信號進行運算。當(dāng)音頻信號的音量較低時,通過算法補償將其增大,反之將其減小,使其保持在一個相對穩(wěn)定的音量上。第四,將補償后平穩(wěn)的音頻信號傳輸給DAC0832 芯片進行數(shù)模轉(zhuǎn)換。具體的代碼講解見后面。
本方案使用DAC0832 芯片進行數(shù)模轉(zhuǎn)換操作。他是1個8 位的數(shù)模轉(zhuǎn)換芯片,在內(nèi)部含有2 個寄存器:輸入寄存器和DAC 寄存器,是前后2 級的關(guān)系。有16 個引腳。DI0~DI7 是數(shù)字量數(shù)據(jù)的輸入端口,單片機把數(shù)據(jù)從這8 個端口送進DAC0832。CS 是片選信號,與單片機相連,由單片機控制其是否工作。ILE 是輸入寄存器的允許通過信號,高電平有效。/CS 是片選信號,/WR1 是第一個寄存器的寫命令信號,他倆是低電平有效。以上3 個信號組成邏輯電路,決定著輸入寄存器的工作狀態(tài)。XREF 是數(shù)據(jù)傳送控制信號,和/WR2 一起組成電路,控制DAC 寄存器的輸入信號能否被輸出。IOUT1 和IOUT2是兩個模擬量輸出端口,輸出電流為I1 和12,他們的和是一個常數(shù)。當(dāng)輸入數(shù)據(jù)的8 位全 部 是1 的 時 候,IOUT1 的輸出電流最大,IOUT2 的輸出電流最??;當(dāng)輸入數(shù)據(jù)的8 位全部是0 的時候,正好相反。RFB 是負反饋電阻端,外接比較器,與IOUT1、IOUT2 組成電壓放大電路。VREF 是基準電壓,電壓范圍是-10V~+10V。VCC 和GND 分別是5V 電源和地端。DAC0832 與單片機的連接圖如圖6 所示。
圖6 DAC0832與單片機的接線圖
/CS,/WR1 與單片機的端口相連,使得輸入寄存器的通斷狀態(tài)由單片機來控制。XREF和/WR2 接地,使DAC 寄存器一直處于導(dǎo)通狀態(tài)。ILE 和VCC 外接5V 電源。此時DAC0832 處于單緩沖工作方式。DI0~DI7 接單片機的P0 口,接收補償后的數(shù)字式音頻信號。IOUT1 后接電壓放大器,將信號進行驅(qū)動放大,再接音箱,這樣就能使其放出的聲音音量保持恒定,不會忽大忽小,同時能夠多部發(fā)射機的音頻信號循環(huán)播放,省去人力操作。
這部分進行程序編程的介紹。檢波和差分放大功能是由硬件電路實現(xiàn)的,在軟件編程時不需要考慮這2 塊。本程序直接從差分放大電路后面的六選一功能開始,具體思路是:對CD4051 芯片進行控制,決定著某一時刻哪路音頻模擬信號可以通過CD4051 芯片;之后對模數(shù)轉(zhuǎn)換芯片MAX187編程,使其對模擬信號進行模數(shù)轉(zhuǎn)換;之后對得到的數(shù)字信號送入單片機,進行軟件算反補償,對音頻偏大的某路信號進行削減,對音頻偏小的信號進行放大,以便使得多路信號有一個相同的音量大??;最后控制DAC0832芯片進行數(shù)模轉(zhuǎn)換,將數(shù)字量轉(zhuǎn)換成模擬量。主要是以上4 大功能,軟件設(shè)計的流程圖見圖7 所示。
圖7 軟件設(shè)計流程圖
下面給出關(guān)鍵代碼。
(1)MAX187 的驅(qū)動程序unit 187ADc(void)//編寫子函數(shù),后面在主函數(shù)中之間調(diào)用{unchar i,linshi; //定義2 個局部變量187AD_CS=1;
187AD_CS=0; //出現(xiàn)下降沿時啟動I2C 總線
187AD_CLK=0; //時鐘信號低電平開始模數(shù)轉(zhuǎn)換while(187AD_OUT==0);
//利用循環(huán)語句進行轉(zhuǎn)換,該過程中187AD_OUT=0 187AD_CLK=1;187AD_CLK=0;
//時鐘信號出現(xiàn)下降沿,傳送數(shù)據(jù)給單片機linshi=linshi^187AD_OUT;
//將MAX187 的轉(zhuǎn)換結(jié)果賦值給linshi
for(i=0;i<11;i++) //MAX187 的位數(shù)是12,因此傳送12 次{187AD_CLK=1;
187AD_CLK=0; // 時鐘信號出現(xiàn)下降沿,啟動傳輸linshi=linshi<<1;
//位操作,使得linshi 的數(shù)據(jù)左移一位
linshi=linshi^187AD_OUT;}
// 將MAX187 的轉(zhuǎn)換結(jié)果賦值給linshi
(2)主函數(shù)程序,對CD4051 編程,算法補償和DAC0832 的輸出程序
define ADR P1 //宏定義將P1 口用宏ADR 代替Define DAC0832 XBYTE[0x6fff];
//定義DAC0832 的端口地址
main( ){
char j,n[3]; //定義符變量j,n[3]
float a,b,m,linshi; //定義4 個浮點型變量a,b,m,linshi a=255;
while(1){for(j=0;j<6;j++)
{ADR=j; //對CD4051 編程,選擇6 路音頻輸入信號
//里面的某一路,進入MAX187
m=Adc(); //開始模數(shù)轉(zhuǎn)換,將結(jié)果傳遞給變量m linshi=(180×m)/4095;
//將電壓信號計算還原成音頻的音量大小信號b=a-linshi; //對音頻信號進行算法補償
DAC0832=b;}}
//對DAC0832 進行編程,將數(shù)字量轉(zhuǎn)成模擬量
該方案可以有效地實現(xiàn)音頻音量的平衡,改善了值班人員的工作環(huán)境,減少其工作量,實現(xiàn)循環(huán)監(jiān)聽,避免錯過異態(tài)音頻的發(fā)現(xiàn)。提高了部門的數(shù)字化、自動化水平,實現(xiàn)了技術(shù)的升級。取得了良好的效果。