基于TNETV1700的高分辨率IP電話系統(tǒng)設(shè)計(jì)
引 言
本文引用地址:http://cafeforensic.com/article/85345.htm模擬電話的語音采集和傳輸一直是低信號(hào)分辨率方式,語音信號(hào)的采樣頻率為8 kHz,數(shù)據(jù)寬度為8位,只能滿足基本的語音通信要求,而不能傳輸更高質(zhì)量的語音,例如音樂信號(hào)、彩鈴服務(wù)等。隨著通信技術(shù)的發(fā)展,對(duì)高分辨率語音信號(hào)的要求成為必然,這樣就要求信號(hào)采樣頻率達(dá)到32 kHz甚至更高,數(shù)據(jù)寬度為16位或者24位。傳統(tǒng)的模擬電話無法滿足這一要求,使得模擬電話必然被數(shù)字電話所取代。
IP電話是以IP網(wǎng)絡(luò)為傳輸載體,實(shí)現(xiàn)計(jì)算機(jī)對(duì)電話、電話對(duì)電話,以及計(jì)算機(jī)對(duì)計(jì)算機(jī)之問進(jìn)行話音通信的技術(shù)。計(jì)算機(jī)對(duì)計(jì)算機(jī)方式是技術(shù)發(fā)展的最終方向。
本文介紹一種以美國(guó)TI公司的雙核數(shù)字信號(hào)處理器(DSP)TNETV1700為核心的高分辨率IP數(shù)字電話系統(tǒng),配置高分辨率16位模擬/數(shù)字轉(zhuǎn)換芯片,實(shí)現(xiàn)對(duì)語音信號(hào)的采集和輸出、調(diào)制和解調(diào)、處理和存儲(chǔ)等功能。數(shù)字語音信號(hào)通過USB接口傳輸?shù)絇C,由上層軟件實(shí)現(xiàn)IP交換數(shù)據(jù)。本文主要介紹基于TNETV1700的IP電話終端的軟硬件設(shè)計(jì)。
1 系統(tǒng)結(jié)構(gòu)
整個(gè)系統(tǒng)由TNETV1700、AD50、LCD、Flash、鍵盤以及電源等組成。其系統(tǒng)結(jié)構(gòu)連接如圖1所示。圖1中,TNETV1700是核心控制單元,負(fù)責(zé)所有與外部設(shè)備的信號(hào)交換;外部設(shè)備中AD50負(fù)責(zé)模擬信號(hào)/數(shù)字信號(hào)的轉(zhuǎn)換,AD50既具有對(duì)模擬信號(hào)進(jìn)行采集轉(zhuǎn)換成數(shù)字信號(hào)的功能,也具有將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)、發(fā)送到揚(yáng)聲器的功能;LCD實(shí)現(xiàn)時(shí)間、電話顯示、設(shè)置信息等人機(jī)交互的所有顯示功能;Flash用于保存TNETV1700的上電引導(dǎo)程序,也可通過更新Flash中的程序?qū)ο到y(tǒng)進(jìn)行升級(jí)。
TNETV1700是美國(guó)TI公司最近推出的一款針對(duì)客戶端電話信號(hào)處理的專用DSP芯片,該芯片內(nèi)部集成一個(gè)TI公司的C55系列DSP TMS320C55和一個(gè)ARM926EJ-S處理器。TMS320C55用于電話的語音信號(hào)處理,包括雙音多頻信號(hào)檢測(cè)和產(chǎn)生、回音相消、數(shù)據(jù)壓縮和解壓,以及數(shù)據(jù)組包和拆包等多種語音信號(hào)處理算法。ARM926EJ-S用于實(shí)現(xiàn)控制功能,包括對(duì)LCD、USB控制器、GPIO、Flash、鍵盤等的控制。使用TNETV1700的USB控制器,直接連接到PC,實(shí)現(xiàn)TNETV1700和PC之間語音數(shù)據(jù)的交互。此外,TNETV1700內(nèi)部還具有通用DSP芯片常有的緩沖串口、HPI接口、定時(shí)器等片內(nèi)外設(shè)。由于TNETV1700采用低功耗的TMS320C55,所以其功耗非常低,正常工作情況下,工作電流不到300 mA,整個(gè)系統(tǒng)可以采用從USB接口饋電方式,無需單獨(dú)供電。
2 系統(tǒng)硬件設(shè)計(jì)
AD50是TI公司生產(chǎn)的一款集成有A/D和D/A轉(zhuǎn)換器的芯片,TNETV1700與AD50連接后,可以只使用一個(gè)緩沖串口同時(shí)實(shí)現(xiàn)數(shù)據(jù)的采集和輸出,從而節(jié)省了TNETV1700的硬件開銷。TNETV1700與AD50的硬件連接如圖2所示。
AD50的時(shí)鐘信號(hào)由TNETV1700的定時(shí)器0的輸出提供,時(shí)鐘頻率可以通過修改定時(shí)器0的設(shè)置而改變。AD50的FC引腳連接到TNETV1700的GPIO0(通用I/O引腳),用于控制AD50的串行通信;DIN(數(shù)據(jù)輸入引腳)和DOUT(數(shù)據(jù)輸出引腳)分別接TNETV1700緩沖串口0的DX0和DR0引腳;SCLK(移位時(shí)鐘輸出引腳)連接TNETV1700的CLKR0(緩沖串口0的接收時(shí)鐘引腳);幀同步信號(hào)FS連接TNETV1700緩沖串口0的FRX0引腳。
為了達(dá)到更好的信號(hào)處理效果,AD50的模擬信號(hào)輸入一般采用差分輸入方式,圖2中使用變壓器將單端信號(hào)轉(zhuǎn)換成差分信號(hào)。信號(hào)一正一負(fù)同時(shí)進(jìn)入采集系統(tǒng),如果此時(shí)有隨機(jī)噪聲出現(xiàn),通過正負(fù)信號(hào)的加減,可以有效消除部分噪聲。AD50的D/A輸出為差分信號(hào),可以直接驅(qū)動(dòng)600 Ω的負(fù)載,同樣也可消除輸出電路上的隨機(jī)噪聲。
LCD控制器負(fù)責(zé)與LCD及其外設(shè)的連接。LCD控制器連接2個(gè)外設(shè):一個(gè)是到ARM926EJS的DMA請(qǐng)求,另一個(gè)是ARM926EJS到LCD的中斷請(qǐng)求。這樣,ARM926EJS作為主設(shè)備,可以在CPU不參與的情況下實(shí)現(xiàn)對(duì)LCD的顯示控制。LCD作為被動(dòng)設(shè)備,只有少量需要返回的狀態(tài),發(fā)送中斷到ARM926EJS,由ARM926EIS安排時(shí)間讀取LCD狀態(tài)。這樣,使得整個(gè)LCD的顯示和控制占用較少的CPU資源。如果系統(tǒng)使用簡(jiǎn)單的點(diǎn)陣顯示,就無需LCD控制器參與,只需要簡(jiǎn)單的幾根GPIO掃描就可以。TNKTV1700與LCD的硬件連接如圖3所示。圖中,使用穩(wěn)壓器MAX633將3.3 V電壓轉(zhuǎn)換成LCD所需要的15 V電源,使用穩(wěn)壓器TPS79333將LCD和TNETV1700隔離開,以增強(qiáng)系統(tǒng)的可靠性,避免LCD的高壓損壞芯片;TNETV1700的LCD控制器直接連接到驅(qū)動(dòng)芯片LZ9FC22,通過啟動(dòng)芯片控制LCD。系統(tǒng)選擇LCD型號(hào)為L(zhǎng)Q035Q7D。
系統(tǒng)中的USB接口和鍵盤接口均為標(biāo)準(zhǔn)接口,硬件上連接簡(jiǎn)單方便。USB接口使用4線接口,分別為差分?jǐn)?shù)據(jù)正、差分?jǐn)?shù)據(jù)負(fù)、電源和地引腳。USB接口的電源也是整個(gè)系統(tǒng)的電源入口。鍵盤接口使用3×4的掃描鍵盤,可以直接連接標(biāo)準(zhǔn)電話機(jī)的12個(gè)按鍵(為0~9、*號(hào)和#號(hào))。如果需要增加按鍵,可以使用TNETV1700的GPIO口完成。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)的軟件總框圖如圖4所示。圖中,初始化模塊包括TNETV1700系統(tǒng)的初始化、鍵盤監(jiān)控的初始化、LCD顯示的初始化、AD50的初始化、USB控制器的初始化。在初始化過程中設(shè)置定時(shí)時(shí)間、采樣點(diǎn)數(shù)、計(jì)算變量的初始值、各種參數(shù)等。
監(jiān)控模塊隨時(shí)判斷各種定時(shí)是否到達(dá),其中包括DSP核數(shù)據(jù)定時(shí)、鍵盤掃描定時(shí)、LCD顯示定時(shí)以及USB接口通信請(qǐng)求等。監(jiān)控模塊程序完成以上查詢工作,并調(diào)用各個(gè)相應(yīng)的處理程序。
中斷服務(wù)模塊包括4個(gè)中斷,即AD50中斷服務(wù)、定時(shí)器中斷服務(wù)、USB接口發(fā)送和接收中斷服務(wù)。中斷服務(wù)模塊中的AD50轉(zhuǎn)換和計(jì)算模塊完成對(duì)信號(hào)數(shù)據(jù)的采樣、處理和計(jì)算。在整個(gè)程序運(yùn)行中間,AD50轉(zhuǎn)換的中斷請(qǐng)求享有最高優(yōu)先權(quán)。
DSP核主要處理語音信號(hào)處理算法,DSP端的軟件結(jié)構(gòu)如圖5所示。TNETV1700控制AD350采樣到語音信號(hào)后,首先經(jīng)過“G.168回音相消算法”消除回音,然后調(diào)用VAD(Voice Activity Detection,語音激活檢測(cè))技術(shù)判斷是否有語音信號(hào),從而判斷出是否有語音輸入,避免將噪聲傳輸出去。在通話期間進(jìn)行VAD算法,可以去除兩個(gè)語音之間的數(shù)據(jù),大大減少數(shù)據(jù)傳輸量。信號(hào)可以經(jīng)過壓縮算法后進(jìn)行RTP組包,也可以直接經(jīng)過UMTD(Universal Multi-frequency Tone Detector,通用多頻音檢測(cè))算法進(jìn)行RTP實(shí)時(shí)組包,組包之后將數(shù)據(jù)包傳送ARM核,DSP核就完成了整個(gè)數(shù)據(jù)上傳算法。語音數(shù)據(jù)下傳和上傳相反,進(jìn)行RTD拆包、UMTG(Universal Multi-frequency Tone Genera-tor,通用多頻音產(chǎn)生)、數(shù)據(jù)解壓等算法。數(shù)據(jù)壓縮算法只有G.726算法集成在TNETV1700片內(nèi),其他算法(如G.723或者G.729)則需要用戶編寫程序完成,為特定需求的應(yīng)用場(chǎng)合提供軟件的可適應(yīng)性。
ARM核主要實(shí)現(xiàn)LCD、鍵盤和USB的控制功能。ARM端的軟件結(jié)構(gòu)如圖6所示。ARM端軟件的功能主要是控制外設(shè)和數(shù)據(jù)收發(fā)。為了不丟失控制信號(hào)和收發(fā)的數(shù)據(jù),整個(gè)軟件采用時(shí)間片輪詢策略:設(shè)置各個(gè)模塊的定時(shí)器,主程序輪詢各個(gè)模塊的定時(shí)是否到達(dá),如果到達(dá)則進(jìn)行該模塊的相應(yīng)工作;完成后,繼續(xù)輪詢下一個(gè)模塊的定時(shí)。整個(gè)程序涉及的模塊有4個(gè):與DSP端進(jìn)行數(shù)據(jù)收發(fā)的模塊,實(shí)時(shí)監(jiān)控鍵盤模塊,與PC端的USB數(shù)據(jù)收發(fā)模塊以及LCD顯示模塊。
結(jié) 語
本文詳細(xì)介紹了基于TNETV1700的IP數(shù)字電話系統(tǒng)構(gòu)成、硬件連接以及軟件程序開發(fā)。系統(tǒng)使用TNETV1700的DSP核進(jìn)行語音信號(hào)的算法處理,使用TNETV1700的ARM核對(duì)液晶、鍵盤和USB接口進(jìn)行控制,實(shí)現(xiàn)了單芯片系統(tǒng)設(shè)計(jì)。整個(gè)系統(tǒng)設(shè)計(jì)簡(jiǎn)單、可靠、實(shí)用,是一種比較好的IP數(shù)字電話解決方案。
評(píng)論