2014/06/12 Tang
1 問題的提出
IP電話是指利用IP協議通過分組交換網進行語音通信的通信方式。目前IP電話作為因特網的一個應用得到了迅速發展,特別是語音IP技術與其他互聯網應用技術的結合,可方便地實現許多智能業務,如基于web的呼叫中心。這些先進的業務應用正刺激著傳統的電話通信向真正的基于IP網絡的電話通信轉移。
日前IP電話的接入方式是使用普通電話撥入1TSP(Intemet Telephony Service Provide)提供的IP電話網關,然后經過一系列認證.再進行呼叫、接通和通話。造成這種情況的原因是因為13前的網絡環境尚不完善。如帶寬不足、網絡接口尚不能直達用戶等。但隨著因特網的不斷擴展和新技術的出現。這種IP電話的接人方式正被逐漸淘汰,用戶將直接通過IP電話機撥打電話稱為一種趨勢。本系統的設計目的便是設計一款實用的IP網絡電話機。
2 總體方案
IP網絡電話機主要完成通過Intemet實現語音的傳輸,需要實現對語音信號的采集、語音信號的壓縮,這些任務需要大量的數據運算,為滿足語音通話的質量以及實時性,需要DSP進行數據的壓縮處理。系統鍵盤、顯示器的擴展,SIP、TCP/IP等協議的實現主要由ARM子系統來完成,各種邏輯關系通過ALTERA公司的CPLD EPM7032實現,其結構框圖如圖1所示。
3 DSP子系統的設計
DSP子系統主要完成語音信號的采集和壓縮工作,TMS320C5416是1rI公司推出的16位定點DSP單指令周期為6.25,每秒執行的指令數為160 x1O ,指令系統豐富并具有很多多功能指令,使用了6級指令流水線結構,這些都很適合實現G.729數據壓縮算法。另外其還具有3個MSBSP通道,可以很方便地實現CODEC語音芯片的擴展。
3.1 語音信號的采集
本系統選用MC10,其采樣速率可達到22 ks/s,采用片外FIR濾波器時,其采樣速率最高可達88 ks/s,本系統中MC10采樣速率為8 kHz,DSP在接受到8o個字的語音信號后將進行壓縮處理,然后將處理數據送往ARM。TMS320C5416與AIC10通過MCBSP0連接。MC10工作在主模式下,這樣可以通過選擇合適構晶振,使采樣速率為整數,便于以后數據的壓縮,本系統晶振為8.192 MHz。設置M/S引腳為高電平,將AIC10設置為主模式,采樣頻率信號由MC10提供。與DSP的通信數據采用“15+1”BIT模式,在DSP上電后,首先請求次通信(Do位為0)來完成對MC10內部寄存器的初始化。16位數據的格式為:D15~D13:器件地址;D12:讀、寫;D11~D9:寄存器地址;D8:無效位;D7~DO:數據位。
3.2 G.729A壓縮算法的實現
G.729A編碼器是以碼本激勵線性預測模型(CS—ACELP)為基礎的 J。編碼器處理的信號是以8 kHz采樣的帶限信號,其輸入為16位線性PCM碼。CS—ACELP算法將語音信號每10 ms分成一幀進行處理,由于另需要5 ms的信號進行前向線性預測編碼(LPC),因此算法延遲總共為15 ms。編碼器原理如圖2所示。從圖中可以看到,其基本原理與CELP算法是一致的。當然,為了提高合成語音質量,需要采取一些措施,具體的算法要復雜一些。它的編碼過程如下:
(1)預處理:編碼之前要對輸人的16 bit PCM信號進行預處理,包括信號幅度壓縮和帶通濾波兩個過程。信號幅度壓縮就是把輸人信號除以因子2,以降低定點實現時發生溢出的可能性。帶通濾波則用來濾除不需要的低頻成分,用一個截止頻率為140 Hz的二階零極點濾波器來實現,其傳遞函數可表示為式(1)
(2)線性預測分析及量化:短時分析和合成濾波器是基于一個10階的線性預測(LP)濾波器.LP合成濾波器定義為
LPC模型階數P選為1O階,可以對絕大多數語音信號的聲道模型取得足夠近似的逼近,如果JP值選的過大雖然可以微略改善逼近效果,但是也帶來一些副作用。一方面是加大了計算量,另一方面有可能會增加一些不必要的細節,例如在用聲道模型譜進行共振峰分析時反而使效果變壞。
解碼器是編碼器的逆過程。首先要從接收到的碼流中提取LSP系數和兩個分數基音延時、兩個固定碼本矢量以及兩套自適應碼本和固定碼本增益等參數。然后,對LSP參數進行插值,并轉換到線性預測濾波器系數的形式。接下來,將自適應碼本和固定碼本矢量分別乘以各自的增益再相加,得到激勵信號。激勵信號通過LPC綜合濾波器后,形成了合成語音信號。最后還要對合成語音信號進行后處理,以提高合成語音的還原質量。
4 AIRM子系統的設計
除完成鍵盤、顯示外,ARM系統的主要任務是完成TCP/IP協議及SIP協議。S3C44B0X是SA.MSUNG(三星)公司一款基于ARM7TDMI 內核的SOC芯片。ARM7TDMI是ARM公司為普通目的而設計的一款32位微處理器,其特點是高性能、低價位、低功耗。I/O電壓3.3 V,內核電壓2.5 V,所以在整個系統中功耗非常低 ]。同時片內資源非常豐富很適合嵌入式產品的開發。
4.1 SIP協議的實現
SIP本身是一個應用層的交互協議,邏輯上被化分為多個層,第1層也就是最低層是對語法和編碼的定義,第2層定義了一個UAC如何發送會話請求和接收響應以及一個UAS如何接收會話請求和發送響應,第3層稱為事務層,事務是對所有發出的會話請求和對應請求的所有響應集合的定義“第4層稱為事務用戶(rIU),端口以及用來發送請求的傳輸機制等信息”將SIP協議分層主要是為了表述的方便,其本質就是在不同的狀態下如何發送響應或請求的過程,也就是狀態機的實現“通過分析發現可以使用統一的方法實現SIP協議” 。其中用到的數據結構:
ty~ ef struct transition{
int iState;
int iEvent;
int(}methord)(void P);
struct transition pNext:
}transit ion_t;
在結構體中iState存放狀態編號,iEvent存放此狀態下要響應的消息編號,函數指針method存放iState狀態下收iEvent消息的處理函數地址“通過對SIP協議標準的分析,狀態和消息的組合有多種況也就是會有多個transition_t類型的結構體,使用哈希表理可以提高查找某個結構體的速度“pNext用于Hash沖時將沖突的結構體構成鏈表” 。其實現流程如下:
(1)根據SIP協議標準劃分狀態,確定每個狀態下響應的消息,定義由狀態和響應消息所決定的處理方法,對應每種情況將得到一個transition_t類型的結構體,對應所有情況假設會得到 個結構體,將 個結構體存放于結構體數組aTransitionArray中;
(2)根據Hash算法將數組中的每一個結構體的指針存放于結構體指針數組中;
(3)業務啟動,初始狀態下全局狀態編號gState為0;
(4)接收消息,根據收到的消息,和當前的狀態號gState的值,利用第二步同樣的Hash算法,得到對應transition_t類型結構體指針在aTransition.PointerArray中的位置,也就得到了transition—t類型的結構體指針,執行對應結構體中的函數meth一0d..在method中定義了是否改變狀態編號gState,也就是狀態遷移,以及內部如何處理,如何發出響應消息等;
(5)繼續執行狀態4,直到狀態機退出,會話結束。
4.2 TCP/IP協議的實現
網卡電路通過REL8019AS實現,8019AS工作在16位模式(通過ISA引腳接高電平實現),8019工作在93e46模式;MAC地址、8019初始化信息通過93C46進行設置。ARM主要實現ARP、IP、ICMP、TCP、UDP協議。
(1)ARP協議實現:ARP是Address ResolutionProtocol的縮寫。中文譯為“地址解析協議”,其本質是完成網絡地址到物理地址的映射。整個ARP處理過程,主要用5個函數實現。ARP初始化(ARP—init)、ARP請求(ARP—request)、ARP應答(ARP_answer)、ARP回應處理(ARP_process)、IP包接收預處理(IP_in);
(2)IP協議實現:IP協議為不同網絡的主機之間發送數據報的操作序列提供無連接服務。通過在數據報前添加IP協議頭,使每個數據報具有尋址能力。其主要由兩個函數完成,發送IP數據(ip_send)、接受IP數據(ip_reve);
(3)ICMP協議實現:ICMP傳遞差錯報文以及其他需要注意的信息,其主要由3個函數完成,發送ICMP請求給目的主機并等待返回ICMP應答(ping_send)、目的主機無法達到處理函數(dest—unreach— send)、接收ICMP回顯數據函數(icmp—rcve);
(4)UDP協議實現:UDP是一個簡單的面向數據報的傳輸層協議,提供和IP一樣得不可靠的無連接數據報傳輸服務。它不使用確認信息對報文的到達進行確認,不對收到的報文進行排序,也不提供反饋信息來控制機器之間傳輸的信息流量,其由兩個函數實現,發送UDP數據報(udp—send)、接收UDP數據報(udp_rcve);
(5)TCP協議實現:TCP是一個面向連接的、可靠的運輸層協議,它使用滑動窗協議完成流控制,使用確認分組、超時、和重傳來完成差錯控制,其主要由5個函數實現,TCP協議初始化(init_ tcp)、發送TCP數據(tcp—send)、重發TCP數據(Tcp_retransmit)、停止TCP(Tcp—inactivity)、接收TCP數據(tcp_rcve)。
5 ARM與DSP的通信
TMS320C5416具有16位并行高速接口HPI,通過此借口S3C44B0可以高速訪問DSP的內部存儲空間,包括片內外映像存儲器 。其硬件連接如圖3。
HDO—HD15是一個數據/地址復用的雙向總線,傳送的數據包括控制寄存器的設置值、初始化的訪問地址及真正的數據;HCNTLO/1控制當前訪問的是HPI的哪一個寄存器。這2個信號對應的4個狀態除了區分對HPIC/HPIA/HPID寄存器的訪問,還提供了一個對HPID進行地址自增的訪問方式.HHWIL信號作用是區分第1個/第2個半字節的傳輸。數據選通(HDS1和HDS2)、讀/寫選擇(HR/W)和地址選通(HAS)這幾個信號在功能上相似,通過控制其不同時序可以方便的完成HPI控制。HRDY信號的使能是由HCS信號控制。HAS用于鎖存其他地址控制信號。HPID用于存放ARM從存儲空間讀取的數據,或是ARM要向DSP存儲空間寫入的數據。HPIA用于存放當前ARM訪問DSP存儲空間的地址。系統在上電后,對DSP的HPI接口初始化后就不需要再操作,通過HPI接口ARM與DSP傳遞中斷請求來完成數據的傳遞。
6 結束語
講述了IP網絡電話的系統框圖,介紹了G.729算法的實現方法,介紹了SIP協議、TCP/IP協議在ARM上的實現方法,介紹了DSP與ARM通信方法。實踐證明此種方案實現IP網絡電話切實可行。
40088 411661033743080@qq.com
中國廣東省深圳市南山區西麗九祥嶺工業區10棟3樓