摘 要: 基于Atera公司的FPGA芯片對(duì)OmniVision圖像傳感器進(jìn)行圖像采集前的準(zhǔn)備工作,通過(guò)FPGA的GPIO端口模擬SCCB(串行攝像機(jī)控制總線)總線協(xié)議對(duì)傳感器的寄存器進(jìn)行配置,從而完成對(duì)傳感器的初始化,使得攝像頭得以正常運(yùn)行。
關(guān)鍵詞: FPGA;OmniVision圖像傳感器;SCCB
0 引言
視頻信號(hào)處理系統(tǒng)的前端部分是視頻圖像采集,是視頻監(jiān)控、信息處理等系統(tǒng)的前端需要,對(duì)后端圖像處理系統(tǒng)的性能有著直接的影響。近年來(lái),隨著通信技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,人們對(duì)視頻采集的要求越來(lái)越高,正在向高速、高分辨率、高集成化、高可靠性方向發(fā)展。現(xiàn)場(chǎng)可編程門陣列(FPGA)具有規(guī)模大、集成度高、可靠性高等優(yōu)點(diǎn),對(duì)于視頻采集是非常理想的選擇與趨勢(shì)[1]。
OmniVision圖像傳感器具有獨(dú)有的傳感器技術(shù),通過(guò)減少或消除光學(xué)或電子缺陷(如固定圖案噪聲、托尾、浮散等),提高圖像質(zhì)量,得到清晰穩(wěn)定的彩色圖像,并具有軟件可編程性,從而決定了此系列的傳感器應(yīng)用越來(lái)越廣泛。傳感器正常工作的前提是對(duì)寄存器進(jìn)行配置,使其按照需要的輸出方式、圖像質(zhì)量和數(shù)據(jù)格式進(jìn)行輸出,即對(duì)其初始化。OmniVision傳感器的初始化是通過(guò)SCCB總線協(xié)議的方式實(shí)現(xiàn)的,利用FPGA實(shí)現(xiàn)圖像采集的關(guān)鍵是在FPGA中實(shí)現(xiàn)SCCB總線協(xié)議[2-3]。
1 SCCB總線協(xié)議
串行攝像機(jī)控制總線(Serial Camera Control Bus,SCCB)由OmniVision公司開發(fā),廣泛應(yīng)用于OV系列圖像傳感器上,是一種串行3線的總線,它由時(shí)鐘信號(hào)SIO_C、數(shù)據(jù)信號(hào)SIO_D和使能信號(hào)SCCB_E組成,可實(shí)現(xiàn)一個(gè)主器件對(duì)多個(gè)從器件的控制,如圖1所示。本文把芯片的引腳縮減為兩根,只用數(shù)據(jù)信號(hào)SIO_D和時(shí)鐘信號(hào)SIO_C,但是省去SCCB_E后的SCCB總線只能實(shí)現(xiàn)一個(gè)主器件對(duì)一個(gè)從器件的控制,如圖2所示。在本文中FPGA為主控件,OV系列傳感器為從器件[4]。
1.1 SCCB起始和終止時(shí)序
起始信號(hào)和終止信號(hào)都是由FPGA產(chǎn)生的,當(dāng)SIO_C是高電平時(shí),SIO_D從高電平轉(zhuǎn)到低電平時(shí)產(chǎn)生起始信號(hào),如圖3所示;當(dāng)SIO_C是高電平時(shí),SIO_D從低電平轉(zhuǎn)到高電平時(shí)產(chǎn)生終止信號(hào),如圖4所示。
1.2 SCCB寫時(shí)序
相(Phase)是SCCB進(jìn)行數(shù)據(jù)傳遞的基本單位,一相由連續(xù)傳輸?shù)?位數(shù)據(jù)與其后的第9位(共9位)組成。第9位在讀數(shù)據(jù)和寫數(shù)據(jù)時(shí)分別為自由位(Don′t care bit)和NA位(Ninth bit of a Read phase)。寫時(shí)序由3相構(gòu)成,先寫設(shè)備地址,再寫寄存器地址,最后再寫需要配置的寄存器的數(shù)據(jù),即ID-Address+SUB-Address+W-Data,如圖5所示。
1.3 SCCB數(shù)據(jù)傳輸有效性
SCCB總線進(jìn)行數(shù)據(jù)傳送時(shí),SIO_C為高電平期間,SIO_D上的數(shù)據(jù)必須保持穩(wěn)定,只有在SIO_C為低電平期間,SIO_D的高低電平狀態(tài)才允許變化。其時(shí)序圖如圖6所示。
2 模塊設(shè)計(jì)
基于FPGA通過(guò)SCCB總線對(duì)OV7670初始化就是對(duì)攝像頭的寄存器進(jìn)行配置,使其按照設(shè)定的輸出要求進(jìn)行數(shù)據(jù)輸出[5]。攝像頭寄存器配置流程圖如圖7所示。SCCB控制模塊分為3個(gè)子模塊:分頻器、SCCB狀態(tài)控制模塊、數(shù)據(jù)查找表。這幾個(gè)模塊都是在QuartusII環(huán)境中用Verilog設(shè)計(jì)完成的。下面分別介紹這3個(gè)子模塊。
2.1 分頻器
由于系統(tǒng)時(shí)鐘頻率與SCCB控制模塊的數(shù)據(jù)傳輸頻率不一致,因此要對(duì)系統(tǒng)時(shí)鐘進(jìn)行分頻達(dá)到SCCB總線模塊SIO_C的頻率,并且通過(guò)調(diào)整分頻模塊中的分頻系數(shù)來(lái)進(jìn)行更換[6]。
2.2 SCCB狀態(tài)控制模塊
FPGA作為SCCB的主機(jī),SCCB狀態(tài)控制模塊采用同步狀態(tài)機(jī)的設(shè)計(jì)方法來(lái)模擬SCCB的寫時(shí)序,從而完成對(duì)傳感器寄存器的配置。
2.3 數(shù)據(jù)查找表
將需要配置的傳感器寄存器地址和寄存器的配置數(shù)據(jù)都存放在數(shù)據(jù)查找表中,根據(jù)SCCB的時(shí)序規(guī)范順序送給SCCB狀態(tài)控制模塊。
3 硬件實(shí)現(xiàn)及仿真
硬件調(diào)試工作所選用的FPGA是Altera公司FPGA芯片,Verilog綜合及仿真平臺(tái)是QUARTUSII 13.0。將本實(shí)例中所設(shè)計(jì)的SCCB控制模塊的Verilog源代碼通過(guò)QuartusII編譯后,并在QuartusII環(huán)境下編寫TestBench文件,從而利用與Modelsim的無(wú)縫鏈接對(duì)SCCB總線模塊進(jìn)行功能仿真。仿真波形如圖8所示,可以明確看出:當(dāng)SIO_C位高時(shí)SIO_D由高變低時(shí)表明開始位;經(jīng)過(guò)8位傳感器地址位、1位Don′t care、8位寄存器地址位、1位Don′t care、8位寄存器配置數(shù)據(jù)、1位Don′t care的數(shù)據(jù)傳輸;當(dāng)SIO_C位高時(shí)SIO_D由低變高時(shí)表明結(jié)束,其時(shí)序符合SCCB總線時(shí)序規(guī)范。
4 結(jié)論
本文利用FPGA模擬SCCB總線的時(shí)序?qū)mniVision圖像傳感器的寄存器進(jìn)行配置,使其可以按照特定的要求進(jìn)行圖像輸出。該設(shè)計(jì)對(duì)OV系列的傳感器具有通用性,對(duì)圖像采集前端的設(shè)計(jì)具有重要意義。
參考文獻(xiàn)
[1] 方彩婷,葉盛,汪雪峰,等.基于FPGA的數(shù)字高清CMOS遙感成像技術(shù)[J].電子技術(shù)應(yīng)用,2015,41(4):43-45.
[2] 苑瑋琦,湯永華.OmniVision圖像傳感器的SCCB總線協(xié)議在DSP中的實(shí)現(xiàn)[J].儀器儀表學(xué)報(bào),2006(z2):1687-1688.
[3] OmniVision Serial Camera Control Bus(SCCB) Functional Specification, Document Version; 2.1[Z].www.vot.com.
[4] 張歡,汪紅,王芳芳.基于FPGA的實(shí)時(shí)圖像處理實(shí)驗(yàn)平臺(tái)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2014,33(11):26-28.
[5] 楊光耀.基于FPGA的圖像采集及處理系統(tǒng)設(shè)計(jì)[D].呼和浩特:內(nèi)蒙古大學(xué),2014.
[6] 陳景,李建華.基于FPGA的I2C讀寫控制器的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化技術(shù)與應(yīng)用,2010,29(2):86-88.