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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于DM9000A的以太網(wǎng)接口設(shè)計與實現(xiàn)

          基于DM9000A的以太網(wǎng)接口設(shè)計與實現(xiàn)

          作者: 時間:2014-03-19 來源:網(wǎng)絡(luò) 收藏

           

          本文引用地址:http://www.ex-cimer.com/article/234974.htm

          3.1.3 數(shù)據(jù)幀接收

          當(dāng)數(shù)據(jù)接收使能后,就會自動接收數(shù)據(jù)。接收到的數(shù)據(jù)先保存在地址從0x0C00~0x3FFF的13 KB內(nèi)部SRAM緩存空間中,它是一個環(huán)形結(jié)構(gòu)。

          利用寄存器MRCMDX(FOH)和寄存器MRCMD(F2H)可獲取緩存中的數(shù)據(jù)幀信息。接收到的數(shù)據(jù)幀格式如圖6所示。

           

           

          其中第1個字節(jié)是接收數(shù)據(jù)標(biāo)志字節(jié),表征接收到數(shù)據(jù)幀是否有效。第2個字節(jié)是接收數(shù)據(jù)幀的狀態(tài)字節(jié),其中的內(nèi)容與接收狀態(tài)寄存器RSR中的內(nèi)容相同,可以用來判斷所接收的數(shù)據(jù)幀是否正常。第3,4個字節(jié)是接收到數(shù)據(jù)的長度字節(jié),其中低位在前,高位在后。從第5個字節(jié)開始的數(shù)據(jù)才是真正數(shù)據(jù)幀內(nèi)容。

          數(shù)據(jù)接收過程如下:

          (1)檢查中斷狀態(tài)寄存器:ISR(FEH),若PRS位為1,說明有新的數(shù)據(jù)幀接收,寫1清除PRS位;若為0,說明無數(shù)據(jù),直接返回。

          (2)讀取第1個字節(jié),即接收數(shù)據(jù)標(biāo)志字節(jié)。如果該字節(jié)為01,則表示接收下來的是有效數(shù)據(jù)幀;如果該位為00則表示沒有數(shù)據(jù)到達(dá),或數(shù)據(jù)已經(jīng)接收完成;如果既不是01又不是00,則認(rèn)為有異常發(fā)生,這時就要將DM9000A芯片重啟以使芯片恢復(fù)到正常狀態(tài)。

          (3)讀取第2個字節(jié),即接收狀態(tài)字節(jié)。根據(jù)接收狀態(tài)字節(jié)判斷所接收的數(shù)據(jù)幀是否正常。

          (4)讀取第3,4字節(jié),即數(shù)據(jù)幀長度字節(jié)。

          (5)讀取真正的數(shù)據(jù)幀內(nèi)容。

          (6)根據(jù)獲取的長度信息,判斷是否讀完一幀。如果讀完,接著讀下一幀,直到遇到首字節(jié)是00H的幀,說明接收數(shù)據(jù)已讀完。

          數(shù)據(jù)幀接收流程如圖7所示。

           

           

          3.2 上層通信協(xié)議程序設(shè)計

          TCP/IP協(xié)議模型可以分為四個層次,從下到上依次為:鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。每一層都有不同的功能,低一層為高一層提供服務(wù)。

          標(biāo)準(zhǔn)的TCP/IP協(xié)議棧對處理器的計算、存儲要求比較高,然而,DSP系統(tǒng)的計算資源和存儲資源通常是非常有限,在DSP中實現(xiàn)標(biāo)準(zhǔn)的TCP/IP協(xié)議棧將占用大量系統(tǒng)資源,不利于DSP其他方面的應(yīng)用,因此必須對它進(jìn)行簡化并優(yōu)化,盡可能做到代碼精簡,降低存儲開銷。本系統(tǒng)設(shè)計和實現(xiàn)了TCP/IP通信協(xié)議的必要部分,包括:ARP,IP,ICMP,TCP,UDP等協(xié)議。

          ARP(地址解析協(xié)議)為IP地址到對應(yīng)的硬件地址之間提供動態(tài)映射。IP協(xié)議是TCP/IP協(xié)議的核心,所有的TCP,UDP,ICMP的數(shù)據(jù)都是以IP數(shù)據(jù)格式傳輸?shù)摹CMP(網(wǎng)絡(luò)控制報文)是用來傳遞差錯報文以及其他需要注意的信息,有各種類型的ICMP報文,本文只用到ICMP的請求回顯(類型字段為8、代碼字段為0)。TCP提供一種面向連接的、可靠的字節(jié)流服務(wù),交換數(shù)據(jù)之前必須先建立一個TCP連接,即“三次握手”UDP是一個簡單的面向數(shù)據(jù)報的傳輸層協(xié)議,它把應(yīng)用程序傳給IP層的數(shù)據(jù)發(fā)送出去,但是并不保證他們能到達(dá)目的地。在鏈路層,當(dāng)DM9000A完成一個以太網(wǎng)數(shù)據(jù)幀接收后,將其讀入暫存數(shù)組,檢查以太網(wǎng)幀類型字段,該字段值為0x0806,表示數(shù)據(jù)幀為ARP幀;該字段的值為0x0800,表示數(shù)據(jù)幀為IP幀。接著,分別交由ARP協(xié)議處理模塊或IP協(xié)議處理模塊。編程時使用框架如下:

          if(完成以太網(wǎng)數(shù)據(jù)幀接收)

          { if(以太網(wǎng)類型字段==0x0806)

          {ARP處理模塊}

          if(以太網(wǎng)類型字段==0x0800)

          {IP處理模塊}

          }

          網(wǎng)絡(luò)層收到的為ARP數(shù)據(jù)報,ARP根據(jù)操作字段(ARP請求為1,ARP應(yīng)答為2),或者發(fā)送ARP應(yīng)答或者更新ARP地址映射表。若為IP數(shù)據(jù)報,IP協(xié)議處理模塊對數(shù)據(jù)包解析后,IP首部協(xié)議字段若為1就將數(shù)據(jù)交給ICMP協(xié)議處理模塊,若為6則交給TCP處理模塊,若為17則交給UDP處理模塊。傳輸層得到UDP的報文后,按照UDP協(xié)議中的端口,分別送給不同的應(yīng)用層序。若傳輸層得到的是TCP報文,則要根據(jù)TCP的狀態(tài)轉(zhuǎn)換圖進(jìn)行處理。在TCP或UDP的處理模塊中,根據(jù)目的端口號,分別將數(shù)據(jù)送往不同的用戶應(yīng)用程序。其工作流程如圖8所示。

           

           

          4 結(jié)語

          本文把高度集成、低成本的快速以太網(wǎng)控制器DM9000A與數(shù)據(jù)處理能力強(qiáng)大、高運(yùn)行速度的DSP()相結(jié)合,設(shè)計出了一種DSP的以太網(wǎng)接口。實驗結(jié)果表明,DSP系統(tǒng)可以通過該接口實現(xiàn)以太網(wǎng)數(shù)據(jù)通信,經(jīng)自行裁剪的TCP/IP協(xié)議棧,不僅實現(xiàn)了IP,ARP,ICM P,TCP和UDP協(xié)議,而且提高了數(shù)據(jù)傳輸效率。該接口具有硬件接口簡單、外圍器件少、運(yùn)行穩(wěn)定可靠、性價比高等特點(diǎn),同時也能夠滿足測試、采集等高速數(shù)據(jù)傳輸系統(tǒng)的要求,符合當(dāng)今DSP設(shè)備趨于網(wǎng)絡(luò)化發(fā)展的方向。

          tcp/ip相關(guān)文章:tcp/ip是什么


          雙絞線傳輸器相關(guān)文章:雙絞線傳輸器原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: DM9000A DSP

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();