本原創教程由芯驛電子科技(上海)有限公司(ALINX)創作,版權歸本公司所有,如需轉載,需授權并注明出處(http://www.alinx.com)。
適用于板卡型號:
PGL22G
1. 簡介
本實驗將實現視頻圖像的以太網傳輸,也相當于用 FPGA 來實現網絡攝像頭的功能。這里采用黑金的 500 萬攝像頭 AN5642 模組,通過配置 OV5640 的寄存器實現 JPEG 視頻壓縮的圖像輸出。以太網傳輸用 Ethernet UDP 通信協議,達到視頻圖像數據的快速傳輸。上位機通過接收網口的 UDP 數據包,提取 JPEG 的圖像數據顯示在電腦上。 在 FPGA 內部,我們使用一個 FIFO 模塊用于存儲攝像頭 OV5640 采集的 JPG 圖像數據,當 FIFO 數據的數量達到一個 UDP 數據包的長度時,觸發一次 UDP 的數據包發送。實現的邏輯框圖如下:
注意:在做此實驗之前,首先要學習之前的例程,OV5640的攝像頭顯示例程以及千兆以太網傳輸實驗。如果此實驗遇到問題,建議溫習前面的例程。
2. 程序設計
2.1 攝像頭參數設置
我們對ov5640寄存器配置做了修改,在寄存器表里,將分辨率改成了800*600。并且選擇了JPEG模式。
這里需要注意,JPEG 格式輸出的視頻圖像的每一幀的數據大小是不一樣的,JPEG 輸出的
數據模式有 6 種,我們程序中設置為 JPEG 模式 2,即每行的長度是固定的,每幀會有不同的
行數,最后一行的數據沒有達到固定的長度的話,會補充 dummy 數據。具體大家看一下
OV5640 的 datasheet。
每行的長度由以下的寄存器配置,這里我們程序中并沒有設置,默認參數為 0x400,也就
是每行的數據長度為 1024.
2.2 以太網設置
在例化mac_test.v時,將UDP發送數據長度設置為1024字節。并對以太網做了上電復位處理,利用power_on_rst.v上電延遲100ms復位以太網模塊。在udp_tx.v文件中,去掉了UDP數據的校驗和計算,節省時間。在mac_test.v的狀態機中,加入了CHECK_FIFO狀態,由于以太網首部發送也要一定時間,因此提前判斷fifo中的可讀數據數量是否大于1000,啟動UDP數據發送。
3. 下載和實驗
注意:在做實驗之前一定要確保OV5640攝像頭顯示沒有問題,可結合OV5640攝像頭顯示例程確認。
3.1 開發板連接
1)將AN5642攝像頭模組插入開發板,模塊依次接入AX7035/AX050的擴展口J9、J8。保證1腳對齊,1腳在焊盤形狀和其他引腳是有明顯區別的,是方形的;
2)使用網線連接PC和開發板的以太網口,這里的PC網卡需要千兆網卡和千兆網線,切換攝像頭視頻時需按KEY2鍵。
3.2 PC端IP設置
設置PC端的IP地址為192.168.0.3,如下圖:
3.3 程序下載
下載FPGA程序,在打開上位機軟件之前,首先檢查網絡是否連通,可在CMD窗口
ping 192.168.0.2查看連通情況。
3.4 上位機軟件
打開“CD\07_軟件工具及驅動\以太網視頻傳輸軟件”文件夾中的video.exe
之后軟件就可以顯示圖像,效果如下:
3.5 視頻截圖
在軟件顯示窗口,點擊鼠標左鍵按住不放,可以保存圖片及視頻,松開即可停止保存。出現jpg_save文件,圖片和視頻保存在里面。
打開文件夾,可以看到保存的圖片和視頻,注意要控制保存的時間,否則會很占用磁盤空間。每一張圖片表示一幀圖像。
4. 常見問題
4.1 等待板卡連接
在打開軟件后,如果出現以下情況,可能原因是攝像頭或網線沒有插好,請檢查攝像頭及網線連接情況。之后重新打開軟件。
4.2 數據異常
如果出現以下情況,可能原因是攝像頭配置不正常,有數據發送,但上位機無法解析,建議先用攝像頭顯示例程檢查攝像頭是否能正常使用或者重新插好攝像頭。之后重新打開軟件。
4.3 IP地址未配置
如果出現以下情況,表示沒有設置IP地址,請確認設置好IP后重新打開軟件。
5. 總結
到此為止,以太網傳輸視頻的實驗就做完了,程序比較簡單,僅在原有的實驗基礎上做了擴展,理解起來相對容易些。
-
FPGA
+關注
關注
1626文章
21671瀏覽量
601920 -
以太網
+關注
關注
40文章
5380瀏覽量
171135 -
攝像頭
+關注
關注
59文章
4810瀏覽量
95454 -
fifo
+關注
關注
3文章
387瀏覽量
43555 -
紫光同創
+關注
關注
5文章
82瀏覽量
27488
發布評論請先 登錄
相關推薦
評論