一種基于ARM和FPGA的可重構MAC協(xié)議設計
摘要:為了在實際信道條件下研究Ad Hoc網(wǎng)絡MAC協(xié)議,克服商業(yè)網(wǎng)卡芯片和理論仿真等帶來的局限性,搭建了基于ARM和FPGA相結合的硬件平臺,設計與實現(xiàn)了基于CSMA/CA的可重構MAC協(xié)議,并進行了仿真測試,驗證了該協(xié)議設計的正確性。對Ad Hoc網(wǎng)絡MAC協(xié)議的實用化提供有益的參考。
關鍵詞:媒體訪問控制;帶沖突避免的載波偵聽多路訪問;ARM;FPGA
0 引言
基于CSMA/CA的MAC協(xié)議的優(yōu)勢在于其簡單和健壯性,適用于分布式網(wǎng)絡,每個節(jié)點無需維持和動態(tài)更新周圍相鄰節(jié)點的狀態(tài)信息,可以獨自決定何時接入信道,只要上層有數(shù)據(jù)需要傳輸,MAC層就會對信道進行競爭,因此該協(xié)議的應用也相當廣泛。嵌入式技術的發(fā)展對MAC協(xié)議的實現(xiàn)也提供了很好的技術支撐。本文搭建了一種基于ARM和FPGA相結合的嵌入式開發(fā)平臺,并在此基礎上設計與實現(xiàn)了基于CSMA/CA的MAC協(xié)議。由于ARM和FPGA本身就是可重構器件,同時將FPGA中的一些協(xié)議參數(shù)由ARM來設置,通過修改ARM的代碼就可以實現(xiàn)對FPGA中協(xié)議功能的調(diào)整,方便快捷,不再需要重新生成比特文件下載,有利于MAC協(xié)議可重構的實現(xiàn)。
1 協(xié)議功能描述
1.1 報文結構
本設計實現(xiàn)的是基于CSMA/CA的MAC協(xié)議的基本訪問模式,節(jié)點之間的通信只有數(shù)據(jù)幀(DATA)和應答確認幀(ACK)。圖1給出了報文結構,其中ACK沒有凈數(shù)據(jù)部分。由于考慮的是一跳范圍的無線通信,沒有中繼節(jié)點等,因此只有源節(jié)點號和目的節(jié)點號。
1.2 組網(wǎng)設計
本文設計的MAC協(xié)議除了滿足基本的的物理載波偵聽和虛擬載波偵聽相結合檢測信道忙閑的機制外,還包括幀間間隔、隨機退避、應答確認和重傳機制。
有數(shù)據(jù)要發(fā)送的節(jié)點會首先監(jiān)聽媒介,若為忙則繼續(xù)等待,若空閑的時間超過或者等于DIFS或者EIFS則會進入退避進程。在執(zhí)行退避進程過程中,節(jié)點將隨機產(chǎn)生一個退避時間來設置退避定時器,同時繼續(xù)監(jiān)聽媒介,若空閑時間達到了一個時隙時間,則退避定時器減去一個時隙時間,如果在期間媒介變?yōu)榱嗣?,退避進程將掛起,直到媒介空閑時間再次達到DIFS或者EIFS后才會接著繼續(xù)進行退避進程。當退避定時器變?yōu)?時,節(jié)點才允許開始發(fā)送數(shù)據(jù),同時也會啟動超時重傳機制,如果在規(guī)定的時間內(nèi)沒有收到所希望的ACK,則會重傳數(shù)據(jù)幀,當節(jié)點重傳的次數(shù)超過了重傳門限將會丟棄該數(shù)據(jù)幀,或者超過了數(shù)據(jù)幀最長允許的發(fā)送時間,也會丟棄該數(shù)據(jù)幀;當節(jié)點收到ACK時,就會開始準備下一次數(shù)據(jù)的發(fā)送。
接收節(jié)點收到正確且是發(fā)送給本節(jié)點的數(shù)據(jù)幀將會立刻回復源節(jié)點ACK。如果節(jié)點沒有收到正確的數(shù)據(jù)幀,則將使用EIFS;如果收到正確的數(shù)據(jù)幀,但是不是給本節(jié)點的,節(jié)點將解析出持續(xù)時間,更新NAV,將信道視為已被占用。
1.3 功能劃分
本設計充分利用ARM靈活便捷的優(yōu)勢,用來實現(xiàn)隨機退避算法和協(xié)議參數(shù)的管理,如重傳次數(shù),幀間間隔的設置等。隨機退避算法采用的是第i次退避就在2i個時隙中隨機地選出一個值作為節(jié)點需要退避的值。協(xié)議參數(shù)的設置由ARM來完成,主要是考慮到FPGA不利于參數(shù)的修改,這樣也可以增強協(xié)議的可重構性。而FPGA以其卓越的實時信號處理優(yōu)點,用于管理MAC幀的收發(fā)控制等。
2 協(xié)議設計
MAC層的工作狀態(tài)主要是由物理載波偵聽和虛擬載波偵聽共同決定的(即:MAC_flag=CS_flag or NAV_flag),當兩者都顯示為空閑時,MAC層才會進入發(fā)送數(shù)據(jù)幀狀態(tài)。同時該協(xié)議也需要時鐘計數(shù)參與其中,IFS_time是每個節(jié)點在進入退避進程前需要等待的時間,實現(xiàn)幀間間隔的功能;Backoff_time是每個節(jié)點在退避進程中退避的時間;NAV_time是沒有在通信的節(jié)點預留信道的時間。這三個時間也關系著整個協(xié)議所處的狀態(tài)。圖2給出了具體的實現(xiàn)流程圖,具體實現(xiàn)過程步驟如下:
評論