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