基于 DSP 的網絡通信程序設計
摘要:通過分析網卡基本通信過程控制和數字信號處理器(DSP)對網卡直接編程方法,成功設計基于DSP的網絡通信程序,從而最終實現DSP系統數字化和網絡化的融合。關鍵詞:DSP 網絡通信程序 通信協議 網卡
DSP芯片是專門為實現各種數字信號處理算法而設計的、具有特殊結構的微處理器,其卓越的性能、不斷上升的性價比、日漸完善的開發方式使它的應用越來越廣泛。將計算機網絡技術引入以DSP為核心的嵌入式系統,使其成為數字化、網絡化相結合,集通信、計算機和視聽功能于一體的電子產品,必須大大提升DSP系統的應用價值和市場前景。將DSP技術與網絡技術相結合,必須解決兩個關鍵問題:一是實現DSP與網卡的硬件接口技術,二是基于DSP的網絡通信程序設計。DSP與網卡的硬件接口技術參考文獻[1]有比較詳盡的論述,以下主要討論基于DSP的網絡通信程序設計。
1 通信協議的制定
協議是用來管理通信的法規,是網絡系統功能實現的基礎。由于DSP可以實現對網卡的直接操作,對應于OSI網絡模型,網卡包含了物理層和數據鏈路層的全部內容,因此,規定了數據鏈路層上數據幀封裝格式,就可以為基于DSP的局域網絡中任意站點之間的通信提供具體規范。因為以太網是當今最受歡迎的局域網之一,在以太網中,網卡用于實現802.3規程,其典型代表是Novell公司的NE2000和3COM公司的3C503等網卡,所以研究工作中的具體試驗平臺是以DSP為核心構成的以太局域網,主要用于語音的實時通信,所使用的網卡為Novell公司的NE2000網卡。NE2000網卡的基本組成請見參考文獻[2],其核心器件是網絡接口控制器(NIC)DP8390。該器件有三部分功能:第一是IEEE802.3MAC(媒體訪問控制)子層協議邏輯,實現數據幀的封裝和解封,CSMA/CA(帶碰撞檢測功能的載波偵聽多址接入)協議以及CRC校驗等功能;第二是寄存器堆,用戶對NE2000網卡通信過程的控制主要通過對這些寄存器堆中各種命令寄存器編程實現;第三是對網卡上緩沖RAM的讀寫控制邏輯。DP8390發送和接收采用標準的IEEE802.3幀格式。IEEE802.3參考了以太網的協議和技術規范,但對數據包的基本結構進行了修改,主要是類型字段變成了長度字段。所以,以DSP為核心的局域網內通信數據包基本格式如圖1所示。
DSP讀出數據包和打包從目的地址開始。目的地址用來指明一個數據幀在網絡中被傳送的目的節點地址。NE2000支持3種目的地址:單地址、組地址及廣播地址。單地址表示只有1個節點可以接收該幀信息;組地址表示最多可以有64個字節接收同一幀信息;而廣播地址則表示它可以被同一網絡中的所有節接收。源地址是發送幀節點的物理地址,它只能是單地址。目的地址和源地址指網卡的硬件地址,又稱物理地址。
在源地址之后的2個字節表示該幀的數據長度,只表示數據部分的長度,由用戶自己填入。數據字段由46~1500字節組成。大于1500字節的數據應分為多個幀來發送;小于46字節時,必須填充至46字節。原因有兩個:一是保證從目的地址字段到幀校驗字段長度為64字節的最短幀長,以便區分信道中的有效幀和無用信息;二是為了防止一個站發送短幀時,在第一個比特尚未到達總線的最遠端時就完成幀發送,因而在可能發生碰撞時檢測不到沖突信號。NE2000對接收到的
[1] [2] [3] [4]