一种新型多点互联高速冗余总线通信方法与实现
2019-01-07张宏波李长森李铁麟仲雪洁
张宏波 李长森 李铁麟 薛 宁 仲雪洁
1.北京航天自动控制研究所,北京 100854 2.中国运载火箭技术研究院,北京 100076
目前电子设备内部通信总线可分为并行总线和串行总线2种。并行总线在计算机领域应用较为广泛,如PCI总线和ISA总线,其特点是由地址总线、控制总线和数据总线组成,扩展方便,其不足体现在连接信号数较多,不利于设备小型化,难以满足某些对控制装置尺寸存在严格限制的场合需要;另外,总线通信未采取冗余机制,一条信号线连接故障会导致通信任务失败。
按通信站点物理连接类型,机内串行总线可细分为2种:点对点通信总线和多点互联通信总线。点对点通信总线带宽较高,通常可达1Gbps以上,如主流PCI Express和Rapid IO[1]总线;多点互联通信的串行总线类型相对较少,如ARINC659总线,该总线采用4条串行总线进行通信交叉校验,其中,每条串行总线包括1条时钟线和2条数据线,完整ARINC659总线由12条信号组成,在提高通信容错性能的同时,带来物理层传输信号数量较多的弊端。此外,ARINC659传输速率较低,最大吞吐率仅为60Mbps。
在ARINC659总线的基础上,提出一种新颖的多点互联高速冗余通信方法,即通过时钟数据恢复技术来提高通信线路速率,并起到避免随路时钟信号使用的效果;通过增加并行数据传输通道的数量来成倍提高传输带宽;同时,通过CRC校验和通道冗余技术,实现自动故障检测、定位、隔离、以及重传功能,从而保证通信系统的可靠性。
1 多点互联高速冗余通信总体方案
与MIL-STD-1553总线类似[2],多点互联高速冗余通信总线采用如图1所示的总线式拓扑架构。总线通信网络由1个主站点(MC)和多达32个从站点(SC)组成,串行总线物理层由5条数据传输通道组成。数据传输属半双工类型,主站点和各从站点分时驱动数据传输通道。为提高数据传输通道的冗余性,5条数据传输通道中4条通道处于工作状态,另1条通道处于备份状态,当主站点与从站点通信异常时,主站点自动定位和隔离存在故障的数据传输通道,并自动启用备份的数据传输通道。
图1 多点互联串行通信的系统拓扑结构
本总线链路层协议采取“命令+响应”消息格式;主控站点根据目标从站点的通道健康状态选择4条通道作为工作通道,并发送命令帧;从站点监听和识别处于工作状态的传输通道,待检测到有效、且与从站点地址匹配的命令帧后,发出响应帧来结束当前传输。
2 传输编码格式
为同时满足小数据量低传输延迟特性和大数据量高传输带宽的应用要求,本串行总线支持存储器空间单次读写操作和DMA批量读写操作。对于一次传输,主从站点间传递的信息包括:读写类型、传输地址、单次或批量读写类型、批量传输的字节总数、传输数据以及重传标志等内容。命令帧和响应帧的组成分别如图2和3所示。
图2 命令帧组成
基于减小单次数据传输中命令帧和响应帧的码流长度来降低传输延迟的考虑,数据段和校验段分别采用曼彻斯特和奇偶校验编码方式;对于批量数据传输,一次传输字节数可达512个字节,通过对数据段和校验段进行8B/10B和CRC-16编码,在提高编码效率的同时提高码流的检错能力。
图3 响应帧组成
同步头位于命令帧/响应帧的头部,其组成格式如图 4所示,由多位连续逻辑‘1’的和1位逻辑‘0’的编码组成,用于系统内各节点对总线上传输码流进行帧头检测与同步处理。在地址和控制段、数据传输段和检验段中,连续相同编码值的最长比特流长度出现在8B/10B编码中,且数据传输段8B/10B编码不使用控制代码,连续相同编码值的最长比特流长度不超过4bit,因此,同步头组成逻辑‘1’的宽度大于4比特即可实现与后续码流的区分。
图4 同步头编码组成
除支持单次读写和批量数据读写命令外,本总线支持连接性测试命令,用于实现主、从站点之间传输通道的故障自动监测与自动隔离功能。单次读写和批量数据读写命令与连接性测试命令的不同之处在于,前者将命令/响应信息平均分配在4条工作通道进行传输,接收站点实时检测和接收4条通道各自码流后合并输出原始码流;后者在5条传输通道上均传输独立和完整的连接性测试命令与响应。为避免通道间信号相互串扰影响测试结果,连接性测试命令帧和响应帧使用数据通道编号标识段,来实现任意两条数据通道上传输的码流存在至少2bit的差异。连接性测试命令帧的数据传输段对应目标从节点的5bit ID号;从站点在接收到有效连接性测试命令且ID号匹配的通道上返回响应帧;主站点通过检测有效的响应帧来判断各传输通道的健康状况,并以此作为下一次数据读写命令选择传输通道的依据。
3 数字相位锁定与采样机制
总线各节点采样电路主要由同步头检测逻辑、相位自动跟踪与采样点自动修正逻辑、以及环形缓存等组成,工作时序如图5所示。采用3倍频率时钟对数据码流进行采样。在同步头检测逻辑中,使用计数器检测输入数据码流值连续为1的时钟周期数,在计数器超过预定值后,若监测到数据码流的下降沿跳变信号rx_fal_edge有效,判定检测到一次有效的同步头,并置相位锁定信号line_n_lock为有效值。
在理想情况下,对于输入码流的1bit码流值,3倍采样时钟在该比特码流的3个等间隔相位点采样到3个连续的相同码值,但在实际通信网络中,存在时钟频率偏差以及采样点输入码流相位随机因素的影响,对于1bit的输入码流,采样时钟还可能采样到2个或4个采样值。因此,在采样电路检测到输入码流跳变后,使用3bit的移位寄存器samp_phase_idx1、samp_phase_idx2和samp_phase_idx3来跟踪输入码流相位。在samp_phase_idx2信号有效时,采样点对应码流的中间相位,可确保采样电路对输入码流采样的可靠性。命令帧和状态帧均采用曼彻斯特-II型编码和8B/10B编码来保证码流的快速翻转,且采样电路通过检测输入码流跳变沿对相位跟踪寄存器进行强行复位,有效地消除了由采样时钟频率与输入码流3倍频率差异带来的累积采样相位误差的影响,从而允许串行通信系统内各节点使用时钟源的频率值存在较大差异,利于工程实现。
图5 相位跟踪锁定与采样时序
4 通道采样对齐与弹性缓存技术
总线网络内主节点与任意从节点进行通信时,发送节点在4或5条通道上发送串行码流。由于不同码流信号在发送节点端从码流产生寄存器到输出引脚传输延迟、总线收发器发送延迟、电路板走线延迟、接收节点端总线收发器接收延迟以及码流从输入引脚到采样寄存器的传输延迟等方面均存在差异,总线节点接收的各条数据通道码流在时序上是异步的,总线节点在对不同工作通道进行码流采样的同时,还必须对各通道上检测的信息进行对齐处理,从而合并成一条完整的信息。数据通道采样对齐与弹性缓存逻辑结构如图 6所示,5条数据通道均配置独立的相位锁定信号line_n_lock(n∈[1,5])和深度为16的环形缓冲line_n_buf。在一次码流采样过程中,5条数据通道各自独立地检测有效同步头,待相位锁定信号有效后,首先复位对应通道环形缓冲的写入地址,然后开始采样并将采样值写入通道环形缓冲内。通过监测5条数据传输通道的相位锁定信号,并进行总线通信有效表决,产生数据线有效通讯标志信号bus_activity_det。考虑到5条数据通道间的码流延迟差异,将数据线有效通讯标志信号延迟数拍,保证延迟较大的通道码流的同步头也能完成检测与相位锁定操作。将信号bus_activity_det延迟后产生环形缓存读指针累加标志信号buf_rd_ptr_add,该信号为低时,复位环形缓冲line_n_buf的读取地址指针;该信号为高时,环形缓存读取地址以1为单位进行累加。5条通道的环形缓存共用一个环形缓存读取地址指针,从而实现以相同的节拍输出对齐的通道码流。
图6 数据通道采样对齐与弹性缓存逻辑
5 消息传输与重传机制
在主站点与从站点的数据交换过程中,主站点负责发起命令帧,从站点监测命令帧并发送响应帧。在传输过程中,若由于传输通道瞬态故障或永久故障的影响,导致从站点未检测到有效命令帧或者主站点未检测到有效响应帧,主站点将启动通道故障诊断操作,从5条数据传输通道中重新选择4条通道作为工作通道,并启动消息的重新传输操作。在该过程中,故障通道定位与隔离、消息重传操作均是硬件底层行为,无需软件干预,提高了总线通信的自动化程度。
一次消息传输与重传流程如图7所示,其具体步骤如下:
1)主站点在当前处于工作状态的4条数据传输通道上发出传输命令后,等待从站点响应;
2)从站点监听全部数据传输通道,通过将接收的码流与已定义传输命令的格式进行比对,来区分命令类型。当解析出正确的传输命令、且接收的地址与从站点分配的地址空间匹配后,从站点完成与命令相对应的读写操作,并在检测到本次传输命令的4条数据传输通道上发送响应给主站点,否则,从站点继续监听数据传输通道;
3)主站点在4条工作数据传输通道上检测响应,若在系统允许的最大响应时间内未检测到同步头段,或者主控制器检测到同步头段,但同步头段后续的位流组成与预期响应格式不一致,主站点判定本次传输失败,跳至步骤4;若主站点在允许响应的时间内检测到正确的响应,跳至步骤7执行;
4)若当前传输的重传次数小于预设的最大重传次数,主站点发出一次数据传输通道故障诊断命令,跳至步骤5;否则,判定当前传输的重传过程失败,跳至步骤7执行;
5)从站点监听全部数据传输通道,若收到与站点ID相匹配的数据传输通道故障诊断命令的通道个数大于或等于2时,认定数据传输通道故障诊断命令有效,从站点在接收到正确的数据传输通道故障诊断命令码流的数据传输通道上发出相应的响应;
6)主站点在全部数据传输通道上检测响应,若响应超时或者检测到正常响应的数据传输通道条数小于4时,跳至步骤4执行;否则,主站点从正常响应的数据传输通道中选出4条作为下一次传输的工作数据传输通道,并跳转至步骤1执行;
7)本次传输结束。
图7 消息传输与重传流程
6 总线控制器逻辑实现
总线控制器设计包括主站点控制器和从站点控制器2部分。主站点控制器逻辑结构如图8所示,主要由CPU总线接口、深度为16的单次访问序列、总通道数为16的DMA批量访问序列、存储器访问仲裁器、传输事务控制、8B/10B编解码、CRC-16计算、位发送、位采样以及位接收等逻辑单元组成。从站点控制器逻辑单元组成与主站点控制器相似,不再赘述。
图8 主站点总线主控制器逻辑结构框图
在单次IO读写操作过程中,MC依据DSP发出访问地址的高位地址段来实现与分配特定ID的从站点SC地址空间的自动关联。MC使用单次访问序列对解析的SCID号、访问地址、访问类型以及访问数据信息进行先进先出管理。传输事务控制模块查询单次访问序列状态,待该序列非空时,启动位发送操作。位发送单元依据单次IO读写操作命令格式完成曼彻斯特编码和奇校验编码操作,并移位输出至串行总线。MC依据IO读写操作命令响应格式对SC发出的响应进行有效性判断和数据提取操作。
对于批量读写操作命令,MC使用DMA访问序列进行命令缓存。在MC执行批量写操作命令时,MC根据DMA通道属性访问MC外部扩展RAM,将访问返回数据进行8B/10B编码和CRC编码后,按照批量传输命令格式移位输出至数据总线。与之相对应,在MC执行批量读操作命令时,MC将从总线采样的位流进行8B/10B解码和CRC解算,并将解码后的数据写入由当前DMA通道属性参数指定的RAM地址区域。DSP可通过中断或查询的方式获取批量传输的状态。
主从站点控制器采用Xilinx K7系列FPGA实现,逻辑综合结果表明单条差分数据线最高传输带宽可达100MHz,从而可实现400Mbps的峰值传输带宽。IP仿真结果表明,执行单次IO操作耗时低于0.7μs;DSP执行一次传输长度为512字节的批量读写操作耗时低于14μs。与传统航电设备采用的并行总线相比,本串行总线通信带宽优势明显,且支持2种通信方式,使用方式更灵活。
7 结束语
针对航电设备高传输带宽、高可靠与小型化的发展趋势,提出1种新型多点互联高速冗余总线通信方法以及总线控制器IP的实现策略。基于本冗余高速串行通信总线的飞控装置已通过各种试验考核,运行稳定。与传统机内并行总线相比,该冗余高速串行通信总线在传输带宽、可靠性、可动态扩展、可维护、可测性、小型化和集成化方面具备显著优势,有良好的工程应用前景。