黄兆靖,刘 宇,田增山,王 宁
(重庆邮电大学光纤通信技术重点实验室,重庆 400065)
以太网数字影像遥测编码器的设计与实现
黄兆靖,刘 宇,田增山,王 宁
(重庆邮电大学光纤通信技术重点实验室,重庆 400065)
以太网数字影像遥测编码器在航天航空试验中具有重要的作用。针对编码器的软件存在帧结构多样性、实时性高、连续数据等特点,选用OMAP3530高端ARM微控制器和FPGA组合硬件平台,以Linux作为操作系统,进行编码器系统架构设计、软件设计和软件实现。通过实验室和用户现场测试验证了软件设计的正确性、完整性和可靠性。
遥测编码器;微控制器;IRIG-106遥测;PCM帧格式;线程
遥测技术是一种将对象参量的近距离测量值传输到远距离测量站以实现远距离测量的技术,该技术主要用于集中检测分散的或难以接近的被测对象,如被测对象距离遥远、所处环境恶劣、或处于高速运动状态。遥测技术广泛应用于航天领域[1],这种远程测量的能力是地面测量站获取远距离环境参数的重要部分。中国现行的遥测标准GJB21.2A是参考国际通用遥测标准IRIG-106制定的,其中使用的遥测码(Pulse Code Modulation,PCM)具有抗干扰能力强、灵活性强、精度高、动态范围大等特点。在传统设计中,PCM遥测编码器常通过硬件电路实现,使得设计一旦完成,帧格式、输出格式及波特率都很难改变。同时,传统设计的局限性也在于近距离测量值的获取往往是通过传感器实现的[1-2]。
针对现有遥测编码器存在的问题,本文设计了一种基于Linux操作系统下的以太网数字影像遥测编码器系统。通过UDP(User Datagram Protocol)实现多路影像数据传输;采用高端的微控制器ARM(Advanced RISC Machines)和FPGA(Field-Programmable Gate Array)的架构实现PCM帧的可编程;通过上位机对PCM帧格式进行设置,遥测输出速率0~20 Mbit/s逐比特可调,NRZ-L(不归零电平码)、BIΦ-L(曼彻斯特码)、RNRZ-L(随机不归零码)三种码型输出可选。
本系统是应用于某型号的飞机上的多路影像数据实时网络传输。系统网络架构如图1所示。
图1 网络架构图
依赖系统框架,以太网数字影像编码器有如下功能要求:能对1~4路影像同时进行编码;对输入的数据包大小可调;具有时间同步功能;数字影像编码器参数可调。
按功能需求,本方案的系统以ARM为主控单元,选型为OMAP3530[3],在其上完成与前端采集器的控制信息交互、UDP数据传输、PCM帧格式及输出参数配置、PCM成帧。FPGA是PCM码型变换和控制输出速率的主要单元,USB(Universal Serial Bus)是完成ARM与FPGA之间的主要传输通道[4]。
按照功能需求,本方案的软件设计包括数据通信、处理、控制输出、参数配置等基本功能,同时为用户提供操作接口。系统实现的具体功能包括:
1)通信接口,负责数据的发送与接收。它不进行数据处理,仅仅将接收到的数据转发给其他软件模块处理或者按照设备间通信协议要求发送数据出去。
2)数据处理,完成数据组帧以及将所组帧按照需求码型进行变换。设备在开机状态下数据的处理是持续进行的,针对FPGA适于处理较高复杂度,大容量数据的特点,数据编码中的码型变换在FPGA中实现。
3)参数配置,为用户提供操作接口。设备开机后按照上一次参数配置或者通过PC机实时配置等,完成对设备工作状态的设定,并对用户配置信息做出恰当的反应。
4)时间码模块,负责从串口接收时间码信息。
5)输出响应,接收并响应外部信号,输出PCM帧。按照数据输出速率控制数据的输出,同时保证无论有无网络数据的情况都能无间隙输出。
本系统软件由通信接口、数据处理、参数配置、时间码接收和输出控制5个模块组成,它们相互协作完成系统功能。软件结构如图2所示。
图2 软件结构图
数据处理是整个软件的核心模块,通信接口数据、参数配置以及时间码接收通过它在软件中结合起来,形成完成的所需PCM帧。数据处理模块把数据输入的三部分模块融合成一个整体,协调实现系统功能。参数配置用于接收用户的各种配置命令并处理,提供人机交互的接口。数据通信接口提供了软件与前端各类视频采集器的网络接口,它负责与视频采集器交互以及接收视频数据并将数据交付于数据处理模块处理,同时可以将数据发送在该局域网内的所有设备。时间码模块是为数据打入时间标签所提供的,时间码来自于IRIG-B码所解调出的时间信息,为数据在时间上的正确性提供验证依据。输出控制模块在整个软件系统中提供输出控制接口。输出控制模块接收并响应从GPIO口提供的外部信号,并将数据处理模块生成的数据发送给FPGA。
系统采用嵌入式Linux操作系统来实现。Linux操作系统具有功能强大、安全性高、稳定性好等特点。软件主进程流程图3所示。
图3 主进程流程图
本软件启动了Linux环境下的一个主进程。主进程在完成系统环境初始化后启动5个线程。系统环境初始化中两个重要的部分是输出配置文件和XML文件解析。输出配置文件确定各个输出端口的输出状态,XML文件提供用户所定义的PCM帧格式。
主进程启动了5个线程来实现系统功能,分别是通信接口线程、数据处理线程、输出响应线程、时间码线程和参数配置线程。
通信接口线程实现通信接口模块功能。当线程启动后要开始向局域网中的设备以广播形式定时发送心跳信息。编码器设备在前端设备即采集器设备交换握手信息后就开始接收数据帧,同时监控采集设备是否正常。
时间码线程实现时间码模块功能。时间码信息是由IRIG-B时间码信号解码获得。模块在接收到时间码信号后将其转换成成帧所需时间码,保存在全局结构体变量中供数据处理线程使用。时间码的主要作用是在影像数据打上时间标签。
数据处理模块数据处理线程和数据的码型转换。数据处理线程主要实现PCM帧的组帧,将网络视频数据和时间码按照PCM帧格式组帧。其中,数据的码型变换在FPGA中实现,ARM和FPGA的通过USB进行数据传输,数据传输控制由输出响应线程实现。
参数配置线程实现参数配置模块功能。参数从串口接收并解析,解析之后保存到输出配置文件和XML文件中便于下次开机使用。
在图2中清晰地介绍了本系统的软件结构图。同时在系统流程中也可知数据处理部分需要分成两个步骤完成:首先,ARM中的数据处理线程完成组帧;其次,在FPGA中完成码型变换。除此之外,软件各部分都可以在ARM中通过线程来实现。
本系统在开机后要对USB加载驱动、加载本机IP和网关以及自动运行执行程序。USB是微控制器ARM向FPGA输出数据的接口。IP地址与网关的设定为系统与网络中设备通信提供支持。图4为开机初始化的脚本文件。
图4 开机初始化脚本文件(截图)
本系统采用管道的方法实现线程通信。在主进程中,通过int pipe_fd[2]定义管道,通过pipe(pipe_fd)打开管道。打开管道后,通过pthread_create()函数开启5个线程。下面对5个线程的实现分别进行介绍。
通信接口线程负责系统与局域网中设备的通信。通信接口的具体功能实现分成3个部分:广播心跳包、与前端设备握手、接收数据帧。
通过使用定时器中断向局域网定时广播“心跳”帧,表征设备的健康状态,需要使用定时器中断实现。由于设备需要在局域网内广播,在配置网络时除了设置IP地址以外还要设置网关,即初始化脚本中的“route add default gw XXX.XXX.XXX.XXX”,才能实现全网段广播。线程流程图如图5所示。
图5 通信接口线程流程图
时间码通过从时间码解析设备获得,由串口引入。时间码设备的解析精度只能到秒级,获得更高精度的时间标签需要在控制端使用gettimeofday(&ustime,NULL)获得毫秒级,该函数在系统函数头文件time.h中定义。时间码每1 s更新一次,其余时间中时间码线程挂起。
在数据处理线程中,将网络接口中获得的视频数据按照所需的帧格式组成PCM帧。PCM的帧结构按照IRIG-106遥测标准[5]确定,相关信息存储在XML文件中。于此同时,需要为PCM帧打上时间标签,时间标签在PCM帧头(帧同步字之后),占8 byte。需要确定的参数为:子帧字数、码字长、子帧数、填充字、参数结构体、波特率、子帧ID字、码型、同步字、同步字掩码。
系统所需要的PCM帧结构有子帧,理论上应该通过二维数组实现,而对数组元素的访问实际就是对数组元素对应的偏移地址的访问。数组每多一维,访问其变量就要多做一次乘法,编译后生成的中间代码就更长,效率自然也低。因此,为了提高成帧算法的效率,在实现时将二维数组降为一维数组。
线程中调用成帧函数framing()实现PCM成帧。数据处理线程只处理网络数据即视频数据,填充字成帧即空帧在输出控制线程中实现。流程如图6所示。
图6 数据处理流程图
参数配置线程是用于实现上位机对系统状态的设置。设置包括PCM帧格式和数字信号、模拟信号输出状态,其中PCM帧格式从XML文件中获得。解析XML文件调用libxml.lib库文件中parser.h和tree.h的函数实现,同时在程序的Makefile里添加libxml.lib。由于系统开机时需要运行上次运行状态,各种配置状态都以文件形式保存,流程如图7所示。使用串口接收字符串时,所接收字符串长度大于串口一次接收的字符数,需要循环接收。
图7 参数配置流程图
输出响应线程是接收FPGA提供的信号保证并响应输出。本方案选用飓风的EP3C25E144I7N的FPGA,FIFO缓存设定为最大值。
由于输出PCM数据流不能有间隙,即FPGA内FIFO内不能为空,ARM及时响应FPGA提供的GPIO信号就非常重要。按照设计需求,将输出响应线程设置为最高优先级,同时,提高线程内程序效率来保证输出响应。
在输出端,PCM帧需按照设定的波特率输出,并且无论有无网络数据的情况都无间隙。所以在无网络数据时需要调用成帧函数framing()实现填充字成帧。线程对外部事件的实时响应受时间片的影响,在不能减少线程数量的情况下,只有将FIFO的容量开为最大值来保证外部信号的频率使线程及时响应同时输出无间隙。输出控制的流程图如图8所示。
线程中最耗时的部分在数据的输出。数据通过USB传输,提高USB传输速率能提高响应的实时性,更改USB的传输速率通过更改Linux内核中USB的最大传输参数来实现[6]。分析所使用Linux内核版本2.6.32的./drivers/usb内 buffer.c和 usb-skeleton.c,将宏定义 MAX_TRANSFER改为4 kbyte,生成新的usb-skeleton.ko。
图8 输出控制线程流程图
本系统编码器的软件测试需要验证软件设计的正确性以及稳定性。主要分为两部分:各线程功能测试和系统功能测试。
在各线程功能测试中,经过反复测试,每当FIFO数据量减少了总的存取量的1/8时,FPGA向ARM提供事件输入信号,保证输出响应线程能保证无间隙输出。在测试过程中,参数配置线程偶尔会出现错误。分析现象可知,线程中串口为阻塞状态,由外部电路的干扰,串口会接收到1~2个字符而造成错误。因此,将串口最小接收字符数设为2,newtio.c_cc[VMIN]=2保证不会因外部干扰解除阻塞,造成错误。同时,用于配置的串口线在放置时也要远离电源线和信号线。
软件系统测试中需要用到Windows XP系统的PC机3台,以及多台采集设备。PC机A安装配置程序XMLControl.exe,用串口与设备相连;PC机B安装PCM遥测解码板卡和PCM解码软件,与设备的TTL输出相连;PC机C需安装视频解码软件,用于接收PC机B的UDP数据和解视频数据帧。反复测试,保证PCM帧字长8/16位可调,帧长16~1 024 byte可调,副帧数1~256可调,码型NRZ-L,BIΦ-L,RNRZ-L 可选。
在实验室环境下,使用模拟视频发送程序。在用户环境使用4个摄像头将视频采集后通过UDP协议实时传输给编码器。系统测试平台如图9所示,编码器与1台视频采集设备相连,进行握手后将视频流成帧编码,同时编码器通过TTL信号线与安装有PCM解调板卡的计算机相连,显示器上显示的是PCM解调软件。图9中所示,PCM信号与解调板卡已同步。图10所示,PCM解调板卡收到一路采集设备的视频数据。PCM码速率为10 Mbit/s,视频流速率约为2 Mbit/s。视频采集设备最多为4路。解码设备通过UDP协议将解码后的数据流传送给后端的视频播放软件。视频采集前端发送的数据量与播放软件接收到的数据相同,采集的视频能实时播放且显示的时间标签与时间码仪器时间同步。图11为测试结果效果图,说明该编码器从数据接收、编码、传输、输出均满足设计要求。通过10 h的持续测试,证明本系统软件的稳定性。
本文设计了一种以太网数字影像遥测编码器的软件系统,该系统具有接收UDP网络的影像数据,并且完成遥测IRIG106标准的PCM编码,现实NRZ-L,BIΦ-L和RNRZ-L三种编码方式。该系统实时性高、稳定性好,在航空航天领域所需要的实时视频传输系统中具有较高的应用前景。
图11 编解码后视频回放效果图(截图)
:
[1]霍培峰.试飞测试技术[M].西安:中国飞行试验研究室,1990.
[2]霍培峰,郭小兵.国外航空遥测发展[J].遥测遥控,2003,24(6):1-5.
[3]Texas Instruments.OMAP35X technical reference manual[EB/OL].[2011-12-09].http://www.ti.com.cn/cn/lit/ds/sprs507f/sprs507f.pdf.
[4]杨志坤,曾博,汤国文.基于FPGA的嵌入式系统USB接口设计[J].电子设计工程,2010,18(1):30-34.
[5]《遥测技术》编辑部.美国遥测标准和测试方法[M].北京:《遥测技术》编辑部,1982.
[6]刘辉,向涛,张杰.基于Linux下TDM模块的USB主机端驱动的开发[J].电视技术,2011,35(19):51-53.
刘 宇(1972— ),教授,博士生,主研惯性传感系统及信号处理;
田增山(1968— ),教授,博士生,主研个人通信、卫星导航、无线定位、信号检测与处理、语音视频处理;
王 宁(1987— ),硕士生,主研集成电路。
Design and Implementation of Ethernet Digital Image Telemetry Encoder
HUANG Zhaojing,LIU Yu,TIAN Zengshan,WANG Ning
(Institute of Optical Communication Technology,Chongqing University of Posts and Telecommunications,Chongqing 400065,China)
The Ethernet digital image telemetry encoder plays an important role in aerospace test.According to its characteristics of various of frames structure,high real-time and continuous data,this article puts forward a scheme which used the combination hardware platforms of high-performance ARM microcontroller OMAP3530 and FPGA,with Linux operating system,to design the software architecture of encoder and the detailed design and implementation of software.Through the laboratory and field environment test,the software of the system is verified the integrity and reliability.
telemetry encoder;microcontroller;telemetry irig-106;PCM frame format;thread
TN762;P715.7
A
【本文献信息】黄兆靖,刘宇,田增山,等.以太网数字影像遥测编码器的设计与实现[J].电视技术,2013,37(3).
重庆市科技攻关项目(国际合作类)(2011GZ0017)
黄兆靖(1987— ),硕士生,主研集成电路;
责任编辑:魏雨博
2012-07-29