不同傳感網絡的應用有著不同MAC協議,其中IEEE802.15. 4是最具代表性的協議。本文給出了用FPGA的控制邏輯來實現無線傳感器網絡MAC控制器的設計方法,并最終實現了符合IEEE802.15.4協議的控制器。
1 總體設計方案
無線傳感器網絡控制器的FPGA設計包括無線傳感器網絡MAC子層的FPGA設計、MAC子層與上層協議的接口設計以及與物理層(PHY)的接口設計。該無線傳感器網絡的總體結構設計如圖1所示。整個系統分為發送模塊、接收模塊、CSMA/CA協處理器模塊、PHY接口模塊和MCU接口模塊5個部分。發送模塊和接收模塊主要完成MAC幀的發送和接收功能,包括MAC幀的封裝和解包,它直接提供了到外部物理層芯片(PHY)的串行接口。CSMA/CA協處理器是MAC的核心,控制接收和發送狀態機協調半雙工收發控制,并且通過程序執行的方式完成CSMA—CA算法。
2 模塊實現
2.1 MAC發送模塊
發送模塊可將上層協議提供的數據封裝之后通過PHY接口發送給PHY。發送狀態機按照幀的格式將數據進行封裝,分別在數據的前端添加前導序列和幀起始分隔符以及在數據的后端添加CRC校驗值,封裝后的整個數據包以串行格式發送出去。因此,發送部分的功能包括前導序列和幀起始分隔符插入、CRC計算、幀發送和自動應答等功能。
發送模塊包括發送FIFO(First In First Out)緩存器模塊(Tx_FIFO)、發送狀態機模塊(Tx_FSM)、自動應答模塊(Tx_Ack)、發送計數器模塊(Tx_Counter)和CRC計算模塊(Tx_Crc)等5個子模塊。其內部結構如圖2所示。
2.1.1 發送狀態機Tx_FSM
Tx_FSM是整個發送模塊的狀態機,它是整個發送模塊的核心,主要用于產生發送過程中各個??斓目刂菩盘?。發送的狀態轉移,如圖3所示。TxCSP_en是來自MAC控制部分CSMA/CA協處理器的發送狀態機控制信號。當TxCSP_en信號為高電平時,啟動狀態機,開始幀的發送過程。
(1)IDLE:初始狀態。當發送狀態機上電復位或者成功接收到數據包時,進入此狀態。如果收到TxCSP_en信號時,開始數據發送過程,否則,保持此狀態。
(2)Tx_Preamble:發送前導序列。當狀態機將跳變到此狀態,開始向數據線上發送符合特定組合的前導碼序列。IEEE802.15.4協議的幀格式的前導序列是4 Byte O。
(3)Tx_SFD:發送幀起始分隔符。在這個狀態下開始發送幀的幀起始符,IEEE802.15.4協議的幀格式的幀起始符為10100111。同時啟動計數器,對該過程進行計數。
(4)Tx_Data:發送數據幀MPDU部分。這個狀態下發送幀的有效數據,這個有效數據是來自上層。當發送完8位有效數據后,便產生讀取FIFO緩存信號,從接收FIFO讀取1 Byte數據。
(5)Tx_Crc:發送數據包的CRC校驗位。在這個狀態下,發送幀的16位CRC校驗碼。
(6)Tx_Ack:發送應答狀態。如果接收到的幀有應答要求,則啟動該狀態。
2.1.2 CRC校驗電路
通過使用16位CRC串行校驗來進行幀的差錯校驗,其中校驗多項式采用。將要傳送幀的MPDU通過CRC校驗模塊,便產生了16位CRC校驗碼。16位串行CRC校驗電路如圖4所示。
2.1.3 發送模塊的仿真結果
圖5是發送模塊的仿真結果,Tx_clk是來自PHY接口的發送時鐘,s_out是幀以串行方式發送。最先發送的前導序列碼,接下來幀起始分隔符,再就是數據位,最后是CRC檢驗位。
2.2 MAC接收模塊
接收模塊的主要功能:接收并識別從串行數據線上輸入的符合IEEE802.15.4協議格式的幀。如果協處理器RxCSP_en信號有效,則啟動數據接收過程。通過接收狀態機的控制,按幀格式順序接收不同的數據域。當接收到1 Byte數據后,且Rx_fifowrite信號有效時,數據被寫入到接收緩存RxFIFO中。
接收狀態機產生整個接收過程所需要的控制信號,在控制信號的作用下將接收到的幀存儲到RxFIFO。接收部分的狀態轉移如圖6所示。
(1)IDIE:初始狀態。當接收狀態機上電復位或者成功接收到幀時,進入到此狀態。收到RxCSP_en信號時,開始數據接收過程。
(2)Rx_Preamhle:接收前導序列。啟動序列檢測器,開始檢測數據線上符合IEEE802.15.4協議的序列。
(3)Rx_Length:接收數據幀長度。在這個狀態下,開始接收數據的長度,同時存入計數器寄存器。
(4)Rx_MPDU:接收數據幀MPDU部分。這個狀態下,接收幀的有效數據。每接收到1 Byte有效數據后,便產生接收FIFO緩存寫信號,同時將數據寫入到接收FIFO。如果接收數據CRC校驗有誤或者接收過程中發生堵塞現象,則狀態機退回到初始狀態。
(5)Rx_CRC_CHECK:接收CRC校驗。接收數據包的CRC校驗碼,同時啟動CRC校驗的過程。
(6)Rx_RSSI_PAD:幀末尾RSSI值填充。計算RSSI強度值,并附著CRC校驗結果,將該字節填入接收FIFO。
(7)Rx_CRC_PAD:CRC狀態和Correlation值填充。
2.3 CSMN/CA協處理器模塊
CSMA/CA協處理器是MAC控制器設計中的核心模塊。協處理器主要包括指令寄存器、4個輔助寄存器以及控制信號產生模塊。通過指令寄存器、4個輔助寄存器與系統CPU接口的功能。同時,控制信號產生模塊產生MAC控制器發送和接收模塊所需要的控制信號。
MAC控制器包括4種工作狀態:
(1)睡眠狀態:在該狀態下,除協處理器模塊外,所有子模塊的時鐘都將停止,從而降低功耗。只有當協處理器執行發送使能指令或接收使能指令時,才離開睡眠狀態。
(2)發送狀態:當協處理器執行發送使能指令時,進入發送狀態。如果一幀發送完成,則自動轉入接收狀態。
(3)接收狀態:當協處理器執行接收使能指令時,進入接收狀態。因為接收狀態是主要的工作狀態,所以在成功接收完一幀或幀校驗失敗后依然處于接收狀態。
(4)發送應答幀狀態:當協處理器執行應答指令時,進入到此狀態。
無論在那種狀態,一旦執行了休眠指令,控制器立即進入睡眠狀態。
2.4 接口模塊
接口模塊分為和系統MCU的特殊功能寄存器接口以及和與物理層芯片的物理接口。MCU要想控制MAC控制器的運行,就必須采用一種接口與它進行通信,本文采用SPI接口。
SPI(Serial Peripheral Interface)是一種串行外圍設備接口,是Motorola首先在其MC68HCXX系列處理器上定義的。優點如下:第一,它是一種高速的,全雙工,同步的通信總線;第二,它只占用4根線,節約了芯片的管腳,同時為PCB的布局上節省空間。SPI接口主要應用在EEPROM,Flash,實時時鐘,A/D轉換器,還有數字信號處理器和數字信號解碼器之間。
SPI的通信原理:它以主從方式工作,這種模式通常有一個主設備,一個或多個從設備,需要至少4根線。
(1)SEL:從設備使能信號,由主設備控制。
(2)MOSI:主設備數據輸出,從設備數據輸入。
(3)MISO:主設備輸入,從設備數據輸出。
(4)SCLK:時鐘信號,由主設備產生。
其中,SEL是控制芯片是否被選中,也就是說只有片選信號為預先規定的使能信號時,對此芯片的操作才有效。這就允許在同一總線上連接多個SPI設備成為可能。由SCLK提供時鐘脈沖,MOSI和MISO則基于此脈沖完成數據傳輸。數據輸出通過MOSI,MISO線,數據在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取,完成一位數據傳輸。輸入也使用同樣的原理。這樣,在至少8次時鐘信號改變內,就可以完成8位數據的傳輸。MAC控制器采取的是上升沿接收、下降沿發送、高位先發送。
3 綜合結果
本設計采用Verilog語言,FPGA芯片使用Altera公司的Cyclone,整個設計都是在Altera公司的Quartus8.0下進行綜合、布局布線以及仿真。表1是綜合結果。
4 結束語
本文給出了完全用FPGA實現無線傳感器網絡MAC控制器的設計方法,該方法只需外接物理層芯片和MCU便可完成網絡功能。從而有效降低了成本,減少了版面積,提高了整個系統的集成度。