通讯链路物理层故障注入系统开发与实现
2022-10-21武修文
武修文
(上海创景信息科技有限公司,上海 201203)
引言
故障注入测试系统是一套对通讯链路进行系统级故障注入的设备。针对部分应用场景下,通信总线出现故障时无法定位的情况,研发了此套系统。该系统适用于航天航空、国防科工、舰船、车辆电子等领域,同时可独立运行于目标系统之外,以精准、便捷的方式,验证目标系统的容错性、稳定性和健壮性。
1 物理层故障注入整体方案设计
整个物理层故障注入系统是以串行方式接入到正常通讯的传输线路中,根据用户定制的故障类型和故障触发策略注入各种故障[1]。系统能够对通信总线进行单一方向的物理层故障注入以及故障注入前后总线数据的采集和上传。
1.1 系统硬件框图
系统主要由3 个部分组成(见图1),指令板负责通过网口与上位机通信以及故障注入指令的下发;物理层故障注入底板用于执行物理层故障注入,同时通信总线的输入输出接口和PHY 板也在该板上;物理层故障注入继电器板是物理层故障注入的具体实施单元。
图1 系统硬件框图
1.2 指令板设计
指令板是整个系统的控制单元,必须具有能够进行分析判断的控制核心,以及大量且灵活的IO。故采用了XILINX 公司的ZYNQ 系列SoC XC7Z045。
其中,PL 侧主要实现以下两个方面:
(1) 对物理层故障注入配置信息的下发。
(2) 接收总线经过PHY 芯片转换后的总线信息,利用该信息对总线进行帧解析且按照帧解析的内容实现物理层故障注入的触发及总线通信方向的控制。对于PS 侧,通过网口与上位机通信,接收上位机的配置信息,上传总线数据。
1.3 底板设计
底板在整个系统具有承上启下的关键作用,见图2,主要实现以下5 个功能:
图2 物理层故障注入底板硬件框图
1.3.1 物理层故障注入的执行单元
执行单元采用多个低成本的FPGA 按照配置指令和触发线状态,对用于具体实现故障注入的继电器和模拟开关进行控制。
1.3.2 通信总线的对外接口
总线对外接口为图2 中的“PORT-IN”和“PORT-OUT”。线1 和线2 为差分线对,是全双工总线的前向信号线或半双工总线的信号线;线3 为总线信号地线,通过磁珠与系统地相连;线4 和线5 是全双工总线的反向信号线,在板上进行了短路连接,使得全双工总线反向信号对于主从机可直接通信。
1.3.3 半双工总线通信方向控制单元
对于半双工总线的通信方向控制是系统设计的一个技术难点。采用图2 中高速模拟开关S1、S2 和S3 构成的半双工总线的通信方向控制单元来实现此功能,开关动作由指令板进行控制[2]。对于模拟开关的选型主要考虑其带宽、开关时间和输入电压范围(由电源电压决定)。
1.3.4 PHY 信号传输单元
该部分主要为两个板对板连接器用于连接PHY 板,将PHY 板的信号线连接至目标处。
1.3.5 外部信号及噪音信号产生单元
单元主要为由FPGA 控制的DA 及DA信号处理电路组成的信号发生器,作为噪音信号用于故障注入。
1.4 继电器板设计
实现全部物理层故障注入功能指标共需要继电器和高速模拟开关近500 个,占用大量面积,需单独设计电路板。该板面积较大,可承载大量元器件,通过连接器及固定孔架空于底板于指令板之上。
1.5 PHY 板设计
PHY 板与底板相连,可按照用户所使用的总线类型,更换其上面的PHY 芯片。
2 物理层故障注入的具体实现
物理层故障注入类型设计主要模拟通信总线上常见的线路故障,设计了“信号线开路”“信号线短路”“串联阻抗”“并联阻抗”“噪音耦合”“外部信号叠加与替换”6 种故障模式,6 种故障模式间可自由组合。
2.1 物理层故障类型的实现
2.1.1 信号线开路与信号线短路故障注入的实现
如图3 所示,这两种故障类型属于动态故障注入,是模拟通信总线突然出现的信号线开路或短路情况。故障执行模块检测到来自于指令板的故障触发线为高时,便按照故障注入的配置信息将相应的模拟开关在设定的时间范围内进行打开或闭合操作。
图3 信号线开路(左)、信号线短路(右)
2.1.2 信号线串行阻抗和信号线并行阻抗故障注入的实现
如图4 所示,串行阻抗和并行阻抗故障注入用于模拟通信总线的物理线路上不同阻抗大小对信号产生的影响,其属于静态故障注入,即无故障触发机制,电阻值在故障注入配置信息下发后就设置完成,通信总线在整个通信过程中均处于该故障模式下。
图4 信号线串行阻抗(左)、信号线并行阻抗(右)
2.1.3 外部信号替换叠加及噪音耦合故障注入设计
该故障注入模块为动态故障注入方式,可模拟通信总线在外部信号干扰下的通信。其作为一个整体只能供一路总线使用,图5(a)为外部信号叠加或替换的示意图;图5(b)为噪音串联或并联耦合的示意图,在实际电路中,这4 种故障注入模式集成在一起,只能选择一种模式。
图5
2.2 物理层故障自由组合的实现
物理层故障注入各模块可任意顺序组合是此系统的一个功能特色,此处以两种故障注入模块为例,实现方式见图6。
图6 故障自由组合实现方式示意
图6 中的模块1 和模块2 表示不同的两种故障注入单元、+信号线、-信号线、GND 线的输入、输出口均如图7 所示形成一个三选一的开关。模块1 和模块2 输入端中“LINE IN +”短路作为两个模块“+ 信号线”第一级的信号输入,两个模块输出端中“LINE OUT +”短路作为两个模块“+信号线”最后一级的信号输出,对于“-信号线”和“GND 线”相同。NET“1 FROM 2 +”表示模块1 的“+信号”的输入线来自于模块2 的“+信号”的输出线,此线与模块2 的“2 TO 1 +”在电路中短路。
若模块2 的输入线切换至“LINE IN +”“LINE IN-”和“LINE IN GND”,而输出线均切换至与模块1 短路的信号线,模块1 的输出线均切换至“LINE OUT+”“LINE OUT -”和“LINE OUT GND”,实现了通信总线先经过故障2、再经过故障1 的组合。
3 系统整体测试
图7 为样机展示,在样机组装完成后进行功能测试。由于每个样机共有四路总线,每一路总线均有6种能够自由组合的故障模块,所以测试项目众多,故此处挑选其中具有代表性的内容加以表述[3]。本研究选择了全双工总线RS422 和半双工总线RS485 进行“线路开路”“差分信号线间线路短路”及“串联阻抗”3种故障注入模式。
图7 物理层故障注入样机
首先验证半双工总线的信号方向控制模块,在确定波特率115 200 kbps、8 位数据位位宽、无奇偶校验和1 位停止位位宽等串口帧参数后,测试发现RS485 对于主发从收和从发主收机均可正常通信。
(1) “信号线开路”,RS422 和RS485 的前向信号均接收不到数据,而反向信号能正确接收数据。
(2)“信号线短路”,测试了毫秒级的故障注入。故障注入时RS422 和RS485 前向信号收到数据为0,验证了短路测试功能的正常。
(3)“串联阻抗”,用万用表测试了信号线输入和输出口之间的阻抗,与设置阻抗基本相同,测试误差来自于大量串联继电器的导通电阻之和以及万用表在通电线路上进行电阻测量的误差。
4 结论
本研究详细叙述了物理层故障注入系统设计,包括系统架构、指令板功能逻辑、底板、继电器板硬件设计以及物理层故障注入模块类型和具体实现方式。在解决了半双工总线通信方向控制与故障模块自由组合等设计技术难点后,通过实验验证了该系统的整体工作性能。