FPGA高端項(xiàng)目:FPGA基于GS2971+GS2972架構(gòu)的SDI視頻收發(fā)+純verilog圖像縮放+多路視頻拼接,提供8套工程源碼和技術(shù)支持
1、前言
目前FPGA實(shí)現(xiàn)SDI視頻編解碼有兩種方案:一是使用專用編解碼芯片,比如典型的接收器GS2971,發(fā)送器GS2972,優(yōu)點(diǎn)是簡(jiǎn)單,比如GS2971接收器直接將SDI解碼為并行的YCrCb422,GS2972發(fā)送器直接將并行的YCrCb422編碼為SDI視頻,缺點(diǎn)是成本較高,可以百度一下GS2971和GS2972的價(jià)格;另一種方案是使用FPGA邏輯資源部實(shí)現(xiàn)SDI編解碼,利用Xilinx系列FPGA的GTP/GTX資源實(shí)現(xiàn)解串,利用Xilinx系列FPGA的SMPTE SDI資源實(shí)現(xiàn)SDI編解碼,優(yōu)點(diǎn)是合理利用了FPGA資源,GTP/GTX資源不用白不用,缺點(diǎn)是操作難度大一些,對(duì)FPGA開發(fā)者的技術(shù)水平要求較高。有意思的是,這兩種方案在本博這里都有對(duì)應(yīng)的解決方案,包括硬件的FPGA開發(fā)板、工程源碼等等。
本設(shè)計(jì)基于Xilinx的Zynq7100-xc7z100ffg900-2中端FPGA開發(fā)板使用GS2971實(shí)現(xiàn)SDI視頻接收+純verilog圖像縮放+多路視頻拼接+GS2972實(shí)現(xiàn)SDI視頻發(fā)送,視頻源有兩種,分別對(duì)應(yīng)開發(fā)者手里有沒有SDI相機(jī)的情況,一種是使用HD-SDI相機(jī),也可以使用SD-SDI或者3G-SDI相機(jī),因?yàn)楸驹O(shè)計(jì)是三種SDI視頻自適應(yīng)的;如果你的手里沒有SDI相機(jī)或者沒有SDI相機(jī)輸入接口,則可使用FPGA內(nèi)部生成的動(dòng)態(tài)彩條模擬SDI相機(jī)視頻;視頻源的選擇通過代碼頂層的define宏定義進(jìn)行選擇,默認(rèn)使用SDI相機(jī)作為視頻源;同軸的SDI視頻通過同軸線連接到GS2971轉(zhuǎn)接板,GS2971解碼芯片將同軸的串行的SDI視頻解碼為并行的BT1120格式視頻,至此,SDI視頻解碼操作已經(jīng)完成,可以進(jìn)行常規(guī)的圖像處理操作了;本設(shè)計(jì)的目的是做純verilog圖像縮放+純verilog多路視頻拼接后再經(jīng)過GS2972后輸出,需要進(jìn)行BT1120視頻進(jìn)行轉(zhuǎn)RGB+純verilog圖像縮放+純verilog多路視頻拼接+圖像緩存+RGB轉(zhuǎn)BT1120視頻操作;本設(shè)計(jì)使用BT1120轉(zhuǎn)RGB模塊實(shí)現(xiàn)視頻格式轉(zhuǎn)換;圖像縮放采用純verilog代碼實(shí)現(xiàn)的圖像縮放架構(gòu)實(shí)現(xiàn)SDI的圖像縮放操作,將原始的1920x1080分辨率的SDI視頻縮小為960x540,當(dāng)然,讀者也可以縮放為其他分辨率;純verilog多路視頻拼接+圖像緩存使用FDMA架構(gòu),該架構(gòu)簡(jiǎn)單靈活,輸入接口為VGA視頻時(shí)序,即用VS、DE、RGB數(shù)據(jù),將不同的視頻寫入不同的內(nèi)存地址再統(tǒng)一讀出來,以達(dá)到拼接效果,F(xiàn)DMA架構(gòu)的視頻既可以緩存到PL端DDR,也可以緩存到PS端DDR,針對(duì)不同的項(xiàng)目需求;圖像從DDR3讀出后,進(jìn)入純verilog代碼實(shí)現(xiàn)RGB轉(zhuǎn)BT1120視頻模塊實(shí)現(xiàn)視頻格式轉(zhuǎn)換;最后BT1120視頻經(jīng)過GS2972編碼芯片被編碼為同軸的串行的SDI視頻輸出,并經(jīng)過SDI轉(zhuǎn)HDMI盒子輸出到顯示器;本博客提供8套工程源碼,具體如下:
現(xiàn)對(duì)上述8套工程源碼做如下解釋,方便讀者理解:
工程源碼7:
輸入視頻為HD-SDI相機(jī)或動(dòng)態(tài)彩條,輸入分辨率為1920x1080@30Hz,經(jīng)過GS2971解碼+BT1120轉(zhuǎn)RGB+純verilog圖像縮放+FDMA圖像緩存+2路視頻拼接+RGB轉(zhuǎn)BT1120模塊+GS2972編碼后,以3G-SDI接口方式輸出,圖像縮放方案采用純verilog代碼實(shí)現(xiàn),從1920x1080縮放為960x1080,然后將縮放后的視頻復(fù)制為2份以模擬2路視頻,再將這2路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加2路拼接視頻,即2分屏顯示;此工程的FDMA圖像緩存架構(gòu)將視頻緩存到PL端DDR3,適應(yīng)于純FPGA項(xiàng)目,比如可用于Xilinx的Artix7、Kintex7、Virtex7等FPGA;
工程源碼8:
輸入視頻為HD-SDI相機(jī)或動(dòng)態(tài)彩條,輸入分辨率為1920x1080@30Hz,經(jīng)過GS2971解碼+BT1120轉(zhuǎn)RGB+純verilog圖像縮放+FDMA圖像緩存+4路視頻拼接+RGB轉(zhuǎn)BT1120模塊+GS2972編碼后,以3G-SDI接口方式輸出,圖像縮放方案采用純verilog代碼實(shí)現(xiàn),從1920x1080縮放為960x540,然后將縮放后的視頻復(fù)制為4份以模擬4路視頻,再將這4路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加4路拼接視頻,即4分屏顯示;此工程的FDMA圖像緩存架構(gòu)將視頻緩存到PL端DDR3,適應(yīng)于純FPGA項(xiàng)目,比如可用于Xilinx的Artix7、Kintex7、Virtex7等FPGA;
工程源碼9:
輸入視頻為HD-SDI相機(jī)或動(dòng)態(tài)彩條,輸入分辨率為1920x1080@30Hz,經(jīng)過GS2971解碼+BT1120轉(zhuǎn)RGB+純verilog圖像縮放+FDMA圖像緩存+8路視頻拼接+RGB轉(zhuǎn)BT1120模塊+GS2972編碼后,以3G-SDI接口方式輸出,圖像縮放方案采用純verilog代碼實(shí)現(xiàn),從1920x1080縮放為480x540,然后將縮放后的視頻復(fù)制為8份以模擬8路視頻,再將這8路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加8路拼接視頻,即8分屏顯示;此工程的FDMA圖像緩存架構(gòu)將視頻緩存到PL端DDR3,適應(yīng)于純FPGA項(xiàng)目,比如可用于Xilinx的Artix7、Kintex7、Virtex7等FPGA;
工程源碼10:
輸入視頻為HD-SDI相機(jī)或動(dòng)態(tài)彩條,輸入分辨率為1920x1080@30Hz,經(jīng)過GS2971解碼+BT1120轉(zhuǎn)RGB+純verilog圖像縮放+FDMA圖像緩存+16路視頻拼接+RGB轉(zhuǎn)BT1120模塊+GS2972編碼后,以3G-SDI接口方式輸出,圖像縮放方案采用純verilog代碼實(shí)現(xiàn),從1920x1080縮放為240x540,然后將縮放后的視頻復(fù)制為16份以模擬16路視頻,再將這16路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加16路拼接視頻,即16分屏顯示;此工程的FDMA圖像緩存架構(gòu)將視頻緩存到PL端DDR3,適應(yīng)于純FPGA項(xiàng)目,比如可用于Xilinx的Artix7、Kintex7、Virtex7等FPGA;
工程源碼11:
輸入視頻為HD-SDI相機(jī)或動(dòng)態(tài)彩條,輸入分辨率為1920x1080@30Hz,經(jīng)過GS2971解碼+BT1120轉(zhuǎn)RGB+純verilog圖像縮放+FDMA圖像緩存+2路視頻拼接+RGB轉(zhuǎn)BT1120模塊+GS2972編碼后,以3G-SDI接口方式輸出,圖像縮放方案采用純verilog代碼實(shí)現(xiàn),從1920x1080縮放為960x1080,然后將縮放后的視頻復(fù)制為2份以模擬2路視頻,再將這2路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加2路拼接視頻,即2分屏顯示;此工程的FDMA圖像緩存架構(gòu)將視頻緩存到PS端DDR3,既可用于純FPGA項(xiàng)目,比如可用于Xilinx的Artix7、Kintex7、Virtex7等FPGA,配合MicroBlaze;也可用于Zynq系列FPGA項(xiàng)目,比如可用于Xilinx的Zynq7000系列、Zynq7000、Zynq UltraScale等FPGA;
工程源碼12:
輸入視頻為HD-SDI相機(jī)或動(dòng)態(tài)彩條,輸入分辨率為1920x1080@30Hz,經(jīng)過GS2971解碼+BT1120轉(zhuǎn)RGB+純verilog圖像縮放+FDMA圖像緩存+4路視頻拼接+RGB轉(zhuǎn)BT1120模塊+GS2972編碼后,以3G-SDI接口方式輸出,圖像縮放方案采用純verilog代碼實(shí)現(xiàn),從1920x1080縮放為960x540,然后將縮放后的視頻復(fù)制為4份以模擬4路視頻,再將這4路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加4路拼接視頻,即4分屏顯示;此工程的FDMA圖像緩存架構(gòu)將視頻緩存到PS端DDR3,既可用于純FPGA項(xiàng)目,比如可用于Xilinx的Artix7、Kintex7、Virtex7等FPGA,配合MicroBlaze;也可用于Zynq系列FPGA項(xiàng)目,比如可用于Xilinx的Zynq7000系列、Zynq7000、Zynq UltraScale等FPGA;
工程源碼13:
輸入視頻為HD-SDI相機(jī)或動(dòng)態(tài)彩條,輸入分辨率為1920x1080@30Hz,經(jīng)過GS2971解碼+BT1120轉(zhuǎn)RGB+純verilog圖像縮放+FDMA圖像緩存+8路視頻拼接+RGB轉(zhuǎn)BT1120模塊+GS2972編碼后,以3G-SDI接口方式輸出,圖像縮放方案采用純verilog代碼實(shí)現(xiàn),從1920x1080縮放為480x540,然后將縮放后的視頻復(fù)制為8份以模擬8路視頻,再將這8路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加8路拼接視頻,即8分屏顯示;此工程的FDMA圖像緩存架構(gòu)將視頻緩存到PS端DDR3,既可用于純FPGA項(xiàng)目,比如可用于Xilinx的Artix7、Kintex7、Virtex7等FPGA,配合MicroBlaze;也可用于Zynq系列FPGA項(xiàng)目,比如可用于Xilinx的Zynq7000系列、Zynq7000、Zynq UltraScale等FPGA;
工程源碼14:
輸入視頻為HD-SDI相機(jī)或動(dòng)態(tài)彩條,輸入分辨率為1920x1080@30Hz,經(jīng)過GS2971解碼+BT1120轉(zhuǎn)RGB+純verilog圖像縮放+FDMA圖像緩存+16路視頻拼接+RGB轉(zhuǎn)BT1120模塊+GS2972編碼后,以3G-SDI接口方式輸出,圖像縮放方案采用純verilog代碼實(shí)現(xiàn),從1920x1080縮放為240x540,然后將縮放后的視頻復(fù)制為16份以模擬16路視頻,再將這16路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加16路拼接視頻,即16分屏顯示;此工程的FDMA圖像緩存架構(gòu)將視頻緩存到PS端DDR3,既可用于純FPGA項(xiàng)目,比如可用于Xilinx的Artix7、Kintex7、Virtex7等FPGA,配合MicroBlaze;也可用于Zynq系列FPGA項(xiàng)目,比如可用于Xilinx的Zynq7000系列、Zynq7000、Zynq UltraScale等FPGA;
本文詳細(xì)描述了Xilinx的Zynq7100-xc7z100ffg900-2 FPGA開發(fā)板使用GS2971+GS2972架構(gòu)的SDI視頻收發(fā)+純verilog圖像縮放+多路視頻拼接,工程代碼編譯通過后上板調(diào)試驗(yàn)證,可直接項(xiàng)目移植,適用于在校學(xué)生做畢業(yè)設(shè)計(jì)、研究生項(xiàng)目開發(fā),也適用于在職工程師做項(xiàng)目開發(fā),可應(yīng)用于醫(yī)療、軍工等行業(yè)的數(shù)字成像和圖像傳輸領(lǐng)域;
提供完整的、跑通的工程源碼和技術(shù)支持;
工程源碼和技術(shù)支持的獲取方式放在了文章末尾,請(qǐng)耐心看到最后;
免責(zé)聲明
本工程及其源碼即有自己寫的一部分,也有網(wǎng)絡(luò)公開渠道獲取的一部分(包括CSDN、Xilinx官網(wǎng)、Altera官網(wǎng)等等),若大佬們覺得有所冒犯,請(qǐng)私信批評(píng)教育;基于此,本工程及其源碼僅限于讀者或粉絲個(gè)人學(xué)習(xí)和研究,禁止用于商業(yè)用途,若由于讀者或粉絲自身原因用于商業(yè)用途所導(dǎo)致的法律問題,與本博客及博主無關(guān),請(qǐng)謹(jǐn)慎使用。。。
2、相關(guān)方案推薦
本博已有的 SDI 編解碼方案
我的博客主頁開設(shè)有SDI視頻專欄,里面全是FPGA編解碼SDI的工程源碼及博客介紹;既有基于GS2971/GS2972的SDI編解碼,也有基于GTP/GTX資源的SDI編解碼;既有HD-SDI、3G-SDI,也有6G-SDI、12G-SDI等;專欄地址鏈接:點(diǎn)擊直接前往
本方案的SDI接收+發(fā)送
本方案采用GS2971接收SDI視頻,然后進(jìn)行圖像緩存操作(圖像緩存方案包括FDMA方案和VDMA方案,緩存介質(zhì)包括PL端DDR3、PS端DDR3),最后用GS2971發(fā)送SDI視頻,最終以3G-SDI輸出;提供3套工程源碼,3套工程源碼詳情請(qǐng)參考“1、前言”中的截圖,上述所有工程源碼均已上板調(diào)試通過,詳細(xì)設(shè)計(jì)說明等待本博更新對(duì)用的博客。。。
本方案的SDI接收+圖像縮放應(yīng)用
本方案采用GS2971接收SDI視頻,然后進(jìn)行圖像縮放操作(圖像縮放方案包括純verilog圖像縮放方案和HLS圖像縮放方案),再進(jìn)行圖像緩存操作(圖像緩存方案包括FDMA方案和VDMA方案,緩存介質(zhì)包括PL端DDR3、PS端DDR3),最后用GS2971發(fā)送SDI視頻,最終以3G-SDI輸出;提供3套工程源碼,3套工程源碼詳情請(qǐng)參考“1、前言”中的截圖,上述所有工程源碼均已上板調(diào)試通過,詳細(xì)設(shè)計(jì)說明等待本博更新對(duì)用的博客。。。
本方案的SDI接收+HLS圖像縮放+HLS多路視頻拼接應(yīng)用
本方案采用GS2971接收SDI視頻,然后進(jìn)行圖像縮放操作(圖像縮放方案為HLS圖像縮放),再進(jìn)行多路視頻拼接(拼接方案為Xilinx官方的Video Mixer方案,包括2路、4路、8路、16路視頻拼接),再進(jìn)行圖像緩存操作(圖像緩存方案為VDMA方案,緩存介質(zhì)包括PS端DDR3),最后用GS2972編碼器發(fā)送SDI視頻,最終以3G-SDI輸出;提供4套工程源碼,4套工程源碼詳情請(qǐng)參考“1、前言”中的截圖,上述所有工程源碼均已上板調(diào)試通過,詳細(xì)設(shè)計(jì)說明等待本博更新對(duì)用的博客。。。
本方案的SDI接收+OSD動(dòng)態(tài)字符疊加輸出應(yīng)用
本方案采用GS2971接收SDI視頻,然后進(jìn)行動(dòng)態(tài)字符疊加(方案為HLS動(dòng)態(tài)字符疊加),再進(jìn)行圖像緩存操作(圖像緩存方案為VDMA方案,緩存介質(zhì)包括PS端DDR3),最后用GS2972編碼器發(fā)送SDI視頻,最終以3G-SDI輸出;提供1套工程源碼,工程源碼詳情請(qǐng)參考“1、前言”中的截圖,上述所有工程源碼均已上板調(diào)試通過,詳細(xì)設(shè)計(jì)說明等待本博更新對(duì)用的博客。。。
本方案的SDI接收+HLS多路視頻融合疊加應(yīng)用
本方案采用GS2971接收SDI視頻,然后進(jìn)行多路視頻融合疊加(方案為HLS多路視頻融合疊加),再進(jìn)行圖像緩存操作(圖像緩存方案為VDMA方案,緩存介質(zhì)包括PS端DDR3),最后用GS2972編碼器發(fā)送SDI視頻,最終以3G-SDI輸出;提供1套工程源碼,工程源碼詳情請(qǐng)參考“1、前言”中的截圖,上述所有工程源碼均已上板調(diào)試通過,詳細(xì)設(shè)計(jì)說明等待本博更新對(duì)用的博客。。。
本方案的SDI接收+GTX 8b/10b編解碼SFP光口傳輸
本方案采用GS2971接收SDI視頻,然后進(jìn)行8b/10b編解碼作(8b/10b編解碼方案為GTX高速接口方案,線速率為5G),再通過板載的SFP光口實(shí)現(xiàn)數(shù)據(jù)回環(huán),再進(jìn)行圖像緩存操作(圖像緩存方案為FDMA方案,緩存介質(zhì)包括PL端DDR3、PS端DDR3),最后用GS2972編碼器發(fā)送SDI視頻,最終以3G-SDI輸出;提供2套工程源碼,2套工程源碼詳情請(qǐng)參考“1、前言”中的截圖,詳細(xì)設(shè)計(jì)方案請(qǐng)參考我專門的博客,上述所有工程源碼均已上板調(diào)試通過,詳細(xì)設(shè)計(jì)說明等待本博更新對(duì)用的博客。。。
FPGA的SDI視頻編解碼項(xiàng)目培訓(xùn)
基于目前市面上FPGA的SDI視頻編解碼項(xiàng)目培訓(xùn)較少的特點(diǎn),本博專門開設(shè)了FPGA的SDI視頻編解碼高級(jí)項(xiàng)目培訓(xùn)班,專門培訓(xùn)SDI視頻的編解碼,具體培訓(xùn)計(jì)劃細(xì)節(jié)如下:
1、我發(fā)你上述全套工程源碼和對(duì)應(yīng)的工程設(shè)計(jì)文檔網(wǎng)盤鏈接,你保存下載,作為培訓(xùn)的核心資料;
2、你根據(jù)自己的實(shí)際情況安裝好對(duì)應(yīng)的開發(fā)環(huán)境,然后對(duì)著設(shè)計(jì)文檔進(jìn)行淺層次的學(xué)習(xí);
3、遇到不懂的隨時(shí)問我,包括代碼、職業(yè)規(guī)劃、就業(yè)咨詢、人生規(guī)劃、戰(zhàn)略規(guī)劃等等;
4、每周末進(jìn)行一次騰訊會(huì)議,我會(huì)檢查你的學(xué)習(xí)情況和面對(duì)面溝通交流;
5、你可以移植代碼到你自己的FPGA開發(fā)板上跑,如果你沒有板子,你根據(jù)你自己的需求修改代碼后,編譯工程,把bit發(fā)我,我?guī)湍阆螺d到我的板子上驗(yàn)證;或者你可以買我的開發(fā)板;
3、詳細(xì)設(shè)計(jì)方案
設(shè)計(jì)原理框圖
8套工程源碼設(shè)計(jì)原理框圖如下,該設(shè)計(jì)采用純verilog代碼縮放方案+verilog代碼多路視頻拼接方案:
視頻源選擇
視頻源有兩種,分別對(duì)應(yīng)開發(fā)者手里有沒有SDI相機(jī)的情況,一種是使用HD-SDI相機(jī),也可以使用SD-SDI或者3G-SDI相機(jī),因?yàn)楸驹O(shè)計(jì)是三種SDI視頻自適應(yīng)的;如果你的手里沒有SDI相機(jī)或者沒有SDI相機(jī)輸入接口,則可使用FPGA內(nèi)部生成的動(dòng)態(tài)彩條模擬SDI相機(jī)視頻;視頻源的選擇通過代碼頂層的define宏定義進(jìn)行選擇,默認(rèn)使用SDI相機(jī)作為視頻源;如下:
選擇邏輯代碼部分如下:
選擇邏輯如下:
當(dāng)(注釋) define COLOR_TEST時(shí),輸入源視頻是SDI相機(jī);
當(dāng)(不注釋) define COLOR_TEST時(shí),輸入源視頻是動(dòng)態(tài)彩條;
動(dòng)態(tài)彩條
如果你的手里沒有SDI相機(jī)或者沒有SDI相機(jī)輸入接口,則可使用FPGA內(nèi)部生成的動(dòng)態(tài)彩條模擬SDI相機(jī)視頻;視頻源的選擇通過代碼頂層的define宏定義進(jìn)行,動(dòng)態(tài)彩條可配置為不同分辨率的視頻,視頻的邊框?qū)挾龋瑒?dòng)態(tài)移動(dòng)方塊的大小,移動(dòng)速度等都可以參數(shù)化配置,我這里配置為辨率1920x1080,動(dòng)態(tài)彩條模塊代碼位置和頂層接口和例化如下:
動(dòng)態(tài)彩條模塊的例化請(qǐng)參考工程源碼的頂層代碼;
SDI 相機(jī)
我用到的是SDI相機(jī)為HD-SDI相機(jī),輸出分辨率為1920x1080@30Hz,本工程對(duì)SDI相機(jī)的選擇要求范圍很寬,可以是SD-SDI、HD-SDI、3G-SDI,因?yàn)楹茉O(shè)計(jì)對(duì)這三種SDI視頻是自動(dòng)識(shí)別并自適應(yīng)的;如果你的手里沒有SDI相機(jī),也可以去某寶買HDMI轉(zhuǎn)SDI盒子,一百多塊錢就可以搞定,使用筆記本電腦模擬視頻源,用HDMI線連接HDMI轉(zhuǎn)SDI盒子,輸出SDI視頻做事視頻源,可以模擬SDI相機(jī);
GS2971+GS2972架構(gòu)
本設(shè)計(jì)采用GS2971解碼芯片接收SDI+GS2972芯片編碼發(fā)送SDI,GS2971和GS2972不需要軟件配置,硬件電阻上下拉即可完成配置,本設(shè)計(jì)配置為輸出/輸入BT1120格式視頻,當(dāng)然,你在設(shè)計(jì)電路時(shí)也可以配置為輸出CEA861格式視頻;GS2971+GS2972硬件架構(gòu)如下,提供PDF格式原理圖:
BT1120轉(zhuǎn)RGB
BT1120轉(zhuǎn)RGB模塊的作用是將SMPTE SD/HD/3G SDI IP核解碼輸出的BT1120視頻轉(zhuǎn)換為RGB888視頻,它由BT1120轉(zhuǎn)CEA861模塊、YUV422轉(zhuǎn)YUV444模塊、YUV444轉(zhuǎn)RGB888三個(gè)模塊組成,該方案參考了Xilinx官方的設(shè)計(jì);BT1120轉(zhuǎn)RGB模塊代碼架構(gòu)如下:
純verilog圖像縮放模塊詳解
圖像縮放模塊功能框圖如下,由跨時(shí)鐘FIFO、插值+RAM陣列構(gòu)成,跨時(shí)鐘FIFO的目的是解決跨時(shí)鐘域的問題,比如從低分辨率視頻放大到高分辨率視頻時(shí),像素時(shí)鐘必然需要變大,這是就需要異步FIFO了,插值算法和RAM陣列具體負(fù)責(zé)圖像縮放算法層面的實(shí)現(xiàn);
插值算法和RAM陣列以ram和fifo為核心進(jìn)行數(shù)據(jù)緩存和插值實(shí)現(xiàn),設(shè)計(jì)架構(gòu)如下:
圖像縮放模塊代碼架構(gòu)如下:模塊的例化請(qǐng)參考工程源碼的頂層代碼;
圖像縮放模塊FIFO的選擇可以調(diào)用工程對(duì)應(yīng)的vivado工具自帶的FIFO IP核,也可以使用純verilog實(shí)現(xiàn)的FIFO,可通過接口參數(shù)選擇,圖像縮放模塊頂層接口如下:
module helai_video_scale #(
//---------------------------Parameters----------------------------------------
parameter FIFO_TYPE = "xilinx", // "xilinx" for xilinx-fifo ; "verilog" for verilog-fifo
parameter DATA_WIDTH = 8 , //Width of input/output data
parameter CHANNELS = 1 , //Number of channels of DATA_WIDTH, for color images
parameter INPUT_X_RES_WIDTH = 11 //Widths of input/output resolution control signals
)(
input i_reset_n , // 輸入--低電平復(fù)位信號(hào)
input [INPUT_X_RES_WIDTH-1:0] i_src_video_width , // 輸入視頻--即縮放前視頻的寬度
input [INPUT_X_RES_WIDTH-1:0] i_src_video_height, // 輸入視頻--即縮放前視頻的高度
input [INPUT_X_RES_WIDTH-1:0] i_des_video_width , // 輸出視頻--即縮后前視頻的寬度
input [INPUT_X_RES_WIDTH-1:0] i_des_video_height, // 輸出視頻--即縮后前視頻的高度
input i_src_video_pclk , // 輸入視頻--即縮前視頻的像素時(shí)鐘
input i_src_video_vs , // 輸入視頻--即縮前視頻的場(chǎng)同步信號(hào),必須為高電平有效
input i_src_video_de , // 輸入視頻--即縮前視頻的數(shù)據(jù)有效信號(hào),必須為高電平有效
input [DATA_WIDTH*CHANNELS-1:0] i_src_video_pixel , // 輸入視頻--即縮前視頻的像素?cái)?shù)據(jù)
input i_des_video_pclk , // 輸出視頻--即縮后視頻的像素時(shí)鐘,一般為寫入DDR緩存的時(shí)鐘
output o_des_video_vs , // 輸出視頻--即縮后視頻的場(chǎng)同步信號(hào),高電平有效
output o_des_video_de , // 輸出視頻--即縮后視頻的數(shù)據(jù)有效信號(hào),高電平有效
output [DATA_WIDTH*CHANNELS-1:0] o_des_video_pixel // 輸出視頻--即縮后視頻的像素?cái)?shù)據(jù)
);
FIFO_TYPE選擇原則如下:
1:總體原則,選擇"xilinx"好處大于選擇"verilog";
2:當(dāng)你的FPGA邏輯資源不足時(shí),請(qǐng)選"xilinx";
3:當(dāng)你圖像縮放的視頻分辨率較大時(shí),請(qǐng)選"xilinx";
4:當(dāng)你的FPGA沒有FIFO IP或者FIFO IP快用完了,請(qǐng)選"verilog";
5:當(dāng)你向自學(xué)一下異步FIFO時(shí),,請(qǐng)選"verilog";
6:不同F(xiàn)PGA型號(hào)對(duì)應(yīng)的工程FIFO_TYPE參數(shù)不一樣,但選擇原則一樣,具體參考代碼;
2種插值算法的整合與選擇
本設(shè)計(jì)將常用的雙線性插值和鄰域插值算法融合為一個(gè)代碼中,通過輸入?yún)?shù)選擇某一種算法;
具體選擇參數(shù)如下:
input wire i_scaler_type //0-->bilinear;1-->neighbor
通過輸入i_scaler_type 的值即可選擇;
輸入0選擇雙線性插值算法;
輸入1選擇鄰域插值算法;
代碼里的配置如下:
純verilog圖像縮放模塊使用
圖像縮放模塊使用非常簡(jiǎn)單,頂層代碼里設(shè)置了四個(gè)參數(shù),舉例如下:
上圖視頻通過圖像縮放模塊但不進(jìn)行縮放操作,旨在掌握?qǐng)D像縮放模塊的用法;如果需要將圖像放大到1080P,則修改為如下:
當(dāng)然,需要修改的不僅僅這一個(gè)地方,F(xiàn)DMA的配置也需要相應(yīng)修改,詳情請(qǐng)參考代碼,但我想要證明的是,圖像縮放模塊使用非常簡(jiǎn)單,你都不需要知道它內(nèi)部具體怎么實(shí)現(xiàn)的,上手就能用;
多路視頻拼接算法
純verilog多路視頻拼接方案如下:以4路視頻拼接為例;
輸出屏幕分辨率為1920X1080;
需要拼接的4路視頻分辨率為960X540;
4路輸入剛好可以占滿整個(gè)屏幕;
多路視頻的拼接顯示原理如下:
以把 2 個(gè)攝像頭 CAM0 和 CAM1 輸出到同一個(gè)顯示器上為列,為了把 2 個(gè)圖像顯示到 1 個(gè)顯示器,首先得搞清楚以下關(guān)系:
hsize:每 1 行圖像實(shí)際在內(nèi)存中占用的有效空間,以 32bit 表示一個(gè)像素的時(shí)候占用內(nèi)存大小為 hsize X 4;
hstride:用于設(shè)置每行圖像第一個(gè)像素的地址,以 32bit 表示一個(gè)像素的時(shí)候 v_cnt X hstride X 4;
vsize:有效的行;
因此很容易得出 cam0 的每行第一個(gè)像素的地址也是 v_cnt X hstride X 4;
同理如果我們需要把 cam1 在 hsize 和 vsize 空間的任何位置顯示,我們只要關(guān)心 cam1 每一行圖像第一個(gè)像素的地址,可以用以下公式 v_cnt X hstride X 4 + offset;
uifdma_dbuf 支持 stride 參數(shù)設(shè)置,stride 參數(shù)可以設(shè)置輸入數(shù)據(jù) X(hsize)方向每一行數(shù)據(jù)的第一個(gè)像素到下一個(gè)起始像素的間隔地址,利用 stride 參數(shù)可以非常方便地?cái)[放輸入視頻到內(nèi)存中的排列方式。
關(guān)于uifdma_dbuf,可以參考我之前寫的文章點(diǎn)擊查看:FDMA實(shí)現(xiàn)視頻數(shù)據(jù)三幀緩存
根據(jù)以上鋪墊,每路攝像頭緩存的基地址如下:
CAM0:ADDR_BASE=0x80000000;
CAM1:ADDR_BASE=0x80000000+(1920-960)X4;
CAM2:ADDR_BASE=0x80000000+(1080-540)X1920X4;
CAM3:ADDR_BASE=0x80000000+(1080-540)X1920X4+(1920-960)X4;
地址設(shè)置完畢后基本就完事兒了;
圖像緩存
使用本博常用的FDMA圖像緩存架構(gòu)實(shí)現(xiàn)圖像3幀緩存,緩存介質(zhì)為板載的DDR3;FDMA圖像緩存架構(gòu)由FDMA、FDMA控制器、緩存幀選擇器構(gòu)成、Xilinx MIG IP核構(gòu)成;圖像緩存使用Xilinx vivado的Block Design設(shè)計(jì),他的作用是將圖像送入DDR中做3幀緩存再讀出顯示,目的是匹配輸入輸出的時(shí)鐘差和提高輸出視頻質(zhì)量,關(guān)于FDMA,請(qǐng)參考我之前的博客,博客地址:點(diǎn)擊直接前往
FDMA圖像緩存架構(gòu)如下圖所示:截圖為4路視頻拼接,其他多路視頻拼接與之類似;
這里多路視頻拼接時(shí),調(diào)用多路FDMA進(jìn)行緩存,具體講就是每一路視頻調(diào)用1路FDMA,以4路視頻拼接為例:
調(diào)用4路FDMA,其中三路配置為寫模式,因?yàn)檫@三路視頻在這里只需要寫入DDR3,讀出是由另一個(gè)FDMA完成,配置如下:
另外1路FDMA配置為讀寫模式,因?yàn)?路視頻需要同時(shí)一并讀出,配置如下:
視頻拼接的關(guān)鍵點(diǎn)在于4路視頻在DDR3中緩存地址的不同,還是以4路視頻拼接為例,4路FDMA的寫地址以此為:
第一路視頻緩存寫基地址:0x80000000;
第二路視頻緩存寫基地址:0x80000f00;
第三路視頻緩存寫基地址:0x803f4800;
第四路視頻緩存寫基地址:0x803f5700;
視頻緩存讀基地址:0x80000000;
RGB轉(zhuǎn)BT1120
在SDI輸出方式下需要使用該模塊;RGB轉(zhuǎn)BT1200模塊的作用是將用戶側(cè)的RGB視頻轉(zhuǎn)換為BT1200視頻輸出給SMPTE SD/HD/3G SDI IP核;RGB轉(zhuǎn)BT1120模塊由RGB888轉(zhuǎn)YUV444模塊、YUV444轉(zhuǎn)YUV422模塊、SDI視頻編碼模塊、數(shù)據(jù)嵌入模塊組成,該方案參考了Xilinx官方的設(shè)計(jì);BT1120轉(zhuǎn)RGB模塊代碼架構(gòu)如下:
SDI轉(zhuǎn)HDMI盒子
在SDI輸出方式下需要使用到SDI轉(zhuǎn)HDMI盒子,因?yàn)槲沂掷锏娘@示器沒有SDI接口,只有HDMI接口,為了顯示SDI視頻,只能這么做,當(dāng)然,如果你的顯示器有SDI接口,則可直接連接顯示,我的SDI轉(zhuǎn)HDMI盒子在某寶購買,不到100塊;我用的截圖如下:
工程源碼架構(gòu)
本博客提供8套工程源碼,8套代碼的vivado Block Design設(shè)計(jì)具有相似性,以4路視頻拼接工程為例,Block Design截圖如下,其他工程與之類似;
以2路視頻拼接工程為例,工程源碼架構(gòu)如下圖,其他幾套工程與之類似:
工程11、12、13、14使用了自定義的FDMA方案,雖然不需要SDK配置,但FDMA的AXI4接口時(shí)鐘由Zynq提供,所以需要運(yùn)行SDK程序才能啟動(dòng)Zynq,從而為PL端邏輯提供時(shí)鐘;由于不需要SDK配置,所以SDK軟件代碼就變得極度簡(jiǎn)單,只需運(yùn)行一個(gè)“Hello World”即可,如下:
4、工程源碼7詳解–>SDI收發(fā)+圖像縮放+2路視頻拼接 FDMA緩存PL端DDR3
開發(fā)板FPGA型號(hào):Xilinx–Zynq7100–xc7z100ffg900-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:HD-SDI相機(jī),分辨率1920x1080@30Hz;
輸出:3G-SDI,1080P分辨率下的960x1080的2路視頻拼接2分屏顯示;
SDI接收方案:GS2971解碼芯片;
SDI發(fā)送方案:GS2972編碼芯片;
縮放方案:純verilog圖像縮放方案;
輸入輸出縮放:輸入1920x1080–>輸出960x1080;
視頻拼接方案:2路視頻拼接;
圖像緩存方案:FDMA方案;
圖像緩存路徑:PL端DDR3;
工程作用:此工程目的是讓讀者掌握FPGA實(shí)現(xiàn)基于GS2971+GS2972架構(gòu)的SDI接收+圖像縮放+2路視頻拼接的設(shè)計(jì)能力,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“工程源碼架構(gòu)“小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
5、工程源碼8詳解–>SDI收發(fā)+圖像縮放+4路視頻拼接 FDMA緩存PL端DDR3
開發(fā)板FPGA型號(hào):Xilinx–Zynq7100–xc7z100ffg900-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:HD-SDI相機(jī),分辨率1920x1080@30Hz;
輸出:3G-SDI,1080P分辨率下的960x540的4路視頻拼接4分屏顯示;
SDI接收方案:GS2971解碼芯片;
SDI發(fā)送方案:GS2972編碼芯片;
縮放方案:純verilog圖像縮放方案;
輸入輸出縮放:輸入1920x1080–>輸出960x540;
視頻拼接方案:4路視頻拼接;
圖像緩存方案:FDMA方案;
圖像緩存路徑:PL端DDR3;
工程作用:此工程目的是讓讀者掌握FPGA實(shí)現(xiàn)基于GS2971+GS2972架構(gòu)的SDI視頻收發(fā)+圖像縮放+4路視頻拼接的設(shè)計(jì)能力,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“工程源碼架構(gòu)“小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
6、工程源碼9詳解–>SDI收發(fā)+圖像縮放+8路視頻拼接 FDMA緩存PL端DDR3
開發(fā)板FPGA型號(hào):Xilinx–Zynq7100–xc7z100ffg900-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:HD-SDI相機(jī),分辨率1920x1080@30Hz;
輸出:3G-SDI,1080P分辨率下的480x540的8路視頻拼接8分屏顯示;
SDI接收方案:GS2971解碼芯片;
SDI發(fā)送方案:GS2972編碼芯片;
縮放方案:純verilog圖像縮放方案;
輸入輸出縮放:輸入1920x1080–>輸出480x540;
視頻拼接方案:8路視頻拼接;
圖像緩存方案:FDMA方案;
圖像緩存路徑:PL端DDR3;
工程作用:此工程目的是讓讀者掌握FPGA實(shí)現(xiàn)基于GS2971+GS2972架構(gòu)的SDI視頻收發(fā)+圖像縮放+8路視頻拼接的設(shè)計(jì)能力,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“工程源碼架構(gòu)“小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
7、工程源碼10詳解–>SDI收發(fā)+圖像縮放+16路視頻拼接 FDMA緩存PL端DDR3
開發(fā)板FPGA型號(hào):Xilinx–Zynq7100–xc7z100ffg900-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:HD-SDI相機(jī),分辨率1920x1080@30Hz;
輸出:3G-SDI,1080P分辨率下的240x540的8路視頻拼接16分屏顯示;
SDI接收方案:GS2971解碼芯片;
SDI發(fā)送方案:GS2972編碼芯片;
縮放方案:純verilog圖像縮放方案;
輸入輸出縮放:輸入1920x1080–>輸出240x540;
視頻拼接方案:16路視頻拼接;
圖像緩存方案:FDMA方案;
圖像緩存路徑:PL端DDR3;
工程作用:此工程目的是讓讀者掌握FPGA實(shí)現(xiàn)基于GS2971+GS2972架構(gòu)的SDI視頻收發(fā)+圖像縮放+16路視頻拼接的設(shè)計(jì)能力,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“工程源碼架構(gòu)“小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
8、工程源碼11詳解–>SDI收發(fā)+圖像縮放+2路視頻拼接 FDMA緩存PS端DDR3
開發(fā)板FPGA型號(hào):Xilinx–Zynq7100–xc7z100ffg900-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:HD-SDI相機(jī),分辨率1920x1080@30Hz;
輸出:3G-SDI,1080P分辨率下的960x1080的2路視頻拼接2分屏顯示;
SDI接收方案:GS2971解碼芯片;
SDI發(fā)送方案:GS2972編碼芯片;
縮放方案:純verilog圖像縮放方案;
輸入輸出縮放:輸入1920x1080–>輸出960x1080;
視頻拼接方案:2路視頻拼接;
圖像緩存方案:FDMA方案;
圖像緩存路徑:PS端DDR3;
工程作用:此工程目的是讓讀者掌握FPGA實(shí)現(xiàn)基于GS2971+GS2972架構(gòu)的SDI視頻收發(fā)+圖像縮放+2路視頻拼接的設(shè)計(jì)能力,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“工程源碼架構(gòu)“小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
9、工程源碼12詳解–>SDI收發(fā)+圖像縮放+4路視頻拼接 FDMA緩存PS端DDR3
開發(fā)板FPGA型號(hào):Xilinx–Zynq7100–xc7z100ffg900-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:HD-SDI相機(jī),分辨率1920x1080@30Hz;
輸出:3G-SDI,1080P分辨率下的960x540的4路視頻拼接4分屏顯示;
SDI接收方案:GS2971解碼芯片;
SDI發(fā)送方案:GS2972編碼芯片;
縮放方案:純verilog圖像縮放方案;
輸入輸出縮放:輸入1920x1080–>輸出960x540;
視頻拼接方案:4路視頻拼接;
圖像緩存方案:FDMA方案;
圖像緩存路徑:PS端DDR3;
工程作用:此工程目的是讓讀者掌握FPGA實(shí)現(xiàn)基于GS2971+GS2972架構(gòu)的SDI視頻收發(fā)+圖像縮放+4路視頻拼接的設(shè)計(jì)能力,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“工程源碼架構(gòu)“小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
10、工程源碼13詳解–>SDI收發(fā)+圖像縮放+8路視頻拼接 FDMA緩存PS端DDR3
開發(fā)板FPGA型號(hào):Xilinx–Zynq7100–xc7z100ffg900-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:HD-SDI相機(jī),分辨率1920x1080@30Hz;
輸出:3G-SDI,1080P分辨率下的480x540的8路視頻拼接8分屏顯示;
SDI接收方案:GS2971解碼芯片;
SDI發(fā)送方案:GS2972編碼芯片;
縮放方案:純verilog圖像縮放方案;
輸入輸出縮放:輸入1920x1080–>輸出480x540;
視頻拼接方案:8路視頻拼接;
圖像緩存方案:FDMA方案;
圖像緩存路徑:PS端DDR3;
工程作用:此工程目的是讓讀者掌握FPGA實(shí)現(xiàn)基于GS2971+GS2972架構(gòu)的SDI視頻收發(fā)+圖像縮放+8路視頻拼接的設(shè)計(jì)能力,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“工程源碼架構(gòu)“小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
11、工程源碼14詳解–>SDI收發(fā)+圖像縮放+16路視頻拼接 FDMA緩存PS端DDR3
開發(fā)板FPGA型號(hào):Xilinx–Zynq7100–xc7z100ffg900-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:HD-SDI相機(jī),分辨率1920x1080@30Hz;
輸出:3G-SDI,1080P分辨率下的240x540的8路視頻拼接16分屏顯示;
SDI接收方案:GS2971解碼芯片;
SDI發(fā)送方案:GS2972編碼芯片;
縮放方案:純verilog圖像縮放方案;
輸入輸出縮放:輸入1920x1080–>輸出240x540;
視頻拼接方案:16路視頻拼接;
圖像緩存方案:FDMA方案;
圖像緩存路徑:PS端DDR3;
工程作用:此工程目的是讓讀者掌握FPGA實(shí)現(xiàn)基于GS2971+GS2972架構(gòu)的SDI視頻收發(fā)+圖像縮放+16路視頻拼接的設(shè)計(jì)能力,以便能夠移植和設(shè)計(jì)自己的項(xiàng)目;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)“工程源碼架構(gòu)“小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
12、工程移植說明
vivado版本不一致處理
1:如果你的vivado版本與本工程vivado版本一致,則直接打開工程;
2:如果你的vivado版本低于本工程vivado版本,則需要打開工程后,點(diǎn)擊文件–>另存為;但此方法并不保險(xiǎn),最保險(xiǎn)的方法是將你的vivado版本升級(jí)到本工程vivado的版本或者更高版本;
3:如果你的vivado版本高于本工程vivado版本,解決如下:
打開工程后會(huì)發(fā)現(xiàn)IP都被鎖住了,如下:
此時(shí)需要升級(jí)IP,操作如下:
FPGA型號(hào)不一致處理
如果你的FPGA型號(hào)與我的不一致,則需要更改FPGA型號(hào),操作如下:
更改FPGA型號(hào)后還需要升級(jí)IP,升級(jí)IP的方法前面已經(jīng)講述了;
其他注意事項(xiàng)
1:由于每個(gè)板子的DDR不一定完全一樣,所以MIG IP需要根據(jù)你自己的原理圖進(jìn)行配置,甚至可以直接刪掉我這里原工程的MIG并重新添加IP,重新配置;
2:根據(jù)你自己的原理圖修改引腳約束,在xdc文件中修改即可;
3:純FPGA移植到Zynq需要在工程中添加zynq軟核;
13、上板調(diào)試驗(yàn)證
準(zhǔn)備工作
需要準(zhǔn)備的器材如下:
FPGA開發(fā)板;
SDI攝像頭,沒有攝像頭則選擇動(dòng)態(tài)彩條;
SDI轉(zhuǎn)HDMI盒子;
HDMI顯示器;
我的開發(fā)板了連接如下:
圖中居左者為GS2971接收芯片,對(duì)應(yīng)的金色同軸線連接SDI相機(jī);居右者為GS2972發(fā)送芯片,對(duì)應(yīng)的黑色同軸線連接SDI轉(zhuǎn)HDMI盒子;SDI轉(zhuǎn)HDMI盒子再連接顯示器;
工程7、11的2路視頻縮放拼接–>輸出視頻演示
輸入視頻為HD-SDI相機(jī),輸入分辨率為1920x1080@30Hz,經(jīng)過GS971 SDI接收+圖像縮放+2路視頻拼接+GS2972編碼后,以3G-SDI接口方式輸出,輸入視頻從1920x1080縮放為960x1080,然后將縮放后的視頻復(fù)制為2份以模擬2路視頻,再將這2路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加2路拼接視頻,即2分屏顯示;輸出視頻演示如下:
GS2971接收+2路視頻縮放拼接+GS2972發(fā)送
工程8、12的4路視頻縮放拼接–>輸出視頻演示
輸入視頻為HD-SDI相機(jī),輸入分辨率為1920x1080@30Hz,經(jīng)過GS971 SDI接收+圖像縮放+4路視頻拼接+GS2972編碼后,以3G-SDI接口方式輸出,輸入視頻從1920x1080縮放為960x540,然后將縮放后的視頻復(fù)制為4份以模擬4路視頻,再將這4路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加4路拼接視頻,即4分屏顯示;輸出視頻演示如下:
GS2971接收+4路視頻縮放拼接+GS2972發(fā)送
工程9、13的8路視頻縮放拼接–>輸出視頻演示
輸入視頻為HD-SDI相機(jī),輸入分辨率為1920x1080@30Hz,經(jīng)過GS971 SDI接收+圖像縮放+8路視頻拼接+GS2972編碼后,以3G-SDI接口方式輸出,輸入視頻從1920x1080縮放為480x540,然后將縮放后的視頻復(fù)制為8份以模擬8路視頻,再將這8路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加8路拼接視頻,即8分屏顯示;輸出視頻演示如下:
GS2971接收+8路視頻縮放拼接+GS2972發(fā)送
工程10、14的16路視頻縮放拼接–>輸出視頻演示
輸入視頻為HD-SDI相機(jī),輸入分辨率為1920x1080@30Hz,經(jīng)過GS971 SDI接收+圖像縮放+8路視頻拼接+GS2972編碼后,以3G-SDI接口方式輸出,輸入視頻從1920x1080縮放為240x540,然后將縮放后的視頻復(fù)制為16份以模擬16路視頻,再將這16路視頻進(jìn)行視頻拼接,最后在3G-SDI 1920x1080的輸出分辨率下疊加16路拼接視頻,即16分屏顯示;輸出視頻演示如下:
GS2971接收+16路視頻縮放拼接+GS2972發(fā)送文章來源:http://www.zghlxwxcb.cn/news/detail-841109.html
14、福利:工程代碼的獲取
福利:工程代碼的獲取
代碼太大,無法郵箱發(fā)送,以某度網(wǎng)盤鏈接方式發(fā)送,
資料獲取方式:私,或者文章末尾的V名片。
網(wǎng)盤資料如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-841109.html
到了這里,關(guān)于FPGA高端項(xiàng)目:FPGA基于GS2971+GS2972架構(gòu)的SDI視頻收發(fā)+純verilog圖像縮放+多路視頻拼接,提供8套工程源碼和技術(shù)支持的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!