基于FPGA和ZigBee的无线数据采集系统

2011-06-13 12:52王紫婷刘文博
电子测试 2011年2期
关键词:发送器波特率时钟

王 涛,王紫婷,刘文博

(兰州交通大学电子与信息工程学院,甘肃 兰州,730070)

0 引言

应用ZigBee技术和FPGA技术所研制的无线数据采集系统,克服了传统数据采集系统的缺点。目前比较实用的短距离无线通信技术包括红外、蓝牙技术以及IrDA 技术等等.综合考虑硬件设计复杂度、接口方式、开发周期、开发成本以及通信距离等因素。设计采用ZigBee技术来实现数据的无线传输。采用EP1C3T144C6来完成整个系统的控制和数据采集功能,性能大大优于传统的单片机控制数据采集系统。实验结果证明,该系统操作简单,工作稳定可靠,具有广阔的应用前景。

1 系统总体设计

由Zigbee各节点采集数据并传输至Zigbee基站,基站和FPGA之间应用串口进行通信,再将数据传送到FPGA,FPGA作为整个系统的核心控制部分,完成整个系统的数据处理和控制。如图1是系统的整体结构图。

图1 系统整体结构图

2 硬件设计

2.1 FPGA部分

1)FPGA配置

FPGA上电以后会有3个状态,首先进入配置模式(Configuration),将编程文件载入器件,在最后一个配置数据载入到FPGA以后,进入初始化模式(Initialization),这个过程中复位各类寄存器,为正常工作做准备。当初始化完成以后,随即进入用户模式(User-Mode)。在配置模式和初始化模式下FPGA的用户I/O处于高阻态(或者内部弱上拉状态),当进入用户模式时,用户I/O就将按照所设计的功能正常工作。

系统在设计中既保留了JTAG配置方式,又保留了AS配置方式,硬件配置电路图分别如图2和图3所示。在JTAG配置方式下,TCK需要下拉到地,只接一个1kΩ下拉电阻就能满足要求,TMS、TDI需要上拉到3.3V,所使用的电阻是10kΩ,这也是为了防止影响正常的配置以及工作;同样在AS配置口的设计中nCE需要下拉到地,nSTATUS、CONF_DONE和nCONFIG需要上拉到3.3V,所用的上拉电阻和下拉电阻都是l0 kΩ,这些是为了确保在使用JTAG配置或者正常使用时,这些管脚能处在一个正确的电平状态。因在本设计中采用JTAG和AS配置方式,所以将MSEL0和MSEL1接地就可以支持这两种方式 。

图2 JTAG配置方式

图3 AS配置方式

2)FPGA外围电路设计。FPGA系统一般需要多电源供电,内核电压为1.8V,外围输入/输出电压为3.3V,所以采用TI公司的TPS70451为FPGA供电,它采用5V输入,1.8V和3.3V输出,最大输出电流达2A。FPGA的时钟源电路采用外接50MHz的晶振作为Cyclone FPGA的外部时钟源。

2.2 ZigBee部分

选用TI公司的CC2430芯片。CC2430是一颗真正的系统芯片(SoC)CMOS解决方案.这种解决方案能够提高性能并满足以Zigbee为基础的2.4GHz ISM波段应用,及对低成本,低功耗的要求。它结合一个高性能2.4GHz DSSS(直接序列扩频)射频收发器核心和一颗工业级小巧高效的8051控制器 。

CC2430芯片需要很少的外围部件配合就能实现信号的收发功能。电路使用一个非平衡天线,连接非平衡变压器可使天线性能更好。电路中的非平衡变压器由电容和电感以及一个PCB微波传输线组成。内部T/R 交换电路完成LNA和PA之间的交换。用1个32 MHz的石英谐振器和2个电容构成一个32 MHz的晶振电路。用1个32.768 kHz的石英谐振器和2个电容构成一个32.768 kHz的晶振电路。电压调节器为所有要求1.8V电压的引脚和内部电源供电。引出所有可用I/O,并提供RS232串行接口,用于系统的扩充和通信等功能 。

3 软件设计

3.1 FPGA的软件实现

FPGA与ZigBee基站的串行通信,整个设计采用模块化的设计思想,可分为3个模块:FPGA波特率发生器模块,RS232接收器模块和RS232发送模块。

RS232发送器的用途是将准备输出的并行数据按照基本异步串行通信的帧格式转为TXD信号串行输出。RS232接收器接收RXD串行信号,并将其转化为并行数据,但串并转换的时钟同发送器一样处理,收发设备间的时钟是会累计的,会导致接收数据不正确,波特率发生器就是专门产生一个远远高于波特率的本地时钟信号对输入RXD不断采样,以不断地让接收器与发送器保持同步 。

1) RS232串行通信的波特率发生器

波特率发生器实际上就是一个简单的分频器,可以根据给定的系统时钟频率(晶振时钟)和要求的波特率算出波特率分频因子,已算出的波特率分频因子作为分频器的分频数。对于波特率发生器中的系数一般在FPGA实现时往往是固定的,但对于不同的实现,这个系数需要更改。波特率发生器产生的分频时钟,不是波特率时钟,而是波特率时钟的16倍,目的是为了在接收时进行精确的采样,以提出异步的串行数据 。

2) RS232串行通信的接收器

由于串行数据帧和接收时钟是异步的,由逻辑1转为逻辑0可以被视为一个数据帧的起始位。然而,为了避免毛刺的影响,能够得到正确的起始位新后,必须要求接收到的起始位在波特率时钟采样的过程中至少有一般都是属于逻辑0才可认定接收到的是起始位。由于内部采样时钟bclk周期(波特率发生器产生)是发送或接收波特率时钟频率的16倍,所

以起始位需要至少8个连续balk周期的逻辑0被接收到,才认为起始位接收到,接着数据位和奇偶校验位将每隔16个bclk周期被采样一次(即每一个波特率时钟被采样一次)。如果起始位的确是16个bclk周期长,那么接下来的数据将在每个位的中点处被采样。

3)RS232串行通信的发送器

发送器只要每隔16个bclk周期输出1个即可,次序遵循1位起始位、8位数据位和1位停止位。本设计中没有校验位,但只要改变Generic参数FrameLen,也可以加入校验位,停止位是固定的1位格式 。

3.2 ZigBee部分的软件设计

1)在ZigBee基站中首先初始化CC2430和液晶,然后程序开始初始化协议栈并打开中断。之后程序开始格式化一个网络,如果网络格式化成功,可以在液晶上或是通过串口看到格式化网络的一些信息,之后程序开始进入应用层,有节点加入网络之后,节点发送过来的数值和按键信号就会被显示在液晶上。

2)在ZigBee节点中程序同样首先初始化CC2430,然后打开传感器电源。之后初始化协议栈,就开始发送加入网络信号,等待主机响应,并给自己分配网络地址。如果加入网络成功,ZigBee节点指示灯就会点亮。如果加入失败则不亮。

加入网络成功后,Zibee节点就可以向ZigBee基站发送数据及按键值了。此后程序开始循环发送数据和按键值。Zibee节点每隔一段时间采集一次数据和扫描一次按键值,然后把数据打包再发送到Zibee基站,并开始接收应答。如果发送成功,Zibee节点回到空闲状态;如果发送不成功,Zibee节点马上重新采集一次数据再发送给基站,直到发送成功。

3)上位机软件设计

在本系统设计中,用VC开发环境来实现对FPGA采集的数据进行处理和显示等功能,上位机程序主界面如图4所示。

图4 上位机程序主界面

4 结果分析

经过实际测试,4个节点所采集的数据和实际数据如表1所示。

根据数据,除湿度测试部分需要继续改进,使其精度更为精确为,其余部分均符合设计目标。

表1 系统测试数据与实际数据比较

[1]董亚超.基于ZigBee技术的无线环境监测网络的开发[D].大连:大连理工大学,2008.

[2]文璧,张洁,徐谦.基于无线射频与FPGA技术的数据采集系统[J].中国测试,2009.

[3]王彦.基于FPGA的工程设计与应用[M].西安:西安电子科技大学出版社,2007.

[4]田春雷.基于FPGA的机房环境参量采集系统设计[D].呼和浩特:内蒙古工业大学,2007.

[5]王志华.基于FPGA的四路同步数据采集和处理系统的设计[D].南京:南京理工大学,2007.

[6]李文仲.ZIGBEE无线网络技术入门与实战[M].北京:北京航空航天大学出版社,2007:184-200.

[7]张明.基于PIC单片机和DS18B20的温度测量系统设计[J],电子测试,2010(4).

[8]孙波.基于MSP430的串口扩展设计[J].电子测试,2010(4).

猜你喜欢
发送器波特率时钟
UART 波特率检测电路的FPGA 设计算法与实现
别样的“时钟”
移频发送器冗余切换设计研究
古代的时钟
CAN 总线波特率自适应程序设计
波特率自适应的CAN驱动在嵌入式Linux下的实现①
用于获取车辆中的旋转构件的旋转角度的传感器组件
有趣的时钟
时钟会开“花”
从两起故障谈ZPW-2000发送盒报警检测的改进