基於Xilinx FPGA的視頻圖像采集系統


         本站點博客將逐步遷移至http://ninghechuanblogs.cn/

  本篇要分享的是基於Xilinx FPGA的視頻圖像采集系統,使用攝像頭采集圖像數據,並沒有用到SDRAM/DDR。這個工程使用的是OV7670 30w像素攝像頭,用雙口RAM做存儲,顯示窗口為320x240,而且都知道7670的顯示效果也不怎么樣,這是一次偶然的機會我得到的資源,便在basys3、zybo、國產FPGA PGT180H上移植成功,總體的顯示效果也是可能達到7670應有的標准,7670可以說是最基礎的攝像頭,基礎到你都不想學驅動它,因為畫質很差,還有一款基礎的攝像頭是OV7725,也是30w像素和7670比起來,差別咋就這么大呢(看價格就明白了)。當然這只是一個基礎,博主日后也會着手去深入學習基於FPGA的攝像頭的驅動。

 

這是本系統簡單的結構框圖,主要有攝像頭配置模塊、圖像數據采集模塊、像素數據存儲模塊、VGA顯示驅動模塊組成。 

攝像頭模塊需要用SCCB協議進行配置,SCCB即我們常說的I2C總線。

該部分由兩個模塊構成,I2C總線模塊,攝像頭寄存器存儲模塊,通過I2C總線,也就是下文的SCCB總線,將攝像頭寄存器存儲模塊中的數據發送到OV7670內,完成攝像頭的得配置。

         SCCB總線在寫寄存器時,先寫設備地址(0x42),收到從設備應答后再寫寄存器地址,最后寫將要寫入的寄存器的值。 

SCCB總線的讀取寄存器時序:SCCB總線在讀寄存器時,分兩個階段:第一階段為先寫設備地址(0x42),然后再寫寄存器地址;第二階段為寫設備地址(0x43),然后讀出寄存器地址的值,從而完成對一個寄存器值的讀取,

 

I2C協議有兩條總線,時鍾總線sclk和數據總線sdat,我們在時鍾總線為高電平的中心時采集數據,在時鍾總線為低電平的中心改變數據,每發送8位數據會有一個應答。

I2C協議寫操作,先給一個寫命令,然后接着兩組8位的數據,這個工程里OV7670一共有165個寄存器需要配置,當第165個寄存器配置完成后config_finished信號拉高,表示寄存器配置完成。

         從模塊引腳上我們可以看到,7670是8位的像素數據輸出,場信號(默認低有效),和行信號有效的同時,開始捕獲數據,寄存第一個數據, 拼接到第二個數據, 實現一個完整像素的輸出。

         像素數據存儲采用的是雙口RAM,將RAM數據位寬設置為16,因為我才用的zybo開發板是16位的,深度設置為320x240 = 76800。這是RAM IP Core的頂層實例化。 

         最后是VGA顯示模塊,將儲存的數據讀出,顯示在VGA顯示器上,這樣這個視頻采集系統就完成了。這里值得一提的是在使用zybo開發板進行攝像頭配置的時候出現了如下問題,最后經上網查閱資料最后得以解決,出現這個問題的原因是,遇到上面的問題是因為我們將外部輸入的一個時鍾管腳 OV7670_PCLK(攝像頭輸出給FPGA的像素時鍾)分配到了一個普通的IO口上面,如果是用一個專用的時鍾管腳,比如說ZedBoard有專有時鍾管腳 Y9就不會出現這樣的錯誤了。

  因為是IO管腳上,所以其周圍沒有全局時鍾 BUFG,所以我們在 XDC 里使用:set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets {OV7670_PCLK_IBUF}]  來屏蔽 Xilinx 的檢測,從而通過編譯。這個方式在軟件提示的錯誤中也提供了解決方法,

 

       我這里使用的迪芝倫官方出品的zybo開發板,肯定有朋友好奇我的攝像頭是怎么插上去的——杜邦線啊,引腳約束文件可是我精心設計的,所以只需要18根連排杜邦線即可,使用杜邦線的顯示效果基本不會受影響,如果你的顯示效果很差,可不能怪杜邦線肯定是你時序的問題。

這是最終的顯示效果圖,原始圖像是沒有白框的,但是這個工程會讓最開始幾列像素數據顯示不出來,所以我自己加上白邊,遮蓋掉每行圖像的前幾個像素點,其他的數據照常顯示。

  這里只是大概介紹下視頻圖像采集系統的設計思路,沒有詳細介紹每一個部分,后面博主計划嘗試使用FPGA驅動OV7725 sensor,到時會詳細記錄開發過程,希望大家能夠相互關注並且共同學習。哪里不好歡迎提出,歡迎指點。

如果你想獲得該設計的工程源碼請關注我的微信訂閱號:開源FPGA,后台回復“開源FPGA”即可獲得該工程源碼,歡迎加入開源FPGA-交流群-I進行討論,群號碼:677163633。

 

轉載請注明出處:NingHeChuan(寧河川)

個人微信訂閱號:開源FPGA

如果你想及時收到個人撰寫的博文推送,可以掃描左邊二維碼(或者長按識別二維碼)關注個人微信訂閱號

知乎ID:NingHeChuan

微博ID:NingHeChuan

原文地址:http://www.cnblogs.com/ninghechuan/p/8325699.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM