目前FPGA用于圖像采集 傳輸 處理 顯示應(yīng)用越來(lái)越多,主要原因是圖像處理領(lǐng)域的火熱以及FPGA強(qiáng)大的并行處理能力。本文以O(shè)V7725為例,對(duì)攝像頭使用方面的基礎(chǔ)知識(shí)做個(gè)小的總結(jié).
一、DVP及SCCB接口時(shí)序
下圖是OV7725 datasheet中攝像頭傳感器內(nèi)部結(jié)構(gòu)視圖。我們主要關(guān)注常用的用戶接口——DVP(數(shù)字視頻端口)。
XCLK:工作時(shí)鐘輸入,由主控器產(chǎn)生,頻率為24MHz;
HREF:行參考信號(hào)輸出;
PCLK:像素時(shí)鐘輸出,由XCLK產(chǎn)生,用于控制器采樣圖像數(shù)據(jù);
VSYNC:場(chǎng)同步信號(hào)輸出;
RSTB:復(fù)位輸入,低電平有效;
PWDN:低功耗模式選擇輸入,正常工作期間需拉低;
SCL:SCCB管理接口時(shí)鐘,最高頻率400KHz;
SDA:SCCB接口串行數(shù)據(jù)總線;
D[9:0] 像素?cái)?shù)據(jù)輸出;
PCLK引出一個(gè)幀率的概念,單位為fps(Frames Per Second),指每秒鐘輸出幾幅靜態(tài)圖像,幀率越高視頻越流暢。另外SCCB總線與IIC總線非常相近,主機(jī)寫時(shí)序基本一致,故多數(shù)圖像采集系統(tǒng)直接復(fù)用IIC控制器對(duì)圖像傳感器內(nèi)部寄存器進(jìn)行配置。這里給出大體的讀寫流程,具體見(jiàn)參考文獻(xiàn)2。需要格外注意的是,SIO_C時(shí)鐘信號(hào)在IDLE狀態(tài)下必須為高電平。
寫操作:
讀操作(分兩部分):
總結(jié)來(lái)說(shuō),SCCB與IIC的主要區(qū)別在以下兩點(diǎn):
1 IIC有重復(fù)開始的概念,讀操作先寫設(shè)備地址 再寫寄存器地址,然后重新開始,寫設(shè)備地址,讀取數(shù)據(jù)。而SCCB讀操作時(shí)在第一次寫寄存器地址后必須有結(jié)束條件。
2 IIC主機(jī)寫數(shù)據(jù)到從機(jī)時(shí),從機(jī)必須在寫8bit下一時(shí)鐘拉低總線響應(yīng)主機(jī)。IIC主機(jī)讀取從機(jī)數(shù)據(jù)時(shí),多字節(jié)連續(xù)讀取除最后字節(jié)主句均在第9時(shí)鐘周期拉低總線響應(yīng),單字節(jié)讀取拉高總線便于下一拍提供停止條件。而SCCB每個(gè)phase第9bit為don't care bit /NACK,主機(jī)寫從機(jī)第9bit不關(guān)心,讀取從機(jī)數(shù)據(jù)由于不支持多字節(jié)操作第9bit主機(jī)必須拉高總線。
接下來(lái)從整體上把握輸出圖像數(shù)據(jù)與同步信號(hào)的關(guān)系。(圖片截取自《OV7725攝像頭編程基本知識(shí)筆記》,見(jiàn)參考文獻(xiàn)3.
兩個(gè)VSYNC高脈沖之間為包含一幀圖像數(shù)據(jù),但只有HREF高電平期間數(shù)據(jù)才為有效數(shù)據(jù),每個(gè)HREF高電平區(qū)間對(duì)應(yīng)一行圖像數(shù)據(jù)。因此通過(guò)這兩個(gè)信號(hào)即可找到有效的圖像數(shù)據(jù)。OV7725攝像頭支持多種圖像輸出格式,此處闡述常用的RGB565格式:
圖像數(shù)據(jù)在PCLK下降沿輸出,控制器在其上升沿采樣。當(dāng)選擇此模式輸入時(shí),僅使用數(shù)據(jù)線高八位。時(shí)序圖給出了相鄰兩個(gè)字節(jié)數(shù)據(jù)內(nèi)容,可見(jiàn)兩個(gè)字節(jié)表示一個(gè)像素點(diǎn)數(shù)據(jù),從高位到低位依次是:R 5bit,G 6bit,B 5bit。Ov7725圖像傳感器的像素30萬(wàn),分辨率:640*480,即每行640個(gè)有效像素點(diǎn),一共480行。所以每個(gè)HREF高脈沖期間有640*2個(gè)PCLK周期,兩個(gè)VSYNC高脈沖期間循環(huán)480次。
二、時(shí)鐘與幀率計(jì)算
攝像頭輸入時(shí)鐘是XCLK,輸出時(shí)鐘是PCLK。如何給出合理的XCLK并得知PCLK頻率至關(guān)重要。在datasheet中給出了詳細(xì)的寄存器配置介紹,其中地址是0X0D和0X11的兩個(gè)寄存器與時(shí)鐘密切相關(guān)。寄存器CLKRC決定如何分頻,公式如下:f internal clock = f input clock * PLL multiplier / [(CLKRC[5:0]+1)*2]。我也是看了半天的相關(guān)資料才知道f internal clock指的就是攝像頭輸出的PCLK。公式中f input clock指的是XCLK頻率,PLL multiplier只COM4寄存器配置的PLL倍頻系數(shù)。
比如配置寄存器COM4為0X41,配置CLKRC為0X00。因此,f pclk = f xclk * 4 / [(0+1)*2] = 2 f xclk。此時(shí)XCLK時(shí)鐘頻率若是25MHZ,則PCLK頻率是50MHZ。現(xiàn)在我們以筆者選用的VGA幀格式,RGB565像素格式來(lái)算一下幀率。
幀率即為每秒鐘輸出多少幅完整圖像,所以幀率=輸出時(shí)鐘頻率/每幀的時(shí)鐘周期數(shù)。最終幀率=50*10^6/(510*784*2) = 62.5Hz。一般人眼在幀率為50Hz以上無(wú)法察覺(jué)圖像的閃動(dòng),具有較好的顯示效果。
有你想看的精彩 至芯科技FPGA就業(yè)培訓(xùn)班——助你步入成功之路、9月23號(hào)北京中心開課、歡迎咨詢! FPGA學(xué)習(xí)-數(shù)字分頻器設(shè)計(jì) 一文解析初學(xué)者如何學(xué)習(xí)FPGA
掃碼加微信邀請(qǐng)您加入FPGA學(xué)習(xí)交流群
歡迎加入至芯科技FPGA微信學(xué)習(xí)交流群,這里有一群優(yōu)秀的FPGA工程師、學(xué)生、老師、這里FPGA技術(shù)交流學(xué)習(xí)氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!
點(diǎn)個(gè)在看你最好看
原文標(biāo)題:攝像頭圖像采集基礎(chǔ)知識(shí)總結(jié)
文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21744瀏覽量
603665
原文標(biāo)題:攝像頭圖像采集基礎(chǔ)知識(shí)總結(jié)
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論