0 引言
本文介绍的设计方案基于Altera 公司的NiosII IP 核(知识产权功能模块), 实现了MPEG2-TS 格式数据和基于以太网的IP 网络的桥接。可以通过多个输入端口接收TS 格式的数据并打包进行以太网传输。使用的是工业标准的用户数据报协议(UDP)/IP 网络数据格式打包,并带有可选的实时传输协议(RTP)格式打包作为可选选项。所支持的网络设备硬件包括100Mbps(全双工)模式和1Gbps 以太网连接并且可以处理多达256 个独立的数据流。通过硬件打包的方式,可以实现千兆以太网性能的低延迟传输的线路速率。
1 相关网络协议及工作原理
按照连接方式, 网络协议可以分为面向连接和无面向连接两大类,分别以传输控制协议(TCP)和用户数据报协议(UDP) 为代表,而webserver 所使用的HTTP 协议就是以TCP 协议为基础的。TCP 通过三次握手建立连接之后才可以进行数据传递。整个过程是一个主从应答方式。如果超过一定时间一方无响应,那么这个连接就会失效,被服务器断开。这种协议有这可靠的连接验证机制,适合做客户机-服务器之间的对话操作,比如webserver,对网络延迟要求严格程度较高。相对应的UDP 协议常常是发送数据的一方对着某个目标地址无脑发数据,只要一开始寻找到目标网段中存在这个目标网络设备,那么数据发送就会开始。其间不会在意目标地址是否真正接收到了所发送出的数据。因此此类协议适合做实时的大码率的信号传送,对网络延迟延迟无要求,数据源和目的设备之间的通信随时可以断开,也可以随时恢复。
2 MPEG2-TS 数据在以太网中的传输
2.1 MPEG2-TS 结构介绍
图1 频率合成器的硬件原理图
MPEG2-TS,TS 即"Transport Stream"的缩写。它是分包发送的,每一个包长为188 字节。包的结构为,包头为4 个字节,负载为184 个字节。在TS 流里可以填入很多类型的数据,如视频、音频、自定义信息等。MPEG2-TS 主要应用于实时传送的节目,比如实时广播的电视节目。MPEG2-TS 格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。简单地说, 将DVD 上的VOB 文件的前面一截cut 掉(或者是数据损坏数据)就会导致整个文件无法解码,而电视节目是任何时候打开电视机都能解码收看的。TS 是一个非常常见的实时数字信号传输方式。TS 流的数据格式如图1 所示。
2.2 以太网帧结构
以太网帧结构有好几种类型,比较典型的由以下各部分组成:前序字段、帧起始定界符字段、目的地址字段、源地址字段、类型字段、长度字段、数据字段、校验序列字段。其中有几个特性非常重要:
(1)类型字段规定了该网络帧所用到的网络协议,拥有固定的标志位可以作为特征对比的依据,也可以修改这个标志位,人为地重新指定所用的网络协议。(2)一个网络帧只使用一个网络协议。(3)TS 流数据也有着特有的标志位,可以用来数据识别。
2.3 通过Video over ip 模块的MPEG2-TS 流在以太网中的传输
任意的网络数据进入网口之后,FPGA 中的Video over ip 模块会按照MPEG2-TS 特征位以及整个帧的几个标志位加以比较, 然后作判断: 满足MPEG-TS 数据的帧且类型字段中协议标志位不为17(17表示UDP),模块会将这个标志位改为17,然后从专门的数据通道进行传输。其他数据允许直接通过NiosII 处理器。
3 实际设计介绍
3.1 硬件部分
本设计基于Altera Cyclone 系列的FPGA,而NiosII 处理器则是内嵌在FPGA 中的一个片上可编程处理器(SOPC)。我们通过Altera 提供的集成开发环境QuartusII 中所带的sopc_builder 从FPGA 中划取资源来构建硬件。整个SOPC 系统硬件部分与MCU 系统如单片机、Arm等非常类似, 是一个32 位的嵌入式CPU,有内部指令集。这一点与FPGA 芯片本身差别非常大。此外FPGA 通过一个DP83848 的PHY芯片与网口插座相连,这样网络设备的MAC 层做到FPGA 或SOPC中。NoisII 系统的硬件结构如图2 所示。
图2 基于NiosII 的SOPC 系统硬件结构
3.2 软件部分
图3 控制外设所用到得webserver 在播放视频时的稳定性测试
FPGA的程序可以通过Quartus 集成环境开发, 我们通过Verilog语言编写,然后直接通过Quartus 编译后即可下载运行。而NiosII 部分的软件则要使用Altera 提供的另一个集成环境NiosEDS,并编写嵌入式的C 语言来开发。之后再通过环境所带的编译器编译下载运行。而Video over ip 模块我们通过Verilog 语言编写,然后打包成IP 核可以被sopc_builder 加载调用。此外还需要通过NiosEDS 自带的niche_stack 网络协议栈搭建一个嵌入式webserver。
4 检测说明及小结
正如前文所说,webserver 基于HTTP 协议,该协议以TCP 协议为基础。测试时我们将一台电脑通过网线与实验板的网口相连,并通过VLC 播放器对FPGA 不间断播放MPEG2-TS 格式的视频流,同时将NiosII 上的werbserver 开启运行。如果没有Video over ip 模块,由于视频数据的码率较大,给webserver 造成极大的延迟,并很快崩溃。当我们开启Video over ip 模块之后,为保险起见,做了12 小时的连续不间断视频播放, 同时电脑通过不断刷新web 页面的方式不断访问
webserver,即以此方式检查PC 机与webserver 连接的通断。经测试,这12 小时间以及之后webserver 中的页面始终可以正常访问, 无异常情况。测试结果符合预期要求。测试过程如图3 所示。