水下光通信多媒体数据传输系统的设计与开发
2021-12-14郭建中王振亚胡仁杰袁进刚万梓傲
曹 聪,郭建中,王振亚,谭 浪,胡仁杰, 艾 勇,肖 云,袁进刚,万梓傲
(1.武汉纺织大学 电子与电气工程学院,武汉 430200;2.武汉六博光电技术有限责任公司,武汉 430072; 3.武汉船舶通信研究所,武汉 430205)
引言
水下光通信是一种通过水介质传输信息的通信方式,其信息载体是光,通过脉冲数字码进行调制。由于海水吸收、散射强烈,水下光通信技术的实现会比空间光通信技术的难度大大提升[1]。一个完整的水下光通信系统包括大功率蓝绿光LED发射模块、高灵敏度APD接收模块、FPGA下位机数据转换模三大部分,由于该系统在水下工作,一些相关的参数与传输数据难以显示和分析,于是基于该系统中的FPGA数据控制转换部分与PC联合设计了一款通信系统,由PC提供水下通信数据的直观显示,可实现多媒体数据传输及光信道性能检测。上位机作为信源发出数据,通过网线传递给FPGA,FPGA经过数据转换驱动LED发射模块,将电信号转化为光信号发出,接收方通过高灵敏度APD将光信号转化为电信号接收,再通过FPGA由网线将信号传输到上位机,在上位机中完成数据处理并显示处理结果。此为完成一次单向的水下光通信系统的数据传输。上位机主要功能是为数据处理与数据收发显示以及发送控制命令,下位机主要功能是控制数据传输速率与硬件系统相匹配以及直接控制硬件设备。为增加数据发送方与接收方的互动性,在上位机软件中增加了摄像头抓拍及循环发图功能。可从图片等数据的接收完整性,直观体现水下光通信系统的传输稳定性。
1 原理与设计
1.1 多媒体数据传输系统整体设计与数据处理流程
上位机软件主体部分采用C#语言编写,利用Microsoft Visual Studio 2017开发工具在.NET Framework v4.6.1框架下进行应用程序开发。C#是一种简单、现代、通用以及面向对象的程序设计语言[2]。下位机部分主要采用Verilog HDL语言编写,利用QuartusⅡ17.0软件进行开发。Verilog HDL是一种硬件描述语言,逻辑电路图、逻辑表达式以及数字逻辑系统所完成的逻辑功能都可以用它来表示,它将数字系统硬件的结构和行为以文本的形式描述[3]。
FPGA通过网线与上位机连接,水下光通信设备开机后,FPGA处于等待状态,通过上位机开启服务,绑定固定端口,与下位机进行通信。上位机通过指令,控制系统的运行模式、光发射模块与光接收模块的开关及传输速率的切换等,通过光发射与光接收的硬件部分反馈的信号,FPGA判断其是否正常工作并将结果返回给上位机,由开关控制区域的颜色进行表示。FPGA端资源有限,通过建立简易的UDP通信模块与PC端进行通信,FPGA根据接收的数据实现电路控制[4,5]。PC端开启UdpReciveThread()线程进行接收,将接收的数据按照自定义的通信协议解析数据包,再进行相应的处理及显示。
1.2 多媒体数据传输系统的结构设计
根据PC与FPGA检测系统中的处理流程和数据的调用可分为四层:如图1所示的系统结构图,分别为界面层、处理层、通讯层和FPGA层。
图1 多媒体数据传输系统结构框图Fig.1 Block diagram of multimedia data transmission system
水下光通信系统框图如图2所示,下位机以UDP数据包的形式从上位机接收数据,在FPGA中通过FIFO缓冲解决PC与FPGA之间的数据传输速率匹配问题和FPGA内部的跨时钟域问题[6],再将数据以LVTTL电平的模式传输给LD驱动电路。FPGA将UDP模块接收到的数据进行RS纠错编码,确保数据传输的准确性,再进行8B/10B编码防止过多连续零和连续一的情况发生,再进行并串转换以及帧同步后输出的信号通过LD发射模块发出,接收端接收后一次进行译码,再有UDP模块传送给PC进行处理显示。若发送方改变了FPGA的发送速率,接收方的FPGA会对接收速率自适应改变,并将改变后的速率通过消息形式发送给上位机显示。
图2 水下光通信系统流程图Fig.2 Flow chart of underwater optical communication system
1.3 PC与FPGA各个模块设计
1.3.1 数据读取模块的设计与开发
目前实现下位机与上位机之间的数据通信通常使用的方式有两种:1)USB转串口方式;2)以太网方式。本次水下光通信系统的通信速率范围跨度大,传输速率要求高,拟达到50 Mbps,故而选用网线连接的方式,运用以太网进行通信。该通信系统工作前,需先将PC端的IP地址设置为与下位机代码中对应的地址。在后台代码中利用建立Socket建立套接字,可应用Bind()绑定端口,与FPGA端进行端对端的收发。其通讯准备流程如图3所示。
图3 通讯准备流程图Fig.3 Flow chart of communication preparation
通讯准备完成后,上位机需向FPGA发送相应指令,使FPGA打开光发射与接收的硬件设备,即可进行模式选择,同时可收到FPGA返回的当前信道数据的传输速率,点击绘图模式便可实时显示当前的发送与接收速率并绘制成曲线。若发送端的速率改变后,系统将处于未同步状态,接收端会自动调整接收端的速率档位直到设备处于同步状态。其绘制的速率曲线图界面如图4所示。
图4 通信速率曲线图Fig.4 Communication rate curve
光接收模块接收数据转化为电信号输出给FPGA,FPGA经过帧同步稳定接收后,设置帧长为1024字节为一帧,其中前8个字节为自定义通信协议数据包格式中的数据。由于数据接收函数一直运行需要大量资源,会使主线程操作时卡顿,故开启一个新的线程,进行消息接收。为了保证软件的稳定性,一般使用异步调用的方式。在新线程中调用Receive()方法进行数据接收。数据读取流程图如图5所示。
图5 数据读取流程图Fig.5 Data reading flow chart
1.3.2 数据解析模块的设计与开发
上位机接收FPGA传输的数据,通过帧头辨别数据类型进行相应的处理。将接收到的数据包暂存在新建数组中,根据自定义的通信协议进行判断。由于从光模块接收的数据已经有FPGA经过帧同步处理了,所以无需再进行特殊判别,可直接将接收数据进行分类,若不是所需要数据可直接舍去,后续不做任何处理。数据解析流程图如图6所示。自定义控制命令格式如图7所示。
图6 数据解析流程图Fig.6 Data analysis flow chart
首先UDP协议的数据包在网络层通过添加IP首部,封装成IP数据包的格式,然后送到以太网MAC层完成以太网标准数据帧格式的封装,最后才送到物理层处理,在数据链路层,数据都是以数据帧的形式进行传输的。以太网有效数据封装成标准帧之后再进行传输[7]。标准以太网的帧格式包括帧头标记(前导码和帧起始定界符)、目的MAC地址、源MAC地址、长度/类型域、数据域、填充域和帧校验域等字段[8]。
图7 自定义控制命令格式Fig.7 Custom control command format
1.3.3 数据处理模块的设计与开发
在通讯模式下,FPGA首先进行帧同步,确认帧同步后开始进行数据处理与传输,在FPGA中数据主要经过了8B/10B编解码,RS编解码的处理,主要是为了降低通信误码率,使得数据可以进行有效且稳定的传输,数据由FPGA传送给上位机,上位机进行处理显示,根据帧头判断多媒体数据的形式,再将以不同形式进行展现;在误码测试模式下,FPGA无需进行帧同步等处理,发送方由本原多项式产生27-1位伪随机序列,以固定时钟循环发送,接收方接收进行循环比对,以接收到的数据个数作为总数,比对的不同个数作为误码个数,反馈给上位机,上位机利用BitConverter()函数转化为浮点型数据进行处理显示。数据处理流程如图8所示。
图8 数据处理流程图Fig.8 Data processing flow chart
2 实验
2.1 多媒体数据传输系统通信性能自测
首先对PC与FPGA组成的通信系统进行独立的性能测试,只有先确保了该系统的稳定可靠,才可加入到水下通信系统中进行水下的综合测试。上位机主页面如图9所示。
主页面包含有基础的字符串、图片等数据传送功能,在主页面的“上位机模式选择”中包含有互动功能,增加人机的互动性,可手动截图发送,也可定时在某一时刻拍摄发送给对方,也可设置开始与结束时间在期间以某一特定时间间隔拍摄并发送给对方。该功能增强整体系统的人际互动性。此页面如图10(a)所示。循环与实时功能,便于观测连续数据的发送与接收情况,可从侧面反映出系统通信性能的情况。实时功能页面如图10(b)所示。
图9 上位机主页面Fig.9 The main page of the host computer
2.1.1 丢包率测试
为便于观测对比发送与接收的数据,有单块FPGA与PC通过网线相连进行系统的环回实验,通过Wireshark软件在PC端进行抓包,对所抓取的以太网数据包进行比对。丢包率是数据通信过程中数据包丢失的数量与发送数量的比率[9],其可以作为一项重要指标来证名该系统的稳定性。通信丢包率部分测试数据如表1所示。
通过对通信丢包率的测试,相同数据长度、相同速率、不同数据包个数;相同数据长度、不同速率、相同数据包个数;各项测试中的丢包率均为0,可以得出PC与FPGA组成的通信系统稳定性极好,不存在丢包情况,能够应用于水下光通信的测试中。
2.1.2 误码测试模式可用性测试
误码率是通信信道性能的直接体现,为了测试该系统误码测试的功能,使用单块FPGA与PC进行环回实验,其中有插入误码的功能,能够测试该系统中误码测试功能是否良好。误码率的计算公式如式(1)所示:
(1)
式中Pe为误码率;Ne为传输中的误码个数;N为传输中的总码数。根据以上误码率的计算公式计算,误码率测试结果如表2所示(速率是指FPGA开发板上利用SMA传输线模拟的光信道的传输速率)。
经计算检验,界面显示的误码率准确。通过对误码率测试功能的检测,可以得出该系统测试误码率的方法可靠性高。基于不同的数据传送速率,插入误码次数不同,由于SMA代替光信道,多次实验,误码率的变化符合理论规律。
表1 通信丢包率测试
表2 误码率测试
2.2 误码测试模式可靠性测试
测试场景如图11所示,为同一通信信道,分别使用误码仪与该检测系统检测误码率,其中误码仪型号为ET34A误码测试仪,该误码仪速率最高仅能达到34 Mbps。其中,图11(a)、(b)为实验场景图,图11(c)、(d)为实验结果图。由于条件有限,搭建简易的平台进行测试实验,根据接收端增加衰减片模拟水下不同距离的接收。
图11 检测系统误码率准确率测试Fig.11 Testing the accuracy of the bit error rate of the detection system
图12 测试场景图Fig.12 Test scene diagram
根据多次的实验,该检测系统的误码率与同一条件误码仪检测的误码率一致,故此系统可用于测试实际水下光通信信道的误码率检测,从而获取水下光通信信道的性能指标与关键数据。
2.3 水下通信系统整体测试
通信测试时间为下午至夜晚,地点为泳池内,泳池两边分别放置2个设备,里面分别有蓝绿LED和蓝绿LD发射模块及APD、PMT接收模块。其中蓝绿光波长分别为450 nm和520 nm,蓝绿光LED阵列发光功率均为36.6 W,蓝色激光发光功率均为80 mW,绿色激光发光功率均为130 mW,APD探测器接收灵敏度约为-31dBm,PMT探测器灵敏度约为-55 dBm。测试场景图如图12所示,其中(a)、(b)为空间测试场景图,(c)、(d)为水下测试场景图。
下午在空间上对该套设备的性能进行了测试,速率为3 Mbps,通信距离为50 m时,测得误码率为10-8。实验截图如图13所示。
图13 空间光通信信道误码测试结果图Fig.13 Error test result of space optical communication channel
晚上在水下对该套设备的性能进行了测试,发射端由蓝光发射光源,接收端由大面积APD进行光接收,测试的误码率情况如图14所示。
经过多次测试得到结论,最佳情况为:空间中测试,绿光LED发射,PMT接收,通信距离50 m,通信速率3 Mbps可达到0误码;空间中蓝光LED发射,APD接收,则误码率为10-8,此时可双向发送接收近乎完整的多媒体数据;水下环境测试,蓝光LD发射,APD接收,通信距离15 m,通信速率50 Mbps可达到0误码,可接收完整数据;水下环境测试,绿光LD发射,PMT接收,通信距离40 m,通信速率3M,误码率为10-5,接收数据不完整。
图14 水下光通信信道误码测试结果图Fig.14 Error test results of underwater optical communication channel
3 结论
综上所述,本文中PC与FPGA所组成的多媒体数据传输系统具有稳定性与可靠性,且能够加入到水下光通信系统中进行实验,并在不同传输速率下能够测得光通信信道的误码率,得到光通信系统性能评价的关键指标参数。还能够进行实时的数据回传,当前通信速率以绘图形式呈现出来,非常直观;当前误码率也是实时在界面刷新,并且可停止在某一时刻获取当前时刻得误码率值。在误码率良好的情况下可进行多媒体数据的传输。该系统在水下光通信中十分具有应用意义,并具有稳定可靠性,用于水下光通信中。