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

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > 無線傳感器網絡CSMA協(xié)議的設計

          無線傳感器網絡CSMA協(xié)議的設計

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

          是網絡中運用得最為廣泛的競爭協(xié)議,因此網絡的大多使用CSMA機制來提供競爭信道的功能。隨著IEEE 802.15.4標準的制定,各射頻芯片廠家也紛紛推出了性能更好、功能更強的射頻芯片。TI公司(原Chipcon)推出CC2420來替代原來網絡使用最多的射頻芯片CC1000。由于各射頻芯片特性功能各不相同,為了使達到更好的性能,根據(jù)射頻芯片的具體特性來重新優(yōu)化設計CSMA機制也就變得很有必要。

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

          本文使用TI公司的MSP4301611超低功耗MCU,以及CC2420射頻芯片作為硬件實驗平臺,充分利用CC2420部分IEEE 802.15.4協(xié)議MAC封裝的特性,設計并實現(xiàn)了一個全新的、靈活的。

          1 信道監(jiān)測的設計

          實現(xiàn)CSMA協(xié)議的最基本的條件就是物理層必須提供可靠、實用的信道監(jiān)測手段,因此首先要了解射頻芯片的一些特性。

          1.1 CC2420的相關特性

          CC2420是TI公司推出的2.4 GHz射頻芯片,其硬件封裝支持部分IEEE 802.15.4的協(xié)議規(guī)定。CC2420的功能結構如圖1所示,CC2420的數(shù)字接口具有自動CRC校驗、自動加密的功能,并維護兩個緩沖區(qū)(一個接收FIFO,一個發(fā)送FIFO)。數(shù)字接口通過SPI通信接口與微處理器相連。CC2420是以數(shù)據(jù)包為單位的射頻芯片,即必須從微處理器收滿一個數(shù)據(jù)包,才會發(fā)送該數(shù)據(jù)包。數(shù)字接口收滿一整包后,自動添加CRC校驗,并送入調制模塊進行數(shù)據(jù)調制和整形,最后發(fā)送出去。當監(jiān)測到信道有數(shù)據(jù)時,將數(shù)據(jù)經過模/數(shù)轉換后送入數(shù)字解調器中進行幀同步;如果同步就將數(shù)據(jù)填入接收緩沖區(qū)中,最后填充當前信道內的RSSI(Receive Signal Strength Indicator,接收信號強度指示器)信息。

          圖1 CC2420功能結構圖

          CC2420提供一個讀取RSSI值的命令,開發(fā)者可以調用該命令來得到當前信道的信號強度值,并通過對該值的解析來判定當前信道是空閑還是繁忙。另外,CC2420在接收到數(shù)據(jù)包時,可以自動在數(shù)據(jù)包的倒數(shù)第二個字節(jié)里填充當前接收數(shù)據(jù)包時的RSSI值。這種特性對于信號強度閾值的更新維護十分有用。

          1.2 信道監(jiān)測的設計

          CC2420提供了一項CSMACA的功能,稱為CCA(Clear Channel Assessment,空閑信道評估),它使用一個寄存器來設置閾值。當CC2420收到CCA命令后,就開始采樣RSSI值,只有采樣到的RSSI值小于寄存器中的閾值時才允許發(fā)送數(shù)據(jù)。CCA雖然實現(xiàn)了信道監(jiān)測的基本功能,但是也有其自身的缺點: 不夠靈活且開放程度不夠,只能進行一次完整的通道監(jiān)測,并不能設置采樣次數(shù)。這就限制了它在其他協(xié)議中的使用,例如在LPL(Low Power Listening,低功耗偵聽)協(xié)議中,只需要進行一次采樣作為偵聽。另外,它的判定機制并不夠完善,只有一個閾值,因而開發(fā)者難以找到合適的閾值。

          本文參照CCA的閾值機制,設置上下閾值并利用CC2420讀取RSSI采樣值的命令,用軟件來完成信道監(jiān)測工作。本文使用的信道監(jiān)測及判定的基本原理就是: 先設置兩個適當?shù)男盘枏姸乳撝?,一個是最小信號強度minSignal,其含義是信道中有數(shù)據(jù)發(fā)送時的最小信號強度值;另一個是噪聲強度noiseStrength,其含義是信道空閑時的信號強度值。然后物理層在一段時間內不斷地進行RSSI采樣,并把采樣結果按照某種規(guī)則(在實現(xiàn)中有具體說明)與閾值進行比較,從而得到信道的活動狀態(tài)。而且為了更準確地反映信道狀態(tài),在不能判斷信道活動狀態(tài)時,還應有擴展采樣機制。

          另外,這兩個信號強度閾值并不是一直不變的,它們必須根據(jù)信道一段時期的信號強度情況來動態(tài)更新,因此本文還實現(xiàn)了一種閾值更新機制,它能根據(jù)當前的信道信號強度和一些強度統(tǒng)計信息來動態(tài)地更新閾值。

          從接口上看,物理層的信道監(jiān)測只是提供給的CSMA協(xié)議一個探測信道的接口。為了設計一個靈活的信道探測接口給上層,就必須給上層一些調整的接口,例如可以讓上層來設定具體某次監(jiān)測的采樣次數(shù),這樣上層就可以根據(jù)不同的實際情況來設定采樣數(shù)。圖2為物理層信道監(jiān)測提供的接口與MAC層CSMA的關系簡圖。

          圖2 信道監(jiān)測接口與CSMA關系簡圖

          2 信道監(jiān)測的實現(xiàn)

          2.1 信道活動狀態(tài)判斷的基本規(guī)則

          采樣得到的RSSI值是一個有符號的振幅值,它只有一個字節(jié)。這樣的值并不利于分析,所以統(tǒng)一將其值上升128,即對讀出的RSSI值統(tǒng)一加上128,因此轉換后的值都是為正的,后面提到的RSSI值指的都是轉換后的值。

          假設上層設定信道采樣窗口數(shù)為N。為了完成連續(xù)的N次采樣,需要使用一個采樣定時器。CC2420的RSSI采樣時間約為128 μs,再加上硬件延遲以及軟件處理延遲時間,采樣定時器設置為1 ms循環(huán)觸發(fā)(這1 ms的采樣在CSMA中稱為“采樣窗口”)。每次定時器觸發(fā)后,就向CC2420發(fā)送命令讀取當前信道的RSSI值,然后采用如下規(guī)則進行信道活動狀態(tài)判斷:

          ① 如果采樣到的RSSI值大于等于閾值minSignal,那么就判定信道正被其他節(jié)點使用,即使采樣未滿N次也不再采樣,并立即通知上層協(xié)議信道正被使用。反之如果該次采樣監(jiān)測岀的值小于或等于minSignal,那么本次采樣不做任何判斷,繼續(xù)下次的采樣。

          ② 如果一直采樣到最后,且最后一次的RSSI值小于noiseLevel(噪聲強度),那么就判定信道為空閑,并給出修改閾值標志,通知上層可以發(fā)送數(shù)據(jù)。注意,只要判定為信道空閑,就要給出更新閾值標志,原因將在后面的閾值維護中說明。

          如上所述,只要采樣值大于等于minSignal,就判定信道是繁忙的,而判定信道空閑時卻要求所有的采樣都小于minSignal,且最后一次的采樣值要小于noiseLevel。然而上面兩個規(guī)則并不完善,并不能處理任何情況,以下兩種情況就不能得出結論: 最后一次采樣岀錯沒有得到RSSI值,或者最后一次采樣的RSSI值介于noiseLevel和minSignal之間。此時就必須使用擴展規(guī)則。

          2.2 信道活動狀態(tài)判斷的擴展規(guī)則

          擴展規(guī)則是為了處理基本規(guī)則不能解決的問題。擴展規(guī)則其實就是擴展m次采樣,在這m次的擴展采樣中使用對應的擴展規(guī)則來判定信道狀態(tài)。擴展規(guī)則涉及一些統(tǒng)計的方法,需要維護一個extCSVal的統(tǒng)計變量。擴展規(guī)則如下:

          ① 擴展采樣中,判定信道繁忙的規(guī)則與基本規(guī)則一樣。只要檢查到采樣RSSI值大于等于minSignal,就判定為信道忙,然后結束擴展采樣。

          ② 信道空閑的判定與基本規(guī)則不同,因為已經處于擴展采樣,所以只要檢查到采樣RSSI值小于noiseLevel,就可判定信道為空閑,同時給出更新閾值的標志。

          ③ 如果在擴展采樣中并沒有出現(xiàn)以上兩種情況,那么就必須要計算extCSVal來做判斷。先說明賦給extCSVal的初值,如果最后一次基本采樣的RSSI值介于兩閾值之間,那么直接將這個RSSI值賦給extCSVal;如果最后一次基本采樣讀取RSSI失敗,那么將第一次擴展采樣得到的介于兩閾值之間的RSSI值賦給extCSVal。如果extCSVal已經賦值,而擴展采樣中又得到了介于兩閾值之間的RSSI值,那么更新extCSVal值:extCSVal = (extCSVal + RSSI)1(即取平均值)。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(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); })();