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