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