一种基于FPGA的网络串口管理系统的设计
2019-03-10胡文斌
陈 晨,饶 卿,胡文斌
(中国船舶重工集团公司第七二四研究所,南京 211153)
0 引 言
在雷达系统中网络串口是系统内部各设备间传递控制命令、状态参数及接收信号的主要方式,需要构建以交换机为中心的雷达系统内部信息交换网络。雷达在执行各项功能任务时由雷达终端通过网络串口向系统各信息处理单元发送命令报文,各单元依据接收到的命令报文执行各项操作,同时向雷达终端反馈执行结果和设备状态参数。因此,信息传输的稳定性直接影响雷达系统各项功能任务的可靠实现。
某型号雷达系统内部通信网络系统由雷达终端计算机、网络交换机以及前端设备配置的多路输入输出板(MIO)组成,实现雷达终端与前端设备之间的通信。原设计采用报文即收即回的方式,由于网络发送报文速度快,而串口发送报文则需要一定时间。在实际应用中,当终端台发送的相邻两个报文之间间隔时间过短时,在串口处会出现第1条报文尚未回复完即需回复下一条报文的情况,从而导致串口在同一时间发送两条报文、出现相互干扰的问题,严重影响了系统工作的稳定性。本文通过深入分析该问题的产生机理,针对问题根源,合理利用系统原有硬件资源,通过对各信息处理单元MIO板内部软件进行更改,设计了一种网络串口管理系统。该系统有效解决了报文冲突的问题,实现了雷达系统内部高可靠、高灵活度的报文通信。
1 系统工作原理及问题机理分析
1.1 系统硬件组成及工作原理
在雷达内部,用于报文传递的通信系统主要由3部分组成:雷达终端、交换机和雷达前端。雷达终端发出报文经交换机传送给前端,由前端内的MIO板处理。
多路输入输出板(简称MIO板)主要用于报文的接收处理。板上主要搭载有1块FPGA和1块USR-TCP232-ED2网口模块。FPGA采用Xilinx公司的xc2s200,用于解码及串并转换等数据处理。网口模块搭载ARM处理器,用来将TCP/UDP数据包通过S232/RS485接口实现数据透明传输。
在系统的普通工作方式下,局域网以交换机为中心连接终端和前端。在每个前端内都配有1块MIO板。每块MIO板有不同的IP地址。终端发送的报文经交换机发送到MIO板,由网口模块接收后经网络串口转换进行解码、报文识别,并校验无误后根据收到的报文类型进行处理:(1)将状态或故障信息回复终端,(2)根据解出的报文内容执行相关操作。
在某种型号产品的实际要求中,要求MIO板串口进行两种报文通信串口不仅需回复收到的报文,每隔一定时间还需主动发送一条心跳报文至终端,以确认所在的信息处理单元处于正常工作的状态,工作流程如图1所示。
图1 MIO交互式通信流程原理图
为满足通信要求,MIO板的工作方式分为以下几步:(1)接收到控制报文后,对报文进行校验和解码;(2)当校验成功后,对收到的报文进行回复,(3)每隔1 s,主动向终端台发送心跳报文,(4)每次发送完成后退出发送状态,等待下一次发送。
1.2 问题机理分析
由于之前都是采用即发即收模式,即收到报文后立即发送,此次采用这种模式通信时终端有时会出现报文识别失败的情况。通过用抓包软件在发送口抓取报文,发现发送的回复报文和心跳报文有时会出现报文混杂。究其原因如下:由于收到报文即回复,回复报文具有时间上的不确定性;另一方面,在串口处接收和发送报文需要一段时间,若在串口回复报文期间同时开始进行心跳报文的发送,则在发送串口处就会出现前条报文未发完就开始发后条报文的情况,造成报文覆盖,如图2所示。
图2 报文覆盖示意图
2 网络串口管理系统实现
针对上述问题设计的网络串口管理系统,可以通过对MIO板网口发送的心跳报文、状态报文等的发送时序进行合理控制,以避免报文覆盖。通过综合考虑资源优化以及降低对终端操作反应时间的影响等因素,管理系统由前端内的MIO板实现。这样,一方面可以方便地在不同前端内的MIO板中进行更改,从而根据实际要求实现不同前端与终端的传送,而且彼此之间不会互相影响,提高了通信的独立性和灵活性;另一方面,它并不占用终端资源,实现了资源的优化配置,提高了工作效率。
2.1 报文时序控制设计
由于在设计要求中心跳报文每隔1 s发送一次,发送周期要求固定,而回复报文时间相比之下允许有一定范围内的弹性,所以可以对回复报文时间进行设计:在一个发送周期1 s内,只有在心跳报文发送的时间段内才会占用串口,影响报文回复。所以,可以将这一时间段作为繁忙时间段,进行专门处理:即在这期间,串口只用于发送心跳报文,若接收到报文,暂时禁止使用串口回复,直到繁忙时间段过后进入空闲时间段再进行回复。
在程序中,可以用回复使能实现:设心跳报文发送周期为T,心跳报文的周期零点为0,一条报文通过串口完整发送出去的时间为t,则在每个周期T里[0,t]为当前周期报文发送期,[T-t,T]为下一周期报文发送准备期。将这两个时间段作为繁忙时间段。在这期间,将回复使能置0,在其他时间段,将回复使能置1。当报文接收结束后,若发送使能为1,在进行回复之前判断回复使能,若为0则不回复,若为1则正常回复。这样,整个发送步骤为:(1)判断接收使能:为1则接收报文开始校验,若校验成功则进入步骤2,失败则丢弃报文;为0则不接收报文;(2)判断发射使能:为1则进入步骤3,为0则停留在步骤2继续等待;(3)判断回复使能:为1则执行回复,为0则停留在步骤3继续等待。程序框图如图3所示。
图3 网络串口管理系统程序框图
对于繁忙时间段的确定,需要计算一段心跳报文完整的发送时间t。在图4的时序图中可以看出,可以将这个过程分为两个阶段:周期零点到写命令下降沿的时间t1,串口发送报文字节串的时间t2。而t1又分为两个时间段:发送使能置1之前的时间t11,发送使能置1之后的时间t12。t11包含了延迟的多个工作时钟耗时,延迟的脉冲数为N1,t12包含了网口模块的写信号使能的延迟时间,延迟的脉冲数为N2。若系统中工作时钟的频率为f,则t11=N1/f,t12=N2/f。对于t2,设报文总字节数为L,波特率为B,则t2=L/B。这样,可计算出:
t=t1+t2=(N1+N2)/f+L/B
(1)
图4 报文发送时序图
在此通信系统中,心跳报文发送周期为1 s,FPGA的工作时钟为153.6 K,N1=3,N2=5,L=17,B=9 600,代入公式(1),计算出t=1 823 μs。可据此确定,在一个周期内,繁忙时间段为{[0~1.823 ms],[998.177~1 000 ms]}。
2.2 延时影响
在整个通信系统中,网络串口管理系统仅对一个发送周期内繁忙时间段的报文回复进行了延时,其余时间段均完成实时回复。在繁忙时间段内,延时会使得终端的报文接收时刻滞后,因此需要分析其造成的影响。
经计算,在每个1 s内,繁忙时间段为3.646 ms,占总时间长为3.65%;在繁忙时间段内,最长延时时间为3.65 ms。由于在终端台上,对MIO板的控制报文的发送是通过按键完成。据统计,人类单次按键反应时间基本在100 ms左右,故此网络串口管理系统造成的回复报文的延时时间远小于报文发送的按键反应时间。所以,无论从延时时间段还是最长延时时间来看,网络串口管理系统的延时都不会影响报文通信质量。
3 系统验证
用改进后的网络串口系统进行报文通信,使用TCP&UDP测试工具验证其效果:由计算机模拟雷达终端计算机前端设备MIO板模拟发送控制命令报文,采用自动发送的方式每隔10 ms发送一次状态检测报文,同时MIO板自动发送心跳报文,时间间隔1 s。在TCP&UDP测试工具接收区观察测试工具监测到的串口的报文发送情况。结果显示,连续发送1 000条控制命令报文均发送成功,并未与心跳报文出现混杂,成功率为100%。之后,在接入雷达通信系统后该系统能正常工作,再未出现报文混杂覆盖情况。
4 结束语
本文从实际雷达网络串口通信系统入手,根据雷达对内部交互式通信的高可靠性要求,在系统原有资源基础上利用前端设备包内MIO板设计实现了一种网络串口管理系统,为进一步提升交互式通信稳定性提供了设计思路。