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