基于SDA80D51的以太電話(huà)機的設計
摘要:本文提出了一種新型以太電話(huà)機的設計,采用SDA80D51芯片作為主控單元,同時(shí)使用RTL8019AS作為網(wǎng)絡(luò )接口模塊,實(shí)現了高度集成、具有較高性?xún)r(jià)比的話(huà)機。同時(shí),還針對嵌入式系統硬件資源受限的特點(diǎn),提出了一系列優(yōu)化代碼和數據存儲空間的方法和技巧。
引言
VoIP(Voice over IP)是利用IP網(wǎng)絡(luò )作為傳輸載體實(shí)現語(yǔ)音通信的技術(shù),以太電話(huà)機則是以VoIP為基礎實(shí)現的語(yǔ)音通信終端。以太電話(huà)機價(jià)格相對昂貴和話(huà)音質(zhì)量方面的問(wèn)題是目前開(kāi)發(fā)工作的難點(diǎn)。本設計是基于英飛凌科技公司的SDA80D51芯片實(shí)現的,該話(huà)機具有集成度高、結構簡(jiǎn)單、成本低等特點(diǎn),具有較高推廣價(jià)值。
硬件設計
話(huà)機采用SDA80D51芯片和以太網(wǎng)接口芯片RTL8019AS實(shí)現。由于采用了高集成的SDA80D51芯片,使系統硬件電路結構簡(jiǎn)單,整體硬件成本低廉、集成度較高??紤]到協(xié)議代碼的存儲需求,使用一個(gè)Flash作為擴展存儲單元存放代碼,同時(shí)還設計了撥號鍵盤(pán)到控制單元的控制電路。硬件的設計還可以根據不同的需求,進(jìn)行相應的調整,以實(shí)現其它的增值業(yè)務(wù)功能。
SDA80D5l簡(jiǎn)介
SDA80D51芯片將16位DSP和增強型微處理器(8051微處理器的擴展版本)高度集成,并同時(shí)集成ADC與DAC,是一種面向語(yǔ)音處理的專(zhuān)用芯片。芯片同時(shí)提供一個(gè)內存控制單元MMU和片上104kB的RAM。它具有程序和數據分開(kāi)的總線(xiàn)結構、流水線(xiàn)操作、單周期硬件乘法器和適合數字信號處理的高效指令集。此芯片的C編譯能力很強,匯編出的目標代碼效率會(huì )更高。
語(yǔ)音信號在SDA80D51集成的語(yǔ)音采樣接口模塊進(jìn)行A/D和D/A轉換,語(yǔ)音的壓縮處理則由DSP模塊進(jìn)行,對傳輸的語(yǔ)音數據打包是由C51模塊完成的。編解碼壓縮處理后由控制模塊進(jìn)行對語(yǔ)音的接收/發(fā)送控制,同時(shí),控制模塊還要完成對整個(gè)系統的控制工作。
網(wǎng)絡(luò )接口控制模塊
網(wǎng)絡(luò )接口控制模塊采用Realtek公司的以太網(wǎng)控制芯片RTL8019AS。該芯片與NE2000兼容,支持8位、16位數據總線(xiàn);全雙工,收發(fā)可同時(shí)達到10Mbps,有睡眠模式,可有效地降低功耗;內置16kB的SRAM用于收發(fā)緩沖,可減輕主處理器在數據帶寬上的壓力;可連接同軸電纜或雙絞線(xiàn),并可自動(dòng)檢測所連接的介質(zhì)。
系統使用RTL8019AS來(lái)實(shí)現以太網(wǎng)媒介訪(fǎng)問(wèn)層(MAC)和物理層(PHY)的功能,包括MAC數據幀的收發(fā)、地址識別、CRC編碼校驗、超時(shí)重傳、鏈路完整性測試、信號極性檢測糾正等。主處理器在RTL8019AS的外部總線(xiàn)上讀寫(xiě)MAC幀。其中,接收控制器用于將接收的串行數據拼成字節送到CRC校驗單元,發(fā)送控制器則是將送來(lái)的字節送到CRC編碼單元并逐個(gè)按位移出;CRC邏輯在接收時(shí)對輸入的數據進(jìn)行CRC校驗,發(fā)送時(shí)對幀數據產(chǎn)生CRC校驗序列;地址識別邏輯對接收幀的目的地址與預先設置的本地物理地址進(jìn)行比較,如不符合要求則拒收。RTL8019AS還使用內部存儲緩沖器對與核心控制單元進(jìn)行的數據交換進(jìn)行緩沖,以?xún)?yōu)化系統的數據傳輸速率。
軟件設計
系統的軟件是基于SDA80D51設計開(kāi)發(fā)的。話(huà)機軟件結構如圖1所示。
圖1 以太電話(huà)機軟件組成框圖
系統軟件開(kāi)發(fā)以C語(yǔ)言編程為主,對占用系統資源比較大的部分使用匯編語(yǔ)言來(lái)完成。程序開(kāi)發(fā)主要完成網(wǎng)絡(luò )接口控制、TCP/IP協(xié)議棧、RTP/RTCP、H.323協(xié)議棧、語(yǔ)音編解碼和主控程序這6部分。
TCP/IP協(xié)議棧的實(shí)現
通常編程環(huán)境中,TCP/IP協(xié)議棧的功能是基于操作系統中相應的socket機制實(shí)現的,像以太話(huà)機這種嵌入式系統,考慮到操作系統占用資源太大,一般不采用任何操作系統。這樣,只能由用戶(hù)編程來(lái)完成任務(wù)調度、存儲器管理和TCP/IP協(xié)議棧等功能。
在協(xié)議棧開(kāi)發(fā)時(shí),考慮到資源有限,在保證實(shí)現以太電話(huà)正常工作的前提下,從兩個(gè)方面進(jìn)行了TCP/IP協(xié)議棧的優(yōu)化,從而使開(kāi)發(fā)得到的協(xié)議棧程序代碼最少,RAM的需求最低。
協(xié)議棧結構的優(yōu)化
根據系統的實(shí)際需求,只實(shí)現TCP/IP協(xié)議棧的部分協(xié)議,即ARP(地址解析協(xié)議)、IP(互聯(lián)網(wǎng)協(xié)議)、ICMP(互聯(lián)網(wǎng)控制報文協(xié)議)、UDP(用戶(hù)數據報協(xié)議)、TCP(傳輸控制協(xié)議)等5部分。協(xié)議棧的編程采用事件驅動(dòng)機制,采用ARP完成對電話(huà)的尋址,通過(guò)對相應的應用程序的調用來(lái)實(shí)現事件響應(見(jiàn)圖2)。
圖2 TCP/IP協(xié)議棧實(shí)現過(guò)程示意圖
協(xié)議功能的優(yōu)化
本文簡(jiǎn)化了協(xié)議棧中一些不必要的功能。例如,標準的TCP協(xié)議使用慢啟動(dòng)的滑動(dòng)窗口機制。在實(shí)現TCP協(xié)議時(shí),考慮到系統所需傳送的信令數據很少,為了減少存儲器的使用,TCP只使用單個(gè)窗口。所有的處理只是對單個(gè)數據報的發(fā)送和確認,節約了系統的資源,也使維護更加方便。同時(shí),話(huà)機系統的突發(fā)事件很少,這樣對于流量控制可以不做考慮。對于差錯控制,程序處理過(guò)程中只對信令數據設置重傳機制,而語(yǔ)音數據處理不考慮重傳。
存儲空間的共享
協(xié)議開(kāi)發(fā)中,為了盡量減少對存儲空間的需求,使用共用緩存區來(lái)存放輸入、輸出數據。其中,RBuff用于存放網(wǎng)絡(luò )接口收到的數據,SBuff用于存放要發(fā)送的數據。各程序之間只提供相互要處理數據所在的指針,就可以完成數據的傳遞,節約了大量的存儲空間。
H.323協(xié)議的信令過(guò)程
一個(gè)話(huà)機到話(huà)機的基于H.323協(xié)議的簡(jiǎn)單呼叫建立過(guò)程有5個(gè)階段,即呼叫初始化、建立控制通道、呼叫開(kāi)始、通話(huà)和結束呼叫。
在設計中,考慮到系統不同于IP電話(huà)網(wǎng)關(guān)系統,只需實(shí)現單路連接,同時(shí)考慮到系統資源有限的特點(diǎn),對H.323協(xié)議棧的實(shí)現進(jìn)行了很大程度地簡(jiǎn)化。其中H.225只實(shí)現4個(gè),即SETUP、ALERTING、CONNECT、RELEASE COMPLETE;RAS實(shí)現基本的6個(gè)功能,也就是網(wǎng)守發(fā)現、端點(diǎn)登記、端點(diǎn)定位、呼叫接納、呼叫退出和狀態(tài)查詢(xún);建立H.245通道只保留了能力交換、主從確定、開(kāi)閉邏輯信道和終止會(huì )話(huà)消息。在實(shí)現上述3個(gè)協(xié)議的過(guò)程中,在編碼時(shí)盡量簡(jiǎn)化,解碼時(shí)保留。
以太話(huà)機中語(yǔ)音的處理過(guò)程
以太電話(huà)機進(jìn)行語(yǔ)音傳輸,要完成以下幾個(gè)過(guò)程:模擬語(yǔ)音首先經(jīng)CODEC編碼為64KB的PCM碼,經(jīng)壓縮形成語(yǔ)音數據;語(yǔ)音數據由RTP封裝后交由UDP封裝;攜帶語(yǔ)音數據的UDP數據報在IP層被封裝為IP包;最后IP包通過(guò)以太網(wǎng)接口程序形成以太幀發(fā)送至以太網(wǎng)傳送;攜帶語(yǔ)音數據的以太網(wǎng)幀在目的話(huà)機被以太網(wǎng)卡接收并拆包恢復為語(yǔ)音數據,其處理是語(yǔ)音發(fā)送的逆過(guò)程,語(yǔ)音數據解碼成模擬語(yǔ)音送至話(huà)筒。
系統性能優(yōu)化
嵌入式系統在開(kāi)發(fā)中的優(yōu)化十分重要。根據處理器的性能,盡可能地提高代碼運行速率,減少代碼和數據存儲空間。雖然C編譯器提供了一定的代碼優(yōu)化,但編譯器的優(yōu)化僅涉及執行速度和代碼大小的平衡,不能使程序達到小而精,因而必須采取一定的優(yōu)化方案。系統調試中,在確保系統穩定工作的基礎上,采取了以下措施進(jìn)行系統優(yōu)化。
對于代碼優(yōu)化主要采取以下措施:
1、根據發(fā)生頻率調整條件跳轉語(yǔ)句,提高代碼運行速率。例如程序中使用了很多switch-case、if語(yǔ)句,優(yōu)化時(shí)對具體情況按照發(fā)生的相對頻率排序,即把最常發(fā)生的情況放在第一位,最不可能發(fā)生的情況放在最后,這樣會(huì )減少代碼的平均執行時(shí)間,從而有效提高程序的運行速率。
2、盡量使用全局變量,減少函數調用參數,從而簡(jiǎn)化函數調用前參數入棧和函數完成后參數出棧的過(guò)程。
3、努力減小代碼的大小。
對于存儲區優(yōu)化問(wèn)題,使用了下面方法:
1、使用前述協(xié)議棧開(kāi)發(fā)共用緩沖區。
2、編程時(shí)將一些固定的數據定義為代碼類(lèi)型,同樣可以有效地減少存儲區的使用量。
通過(guò)以上措施以及對協(xié)議實(shí)現的具體優(yōu)化,程序大小從150KB優(yōu)化到70KB以?xún)?,系統的響應速度也得到較大提高。由此可以看出,對程序的合理優(yōu)化,對提高程序運行的穩定性和系統處理速度,都可以起到至關(guān)重要的作用。
結語(yǔ)
SDA80D51芯片的集成度高,設計電路時(shí)省去了許多模塊,簡(jiǎn)化了硬件設計,便于調試檢測。同時(shí)通過(guò)對協(xié)議棧的優(yōu)化,使系統達到了預期的低成本、高可靠性?!?/P>
tcp/ip相關(guān)文章:tcp/ip是什么
評論