基于FPGA的線陣CCD驅(qū)動(dòng)設(shè)計(jì)
摘要:電荷耦合器件(CCD)作為一種新型的光電器件,被廣泛地應(yīng)用于非接觸測(cè)量。而CCD驅(qū)動(dòng)設(shè)計(jì)是CCD應(yīng)用的關(guān)鍵問題之一。為了克服早期CCD驅(qū)動(dòng)電路體積大,設(shè)計(jì)周期長(zhǎng),調(diào)試?yán)щy等缺點(diǎn),以線陣CCD圖像傳感器TCD1251UD為例,介紹一種利用可編程邏輯器件FPGA實(shí)現(xiàn)積分時(shí)閫和頻率同時(shí)可調(diào)的線陣CCD驅(qū)動(dòng)方法,使用Verilog語言對(duì)驅(qū)動(dòng)電路方案進(jìn)行了硬件描述,采用QuartusII對(duì)所設(shè)計(jì)的時(shí)序進(jìn)行系統(tǒng)仿真。仿真結(jié)果表明,該驅(qū)動(dòng)時(shí)序的設(shè)計(jì)方法是可行的。
關(guān)鍵詞:線陣CCD;可編程邏輯器件;積分時(shí)間;頻率
電荷耦合器件(CCD)作為新興的固體成像器件——圖像傳感器,具有體積小、重量輕、分辨力高、噪聲低、自掃描、工作速度快、靈敏度高、可靠性好等優(yōu)點(diǎn),受到人們的高度重視,廣泛應(yīng)用于圖像傳感、景物識(shí)別、非接觸無損檢測(cè)、文件掃描等領(lǐng)域。其應(yīng)用系統(tǒng)的關(guān)鍵技術(shù)在于CCD驅(qū)動(dòng)信號(hào)的產(chǎn)生及輸出信號(hào)的處理。以往經(jīng)常采用的驅(qū)動(dòng)方法主要偏重硬件的實(shí)現(xiàn),調(diào)試?yán)щy,靈活性較差。而單片機(jī)驅(qū)動(dòng)方法雖編程靈活,但存在資源浪費(fèi)較多、頻率較低的缺陷。復(fù)雜可編程邏輯器件FPGA具有編程靈活、集成度高、速度快、容量大、功耗小、可靠性好等優(yōu)點(diǎn),并且節(jié)省PCB板的空間,可移植性好,使用靈活。因此,結(jié)合實(shí)際應(yīng)用需要,設(shè)計(jì)了基于復(fù)雜可編程邏輯器件FPGA的CCD驅(qū)動(dòng)時(shí)序設(shè)計(jì),使用Verilog語言對(duì)驅(qū)動(dòng)電路方案進(jìn)行了硬件描述,采用QpartusⅡ?qū)λO(shè)計(jì)的時(shí)序進(jìn)行了系統(tǒng)仿真。
1 CCD圖像傳感器TCD1251UD
TCD1251UD芯片是日本東芝公司生產(chǎn)的一種高靈敏度、低暗電流、具有2 700個(gè)有效像元的雙溝道兩相線陣CCD圖像傳感器。它的中心距為11μm,最佳工作頻率為1 MHz,光敏單元陣列總長(zhǎng)為29.7 mm。該傳感器可用于傳真、圖像掃描和OCR。它的結(jié)構(gòu)包括:MOS電容存儲(chǔ)柵、轉(zhuǎn)移柵電極SH、CCD模擬移位寄存器φ1和φ2信號(hào)輸出單元OS和補(bǔ)償輸出單元DOS。
2 TCD1251UD的驅(qū)動(dòng)時(shí)序要求
TCD1251UD的驅(qū)動(dòng)脈沖波形圖如圖1所示,各信號(hào)之間定時(shí)關(guān)系如表1所示。
當(dāng)SH脈沖為高電平時(shí)φ1脈沖亦為高電平,其下均形成深勢(shì)阱,SH的深勢(shì)阱使φ1電極下的深勢(shì)阱與MOS電容存儲(chǔ)勢(shì)阱溝通,從而使MOS電容存儲(chǔ)柵中的信號(hào)電荷轉(zhuǎn)移到φ1電極下的勢(shì)阱中。當(dāng)SH電平由高變低時(shí),SH低電平形成的淺勢(shì)阱將MOS電容存儲(chǔ)柵下的勢(shì)阱與φ1電極下的勢(shì)阱隔離開。存儲(chǔ)柵的勢(shì)阱進(jìn)入光積分狀態(tài),而模擬移位寄存器將在φ1和φ2脈沖的作用下驅(qū)動(dòng)信號(hào)電荷向左轉(zhuǎn)移,最后信號(hào)經(jīng)由OS端輸出啞元信號(hào)和2 700個(gè)有效像元信號(hào),而由DOS端輸出補(bǔ)償信號(hào)。由于結(jié)構(gòu)的安排,OS端首先輸出13個(gè)虛設(shè)單元信號(hào);再輸出51個(gè)暗信號(hào);最后連續(xù)輸出2 700個(gè)有效像素單元信號(hào);接著輸出9個(gè)暗信號(hào)、2個(gè)奇偶檢測(cè)信號(hào)和沒有信號(hào)的空驅(qū)動(dòng),空驅(qū)動(dòng)的數(shù)目為任意的,但必須大于0,否則會(huì)影響下一行信號(hào)的輸出。由于該器件是兩行奇、偶傳輸,所以在一個(gè)SH周期中至少要有1 388個(gè)φ1脈沖,即TφSH>1 388Tφ1。CCD各路脈沖的技術(shù)指標(biāo)為:φ1,φ2為驅(qū)動(dòng)脈沖,φ1,φ2相位相反,兩者均是頻率為0.5~2 MHz,占空比為1:2的方波,本文要求該頻率可調(diào)節(jié)。SH為轉(zhuǎn)移脈沖,由圖1可以看出:當(dāng)SH為高電平時(shí)必須φ1同步為高電平。當(dāng)SH為低電平時(shí),φ1也將變?yōu)榈碗娖?。但是?phi;1脈沖必須比SH脈沖提前上升、遲后下降。即在并行轉(zhuǎn)移時(shí)φ1脈沖有一個(gè)大于SH為高電平時(shí)的持續(xù)時(shí)間的寬的高電平脈沖。由上面分析可以得出,TφSH>1388Tφ1,RS為復(fù)位脈沖,占空比為1:4的方波,頻率為1~4 MHz,同時(shí)要求該頻率同樣可調(diào)節(jié)。
3 驅(qū)動(dòng)時(shí)序的實(shí)現(xiàn)
3.1 驅(qū)動(dòng)時(shí)序的FPGA實(shí)現(xiàn)
為了產(chǎn)生系統(tǒng)中用到的時(shí)序,設(shè)計(jì)了基于復(fù)雜可編程邏輯器件FPGA的CCD傳感器驅(qū)動(dòng)時(shí)序發(fā)生器,采用Altera公司的QuartusⅡ軟件開發(fā)系統(tǒng)。QuartusⅡ軟件開發(fā)系統(tǒng)是一種全集成化的可編程邏輯設(shè)計(jì)環(huán)境,它支持硬件描述語言(VHDL和Verilog HDL)、狀態(tài)圖和原理圖三種輸入方式,擁有編譯、邏輯綜合、仿真等功能。相對(duì)于其他輸入方式,硬件編程語言的輸入方式(如VHDL或VerilogHDL)可移植性和可讀性好,因此成為本設(shè)計(jì)的首選。其中Verilog HDL具有編程靈活、使用方便等優(yōu)點(diǎn)為眾多設(shè)計(jì)所接受??傮w的設(shè)計(jì)思想是將驅(qū)動(dòng)時(shí)序分成三個(gè)模塊,分別為AD0832,Divider和CCD_Driver。AD0832模塊采集輸出數(shù)據(jù)由Divider分頻模塊處理后輸入給CCD_Driver模塊去調(diào)節(jié)CCD的積分時(shí)間與驅(qū)動(dòng)頻率,同時(shí)CCD_Driver模塊輸出4路信號(hào)驅(qū)動(dòng)CCD。CCD_Driver模塊的的總體設(shè)計(jì)思想是將可調(diào)時(shí)鐘in_clk、積分時(shí)間INTER_TIME作為輸入而且它們與Dirider模塊的輸出CCD_clk、Ctr_Time_Out[12..0]對(duì)應(yīng),產(chǎn)生四路信號(hào)SH,RS,PH1,PH2作為輸出直接驅(qū)動(dòng)CCD。其中驅(qū)動(dòng)頻率RS和積分時(shí)間SH可調(diào)。CCD驅(qū)動(dòng)時(shí)序的設(shè)計(jì)如圖2所示。CCD_Driver模塊實(shí)現(xiàn)的功能是將時(shí)鐘輸入(in_clk)二分頻分別得到Q1和Q2信號(hào),四分頻得到temp_ph。用信號(hào)temp_ph作為計(jì)數(shù)時(shí)鐘輸入,分別在它的上升沿和下降沿觸發(fā)產(chǎn)生信號(hào)temp_sh1,temp_sh2。將Q1,Q2,temp_ph,temp_sh1,temp_sh2進(jìn)行組合邏輯運(yùn)算分別得到轉(zhuǎn)移脈沖SH、復(fù)位脈沖RS、時(shí)鐘信號(hào)PH1,PH2。其中轉(zhuǎn)移脈沖SH、復(fù)位脈沖RS頻率可調(diào)。使用VerilogHDL編寫程序中要求時(shí)鐘PH2與PH1信號(hào)相位相反。Q1為在時(shí)鐘in_clk的上升沿觸發(fā)的二分頻信號(hào),Q2為在時(shí)鐘in_clk的下降沿觸發(fā)的二分頻信號(hào)。把Q2取反后與Q1相與產(chǎn)生RS信號(hào)。由于SH,RS,PH1,PH2信號(hào)存在一定的周期關(guān)系,所以在Q1下降沿時(shí)觸發(fā)翻轉(zhuǎn)二分頻得到基信號(hào)temp_ph。用信號(hào)temp_ph作為計(jì)數(shù)時(shí)鐘輸入,分別在它的上升沿和下降沿觸發(fā)并根據(jù)積分時(shí)間計(jì)數(shù)控制temp_sh1,temp_sh2的高低電平時(shí)間。將temp_sh1,temp_sh2相與得到SH信號(hào);將temp_ph,temp_sh1與temp_sh2相或得到PH1信號(hào)。PH1取反得到PH2信號(hào)。
3.2 仿真結(jié)果
以上模塊在QuartusⅡ軟件開發(fā)系統(tǒng)上進(jìn)行設(shè)計(jì)輸入,經(jīng)編譯、校驗(yàn)后,其仿真波形如圖3所示。
從仿真結(jié)果可看到產(chǎn)生的驅(qū)動(dòng)脈沖與線陣CCD-CCD-TCD1251UD所需要的驅(qū)動(dòng)時(shí)序完全吻合,能夠達(dá)到CCD驅(qū)動(dòng)電路要求。
4 結(jié)語
使用FPGA器件實(shí)現(xiàn)對(duì)CCD驅(qū)動(dòng)器的設(shè)計(jì),很好的滿足了CCD應(yīng)用向高速、小型化、智能化發(fā)展的需求。在設(shè)計(jì)中,首先必須清楚CCD驅(qū)動(dòng)時(shí)序的要求,并利用硬件描述語言進(jìn)行科學(xué)的編程,這樣才能有效地完成設(shè)計(jì)需求。本文通過一個(gè)設(shè)計(jì)實(shí)例,來說明利用FPGA設(shè)計(jì)CCD驅(qū)動(dòng)器的方法,經(jīng)過仿真測(cè)試,驗(yàn)證了該設(shè)計(jì)滿足CCD驅(qū)動(dòng)要求。