一種基于FPGA實現(xiàn)的視頻流可靠傳輸方案
引言
近年來,移動互聯(lián)網(wǎng)技術(shù)發(fā)展迅猛,人們希望在任何時間任何地點以任何方式進(jìn)行通信,無線互聯(lián)網(wǎng)技術(shù)無疑至關(guān)重要,尤其對圖像及其傳輸?shù)男枨笤絹碓狡惹?,其中視頻的實時傳輸越發(fā)受到人們的重視,基于視頻流的無線傳輸技術(shù)已形成新的研究熱點。為了滿足市場需求,本文提出一種新型的視頻流傳輸方案:PC機發(fā)送的視頻流通過網(wǎng)卡發(fā)送到網(wǎng)線上,網(wǎng)線的數(shù)據(jù)通過PHY芯片以GMII格式發(fā)送到FPGA,F(xiàn)PGA緩存并處理數(shù)據(jù)后以串行數(shù)據(jù)形式發(fā)送到SMA口上,經(jīng)過放大后的電信號被電光轉(zhuǎn)換模塊轉(zhuǎn)換成光信號,接收端的光電轉(zhuǎn)換模塊將接收到的電信號以SMA格式輸入到FPGA,經(jīng)過處理后的GMII格式數(shù)據(jù)通過PHY芯片與PC的網(wǎng)口相連,PC上的VLC只要經(jīng)過相應(yīng)正確的操作就能顯示實時傳輸?shù)囊曨l流。
1系統(tǒng)結(jié)構(gòu)及功能分析
1.1總體需求方案
由于現(xiàn)在的無線通信技術(shù)中帶寬的限制,人們觀看實時視頻的時候經(jīng)常出現(xiàn)卡屏的現(xiàn)象。為了達(dá)到流暢播放視頻流的效果,設(shè)計出的總體需求方案框圖如圖1所示,其中的第一路到第四路都是光路,這樣可以滿足無線傳輸?shù)男Ч?
從圖1可以看到,圖中一共有4路輸出端可以接收到視頻流,但是輸出視頻的切換由發(fā)送方完成。每一路連接輸入與輸出的光路都會在前端加一個放大器,且為提高設(shè)計效率采用現(xiàn)成的光電轉(zhuǎn)換芯片完成光路的設(shè)計。
1.2總體設(shè)計方案
為實現(xiàn)上述需求方案,這里以一路設(shè)計為例來進(jìn)行說明。本設(shè)計在視頻流進(jìn)入FPGA之前,先經(jīng)過PHY芯片將視頻流轉(zhuǎn)換成GMII格式數(shù)據(jù),這樣做的好處是FPGA可以直接處理這種格式數(shù)據(jù)而不需要再做任何變換即可。而之所以這么做是因為,視頻流數(shù)據(jù)做緩存和串并轉(zhuǎn)換處理沒有必要將數(shù)據(jù)包打開,即使是在報文解析拿出UDP端口號時也是僅僅用端口號做了判斷,沒有將數(shù)據(jù)包剝開或者打亂次序。通過引入現(xiàn)成的PHY芯片,我們大大降低了本方案的難度和工作量。
對于發(fā)送方和接收方FPGA之間的光路系統(tǒng),包括放大電路、LED驅(qū)動電路、光路、電光轉(zhuǎn)換電路和放大整形電路。首先,要將輸出的串行數(shù)據(jù)流進(jìn)行放大,放大后的信號耦合穩(wěn)流電流源后再驅(qū)動LED驅(qū)動電路,這兩部分組成電光轉(zhuǎn)換模塊。光電轉(zhuǎn)換模塊則包括了光電轉(zhuǎn)換電路和放大整形電路兩大部分,其中的光電轉(zhuǎn)換電路用轉(zhuǎn)換芯片完成,由于光路衰減比較嚴(yán)重,需要進(jìn)行放大,然后整形成標(biāo)準(zhǔn)的TTL電平,這樣之后才可以直接連接到FPGA當(dāng)作數(shù)字信號進(jìn)行處理。
接收方FPGA在接收到經(jīng)過處理的串行信號后先從里面恢復(fù)出時鐘,再進(jìn)行緩存和串并轉(zhuǎn)換處理,以GMII格式輸出到PHY芯片上,PHY芯片通過網(wǎng)線與PC相連。只要接收方PC經(jīng)過正確操作,就可以無失真地接收發(fā)送方PC傳過來的實時視頻流。
對于多路輸出情形,只需在發(fā)送方FPGA的輸出端再添加一路接收系統(tǒng)即可。這些系統(tǒng)包括光路系統(tǒng)、接收方FPGA、PHY芯片、網(wǎng)線和帶有網(wǎng)卡的接收方PC。
2系統(tǒng)硬件及各結(jié)構(gòu)實現(xiàn)
2.1京更件設(shè)計
以一路設(shè)計為例來說明,本系統(tǒng)的硬件框圖如圖2所示。
圖2中,發(fā)送方PC和接收方PC要求主流配置即可,本設(shè)計采用的是:CPU為IntelCorei5-2450M,內(nèi)存為4GB,顯卡為NVIDIAGeForceGT630M,操作系統(tǒng)為64位Windows7。網(wǎng)卡也是主流應(yīng)用的網(wǎng)卡,此處為BroadcomNetLinkBCM57785GigabitEthernet。
PHY芯片采用的是Marvell的成熟芯片88e1111。發(fā)送方和接收方FPGA均采用Xilinx的Vertex6芯片,型號為6vlx240t。電光轉(zhuǎn)換芯片采用的是S6968。
對于多路輸出情形,只需加一套發(fā)送方FPGA之后的所有硬件即可,唯一的差別就在于與發(fā)送方FPGA的接口不同而已。另外,為了能夠控制通道切換,增加USB控制電路和LCD顯示電路。在硬件上增加一片CP2103將USB轉(zhuǎn)換為Uart,然后連接到FPGA管腳上。LCD模塊則包括一片電壓轉(zhuǎn)換芯片ST2378E和LCD1602,用來顯示通道切換情況。
2.2發(fā)送方FPGA的分模塊設(shè)計
將發(fā)送方FPGA的設(shè)計分成鎖相環(huán)、FIFO緩沖、DPRAM乒乓存儲、UDP報文解析、通道切換、MicroBlaze處理器和并串轉(zhuǎn)換共7個模塊。
(1)緩存模塊
該模塊主要將接收到的來自PHY芯片的GMII格式數(shù)據(jù)經(jīng)過FIFO和DPRAM后輸出,F(xiàn)IFO輸出數(shù)據(jù)送到報文解析模塊,經(jīng)過DPRAM進(jìn)行乒乓存儲后的數(shù)據(jù)傳送到通道切換模塊。
(2)報文解析模塊
該模塊的作用是在數(shù)據(jù)有效信號的上升沿開始接收發(fā)送來的數(shù)據(jù),判斷為MAC頭并去掉MAC頭,判斷IP頭并去掉IP頭,判斷UDP報文并取出目的端口號鎖存,同時給一個
Valid信號。
Microblaze控制模塊
用于判斷Uart接口接收的字符串格式,給出4種不同端口號和對應(yīng)的通道號,設(shè)置好LCD顯示,然后將對應(yīng)關(guān)系通過LCD顯示出來。同時,MicroBlaze中的LwIP可以跑一個精簡的IP協(xié)議,對Mac地址、IP地址及UDP端口號可方便設(shè)置,也有利于在擴展中把裸數(shù)據(jù)打包成為以太網(wǎng)標(biāo)準(zhǔn)格式的數(shù)據(jù)。
(4)通道切換模塊
該模塊通過Microblaze的控制信號結(jié)合報文解析模塊的端口號判斷哪個端口號對應(yīng)哪個通道進(jìn)行傳輸,為保證報文不被截斷,在數(shù)據(jù)有效信號為低時進(jìn)行切換。
(5)并串轉(zhuǎn)換模塊
該模塊主要包括以下幾部分:第一部分是FIFO:負(fù)責(zé)對來自外部的數(shù)據(jù)做緩沖處理;第二部分是DPRAM:負(fù)責(zé)存儲來自FIFFO緩沖之后的Rxd;第三部分是核心控制模塊:用于控制時序,并串轉(zhuǎn)換,并將串行數(shù)據(jù)以7.35MHz時鐘輸出,有效數(shù)據(jù)的輸出順序為32位開始信號、12位長度信號和數(shù)據(jù)。2.3接收方FPGA設(shè)計
由于接收到的是串行數(shù)據(jù)且沒有時鐘,所以首先需要由串行數(shù)據(jù)恢復(fù)出7.35MHz時鐘。
根據(jù)時鐘接收32位開始信號,11位長度信號和8位數(shù)據(jù)信號,在開始信號匹配,長度信號滿足以太網(wǎng)要求時,將數(shù)據(jù)信號用DPRAM進(jìn)行乒乓存儲后輸出到Txd給PHY芯片,PHY芯片轉(zhuǎn)換成RJ45格式數(shù)據(jù)送到網(wǎng)線上進(jìn)行傳輸。
3系統(tǒng)測試結(jié)果
3.1測試方案
發(fā)送方PC通過VLC設(shè)置端口號并以廣播的方式發(fā)送數(shù)據(jù)流到網(wǎng)卡,視頻流通過本測試系統(tǒng)后在接收方PC上以VLC播放,播放的視頻流為720P高清電影,視頻位率在1Mb/s左右,最多同時播放4路,要求接收方PC上的視頻流穩(wěn)定輸出無丟幀現(xiàn)象,且4路視頻可以自由切換。
3.2測試結(jié)果
4路輸出除在剛剛開始的時候有一點花屏,也會丟失1?5幀數(shù)據(jù),其他時間均正常顯示,無花屏且無丟幀。
4改進(jìn)及展望
本系統(tǒng)的緩存采用的是FPGA內(nèi)部的DPRAM,大小只有4Kb深度,對于比較大的視頻,緩存要達(dá)到數(shù)十兆甚至上百兆量級,所以,改進(jìn)方案中可以考慮用DDR3來緩存數(shù)據(jù),既可以解決FPGA內(nèi)部RAM不夠的問題,又可以充分利用比較成熟的DDR存儲技術(shù)一FPGA內(nèi)部利用控制DDR的IP核,外圍接上硬件DDR3芯片。
當(dāng)大視頻流傳輸于長距離時,整個光路系統(tǒng)的功率會大大增加,為了能夠正常接收實時視頻流,就必須改變現(xiàn)有的光路系統(tǒng),但是架構(gòu)無需改動,只要在硬件選型上改成大功率的芯片即可,同時,模擬電路部分也要重新進(jìn)行設(shè)計。
Microblaze的加入有利于設(shè)計的擴展,包括將普通數(shù)據(jù)流打包成為以太網(wǎng)數(shù)據(jù)格式進(jìn)行傳輸,或者增進(jìn)控制邏輯等。
應(yīng)用預(yù)測:本系統(tǒng)可應(yīng)用在快餐店甚至候車廳里面,將現(xiàn)在的燈改成我們實驗里面所用的帶有視頻流信號的LED燈即可。其他類似領(lǐng)域也可以應(yīng)用此系統(tǒng),既可以提高視頻流傳輸效率,又可以節(jié)約能源,非常實用。
5結(jié)語
本文首先從現(xiàn)實出發(fā)提出一種實際的市場需求,然后結(jié)合現(xiàn)有的技術(shù)給出一個比較合理的設(shè)計方案。為實現(xiàn)該方案,從硬件軟件設(shè)計角度給出可行性設(shè)計。實際上,本系統(tǒng)已經(jīng)在硬件上實現(xiàn)并通過FPGA的設(shè)計完成了視頻流的實時傳輸,限于篇幅僅對設(shè)計框圖及思路進(jìn)行了描述。設(shè)計結(jié)果則如第三節(jié)所述,接收方的視頻流和發(fā)送方視頻流除了有0.4s左右的延時外完全一致,丟幀率為零。
20211119_619729ef281a7__一種基于FPGA實現(xiàn)的視頻流可靠傳輸方案