基于NTP协议的数字钟设计
2010-09-13汪剑
汪 剑
(无锡科技职业学院,江苏 无锡 214028)
0 引言
在车站、机场等大型公共场所通常需要放置多个时钟,以方便旅客掌握时间。原来的各个时钟都是相互独立的,由于时钟存在精度误差,如果不定期调整时钟显示,减少误差。间隔一定时间后,时钟的误差可能达到几分钟,甚至几十分钟,这样不但不能方便旅客,反而回引起人们的困惑,甚至影响旅客的乘车。后来人们利用RS232总线或RS422总线来调整时钟经度,但由于RS232和RS422的传输距离有限,在大型公共场所应用存在一定难度。基于NTP协议,设计给予NTP协议的数字钟,利用网线将各个时钟连接到网络时间服务器上,从而实现显示时间的精确同步[1]。
1 NTP协议简介
NTP协议是Network Time Protocol的缩写,最早由美国特拉华大学的米尔斯教授设计实现,它是使使计算机时间同步化的一种协议,能够提供高精准度的时间校正,它是开放式系统互联参考模型的高层协议,符合用户数据报协议(UDP)传输协议格式,拥有专用源端口和目标端口123[2]。采用NTP协议同步系统时钟有三种工作模式。①对称模式,两个以上服务器互相进行时间信息通信,双方均可为同步对象或者被对方同步;②广播模式,此种工作模式适用于局域网内部,服务器在固定周期向客户机主动发出时间信息,客户机根据此时间信息校正系统时钟;③客户机服务器模式,客户机定时向授时服务器请求时间信息,根据双方交换的时间信息,实现客户机与授时服务器时钟的同步。一个基本的NTP包包括NTP头和四个时间戳共48字节,其中NTP头占16字节,每个时间戳8字节。NTP协议结构如图1所示。
模式字段定义如下:0-预留;1-对称行为;3-客户机;4-服务器;5-广播;6-NTP 控制信息。在客户机端发送请求时将该位添为 3,服务器响应该请求后该位被写为4。四个时间戳分别代表客户机收到响应包的时间、发送请求包的时间、服务器接到请求包的时间和服务器发送响应包的时间。利用这四个时间戳可以计算出客户机和服务器之间的时间差,利用该时间差和服务器发送响应包的时间戳可以计算出本地客户机时间,修正客户机时间,使其时间与时间服务器的时间保持一致[3]。
图1 NTP协议结构
2 电路实现
2.1 数字钟的总体设计
电路实现如图2所示,电路包括单片机、时钟芯片、网络接口、显示驱动和电源五个部分。由于单片机没有网络接口,为了实现NTP服务,采用广州致远的ZNE100T网络接口模块实现单片机的网络接口,本地时钟采用美信的 DS12887芯片,显示驱动采用奥地利微电子的8通道恒流LED驱动芯片AS1109。
图2 数字钟电路原理
2.2 网络接口设计
网络接口部分利用广州致远的嵌入式网络模块 ZNE100T来实现,该模块是串行到10M以太网络转换模块,具有传输控制协议(TCP)服务器、传输控制协议客户端、用户数据报协议和组播等作业模式,组播地址、工作端口、目标网络互联协议(IP)和端口均可设定,串行口波特率300~115 200 b/s)可设,有23个引脚,管脚定义如表1所示,在本应用中,为了实现单片机的网络通信,实际上将网络包转换为串行数据格式,电路连接只需将模块的1~4脚与RJ45的1、2、3和6脚对应连接,串口发送和串口接收连接到单片机的串行接口,另外连接电源、地线和指示灯信号即可[4]。
2.3 时钟芯片
时钟芯片采用美国美信公司的 DS12887,该芯片内含一个锂电池,断电情况运行十年以上不丢失数据,可以提供年、月、日、时、分、秒和星期信息,并具有直到 2099年的闰年补偿功能。包含4个控制寄存器、10个时钟寄存器和114个通用寄存器,DS12887出厂时,其内部晶振被关掉,以防止锂电池在芯片装入系统前被消耗。寄存器A的BIT4~BIT6为11x时打开晶振,分频链不启动,为010时打开晶振,分频链启动,500 ms后时钟更新,BIT4~BIT6的其它组合都是使晶振关闭。本设计采用 28引脚双列直插封装芯片,与单片机的并行口 P0口数据通信,片选、地址选通、数据选通和读写控制RW与单片机的P2口连接[5-6]。
表1 ZNE100T模块管脚
2.4 显示驱动
显示驱动主要由奥地利微电子的AS1109来实现,AS1109通过串行方式与单片机通信,在本设计中,利用单片机的P1口与AS1109实现数据通信,每片AS1109可以驱动8个LED,也就是一个七笔段数码管,LED驱动电流在0.5~100 mA可设,驱动电流的设定通过改变 15引脚到地之间的电阻值实现。AS1109可以串联,这样不需要单片机额外增加接口就可以驱动多个数码管显示时间。AS1109的最主要优点是它具备故障诊断能力,能够诊断LED的短路、开路和过温状态,通过串行通信方式将状态信息发送到单片机[7]。AS1109管脚如图3所示。
图3 AS1109管脚图
2.5 单片机软件设计
单片机的主要工作是检测时钟芯片的时钟寄存器,检测到时间改变后,将时间送到LED显示,同时读回LED的状态,按设定的时间间隔定期向NTP服务器发送NTP请求包和LED状态,NTP的应答包由单片机中断处理,当单片机响应中断后,由四个时间戳计算出本地时钟时间,由于该时间为1900年1月1日0时0分0秒到现在时刻的时间差,因此需要将该时间转换为年月日时分秒的形式,将该时间加1 s写入时钟芯片,同时根据时钟芯片启动后 500 ms更新的特点,控制时钟芯片的更新时机,这样能够使本地时间基本与NTP服务器的时间同步。
3 结语
利用 ZNE100T嵌入式网络模块、DS12887时钟芯片和AS1109LED驱动芯片设计了一款基于NTP协议的数字钟,该数字钟定期向NTP服务器发送请求包,利用服务器响应包的时间戳可以计算出本地客户机时间,修正客户机时间,由于采用NTP网络协议,使其时间与NTP服务器的时间保持一致。走时准确,工程安装便利,同时在监控端可以监控到连接到该网络的所有时钟的时间状态、各LED管脚的短路和断路等状态,方便时钟维护[8-10]。
[1] 汤建忠.烟草时间同步网络系统的研究与实现[J].计算机系统应用,2008(12):142-144.
[2] 赵科佳,张爱敏,宁大愚. 基于NTP协议的网络时间服务系统的实现[J].电子测试,2008(07):13-16.
[3] 汪文俊,龚育昌,朱建明. 基于UDP的局域网内时钟同步协议[J].计算机应用与软件,2007,24(05):133-135.
[4] 广州致远公司.ZNE100T说明书[EB/OL]. (2007-01-01)[2009-12-04]http://. www.zlgmcu.com.
[5] MAXIM公司.DS12887说明书[EB/OL].(2006-01-01)[2009-12-04].www.maxim-ic.com.
[6] 夏学川,侯风云. 智能节水系统中DSl2887的数据显示程序设计[J].机电设备,2008,25(05):44-47.
[7] 奥地利微电子公司. AS1109说明书[EB/OL]. (2006-04-05)[2009-12-15].http://www.austriamicrosystems.com.
[8] 贾成伟,苏淑靖,甄国涌.基于C8051F060的CAN节点的设计与应用[J]. 通信技术,2010,43(04):214-217.
[9] 吴新民.基于3G网络安全系统的入侵检测研究[J].通信技术,2010,43(08):98-100.
[10] 尚海,周渊平,莫武中.一种新型的位同步电路的设计与硬件实现[J].通信技术,2010,42(04):40-42.