CMOS圖像敏感器是近年來興起的一類固態(tài)圖像傳感器。CMOS圖像敏感器具有低成本、低功耗(是CCD耗的1/1000~1/100)、簡(jiǎn)單的數(shù)字接口、隨機(jī)訪問、運(yùn)行簡(jiǎn)易(單一的CMOS兼容電池供給)、高速率(可大于1000幀/秒)、體積小以及通過片上信號(hào)處理電路可以實(shí)現(xiàn)智能處理功能等特點(diǎn)而得到廣泛應(yīng)用。有些CMOS圖像敏感器具有標(biāo)準(zhǔn)的I2C總線接口,可方便應(yīng)用到系統(tǒng)中。有些沒有這類總線接口電路的專用CMOS圖像敏感器需要增加外部驅(qū)動(dòng)電路。由于CMOS敏感器的驅(qū)動(dòng)信號(hào)絕大部分是數(shù)字信號(hào),因此可采用FPCA通過Verilog HDL語言編程產(chǎn)生驅(qū)動(dòng)時(shí)序信號(hào)。Verilog HDL語言是IEEE標(biāo)準(zhǔn)的用于邏輯設(shè)計(jì)的硬件描述語言,具有廣泛的邏輯綜合工具支持,簡(jiǎn)潔易于理解。本文就STAR250這款CMOS圖像敏感器,給出使用Verilog HDL語言設(shè)計(jì)的邏輯驅(qū)動(dòng)電路和仿真結(jié)果。
1 CMOS圖像敏感器STAR250
STAR250是一款專為衛(wèi)星天文導(dǎo)航的星跟蹤器(tracker)設(shè)計(jì)的CMOS圖像敏感器。由于太空中含有大量輻射,芯片中加入了抗輻射電路以提高空間應(yīng)用的可靠性。STAR250的技術(shù)指標(biāo)如下:
(1)0.5μm CMOS工藝;
(2)512x512分辨率,像素大小25μmx25μm;
(3)每個(gè)像素4個(gè)光敏二極管,提高M(jìn)TF(幅值轉(zhuǎn)換功能)和減少PRNU(非均一化光響應(yīng));
(4)抗輻射設(shè)計(jì);
(5)片上雙采樣電路抵消FPN(固定模式噪聲);
(6)電子快門:
(7)最大30幀/秒;
(8)可以取子窗口;
(9)片上10位ADC;
(10)陶瓷JLCC-84針封裝。
STAR250是有源像素的線掃描CMOS圖像敏感器。所有像素的輸出都連接到列總線,并且在列總線上每例都有一個(gè)列放大器。使用二次采樣技術(shù),控制列放大器可以從讀出信號(hào)中減去光敏單元上一次采集殘留的電荷。片上ADC獨(dú)立于敏感器,可以使用也可以通過軟件關(guān)閉,而用外部的ADC。STAR250為了應(yīng)用方便有多種讀出數(shù)據(jù)的方法(窗口方式、電子快門等),不同的讀出方式有不同的時(shí)序要求。
傳統(tǒng)的計(jì)算機(jī)或打印機(jī)的圖像座標(biāo)系定義左上角為原點(diǎn)(0,0),在STAR250中定義右上角為原點(diǎn)(0,0),如圖1。這樣敏感器輸出數(shù)字信號(hào)后能夠方便地轉(zhuǎn)換為計(jì)算機(jī)格式的圖像,方便后續(xù)的處理。窗口掃描方式是從上向下、從左向右一個(gè)像素一個(gè)像素地掃描。
2 STAR250時(shí)序信號(hào)
STAR250通過兩個(gè)步驟完成圖像的采集。第一步是逐行掃描RESET像素。行內(nèi)像素RESET后,本行自上一次RESET或讀出后積累的所有光敏電荷被排空。從RESET行像素開始新的曝光周期。第二步是本次曝光周期數(shù)據(jù)讀出。以電壓的形式讀出,然后經(jīng)過ADC轉(zhuǎn)換為數(shù)字量。由于電荷采用排出式讀取,CMOS圖像敏感器的像素讀出不可恢復(fù),讀取過程也相當(dāng)于RESET像素,所以CMOS敏感器行RESET的速度與讀取速度一樣。
STAR250通過三個(gè)指針標(biāo)定整個(gè)圖像地址:Yrd當(dāng)前掃描行,Yrst當(dāng)前RESET行,Yrd當(dāng)前讀出像素。這三個(gè)指針都有相應(yīng)的移位寄存器,通過設(shè)置這三個(gè)寄存器的初始值可以調(diào)整采集窗口的大小和位置。圖像采集的流程圖如圖2。每秒鐘的圖像幀數(shù)通過設(shè)置Yrd和Yrst進(jìn)行控制,曝光周期也由這兩個(gè)量控制。這個(gè)時(shí)間量可以用空間距離(行距)表示,定義DelayLines=︱Yrst-Yrd+︱。由于每一行的RESET和讀取時(shí)間是固定的,所以DelayLines如果固定那么幀率也就固定了。將DelayLines轉(zhuǎn)換成像素的有效積分時(shí)間(曝光時(shí)間),是將Delay-Lines乘以讀取一行像素所用的時(shí)間。讀取一行像素所用的時(shí)間由四部分組成:(1)行中有效像素的個(gè)數(shù)(由行的長度定義);(2)讀取一個(gè)像素所用的時(shí)間;(3)像素累積電荷轉(zhuǎn)換為數(shù)字量的時(shí)間;(4)選擇新一行所用的時(shí)間。例如在主時(shí)鐘頻率為12MHz時(shí),像素的輸出頻率為主時(shí)鐘的二分頻6MHz,因此一行像素所需要的時(shí)間為512×1/6MHz=85.3μs。再加上換行所需時(shí)間,一行像素的讀取時(shí)間大約90μs左右。因此可以根據(jù)這個(gè)時(shí)間設(shè)置DelayLines來控制曝光時(shí)間。
3 Verilog HDL驅(qū)動(dòng)時(shí)序設(shè)計(jì)
經(jīng)過以上分析可知,CMOS圖像敏感器采集時(shí)可以分為RESET過程和采集過程。時(shí)間上兩個(gè)過程是獨(dú)立的,如圖3。但在FPGA內(nèi)部處理這兩部分的電路物理上是同時(shí)存在,因此必須將相應(yīng)的信號(hào)通過置標(biāo)志位的方法置為有效或無效。
STAR250所需數(shù)字驅(qū)動(dòng)信號(hào)共28個(gè),其中SELECT信號(hào)在正常使用時(shí),直接接PCB板的Vcc。因此需FPGA控制的驅(qū)動(dòng)信號(hào)有27個(gè)。根據(jù)采集過程可以把信號(hào)劃分為列放大器信號(hào),包括CAL、Reset、Lr、S、R、LdY。這6個(gè)信號(hào)在每一行的初始化部分都要用到,因此可以編寫到一個(gè)模塊(ColControl)中;模式信號(hào)(PaternCtrl)模塊用來設(shè)置CMOS敏感器的工作模式及初始地址,包括G0、G1、Bitlnvert和Addr[8:0]共12個(gè)信號(hào)。其中G0、G1用來設(shè)計(jì)輸出的放大倍數(shù),BitInvert用于將輸出取反,Addr[8:0]則設(shè)置采集的起始地址;行讀出信號(hào)控制模塊(YlCtrl)產(chǎn)生行讀出地址的同步信號(hào)SyncYl及時(shí)鐘驅(qū)動(dòng)信號(hào)ClkYl;行RESET信號(hào)控制模塊(YrCtrl)產(chǎn)生行RE-SET地址的同步信號(hào)SyncYr及時(shí)鐘驅(qū)動(dòng)信號(hào)ClkYr;像素控制模塊(RowCtrl)產(chǎn)生行內(nèi)像素初始地址的裝載信號(hào)LdX及同步信號(hào)SyncX;行內(nèi)時(shí)鐘信號(hào)模塊(RowClk)產(chǎn)生列內(nèi)像素的時(shí)鐘驅(qū)動(dòng)CLKX、ADC驅(qū)動(dòng)時(shí)鐘信號(hào)CLkAdc及輸出三態(tài)控制信號(hào)TriAdc。系統(tǒng)的輸入信號(hào)為主時(shí)鐘CLK、EosX行內(nèi)像素結(jié)尾信號(hào)、EosYl幀內(nèi)行結(jié)尾信號(hào)、EosYr幀內(nèi)RESET行結(jié)尾信號(hào)、芯片的RESET信號(hào)。經(jīng)過這樣劃分后的模塊化Verilog程序就比較易寫了。經(jīng)過頂層模塊綜合生成的網(wǎng)表如圖4。布線仿真時(shí)序圖如圖5,其中時(shí)鐘信號(hào)過于密集變成黑色帶狀,同樣輸出時(shí)鐘CIkX及ClkAdc也是黑色帶狀。在時(shí)序上ClkX與ClkAdc是反相關(guān)系,在TriAdc保持低電平時(shí)輸出有效。所設(shè)計(jì)的驅(qū)動(dòng)信號(hào)仿真波形與理論波形十分符合。這樣就完成了STAR250的時(shí)序驅(qū)動(dòng)電路設(shè)計(jì)。
使用Verilog語言設(shè)計(jì)時(shí)序邏輯具有很高的效率。結(jié)合CMOS敏感器特性可以方便地開發(fā)出驅(qū)動(dòng)時(shí)序電路。但必須對(duì)CMOS圖像敏感器的信號(hào)分析準(zhǔn)確,正確分離那些獨(dú)立的信號(hào)和共用的信號(hào),用時(shí)序邏輯設(shè)計(jì)驅(qū)動(dòng)信號(hào),用組合邏輯實(shí)現(xiàn)不同采集過程時(shí)間上的分離。布線延遲是必須考慮的,采用流水線技術(shù)可以預(yù)測(cè)延遲,保證信號(hào)的正確性。雖然文中并未給出像素ADC輸出的存儲(chǔ)電路,但實(shí)際上直接使用TriAdc信號(hào)作為SRAM的片選,ClaAdc的低電平作為寫信號(hào),SRAM的地址在ClkAdc的上升沿增加、下降沿寫入。這樣就可以完成圖像數(shù)據(jù)的存儲(chǔ)。以上Verilog程序在FLEXl0kl0上布線實(shí)現(xiàn)。經(jīng)示波器觀察邏輯正確,CMOS敏感器正常工作。