<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 網(wǎng)絡與存儲 > 設計應用 > 基于SDA80D51的以太電話機的設計

          基于SDA80D51的以太電話機的設計

          ——
          作者:天津大學自動化學院 劉云紅 時間:2006-06-11 來源: 收藏

          摘要:本文提出了一種新型以太電話機的設計,采用SDA80D51芯片作為主控單元,同時使用RTL8019AS作為網(wǎng)絡接口模塊,實現(xiàn)了高度集成、具有較高性價比的話機。同時,還針對嵌入式系統(tǒng)硬件資源受限的特點,提出了一系列優(yōu)化代碼和數(shù)據(jù)存儲空間的方法和技巧。

          引言

          VoIP(Voice over IP)是利用IP網(wǎng)絡作為傳輸載體實現(xiàn)語音通信的技術,以太電話機則是以VoIP為基礎實現(xiàn)的語音通信終端。以太電話機價格相對昂貴和話音質(zhì)量方面的問題是目前開發(fā)工作的難點。本設計是基于英飛凌科技公司的SDA80D51芯片實現(xiàn)的,該話機具有集成度高、結(jié)構(gòu)簡單、成本低等特點,具有較高推廣價值。

          硬件設計

          話機采用SDA80D51芯片和以太網(wǎng)接口芯片RTL8019AS實現(xiàn)。由于采用了高集成的SDA80D51芯片,使系統(tǒng)硬件電路結(jié)構(gòu)簡單,整體硬件成本低廉、集成度較高??紤]到協(xié)議代碼的存儲需求,使用一個Flash作為擴展存儲單元存放代碼,同時還設計了撥號鍵盤到控制單元的控制電路。硬件的設計還可以根據(jù)不同的需求,進行相應的調(diào)整,以實現(xiàn)其它的增值業(yè)務功能。

          SDA80D5l簡介

          SDA80D51芯片將16位DSP和增強型微處理器(8051微處理器的擴展版本)高度集成,并同時集成ADC與DAC,是一種面向語音處理的專用芯片。芯片同時提供一個內(nèi)存控制單元MMU和片上104kB的RAM。它具有程序和數(shù)據(jù)分開的總線結(jié)構(gòu)、流水線操作、單周期硬件乘法器和適合數(shù)字信號處理的高效指令集。此芯片的C編譯能力很強,匯編出的目標代碼效率會更高。

          語音信號在SDA80D51集成的語音采樣接口模塊進行A/D和D/A轉(zhuǎn)換,語音的壓縮處理則由DSP模塊進行,對傳輸?shù)恼Z音數(shù)據(jù)打包是由C51模塊完成的。編解碼壓縮處理后由控制模塊進行對語音的接收/發(fā)送控制,同時,控制模塊還要完成對整個系統(tǒng)的控制工作。

          網(wǎng)絡接口控制模塊

          網(wǎng)絡接口控制模塊采用Realtek公司的以太網(wǎng)控制芯片RTL8019AS。該芯片與NE2000兼容,支持8位、16位數(shù)據(jù)總線;全雙工,收發(fā)可同時達到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ù)進行CRC校驗,發(fā)送時對幀數(shù)據(jù)產(chǎn)生CRC校驗序列;地址識別邏輯對接收幀的目的地址與預先設置的本地物理地址進行比較,如不符合要求則拒收。RTL8019AS還使用內(nèi)部存儲緩沖器對與核心控制單元進行的數(shù)據(jù)交換進行緩沖,以優(yōu)化系統(tǒng)的數(shù)據(jù)傳輸速率。

          軟件設計

          系統(tǒng)的軟件是基于SDA80D51設計開發(fā)的。話機軟件結(jié)構(gòu)如圖1所示。


          圖1 以太電話機軟件組成框圖


          系統(tǒng)軟件開發(fā)以C語言編程為主,對占用系統(tǒng)資源比較大的部分使用匯編語言來完成。程序開發(fā)主要完成網(wǎng)絡接口控制、TCP/IP協(xié)議棧、RTP/RTCP、H.323協(xié)議棧、語音編解碼和主控程序這6部分。

          TCP/IP協(xié)議棧的實現(xiàn)

          通常編程環(huán)境中,TCP/IP協(xié)議棧的功能是基于操作系統(tǒng)中相應的socket機制實現(xiàn)的,像以太話機這種嵌入式系統(tǒng),考慮到操作系統(tǒng)占用資源太大,一般不采用任何操作系統(tǒng)。這樣,只能由用戶編程來完成任務調(diào)度、存儲器管理和TCP/IP協(xié)議棧等功能。

          在協(xié)議棧開發(fā)時,考慮到資源有限,在保證實現(xià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ū)動機制,采用ARP完成對電話的尋址,通過對相應的應用程序的調(diào)用來實現(xiàn)事件響應(見圖2)。


          圖2  TCP/IP協(xié)議棧實現(xiàn)過程示意圖

          協(xié)議功能的優(yōu)化
          本文簡化了協(xié)議棧中一些不必要的功能。例如,標準的TCP協(xié)議使用慢啟動的滑動窗口機制。在實現(xiàn)TCP協(xié)議時,考慮到系統(tǒng)所需傳送的信令數(shù)據(jù)很少,為了減少存儲器的使用,TCP只使用單個窗口。所有的處理只是對單個數(shù)據(jù)報的發(fā)送和確認,節(jié)約了系統(tǒng)的資源,也使維護更加方便。同時,話機系統(tǒng)的突發(fā)事件很少,這樣對于流量控制可以不做考慮。對于差錯控制,程序處理過程中只對信令數(shù)據(jù)設置重傳機制,而語音數(shù)據(jù)處理不考慮重傳。

          存儲空間的共享
          協(xié)議開發(fā)中,為了盡量減少對存儲空間的需求,使用共用緩存區(qū)來存放輸入、輸出數(shù)據(jù)。其中,RBuff用于存放網(wǎng)絡接口收到的數(shù)據(jù),SBuff用于存放要發(fā)送的數(shù)據(jù)。各程序之間只提供相互要處理數(shù)據(jù)所在的指針,就可以完成數(shù)據(jù)的傳遞,節(jié)約了大量的存儲空間。

          H.323協(xié)議的信令過程

          一個話機到話機的基于H.323協(xié)議的簡單呼叫建立過程有5個階段,即呼叫初始化、建立控制通道、呼叫開始、通話和結(jié)束呼叫。

          在設計中,考慮到系統(tǒng)不同于IP電話網(wǎng)關系統(tǒng),只需實現(xiàn)單路連接,同時考慮到系統(tǒng)資源有限的特點,對H.323協(xié)議棧的實現(xiàn)進行了很大程度地簡化。其中H.225只實現(xiàn)4個,即SETUP、ALERTING、CONNECT、RELEASE COMPLETE;RAS實現(xiàn)基本的6個功能,也就是網(wǎng)守發(fā)現(xiàn)、端點登記、端點定位、呼叫接納、呼叫退出和狀態(tài)查詢;建立H.245通道只保留了能力交換、主從確定、開閉邏輯信道和終止會話消息。在實現(xiàn)上述3個協(xié)議的過程中,在編碼時盡量簡化,解碼時保留。

          以太話機中語音的處理過程

          以太電話機進行語音傳輸,要完成以下幾個過程:模擬語音首先經(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)幀在目的話機被以太網(wǎng)卡接收并拆包恢復為語音數(shù)據(jù),其處理是語音發(fā)送的逆過程,語音數(shù)據(jù)解碼成模擬語音送至話筒。

          系統(tǒng)性能優(yōu)化

          嵌入式系統(tǒng)在開發(fā)中的優(yōu)化十分重要。根據(jù)處理器的性能,盡可能地提高代碼運行速率,減少代碼和數(shù)據(jù)存儲空間。雖然C編譯器提供了一定的代碼優(yōu)化,但編譯器的優(yōu)化僅涉及執(zhí)行速度和代碼大小的平衡,不能使程序達到小而精,因而必須采取一定的優(yōu)化方案。系統(tǒng)調(diào)試中,在確保系統(tǒng)穩(wěn)定工作的基礎上,采取了以下措施進行系統(tǒng)優(yōu)化。

          對于代碼優(yōu)化主要采取以下措施:
          1、根據(jù)發(fā)生頻率調(diào)整條件跳轉(zhuǎn)語句,提高代碼運行速率。例如程序中使用了很多switch-case、if語句,優(yōu)化時對具體情況按照發(fā)生的相對頻率排序,即把最常發(fā)生的情況放在第一位,最不可能發(fā)生的情況放在最后,這樣會減少代碼的平均執(zhí)行時間,從而有效提高程序的運行速率。
          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ōu)化,對提高程序運行的穩(wěn)定性和系統(tǒng)處理速度,都可以起到至關重要的作用。

          結(jié)語

          SDA80D51芯片的集成度高,設計電路時省去了許多模塊,簡化了硬件設計,便于調(diào)試檢測。同時通過對協(xié)議棧的優(yōu)化,使系統(tǒng)達到了預期的低成本、高可靠性?!?/P>

          tcp/ip相關文章:tcp/ip是什么




          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();