色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 消費電子 > 設計應用 > 黑白CMOS圖像傳感器OV9120的原理及應用

          黑白CMOS圖像傳感器OV9120的原理及應用

          作者: 時間:2004-12-11 來源:網(wǎng)絡 收藏
          摘要:本文闡述了的一般特征,詳細介紹了芯片的性能、特點及工作,給出了采集處理中的具體實例。

          關(guān)鍵詞:圖像;;圖像采集

          1 概述

          隨著CMOS技術(shù)的發(fā)展及市場需求的增加,CMOS圖像傳感器得以迅速發(fā)展。CMOS圖像傳感器具有高度集成化、成本低、功耗低、單一工作電壓、局部像素可編程、隨機讀取等優(yōu)點,適用于超微型數(shù)碼相機、便攜式可視電話、PC機電腦眼、可視門鈴、掃描儀、攝像機、安防監(jiān)控、汽車防盜、機器視覺、車載電話、指紋識別、手機等圖像領(lǐng)域。本文介紹的是由美國OmniVision技術(shù)公司生產(chǎn)的OV9120CMOS圖像傳感器,它采用獨特的傳感器專利工藝技術(shù)和先進的算法(algorithms)解決了先前CMOS感光器件固定圖像噪聲(FPN)的限制。因而可廣泛于數(shù)字靜止攝像、視頻會議、視頻電話、計算機視覺、生物測量等領(lǐng)域。

          2 引腳功能

          OV9120采用48腳LCC封裝,其引腳排列如圖1所示。

          3 結(jié)構(gòu)性能及工作

          3.1 內(nèi)部結(jié)構(gòu)

          OV9120內(nèi)置13121036分辨率的鏡像陣列、10位A/D轉(zhuǎn)換器、可調(diào)視頻窗、SCCE接口、可編程幀速率控制、可編程/自動曝光增益控制、內(nèi)外幀同步、亮度均衡計數(shù)器、數(shù)字視頻端口、定時產(chǎn)生器、黑電平校準及白平衡控制等電路。其內(nèi)部結(jié)構(gòu)如圖2所示。

          3.2 性能特點

          OV9120是135萬像素(13121036)、1/2英寸的CMOS圖像傳感芯片,它采用SXGA/VGA格式,最大幀速率可達到30幀/s(VGA),該芯片將CMOS光感應核與外圍輔助電路集成在一起,同時具有可編程控制功能。OV9120芯片的基本參數(shù)如下?

          ●圖像尺寸:6.66mm5.32mm,像素尺寸,5.2μm5.2μm;

          ●信噪比>54dB;

          ●增益調(diào)整范圍:0~24dB;

          ●SXGA輸出時,陣列大小為12801024,VGA輸出時,陣列大小為640480;

          ●供電電源電壓為直流3.3V和2.5V;

          ●暗電流: 28mV/s;

          ●動態(tài)范圍:60dB。

          3.3 工作

          CMOS鏡像陣列的設計主要建立在逐行傳送的掃描場讀出系統(tǒng)和帶同步像素讀出電路的電子快門之上。而電子曝光控制算法(或系統(tǒng)規(guī)則)則建立在整個圖(物)像亮度基礎之上。在景像(或布景)正常時,一般曝光都比較理想。但在景像光線不適當時,則應通過自動曝光控制(AEC)白/黑比調(diào)節(jié)來使其滿足要求。對于VGA格式的輸出,OV9120圖像傳感器的視窗尺寸范圍從22到640480,而對于SXGA格式的輸出,視窗范圍則從24到12801024,同時可以在內(nèi)部13121036邊界內(nèi)的任何地方定位。變動窗口尺寸或位置不會使幀速(或數(shù)據(jù)速率)發(fā)生變化。幀速可通過主時鐘下行(down)、插入垂直同步定時、或采用跳讀技術(shù)的QVGA格式使其發(fā)生變動。

          OV9120內(nèi)部嵌入了一個10位A/D轉(zhuǎn)換器,因而可以同步輸出10位的數(shù)字視頻流D[9..0]。在輸出數(shù)字視頻流的同時,還可提供像素同步時鐘PCLK、水平參考信號HREF以及垂直同步信號VSYNC,以方便外部電路讀取圖像。

          ZV端口就是相機(鏡頭)的焦距調(diào)節(jié)視頻端口。OV9120的ZV功能能使相機透鏡變焦而急速移向(或移離)目標。OV9120可利用外部主導機構(gòu)(master device)設定曝光時間。當FREX被置位于1時,像素陣列被迅速充電,傳感器保持為高以拍攝圖像(或物像)。在FREX轉(zhuǎn)換到0時,視頻數(shù)據(jù)流(data stream)用逐行讀出方式交付到輸出端口。當數(shù)據(jù)從OV9120視頻輸出端輸出時,應特別注意防止圖像陣列曝光影響拍攝圖像數(shù)據(jù)的完整性。與畫面曝光速率同步化的自動快門能夠?qū)⑦@種影響降到最小程度。

          當OV9120的RESET腳拉高至VCC時,全部硬件將復位。同時OV9120將清除全部寄存器,并復位到它們的默認值。實際上,也可以通過SCCB接口觸發(fā)來實現(xiàn)復位。

          由于SCCE端口能夠訪問內(nèi)部所有寄存器,所以,OV9120的內(nèi)部配置可以通過SCCE串行控制端口來進行。SCCB的接口有SCCE 、SIO_C 、SIO_D三條引線,其中SCCE是串行總線使能信號,SIO_C是串行總線時鐘信號,SIO_D是串行總線數(shù)據(jù)信號。SCCB對總線功能的控制完全是依靠SCCE、SIO_C、SIO_D三條總線上電平的狀態(tài)以及三者之間的相互配合來實現(xiàn)的??刂瓶偩€規(guī)定的條件如下:當SCCE由高電平變?yōu)榈碗娖綍r,數(shù)據(jù)傳輸開始。當SCCE由低電平轉(zhuǎn)化為高電平時,數(shù)據(jù)傳輸結(jié)束。為了避免傳送無用的信息位,可分別在傳輸開始之前和傳輸結(jié)束之后將SIO_D設置為高電平。在數(shù)據(jù)傳輸期間,SCCE始終保持低電平,此時,SIO_D上的數(shù)據(jù)傳輸由SIO_C來控制。當SIO_C為低電平時,SIO_D上的數(shù)據(jù)有效,SIO_D為穩(wěn)定數(shù)據(jù)狀態(tài)。而當SIO_C上每出現(xiàn)一正脈沖時,系統(tǒng)都將傳送一位數(shù)據(jù)。

          OV9120有兩種工作方式:主模式和從模式。主模式下,OV9120作為主導設備,此時XCLK上的外部晶振輸入經(jīng)過內(nèi)部分頻后可得到PCLK信號。當OV9120采集到圖像后,在PCLK的下降沿到來時,系統(tǒng)便可依次將像素值輸出,此時外部只是被動的接收信號。而在從模式下,OV9120則可作為從屬設備,此時XCLK不能與外部晶振相接,但可以受外部器件,也就是主設備信號的控制。即由主導設備發(fā)送一個MCLK時鐘信號,并在此信號的同步下依次發(fā)送像素值。

          4 OV9120在圖像采集系統(tǒng)中的應用

          整個圖像采集系統(tǒng)主要由OV9120圖像傳感芯片、CPLD控制模塊、RAM存儲器、DSP信號處理器、晶振電路等幾部分組成。

          在本系統(tǒng)中,OV9120作為系統(tǒng)的圖像傳感器,首先在其內(nèi)部將獲取的圖像采樣量化,然后在外部邏輯的控制下輸出數(shù)字圖像,并存入圖像存儲器。CPLD作為采集系統(tǒng)核心控制邏輯的主控模塊,可用來協(xié)調(diào)其它各模塊的工作。OV9120的SCCB總線參數(shù)配置是整個控制邏輯模塊執(zhí)行的起點,只有利用SCCB總線將OV9120配置完畢后,才能進行圖像采集工作。OV9120采集得到的圖像數(shù)據(jù)可存儲到SRAM中以供DSP使用,從而完成圖像采集系統(tǒng)與DSP識別系統(tǒng)之間的交互操作。其系統(tǒng)原理圖如圖3所示。

          系統(tǒng)上電后,應首先對CMOS圖像采集芯片進行初始化,以確定采集圖像的開窗位置、窗口大小和工作模式等。這些參數(shù)均受OV9120內(nèi)部相應寄存器值的控制。由于內(nèi)部寄存器的值可以通過OV9120芯片上提供的SCCB串行控制總線接口來存取,所以,CPLD就可以通過控制SCCB總線來完成參數(shù)的配置。

          配置的具體方法可采用三相寫數(shù)據(jù)的方式,即在寫寄存器過程中先發(fā)送OV9120的ID地址,然后發(fā)送寫數(shù)據(jù)的目地寄存器地址,接著是要寫的數(shù)據(jù)。如果連續(xù)給寄存器寫數(shù)據(jù),那么,寫完一個寄存器后,OV9120會自動把寄存器地址加1,然后在程序控制下繼續(xù)向下寫,而不需要再次輸入地址,這樣,三相寫數(shù)據(jù)就變成了兩相寫數(shù)據(jù)。由于本系統(tǒng)只需對有限個不連續(xù)寄存器的數(shù)據(jù)進行更改,而對全部寄存器都加以配置會浪費很多時間和資源,所以,可以只對需要更改數(shù)據(jù)的寄存器進行寫數(shù)據(jù)。而對于每一個變化的寄存器,則都采用三相寫數(shù)據(jù)的方法。

          系統(tǒng)配置完畢后,將進行圖像數(shù)據(jù)的采集。在采集圖像的過程中,最主要的是判別一幀圖像數(shù)據(jù)的開始和結(jié)束時刻。在仔細研究了OV9120輸出同步信號(VSYNC是垂直同步信號、HREF是水平同步信號、PCLK是輸出數(shù)據(jù)同步信號)的基礎上,用VHDL語言便可實現(xiàn)采集過程起始點的精確控制。

          VSYNC的上升沿表示一幀新的圖像的到來,下降沿則表示一幀圖像數(shù)據(jù)采集的開始(CMOS圖像傳感器是按列采集圖像的)。HREF是水平同步信號,其上升沿表示一列圖像數(shù)據(jù)的開始。PCLK是輸出數(shù)據(jù)同步信號。HREF為高電平即可開始有效地數(shù)據(jù)采集,而PCLK下降沿的到來則表明數(shù)據(jù)的產(chǎn)生,PCLK每出現(xiàn)一個下降沿,系統(tǒng)便傳輸一位數(shù)據(jù)。HREF為高電平期間,系統(tǒng)共傳輸1280位數(shù)據(jù)。也就是說:在一幀圖像中,即VSYNC為低電平期間,HREF會出現(xiàn)1024次高電平。而下一個VSYNC信號上升沿的到來則表明分辨率12801024的圖像采集過程的結(jié)束。

          實現(xiàn)采集的軟件設計可在MAX+plusII環(huán)境中實現(xiàn)。軟件設計的主要工作是CPLD對OV9120的配置。在開始充電時,首先對系統(tǒng)進行初始化。CPLD的全局時鐘可用24MHz的晶振電路產(chǎn)生。配置時首先配置SCCB,配置完畢后將SCCE置1。當接收到DSP的開始采集信號后,根據(jù)同步信號的狀態(tài)來判定是否開始采集數(shù)據(jù),采集數(shù)據(jù)的同時可將數(shù)據(jù)送往SRAM。當DSP接收到CPLD的讀取信號后,即可開始讀取數(shù)據(jù),并在DSP中完成圖像的處理。采集處理的部分主程序如下:

          reset2:process(reset_i,n1,clk)

          begin

          if reset_i=‘0’then scce_p<=‘1’;

          else

          if(n1=‘1’ or m1=‘1’)then

          scce_p<=‘1’;

          else scce p<=‘0’;

          end if;

          end if;

          end process reset2;

          clk1: process(n1,clk)

          variable a: integer range 254 to 0;

          begin

          if(sio_c_start=‘0’ OR n1=‘1’) then

          q<=‘1’;a:=0;

          else

          if(clk'event and clk=‘1’) then

          if(sio_c start=‘1’ and n1=‘0’) then

          if a<254 then; a:=a+1;

          else a:=1;

          end if;

          if a<127 then q<=‘0’;

          else q<=‘1’; end if;

          end if;

          end if;

          end if;

          end process clk1;

          lock:process(sio_c_start,q)

          variable n: integer range 8 to 0;

          begin

          if( sio_c_start=‘0’ then load<=‘1’;n:=0;

          else

          if (q 'event and q=‘0’) then

          if n<8 then n?=n+1;

          load<=‘0’;

          else n:=0;load<=‘1’;

          end if;

          end if;

          end if;

          end process lock;

          reg1: process(n1,q,load)

          variable pp:std_logic_vector(7 downto 0);?

          variable b:integer range 7 to 0;

          variable c:integer range 13 to 0;

          begin

          if(n1=‘1’or reset_i=‘0’) then p<=‘1’;c:=0; b:=0;QB<=‘0’;

          else

          if(q'event and q=‘0’)then

          if load=‘1’ then;

          c:=c+1?

          if c<13 then

          if c=1 then

          pp:=″11000010″;

          elsif c=2 then

          pp:=″00001100″;

          elsif c=3 then

          pp:=″00101001″;

          elsif c=4 then

          pp?=″11000010″;

          elsif c=5 then

          pp:=″00001101″;

          elsif c=6 then

          pp:=″10000000″;

          elsif c=7 then

          pp:=″11000010″;

          elsif c=8 then

          pp:=″00010001″;

          elsif c=9 then

          pp:=″10000000″;

          elsif c=10 then

          pp:=″11000010″;

          elsif c=11 then

          pp:=″00010011″;

          elsif c=12 then

          pp:=″00010111″?

          end if;

          b:=0;p<=pp(7);

          elsif c=13 then

          p<=‘0’; QB<=‘1’;

          end if;

          else

          if b<7 then b:=b+1;

          pp(7 downto 1):=pp(6 ownto 0);?

          p<=pp(7);?

          else p<=‘1’;

          end if;

          end if;

          end if;

          end if;

          end process reg1;



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉