一种基于FPGA实现的视频流可靠传输方案
扫描二维码
随时随地手机看文章
引言
近年来,移动互联网技术发展迅猛,人们希望在任何时间任何地点以任何方式进行通信,无线互联网技术无疑至关重要,尤其对图像及其传输的需求越来越迫切,其中视频的实时传输越发受到人们的重视,基于视频流的无线传输技术已形成新的研究热点。为了满足市场需求,本文提出一种新型的视频流传输方案:PC机发送的视频流通过网卡发送到网线上,网线的数据通过PHY芯片以GMII格式发送到FPGA,FPGA缓存并处理数据后以串行数据形式发送到SMA口上,经过放大后的电信号被电光转换模块转换成光信号,接收端的光电转换模块将接收到的电信号以SMA格式输入到FPGA,经过处理后的GMII格式数据通过PHY芯片与PC的网口相连,PC上的VLC只要经过相应正确的操作就能显示实时传输的视频流。
1系统结构及功能分析
1.1总体需求方案
由于现在的无线通信技术中带宽的限制,人们观看实时视频的时候经常出现卡屏的现象。为了达到流畅播放视频流的效果,设计出的总体需求方案框图如图1所示,其中的第一路到第四路都是光路,这样可以满足无线传输的效果。
从图1可以看到,图中一共有4路输出端可以接收到视频流,但是输出视频的切换由发送方完成。每一路连接输入与输出的光路都会在前端加一个放大器,且为提高设计效率采用现成的光电转换芯片完成光路的设计。
1.2总体设计方案
为实现上述需求方案,这里以一路设计为例来进行说明。本设计在视频流进入FPGA之前,先经过PHY芯片将视频流转换成GMII格式数据,这样做的好处是FPGA可以直接处理这种格式数据而不需要再做任何变换即可。而之所以这么做是因为,视频流数据做缓存和串并转换处理没有必要将数据包打开,即使是在报文解析拿出UDP端口号时也是仅仅用端口号做了判断,没有将数据包剥开或者打乱次序。通过引入现成的PHY芯片,我们大大降低了本方案的难度和工作量。
对于发送方和接收方FPGA之间的光路系统,包括放大电路、LED驱动电路、光路、电光转换电路和放大整形电路。首先,要将输出的串行数据流进行放大,放大后的信号耦合稳流电流源后再驱动LED驱动电路,这两部分组成电光转换模块。光电转换模块则包括了光电转换电路和放大整形电路两大部分,其中的光电转换电路用转换芯片完成,由于光路衰减比较严重,需要进行放大,然后整形成标准的TTL电平,这样之后才可以直接连接到FPGA当作数字信号进行处理。
接收方FPGA在接收到经过处理的串行信号后先从里面恢复出时钟,再进行缓存和串并转换处理,以GMII格式输出到PHY芯片上,PHY芯片通过网线与PC相连。只要接收方PC经过正确操作,就可以无失真地接收发送方PC传过来的实时视频流。
对于多路输出情形,只需在发送方FPGA的输出端再添加一路接收系统即可。这些系统包括光路系统、接收方FPGA、PHY芯片、网线和带有网卡的接收方PC。
2系统硬件及各结构实现
2.1京更件设计
以一路设计为例来说明,本系统的硬件框图如图2所示。
图2中,发送方PC和接收方PC要求主流配置即可,本设计采用的是:CPU为IntelCorei5-2450M,内存为4GB,显卡为NVIDIAGeForceGT630M,操作系统为64位Windows7。网卡也是主流应用的网卡,此处为BroadcomNetLinkBCM57785GigabitEthernet。
PHY芯片采用的是Marvell的成熟芯片88e1111。发送方和接收方FPGA均采用Xilinx的Vertex6芯片,型号为6vlx240t。电光转换芯片采用的是S6968。
对于多路输出情形,只需加一套发送方FPGA之后的所有硬件即可,唯一的差别就在于与发送方FPGA的接口不同而已。另外,为了能够控制通道切换,增加USB控制电路和LCD显示电路。在硬件上增加一片CP2103将USB转换为Uart,然后连接到FPGA管脚上。LCD模块则包括一片电压转换芯片ST2378E和LCD1602,用来显示通道切换情况。
2.2发送方FPGA的分模块设计
将发送方FPGA的设计分成锁相环、FIFO缓冲、DPRAM乒乓存储、UDP报文解析、通道切换、MicroBlaze处理器和并串转换共7个模块。
(1)缓存模块
该模块主要将接收到的来自PHY芯片的GMII格式数据经过FIFO和DPRAM后输出,FIFO输出数据送到报文解析模块,经过DPRAM进行乒乓存储后的数据传送到通道切换模块。
(2)报文解析模块
该模块的作用是在数据有效信号的上升沿开始接收发送来的数据,判断为MAC头并去掉MAC头,判断IP头并去掉IP头,判断UDP报文并取出目的端口号锁存,同时给一个
Valid信号。
Microblaze控制模块
用于判断Uart接口接收的字符串格式,给出4种不同端口号和对应的通道号,设置好LCD显示,然后将对应关系通过LCD显示出来。同时,MicroBlaze中的LwIP可以跑一个精简的IP协议,对Mac地址、IP地址及UDP端口号可方便设置,也有利于在扩展中把裸数据打包成为以太网标准格式的数据。
(4)通道切换模块
该模块通过Microblaze的控制信号结合报文解析模块的端口号判断哪个端口号对应哪个通道进行传输,为保证报文不被截断,在数据有效信号为低时进行切换。
(5)并串转换模块
该模块主要包括以下几部分:第一部分是FIFO:负责对来自外部的数据做缓冲处理;第二部分是DPRAM:负责存储来自FIFFO缓冲之后的Rxd;第三部分是核心控制模块:用于控制时序,并串转换,并将串行数据以7.35MHz时钟输出,有效数据的输出顺序为32位开始信号、12位长度信号和数据。2.3接收方FPGA设计
由于接收到的是串行数据且没有时钟,所以首先需要由串行数据恢复出7.35MHz时钟。
根据时钟接收32位开始信号,11位长度信号和8位数据信号,在开始信号匹配,长度信号满足以太网要求时,将数据信号用DPRAM进行乒乓存储后输出到Txd给PHY芯片,PHY芯片转换成RJ45格式数据送到网线上进行传输。
3系统测试结果
3.1测试方案
发送方PC通过VLC设置端口号并以广播的方式发送数据流到网卡,视频流通过本测试系统后在接收方PC上以VLC播放,播放的视频流为720P高清电影,视频位率在1Mb/s左右,最多同时播放4路,要求接收方PC上的视频流稳定输出无丢帧现象,且4路视频可以自由切换。
3.2测试结果
4路输出除在刚刚开始的时候有一点花屏,也会丢失1〜5帧数据,其他时间均正常显示,无花屏且无丢帧。
4改进及展望
本系统的缓存采用的是FPGA内部的DPRAM,大小只有4Kb深度,对于比较大的视频,缓存要达到数十兆甚至上百兆量级,所以,改进方案中可以考虑用DDR3来缓存数据,既可以解决FPGA内部RAM不够的问题,又可以充分利用比较成熟的DDR存储技术一FPGA内部利用控制DDR的IP核,外围接上硬件DDR3芯片。
当大视频流传输于长距离时,整个光路系统的功率会大大增加,为了能够正常接收实时视频流,就必须改变现有的光路系统,但是架构无需改动,只要在硬件选型上改成大功率的芯片即可,同时,模拟电路部分也要重新进行设计。
Microblaze的加入有利于设计的扩展,包括将普通数据流打包成为以太网数据格式进行传输,或者增进控制逻辑等。
应用预测:本系统可应用在快餐店甚至候车厅里面,将现在的灯改成我们实验里面所用的带有视频流信号的LED灯即可。其他类似领域也可以应用此系统,既可以提高视频流传输效率,又可以节约能源,非常实用。
5结语
本文首先从现实出发提出一种实际的市场需求,然后结合现有的技术给出一个比较合理的设计方案。为实现该方案,从硬件软件设计角度给出可行性设计。实际上,本系统已经在硬件上实现并通过FPGA的设计完成了视频流的实时传输,限于篇幅仅对设计框图及思路进行了描述。设计结果则如第三节所述,接收方的视频流和发送方视频流除了有0.4s左右的延时外完全一致,丢帧率为零。
20211119_619729ef281a7__一种基于FPGA实现的视频流可靠传输方案