基于FPGA的嵌入式ZigBee網(wǎng)關的設計與實現(xiàn)
引言
社會信息化和網(wǎng)絡化的高速發(fā)展,極大地推進了嵌入式系統(tǒng)向網(wǎng)絡化和信息化的方向發(fā)展。嵌入式設備和網(wǎng)絡的結合又使得信息共享、遠程控制、檢測、診斷、維護等變得異常簡單。由此可以看出,嵌入式設備和網(wǎng)絡的結合已經(jīng)成為現(xiàn)代發(fā)展的必然趨勢,事實上,嵌入式網(wǎng)絡技術有著極其廣泛的應用前景。
隨著 FPGA 技術的迅速發(fā)展,SOPC 作為一種特殊的嵌入式系統(tǒng),具備軟硬件在線可編程、可裁剪、可擴充、可升級的功能,因此,本設計采用基于嵌入式 SOPC 技術和 μC/OS-II 實時操作系統(tǒng),并通過在嵌入式實時操作系統(tǒng) μC/OS-II上移植 NicheStack TCP/IP Stack 網(wǎng)絡協(xié)議棧,同時加入外圍ZigBee 網(wǎng)絡的數(shù)據(jù)采集模塊,成功地實現(xiàn)了多個外圍網(wǎng)絡的實時監(jiān)控,最終完成了嵌入式網(wǎng)關系統(tǒng)的設計。
1 系統(tǒng)總體設計
本系統(tǒng)采用 FPGA + Nios II [2] 的架構,并利用 FPGA 靈活的編程特性進行設計,在其內(nèi)部配置實現(xiàn)串口控制器,使系統(tǒng)具有多串口通信能力 , 然后利用以太網(wǎng)模塊實現(xiàn)與以太網(wǎng)的通信。整個系統(tǒng)主要由 FPGA 部分、ZigBee 網(wǎng)絡部分、上位機監(jiān)控部分組成,系統(tǒng)的總體結構如圖 1 所示。由圖 1 可以看出 , 該系統(tǒng)的主要功能首先是將每個 ZigBee 無線網(wǎng)絡節(jié)點的數(shù)據(jù)傳送到自己的 ZigBee 網(wǎng)絡協(xié)調(diào)器,然后利用異步串行通信方式 [3-4] 實現(xiàn) FPGA 與多個 ZigBee 網(wǎng)絡協(xié)調(diào)器的數(shù)據(jù)通信,在 FPGA 將獲取的數(shù)據(jù)進行簡單的處理后,通過以太網(wǎng)的 Socket 通信功能實時發(fā)送到 PC上位機,從而實現(xiàn)對多個ZigBee 網(wǎng)絡的實時監(jiān)控功能。
本設計利用 ZigBee 網(wǎng)絡在無線通信方面的優(yōu)點和 FPGA的 I/O 端口多,且可自由定義其功能、自由編程支配等特點,再配以 VHDL/Verilog HDL 編寫的內(nèi)部執(zhí)行軟件和 Nios II 來進行設計,因而具有很好的靈活性、可配置性等特點。
圖1 系統(tǒng)總體結構框圖
2 系統(tǒng)硬件設計
2.1 SOPC 的設計
本系統(tǒng)的 FPGA 硬件設計基于 Altera 公司的 SOPC開發(fā)環(huán)境 SOPC Builder。Altera 公司為 SOPC 工具提供了眾多的IP 核支持,可以直接調(diào)用。本設計中采用的 Phy 芯片是千兆88E1111 PHY 芯片,并采用 Altera 提供的三倍速以太網(wǎng)控制器核,在定制界面中采用以太網(wǎng) MAC 控制器為 RGMII 模式,RGMII 采用 8 位數(shù)據(jù)接口,工作時鐘 125 MHz,因此,傳輸速率可達 1 000 Mb/s。同時兼容 MII 所規(guī)定的 10/100 Mb/s工作方式,支持的傳輸速率為 10 M/100 M/1 000 Mb/s。RGMII數(shù)據(jù)結構符合 IEEE 以太網(wǎng)標準,接口定義符合 IEEE 802.3-2000。采用 RGMII 的目的是降低電路成本,使實現(xiàn)這種接口的器件的引腳數(shù)從 25 個減少到 12 個。根據(jù)設計需要,本設計定制了多個 UART 內(nèi)核,該 UART 內(nèi)核只有 TXD 和 RXD 兩個信號,而沒有定制 RTS 和 CTS 控制信號。
將 Nios II 處理器、定時器、CFI 控制器、EPCS 控制器、PLL、片上存儲單元、JTAG UART、SGDMA 控制器,多個UART 內(nèi)核及三倍速以太網(wǎng)控制器核添加到 SOPC Builder 中所生成的 SOPC 系統(tǒng)如圖 2 所示,點擊 Generate 即可生成Nios II 系統(tǒng),然后在 Quartus II上完成頂層模塊的設計及硬件接口的連接,最后分配引腳,并編譯下載到 FPGA中,從而完成 FPGA 的硬件設計。
圖 2 SOPC系統(tǒng)配置2.2 ZigBee 網(wǎng)絡部分
ZigBee 網(wǎng)絡中一般含有三種類型的節(jié)點,即協(xié)調(diào)器、路由器和終端設備,其中協(xié)調(diào)器和路由器均為全功能設備 (FFD),而終端設備選用精簡功能設備 (RFD)。
一個 ZigBee 網(wǎng)絡有且僅有一個協(xié)調(diào)器,主要負責啟動網(wǎng)絡,配置網(wǎng)絡成員地址,維護網(wǎng)絡,維護節(jié)點的綁定關系表等,需要最多的存儲空間和計算能力。協(xié)調(diào)器接收每一個終端設備的數(shù)據(jù)信息,并通過串行通信將該網(wǎng)絡中的節(jié)點信息發(fā)送至 FPGA。
路由器主要實現(xiàn)擴展網(wǎng)絡及路由消息的功能,作為網(wǎng)絡中的潛在協(xié)調(diào)器,擴展網(wǎng)絡也就是允許更多的設備接入網(wǎng)絡。本設計采用星型網(wǎng)絡組網(wǎng),故沒有加入路由器。
終端設備不具備成為協(xié)調(diào)器或路由器的能力,一般作為網(wǎng)絡的邊緣設備,負責與實際的監(jiān)控對象相連,這種設備只與自己的父節(jié)點主動通信,將自身的傳感器信息、節(jié)點位置發(fā)送給協(xié)調(diào)器,具體的信息路由則全部交由其協(xié)調(diào)器及網(wǎng)絡中具有路由功能的協(xié)調(diào)器和路由器完成。
本設計選用 TI 公司的 CC2430 芯片是一顆真正的系統(tǒng)芯片 (SoC)CMOS 解決方案,這種解決方案能夠提高性能并滿足以 ZigBee 為基礎的 2.4 GHz ISM 波段應用 , 可滿足對低成本、低功耗的要求。使用時只需結合一個高性能 2.4 GHzDSSS( 直接序列擴頻 ) 射頻收發(fā)器核心和一顆工業(yè)級小巧高效的 8051 控制器即可。
3 系統(tǒng)的軟件設計
本文的設計軟件主要包括的內(nèi)容有:μC/OS-II 嵌入式操作系統(tǒng)的移植、NicheStack TCP/IP Stack[7] 網(wǎng)絡協(xié)議棧的實現(xiàn)以及頂層應用代碼的編寫和調(diào)試、PC 軟件客戶端的設計等。
3.1 軟件的總體設計方案
本系統(tǒng)要求通過串口通信方式實時獲取接入系統(tǒng)的協(xié)調(diào)器節(jié)點所發(fā)送的傳感器數(shù)據(jù)信息,然后通過以太網(wǎng)傳輸?shù)?PC機客戶端,PC 機客戶端負責實時監(jiān)控各個協(xié)調(diào)器節(jié)點的信息。本系統(tǒng)的總體軟件結構框圖如圖 3 所示。由于本系統(tǒng)需要調(diào)度、控制多個任務,所以必須在硬件平臺上嵌入操作系統(tǒng)。
本系統(tǒng)的軟件開發(fā)平臺使用的是 Altera 公司的 Nios II 集成開發(fā)環(huán)境 (Nios II IDE ),這個集成開發(fā)環(huán)境已經(jīng)移植了μC/OS-II嵌入式實時操作系統(tǒng)。
μC/OS-II 嵌入式實時操作系統(tǒng) [8] 是一個通用的實時操作內(nèi)核,是一個可移植、可固化、可裁剪的實時多任務內(nèi)核。μC/OS-II 嵌入式實時操作系統(tǒng)包含了任務調(diào)度、任務管理、時間管理、內(nèi)存管理、任務間通信和同步等功能,但沒有提供輸入輸出管理、文件系統(tǒng)、網(wǎng)絡等額外服務,其中任務管理是最核心的部分。
圖 3 系統(tǒng)軟件設計結構框圖3.2 軟件具體內(nèi)容
軟件框架由 3 個任務組成 : Socket Server 任務,ZigBee協(xié) 調(diào) 器 數(shù) 據(jù) 采 集 任 務 UARTnTask(),PC 命 令 調(diào) 度 任 務ControlDataTask() 和協(xié)調(diào)器數(shù)據(jù)匯集發(fā)送任務 GetDataTask()。圖 4 所示是其軟件流程圖。
圖 4 軟件流程圖
(1)Socket Server 任務
首先在程序中調(diào)用 alt_iniche_init() 和 netmain() 函數(shù)完成 NicheStack 網(wǎng)絡棧的預初始化和NicheStack 網(wǎng)絡棧的初始化和啟動,接著調(diào)用 get_mac_addr() 和 get_ip_addr() 函數(shù)設置 MAC 和 IP 地址 , 然后由標準 Socket 接口完成網(wǎng)絡操作。
(2)ZigBee 協(xié)調(diào)器數(shù)據(jù)采集任務
UARTnTask() 任務就是通過串口通信獲取每一個 ZigBee協(xié)調(diào)器的數(shù)據(jù)信息,可在 SOPC 中定制多個 UART 核,并在NIOS II 集成開發(fā)環(huán)境中采用 C 標準庫函數(shù)實現(xiàn)對 UART 的控制。其關鍵代碼如下:
void UART0Task(void *pdata)
{
FILE *UART0;
Char rec;
UART0 = fopen(“/dev/UART0”,”r+”);
while(1)
{
rec = getc(UART0); // 判斷串口接收到數(shù)據(jù)的類型
switch (rec)
{
while()
{
… // 利用狀態(tài)機原理從串口獲取完整的數(shù)據(jù)
}
…
}
OSTimeDlyHMSM (0, 0, 1, 0);
}
}
(3)ControlDataTask() 任務
該任務主要負責獲取PC上位機對協(xié)調(diào)器節(jié)點的控制命令,然后轉發(fā)給相應的的協(xié)調(diào)器。其關鍵代碼如下:
void ControlDataTask(void *pdata)
{
Mymsg *smsg; // 定義的以太網(wǎng)傳輸?shù)臄?shù)據(jù)結構
while (1)
{
smsg = OSMboxPend(Mybox,0,&error_code); //Socket Server() 任務獲取 PC 收到 PC上位機的控制命令后,利用郵箱 Mybox 傳遞給 ControlDataTask() 任務
switch (smsg->flag)
{
case‘A’:OSMboxPost(UART0box,smsg); // 將相應的控制命令信息發(fā)送給對應的協(xié)調(diào)器任務
break;
…….
}
OSTimeDlyHMSM (0, 0, 1, 0);
}
}
(4) GetDataTask()任務
該任務負責獲取當前所有協(xié)調(diào)器節(jié)點的數(shù)據(jù)信息,并通過SOCKET通信發(fā)送給PC機。
3.3系統(tǒng)測試
PC 上位機軟件可采用 Microsoft Visual Studio 2010 MFC 編寫,并利用Socket接口實現(xiàn)與FPGA的通信。首先可設定 服務器的IP地址和端口,然后點擊開啟數(shù)據(jù)采集。本試驗中 模擬了兩路ZigBee網(wǎng)絡的數(shù)據(jù)采集,圖5所示是上位機實時 監(jiān)控顯示圖。事實上,每個ZigBee網(wǎng)絡的節(jié)點位置信息和傳 感器數(shù)據(jù)信息都會模擬顯示出來,并能夠實現(xiàn)控制節(jié)點。
圖5上位機實時監(jiān)控顯示圖
4結論
隨著計算機技術和互聯(lián)網(wǎng)技術的深入發(fā)展,嵌入式網(wǎng) 關技術已經(jīng)廣泛應用于物聯(lián)網(wǎng)行業(yè)及工業(yè)監(jiān)控等領域,越來越多的設備需要網(wǎng)絡接入功能,以實現(xiàn)設備的遠程監(jiān)控。本設計將嵌入式SOPC技術、μC/OS-II實時操作系統(tǒng)和基于 NicheStack TCP/IP Stack協(xié)議的以太網(wǎng)技術結合在一起組成了 嵌入式網(wǎng)關系統(tǒng)。本設計對從底層硬件到Nios n應用軟件的 整個架構進行了設計,最后在開發(fā)板上實現(xiàn)并通過實驗驗證。
本設計方案的可配置性和靈活性具有廣泛的應用前景。
20210915_6141781faec2f__基于FPGA的嵌入式ZigBee網(wǎng)關的設計與實現(xiàn)





