thinkphp 做門戶網(wǎng)站企業(yè)查詢
目錄
- 1、前言
- 免責(zé)聲明
- 2、相關(guān)方案推薦
- 我這里已有的 MIPI 編解碼方案
- 3、本 MIPI CSI-RX IP 介紹
- 4、個人 FPGA高端圖像處理開發(fā)板簡介
- 5、詳細(xì)設(shè)計方案
- 設(shè)計原理框圖
- IMX327 及其配置
- MIPI CSI RX
- 圖像 ISP 處理
- 圖像緩存
- UVC 時序
- USB3.0輸出架構(gòu)
- 6、vivado工程詳解
- FPGA邏輯設(shè)計
- 7、工程移植說明
- vivado版本不一致處理
- FPGA型號不一致處理
- 其他注意事項(xiàng)
- 8、上板調(diào)試驗(yàn)證
- 準(zhǔn)備工作
- 圖像輸出演示
- 9、福利:工程代碼的獲取
FPGA高端項(xiàng)目:IMX327 MIPI 視頻解碼 USB3.0 UVC 輸出,提供FPGA開發(fā)板+工程源碼+技術(shù)支持
1、前言
FPGA圖像采集領(lǐng)域目前協(xié)議最復(fù)雜、技術(shù)難度最高之一的應(yīng)該就是MIPI協(xié)議了,MIPI解碼難度之高,令無數(shù)英雄競折腰,以至于Xilinx官方不得不推出專用的IP核供開發(fā)者使用,不然太高端的操作直接嚇退一大批FPGA開發(fā)者,就沒人玩兒了。本設(shè)計基于Xilinx的Kintex7-325T中端FPGA開發(fā)板,采集IMX327 MIPI攝像頭的4 Lane MIPI視頻,IMX327 攝像頭配置為 MIPI4 Lane RAW12模式,輸出有效分辨率為1920x1080@60Hz;IMX327 MIPI攝像頭引腳經(jīng)過權(quán)電阻方案分出LP電路后接入FPGA的HS BANK的LVDS差分IO;采用自定義的MIPI CSI RX解碼IP實(shí)現(xiàn)MIPI的D_PHY+CSI_RX功能,輸出AXI4-Stream格式的RAW12顏色視頻,該IP由本博免費(fèi)提供;至此,MIPI視頻解碼工作完成,但此時的視頻還是原始的RAW12格式,遠(yuǎn)遠(yuǎn)達(dá)不到輸出顯示要求,所以還需進(jìn)行圖像處理操作,也就是圖像ISP操作;本博提供及其完整的圖像ISP,具體流程包括Bayer轉(zhuǎn)RGB888、自動白平衡、色彩校正、伽馬校正、RGB888轉(zhuǎn)YCrCb444、圖像增強(qiáng)、YCrCb444轉(zhuǎn)RGB888、YCrCb444轉(zhuǎn)YCrCb422等一系列操作;經(jīng)過ISP處理后的圖像顏色飽滿、畫質(zhì)清晰,輸出YCrCb422格式的視頻;然后再使用本博提供的圖像緩存架構(gòu)將視頻緩存到板載的DDR3中;再使用本博提供的UVC視頻時序?qū)⒁曨l從DDR3中讀出;再將UVC視頻送入板載的CYUSB3014-BZXI芯片,通過板載的USB3.0接口發(fā)送出去;CYUSB3014-BZXI芯片在Win10下可以免驅(qū)使用,用USB3.0數(shù)據(jù)線連接FPGA開發(fā)板和筆記本電腦,打開電腦自帶的攝像頭軟件,選擇本開發(fā)板的攝像頭,即可顯示IMX327 MIPI攝像頭解碼采集的視頻了;
免責(zé)聲明
本工程源碼只是本博提供的FPGA高端圖像處理開發(fā)板的測試?yán)淌褂?#xff0c;本工程及其源碼即有自己寫的一部分,也有網(wǎng)絡(luò)公開渠道獲取的一部分(包括CSDN、Xilinx官網(wǎng)、Altera官網(wǎng)等等),若大佬們覺得有所冒犯,請私信批評教育;基于此,本工程及其源碼僅限于讀者或粉絲個人學(xué)習(xí)和研究,禁止用于商業(yè)用途,若由于讀者或粉絲自身原因用于商業(yè)用途所導(dǎo)致的法律問題,與本博客及博主無關(guān),請謹(jǐn)慎使用。。。
2、相關(guān)方案推薦
我這里已有的 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平臺FPGA的MIPI解碼也有基于Altera平臺FPGA的MIPI解碼,還有基于Lattice平臺FPGA的MIPI解碼,后續(xù)還將繼續(xù)推出更過國產(chǎn)FPGA的MIPI解碼方案,畢竟目前國產(chǎn)化方案才是未來主流,后續(xù)也將推出更多MIPI編碼的DSI方案,努力將FPGA的MIPI編解碼方案做成白菜價。。。
基于此,我專門建了一個MIPI編解碼的專欄,并將MIPI編解碼的博客都放到了專欄里整理,對FPGA編解碼MIPI有項(xiàng)目需求或?qū)W習(xí)興趣的兄弟可以去我的專欄看看,專欄地址如下:
點(diǎn)擊直接前往專欄
3、本 MIPI CSI-RX IP 介紹
本設(shè)計采用自定義的MIPI CSI RX解碼IP實(shí)現(xiàn)MIPI的D_PHY+CSI_RX功能,輸出AXI4-Stream格式的RAW12顏色視頻,該IP由本博免費(fèi)提供;該IP目前只適用于Xilinx A7及其以上系列器件,支持的 4 lane RAW12圖像,輸入分辨率最高支持4K @30幀;IP UI配置界面如下:
該自定義IP只提供網(wǎng)表不提供源碼,但用戶依然可以自由使用,和使用Xilixn官方的 MIPI CSI-2 RX Subsystem一樣,沒有本質(zhì)區(qū)別,因?yàn)镸IPI CSI-2 RX Subsystem也是看不到源碼的;MIPI CSI-RX IP資源消耗如下:
4、個人 FPGA高端圖像處理開發(fā)板簡介
本博客提供的工程源碼需配合本博提供的FPGA高端圖像處理開發(fā)板才能使用,亦或者讀者自己拿去移植,但本博推薦使用本博客提供的工程源碼需配合本博提供的FPGA高端圖像處理開發(fā)板,該開發(fā)板截圖如下:
此開發(fā)板專為高端FPGA圖像處理設(shè)計,適合公司項(xiàng)目研發(fā)、研究所項(xiàng)目預(yù)研、高校項(xiàng)目開發(fā)、個人學(xué)習(xí)進(jìn)步等場景需求,本博之前專門寫過一篇博文詳細(xì)介紹了該開發(fā)板的情況,感興趣的請移步那篇博文,博客地址如下:
點(diǎn)擊直接前往
5、詳細(xì)設(shè)計方案
設(shè)計原理框圖
設(shè)計原理框圖如下:
IMX327 及其配置
本設(shè)計使用本博提供的專用SONY公司的 IMX327 MIPI相機(jī),該相機(jī)輸出分辨率達(dá)到了1920x1080,采用焦距可調(diào)的鏡頭,清晰度極高,適用于高端項(xiàng)目開發(fā),相機(jī)截圖如下:
IMX327 MIPI相機(jī)需要 i2c配置才能正確使用,本設(shè)計調(diào)用本博自定義的i2c主機(jī)IP實(shí)現(xiàn)對IMX327的配置,該IP掛載與AXI-Lite總線上,通過MicroBlaze軟核運(yùn)行的C語言代碼實(shí)現(xiàn)配置,此外,本博還設(shè)計了自動曝光程序,實(shí)時讀取IMX327 RAW12像素,通過寫IMX327對應(yīng)寄存器的方式實(shí)現(xiàn)實(shí)時的自動曝光算法,使得IMX327在暗黑的環(huán)境下也能輸出明亮的圖像;
本博提供的FPGA開發(fā)板有兩個MIPI CSI-RX接口,分別位于P3、P4接口,因此可以接兩個MIPI相機(jī),其中,P4接口的相機(jī)采用螺絲固定方式連接,適用于FPGA開發(fā)板需要移動的項(xiàng)目,如小車等;P3接口的相機(jī)采用FPC軟排線方式連接,適用于FPGA開發(fā)板不需要移動的項(xiàng)目,如固定檢測等,具體連接方式如下圖:
MIPI CSI RX
本設(shè)計采用自定義的MIPI CSI RX解碼IP實(shí)現(xiàn)MIPI的D_PHY+CSI_RX功能,輸出AXI4-Stream格式的RAW12顏色視頻,該IP由本博免費(fèi)提供;該IP目前只適用于Xilinx A7及其以上系列器件,支持的 4 lane RAW12圖像,輸入分辨率最高支持4K @30幀;IP UI配置界面如下:
該自定義IP只提供網(wǎng)表不提供源碼,但用戶依然可以自由使用,和使用Xilixn官方的 MIPI CSI-2 RX Subsystem一樣,沒有本質(zhì)區(qū)別,因?yàn)镸IPI CSI-2 RX Subsystem也是看不到源碼的;
圖像 ISP 處理
本博提供及其完整的圖像ISP,具體流程包括Bayer轉(zhuǎn)RGB888、自動白平衡、色彩校正、伽馬校正、RGB888轉(zhuǎn)YCrCb444、圖像增強(qiáng)、YCrCb444轉(zhuǎn)RGB888、YCrCb444轉(zhuǎn)YCrCb422等一系列操作;經(jīng)過ISP處理后的圖像顏色飽滿、畫質(zhì)清晰,輸出YCrCb422格式的視頻;圖像 ISP 處理在工程 Block Design中如圖:
這些IP均為Xilinx的免費(fèi)IP,有的需要配置才能使用,在MicroBlaze軟核運(yùn)行的C語言代碼已經(jīng)提供了配置程序;
圖像緩存
本設(shè)計使用本博提供的圖像緩存讀寫IP實(shí)現(xiàn)視頻緩存,該IP由純verilog代碼實(shí)現(xiàn),用戶接口為AXI4-Stream,可替換Xilinx官方的VDMA,本博已將他封裝為自定義IP;圖像緩存模塊IP在工程 Block Design中如圖:
需要注意的是,圖像緩存架構(gòu)需調(diào)用Xilinx的 MIG IP才能實(shí)現(xiàn)與DDR3的物理層交互;
UVC 時序
UVC 時序用于控制視頻讀出DDR3的時序,然后將讀出的視頻送入 USB3.0輸出架構(gòu),UVC 時序很簡單,與常用的VGA時序差不多,由純verilog代碼實(shí)現(xiàn),將模塊頂層代碼拖入 Block Design中,如圖:
USB3.0輸出架構(gòu)
UVC視頻送入板載的CYUSB3014-BZXI芯片,通過板載的USB3.0接口發(fā)送出去;CYUSB3014-BZXI芯片在Win10下可以免驅(qū)使用,用USB3.0數(shù)據(jù)線連接FPGA開發(fā)板和筆記本電腦,打開電腦自帶的攝像頭軟件,選擇本開發(fā)板的攝像頭,即可顯示IMX327 MIPI攝像頭解碼采集的視頻了;打開筆記本電腦的設(shè)備管理器,即可看到本開發(fā)板的USB3.0設(shè)備,如下:
打開電腦自帶的攝像頭軟件后輸出如下:
6、vivado工程詳解
FPGA邏輯設(shè)計
開發(fā)板FPGA型號:Xilinx–Kintex7–xc7k325tffg676-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:IMX327攝像頭–MIPI–4 Lane–RAW12-1920x1080;
輸出:USB3.0,分辨率1920x1080;
應(yīng)用:FPGA高端項(xiàng)目:IMX327 MIPI 視頻解碼 USB3.0 UVC 輸出;
工程Block Design如下:
由于調(diào)用IP較多,分散開來很不好看,也不利于閱讀,本博將一些IP進(jìn)行了再封裝,如下圖中紅框標(biāo)記部分,該封裝只是形式上的好看而已,沒有特殊功能,可以通過如下方法將其展開,查看里面的詳細(xì)組成和結(jié)構(gòu),如下:
工程代碼架構(gòu)如下:
工程的資源消耗和功耗如下:
7、工程移植說明
vivado版本不一致處理
1:如果你的vivado版本與本工程vivado版本一致,則直接打開工程;
2:如果你的vivado版本低于本工程vivado版本,則需要打開工程后,點(diǎn)擊文件–>另存為;但此方法并不保險,最保險的方法是將你的vivado版本升級到本工程vivado的版本或者更高版本;
3:如果你的vivado版本高于本工程vivado版本,解決如下:
打開工程后會發(fā)現(xiàn)IP都被鎖住了,如下:
此時需要升級IP,操作如下:
FPGA型號不一致處理
如果你的FPGA型號與我的不一致,則需要更改FPGA型號,操作如下:
更改FPGA型號后還需要升級IP,升級IP的方法前面已經(jīng)講述了;
其他注意事項(xiàng)
1:由于每個板子的DDR不一定完全一樣,所以MIG IP需要根據(jù)你自己的原理圖進(jìn)行配置,甚至可以直接刪掉我這里原工程的MIG并重新添加IP,重新配置;
2:根據(jù)你自己的原理圖修改引腳約束,在xdc文件中修改即可;
3:純FPGA移植到Zynq需要在工程中添加zynq軟核;
8、上板調(diào)試驗(yàn)證
準(zhǔn)備工作
需要準(zhǔn)備的器材如下:
FPHA開發(fā)板;
IMX327 攝像頭;
筆記本電腦;
圖像輸出演示
圖像輸出演示如下:
圖像輸出演示
9、福利:工程代碼的獲取
福利:工程代碼的獲取
代碼太大,無法郵箱發(fā)送,以某度網(wǎng)盤鏈接方式發(fā)送,
資料獲取方式:私,或者文章末尾的V名片。
網(wǎng)盤資料如下: