楊會建,楊陽,張環(huán),朱瑩
(長春理工大學 電子信息工程學院,長春 130022)
視頻圖像采集傳感器主要有CCD傳感器和CMOS傳感器兩種。CMOS傳感器是利用CMOS工藝制造的圖像傳感器,主要利用了半導體效應。它可以輕易地將周邊電路(如AGC、CDS、Timing generator、或DSP等)集成到傳感器芯片中[1]。因此與CCD傳感器相比,CMOS傳感器具有成本低、低功耗及高整合度等特點[2]。近年來,CMOS傳感器得到了越來越廣泛地應用,視頻監(jiān)控系統(tǒng)就是其中一個領域。本設計正是針對這一領域,利用FPGA的強大并行處理能力,將CMOS傳感器采集信息進行并行處理后實時顯示。
采用FPGA的EP2C8Q208C8作為主控芯片,CMOS傳感器采用具有內(nèi)嵌放大器、A/D轉換、顏色空間轉換、白/黑像素校正等單元的由OmniVision所研制的OV7670圖像傳感器。每次上電復位后首先通過主控芯片根據(jù)SCCB通信協(xié)議對OV7670相關寄存器進行配置,使其工作在RGB或YUV、自動白平衡等狀態(tài)。在初始化CMOS傳感器之后,為確保數(shù)據(jù)的準確性,前10幀數(shù)據(jù)丟棄,然后開始進行圖像采集。
圖1 OV7670硬件原理圖
OV7670的硬件連接圖如圖1所示。采用3.3V電壓供電,CMOS_XCLK為系統(tǒng)輸入時鐘,由FPGA分頻后的25M時鐘提供,CMOS_PCLK為輸出像素時鐘,用來為數(shù)據(jù)采集提供時鐘。CMOS_SCLK和CMOS_SDAT為SCCB通信時所需的時鐘信號和數(shù)據(jù)信號,其中時鐘信號為單向輸入,數(shù)據(jù)信號為雙向傳輸,初始化OV7670只需通過這兩個信號線即可。CMOS_D[7..0]為8位數(shù)據(jù)信號,用來采集視頻信息。CMOS_HREF和CMOS_VSYNC是視頻采集時的行幀同步信號,配合像素時鐘使用。值得注意的是,對于SCCB通信信號CMOS_SCLK和CMOS_SDAT必須外接上拉4.7K電阻,才能輸出高電平。因為SCCB內(nèi)部采用了Open Drain結構,如果不接上拉電阻只能輸出低電平。
1.2.1 通信協(xié)議
SCCB(OmniVision serial camera control bus),是歐姆尼圖像技術公司開發(fā)的串行攝像頭控制總線[3],廣泛應用于OV系列圖像傳感器上。SCCB是一種三線總線,由SCCB_E、SIO_C和SIO_D組成。SCCB_E是控制芯片工作的信號,當進行通信時,必須置1,SIO_C是時鐘信號,SIO_D是雙向數(shù)據(jù)信號,一個主控制器可以控制至少一個以上從設備。當SCCB_E無效時,變?yōu)閮删€控制總線,兼容I2C總線接口。本文采用兩線SCCB接口如圖2所示[4],只有SIO_C(時鐘信號線)和SIO_D(數(shù)據(jù)信號線)兩條[5]。FPGA作為主控制器,用來對OV7670(從控制器)的寄存器地址0x00-0xC9進行相關配置,使其工作在不同的模式下,如RGB(565)或YUV、鏡像方式、自動白平衡等。
圖2 兩線控制模塊
SCCB的寫操作通信協(xié)議如圖3所示。ID Address是CMOS的器件地址,OV7670為0x42;Sub-address為寄存器地址;Write data是具體的寫入數(shù)據(jù),X表示無關位。對于讀操作通信協(xié)議,第一、二相和寫操作一樣,第三相的地址為0x43,第四相為寫入數(shù)據(jù),最后一位NA必須置1。
通信過程如下:首先發(fā)送器件ID地址,然后發(fā)送寄存器地址,對于寫通信格式,通過FPGA往CMOS寄存器里寫數(shù)據(jù)。對于讀通信格式,需要再次發(fā)送CMOS器件地址,但需注意此時最低位應為1,最后再將寄存器里數(shù)值讀出。THD:STA為在將時鐘拉低之前必須提前將數(shù)據(jù)位拉低的最小開始條件保持時間,至少為0.6μs。
圖3 SCCB寫通信數(shù)據(jù)格式
系統(tǒng)在檢測到SIO_C和SIO_D都為邏輯低后就進行數(shù)據(jù)通信。在通信過程中,每次傳輸一位數(shù)據(jù)在時鐘上升沿到來之前必須至少有0.1μs的建立時間。而在時鐘上升沿之后同樣數(shù)據(jù)要保持一定的時間不變,這個時間稱為保持時間THD:DAT,最小值可以為0。只有當建立時間和保持時間都滿足通信協(xié)議要求,數(shù)據(jù)才能被寫入觸發(fā)器。
每次通信完之后,在將數(shù)據(jù)位SIO_D拉高之前需將時鐘SIO_C拉高TSU:STO的時間,至少為0.6μs。通信協(xié)議如圖4所示。
圖4 SCCB通信協(xié)議
1.2.2 SCCB寄存器配置
利用Verilog語言在Quartus中對CMOS傳感器進行模塊化設計,生成的RTL視圖如下圖5所示。iCLK是FPGA提供的25M時鐘用來給OV7670的系統(tǒng)時鐘,iRST_N是系統(tǒng)復位信號,Config_Done是寄存器配置完后的標志位。主要是通過I2C_SCLK和I2C_SDAT根據(jù)SCCB協(xié)議來設置相關寄存器值,從而驅(qū)動OV7670,使其在一定的模式下采集視頻信息。
圖5 SCCB配置RTL視圖
圖6是配置OV7670的流程圖。系統(tǒng)上電后通過硬件復位使整個芯片處于復位狀態(tài)。復位結束后,F(xiàn)PGA根據(jù)SCCB的通信協(xié)議設置OV7670的物理地址、寄存器地址,然后再對相關寄存器配置,在對所有寄存器配置完成后,接下來就可以驅(qū)動OV7670。因為每次發(fā)送時的物理地址是固定的0x42,所以寄存器LUT_DATA只需存儲寄存器地址和需配置的數(shù)據(jù)即可。本設計為了提高系統(tǒng)的靈活性,采用索引的方式,程序設計中只需讓索引值LUT_INDEX小于寄存器數(shù)n即可。當需配置的寄存器數(shù)改變時,只需改變寄存器數(shù)n。部分寄存器的配置如表1所示。
圖6 SCCB流程圖
表1 部分寄存器的配置
1.2.3 SCCB波形仿真
為了驗證程序通信的正確性,需要利用Modelsim仿真工具對其進行波形仿真。圖7是對寄存器配置的仿真波形圖。從仿真波形可以看到,此時的開始條件保持時間為0.1ms,開始條件建立時間遠大于600ns,建立時間是0.05ms,保持時間為0,仿真結果和通信協(xié)議很好的符合一致。
圖7 Write寄存器仿真波形
配置完OV7670寄存器后,可進行視頻數(shù)據(jù)采集。數(shù)據(jù)采集的信號線有像素時鐘PCLK,行同步HREF和幀同步VSYNC[6],分辨率為640*480。幀同步VSYNC低有效,行同步HREF為高時進行數(shù)據(jù)采集,且每次HREF維持高電平的時間為640個像素時鐘,在此期間不斷采集數(shù)據(jù)送至FPGA內(nèi)部WRFIFO進行緩存。當VSYNC低電平持續(xù)507個像素時鐘后被拉高,至此一幀數(shù)據(jù)采集完成[7]。圖8是其時序圖,tsu為建立時間,≥15ns,thd是保持時間,≥8ns;下降沿到數(shù)據(jù)輸出有效時間tPDV≤5ns。tPHH和tPHL分別是像素時鐘下降沿到HREF上升沿和下降沿的時間,最大為5ns,最小可以為0。
圖8 數(shù)據(jù)采集時序圖
圖9是利用SignalTap II采集的波形圖。從波形圖中可知,系統(tǒng)時鐘和像素時鐘同步,在cmos_vsync為低且cmos_href為高時數(shù)據(jù)開始采集,之前數(shù)據(jù)都為0。在每次時鐘的上升沿到來之前數(shù)據(jù)已經(jīng)穩(wěn)定約20ns,大于數(shù)據(jù)建立時間要求的至少15ns。保持時間同樣約為20ns,大于數(shù)據(jù)保持時間要求的至少8ns。波形很好的滿足了建立時間和保持時間等各項時間系數(shù),符合設計要求。
圖9 SignalTap II信號波形圖
視頻采集顯示部分采用通用的工業(yè)VGA標準接口,在FPGA和VGA接口之間加入ADV7123數(shù)模轉換芯片,將FPGA內(nèi)部緩存在RDFIFO中的16位數(shù)據(jù)讀出經(jīng)過ADV7123轉換[8]成3位模擬量輸出。對于VGA的場同步信號VSYNC和行同步信號HSYNC,是由FPGA同步控制的。需要注意的是,和CMOS采集信號的幀行信號不同,當VSYNC和HSYNC都為高電平時,數(shù)據(jù)有效輸出。
對于要求顯示的靜態(tài)字體,利用FPGA的ROM來配置,將顯示的字體以.mif文件加載到ROM中,視頻實時顯示如圖10所示。
圖10 視頻實時顯示
本設計是針對視頻采集系統(tǒng)設計的方案,以并行、快速的FPGA為主控芯片,采用了OmniVision公司的OV7670傳感器來采集視頻信息。根據(jù)SCCB通信協(xié)議對OV7670相關寄存器進行了控制,使其采集信號格式為RGB565。而后利用SignalTap II對視頻采集信號進行了時序分析,最后VGA視頻實時顯示很好的證明了該設計的可行性。該設計除具有電路簡單,低功耗、低成本等一系列優(yōu)點外,只要將外部電路稍加改動就可以應用于其他視頻采集系統(tǒng)中,能夠為以后設計出更高級的視頻監(jiān)控系統(tǒng)奠定基礎。
[1]CMOS傳感器_百度百科[EB/OL]http://baike.baidu.com/view/356089.2015-02.
[2]刁曉靜.無線多傳感器網(wǎng)絡中圖像傳輸系統(tǒng)的實現(xiàn)[D].南京:南京理工大學,2006.
[3]楊侃,孫堯,詹艷艷.基于S3C44B0嵌入式系統(tǒng)的SCCB 設計與實現(xiàn)[J].現(xiàn)代電子技術,2008,31(22):183-186.
[4]苑瑋琦,湯永華.OmniVision圖像傳感器的SCCB總線協(xié)議在DSP中的實現(xiàn)[J].儀器儀表學報,2006,27(6):1687-1688.
[5]褚紅娟,隋國榮.基于SCCB通信的FPGA視頻采集模塊[J].自動化儀表,2010,31(11):68-70,74.
[6]劉鑫.基于ARM的圖像采集系統(tǒng)的設計[D].武漢:武漢理工大學,2007.
[7]薛敏彪,吳廣偉,王健,等.嵌入式機載視頻輸出接口設計[J].現(xiàn)代電子技術,2011,34(2):9-11,14.
[8]高強,王煒,劉建,等.SCCB總線配置的FPGA視頻采集與顯示系統(tǒng)設計[J].單片機與嵌入式系統(tǒng)應用,2014,14(1):73-75.