吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于操作系統和VoIP網關實現網絡語音處理平臺的軟硬件設計

牽手一起夢 ? 來源:電子技術應用 ? 作者:李源 , 黎福海 ? 2020-10-04 17:08 ? 次閱讀

采用IP網絡進行語音通信是一種廉價且方便的通信方式。其目前的技術已經為用戶間的通信提供清晰、穩定、低延時的話音質量,同時支持語音、數據、圖像的傳輸和其他多媒體業務。特別對于許多大中型企業來說,由于在各省或不同國家設有機構,每月都會產生巨額的國際、國內長話通信費用,同時由于信息保密的要求,企業往往需要自己構建類似VPN這樣的IP通話網絡以降低通信成本。這樣機構內部會先建立一個自己的電話網絡,同時以VPN或其他方式通過IP網連接出去。整個系統可以有效降低企業的運營成本,提高工作的效率。本文所述的網絡語音處理平臺就是建立在此種方案上,主要通過VoIP網關+模擬話機的方式來實現。其中VoIP網關的主要功能是進行信令處理、以ITU-T提出的H.323協議或IETF提出的SIP協議通信、語音編解碼處理等。

1 結構體系介紹

網絡語音處理平臺的基本工作原理是先將模擬語音信號轉為數字信號,再對輸入的語音數據編碼進行壓縮處理,然后在H.323或SIP協議框架的基礎上,把這些語音數據分組打包,經過IP網絡把數據包送至接收端,接收端再把這些語音數據包串起來,經過解壓處理后,恢復成原來的語音信號,從而達到由互聯網傳送語音的目的。本文將分硬件和軟件兩部分來講述網絡語音平臺的構建。

1.1 硬件部分

整個硬件部分如圖1所示。

基于操作系統和VoIP網關實現網絡語音處理平臺的軟硬件設計

整個系統包括語音處理部分和網絡數據處理兩部分,其中語音處理部分又分為FXO和FXS接口電路。FXO接口用于連接PSTN,可模擬電話功能,提供環路關閉功能并檢測來話振鈴。FXS用于連接POT普通電話機,模擬電話局端交換的功能。

在VoIP網關中,FXS電路是在分組網絡上建立去話呼叫與接收來話呼叫的基本接口。在用戶端(CPE)應用中,FXS電路存在于網關中,可提供撥號音、電池電流與振鈴電壓的功能,并檢測來自電話的環路關閉。由于該交換功能處于CPE級,因此不必與PSTN建立直接連接。FXS電路包括CODEC與SLIC(用戶線路接口電路)兩部分。CODEC由ADCDAC構成。ADC將來自模擬電話的模擬信號轉換為可通過VoIP網絡傳輸的數字信號。DAC將數字信號轉換為模擬電平,以驅動模擬電話。為了實現4kHz的音頻帶寬,ADC的采樣速率通常約為8kHz。SLIC部分則模擬PSTN電壓電平,通過用戶線向共電式話機直流饋電,檢測電話掛機還是摘機,并生成高達120V的振鈴電壓,同時提供過壓保護(Overvoltage Protection)功能,以防止用戶線上的電壓沖擊或過壓而損壞設備。

SLIC芯片采用LEGERITY的LE7947C,在控制器的控制下能模仿電話局局端功能,能對饋電電流進行控制,并提供掛機傳輸功能,如在電話線路處在On-Hook狀態(被呼叫方沒摘機時)提供振鈴信號。監視用戶線通斷狀態,以檢測話機的摘機、掛機、撥號脈沖等用戶線信號,轉送給控制設備,以表示用戶的忙閑狀態和接續要求。SLIC芯片控制的方式如表1所示。這些控制信號接到了IXP421的GPIO上,這樣由IXP421發出控制信號??刂平Y果通過引腳的電平值來表示。

其中開路是指當線路出現故障時,模塊在內部將TIP和RING線斷開。激活是指模塊收到摘機信號后(無論作為主叫還是振鈴時),首先使模塊重新激活,然后開始通話。通話結束后又設為待機狀態。如需掛機傳輸功能,需在振鈴1秒(狀態值為1)后,將狀態值設為3(即011),持續時間為4秒,在此期間模塊可向話機傳送呼叫方ID等信號。待機是指模塊等待主叫摘機或作為被叫振鈴等事件發生。

CODEC芯片采用LEGERITY的T8503。它是A-律/μ-律的PCM編碼器,含有A/D和D/A單元,實現聲音的數字化和重組,并能實現增益控制。CODEC芯片具有兩個通道,每個通道均含有一個針對語音編碼或解碼的濾波器。兩個通道的PCM數據通過PCM同步接口進行接收和發送,并由一對FSXn和FSRn控制兩個通道的幀同步,確保在每個通話時隙進行數據傳輸。

FXO電路部分包括CODEC與數據存取裝置(DAA)。將模擬語音轉換為數字信號,隨后再轉換回來,同時負責數據的傳輸。DAA模擬(POTS)電話功能,其重要作用是去除高電壓直流偏置,將PSTN環路關閉,從而僅傳送來自PSTN的模擬交流信號。并具有極性保護電路,保證電話機與外線連接時能取得極性正確的直流工作電壓。

FXO部分電路主要采用SILICON LABS公司的SI3016和SI3021。SI3016為一個DAA電路,能為線路上的信號提供光電隔離和2/4線轉換功能,以滿足編解碼與數字交換對四線傳輸的要求。并且能夠實現對線路上的振鈴信號、呼叫方ID和極性反轉檢測等功能。SI3021一方面提供直接連接DSP通信接口,另一方面也提供控制接口。電路可工作于On-Hook(電話線可供使用)和Off-Hook(電話線忙碌)這兩種狀態下,通過設定SI3021的

引腳電平的高低來控制:

為高表示處于On-Hook狀態,可以接收或發起一個呼叫;

為低表示處于Off-Hook狀態,電話線忙碌。當線路上有振鈴信號時通過

引腳表示。并可以通過配置M1和M0腳來選定串行數據接口的工作模式。整個平臺還配有CPLD電路,是為了控制各個電話接口,并協調各端口間的通信。

處理器IXP421是INTEL公司IXP42x系列的網絡處理器,它在VoIP應用方面具有自己的特點。如提供了兩個高速同步串口HSS, 同時含有高速網絡處理引擎NPE,在Xscale的配合下它可以實現DSP等高級數據處理的應用。并配有基于Xscale的DSP軟件庫,支持2~4路語音信號的處理。在網絡處理方面,IXP421集成有10~100兆MAC,通過MII/RMII接口連接通用PHY芯片,并連至IP網絡。

1.2 軟件部分

軟件可從功能上或驅動模塊上劃分,下面將從以上兩個方面進行分析。

1.2.1 軟件功能模塊

從功能上可劃分如圖2所示的模塊結構。

其中DSR模塊是IXP421進行底層語音數據處理的模塊,它主要采用由INTEL提供的DSR(DSP software release)軟件庫。一方面,它與上層應用程序進行通信,傳遞數據或響應來自上層的控制消息。另一方面,它與底層接口進行通信與控制。

編碼部分負責進行編碼和對從HSS到IP接口的數據分組打包,提供對G.711等音頻標準的支持,并提供有增益控制功能的自動等級控制ALC單元和區分背景噪聲的VAD功能。并將多個語音幀合并成一個IP分組包。對語音包以特定的幀長進行壓縮編碼,壓縮后的語音包送入網絡處理單元。網絡處理單元為語音添加包頭、時標和其他信息后,把數據放在可變長的數據報或分組中,然后給每個數據報附帶尋址和控制信息,并通過網絡發送到目的地。

相對于解碼部分負責把從IP網絡接收的語音分組包進行打包并轉成語音數據流發送至HSS接口。類似于編碼部分,解碼部分也包含G.711和G.729數據處理和ALC處理單元。不同的是其包含產生適當背景噪聲的CNG單元、消除由于網絡丟包而造成語音信息不完整問題的PLC單元和控制從IP網絡到HSS接口數據傳輸節奏的JitterBuffer單元。

電話信號音監測模塊負責監控300~3500Hz的電話信號音,如DTMF信號等。主要是采用快速傅立葉算法FFT來進行分析和判斷。電話信號音產生模塊則負責產生相應的電話信號音。而網絡節點是連接HSS端口與編解碼等部分的程序模塊,它把需要從HSS端口發送的數據放入HSS發送緩沖區,或把需要從HSS端口接收的數據放入HSS接收緩沖區內。

1.2.2 狀態機的結構

為了模擬通常狀態下的電話機工作流程,需要相應地建立幾種不同的狀態,并實現不同狀態的轉換。一般通話雙方有空閑、撥號、發送信令、回應、建立連接和斷開連接等狀態,故可以定義如下幾個狀態值:call_idel、call_dial、call_cancel、call_invite、call_ack、call_connect、call_bye等。例如用戶摘機事件發生后會有中斷產生,若該路終端目前的狀態為call_ack時,表明該終端用戶為被動接收者,且已接收到invite信令并等待用戶摘機。故此時狀態轉為call_connect并進行相關處理。而當該路終端目前的狀態不為call_ack時,表明該終端用戶為主動呼叫者,準備撥號撥打電話。此時狀態轉為call_dial,話筒中產生等待音,DSR模塊開始等待用戶撥號。當用戶結束撥號后狀態轉為call_invite并進行相關處理。大致流程如圖3所示。

為了保證狀態機能在不同的狀態之間轉換和方便控制管理各路話音通話的信息。還需要建立一些全局數據結構:

用于保存當前網關中各路話音的配置參數,num表示該路通話的本地號碼和對端號碼,addr表示該路通話對應在DSR內所使用的本地和遠端網絡地址,status記錄本地終端在該通話中處于狀態機中的狀態。設備在加電啟動后,需要按步驟進行一系列的初始化工作。包括一些記錄狀態信息的全局變量,初始化SLIC接口、DSR模塊、網絡接口、信令處理模塊并開啟所需的監控線程,等待控制狀態的變化。

1.2.3 軟件驅動模塊

因為網絡語音底層平臺使用嵌入式Linux做為其操作系統,故需要劃分如圖4所示的幾個模塊并寫出相應的驅動。

以內核態運行的程序主要包括SLIC控制模塊、DSR控制模塊及接口和DSR數據模塊這三部分,它們基本完成了底層所需的功能要求。用戶態的程序都是運行在其上,對其進行管理控制,以實現上層的應用。

(1)SLIC控制模塊

由于整個平臺包含有FXS和FXO接口,故SLIC控制模塊也可以相應地分為兩部分。

對于FXS接口程序部分,其主要是模擬PSTN局端功能,對提供撥號音、電池電流與振鈴電壓和檢測來自電話的環路關閉進行相應地控制。當有控制信息需要輸出時,驅動程序通過向SLIC芯片的C1、C2和C3管腳寫入相應的電平,實現對SLIC的控制(具體數值可參看表1)??梢愿鶕LIC所處的狀態進行劃分,設置如下四種狀態:fxs_ring,fxs_take,fxs_onhook,fxs_offhook。當其處在fxs_ring狀態下就可以為FXS接口提供撥號音、振鈴等信號;當其處在fxs_take狀態下表明用戶剛剛摘機;當其處在fxs_offhook狀態下表明該終端用戶為主動呼叫者,需要處理摘機以后的操作;當其處在fxs_onhook狀態下表明用戶掛機。

相應的,當SLIC有中斷輸入時,中斷處理程序會根據當前的狀態來判斷。如果確定是用戶進行了摘機或掛機操作后,查詢最后一次硬中斷后該路SLIC的

電平,為0則處于摘機狀態,否則處于掛機狀態。這里中斷的處理較為重要。其內容包括:中斷源是由哪個FXS端口發出的,并根據所處的狀態來開啟相應狀態下的定時器,以保證狀態變化間的時間間隔。

對于FXO接口程序部分,其主要是模擬電話機的功能,所以功能相對要簡單些。在程序中主要設定有fxo_ring、fxo_onhook和fxo_offhook這三個狀態。當其處在fxo_offhook狀態下表明用戶摘機。當其處在fxo_onhook狀態下驅動程序就把DAA芯片的

引腳拉高,表明用戶掛機。相應的,當有控制信息需要輸入時,其檢測DAA芯片的

引腳來進行判斷,這里同樣要啟動相應的定時器,來判斷回路上是否有振鈴電平或何時回路上振鈴信號結束等信息。當程序判斷處在fxo_ring狀態下,則表明線路上有振鈴信號并做相關處理。

(2)DSR控制模塊及接口

DSR控制模塊及接口主要實現用戶對串行語音數據通信接口HSS以及底層引擎NPE的控制。既與來自上層應用程序進行信息交互,又為上層應用程序和SLIC硬件之間提供控制接口。與一般的設備驅動一樣,主要包括DSR_open()、DSR_close()、DSR_read()、DSR_write()和DSR_ioctl()這些函數。其中DSR_read()和DSR_write()主要負責從DSR讀取消息和向DSR寫入消息。DSR_ioctl()主要負責控制DSR的相關配置參數讀入與讀出和傳遞SLIC控制信息給底層的SLIC控制模塊。參數包括根據當前所處狀態判斷后所得出的C1、C2和C3管腳寫入相應的電平值、查詢當前SLIC的工作狀態信息、SLIC振鈴信號的產生和停止等。DSR的相關配置參數包括DSR中DSP通道數目、通道編碼器的類型、編解碼器輸出語音數據幀的大小等。

(3)DSR數據模塊

DSR數據模塊主要實現話音數據在內核與用戶態之間的交互。包括從內核中讀取數據,向內核中發送數據。為了有效把握數據傳輸節奏,需要建立一種內部緩存機制。包括從DSR讀取到數據緩存后發送給用戶態的應用程序和用戶態的應用程序向DSR發送數據的緩存。緩存內的數據查詢也是每隔一段時間后再進行的。但注意緩存不應開的過大,以免通話延時的加大。為了消除由于網絡丟包而造成語音信息不完整的問題,DSR數據模塊也建立了相應的機制來控制。

用戶的應用程序主要運行在用戶態,針對DSR模塊和網絡上收發的語音數據和控制信令進行處理操作。以編程實現直接內向呼叫、呼叫轉移網絡、呼叫等待和三方呼叫等功能。對于底層通話平臺來說,主要關心的是處理電話和IP網絡間的銜接問題,這需要做好如下幾個接口:DSR控制接口、DSR數據接口和網絡接口,以實現語音數據收發、通話信令收發和DSR控制消息收發的管理。

網絡接口模塊用來接受網絡上傳遞進來的數據,做出相關處理后將壓縮的語音數據通過DSR數據接口傳遞給內核處理,同時也負責將從DSR數據接口傳遞來的壓縮后的語音數據發送到網絡上。如果從網絡上傳遞進來的數據是通話信令,則在做出相關處理后將具體的控制信息通過DSR控制接口發送給內核,或者根據底層操作的內容把相應的信令信息通過網絡接口發送到網絡上。例如,對DSR的相關控制消息包括打開與關閉DSR編解碼功能、打開與關閉在向電話輸出的電話信令音和開啟與關閉檢測用戶鍵盤撥號等功能。

2 測試

為了保證當前系統能正確工作,需要對其底層功能進行測試。因為編碼壓縮的語音數據由實時傳送協議RTP負責傳遞,故主要采用用戶數據UDP包的形式接收與發送。出于這個角度考慮,可以實現將電話手柄的MIC采集的聲音返回至同一電話手柄的聽筒內。首先編寫一個小程序來實現將話筒收集的語音數據發送至網絡上,同時接受來自網絡的數據并還原成模擬話音。假設網絡上有一臺IP地址為192.168.0.1的主機。其運行一個UDP數據包環回程序負責將網上接收到的UDP數據包轉發回源發送端。開始測試前,先設定一些必要的控制信息,如對方IP地址和語音編解碼方式等。將網線和話筒線連至網口和RJ11接口,撥通IP地址為192.168.0.1主機的電話,看看電話手柄的聽筒內將能夠聽到話筒MIC所收集的話音。如果話音正確,則表明底層的功能已實現。

基于IXP421的網絡語音平臺方案實現了底層的相關功能,而上層的應用較為靈活,且有很強的擴展性,例如實現VPN功能及多媒體業務,還需要開發相應的軟件,本文并未涉及到。隨著網絡語音相關技術的逐步走向成熟,相信會有越來越多的人因之受益。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    456

    文章

    51188

    瀏覽量

    427286
  • 控制器
    +關注

    關注

    112

    文章

    16447

    瀏覽量

    179462
  • 嵌入式
    +關注

    關注

    5092

    文章

    19178

    瀏覽量

    307696
收藏 人收藏

    評論

    相關推薦

    基于嵌入式網絡的無線傳感器網絡平臺軟硬件實現

    基于嵌入式網絡的無線傳感器網絡平臺軟硬件實現   隨著技術的發展,基于分布式、無線傳感器
    發表于 09-15 08:15

    支持過程級動態軟硬件劃分的RSoC設計與實現

    :JSJK.0.2010-04-037【正文快照】:1引言可重構片上系統上包含了執行軟件程序的微處理器核和實現硬件邏輯的可重構器件,因此設計人員需要通過
    發表于 05-28 13:40

    嵌入式操作系統的通用硬件抽象層設計

    層API能夠在下層硬件平臺實現,那么操作系統和應用程序的代碼就可以移植。圖1 引入HAL后的嵌入式系統結構這樣,原先嵌入式
    發表于 12-07 10:30

    電子電氣架構、車載操作系統、基礎軟件平臺等之間有什么關系?

    電子電氣架構、車載操作系統、基礎軟件平臺等之間有什么關系?智能汽車軟件的范圍、軟硬件升級、SOA的內涵詳細介紹SOA的實現細節是什么?
    發表于 09-26 08:25

    如何對SOA進行軟硬件部署

    管理和SOA硬件I/O控制管理,可兼容自動駕駛系統的多個傳感器和外部設備,支持多異構芯片和硬件升級。操作系統內核/服務中間件:作為文件調度和驅動的核心,
    發表于 06-10 17:23

    基于VxWorks的VoIP網關的設計與實現

    采用S3C4510B 為主控制處理器,VoicePump 公司的vp101 數字信號處理芯片為語音和傳真業務處理器;以嵌入式實時操作系統Vx
    發表于 07-30 11:28 ?20次下載

    單片機測控系統軟硬件平臺技術

    本文探討了一種用于工業測控系統的單片機軟硬件綜合設計方法——軟硬件平臺技術,重點闡述了其基本原理、設計思想、實現方法,并給出了一個單片機測控
    發表于 08-13 09:38 ?12次下載

    一個基于Linux操作系統的嵌入式網關實現

    本文介紹了一種基于Linux 操作系統的嵌入式網關實現方案。具體講述了基于ARM9的軟硬件平臺的構建。同時詳細闡述了Linux 下的串口編程
    發表于 09-25 16:11 ?14次下載

    基于嵌入式處理器的VoIP雙模語音網關設計

    討論了一種基于IP2022解決方案的雙模語音網關設計,可以實現同時連接VoIP網絡和PSTN網絡
    發表于 11-10 16:21 ?44次下載

    SOPC的嵌入式軟硬件協同設計平臺實現

    對基于FPGA的SOPC軟硬件協同設計方法進行了研究,在此基礎上,詳細設計了系統硬件平臺,并對硬件平臺
    發表于 12-22 11:01 ?1543次閱讀
    SOPC的嵌入式<b class='flag-5'>軟硬件</b>協同設計<b class='flag-5'>平臺</b><b class='flag-5'>實現</b>

    基于嵌入式網絡的無線傳感器網絡平臺軟硬件設計

    基于嵌入式網絡的無線傳感器網絡平臺軟硬件設計
    發表于 01-12 22:17 ?39次下載

    基于TIDSP的紅外圖像采集預處理系統軟硬件實現

    基于TIDSP的紅外圖像采集預處理系統軟硬件實現
    發表于 10-21 09:13 ?9次下載
    基于TIDSP的紅外圖像采集預<b class='flag-5'>處理系統</b>的<b class='flag-5'>軟硬件</b><b class='flag-5'>實現</b>

    一種信令網關系統的設計與實現方法

    為了實現提高信令網關處理能力的需求,提出了一種基于MPC8306的信令網關系統的設計方案,并完成系統
    發表于 11-16 11:36 ?10次下載
    一種信令<b class='flag-5'>網關系統</b>的設計與<b class='flag-5'>實現</b>方法

    基于FPGA芯片的軟硬件平臺的使用

    基于FPGA芯片的軟硬件平臺的使用
    發表于 07-01 09:35 ?20次下載

    為什么要從“軟硬件協同”走向“軟硬件融合”?

    軟件和硬件需要定義好交互的“接口”,通過接口實現軟硬件的“解耦”。例如,對CPU來說,軟硬件的接口是指令集架構ISA:ISA之下的CPU處理
    的頭像 發表于 12-07 14:23 ?2834次閱讀
    在线娱乐城注册送彩金| 半圆百家乐桌布| 百家乐官网真人游戏网上投注| 百家乐官网博彩博彩网| 百家乐官网胜率被控制| 百家乐官网高手和勒威| 百家乐官网庄闲和概率| 永利高百家乐官网怎样开户| 在线百家乐官网平台| 星港城百家乐官网娱乐城| 百家乐官网桌面| 鼎尚百家乐官网的玩法技巧和规则 | 澳门赌场着装| 真博百家乐的玩法技巧和规则| 全讯网找a3322.com| 葡京娱乐场官网| 遂川县| 百家乐官网赌博软件下载| 缅甸百家乐官网赌城| 澳门百家乐海星王| 真人百家乐赌场娱乐网规则| 大发888下载 df888gfxzylc8| 棋牌新教室| 定西市| 易胜博百家乐官网娱乐城| 上海百家乐官网的玩法技巧和规则 | 路虎百家乐官网的玩法技巧和规则| 百家乐官网网上赌场| 百家乐赢谷输缩| 大发888官网 df888ylcxz46| e利博娱乐城开户| 额尔古纳市| 澳门百家乐官网的公式| 百家乐虚拟视频| 威尼斯人娱乐场的微博 | 联合百家乐官网的玩法技巧和规则| 太阳百家乐3d博彩通| 百家乐电子作弊器| 威尼斯人娱乐城真人赌博| 沂源县| 百家乐官网真人现场|