李万臣,陈宇贤,张 晋,李 婷
(哈尔滨工程大学信息与通信工程学院,哈尔滨150001)
实时多媒体数据的无线传输系统对社会生活信息化和工业自动化有着巨大的作用,如何很好的利用第三方网络是无线监控发展的一项重要工作,而且随着3G网络的建成和使用,这方面的应用开发研究的需求量将会蓬勃发展[1].多媒体数据在无线信道中传输在实际应用中面临着巨大的挑战[2],具体表现:1)多媒体数据如视频的播放有严格的实时性要求需要一定额度的带宽作为保障;2)由于多径衰落、同频干扰、噪声等影响会引起网络的输无线信道有较大带宽波动;3)相比有线信道,无线信道因为多径和未覆盖的区域的影响,信道的误码率较高,在3G中应是10-3~10-5,这对视频和图像的质量影响很大;4)用户具有异构性:用户接收设备的异构性和用户对服务质量、业务内容需求的异构性.针对多媒体数据在无线传输中所存在的问题,本文采用多通道技术,通过叠加无线传输模块数量以提高无线信道带宽,保证多媒体数据的传输质量.
采用多通道技术可以成倍的增加信道带宽,但是多个通道之间如何调度则是个重要的问题.本文以优先级为标准对多个通道进行调度,优先级高的通道则能够率先获得数据传输.
将从当前时刻t到截止时间di的时间与其剩余的服务时间ci(t)之间的差记为空闲时间Si,则按照最小空闲时间算法:通过终端设备的空闲时间动态地分配优先级P,由下式确定:
空闲时间越短,终端设备的优先级就越高,由此具有最小空闲时间的终端设备则可获得数据的使用权.假设某个终端设备M1发出数据请求时,主系统正被具有更高优先级的其他终端设备M2所占用,则忽略M1使用请求.当M2数据传输时,则M1的空闲时间严格单调递减,直至小于正占用数据传输的设备M2的空闲时间时,按照调度策略,主系统必须切换到设备M1.
本文采用的算法流程如下(以4个终端模块为例):
1)初始化主系统;
2)初始化每个模块的优先级,设置PM1>PM2>PM3>PM4;
3)检测是否有终端模块发送数据请求,有则将发送请求的终端加入等待数据模块的队列T中;
4)判断主系统是否正在传输数据,是则等待主系统空闲,否则转5);
5)比较队列T中各个模块的优先级,选择优先级最高的终端Mi进行数据传输;
6)修改各终端设备参数,以及优先级P;
7)判断主系统数据是否传输完毕,若完毕则转8),否则转3);
8)算法结束.
无线数据传输过程中,延迟对视频传输影响很大,并且容易造成视频信息的丢失.因此,在图像数据进行传输前必须进行一定处理,以便当数据丢失和时延过大时,能够及时进行差错控制.在数据分别送往各个通道之前,必须对数据进行分包.分包有很多优点[3],使用分包,就不会一直占用两个系统之间的线路,能提高系统路线利用效率;同时,因为可以柔软地进行路径的选择,所以拥有就算一部分出现障碍,也可以用其他的线路来代替.由于存在过多的延迟和干扰,图像数据就容易出现数据丢失和误码,这将严重降低视频质量.一旦采用了分包机制,数据接收端从分包数据中进行同步恢复,可大大降低传输过程中数据丢失和误码的情况.同时,分包中所含的标识使每个分包可被其他分包预测出来,因此也提高系统的鲁棒性.
图像数据在无线传输过程,分包的大小直接影响丢包率[4].将数据包拆分为 1 400、1 000、800、400 bytes进行分别研究,同样传输1 M数据,分包大小与丢包率关系如表1所示.通过表1可以发现,在数据包为1 000 bytes时,丢包率最小,所以本文采用的分包也为1 000 bytes.
表1 不同数据包大小对传输的影响
设置数据包的编号用于惟一标识一个数据包.本文涉及的数据传输必须是稳定可靠的,可以处理数据包丢失、重复,特别是是顺序紊乱等情况.因此,在发送数据包之前,将所有数据包进行序列编号,这样,在接收端在接收数据后可以独立分辨数据包,由此来保证传输的可靠性.接收端利用序列号来确定数据的先后顺序,除去重复的数据包.本文所用的序列编号为32位,同时记录数据包所处的帧数以及在每一帧中的位置,每一个数据包都是顺序编号的,序列号(SYN)的标示位位于每个数据包数据段的前端.
为了保证数据存储和通信传输应用中数据的准确性,增加CRC(Cyclic Redundancy Check,循环冗余校验)检验码是一项很好的手段.常用的CRC校验形式有 CRC -16,CRC -32 两种[5],采用 CRC-16校验,可以保证出错率在1‰以下,而采用CRC-32校验的出错概率更是比 CRC-16低1%.CRC的主要特点就是:检错能力极强,开销很小,易于实现.因此,CRC技术应用在很多软件的加密保护中.
CRC校验的应用关键在于发送端CRC码的计算,以及将CRC码添加在块数据之后,而采用什么形式的CRC标准,则由具体检错性能而定.在设计中,设计高效的代码是很有必要的,常用的方法有计算法、查表法、半查表法,关键需要考虑代码的效率以及存储空间大小.在接收端,则需要编写与发送端相对应的CRC检验函数,用相应的CRC标准算法计算出从接收到的数据有效部分的CRC码,再与接收到数据末端夹带的CRC码比较,如果相同,则认为传输过程中误码可能较小,认为通讯有效.
多媒体无线传输系统硬件框图如图1所示.
图1 多媒体无线传输系统硬件框图
本文图像采集部分采用OV7670摄像头模组.OV7670图像传感器,体积小、工作电压低,提供单片VGA摄像头和影像处理器的所有功能.通过SCCB总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率8位影响数据.该产品VGA图像最高达到30帧/s.用户可以完全控制图像质量、数据格式和传输方式.所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过SCCB接口编程.
数据打包及发送模块是系统关键,包括对数据的存储及打包处理,这些功能都由EP2C8Q208完成.根据系统的要求,数据处理流程如图2所示.其中,帧同步信号的提取起着重要的作用.帧同步信号作为一幅图像开始的标志,表示一帧数据开始发送.帧同步信号提取之后,有两种方法进行处理[6]:一是插入特殊的码组作为每帧开始的标记.二是利用数据码组之间特性实现同步.本文采用第一种方法,即在每个帧同步信号之后,在数据流中插入32位标记码组0xfefe,标记每一帧的开始.
在获取完整的一帧图像数据之后,FPGA以1 000 bytes为一个数据包,对数据进行分包.分包后按顺序分别在每个包的包头添加64位标记,包括32位帧标记以及32位像素标记.添加包头信息后,在每个数据包末端添加CRC校验值,CRC校验值由CRC计算模块得到.
数据经过打包及传送,由无线接收模块进行接收.图像恢复模块是在UP-AR2000平台上完成的.UP-AR2000平台以EP2C35为核心,有足够的资源来处理图像数据.根据系统的要求,图像恢复流程如图3所示.
系统在接收数据包后,首先对数据包进行CRC计算,并与数据包最后的CRC校验码进行比对,如果CRC校验码错误,则可能数据传输过程中出现误码,则将数据包丢弃.CRC校验通过的数据包通过解包头信息,得到数据包的帧位置以及像素位置.比较相互之间的帧位置以及像素位置,去除重复的数据包,并对数据包进行排序.
图2 数据打包及发送模块数据处理流程
图3 图像恢复模块数据恢复流程
在传输过程中,可能有丢包的情况,所以排序之后一帧图像可能会少几个数据包,本文中为了解决这种情况,在图像寄存器同时保存三帧图像,并通过前两帧图像的数值推算出丢失数据包的数据.在一帧数据处理完成后,送由显示模块显示.
本文在移动通信基础上设计多通道数据传输系统,该系统能够通过摄像头模组采集原始图像数据,由EP2C8Q208存储及分包处理,并按照调度规则由无线模块有序的发送;接收端在博创UPAR2000平台上对接收到的数据进行解包等操作,最后在VGA上还原画面.经过试验,本文所设计的传输系统在分辨率为640×480情况下,可以保证5帧/s的画面显示.
[1] RAPPARPORT T S.Wireless Communication Principles and Practice[M].US:Addison Wesley,2004.
[2] 沈兰荪,卓 力.小波编码与网络视频传输[M].北京:科学出版社,2005.
[3] LU J.Signal Processing for Internet Video Streaming:A review[C]//Proceedings of SPIE Image and Video Communications and Processing,[S.l.]:[s.n.],2000:1 -14.
[4] 马留英.基于3G移动通信的视频监控系统研究[D].西安:长安大学,2011.
[5] 伍方辉,方安安.CRC的FPGA设计与实现[J].中国新通信,2008(13):63-64.
[6] 陈惠珍,包天珍.一种基于FPGA的帧同步提取方法的研究[J].电子技术应用,2003(10):70-72.