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