關(guān)鍵詞:CCD CPLD 相關(guān)雙采樣 控制系統(tǒng) 串口通信
引言
CCD通常分為3個等級;商業(yè)級、工程級和科學(xué)級。3個級別的要求一級比一級高。衡量CCD的性能主要從以下幾個方面:量子效率和響應(yīng)度、噪聲等效功率和探測度,即動態(tài)范圍和電荷轉(zhuǎn)移效率等??茖W(xué)級CCD以其高光子轉(zhuǎn)換效率、寬頻譜響應(yīng)、良好線性度和寬動態(tài)范圍廣泛用于天文觀測,已成為望遠(yuǎn)鏡測必不可少的后端設(shè)備。國內(nèi)各天文臺望遠(yuǎn)鏡終端都是從外圍引起的成套設(shè)備,使用和維護很不方便,并且價格昂貴,因此國內(nèi)迫切需要發(fā)展自己的CCD技術(shù)。紫金山天文臺紅外實驗室對這一課題進行了深入研究,廣泛調(diào)研,認(rèn)真選取,從芯片開始一直到系統(tǒng)的軟硬件設(shè)計,搭建了自己的CDD相機系統(tǒng)。
1 系統(tǒng)設(shè)計
CCD芯片決定相機系統(tǒng)的性能,為此我們廣泛調(diào)研,最后選定柯達公司的KAF-0401LE芯片。它動態(tài)范圍大(70dB),電荷轉(zhuǎn)移效率高(0.999 99),波長響應(yīng)范圍寬(0.4μm~1.0μm),低暗電流(在25℃條件下,7pA/cm2),量子效率為35%,并且具有抗飽和性,能夠滿足科學(xué)觀測的要求,既可用于光譜分析,又可用于成像觀測。
系統(tǒng)設(shè)計的重點是解決CCD芯片的驅(qū)動和系統(tǒng)噪聲的問題。我們的設(shè)計如下:采用柯達公司的KAF-0401LE芯片作為探測器,Ateml公司的帶閃存Flash的89C51作下位機控制器,復(fù)雜可編程邏輯作(CPLD)作時序發(fā)生和地址譯碼,采用相關(guān)雙采樣技術(shù)降低噪聲,自帶采樣保持的12位A/D轉(zhuǎn)換順AD1674進行模數(shù)轉(zhuǎn)換,擴展8片128Kbit(628128)的RAM作1為幀圖像暫存空間,通過RS232與計算機串口通信,接受計算機的控制。整個系統(tǒng)由圖1所示幾個功能部件組成。
1.1 時序信號發(fā)生電路
KAF-0401LE芯片的時序要求:積分期間φV1、φV2保持低電平;行轉(zhuǎn)移期間φH1保持高電平,φH2保持低電平。每行開始φV1的第2個脈沖下降沿后,要有1個行轉(zhuǎn)移建立時間tφHs,讀完行后需延遲1個像素時間te才開始下一行φV1脈沖;同樣,φV1第2分脈沖下降沿后,開始下一行轉(zhuǎn)移,如此直到讀完1幀。
復(fù)雜可編程邏輯器件(CPLD)以其高度集成、靈活、方便的特點,在電路設(shè)計中運用越來越廣泛。Altera公司的復(fù)雜可編程邏輯器件EPM712SLC84-15具有2500個可用邏輯門,128個宏單元,8個邏輯塊,最大時鐘可達147.1MHz,帶有68個可供用戶使用的I/O引腳,PLCC封裝,可通過JTAG接口實現(xiàn)在線編程。我們選用EMP7128SLC84-15,通過硬件描述語言(VHDL)在集成開發(fā)環(huán)境MAX PLUS II下完成邏輯設(shè)計;編譯后,通過JTAG接口下載到電路板上的EPM7128SLC84-15中,實現(xiàn)了KAF-0401LE芯片的時序要求。
MAX PLUS II雖然有很豐富的元件庫,但并不是針對某一應(yīng)用而開發(fā)的,具有通用性,調(diào)用它固有的元件庫可能造成資源的浪費,沒有必要。因此我們按照需求,編制了自己的元件庫,然后在程序中作為元件調(diào)用。在本系統(tǒng)中,僅用1片EPM7128LC84-15就實現(xiàn)了CCD的時序要求、暫存RAM和接口擴展芯片8255的片選和地址譯碼,既簡化恥電路的硬件設(shè)計,提高了系統(tǒng)可靠性,又降低了成本。交流時序條件要求如表1所列。
表1
描 述 | 符號 | 最小值 | 正常值 | 最大值 |
φH1、φH2時鐘頻率/MHz | fH | 10 | 15 | |
φV1、φV2時鐘頻率/kHz | fV | 100 | 125 | |
周期/ns | te | 67 | 100 | |
φH1、φH2建立時間/μs | tφHS | 0.5 | 1 | |
φV1、φV2脈沖/μs | tφv | 4 | 5 | |
復(fù)位時鐘脈寬/ns | tφR | 10 | 20 | |
讀出時間/ms | treadout | 34 | 50 | |
每行讀出時間/μs | tline | 65.8 | 95.6 |
1.2 雙采取、模擬放大電路及A/D變換電路
我們采用能夠滿足高頻要求的放大器LF356N設(shè)計雙采樣和模擬放大電路。根據(jù)CCD的動態(tài)范圍選用自帶采樣保持的12位A/D變換器AD1674作模數(shù)轉(zhuǎn)換。
雙采樣原理如圖2所示。RSL是CCD復(fù)位電平,光信號相當(dāng)于SGL與RSL的差值,理論上只要分別在RSL和SGL處各采樣一次,然后相減便得到信號的值。然而,實際上RSL和SGL并不是理想的水平線,而是存在著低頻起伏噪聲。為了降低噪聲的影響,通常的做法是,分別在RSL和SGL處多次采樣求平均,這樣對硬件和數(shù)據(jù)處理軟件的要求都很高。我們這里采用了積分型相關(guān)雙采樣技術(shù),如圖3所示,CCD信號分別經(jīng)過同相和反相放大器連到模擬開關(guān)輸入端。模擬開關(guān)S1打開時,RSL通過電容積分;s2打開時,SGL信號經(jīng)電容積分;s3打開輸入端接地,信號保持不變;s4為復(fù)位開關(guān)。積分放大器的輸入、輸出關(guān)系如下:
圖2中的積分輸出是相關(guān)雙采樣的輸出波形圖。采樣保持后通過A/D進行模數(shù)轉(zhuǎn)換,經(jīng)8255口存在板上的RAM中。
1.3 電壓偏置電路
CCD驅(qū)動信號的直流偏置電壓各不相同,CPLD產(chǎn)生的TTL信號必須經(jīng)過電壓變換才能加到CCD的輸入端。我們首先用LM317和LM337產(chǎn)生所需要的偏置電壓,然后經(jīng)過時鐘驅(qū)動芯片DS0026轉(zhuǎn)換得到時序和偏置都符合CCD要求的信號,電路如圖4所示。
LM317用于輸出正相偏置電壓,LM337用于輸出負(fù)相偏置電壓,通過調(diào)節(jié)可變電阻R2阻值可得到我們所需的偏置電壓,計算公式如下:
其中,Iadj<100μA,Vref=1.25V,圖4(a)中R1取240Ω,圖4(b)中R1取120Ω。
2 軟件編程
軟件是管理硬件的工具,硬件是實現(xiàn)軟件功能的基礎(chǔ)。本系統(tǒng)的軟件工作任務(wù)較重,從可編程邏輯器件的硬件描述語言編程、電路板上單片機的匯編程語言編程,到計算機上控制系統(tǒng)的Visual C++編程。
2.1 時序信號的VHDL語言編程
我們用VHDL編制CCD時鐘驅(qū)動信號、圖像暫存RAM和接口擴展芯片8255的地址譯碼和片選信號,在集成開發(fā)環(huán)境MAXPLUS II中編譯,通過JTAG口下載到EPM7128SLC84-15中。下面給出實現(xiàn)CCD系統(tǒng)時序部分VHDL語言設(shè)計和時序仿真結(jié)果。VHDL語言編程基本上分為2個部分:實體說明和結(jié)構(gòu)體定義。實體說明部分定義端口,結(jié)構(gòu)體中實現(xiàn)邏輯設(shè)計。程序如下:
LIBRARY ieee; --包括的庫
USE ieee.std_logic_1164.all;
USE ieee.std_LOGIC_ARITH.ALL;
USE ieee.std_logic_unsigned.all;
ENTITY kodak7128 IS --實體說明部分
PORT --端口
( clk:IN std_logic; 時鐘輸入
start:IN STD_LOGIC; --啟動采集數(shù)據(jù)輸入
rc:OUT STD_LOGIC; --啟動A/D變換輸出
s1,s2,s3,s4:OUT STD_LOGIC; --相關(guān)雙采樣模式時鐘輸出
v1:OUT STD_LOGIC; --CCD行轉(zhuǎn)移時鐘輸出
v2:OUT STD_LOGIC;
r :OUT STD_LOGIC;--CCD復(fù)位始終輸出
h1:OUT STD_LOGIC;--CCD像素轉(zhuǎn)換時鐘信號輸出
h2: OUT STD_LOGIC;
a,b,c:IN STD_LOGIC; --擴展RAM譯碼輸入
a2,a3,a4,a5,a6,a7:IN STD_LOGIC; --口擴展芯片8255地址譯碼片選輸入
a8,a9,a10,a11,a12,a13,a14,a15 : IN STD_LOGIC;
ram5,ram6,ram7:OUT STD_LOGIC; --擴展RAM及8255片選譯碼輸出
ram8,ram9,ram10,ram11,ram12,cs8255:out std_logic);
ARCHITECTURE mboard OF kodak7128try IS-結(jié)構(gòu)體實現(xiàn)部分
--PROCESS定義邏輯
END mboard;
時序仿真結(jié)果如圖5所示。
2.2 下位機的匯編語言編程
89C51作為電路板上的靈魂,負(fù)責(zé)接收計算機傳來的命令,管理CCD數(shù)據(jù)的采集、接收、傳送。與計算機的通信通過串行口中斷實現(xiàn),數(shù)據(jù)的采集通過外中斷實現(xiàn)。
事先需要定義好計算機與單 牒同的通信協(xié)議,在初始化程序中設(shè)置通信波特率、堆棧初始化以及寄存器初值,然后進入循環(huán),等待中斷的發(fā)生,調(diào)用中斷子程序,實現(xiàn)預(yù)定功能。
當(dāng)計算機有命令到來時,進入串行中斷子程序,在中斷中根據(jù)預(yù)先定好的協(xié)議,判斷計算機發(fā)來的不同命令,調(diào)用不同處理子程序。其中的命令有:采集、停止采集、取數(shù)、停止取數(shù)。
2.3 CCD相機控制系統(tǒng)Visual C++編程
Windows以其操作簡單、友好的圖形界面成為最流行的操作系統(tǒng)。Visual C++是目前公認(rèn)最強大的Windows程序設(shè)計工具。我們用它開發(fā)了相機控制系統(tǒng)。
首先定義人機接口的操作界面。在程序中主要分為數(shù)據(jù)的獲取、存儲與處理幾個方面,在數(shù)據(jù)的獲取方面我們專門定義一個串口通信類,開一個線程用于監(jiān)聽串口事件的發(fā)生,用于向下位單片機發(fā)送命令和接收數(shù)據(jù)。
3 測試結(jié)果
我們完成了從芯片到相機系統(tǒng)的軟硬件研制,初步測試,效果良好,對于發(fā)展我們自己的CCD技術(shù)做出有意義的探索和研究。圖6是相機CCD量子效率測試結(jié)果。