基于FPGA無線傳感器網(wǎng)絡MAC控制器的設計[圖]
作者: 李自學胡方明任勇西安電子科技大學|出處:電子科技 | 2011-06-21 16:16:16 |閱讀:次

摘要 給出了一種由FPGA實現(xiàn)的無線傳感器網(wǎng)絡MAC控制器的設計方法,采用自頂向下的方法設計各個模塊,并在QuartusII8.0完成了仿真,該控制器主要支持IEEE802.15.4協(xié)議。測試結果表明,該MAC控制器支持20~250 kb·s-1數(shù)據(jù)傳輸速率,適應IEEE802.15.4協(xié)議要求。
媒體訪問控制(Medium Access Control,MAC)協(xié)議處于無線傳感器網(wǎng)絡協(xié)議的物理層和網(wǎng)絡層之間。用于在傳感器節(jié)點間公平有效地共享通信媒介。它完成載波偵聽多路訪問(CSMA/CA)的信道存取、協(xié)議格式成幀或解幀、自動應答、系統(tǒng)多周期定時和幀校驗等功能。
不同傳感網(wǎng)絡的應用有著不同MAC協(xié)議,其中IEEE802.15. 4是最具代表性的協(xié)議。本文給出了用FPGA的控制邏輯來實現(xiàn)無線傳感器網(wǎng)絡MAC控制器的設計方法,并最終實現(xiàn)了符合IEEE802.15.4協(xié)議的控制器。

1 總體設計方案
無線傳感器網(wǎng)絡控制器的FPGA設計包括無線傳感器網(wǎng)絡MAC子層的FPGA設計、MAC子層與上層協(xié)議的接口設計以及與物理層(PHY)的接口設計。該無線傳感器網(wǎng)絡的總體結構設計如圖1所示。整個系統(tǒng)分為發(fā)送模塊、接收模塊、CSMA/CA協(xié)處理器模塊、PHY接口模塊和MCU接口模塊5個部分。發(fā)送模塊和接收模塊主要完成MAC幀的發(fā)送和接收功能,包括MAC幀的封裝和解包,它直接提供了到外部物理層芯片(PHY)的串行接口。CSMA/CA協(xié)處理器是MAC的核心,控制接收和發(fā)送狀態(tài)機協(xié)調半雙工收發(fā)控制,并且通過程序執(zhí)行的方式完成CSMA—CA算法。

2 模塊實現(xiàn)
2.1 MAC發(fā)送模塊
發(fā)送模塊可將上層協(xié)議提供的數(shù)據(jù)封裝之后通過PHY接口發(fā)送給PHY。發(fā)送狀態(tài)機按照幀的格式將數(shù)據(jù)進行封裝,分別在數(shù)據(jù)的前端添加前導序列和幀起始分隔符以及在數(shù)據(jù)的后端添加CRC校驗值,封裝后的整個數(shù)據(jù)包以串行格式發(fā)送出去。因此,發(fā)送部分的功能包括前導序列和幀起始分隔符插入、CRC計算、幀發(fā)送和自動應答等功能。
發(fā)送模塊包括發(fā)送FIFO(First In First Out)緩存器模塊(Tx_FIFO)、發(fā)送狀態(tài)機模塊(Tx_FSM)、自動應答模塊(Tx_Ack)、發(fā)送計數(shù)器模塊(Tx_Counter)和CRC計算模塊(Tx_Crc)等5個子模塊。其內部結構如圖2所示。

2.1.1 發(fā)送狀態(tài)機Tx_FSM
Tx_FSM是整個發(fā)送模塊的狀態(tài)機,它是整個發(fā)送模塊的核心,主要用于產(chǎn)生發(fā)送過程中各個??斓目刂菩盘枴0l(fā)送的狀態(tài)轉移,如圖3所示。TxCSP_en是來自MAC控制部分CSMA/CA協(xié)處理器的發(fā)送狀態(tài)機控制信號。當TxCSP_en信號為高電平時,啟動狀態(tài)機,開始幀的發(fā)送過程。

(1)IDLE:初始狀態(tài)。當發(fā)送狀態(tài)機上電復位或者成功接收到數(shù)據(jù)包時,進入此狀態(tài)。如果收到TxCSP_en信號時,開始數(shù)據(jù)發(fā)送過程,否則,保持此狀態(tài)。
(2)Tx_Preamble:發(fā)送前導序列。當狀態(tài)機將跳變到此狀態(tài),開始向數(shù)據(jù)線上發(fā)送符合特定組合的前導碼序列。IEEE802.15.4協(xié)議的幀格式的前導序列是4 Byte O。
(3)Tx_SFD:發(fā)送幀起始分隔符。在這個狀態(tài)下開始發(fā)送幀的幀起始符,IEEE802.15.4協(xié)議的幀格式的幀起始符為10100111。同時啟動計數(shù)器,對該過程進行計數(shù)。
(4)Tx_Data:發(fā)送數(shù)據(jù)幀MPDU部分。這個狀態(tài)下發(fā)送幀的有效數(shù)據(jù),這個有效數(shù)據(jù)是來自上層。當發(fā)送完8位有效數(shù)據(jù)后,便產(chǎn)生讀取FIFO緩存信號,從接收FIFO讀取1 Byte數(shù)據(jù)。
(5)Tx_Crc:發(fā)送數(shù)據(jù)包的CRC校驗位。在這個狀態(tài)下,發(fā)送幀的16位CRC校驗碼。
(6)Tx_Ack:發(fā)送應答狀態(tài)。如果接收到的幀有應答要求,則啟動該狀態(tài)。
2.1.2 CRC校驗電路
通過使用16位CRC串行校驗來進行幀的差錯校驗,其中校驗多項式采用。將要傳送幀的MPDU通過CRC校驗模塊,便產(chǎn)生了16位CRC校驗碼。16位串行CRC校驗電路如圖4所示。

2.1.3 發(fā)送模塊的仿真結果
圖5是發(fā)送模塊的仿真結果,Tx_clk是來自PHY接口的發(fā)送時鐘,s_out是幀以串行方式發(fā)送。最先發(fā)送的前導序列碼,接下來幀起始分隔符,再就是數(shù)據(jù)位,最后是CRC檢驗位。

2.2 MAC接收模塊
接收模塊的主要功能:接收并識別從串行數(shù)據(jù)線上輸入的符合IEEE802.15.4協(xié)議格式的幀。如果協(xié)處理器RxCSP_en信號有效,則啟動數(shù)據(jù)接收過程。通過接收狀態(tài)機的控制,按幀格式順序接收不同的數(shù)據(jù)域。當接收到1 Byte數(shù)據(jù)后,且Rx_fifowrite信號有效時,數(shù)據(jù)被寫入到接收緩存RxFIFO中。
接收狀態(tài)機產(chǎn)生整個接收過程所需要的控制信號,在控制信號的作用下將接收到的幀存儲到RxFIFO。接收部分的狀態(tài)轉移如圖6所示。

(1)IDIE:初始狀態(tài)。當接收狀態(tài)機上電復位或者成功接收到幀時,進入到此狀態(tài)。收到RxCSP_en信號時,開始數(shù)據(jù)接收過程。
(2)Rx_Preamhle:接收前導序列。啟動序列檢測器,開始檢測數(shù)據(jù)線上符合IEEE802.15.4協(xié)議的序列。
(3)Rx_Length:接收數(shù)據(jù)幀長度。在這個狀態(tài)下,開始接收數(shù)據(jù)的長度,同時存入計數(shù)器寄存器。
(4)Rx_MPDU:接收數(shù)據(jù)幀MPDU部分。這個狀態(tài)下,接收幀的有效數(shù)據(jù)。每接收到1 Byte有效數(shù)據(jù)后,便產(chǎn)生接收FIFO緩存寫信號,同時將數(shù)據(jù)寫入到接收FIFO。如果接收數(shù)據(jù)CRC校驗有誤或者接收過程中發(fā)生堵塞現(xiàn)象,則狀態(tài)機退回到初始狀態(tài)。
(5)Rx_CRC_CHECK:接收CRC校驗。接收數(shù)據(jù)包的CRC校驗碼,同時啟動CRC校驗的過程。
(6)Rx_RSSI_PAD:幀末尾RSSI值填充。計算RSSI強度值,并附著CRC校驗結果,將該字節(jié)填入接收FIFO。
(7)Rx_CRC_PAD:CRC狀態(tài)和Correlation值填充。
2.3 CSMN/CA協(xié)處理器模塊
CSMA/CA協(xié)處理器是MAC控制器設計中的核心模塊。協(xié)處理器主要包括指令寄存器、4個輔助寄存器以及控制信號產(chǎn)生模塊。