基於FPGA的OV7670驅動 第2部分

2022-09-22 04:27:07 字數 2734 閱讀 1167

人類從外部世界獲取資訊的70%~80%是從視覺獲得的。

影象(image)在計算機中又被稱為位圖或者是點陣圖,它將二維平面物件的資訊細化為密集排列的點,然後將這些點的資訊按順序儲存在計算機中。在計算機中,影象的實質是乙個數字矩陣,矩陣中各項資料用來描述構成影象的每乙個點的亮度、顏色等資訊。構成影象的點被稱為畫素(pixel)。影象通常數字裝置捕捉的實際場景圖面或以數位化形式儲存的任意畫面來獲得。

乙個畫素點的資料位寬通常為:1位、4位、8位、16位、24位、32位。真彩色影象就是用24位進行顯示的。

顏色= r(紅色的百分比)+g(綠色的百分比)+b(藍色的百分比);

ov7670

實時採集影象資訊,然後通過

vga介面顯示於顯示屏上。具體實現過程如下:

fpga

驅動ov7670

(cmos

影象感測器),

ov7670

的採集影象的速度為30幀

/秒,fpga

接收ov7670

的影象資訊,然後以

25m的時鐘頻率寫入

fpga

內部的非同步

fifo

中,在寫入非同步

fifo

的同時,以

100m

的時鐘頻率將非同步

fifo

中的影象資料讀出,並快取到

fpga

外部的sdram

(hy57v641620et-h

)中。sdram

(hy57v641620et-h

)作為ping pang

操作的快取器,由於該

ov7670

的分頻率為

30w,所以採用的

vga顯示模式為

640*480@60hz

,畫素資訊為

rgb565

,顯示一幀的影象的資料量為

640*480*16bit = 4915200bit

。sdram

(hy57v641620et-h

)的儲存容量為

64mbit

,分為4

頁,每一頁的儲存容量為

16mbit

,對於儲存一幀的影象資料已經足夠了。

sdram

(hy57v641620et-h

)作為ping pang

操作的快取器,實現的過程為使用其內部的兩個儲存頁進行快取,當一頁正被寫入資料時,另一頁正被讀出資料,這樣迴圈操作。

例如當a

頁被寫完時,轉入

b頁進行寫,此時也是

b頁被讀完,轉入

a頁進行讀操作。這樣就可以無間斷地將採集的影象資料往

sdram

內部進行寫入,也可以無間斷地往

sdram

內部讀出影象資料進行顯示。

寫sdram

需要乙個非同步

fifo

,當然讀

sdram

也需要乙個非同步的

fifo

,以100m

的時鐘頻率將

sdram

中的資料讀出之後再儲存到非同步

fifo

中,然後以

25m的時鐘頻率讀出非同步

fifo

中的資料進行

vga顯示。

該系統需要的

25m和

100m

時鐘訊號,由

fpga

內部的pll

進行產生。

系統說明:

ov7670將採集到的資料訊號傳送到fpga內部的write_fifo中,write_fifo再將影象資料通過sdram_ctrl模組寫入到sdram中,再通過sdram_ctrl模組將影象資料讀出寫入到read_fifo中,最後再將read_fifo中的影象資料讀出通過vga&adv7123進行顯示,在此期間sdram作為快取器。

該系統中要用到的模組有:

sdram突發讀寫頁

非同步dcfifo的讀寫

vga顯示

pll時鐘產生

當然這裡還需要進行很大的修改、除錯使之滿足我們的系統需要。

這種模組重用的方法很重要,在如今的電子設計中,電子系統的整合度將只會是越來越高,這是電子行業的趨勢,所以我們要順勢而為,將一些常用的硬體模組或者是一些演算法模組封裝好,做成屬於自己的ip,在需要的時候就可以快速地呼叫這些ip模組,加入到開發工程之中,避免再次去重寫驅動**和演算法**。以後的fpga開發趨勢應該是朝著ip呼叫,ip模組的**應該是:官方、第三方公司、網上開源、自身。而對於乙個fpga開發工程師而言,更多的工作是在如何去選用ip和如何去運用ip。這是硬體開發的乙個趨勢,相信你已經看到了軟體開發已經走在了這一條路上,安卓的高速發展是除了是開源外,更多的是其內部已經封裝了很多的api函式,開發人員只需呼叫這些api函式,就可以很方便地進行設計,我相信以後的ip 也將會成為api一樣,滿足fpga開發人員的設計需求,讓fpga設計更為方便。說了這麼多,還是回歸主題吧!

最後顯示效果:

OV7670使用經驗總結

我是用這款攝像頭來進行人民幣面額的識別 影象中色塊的計數,用微控制器把一幀彩色影象採集進來後,先進行灰度處理,然後加上處理演算法,用的微控制器是stm32f407,處理速度妥妥的夠。可是一直有乙個問題,這款攝像頭很容易出現線間干擾,只要資料線和其他的線挨得太近,影象就會出現一閃一閃的失真。正點原子給...

攝像頭OV7670與OV7620對比

ov7725 程式設計 使用 購買 二 7670 資料 購買 ov7620 程式設計 使用 三 7620 購買鏈結 帶不帶,fifo自己問客服。如今,市場上提到可以應用在智慧型車上的攝像頭,多如牛毛。到底那一款最適合用在智慧型車上呢,這裡demok選取了2款典型的攝像頭ov7670與ov7620,從...

ok6410使用ov7670模組配置方法

需使用ok6410官方的ov9650 cmos模組,去掉ov9650換成ov7670,注意 1.ov7670模組管腳定義必須和ov9650一致 2.飛凌提供的ov9650規格書管腳1和24順序錯誤 開始配置 1.修改ov7670的i2c位址為0x21,i2c board info ov965x 0x...