基于FPGA的嵌入式ZigBee网关的设计与实现
扫描二维码
随时随地手机看文章
引言
社会信息化和网络化的高速发展,极大地推进了嵌入式系统向网络化和信息化的方向发展。嵌入式设备和网络的结合又使得信息共享、远程控制、检测、诊断、维护等变得异常简单。由此可以看出,嵌入式设备和网络的结合已经成为现代发展的必然趋势,事实上,嵌入式网络技术有着极其广泛的应用前景。
随着 FPGA 技术的迅速发展,SOPC 作为一种特殊的嵌入式系统,具备软硬件在线可编程、可裁剪、可扩充、可升级的功能,因此,本设计采用基于嵌入式 SOPC 技术和 µC/OS-II 实时操作系统,并通过在嵌入式实时操作系统 µC/OS-II上移植 NicheStack TCP/IP Stack 网络协议栈,同时加入外围ZigBee 网络的数据采集模块,成功地实现了多个外围网络的实时监控,最终完成了嵌入式网关系统的设计。
1 系统总体设计
本系统采用 FPGA + Nios II [2] 的架构,并利用 FPGA 灵活的编程特性进行设计,在其内部配置实现串口控制器,使系统具有多串口通信能力 , 然后利用以太网模块实现与以太网的通信。整个系统主要由 FPGA 部分、ZigBee 网络部分、上位机监控部分组成,系统的总体结构如图 1 所示。由图 1 可以看出 , 该系统的主要功能首先是将每个 ZigBee 无线网络节点的数据传送到自己的 ZigBee 网络协调器,然后利用异步串行通信方式 [3-4] 实现 FPGA 与多个 ZigBee 网络协调器的数据通信,在 FPGA 将获取的数据进行简单的处理后,通过以太网的 Socket 通信功能实时发送到 PC上位机,从而实现对多个ZigBee 网络的实时监控功能。
本设计利用 ZigBee 网络在无线通信方面的优点和 FPGA的 I/O 端口多,且可自由定义其功能、自由编程支配等特点,再配以 VHDL/Verilog HDL 编写的内部执行软件和 Nios II 来进行设计,因而具有很好的灵活性、可配置性等特点。
图1 系统总体结构框图
2 系统硬件设计
2.1 SOPC 的设计
本系统的 FPGA 硬件设计基于 Altera 公司的 SOPC开发环境 SOPC Builder。Altera 公司为 SOPC 工具提供了众多的IP 核支持,可以直接调用。本设计中采用的 Phy 芯片是千兆88E1111 PHY 芯片,并采用 Altera 提供的三倍速以太网控制器核,在定制界面中采用以太网 MAC 控制器为 RGMII 模式,RGMII 采用 8 位数据接口,工作时钟 125 MHz,因此,传输速率可达 1 000 Mb/s。同时兼容 MII 所规定的 10/100 Mb/s工作方式,支持的传输速率为 10 M/100 M/1 000 Mb/s。RGMII数据结构符合 IEEE 以太网标准,接口定义符合 IEEE 802.3-2000。采用 RGMII 的目的是降低电路成本,使实现这种接口的器件的引脚数从 25 个减少到 12 个。根据设计需要,本设计定制了多个 UART 内核,该 UART 内核只有 TXD 和 RXD 两个信号,而没有定制 RTS 和 CTS 控制信号。
将 Nios II 处理器、定时器、CFI 控制器、EPCS 控制器、PLL、片上存储单元、JTAG UART、SGDMA 控制器,多个UART 内核及三倍速以太网控制器核添加到 SOPC Builder 中所生成的 SOPC 系统如图 2 所示,点击 Generate 即可生成Nios II 系统,然后在 Quartus II上完成顶层模块的设计及硬件接口的连接,最后分配引脚,并编译下载到 FPGA中,从而完成 FPGA 的硬件设计。
图 2 SOPC系统配置2.2 ZigBee 网络部分
ZigBee 网络中一般含有三种类型的节点,即协调器、路由器和终端设备,其中协调器和路由器均为全功能设备 (FFD),而终端设备选用精简功能设备 (RFD)。
一个 ZigBee 网络有且仅有一个协调器,主要负责启动网络,配置网络成员地址,维护网络,维护节点的绑定关系表等,需要最多的存储空间和计算能力。协调器接收每一个终端设备的数据信息,并通过串行通信将该网络中的节点信息发送至 FPGA。
路由器主要实现扩展网络及路由消息的功能,作为网络中的潜在协调器,扩展网络也就是允许更多的设备接入网络。本设计采用星型网络组网,故没有加入路由器。
终端设备不具备成为协调器或路由器的能力,一般作为网络的边缘设备,负责与实际的监控对象相连,这种设备只与自己的父节点主动通信,将自身的传感器信息、节点位置发送给协调器,具体的信息路由则全部交由其协调器及网络中具有路由功能的协调器和路由器完成。
本设计选用 TI 公司的 CC2430 芯片是一颗真正的系统芯片 (SoC)CMOS 解决方案,这种解决方案能够提高性能并满足以 ZigBee 为基础的 2.4 GHz ISM 波段应用 , 可满足对低成本、低功耗的要求。使用时只需结合一个高性能 2.4 GHzDSSS( 直接序列扩频 ) 射频收发器核心和一颗工业级小巧高效的 8051 控制器即可。
3 系统的软件设计
本文的设计软件主要包括的内容有:µC/OS-II 嵌入式操作系统的移植、NicheStack TCP/IP Stack[7] 网络协议栈的实现以及顶层应用代码的编写和调试、PC 软件客户端的设计等。
3.1 软件的总体设计方案
本系统要求通过串口通信方式实时获取接入系统的协调器节点所发送的传感器数据信息,然后通过以太网传输到 PC机客户端,PC 机客户端负责实时监控各个协调器节点的信息。本系统的总体软件结构框图如图 3 所示。由于本系统需要调度、控制多个任务,所以必须在硬件平台上嵌入操作系统。
本系统的软件开发平台使用的是 Altera 公司的 Nios II 集成开发环境 (Nios II IDE ),这个集成开发环境已经移植了µC/OS-II嵌入式实时操作系统。
µC/OS-II 嵌入式实时操作系统 [8] 是一个通用的实时操作内核,是一个可移植、可固化、可裁剪的实时多任务内核。µC/OS-II 嵌入式实时操作系统包含了任务调度、任务管理、时间管理、内存管理、任务间通信和同步等功能,但没有提供输入输出管理、文件系统、网络等额外服务,其中任务管理是最核心的部分。
图 3 系统软件设计结构框图3.2 软件具体内容
软件框架由 3 个任务组成 : Socket Server 任务,ZigBee协 调 器 数 据 采 集 任 务 UARTnTask(),PC 命 令 调 度 任 务ControlDataTask() 和协调器数据汇集发送任务 GetDataTask()。图 4 所示是其软件流程图。
图 4 软件流程图
(1)Socket Server 任务
首先在程序中调用 alt_iniche_init() 和 netmain() 函数完成 NicheStack 网络栈的预初始化和NicheStack 网络栈的初始化和启动,接着调用 get_mac_addr() 和 get_ip_addr() 函数设置 MAC 和 IP 地址 , 然后由标准 Socket 接口完成网络操作。
(2)ZigBee 协调器数据采集任务
UARTnTask() 任务就是通过串口通信获取每一个 ZigBee协调器的数据信息,可在 SOPC 中定制多个 UART 核,并在NIOS II 集成开发环境中采用 C 标准库函数实现对 UART 的控制。其关键代码如下:
void UART0Task(void *pdata)
{
FILE *UART0;
Char rec;
UART0 = fopen(“/dev/UART0”,”r+”);
while(1)
{
rec = getc(UART0); // 判断串口接收到数据的类型
switch (rec)
{
while()
{
… // 利用状态机原理从串口获取完整的数据
}
…
}
OSTimeDlyHMSM (0, 0, 1, 0);
}
}
(3)ControlDataTask() 任务
该任务主要负责获取PC上位机对协调器节点的控制命令,然后转发给相应的的协调器。其关键代码如下:
void ControlDataTask(void *pdata)
{
Mymsg *smsg; // 定义的以太网传输的数据结构
while (1)
{
smsg = OSMboxPend(Mybox,0,&error_code); //Socket Server() 任务获取 PC 收到 PC上位机的控制命令后,利用邮箱 Mybox 传递给 ControlDataTask() 任务
switch (smsg->flag)
{
case‘A’:OSMboxPost(UART0box,smsg); // 将相应的控制命令信息发送给对应的协调器任务
break;
…….
}
OSTimeDlyHMSM (0, 0, 1, 0);
}
}
(4) GetDataTask()任务
该任务负责获取当前所有协调器节点的数据信息,并通过SOCKET通信发送给PC机。
3.3系统测试
PC 上位机软件可采用 Microsoft Visual Studio 2010 MFC 编写,并利用Socket接口实现与FPGA的通信。首先可设定 服务器的IP地址和端口,然后点击开启数据采集。本试验中 模拟了两路ZigBee网络的数据采集,图5所示是上位机实时 监控显示图。事实上,每个ZigBee网络的节点位置信息和传 感器数据信息都会模拟显示出来,并能够实现控制节点。
图5上位机实时监控显示图
4结论
随着计算机技术和互联网技术的深入发展,嵌入式网 关技术已经广泛应用于物联网行业及工业监控等领域,越来越多的设备需要网络接入功能,以实现设备的远程监控。本设计将嵌入式SOPC技术、µC/OS-II实时操作系统和基于 NicheStack TCP/IP Stack协议的以太网技术结合在一起组成了 嵌入式网关系统。本设计对从底层硬件到Nios n应用软件的 整个架构进行了设计,最后在开发板上实现并通过实验验证。
本设计方案的可配置性和灵活性具有广泛的应用前景。
20210915_6141781faec2f__基于FPGA的嵌入式ZigBee网关的设计与实现