ARINIC 818 视频传输协议研究
2022-07-11高伟松普瑶卉卢小军陆爱春
高伟松 普瑶卉 卢小军 陆爱春
(苏州长风航空电子有限公司 江苏省苏州市 215151)
机载电子系统设备间交互的视频图像信息增多,传统总线已不能满足新型航空航天电子系统的技术要求,航空电子委员会提出了基于光纤通道的ARINIC 818 总线协议,具有抗电磁干扰能力强、传输距离长、高带宽、低延迟等特点,适用航空航天系统中各设备间的视频信息传输。
1 FC-AV协议简介
光纤通道音视频协议(FC-AV)是FC 协议的子集,为视频信息在光纤通道网络中传输的传输提供了方法,为视频设备间信息的交互制定了一种接口标准。FC-AV 协议基于光纤通道实现,其传输的基本单元为容器(Container),每个容器包含需要传输的视频流中一帧视频信息。
根据视频帧的传输方式,FC-AV 协议定义了两种传输协议,分别为帧头控制协议(FHCP)和简单移动架构(SCMA)。帧头控制协议将视频流通过容器映射为FC 帧,进而在光纤通道中传输,ARINC 818 采取FHCP 传输协议。
ARINC 8I8 总线技术通过其独特的技术优势已成为新型航空电子视频系统的主流技术。ARINC 818 总线技术深入研究对航空电子视频领域技术的发展具有较大意义。
2 ARINC 818层次架构和详细介绍
ARINC 818 为点对点拓扑结构、采用8B/10B 编码的串行音视频传输协议。该协议由五个标准层构成:FC-0 Physical(物理链路层)、FC-1 Code(编解码层)、FC-2 Protocol(协议控制层)、FC-3 Management(通用服务层)、FC-4 Mapping(高层协议映射层)。
ARINC818 协议的基本传输单元是ADVB 帧,ADVB帧格式与FC 格式一致,由一个SOFx 指令开始,以一个EOFx 指令结束。ADVB 帧头由24 字节组成,帧头字节描述了源地址、目的地址、队列中的具体位置等帧属性。数据载荷最大可容纳2112 个字节,ADVB 帧中的CRC 同光纤通道中的定义一致,作用为校验SOFx 和CRC 之间的数据的完整性。
首个ADVB 帧的SOF 格式为SOFi(SOF initiate),其后每一个ADVB 帧的SOF 格式为SOFn(SOF normal)。最后一个ADVB 帧的EOF 格式为EOFt(EOF terminate),其他ADVB 帧的EOF 格式为EOFn(EOF normal)。
ADVB 帧之间为IDLE 数据,为保证CRC 计算和接受端时钟矫正的正常工作,发送IDLE 数据之前,8B/10B 编码中的RD 值(Running Disparity,运行不一致性)需要为负,在每个ADVB 帧的结尾,根据当前RD 值,选择不同的EOF 格式控制RD 值。SOF、EOF 以及Idle 的格式如表1所示。
表1:SOF、EOF、Idle 的格式
ARINC818 一个视频帧通过一个ADVB 容器传输,视频帧与ADVB 容器是一对一映射关系,一个ADVB 容器中包括一系列的ADVB 帧,容器中ADVB 帧数的多少由视频传输的分辨率决定。
ADVB 容器由容器头和对象两部分组成。容器头共22个32 位字,包括容器的具体属性信息,视频数据通过容器的对象来传输。ADVB 定义了4 个对象:Object 0 ~ Object 3。Object 0 为辅助数据,Object 1 为音频数据,Object 2 和Object 3 为视频数据,逐行视频中只使用Object 2。
ADVB 帧头(Frame header)由24 个字节的数据组成,如表2 所示。
表2:ADVB 帧头
Dest._ID 与Source_ID 一般设置为0,动态字段包括帧控制(F_CTL)、序列标识符(SEQ_ID)和序列计数(SEQ_CNT)这三个字段。帧控制字段长度24bit,bit19 在容器的最后一个ADVB 帧中应置为1,用来通知接受端一个容器发送完毕。序列标识符为容器计数器数值的低8bit,同一个容器中所有ADVB 帧序列标识符均相同,其随着视频帧的增大而增大。序列计数字段用于标识同一容器中帧的顺序排列,共24bit,承载容器头和对象0 的帧是计数的开始,随着帧数量增加而增加。
通过ADVB 帧,视频流在FC 网络中传输,多个ADVB帧按照一定的顺序组成一个容器,每场视频帧对应一个容器。容器头和对象0 的辅助数据组成第一个ADVB 帧,第二帧到第n 帧的数据字段为对象2 的视频数据。
辅助数据(Ancillary Data)由4 个32bit 字(Word 0 ~3)组成。采用XGA 视频(1024*768@60Hz)举例,描述各字段的含义。
(1)Word 0 字段。
Bit18 ~31 表示视频一帧中的行数。Bit4 ~17 表示视频每行的列数。最后4 个bits 表示视频传输类型,基于场或基于视频帧传输。
(2)Word 1 字段。
颜色信息(CL,ColorInformation)表示像素数据类型,单色调或多色彩。
像素纵横比(PA,Pixel Aspect ratio)表示视频像素的高宽比例。
像素阵列顺序(PAO,PixelArray order)表示视频显示中像素的扫描方式。PTN(Packing Table Number)表示像素的封装类型。
Bits per subpixel 表示视频对象中每个颜色分量所占用的比特数。
Word 2 ~3 字段根据用户需求进行自定义,默认值00000000h。
3 接口面控制文件(ICD)
接口控制文件(ICD,Interface Control Document)包括各种视频格式数据封装为ADVB 帧及发送控制的详细信息,是视频数据发送的信息库,其含义是根据视频的不同分辨率格式,对ADVB 帧的封装和发送控制的详细描述。对象0为辅助信息数据,对象2 中分组封装视频数据,ICD 的主要组成部分为链路速率和ADVB 帧发送间隔。
4 链路速率
根据被传输视频数据的格式选择匹配的光纤通道链路速率,才能保证链路利用率最大化,减少带宽的损失、降低成本。ARINC 818 协议链路速率有1.0625Gbps、2.125Gbps、3.1875Gbps、4.25Gbps 等。各种视频分辨率格式所采用的链路速率如表3 所示。
表3:链路速率表
5 对比优势
ARINC 818 与DVI、Firewire、Camera Link 和GigE 等数据总线相比,在传输速率、传输距离等关键技术方面具有优势,如表4 所示。该协议已成功在多型飞机航电设备中运用,如空客A400M 和波音787 等,经历了民用和军用航空器的数万小时飞行验证。
表4:与其他协议的对比
6 硬件平台
光纤通道已在多个领域得到广泛应用,有多个厂家提供的芯片可以满足ARINC 818 应用需求。
Xilinx 在Kintex7 FPGA 中提供的GTX 接口能够提供最高12.5Gbps 的链路速率,GTX 高度可配置化,具有8B10B编解码、RD 控制、字对齐、时钟矫正、预加重等功能,且与FPGA 的可编程逻辑资源紧密耦合。比较适合ARINC 818编解码功能的开发。
7 ARINC818视频解码
7.1 综述
ARINC818 高速串行数据送至FPGA 的比特收发器GTX0。ARINC818 解码模块(818 Decode)接收DVI 解码芯片输入的视频数据,再通过帧缓存将视频调整到统一的时序下。ADVB 帧解析模块接受GTX 发过来的32bit 并行数据,解码出其中视频数据存入FIFO 当中,视频时序生成模块检测到FIFO 中有数据后生成视频时序至视频输出模块,视频输出模块接收时序读取FIFO 中的视频数据一起输出。在运行过程中,GTX 能够上报8B/10B 编解码错误(8B/10B notintable[3:0]) 及链路RD 错误(disparity error[3:0]),CRC 计算模块能够上报CRC 错误。如表5 所示。
表5:ARINC818 视频解码模块接口定义
7.2 ADVB帧解析模块
ADVB 帧解析模块是ARINC818 视频解码的主要功能之一,只有通过帧解析后的数据才会有具体的实际意义,否则数据内容就为乱码,无法处理其内容。ARINC 818 帧解析模块的帧解析分为两种情况,因为容器系统包含两种类型的帧序列。一种是承载Object 0 辅助信息数据的第一帧,另一种是承载Object 2 视频数据的ADVB 帧。
帧解析的第一步就是要分清帧的类型。区分两种ADVB帧的关键就是起始定界符SOF,帧的起始定界符为SOFi 则此帧为第一种ADVB 帧;若为SOFn,则为第二种帧。第二步的主要工作是解析出正确的辅助信息数据和视频数据。帧状态解析主要是对SOFi、SOFn、EOFn 和EOFt 四类有序集进行检测,并根据相应的有序集对帧类型做出判断。ARINC 818 协议,起始定界符为SOFi 表示当前帧为承载容器头、对象0 辅助信息数据的第一帧;结束定界符为EOFt 表示当前帧为容器帧序列的最后一帧。其主要接口如表6 所示。
表6:ADVB 帧解析模块接口定义
7.3 行场同步信号解析模块
行场同步信号的产生模块中,FPGA 利用接受到的ADVB 帧的状态信息来还原行场同步信号,FPGA 对ADVB帧的发送顺序及时间标识精确到一个串数字,目的是为正确完整地恢复行场同步信号,实现异地间时钟同步,利用帧间的时间间隔恢复行场同步信号。其时序图如图1 所示。
图1:行场同步解析时序图
7.4 CRC计算模块
循环冗余校验(CRC,Cyclic Redundancy Check)是数据通信领域中最常用的一种差错校验码,其特征是校验字段和信息字段的长度可以任意指定,在ARINC 818 协议中,CRC 的计算字段是SOFi/n 到CRC 之前,其32 比特多项式计算方法如下:
CRC 计算模块接口如表7 所示。
表7:CRC 计算模块接口定义
8 ARINC818视频编码
8.1 综述
视频数据存入FIFO 当中,ADVB 模块读取FIFO 中的视频数据加入ADVB 帧头和容器头发送到FPGA 的GTX模块并经过光电转换模块发送。其中txdata[31:0]为传送给GTX 的32bit(4 字节)并行数据,txcharisk[3:0]指明4 字节数据中哪个字节需要8B10B 编码成控制码(K 码)。txchardispmodel[3:0]、txchardispval[3:0]为RD 控制信号。如表8 所示。
表8:ARINC818 视频编码模块接口定义
8.2 ADVB帧编码模块
ADVB 帧的生成是发送器设计中最为重要的部分,是视频信息在光纤网络中正确传输的前提。按照本样例1280x1024@60Hz 24bits 分辨率视频,ADVB 不兼容音频传输,即在ADVB 数据帧中不包括Obj1。本样例中应用的ADVB 数据帧只有Obj0 和Obj2 帧。其接口定义数据结构如表9 所示。
表9:ADVB 帧数据结构
本样例进行ADVB 帧的封装和发送都是按照一定的视频显示时序标准进行。1280x1024@60Hz 24bits 分辨率视频按行同步模式构建ADVB 数据帧的时序参考如表10 所示。
表10:ADVB 数据帧时序
8.3 视频时序同步模块
ARINC 818 编码模块的主要功能是将写入该模块的视频数据封装为ADVB 倾并发送。本样例的工作方式为行同步类型。在行同步工作模式中,发送器依据写入视频的场同步(Vertical Sync)和行同步(Horizontal Sync)信号封装ADVB帧。
8.4 CRC计算模块
视频编码的循环冗余CRC 校验方法与视频解码相同。
9 结语
本文完成了ARINIC 818 视频传输协议内容的研究并提供了一种基于FPGA 的ARINC 818 编解码设计方法,实现了视频数据ARINC 818 协议标准封装转换。