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