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