摘 要:介紹應(yīng)用CPLD控制OV7110圖像傳感器進(jìn)行高速數(shù)據(jù)采集,提供了一種利用PC機(jī)外設(shè)對(duì)圖像讀取的解決方案。按照該方法制作的系統(tǒng),經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證效果良好。
關(guān)鍵詞:CPLD;CMOS圖像傳感器;高速采集系統(tǒng);OV7110
在當(dāng)前圖像傳感器市場(chǎng),CMOS傳感器以其低廉的價(jià)格得到越來(lái)越多消費(fèi)者的青睞。在目前的應(yīng)用中,多數(shù)采用軟件進(jìn)行數(shù)據(jù)的讀取,但是這樣無(wú)疑會(huì)浪費(fèi)指令周期,并且對(duì)于高速器件,采用軟件讀取在程序設(shè)計(jì)上、在時(shí)間配合上有一定的難度。因此,為了采集數(shù)據(jù)量大的圖像信號(hào),本文設(shè)計(jì)一個(gè)以CPLD為核心的圖像采集系統(tǒng),實(shí)現(xiàn)了對(duì)OV7110CMOS圖像傳感器的高速讀取,其讀取速率可達(dá)8 Mb/s。
1、硬件電路方案
圖1為基于CPLD的OV7110CMOS圖像傳感器的高速數(shù)據(jù)采集系統(tǒng)原理框圖,他主要由2個(gè)部分組成:OV7110的參數(shù)設(shè)置電路和圖像采樣電路。
1.1 OV7110的參數(shù)設(shè)置電路
系統(tǒng)在上電后需要對(duì)CMOS采樣芯片進(jìn)行初始化,以 確定其工作模式、窗口大小、掃描方式、輸出數(shù)據(jù)格式等。這些參數(shù)是通過(guò)OV7110芯片上的SCCB接口進(jìn)行的。
SCCB是OmnVision公司開發(fā)的一種雙向三線的同步串行總線,引線接口有使能線SCCB_E,時(shí)鐘線SIO_C,數(shù)據(jù)線SIO_D。其中SCCB_E低電平有效,如果將其接地,那么SIO_C,SIO_D的工作方式十分類似于I2C總線。OV7110工作模式、窗口大小、掃描方式、輸出數(shù)據(jù)格式均可以通過(guò)相應(yīng)的寄存器來(lái)設(shè)置,本系統(tǒng)把AT89C51作為主設(shè)備(MasterDevice),OV7110作為從設(shè)備(Slave Device),采用AT89C51的P1.2和P1.3口用軟件模擬SCCB總線,把其參數(shù)寫入其內(nèi)部對(duì)應(yīng)的寄存器。與I2C總線一樣,在SCCB總線中主設(shè)備發(fā)送一個(gè)字節(jié)后,從設(shè)備需要將數(shù)據(jù)線SIO_D拉低作為應(yīng)答信號(hào)(ACK)返回給主設(shè)備,才能表示發(fā)送成功。值得注意的是由于CMOS器件所能承受的灌電流很低,所以接至?xí)r鐘線SIO_C、數(shù)據(jù)線SIO_D的上拉電阻阻值應(yīng)在3~5 kΩ之間,并且對(duì)于主設(shè)備AT89C51發(fā)送參數(shù)完畢后,需立即釋放數(shù)據(jù)線SIO_D以保證其處于懸空狀態(tài),即AT89C51在送完一個(gè)字節(jié)后立即執(zhí)行一條指令,使數(shù)據(jù)線SIO_D發(fā)出讀取信號(hào)的操作。
1.2 圖像采樣電路
本系統(tǒng)設(shè)置的工作模式為黑白,分辨率取到了最大640×480。CMOS芯片的數(shù)據(jù)輸出波形如圖2所示(為了便于分析,該圖只是示意圖)。圖中VSYNC為垂直場(chǎng)同步信號(hào),其下降沿表示一幀圖像的開始。HSYNC為水平行同步信號(hào),其上升沿表示一行信號(hào)開始。HREF為水平窗素時(shí)鐘信號(hào),即數(shù)據(jù)輸出同步時(shí)鐘信號(hào),其下降沿更新數(shù)據(jù),上升沿?cái)?shù)據(jù)是穩(wěn)定時(shí)期,可以讀取數(shù)據(jù),其數(shù)據(jù)按行輸出。Y為圖像灰度數(shù)據(jù)。
下面介紹CPLD如何控制CMOS芯片的數(shù)據(jù)讀取。
首先按順序檢測(cè)VSYNC和CHSYNC信號(hào)是否有效,應(yīng)該注意的是要防止毛刺信號(hào)干擾。由于毛刺信號(hào)時(shí)間很短,故在本設(shè)計(jì)中采用了設(shè)標(biāo)志位的方法,即當(dāng)檢測(cè)信號(hào)有效沿后(對(duì)于VSYNC是上升沿,而對(duì)于CHSYNC是下降沿),在等待一定時(shí)間后再次檢測(cè)信號(hào),看其是否仍然有效,如果有效,則說(shuō)明信號(hào)是正確的。其源程序如下:
由于象素?cái)?shù)據(jù)按照PCLK時(shí)鐘輸出,所以用來(lái)存儲(chǔ)圖像的RAM的使能信號(hào)RCE和寫信號(hào)RWE、讀信號(hào)RRE以及地址信號(hào)ADDRESS都是由CPLD用他來(lái)產(chǎn)生。其中,讀信號(hào)RRE在CPLD寫操作中置“1”即可。由于在數(shù)據(jù)輸出時(shí),PCLK上升沿信號(hào)穩(wěn)定,而RAM是在WR上升沿將數(shù)據(jù)寫入,因此可以在HREF有效后(HREF=1)采用PCLK作為寫信號(hào)RWE。同時(shí)設(shè)計(jì)一個(gè)二進(jìn)制計(jì)數(shù)器,在HREF有效后,以PCLK的下降沿為觸發(fā)沿對(duì)PCLK做計(jì)數(shù),并取其輸出作為RAM的地址信號(hào)ADDRESS。這樣在PCLK的下降沿更新地址信號(hào),接著在上升沿存貯數(shù)據(jù)。源程序如下:
設(shè)置往RAM寫信號(hào)RWE
由于圖像象素點(diǎn)個(gè)數(shù)已知,即數(shù)據(jù)個(gè)數(shù)已知,故在計(jì)數(shù)完畢后CPLD發(fā)出計(jì)數(shù)完畢信號(hào)R,同時(shí)把指向RAM地址線ADDRESS和讀寫信號(hào)RWE、RRE切換連至AT89C51的地址線和讀寫信號(hào)WR、RD。AT89C51接受到中止信號(hào)R后開始讀取RAM中的數(shù)據(jù),并通過(guò)RS232串口上傳至PC機(jī)。需要注意的是RAM地址達(dá)到512 k,而單片機(jī)最大尋址空間只有64 k,所以在讀取RAM時(shí)采用分頁(yè)讀取,每次讀64 k,即從P1口中抽取3根線作為RAM的最高的三位地址和P0和P2口共同組成AT89C51的地址線。
2、結(jié)語(yǔ)
采用CPLD對(duì)CMOS圖像傳感器進(jìn)行數(shù)據(jù)采集的方法,可以把CMOS的主動(dòng)器件通過(guò)CPLD變?yōu)榭煽刂频姆绞?,?shí)現(xiàn)了對(duì)CMOS圖像傳感器的高速數(shù)據(jù)讀取,按照該方法制作的系統(tǒng),經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證效果良好。這種信號(hào)讀取的方法還可以在其他諸多需要高速圖像數(shù)據(jù)采集的場(chǎng)合應(yīng)用。