|
前言 實用以太網電話機的設計目的,是希望用撥打傳統電話的方法在以太網上進行電話交換,而網絡上不增添任何的網關、服務器、多點控制單元等設備。 這樣,只要把以太網電話機通過RJ45插口接入以太網,就可以撥號呼叫在同一網絡上的另一臺以太網電話機并進行雙向通話。由于電話語音數據不經過網絡專用設備的處理直接發給對方,還可縮短語音的網絡傳輸延遲時間。以太網電話機成本低廉,使用方便,通話免費,適合已建有局域網的中小型企事業單位應用。 目前的許多商品化VoIP系統,其技術建立在ITU(國際電信聯盟)的H.323系列標準或IETF(互聯網工程任務組)制訂的SIP協議基礎上。這些VoIP系統功能強大、互聯性能好,適用于電信服務或大中型企業使用,但面面俱到的標準體系和昂貴的專用設備價格使這些系統在普通的局域網中難以得到普遍應用。而流行的PC機語音聊天或語音會議技術,則必須要有PC機來起到網絡語音終端的作用,顯然不如使用電話機方便和經濟。 以太網電話機的話音傳輸和交換技術直接基于TCP/IP協議的底層協議,使得語音信號能夠以UDP數據包的形式在網絡上暢通傳輸;而上層應 用協議則仿照傳統電話機的使用模式來建立,所以以太網電話機的使用方法完全和普通電話機一樣。從原理上來講,以太網電話機類似于Peer to Peer的PC機語音技術,但以太網電話機采用了嵌入式計算機技術,全部電路(含固化軟件)都可以安裝在普通電話機的機殼內,成本低、性能可靠、實用性強。 硬件方案 為了降低成本和縮小印刷電路板的尺寸,以太網電話機采用基于SOPC(System on Programmable Chip)技術的硬件方案,把32位嵌入式Nios II處理器和數字語音處理電路及有關的控制邏輯電路用一片FPGA芯片來實現。這樣,只要在FPGA片外再配上存儲器、網絡芯片、語音編解碼(CODEC)芯片、語音收發放大器及一些接口電路就可以構成功能齊全的以太網電話機。整機框圖見圖1,其中粗線框里的電路功能全部由Altera公司的Cyclone系列FPGA 芯片EP1C6Q240來實現。 圖1 以太網電話機框圖 處理器及存儲器 處理器采用Altera公司在SOPC Builder軟件中提供的Nios II 軟核處理器。 處理器外接8MByte的Flash RAM作為程序存儲器,16MByte的SDRAM作為數據存儲器。存儲器均留有很大的余量,便于以后產品升級。 選定處理器后,在SOPC Builder 軟件中,可以添加存儲器接口、網絡接口、定時器、I/O接口、UART接口等,分配地址,設置中斷等級。 網絡接口 網絡接口芯片采用SMSC公司的LAN91C111芯片,可自適應工作于10M/100M兩種速率的以太網。采用該芯片的主要原因是Nios II軟件的IDE(集成開發環境)對其提供了較完善的支持,可縮短開發時間。也可選用其它網絡接口芯片以進一步降低成本。 語音編解碼器和語音放大器 語音編解碼器選用NS公司的四路PCM CODEC芯片TP3094,可同時進行四路全雙工話音的G.711編解碼。四路語音是為以后的特殊應用留余地,如果只需一路話音,可選用該公司的TP3057芯片。語音放大器分為發送放大器和接收放大器。發送語音放大器選用Maxim公司的話筒放大器專用芯片MAX4060,能夠適應平衡和差分兩種話筒信號輸入方式,抗噪能力強,功耗低。接收放大器采用普通的LM386芯片,成本低廉,性能可靠。 值得指出的是,以太網電話機與傳統的二線制電話機不同,由于收發信道分開,不存在“回聲”問題,不會由于收發電信號串擾而引起嘯叫(聲信號反饋造成的嘯叫另當別論)。因此,可以使用較大功率的放大器來輸出接收到的信號。本設計使用LM386做放大器,除了能夠用揚聲器輸出比普通免提電話機響亮和保真得多的語音外,振鈴聲也可用同一個揚聲器輸出,省去了振鈴蜂鳴器。 數字語音處理電路 圖1中,FPGA芯片內的資源除構建Nios II軟核處理器外,主要用于數字語音處理,這是本設計的重要特色。由硬件電路并行處理收發語音,可以大幅度地分擔處理器的工作,又避免了在使用普通的嵌入式處理器時再外加一片FPGA。由于強實時性的語音處理工作由硬件承擔,Nios II處理器及相應軟件可專注于系統管理和網絡協議解析,增進了軟件效率。這一點是保證以太網電話機聲音質量的關鍵。 數字語音處理電路主要完成以下工作: * PCM時序控制 * 信號音編碼輸出 * 發送語音緩存 * 發送語音靜音控制 * 接收語音緩存 * 振鈴信號輸出 其它接口電路 除上述電路以外, FPGA芯片內還構建了以下一些必要的接口電路: * 叉簧開關接口 * 撥號鍵盤接口 * LED接口 * RS232接口 * 配置電路和AS接口 * JTAG接口 軟件方案 由于采用了FPGA芯片,大量的信號處理工作已由硬件完成,因此以太網電話機的軟件相對較為簡單。整機軟件由嵌入式操作系統、網絡通信協議和電話應用軟件三部分組成。 嵌入式操作系統 出于成本考慮,以太網電話機選擇使用“開源”嵌入式操作系統μC/OS II。由于語音信號的數字處理過程基本已由FPGA硬件完成,操作系統主要起控制和管理作用,所以使用μC/OS II完全能夠勝任。μC/OS II無內嵌網絡通信協議,在應用時要另行移植TCP/IP網絡通信協議到μC/OS II操作系統中。 LwIP網絡通信協議 以太網電話機必須采納通用的以太網網絡通信協議,即TCP/IP協議。這是以太網電話機能通過網絡實現電話通信的關鍵軟件。經研究,選擇了LwIP來實現TCP/IP通信。LwIP具有很好的兼容性,稍微修改后即可移植到μC/OS II操作系統中并置于μC/OS II的管理和控制之下。 在本項目進行時,LwIP協議棧還沒有被加入到Altera公司的官方軟件中。但目前Altera公司已經把它集成到其IDE里,最常用和最重要的TCP、IP、UDP、ARP、DHCP等協議均已得到支持,使用更為方便。 電話應用軟件 傳統的電話機自身無需任何軟件即可工作,其信令傳輸、信號音和話音的接續、交換依賴于程控交換機端的軟件來檢測和控制。以太網電話機因為不要求網絡端提供額外設備,所以這些功能都要由電話機來實現。從一定意義上來講,是把程控交換機的功能分散到各個電話機來實現。所以,以太網電話機的應用軟件十分類似于小程控交換機的軟件,主要有檢測摘掛機狀態、啟閉各種信號音、檢測撥號信息、向被叫送振鈴信息、和被叫交換語音數據等。 以太網電話機的工作過程 本以太網電話機制作并調試完成后,實現了網絡電話交換的功能,音質優良,感覺不出噪聲和延時,而且沒有回聲。 電話機上電后,FPGA首先自動從EPCS4芯片處取得配置數據,完成對FPGA芯片的邏輯編程,構建成片內Nios II處理器、硬件外設接口電路和數字語音處理等邏輯電路。接著,以太網電話機啟動初始化程序,完成對硬件的初始化檢測、硬件外圍設備工作狀態的設定,自動把放置在Flash RAM中的應用程序加載到SDRAM中。然后,以太網電話機轉入電話應用程序,監測本機的摘掛機狀態和來自網絡的其它電話機呼叫信號。 當檢測到本機摘機后,以太網電話機給本機送撥號音,隨即監測來自撥號鍵盤的信息。收到正確的撥號信息后,電話機查找存儲的“號碼—IP地址”對照表,向被叫用戶發送呼叫信息。如果撥號有誤,電話機發忙音,提示用戶掛機。 被叫收到來自網絡上主叫電話機的呼叫后,如果原處于摘機或振鈴狀態,則向主叫返回“忙”信息,主叫收到后結束呼叫,向本機送忙音。如果被叫處于掛機又不振鈴狀態,則向主叫返回“閑”信息。主叫收到被叫的“閑”信息后,向本機送回鈴音,同時向被叫發“振鈴”信息。被叫收到“振鈴”信息后,電話機振鈴,振鈴音和主叫的回鈴音同步。一旦被叫摘機,立即停止振鈴,發“通話”信息給主叫。主叫收到“通話”信息后停送本機回鈴音,返回“通話”信息給被叫,雙方進入通話狀態。通話過程中,主、被叫發送各自的語音數據包給對方,同時接收對方發來的語音數據包。在此期間,兩電話機隨時檢測本機的摘掛機狀態。任何一方電話機掛機后,停送語音數據包,向對方發“結束”信號。對方收到“結束”信號后,亦停送語音數據包,向本機送忙音,提示用戶掛機。 結語 以太網的應用現已十分普及,有了以太網電話機,只要把電話機往網絡上一接,就能給網絡增加內線電話的功能。而由于以太網接入廣域網的技術十分成熟,只要再開發相應的軟件,通過以太網電話機實現網間電話通信也是可能的。 本文雖然只以最普通的雙方通話說明了以太網電話機的功能,但只要網絡帶寬條件允許,通過軟件開發,其它的許多電話功能以至語音調度功能都可以在以太網電話機上實現,并且依然無需在網絡上增添額外設備。這些功能包括呼叫轉移、熱線呼叫、遇忙回叫、來電顯示、免打擾、多方會議、廣播、分組會議、用戶權限設定、監聽、強占強插等等。總之,以太網電話機可為語音的交換和調度提供一種新的解決思路。 |