新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種基于ARM和FPGA的可重構MAC協議設計

        一種基于ARM和FPGA的可重構MAC協議設計

        作者: 時間:2012-07-03 來源:網絡 收藏

        摘要:為了在實際信道條件下研究Ad Hoc網絡,克服商業網卡芯片和理論仿真等帶來的局限性,搭建了相結合的硬件平臺,與實現了CSMA/CA的可,并進行了仿真測試,驗證了該的正確性。對Ad Hoc網絡協議的實用化提供有益的參考。
        關鍵詞:媒體訪問控制;帶沖突避免的載波偵聽多路訪問;

        0 引言
        CSMA/CA的MAC協議的優勢在于其簡單和健壯性,適用于分布式網絡,每個節點無需維持和動態更新周圍相鄰節點的狀態信息,可以獨自決定何時接入信道,只要上層有數據需要傳輸,MAC層就會對信道進行競爭,因此該協議的應用也相當廣泛。嵌入式技術的發展對MAC協議的實現也提供了很好的技術支撐。本文搭建了一種基于相結合的嵌入式開發平臺,并在此基礎上與實現了基于CSMA/CA的MAC協議。由于ARM和FPGA本身就是可器件,同時將FPGA中的一些協議參數由ARM來設置,通過修改ARM的代碼就可以實現對FPGA中協議功能的調整,方便快捷,不再需要重新生成比特文件下載,有利于MAC協議可的實現。

        1 協議功能描述
        1.1 報文結構
        本設計實現的是基于CSMA/CA的MAC協議的基本訪問模式,節點之間的通信只有數據幀(DATA)和應答確認幀(ACK)。圖1給出了報文結構,其中ACK沒有凈數據部分。由于考慮的是一跳范圍的無線通信,沒有中繼節點等,因此只有源節點號和目的節點號。

        本文引用地址:http://www.104case.com/article/148811.htm

        a.JPG


        1.2 組網設計
        本文設計的MAC協議除了滿足基本的的物理載波偵聽和虛擬載波偵聽相結合檢測信道忙閑的機制外,還包括幀間間隔、隨機退避、應答確認和重傳機制。
        有數據要發送的節點會首先監聽媒介,若為忙則繼續等待,若空閑的時間超過或者等于DIFS或者EIFS則會進入退避進程。在執行退避進程過程中,節點將隨機產生一個退避時間來設置退避定時器,同時繼續監聽媒介,若空閑時間達到了一個時隙時間,則退避定時器減去一個時隙時間,如果在期間媒介變為了忙,退避進程將掛起,直到媒介空閑時間再次達到DIFS或者EIFS后才會接著繼續進行退避進程。當退避定時器變為0時,節點才允許開始發送數據,同時也會啟動超時重傳機制,如果在規定的時間內沒有收到所希望的ACK,則會重傳數據幀,當節點重傳的次數超過了重傳門限將會丟棄該數據幀,或者超過了數據幀最長允許的發送時間,也會丟棄該數據幀;當節點收到ACK時,就會開始準備下一次數據的發送。
        接收節點收到正確且是發送給本節點的數據幀將會立刻回復源節點ACK。如果節點沒有收到正確的數據幀,則將使用EIFS;如果收到正確的數據幀,但是不是給本節點的,節點將解析出持續時間,更新NAV,將信道視為已被占用。
        1.3 功能劃分
        本設計充分利用ARM靈活便捷的優勢,用來實現隨機退避算法和協議參數的管理,如重傳次數,幀間間隔的設置等。隨機退避算法采用的是第i次退避就在2i個時隙中隨機地選出一個值作為節點需要退避的值。協議參數的設置由ARM來完成,主要是考慮到FPGA不利于參數的修改,這樣也可以增強協議的可重構性。而FPGA以其卓越的實時信號處理優點,用于管理MAC幀的收發控制等。

        2 協議設計
        MAC層的工作狀態主要是由物理載波偵聽和虛擬載波偵聽共同決定的(即:MAC_flag=CS_flag or NAV_flag),當兩者都顯示為空閑時,MAC層才會進入發送數據幀狀態。同時該協議也需要時鐘計數參與其中,IFS_time是每個節點在進入退避進程前需要等待的時間,實現幀間間隔的功能;Backoff_time是每個節點在退避進程中退避的時間;NAV_time是沒有在通信的節點預留信道的時間。這三個時間也關系著整個協議所處的狀態。圖2給出了具體的實現流程圖,具體實現過程步驟如下:

        b.JPG


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 枞阳县| 宿迁市| 仁化县| 儋州市| 丹江口市| 萝北县| 天全县| 临西县| 望江县| 文山县| 柏乡县| 林西县| 辽阳市| 新乐市| 武乡县| 墨江| 天祝| 镇坪县| 永胜县| 雷波县| 西华县| 乌兰察布市| 德阳市| 临海市| 东台市| 彰武县| 广宁县| 建昌县| 连州市| 高阳县| 桃江县| 沙雅县| 淮北市| 潼南县| 定襄县| 九台市| 文成县| 修武县| 凤山县| 清新县| 茶陵县|