目錄
- 1、前言
- 工程概述
- 免責聲明
- 2、相關方案推薦
- 我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目
- Altera系列FPGA相關方案推薦
- 3、設計思路框架
- 工程設計原理框圖
- 輸入Sensor之-->OV7725攝像頭
- 輸入Sensor之-->OV5640攝像頭
- 輸入Sensor之-->串口傳圖輸入
- 圖像緩存架構
- HDMI輸出架構
- LCD輸出架構
- 工程源碼架構
- 4、Quartus工程源碼1詳解:OV7725輸入-HDMI輸出版本
- 5、Quartus工程源碼2詳解:OV5640輸入-HDMI輸出版本
- 6、Quartus工程源碼3詳解:串口傳圖輸入-LCD輸出版本
- 7、Quartus工程源碼4詳解:串口傳圖輸入-HDMI輸出版本
- 8、上板調試驗證并演示
- 準備工作
- Altera系列FPGA視頻采集效果演示
- 9、福利:工程源碼獲取
Altera系列FPGA實現圖像視頻采集轉HDMI/LCD輸出,提供4套Quartus工程源碼和技術支持
1、前言
Altera系列FPGA現狀:
Altera系列FPGA目前處于逐步退出市場狀態,市場占有率很低、使用便捷性很低、開發生態很不完善,之前還可以憑借價格低廉在低端產品上使用,但如今國產FPGA的崛起讓Altera唯一的優勢也蕩然無存;所以本博主奉勸還在學Altera系列FPGA的同學趕緊懸崖略嗎回頭是岸,別再浪費寶貴的時間了,未來的FPGA市場,高端市場非Xilinx莫屬,中低端市場非國產FPGA莫屬;
工程概述
本文使用Altera的Cyclone-IV系列FPGA做基礎的圖像視頻采集系統;視頻輸入源有多種,一種是傳統攝像頭,包括OV7725、OV5640和AR0135,另一種是用串口發送圖片到FPGA作為輸入源;如果你的FPGA開發板沒有視頻輸入接口,或者你的手里沒有攝像頭時,可以使用FPGA邏輯實現的動態彩條模擬輸入視頻,代碼里通過parametr參數選擇視頻源,默認不使用動態彩條;FPGA首先對攝像頭進行i2c初始化配置,然后采集攝像頭視頻;然后視頻送入圖像緩存架構實現視頻2幀緩存功能,本設計使用SDRAM作為緩存介質;然后Native視頻時序控制圖像緩存架構從SDRAM中讀取視頻,并做Native視頻時序同步,輸出RGB888視頻;然后視頻送入RGB轉HDMI實現HDMI輸出功能;最后視頻通過板載HDMI或者LCD輸出接口送顯示器顯示即可;針對市場主流需求,本設計提供4套Quartus工程源碼,具體如下:
現對上述3套工程源碼做如下解釋,方便讀者理解:
工程源碼1
開發板FPGA型號為Cyclone-IV-EP4CE10F17C8;輸入視頻為OV7725攝像頭或者動態彩條,默認使用OV7725;FPGA首先使用純Verilog實現的i2c總線對攝像頭進行初始化配置,分辨率配置為640x480@60Hz;然后采集輸入視頻,將輸入的兩個時鐘傳輸一個RGB565像素的視頻采集為一個時鐘傳輸一個RGB888像素的視頻;然后視頻送入圖像緩存架構實現視頻2幀緩存功能,本設計使用SDRAM作為緩存介質;然后Native視頻時序控制圖像緩存架構從SDRAM中讀取視頻,并做Native視頻時序同步,輸出RGB888視頻,輸出分辨率為640x480@60Hz,然后視頻送入RGB轉HDMI實現HDMI輸出功能;最后視頻通過板載HDMI輸出接口送顯示器顯示即可;該工程適用Altera系列FPGA實現圖像視頻采集系統應用;
工程源碼2
開發板FPGA型號為Cyclone-IV-EP4CE10F17C8;輸入視頻為OV5640攝像頭或者動態彩條,默認使用OV5640;FPGA首先使用純Verilog實現的i2c總線對攝像頭進行初始化配置,分辨率配置為1280x720@30Hz;然后采集輸入視頻,將輸入的兩個時鐘傳輸一個RGB565像素的視頻采集為一個時鐘傳輸一個RGB888像素的視頻;然后視頻送入圖像緩存架構實現視頻2幀緩存功能,本設計使用SDRAM作為緩存介質;然后Native視頻時序控制圖像緩存架構從SDRAM中讀取視頻,并做Native視頻時序同步,輸出RGB888視頻,輸出分辨率為1280x720@60Hz,然后視頻送入RGB轉HDMI實現HDMI輸出功能;最后視頻通過板載HDMI輸出接口送顯示器顯示即可;該工程適用Altera系列FPGA實現圖像視頻采集系統應用;
工程源碼3
開發板FPGA型號為Cyclone-IV-EP4CE10F17C8;輸入視頻為串口發送來的圖片,使用串口上位機發送bmp格式圖片到FPGA,圖片分辨率為800x480,串口波特率設置為1562500;FPGA接收圖片數據后送入圖像緩存架構實現視頻2幀緩存功能,本設計使用SDRAM作為緩存介質;然后Native視頻時序控制圖像緩存架構從SDRAM中讀取視頻,并做Native視頻時序同步,輸出RGB565視頻,輸出分辨率為800x480@60Hz;最后視頻通過板載LCD輸出接口送顯示器顯示即可;該工程適用Altera系列FPGA實現圖像視頻采集系統應用;
工程源碼4
開發板FPGA型號為Cyclone-IV-EP4CE10F17C8;輸入視頻為串口發送來的圖片,使用串口上位機發送bmp格式圖片到FPGA,圖片分辨率為800x480,串口波特率設置為1562500;FPGA接收圖片數據后送入圖像緩存架構實現視頻2幀緩存功能,本設計使用SDRAM作為緩存介質;然后Native視頻時序控制圖像緩存架構從SDRAM中讀取視頻,并做Native視頻時序同步,輸出RGB888視頻,輸出分辨率為800x480@60Hz,然后視頻送入RGB轉HDMI實現HDMI輸出功能;最后視頻通過板載HDMI輸出接口送顯示器顯示即可;該工程適用Altera系列FPGA實現圖像視頻采集系統應用;
本博客描述了Altera系列FPGA實現圖像視頻采集系統的設計方案,工程代碼可綜合編譯上板調試,可直接項目移植,適用于在校學生、研究生項目開發,也適用于在職工程師做學習提升,可應用于醫療、軍工等行業的高速接口或圖像處理領域;
提供完整的、跑通的工程源碼和技術支持;
工程源碼和技術支持的獲取方式放在了文章末尾,請耐心看到最后;
免責聲明
本工程及其源碼即有自己寫的一部分,也有網絡公開渠道獲取的一部分(包括CSDN、Xilinx官網、Altera官網等等),若大佬們覺得有所冒犯,請私信批評教育;基于此,本工程及其源碼僅限于讀者或粉絲個人學習和研究,禁止用于商業用途,若由于讀者或粉絲自身原因用于商業用途所導致的法律問題,與本博客及博主無關,請謹慎使用。。。
2、相關方案推薦
我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目
其實一直有朋友反饋,說我的博客文章太多了,亂花漸欲迷人,自己看得一頭霧水,不方便快速定位找到自己想要的項目,所以本博文置頂,列出我目前已有的所有項目,并給出總目錄,每個項目的文章鏈接,當然,本博文實時更新。。。以下是博客地址:
點擊直接前往
Altera系列FPGA相關方案推薦
我專門開設了一個Altera系列FPGA專欄,里面收錄了基于Altera系列FPGA的圖像處理、UDP網絡通信、GT高速接口、PCIE等博客,感興趣的可以去看看,博客地址:
點擊直接前往
3、設計思路框架
工程設計原理框圖
工程設計原理框圖如下:
輸入Sensor之–>OV7725攝像頭
輸入Sensor是本工程的輸入設備,其一為OV7725攝像頭,此外本博主在工程中還設計了動態彩條模塊,彩條由FPGA內部邏輯產生,且是動態移動的,完全可模擬Sensor,輸入源選擇Sensor還是彩條,通過Sensor模塊的頂層參數配置,默認選擇Sensor輸入;Sensor模塊如下:
SENSOR_TYPE=0;則輸出OV7725攝像頭采集的視頻;
SENSOR_TYPE=1;則輸出動態彩條的視頻;
OV7725攝像頭需要i2c初始化配置,本設計配置為640x480@60Hz分辨率,本設計提供純verilog代碼實現的i2c模塊實現配置功能;此外,OV7725攝像頭還需要圖像采集模塊實現兩個時鐘輸出一個RGB565的視頻轉換為一個時鐘輸出一個RGB888視頻,本設計提供純verilog代碼實現的圖像采集模塊實現配置功能;動態彩條則由FPGA內部邏輯實現,由純verilog代碼編寫;將OV7725攝像頭配置采集和動態彩條進行代碼封裝,形成helai_OVsensor.v的頂層模塊,整個模塊代碼架構如下:
輸入Sensor之–>OV5640攝像頭
輸入Sensor是本工程的輸入設備,其一為OV5640攝像頭,此外本博主在工程中還設計了動態彩條模塊,彩條由FPGA內部邏輯產生,且是動態移動的,完全可模擬Sensor,輸入源選擇Sensor還是彩條,通過Sensor模塊的頂層參數配置,默認選擇Sensor輸入;Sensor模塊如下:
SENSOR_TYPE=0;則輸出OV5640攝像頭采集的視頻;
SENSOR_TYPE=1;則輸出動態彩條的視頻;
OV5640攝像頭需要i2c初始化配置,本設計配置為1280x720@30Hz分辨率,本設計提供純verilog代碼實現的i2c模塊實現配置功能;此外,OV5640攝像頭還需要圖像采集模塊實現兩個時鐘輸出一個RGB565的視頻轉換為一個時鐘輸出一個RGB888視頻,本設計提供純verilog代碼實現的圖像采集模塊實現配置功能;動態彩條則由FPGA內部邏輯實現,由純verilog代碼編寫;將OV5640攝像頭配置采集和動態彩條進行代碼封裝,形成helai_OVsensor.v的頂層模塊,整個模塊代碼架構如下:
輸入Sensor之–>串口傳圖輸入
輸入Sensor是本工程的輸入設備,其三為串口傳圖作為輸入;輸入視頻為串口發送來的圖片,使用串口上位機發送bmp格式圖片到FPGA,圖片分辨率為800x480,串口波特率設置為1562500;串口傳圖架構如下:
串口傳圖模塊代碼架構如下:
串口傳圖上位機已放在資料包中,如下:
串口傳圖上位機使用方法如下:
圖像緩存架構
圖像緩存架構實現的功能是將輸入視頻緩存到板載SDRAM中再讀出送后續模塊,目的是實現視頻同步輸出,實現輸入視頻到輸出視頻的跨時鐘域問題,更好的呈現顯示效果,其中SDRAM控制器用純verilog代碼實現,所以圖像緩存架構就是實現用戶數據到SDRAM的橋接作用;架構如下:
圖像緩存架構由視頻緩存幀更新模塊+寫視頻控制邏輯+讀視頻控制邏輯+SDRAM控制器模塊組成;SDRAM控制器實現了SDRAM初始化、讀寫時序控制、讀寫流程控制等功能,寫視頻控制邏輯、讀視頻控制邏輯實際上就是一個視頻讀寫狀態機,以寫視頻為例,假設一幀圖像的大小為M×N,其中M代表圖像寬度,N代表圖像高度;寫視頻控制邏輯每次寫入一次突發傳輸的視頻數據,記作Y,即每次向SDRAM中寫入Y個像素,寫M×N÷Y次即可完成1幀圖像的緩存,讀視頻與之一樣;同時調用兩個FIFO實現輸入輸出視頻的跨時鐘域處理,使得用戶可以忽略SDRAM復雜的控制時序,以簡單地像使用FIFO那樣操作SDRAM,從而達到讀寫SDRAM的目的,進而實現視頻緩存;本設計圖像緩存方式為2幀緩存;圖像緩存模塊代碼架構如下:
HDMI輸出架構
HDMI輸出包括Native視頻時序和HDMI編碼,Native視頻時序的作用是產生傳統VGA的、RGB的視頻流;HDMI編碼采用RTL邏輯編碼方式;HDMI輸出代碼架構如下:
LCD輸出架構
使用Native視頻時序產生LCD輸出的時序,本設計使用5寸TFT-CLD屏幕;CLD輸出代碼架構如下:
工程源碼架構
以工程2為例,工程源碼架構如下,其他工程與之類似:
4、Quartus工程源碼1詳解:OV7725輸入-HDMI輸出版本
開發板FPGA型號:Altera–Cyclone-IV系列-EP4CE10F17C8;
開發環境:Quartus 18.1;
輸入:OV7725攝像頭或FPGA內部動態彩條,分辨率640x480@60Hz;
輸出:HDMI,RTL邏輯編碼,分辨率640x480@60Hz;
圖像緩存方案:純Verilog圖像緩存,2幀緩存;
工程源碼架構請參考前面第3章節中的《工程源碼架構》小節;
工程作用:此工程目的是讓讀者掌握Altera系列FPGA實現圖像視頻采集系統的設計能力,以便能夠移植和設計自己的項目;
工程的資源消耗和功耗如下:
5、Quartus工程源碼2詳解:OV5640輸入-HDMI輸出版本
開發板FPGA型號:Altera–Cyclone-IV系列-EP4CE10F17C8;
開發環境:Quartus 18.1;
輸入:OV5640攝像頭或FPGA內部動態彩條,分辨率1280x720@30Hz;
輸出:HDMI,RTL邏輯編碼,分辨率1280x720@60Hz;
圖像緩存方案:純Verilog圖像緩存,2幀緩存;
工程源碼架構請參考前面第3章節中的《工程源碼架構》小節;
工程作用:此工程目的是讓讀者掌握Altera系列FPGA實現圖像視頻采集系統的設計能力,以便能夠移植和設計自己的項目;
工程的資源消耗和功耗如下:
6、Quartus工程源碼3詳解:串口傳圖輸入-LCD輸出版本
開發板FPGA型號:Altera–Cyclone-IV系列-EP4CE10F17C8;
開發環境:Quartus 18.1;
輸入:串口傳圖,圖片分辨率800x480;
輸出:5寸LCD屏,分辨率800x480@60Hz;
圖像緩存方案:純Verilog圖像緩存,2幀緩存;
工程源碼架構請參考前面第3章節中的《工程源碼架構》小節;
工程作用:此工程目的是讓讀者掌握Altera系列FPGA實現圖像視頻采集系統的設計能力,以便能夠移植和設計自己的項目;
工程的資源消耗和功耗如下:
7、Quartus工程源碼4詳解:串口傳圖輸入-HDMI輸出版本
開發板FPGA型號:Altera–Cyclone-IV系列-EP4CE10F17C8;
開發環境:Quartus 18.1;
輸入:串口傳圖,圖片分辨率800x480;
輸出:HDMI,RTL邏輯編碼,分辨率800x480@60Hz;
圖像緩存方案:純Verilog圖像緩存,2幀緩存;
工程源碼架構請參考前面第3章節中的《工程源碼架構》小節;
工程作用:此工程目的是讓讀者掌握Altera系列FPGA實現圖像視頻采集系統的設計能力,以便能夠移植和設計自己的項目;
工程的資源消耗和功耗如下:
8、上板調試驗證并演示
準備工作
你需要有以下裝備才能移植并測試該工程代碼:
1:FPGA開發板;
2:OV7725或OV5640攝像頭或筆記本電腦,沒有則請使用FPGA內部生成的彩條;
3:HDMI傳輸線;
4:HDMI顯示,要求分辨率支持1920x1080;
Altera系列FPGA視頻采集效果演示
Altera系列FPGA視頻采集效果演示如下:
Altera-圖傳
9、福利:工程源碼獲取
福利:工程代碼的獲取
代碼太大,無法郵箱發送,以某度網盤鏈接方式發送,
資料獲取方式:私,或者文章末尾的V名片。
此外,有很多朋友給本博主提了很多意見和建議,希望能豐富服務內容和選項,因為不同朋友的需求不一樣,所以本博主還提供以下服務: