基于NIOS II的video over ip設(shè)計(jì)
0 引言
本文介紹的設(shè)計(jì)方案基于Altera 公司的NiosII IP 核(知識(shí)產(chǎn)權(quán)功能模塊), 實(shí)現(xiàn)了MPEG2-TS 格式數(shù)據(jù)和基于以太網(wǎng)的IP 網(wǎng)絡(luò)的橋接??梢酝ㄟ^(guò)多個(gè)輸入端口接收TS 格式的數(shù)據(jù)并打包進(jìn)行以太網(wǎng)傳輸。使用的是工業(yè)標(biāo)準(zhǔn)的用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP)/IP 網(wǎng)絡(luò)數(shù)據(jù)格式打包,并帶有可選的實(shí)時(shí)傳輸協(xié)議(RTP)格式打包作為可選選項(xiàng)。所支持的網(wǎng)絡(luò)設(shè)備硬件包括100Mbps(全雙工)模式和1Gbps 以太網(wǎng)連接并且可以處理多達(dá)256 個(gè)獨(dú)立的數(shù)據(jù)流。通過(guò)硬件打包的方式,可以實(shí)現(xiàn)千兆以太網(wǎng)性能的低延遲傳輸?shù)木€路速率。
1 相關(guān)網(wǎng)絡(luò)協(xié)議及工作原理
按照連接方式, 網(wǎng)絡(luò)協(xié)議可以分為面向連接和無(wú)面向連接兩大類(lèi),分別以傳輸控制協(xié)議(TCP)和用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP) 為代表,而webserver 所使用的HTTP 協(xié)議就是以TCP 協(xié)議為基礎(chǔ)的。TCP 通過(guò)三次握手建立連接之后才可以進(jìn)行數(shù)據(jù)傳遞。整個(gè)過(guò)程是一個(gè)主從應(yīng)答方式。如果超過(guò)一定時(shí)間一方無(wú)響應(yīng),那么這個(gè)連接就會(huì)失效,被服務(wù)器斷開(kāi)。這種協(xié)議有這可靠的連接驗(yàn)證機(jī)制,適合做客戶(hù)機(jī)-服務(wù)器之間的對(duì)話操作,比如webserver,對(duì)網(wǎng)絡(luò)延遲要求嚴(yán)格程度較高。相對(duì)應(yīng)的UDP 協(xié)議常常是發(fā)送數(shù)據(jù)的一方對(duì)著某個(gè)目標(biāo)地址無(wú)腦發(fā)數(shù)據(jù),只要一開(kāi)始尋找到目標(biāo)網(wǎng)段中存在這個(gè)目標(biāo)網(wǎng)絡(luò)設(shè)備,那么數(shù)據(jù)發(fā)送就會(huì)開(kāi)始。其間不會(huì)在意目標(biāo)地址是否真正接收到了所發(fā)送出的數(shù)據(jù)。因此此類(lèi)協(xié)議適合做實(shí)時(shí)的大碼率的信號(hào)傳送,對(duì)網(wǎng)絡(luò)延遲延遲無(wú)要求,數(shù)據(jù)源和目的設(shè)備之間的通信隨時(shí)可以斷開(kāi),也可以隨時(shí)恢復(fù)。
2 MPEG2-TS 數(shù)據(jù)在以太網(wǎng)中的傳輸
2.1 MPEG2-TS 結(jié)構(gòu)介紹
圖1 頻率合成器的硬件原理圖
MPEG2-TS,TS 即"Transport Stream"的縮寫(xiě)。它是分包發(fā)送的,每一個(gè)包長(zhǎng)為188 字節(jié)。包的結(jié)構(gòu)為,包頭為4 個(gè)字節(jié),負(fù)載為184 個(gè)字節(jié)。在TS 流里可以填入很多類(lèi)型的數(shù)據(jù),如視頻、音頻、自定義信息等。MPEG2-TS 主要應(yīng)用于實(shí)時(shí)傳送的節(jié)目,比如實(shí)時(shí)廣播的電視節(jié)目。MPEG2-TS 格式的特點(diǎn)就是要求從視頻流的任一片段開(kāi)始都是可以獨(dú)立解碼的。簡(jiǎn)單地說(shuō), 將DVD 上的VOB 文件的前面一截cut 掉(或者是數(shù)據(jù)損壞數(shù)據(jù))就會(huì)導(dǎo)致整個(gè)文件無(wú)法解碼,而電視節(jié)目是任何時(shí)候打開(kāi)電視機(jī)都能解碼收看的。TS 是一個(gè)非常常見(jiàn)的實(shí)時(shí)數(shù)字信號(hào)傳輸方式。TS 流的數(shù)據(jù)格式如圖1 所示。
2.2 以太網(wǎng)幀結(jié)構(gòu)
以太網(wǎng)幀結(jié)構(gòu)有好幾種類(lèi)型,比較典型的由以下各部分組成:前序字段、幀起始定界符字段、目的地址字段、源地址字段、類(lèi)型字段、長(zhǎng)度字段、數(shù)據(jù)字段、校驗(yàn)序列字段。其中有幾個(gè)特性非常重要:
(1)類(lèi)型字段規(guī)定了該網(wǎng)絡(luò)幀所用到的網(wǎng)絡(luò)協(xié)議,擁有固定的標(biāo)志位可以作為特征對(duì)比的依據(jù),也可以修改這個(gè)標(biāo)志位,人為地重新指定所用的網(wǎng)絡(luò)協(xié)議。(2)一個(gè)網(wǎng)絡(luò)幀只使用一個(gè)網(wǎng)絡(luò)協(xié)議。(3)TS 流數(shù)據(jù)也有著特有的標(biāo)志位,可以用來(lái)數(shù)據(jù)識(shí)別。
2.3 通過(guò)Video over ip 模塊的MPEG2-TS 流在以太網(wǎng)中的傳輸
任意的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)入網(wǎng)口之后,F(xiàn)PGA 中的Video over ip 模塊會(huì)按照MPEG2-TS 特征位以及整個(gè)幀的幾個(gè)標(biāo)志位加以比較, 然后作判斷: 滿(mǎn)足MPEG-TS 數(shù)據(jù)的幀且類(lèi)型字段中協(xié)議標(biāo)志位不為17(17表示UDP),模塊會(huì)將這個(gè)標(biāo)志位改為17,然后從專(zhuān)門(mén)的數(shù)據(jù)通道進(jìn)行傳輸。其他數(shù)據(jù)允許直接通過(guò)NiosII 處理器。
3 實(shí)際設(shè)計(jì)介紹
3.1 硬件部分
本設(shè)計(jì)基于Altera Cyclone 系列的FPGA,而NiosII 處理器則是內(nèi)嵌在FPGA 中的一個(gè)片上可編程處理器(SOPC)。我們通過(guò)Altera 提供的集成開(kāi)發(fā)環(huán)境QuartusII 中所帶的sopc_builder 從FPGA 中劃取資源來(lái)構(gòu)建硬件。整個(gè)SOPC 系統(tǒng)硬件部分與MCU 系統(tǒng)如單片機(jī)、Arm等非常類(lèi)似, 是一個(gè)32 位的嵌入式CPU,有內(nèi)部指令集。這一點(diǎn)與FPGA 芯片本身差別非常大。此外FPGA 通過(guò)一個(gè)DP83848 的PHY芯片與網(wǎng)口插座相連,這樣網(wǎng)絡(luò)設(shè)備的MAC 層做到FPGA 或SOPC中。NoisII 系統(tǒng)的硬件結(jié)構(gòu)如圖2 所示。
圖2 基于NiosII 的SOPC 系統(tǒng)硬件結(jié)構(gòu)
3.2 軟件部分
圖3 控制外設(shè)所用到得webserver 在播放視頻時(shí)的穩(wěn)定性測(cè)試
FPGA的程序可以通過(guò)Quartus 集成環(huán)境開(kāi)發(fā), 我們通過(guò)Verilog語(yǔ)言編寫(xiě),然后直接通過(guò)Quartus 編譯后即可下載運(yùn)行。而NiosII 部分的軟件則要使用Altera 提供的另一個(gè)集成環(huán)境NiosEDS,并編寫(xiě)嵌入式的C 語(yǔ)言來(lái)開(kāi)發(fā)。之后再通過(guò)環(huán)境所帶的編譯器編譯下載運(yùn)行。而Video over ip 模塊我們通過(guò)Verilog 語(yǔ)言編寫(xiě),然后打包成IP 核可以被sopc_builder 加載調(diào)用。此外還需要通過(guò)NiosEDS 自帶的niche_stack 網(wǎng)絡(luò)協(xié)議棧搭建一個(gè)嵌入式webserver。
4 檢測(cè)說(shuō)明及小結(jié)
正如前文所說(shuō),webserver 基于HTTP 協(xié)議,該協(xié)議以TCP 協(xié)議為基礎(chǔ)。測(cè)試時(shí)我們將一臺(tái)電腦通過(guò)網(wǎng)線與實(shí)驗(yàn)板的網(wǎng)口相連,并通過(guò)VLC 播放器對(duì)FPGA 不間斷播放MPEG2-TS 格式的視頻流,同時(shí)將NiosII 上的werbserver 開(kāi)啟運(yùn)行。如果沒(méi)有Video over ip 模塊,由于視頻數(shù)據(jù)的碼率較大,給webserver 造成極大的延遲,并很快崩潰。當(dāng)我們開(kāi)啟Video over ip 模塊之后,為保險(xiǎn)起見(jiàn),做了12 小時(shí)的連續(xù)不間斷視頻播放, 同時(shí)電腦通過(guò)不斷刷新web 頁(yè)面的方式不斷訪問(wèn)
webserver,即以此方式檢查PC 機(jī)與webserver 連接的通斷。經(jīng)測(cè)試,這12 小時(shí)間以及之后webserver 中的頁(yè)面始終可以正常訪問(wèn), 無(wú)異常情況。測(cè)試結(jié)果符合預(yù)期要求。測(cè)試過(guò)程如圖3 所示。