基于FPGA的線陣CCD數(shù)據(jù)采集系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘 要:本文介紹了一種基于FPGA的線陣CCD數(shù)據(jù)采集系統(tǒng)的實(shí)現(xiàn)方法。該系統(tǒng)在Altera的Cyclone EP1C6Q240C8上實(shí)現(xiàn),使用SoPC Builder開發(fā)組件定制CPU軟核處理器和系統(tǒng)所需的IP模塊,CPU軟核處理器作為微控制器實(shí)現(xiàn)邏輯控制和數(shù)據(jù)采集功能,用硬件描述語言編程實(shí)現(xiàn)CCD驅(qū)動(dòng)電路的設(shè)計(jì)。
關(guān)鍵詞:CCD;數(shù)據(jù)采集;Nios II
引言
CCD(Charge Coupled Devices,電荷耦合器件)具有光電轉(zhuǎn)換、信息存儲(chǔ)等功能,而且集成度高、動(dòng)態(tài)范圍大、線性好、信噪比高,在很多領(lǐng)域都得到了廣泛應(yīng)用。CCD有面陣和線陣之分,面陣CCD主要用于攝像、圖像處理、數(shù)據(jù)存儲(chǔ)和機(jī)器人視覺等領(lǐng)域;線陣CCD的應(yīng)用也很廣泛,像光譜分析、測徑,測量微小位移等。
本文介紹了一種在FPGA片內(nèi)利用SoPC技術(shù)實(shí)現(xiàn)的線陣CCD數(shù)據(jù)采集系統(tǒng),系統(tǒng)中的CCD選用東芝公司的TCD103D,這是2592像元的二相線陣CCD;ADC選用TLC876,精度為10位,轉(zhuǎn)換速率20MSPS。整個(gè)系統(tǒng)在一片F(xiàn)PGA(EP1C6Q240C8)上完成,在Quartus II軟件中用硬件描述語言實(shí)現(xiàn)CCD的驅(qū)動(dòng)電路和A/D采樣控制器的設(shè)計(jì)。使用SoPC Builder定制了一個(gè)32位軟核處理器作為微控制器,協(xié)調(diào)CCD驅(qū)動(dòng)電路、A/D采樣控制電路之間的工作時(shí)序,完成數(shù)據(jù)采集、存儲(chǔ)等功能。系統(tǒng)分3部分:硬件電路、驅(qū)動(dòng)電路和數(shù)據(jù)采集部分。
系統(tǒng)硬件設(shè)計(jì)
硬件平臺(tái)結(jié)構(gòu)見圖1。系統(tǒng)中的UART和SDRAM Controller是SoPC Builder內(nèi)建的IP核庫中的IP模塊,通過Avalon Bus和Nios II CPU相連。SoPC Builder能自動(dòng)產(chǎn)生每個(gè)模塊的HDL文件,同時(shí)自動(dòng)產(chǎn)生一些必要的仲裁邏輯來協(xié)調(diào)Avalon Bus上各功能模塊的工作。Nios II CPU是系統(tǒng)的核心,協(xié)調(diào)CCD驅(qū)動(dòng)電路、A/D采樣控制電路之間的工作時(shí)序,完成數(shù)據(jù)采集、存儲(chǔ)和數(shù)據(jù)傳輸。SDRAM作為數(shù)據(jù)緩存器,軟件程序和配置文件存儲(chǔ)在外擴(kuò)的Flash中。系統(tǒng)通過RS-232接口和計(jì)算機(jī)相連,接收計(jì)算機(jī)的控制命令。CCD工作時(shí)要求驅(qū)動(dòng)脈沖的幅值在11V以上(典型值為12V),因此,CCD模塊包含一個(gè)電平轉(zhuǎn)換電路,將FPGA輸出的電平轉(zhuǎn)換成12V。
驅(qū)動(dòng)電路設(shè)計(jì)
FPGA具有集成度高、速度快、可靠性好及硬件電路易于編程等特點(diǎn),非常適合驅(qū)動(dòng)電路的設(shè)計(jì)。CCD驅(qū)動(dòng)電路和A/D采樣控制電路在Quartus II軟件中編程實(shí)現(xiàn),產(chǎn)生CCD和ADC所需的工作時(shí)序。
CCD驅(qū)動(dòng)電路設(shè)計(jì)
TCD103D是一種高靈敏度、低暗電流、2592像元的二相線陣CCD圖像傳感器。分辨率為11mm,它在4路驅(qū)動(dòng)信號(hào)作用下輸出OS和DOS信號(hào)。正常工作時(shí)先輸出64個(gè)啞元信號(hào),然后連續(xù)輸出S1~S2592有效像素單元信號(hào)。S2592信號(hào)輸出后,又輸出28個(gè)啞元信號(hào),以后便是空驅(qū)動(dòng)。DOS是補(bǔ)償輸出信號(hào)。4路驅(qū)動(dòng)信號(hào)分別是轉(zhuǎn)移信號(hào)SH、兩相時(shí)鐘信號(hào)Φ1、Φ2 和復(fù)位信號(hào)RS。SH 的周期就是器件的光積分時(shí)間。
復(fù)位脈沖RS的產(chǎn)生
RS 是使輸出擴(kuò)散二極管復(fù)位的復(fù)位管控制脈沖,復(fù)位一次輸出一個(gè)信號(hào),脈沖占空比為1:3,典型頻率為1MHz。RS 由U1單元產(chǎn)生。如圖2所示,單元內(nèi)兩個(gè)D觸發(fā)器構(gòu)成一個(gè)環(huán)形計(jì)數(shù)器,CLK 為4MHz 的時(shí)鐘脈沖,經(jīng)分頻輸出兩個(gè)1MHz、相差90°的方波脈沖和,將這兩路脈沖經(jīng)或非門輸出,即可形成RS脈沖。除RS脈沖外,U1單元還產(chǎn)生fai_base脈沖和AD_CLK脈沖。前者頻率為0.5MHz,占空比為1:1,用于產(chǎn)生時(shí)鐘脈沖信號(hào)。AD_CLK是ADC的采樣時(shí)鐘信號(hào),頻率為1MHz。
時(shí)鐘脈沖Φ1和Φ2的產(chǎn)生
時(shí)鐘脈沖Φ1、Φ2的典型頻率為0.5MHz,相位相差180°,為避免MOS電容中的信號(hào)電荷包向上/下2列模擬移位寄存器的電極轉(zhuǎn)移不完全的情況發(fā)生,要求Φ1、Φ2在并行轉(zhuǎn)移時(shí)有一個(gè)大于SH=1持續(xù)時(shí)間的寬脈沖。在圖3所示的電路中(圖中Φ1、Φ2分別用fai1、fai2表示),cnt12b是一個(gè)異步清零的加法計(jì)數(shù)器,當(dāng)計(jì)數(shù)值至少大于1341(計(jì)數(shù)值由光積分時(shí)間決定),p1輸出高電平,開啟dec4b。dec4b是一個(gè)異步清零的減法計(jì)數(shù)器,輸出為1100時(shí),立即產(chǎn)生異步清零信號(hào),將兩個(gè)計(jì)數(shù)器全部清零,同時(shí)生成Φ1、Φ2所需的寬脈沖。
轉(zhuǎn)移脈沖SH的產(chǎn)生
SH是使MOS 電容中的信號(hào)電荷轉(zhuǎn)移到移位寄存器中的轉(zhuǎn)移柵控制脈沖。如圖3所示,dec4b的q3產(chǎn)生的寬脈沖經(jīng)過一個(gè)下降沿觸發(fā)的DFF,波形滯后q3半個(gè)CLK周期,兩個(gè)信號(hào)作與運(yùn)算,即產(chǎn)生SH脈沖。
EN是驅(qū)動(dòng)電路的使能信號(hào),EN為高電平時(shí),電路工作。
A/D采樣控制時(shí)序的產(chǎn)生
TLC876以多級流水線結(jié)構(gòu)原理設(shè)計(jì)而成,在每一個(gè)采樣時(shí)鐘的上升沿都啟動(dòng)一次采樣,完成一次采樣,但從模擬值采樣到10位數(shù)字量輸出有5個(gè)時(shí)鐘周期的延遲。
采樣時(shí)鐘AD_CLK由U1單元產(chǎn)生,頻率為1MHz。采樣控制電路的作用是協(xié)調(diào)CCD和TLC876之間的工作時(shí)序。CCD正常工作時(shí)前后各有64和28個(gè)啞元信號(hào),這 92 個(gè)啞元信號(hào)在 A/D 轉(zhuǎn)換時(shí)不需要采樣。但是,因?yàn)檩敵鲂盘?hào)有5個(gè)周期的延遲,實(shí)際應(yīng)采2597個(gè)點(diǎn)。采樣控制單元的主要功能是:使能信號(hào)ENABLE有效后,模塊等待當(dāng)前的積分周期結(jié)束,并在下一個(gè)積分周期開始時(shí)對前64個(gè)啞元信號(hào)進(jìn)行計(jì)數(shù),等64個(gè)信號(hào)全部移出后啟動(dòng)采樣時(shí)鐘,ADC在AD_CLK控制下連續(xù)對信號(hào)進(jìn)行采樣和輸出。
數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
Nios II CPU是系統(tǒng)的核心,協(xié)調(diào)各模塊之間的工作,實(shí)現(xiàn)數(shù)據(jù)采集功能。當(dāng)計(jì)算機(jī)發(fā)出控制信號(hào)時(shí),微處理器啟動(dòng)CCD驅(qū)動(dòng)電路和A/D采樣控制電路,CCD在驅(qū)動(dòng)時(shí)序控制下將堆積的電荷導(dǎo)出并開始新的積分周期。A/D采樣控制電路等待當(dāng)前積分周期結(jié)束后產(chǎn)生TLC876的采樣時(shí)鐘AD_CLK。AD_CLK和Nios II CPU的一個(gè)I/O相連,該I/O口定制時(shí)設(shè)置成邊沿中斷。因此,在每個(gè)AD_CLK的上升沿啟動(dòng)一次采樣的同時(shí)產(chǎn)生一次中斷,通知CPU讀取轉(zhuǎn)換好的數(shù)據(jù)。CPU將讀取的數(shù)據(jù)暫存在SDRAM中,一次數(shù)據(jù)采集完成后,由微處理器將采樣控制器中的計(jì)數(shù)器清零并關(guān)閉采樣控制單元和CCD驅(qū)動(dòng)電路。這部分采用C語言在Nios II的集成開發(fā)環(huán)境(IDE)中實(shí)現(xiàn)。軟件流程如圖4所示。
結(jié)語
本文提出了一種基于FPGA的線陣CCD數(shù)據(jù)采集系統(tǒng)的實(shí)現(xiàn)方法。該系統(tǒng)在Altera公司的Cyclone FPGA上實(shí)現(xiàn),使用SoPC Builder開發(fā)組件定制系統(tǒng)所需的IP模塊,具有開發(fā)周期短、集成度高等特點(diǎn)。軟硬件均采用編程實(shí)現(xiàn),設(shè)計(jì)靈活,在實(shí)際應(yīng)用中收到很好的效果。
參考文獻(xiàn):
1 饒程,袁祥輝.積分時(shí)間和頻率同時(shí)可調(diào)的線陣CCD驅(qū)動(dòng). 醫(yī)療衛(wèi)生裝備.2005年第10 期.
2 仁愛鋒,初秀琴等.基于FPGA的嵌入式系統(tǒng)設(shè)計(jì).西安:西安電子科技大學(xué)出版社,2004
3 TOSHIBA. TCD103D Datasheet