APP下载

浅谈一种基于FPGA的双冗余422串口通信方法及实现

2020-10-09孙广海

科学与信息化 2020年27期
关键词:正确性实时性

孙广海

摘 要 对于任何设备而言,无不重视对外交互接口的时效性和正确性。如何在有限的资源条件下保证通信的实时性和正确性成了通信设计的关注重点。本文介绍了一种基于FPGA实现双冗余422串口通信方法。

关键词 FPGA;双冗余;实时性;正确性

1技术领域

本方法涉及电子对抗领域,尤其是电子对抗中与外部接口通信处理,具体而言涉及一种基于FPGA的双冗余422串口通信方法设计。

本方法提供一种基于FPGA的双冗余RS422通信方法及实现,该方法采用FPGA实现了双路RS422串口通信的冗余备份,同时解决了每路RS422串口通信的主/从应答机制,提高了通信的实时性,同时降低了应用层任务处理资源的消耗[1]。

2背景技术

在现代电子对抗中,无论对于哪种系统设备而言,与外部接口通信都是关键环节。接收外部命令消息,上报自身设备信息都必须依赖于外部接口,所以外部接口通信尤其要保证稳定、高效。随着近年来电子技术的发展,雷达体制和信号形式变得越来越复杂而多样,战场空间电磁密度不断提升。各型设备上报的信息越来越复杂,数据量越来越大,对外部接口设计的实时性要求越来越高。而由于受限与平台总线形式和外部接口通信协议,通信方法设计难度随之提升,且重要性不言而喻。下面介绍某型平台上某型设备对外通信方法设计。

该型直升机机上配置的是RS422总线,机上综合任务系统与某型设备系统(以下简称设备系统)通过两路RS422实现通信,两路RS422为双冗余关系。为实现每路RS422通信的可靠性,定义通信协议为点对点的主/从应答式全双工422通信(传输周期50ms),综合任务系统为主端,设备系统为从端。主端主动发送通信消息,从端在接收到主端发送的消息时,按照消息块号判断主端发送报文的正确性,正确则发送自身需上报的消息,主端接收到从端发送的消息报文时,根据从端发送的消息块号判断从端发送报文的正确性,正确则发送下一包报文,否则,重新发送当前报文。

若在设备系统软件应用层实现如此通信机制,则对设备系统处理资源提出很大需求,最主要是CPU的占用率,占用大量CPU时间资源来处理422消息接收和422消息发送,由于其他任务运行优先级低于接口通信任务,导致其他任务无法抢占CPU运行时间,导致信息上报不及时。同时,由于CPU资源被占,导致通信接口接收消息和发送消息处理不及时,影响接口通信的实时性和准确性,接口通信低效。

为解决接口通信任务处理低效、实时性差的问题,我们采用FPGA来实现双冗余和主/从应答通信机制的处理,释放设备系统CPU资源用于其他数据处理。

现有的接口通信任务处理是在应用层运行两个通信接收处理任务,每个接收任务处理一路RS422数据,两个任务同时接收对应RS422链路数据,根据链路状态,判别双冗余特性,决定数据主路和辅路,主路实时接收422链路发送的字节数据,接收完整一个数据报文后,进行校验和消息块号的合法性判断,数据判断正确后发送给数据处理任务进行数据处理;辅路实时接收422链路数据,并判断数据类型是否为首次握手报文,若为首次握手报文则发送给应用层数据处理任务处理,否则抛弃当前数据报文。当主路通信故障时,则处理辅路报文数据,当主路恢复正常通信后,再恢复主路数据处理。同时应用层运行一个数据发送任务,将待发送的数据缓存在FIFO中,数据接收任务接收到一个正确的通信报文后,将消息块号传递给发送任务,发送任务根据当前消息块号将需发送的数据报文发送给综合任务系统,实现通信机制的主/从应答。数据发送任务将数据同时发送给两路RS422,数据保持一致。

上述通信方法是基于应用层任务的处理方法,能实现双冗余422主/从应答式通信,但在实际设备使用中主要存在以下问题:

(1)要处理两路422接口数据接收和一路数据发送,需运行两个数据接收任务和一个数据处理任务,增加了任务数量,增加了任务调度时间消耗;

(2)由于双冗余特性,两个接收任务必须实时接收数据处理,但只处理主路数据,主路通信故障时,才处理辅路数据,导致任务运行低效;

(3)由于通信机制发送周期为50ms,当无应用数据发送时,发送的是纯通信包,用以保证通信链路的正常,两个数据接收任务周期性读取数据,应用层回复纯通信包,任务运行效率较低;

(4)由于两个数据接收任务是通过CPU时间抢占式调度,两者任务不能同时运行,影响的数据接收处理的实时性;

(5)由于数据接收任务和发送任务优先级较其他任务优先级高,尤其是信号处理任务,导致其他任务抢占不到CPU运行资源或运行资源不足,导致信号处理无法完成,影响设备告警或侦察。

综上所述,对应用层任务处理双冗余422主/从应答式通信方法进行工程优化改进并实现,是设备适应平台总线形式和通信机制的迫切需要,它的实现可以提高对外通信的效率和实时性,同时提高了应用层任务资源使用率[2]。

3方法内容

本方法目的在于提供一种基于FPGA的双冗余422通信方法及实现,通过FPGA的并行处理,实现双冗余422的同步判断,实现通信的实时性;同时根据接收到的消息块号将需要发送的消息报文发送给综合任务系统,实现了每路422通信的主/從应答;在FPGA层实现纯通信报文的回复,只将应用消息发送给应用层,保证了通信传输的高效性。

本方法的另一目的在于降低了应用层任务数量,同时去除了应用层中运行优先级高且高频率重复运行的任务,降低了CPU的使用负荷,提高了信号处理效率。

为达成上述目的,本方法所采用的技术方案如下:

建立两个独立的接收FIFO,实时接收两路422串口数据;

建立一个发送FIFO,用于存放应用层需发送的消息数据;

建立一个RAM,用于存放接收消息中消息块号,默认初始化为0;

设定主路和辅路标记,实时接收两路数据,优先处理主路数据,同时判断辅路数据是否为“首次握手”命令,若为“首次握手”命令,则将消息报文发送给应用层,否则抛弃当前报文;

实时判断两路422通信状态,当任意一路连续5个周期内未接收到数据时,则判断该链路通信故障,并将故障信息发送给应用层,当一路通信故障时,调用另一路的数据;

判断接收数据长度,校验和消息块号,若报文正确,则将消息块号放入RAM中;

判断报文类型,若为纯通信包,则判断发送FIFO中是否为空,若为空,则读取RAM中消息块号,发送纯通信包给综合任务系统,若不为空,则读取发送FIFO中的一个报文消息和RAM中消息块号,发送给综合任务系统;

若接收报文为应用消息,则将应用消息发送给应用层;

接收应用层发送的上报数据,放入发送FIFO缓存中;

进一步的实施例中,所述的“首次握手”命令在FPGA层做一级判断,当两条链路同时收到“首次握手”命令时,只发送一次“首次握手”命令给应用层[3]。

4具体实施方式

为了更了解本方法的技术内容,特举具体实施例说明如下。

第一步为链路状态判断流程,其实现包括以下步骤:

(1)设计两个FIFO存储器,用以存储两路422链路发送的数据;

(2)设计一个RAM存储器,用于存储接收消息的消息块号,Ram存储器设置为连续读写模式;

(3)每50ms检查FIFO存储器中是否有数据,若有数据,则读取相应数据进行后续数据处理,若没有数据,则统计周期次数,若连续5个周期FIFO中无数据,则将故障信息上报应用层。

第二步为双冗余判别流程,其实现包括以下步骤:

(1)检查FIFO1中是否有数据,若有数据,则判断FIFO2中数据类型;

(2)若FIFO2中数据类型为“首次握手”,则判断FIFO1中数据类型,若FIFO1中数据为“首次握手”,则处理FIFO1中数据;

(3)若FIFO1中数据类型不是“首次握手”,则优先处理FIFO2中数据,再处理FIFO1中数据;

(4)若步骤b中FIFO2中数据类型不是“首次握手”,则处理FIFO1中数据;

(5)若步骤a中FIFO1中无数据,则处理FIFO2中数据。

第三步为主/从应答机制判断,其实现包括以下步骤:

(1)判断FIFO中处理数据的长度、消息头、检验和等是否正确,若不正确,则抛弃当前报文;

(2)若步驟a中FIFO中数据正确,则判断报文中消息块号与Ram中消息块号是否连续,若不连续,则抛弃当前报文;

(3)若步骤b中消息块号连续,则对报文数据进行处理。

5验证说明

经验证:该方法实现了双冗余主/从应答式通信;解决了系统软件处理时间和处理资源不足的问题;同时保证了数据传输时的可靠性与实时性。

参考文献

[1] 徐光辉,程东旭,黄如,等.基于FPGA的嵌入式开发及应用[M].北京:电子工业出版社,2006:109.

[2] 巫忠跃,岳青,王奥.基于FPGA的短波通信信道多径效应模拟[J].通信技术,2019(11):2808-2812.

[3] 赵龙,汪弈舟,黄明.可见光通信系统设计与实现—基于FPGA全数字控制[J].工业技术创新,2019(6):38-42.

猜你喜欢

正确性实时性
从寻常计算错例看课堂教学的缺失
浅谈如何提高水质检测结果准确性
计算机控制系统实时性的提高策略
“正确性”与“实用性”的初探
可编程控制器的实时处理器的研究
基于B/S的实时用户行为检测管理系统设计与实现
实现FPGA与PC的串行通信