王俊林,刘 宇,赵斌陶
(西安应用光学研究所 陕西 西安 710029)
随着光电侦察技术的飞速发展,并以最大的广度和深度渗透到现代军事斗争的各个领域,使其成为实现军事侦察高技术化、信息化的核心和支柱。目前,光电侦察设备正朝着适应未来复杂战场环境,进一步提高精度、分辨率,提高智能化,网络协同多种侦察设备的方向发展[1]。因此,光电侦察设备如何将大容量高速数据进行可靠的网络接入是首先需要解决的问题之一。
经过多年的发展,以太网通信的传输速率已经从最早的10 Mb/s到现在的1 Gb/s,它具有通信容量大、传输距离远,信号传输质量高、保密性好等诸多优点[2],在光电侦察信息数据传输中有着广泛的应用前景。本文以带硬件TCP/IP模块的8051控制器W7100A设计和实现了侦察设备与其他远程设备之间的光电侦察信息网络接入接口,使之遵守以太网通信规范。
光电侦察设备系统整体由采集模块、控制模块、网络模块等组成,其连接关系如图1所示。采集模块主要是采集光电传感器的图像、轴角等信息,并输出经过处理的数字信号;控制模块则主要控制各模块之间按照系统功能协调工作;网络模块主要是将数据按照以太网协议规范进行处理以实现数据的网络接入功能。系统的核心在于网络接入功能的实现,因此文中将对网络接口的设计做重点说明。
图1 系统整体设计Fig.1 The system block diagram
网络接口是为系统实现数据的网络传输服务的,主要由接口控电路和隔离耦合电路组成。在接口控制电路中,由系统控制器完成对网络芯片的控制功能;耦合隔离电路是为完善网络接口设计的,起到耦合传输和隔离保护的作用。
文中的以太网控制器采用WIZnet公司的网络微处理器W7100A,其包含一个与8051兼容的8位微处理器内核和硬件TCP/IP内核[3]。W7100A的CPU内核是一款高性能、速率优化的8位嵌入式控制器,具有64 k字节程序存储器和64 k字节数据存储器,与工业标准的8051微处理器二进制代码兼容。图 2为网络接口的电路原理图。
图2 网络接口电路原理图Fig.2 Network interface cicuit diagram
W7100A负责完成高速数据的传输工作,把数据传送给FPGA进行数据处理。W7100A的P0~P3口分别与FPGA的IO口相连接,完成与FPGA的数据传输。由于W7100A没有外部数据总线和地址总线,所以在与FPGA进行通信时用P0~P3 4个通用IO口模拟数据总线进行数据传输,且其通用IO口都没有内部上拉电阻,需要外部加上拉电阻。
网络变压器20F001N实现W7100A芯片的网络输入输出信号的隔离,构成模块的网络接口。由于网络通讯速度高达100 M,为减小电干扰,W7100A芯片的网络数据输入和输出的两对信号线要分别平行布放且不要与其他连线交叉。
因为W7100A内部嵌入一个8051兼容的MCU内核和硬件的TCP/IP内核[4],它可以不需要其它器件而独立实现以太网的应用。使用W7100A时要先进行初始化配置,初始化分3个步骤:设置8051 MCU,网络信息和内部TX/RX存储器。
3.1.1 初始化MCU
MCU的初始化包括中断设置,存储器访问时间设置和串口波特率、寄存器设置等。设置如下:
3.1.2 设置网络信息
必须设置的网络基本信息有:SHAR(本机物理地址寄存器)、GAR(网关地址寄存器)、SUBR(子网掩码寄存器)、SIPR(本机IP地址寄存器)。
为了设置重发时间,需要设置的寄存器如下:
1)RTR(重发时间寄存器),RTR的‘1’代表‘100us’。
2)RCR(重发次数寄存器)
网络信息初始化的程序如下:
3.1.3 分配SOCKET n内部TX/RX存储器大小
每一个可配置的TX/RX存储器的最大长度为16 k字节,在16 K字节的范围内,用户可以将存储器给8个SOCKET任意分配为1 k、2 k、4 k和8 k字节。但TX和RX存储器的总合不能超过16 k字节(TXmax=16 kB, RXmax=16 kB)。
图3 TX寄存器的分配Fig.3 TX memory allocation
完成W7100A的这3步初始化设置,W7100A就可以通过以太网进行数据传输。此刻,W7100A可以响应来自于网络的Ping请求。
初始化完成以后,W7100A就可以以TCP、UDP、IPRAW或MACRAW的模式打开端口,并发送和接收数据。W7100A支持8个端口以不同的方式同时进行工作。本系统选用UDP模式的多播方式工作。
UDP是无连接的通信,它的通信是不需要端口建立连接,因此它可以与多个IP地址的多个端口进行数据交换[5]。UDP协议支持单播、广播和多播等通信方式。它遵循以下通信流程。
多播是与多个、但在多播组注册的目的站点进行通信。为了使用多播通信,使用IGMP协议将目的站点列表注册到多播组。多播组包括:分组硬件地址、分组IP地址和组端口号。用户不能够更改“分组硬件地址”和“分组IP地址”。但用户可以更改“分组端口号”。
图4 UDP操作流程Fig.4 UDP operation flow
在W7100A内部,IGMP处理多播注册是由内部自动完成的。当用户以多播的模式打开端口时,“JOIN”信息将在内部自动传送。如果用户关闭端口,“LEAVE”信息将在内部自动传送。端口打开以后,“REPORT”信息将在数据传输过程中每隔一定的时间传送。
3.2.1 打开(OPEN)
在W7100 A的8个端口中选择一个端口作为多播通信的工作端口。设置Sn_DHAR0为多播组硬件地址,设置Sn_DIPR0为多播组IP地址。然后设置Sn_PORT0和Sn_DPORT0为多播组端口号,将Sn_MR (P3:P0)设置为UDP,且将Sn_MR(MULTI)设置为‘1’。最后运行OPEN命令。如果Sn_SR的状态在执行完OPEN命令后改变为SOCK_UDP,端口的打开即完成。
3.2.2 接收数据
处理接收的UDP数据,在内部RX存储器中接收的数据包格式如下:
接收的UDP数据包含8个字节的数据包信息和有效数据。数据包信息包括两个部分:发送者的信息(IP地址和端口号)和数据包的长度。UDP可以接收其它的很多UDP数据,用户可以通过发送者的信息区分UDP数据来源。它也接收以“255.255.255.255”的广播地址发送的信息。因此主机可以通过分析发送者的信息,丢掉那些不需要的数据。
如果要接收的数据长度大于端口RX存储器的剩余空间,用户将无法接收到数据,也不能够接收分片的数据。
3.2.3 发送数据
因为在端口初始化时用户设置了组播信息,用户不需要再设置目的IP和目的端口号。因此,将数据拷贝到内部TX存储器然后执行SEND命令。
3.2.4 关闭(CLOSE)
如果不需要再进行数据通信,则将端口关闭。
文中介绍了一种基于W7100A网络微处理器实现光电侦察信息网络接入的方案。由于该网络微处理器嵌入了MCU 8051内核和硬件TCP/IP内核,使用时不需要考虑以太网的控制,只需要进行简单的端口(Socket)编程[6],而且该设备外围器件较少,硬件成本低廉,实现较为简单方便,该方案具有集成度高、稳定性高、高性能和低成本的特点,具有广阔的应用前景。
[1]郑烨,张伯虎,李孔震.光电侦察装备的现状与发展前景探析[J].科技资讯,2010(1):4-6.
[2]杨磊.基于工业以太网的数控系统实时性问题研究[D].北京:中国科学技术大学,2014.
[3]WIZnet Co.,Inc.Internet embedded MCU W7100A datasheet[EB/OL].Korea:WIZnet,2012.http://www.wiznet.co.k
[4]Atmel.8051 Microcontrollers Hardware Manual[EB/OL].California:Atmel,2007.http://www.atmel.com.
[5]Richard S W,范建华,等译.TCP/IP详解卷1:协议[M].北京:机械工业出版社,2008.
[6]王伟,蓝雯飞,高伟华.用Socket实现UDP协议下的网络通信[J].软件导刊,2009,8(9):115-117.