Xilinx Artix7-100T低端FPGA解碼MIPI視頻,基于MIPI CSI-2 RX Subsystem架構(gòu)實(shí)現(xiàn),提供工程源碼和技術(shù)支持
1、前言
FPGA圖像采集領(lǐng)域目前協(xié)議最復(fù)雜、技術(shù)難度最高的應(yīng)該就是MIPI協(xié)議了,MIPI解碼難度之高,令無數(shù)英雄競(jìng)折腰,以至于Xilinx官方不得不推出專用的IP核供開發(fā)者使用,不然太高端的操作直接嚇退一大批FPGA開發(fā)者,就沒人玩兒了。
本設(shè)計(jì)基于Xilinx的 Artix7-100T低端FPGA開發(fā)板,采集OV5640攝像頭的2Line MIPI視頻,OV5640攝像頭配置為MIPI模式,引腳經(jīng)過權(quán)電阻方案后接入FPGA的HS BANK的LVDS差分IO;調(diào)用Xilinx的MIPI CSI-2 RX Subsystem IP實(shí)現(xiàn)MIPI的D-PHY功能,該IP由Xilinx免費(fèi)提供,將MIPI視頻解碼后以AXIS視頻流格式輸出;再調(diào)用Xilinx的Sensor Demosaic IP實(shí)現(xiàn)RAM轉(zhuǎn)RGB功能; 再調(diào)用Xilinx的Gammer LUT IP實(shí)現(xiàn)伽馬校正功能;再調(diào)用Xilinx的VDMA IP實(shí)現(xiàn)圖像三幀緩存功能,VDMA調(diào)用兩個(gè),一個(gè)用于視頻寫入DDR3,另一個(gè)用于視頻讀出DDR3,這樣分開讀寫的目的在于使用AXI的帶寬;再調(diào)用Xilinx的Video Timing Controller和AXI4-Stream toVideo Out IP實(shí)現(xiàn)視頻流從AXI4-Stream到VGA時(shí)序的轉(zhuǎn)換;最后用自定義的HDMI發(fā)送IP將視頻輸出顯示器顯示;整個(gè)工程調(diào)用MicroBlaze軟核做IP的配置,相當(dāng)于Zynq的作用,MicroBlaze的配置在Vitis SDK里以C語言軟件代碼的形式運(yùn)行,所以整個(gè)工程包括FPGA邏輯設(shè)計(jì)和Vitis SDK軟件設(shè)計(jì)兩部分,需要具備FPGA和嵌入式C語言的綜合能力,不適合初學(xué)者或者小白。。。
本文詳細(xì)描述了Xilinx Artix7-100T低端FPGA解碼MIPI視頻的設(shè)計(jì)方案,工程代碼編譯通過后上板調(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)耐心看到最后;
關(guān)于MIPI協(xié)議,請(qǐng)自行搜索,csdn就有很多大佬講得很詳細(xì),我就不多寫這塊了;
免責(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、我這里已有的 MIPI 編解碼方案
我這里目前已有豐富的基于FPGA的MIPI編解碼方案,主要是MIPI解碼的,既有純vhdl實(shí)現(xiàn)的MIPI解碼,也有調(diào)用Xilinx官方IP實(shí)現(xiàn)的MIPI解碼,既有2line的MIPI解碼,也有4line的MIPI解碼,既有4K分辨率的MIPI解碼,也有小到720P分辨率的MIPI解碼,既有基于Xilinx平臺(tái)FPGA的MIPI解碼也有基于Altera平臺(tái)FPGA的MIPI解碼,還有基于Lattice平臺(tái)FPGA的MIPI解碼,后續(xù)還將繼續(xù)推出更過國(guó)產(chǎn)FPGA的MIPI解碼方案,畢竟目前國(guó)產(chǎn)化方案才是未來主流,后續(xù)也將推出更多MIPI編碼的DSI方案,努力將FPGA的MIPI編解碼方案做成白菜價(jià)。。。
基于此,我專門建了一個(gè)MIPI編解碼的專欄,并將MIPI編解碼的博客都放到了專欄里整理,對(duì)FPGA編解碼MIPI有項(xiàng)目需求或?qū)W習(xí)興趣的兄弟可以去我的專欄看看,專欄地址如下:
點(diǎn)擊直接前往專欄
3、本 MIPI CSI2 模塊性能及其優(yōu)缺點(diǎn)
由于調(diào)用了Xilinx的MIPI CSI-2 RX Subsystem IP核,所以性能上就取決于你的FPGA型號(hào),理論上FPGA越高端,支持的IO線速率或者GT高速接口線速率就越高,就能跑速率更高的MIPI視頻;
該IP適應(yīng)性極強(qiáng),支持的MIPI相機(jī)性能參數(shù)如下:
并且,在越高端的FPGA型號(hào)上,該IP支持的高端性能也越多;
由于調(diào)用了Xilinx的MIPI CSI-2 RX Subsystem IP核,NIPI視頻解碼的穩(wěn)定性很好,且使用及其簡(jiǎn)單,缺點(diǎn)是看不到源碼,出了問題后不好排查,只能在輸入輸出接口添加ila進(jìn)行逐級(jí)追蹤;
本方案使用的FPGA型號(hào)為Xilinx Artix7-100T,屬于低端FPGA的MIPI解碼應(yīng)用,再小型的Artix7-35T或者Spartan7、Spartan6等就已經(jīng)不能使用MIPI CSI-2 RX Subsystem了;
4、詳細(xì)設(shè)計(jì)方案
本設(shè)計(jì)基于Xilinx的 Artix7-100T低端FPGA開發(fā)板,采集OV5640攝像頭的2Line MIPI視頻,IOV5640攝像頭配置為MIPI模式,引腳經(jīng)過權(quán)電阻方案后接入FPGA的HS BANK的LVDS差分IO;調(diào)用Xilinx的MIPI CSI-2 RX Subsystem IP實(shí)現(xiàn)MIPI的D-PHY功能,該IP由Xilinx免費(fèi)提供,將MIPI視頻解碼后以AXIS視頻流格式輸出;再調(diào)用Xilinx的Sensor Demosaic IP實(shí)現(xiàn)RAM轉(zhuǎn)RGB功能; 再調(diào)用Xilinx的Gammer LUT IP實(shí)現(xiàn)伽馬校正功能;再調(diào)用Xilinx的VDMA IP實(shí)現(xiàn)圖像三幀緩存功能,VDMA調(diào)用兩個(gè),一個(gè)用于視頻寫入DDR3,另一個(gè)用于視頻讀出DDR3,這樣分開讀寫的目的在于使用AXI的帶寬;再調(diào)用Xilinx的Video Timing Controller和AXI4-Stream toVideo Out IP實(shí)現(xiàn)視頻流從AXI4-Stream到VGA時(shí)序的轉(zhuǎn)換;最后用自定義的HDMI發(fā)送IP將視頻輸出顯示器顯示;
設(shè)計(jì)原理框圖
設(shè)計(jì)原理框圖如下:
OV5640及其配置
輸入視頻采用廉價(jià)的OV5640攝像頭模組,配置為MIPI模式,2 Line,數(shù)據(jù)格式為RAW10,線速率為1000Mbps,視頻分辨率為1280*720,一個(gè)時(shí)鐘一個(gè)像素,OV5640需要SCCB總線配置才能運(yùn)行,該總線等價(jià)于I2C總線,調(diào)用一個(gè)AXI-GPIO模擬I2C,利用Vitis軟件配置OV5640,配置部分代碼有C語言實(shí)現(xiàn),具體參考Vitis程序;AXI-GPIO調(diào)用和SCCB軟件配置代碼截圖如下:
權(quán)電阻硬件方案
使用Xilinx官方推薦的權(quán)電阻硬件方案將輸入的差分MIPI對(duì)恢復(fù)HS和PL,原理圖部分截圖如下:
注意:權(quán)電阻方案只在低速率的MIPI模式下可用,高速率的MIPI請(qǐng)用專用芯片實(shí)現(xiàn),比如MC20001,MC系列這種方案可以支持到2Gbps/Lane速率以上,只要FPGA的IO速率夠用;
MIPI CSI-2 RX Subsystem
調(diào)用Xilinx的MIPI CSI-2 RX Subsystem IP實(shí)現(xiàn)MIPI的D-PHY功能,該IP由Xilinx免費(fèi)提供,將MIPI視頻解碼后以AXIS視頻流格式輸出;調(diào)用和配置如下:
Sensor Demosaic圖像格式轉(zhuǎn)換
調(diào)用Xilinx的Sensor Demosaic IP實(shí)現(xiàn)RAM轉(zhuǎn)RGB功能,該IP通過Vitis的C代碼軟件配置,Sensor Demosaic調(diào)用和C代碼軟件配置代碼截圖如下:
Gammer LUT伽馬校正
調(diào)用Xilinx的Gammer LUT IP實(shí)現(xiàn)伽馬校正功能,該IP通過Vitis的C代碼軟件配置,Gammer LUT調(diào)用和C代碼軟件配置代碼截圖如下:
VDMA圖像緩存
調(diào)用Xilinx的VDMA IP實(shí)現(xiàn)圖像三幀緩存功能,VDMA調(diào)用兩個(gè),一個(gè)用于視頻寫入DDR3,另一個(gè)用于視頻讀出DDR3,這樣分開讀寫的目的在于使用AXI的帶寬;該IP通過Vitis的C代碼軟件配置;VDMA調(diào)用和C代碼軟件配置代碼截圖如下:
AXI4-Stream toVideo Out
再調(diào)用Xilinx的Video Timing Controller和AXI4-Stream toVideo Out IP實(shí)現(xiàn)視頻流從AXI4-Stream到VGA時(shí)序的轉(zhuǎn)換;Video Timing Controller配置為1280*720@60Hz,這兩個(gè)IP不需要軟件配置;Video Timing Controller和AXI4-Stream toVideo Out調(diào)用截圖如下:
HDMI輸出
最后用自定義的HDMI發(fā)送IP將視頻輸出顯示器顯示,該IP最大輸出分辨率只支持1920*1080@60Hz;IP調(diào)用截圖如下:
5、vivado工程詳解
FPGA邏輯設(shè)計(jì)
開發(fā)板FPGA型號(hào):Xilinx–Artix7–xc7a100tfgg484-2;
開發(fā)環(huán)境:Vivado2021.1;
輸入:OV5640攝像頭–MIPI–2 Line–RAW10-1280*720;
輸出:HDMI ,分辨率720P;
應(yīng)用:Xilinx Artix7-100T低端FPGA解碼MIPI視頻;
工程Block Design如下:
由于調(diào)用IP較多,分散開來很不好看,也不利于閱讀,我們將MIPI解碼和緩存的核心IP進(jìn)行了再封裝,如上圖中紅框標(biāo)記部分,該封裝只是形式上的好看而已,沒有特殊功能,可以通過如下方法將其展開,查看里面的詳細(xì)組成和結(jié)構(gòu),如下:
展開后如下:
工程代碼架構(gòu)如下:
工程的資源消耗和功耗如下:
Vitis SDK軟件設(shè)計(jì)
Vitis SDK C語言軟件是為了配置FPGA調(diào)用的IP,用VItis打開即可查看,代碼內(nèi)容如下:
Vitis HLS補(bǔ)丁
由于工程中用到了HLS生成的IP,Sensor Demosaic和Gammer LUT,可能會(huì)出現(xiàn)綜合編譯失敗,或者警告后在Vitis SDK里找不到設(shè)備ID等情況,此時(shí)需要更改電腦系統(tǒng)時(shí)間或者打上官方補(bǔ)丁解決這件事情,具體方法參考這位大佬博文:直接點(diǎn)擊前往
6、工程移植說明
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軟核;
7、上板調(diào)試驗(yàn)證
需要準(zhǔn)備的器材如下:
FPHA開發(fā)板;
OV5640攝像頭;
HDMI顯示器;
輸出如下:文章來源:http://www.zghlxwxcb.cn/news/detail-751613.html
8、福利:工程代碼的獲取
福利:工程代碼的獲取
代碼太大,無法郵箱發(fā)送,以某度網(wǎng)盤鏈接方式發(fā)送,
資料獲取方式:私,或者文章末尾的V名片。
網(wǎng)盤資料如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-751613.html
到了這里,關(guān)于Xilinx Artix7-100T低端FPGA解碼MIPI視頻,基于MIPI CSI-2 RX Subsystem架構(gòu)實(shí)現(xiàn),提供工程源碼和技術(shù)支持的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!