用于天文观测的CCD相机系统的研究_传感与控制论文
关键词:ccd cpld 相关双采样 控制系统 串口通信
引言
ccd通常分为3个等级;商业级、工程级和科学级。3个级别的要求一级比一级高。衡量ccd的性能主要从以下几个方面:量子效率和响应度、噪声等效功率和探测度,即动态范围和电荷转移效率等。级ccd以其高光子转换效率、宽频谱响应、良好线性度和宽动态范围广泛用于天文观测,已成为望远镜测必不可少的后端设备。国内各天文台望远镜终端都是从外围引起的成套设备,使用和维护很不方便,并且价格昂贵,因此国内迫切需要发展自己的ccd技术。紫金山天文台红外实验室对这一课题进行了深入研究,广泛调研,认真选取,从芯片开始一直到系统的软硬件设计,搭建了自己的cdd相机系统。
1 系统设计
ccd芯片决定相机系统的性能,为此我们广泛调研,最后选定柯达公司的kaf-0401le芯片。它动态范围大(70db),电荷转移效率高(0.999 99),波长响应范围宽(0.4μm~1.0μm),低暗电流(在25℃条件下,7pa/cm2),量子效率为35%,并且具有抗饱和性,能够满足观测的要求,既可用于光谱分析,又可用于成像观测。
系统设计的重点是解决ccd芯片的驱动和系统噪声的问题。我们的设计如下:采用柯达公司的kaf-0401le芯片作为探测器,ateml公司的带闪存flash的89c51作下位机控制器,复杂可编程逻辑作(cpld)作时序发生和地址译码,采用相关双采样技术降低噪声,自带采样保持的12位a/d转换顺ad1674进行模数转换,扩展8片128kbit(628128)的ram作1为帧图像暂存空间,通过rs232与计算机串口通信,接受计算机的控制。整个系统由图1所示几个功能部件组成。
1.1 时序信号发生电路
kaf-0401le芯片的时序要求:积分期间φv1、φv2保持低电平;行转移期间φh1保持高电平,φh2保持低电平。每行开始φv1的第2个脉冲下降沿后,要有1个行转移建立时间tφhs,读完行后需延迟1个像素时间te才开始下一行φv1脉冲;同样,φv1第2分脉冲下降沿后,开始下一行转移,如此直到读完1帧。
复杂可编程逻辑器件(cpld)以其高度集成、灵活、方便的特点,在电路设计中运用越来越广泛。altera公司的复杂可编程逻辑器件epm712slc84-15具有2500个可用逻辑门,128个宏单元,8个逻辑块,最大时钟可达147.1mhz,带有68个可供用户使用的i/o引脚,plcc封装,可通过jtag接口实现在线编程。我们选用emp7128slc84-15,通过硬件描述语言(vhdl)在集成开发环境max plus ii下完成逻辑设计;编译后,通过jtag接口下载到电路板上的epm7128slc84-15中,实现了kaf-0401le芯片的时序要求。
max plus ii虽然有很丰富的元件库,但并不是针对某一应用而开发的,具有通用性,调用它固有的元件库可能造成资源的浪费,没有必要。因此我们按照需求,编制了自己的元件库,然后在程序中作为元件调用。在本系统中,仅用1片epm7128lc84-15就实现了ccd的时序要求、暂存ram和接口扩展芯片8255的片选和地址译码,既简化耻电路的硬件设计,提高了系统可靠性,又降低了成本。交流时序条件要求如表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 | |
复位时钟脉宽/ns | tφr | 10 | 20 | |
读出时间/ms | treadout | 34 | 50 | |
每行读出时间/μs | tline | 65.8 | 95.6 |
1.2 双采取、模拟放大电路及a/d变换电路
我们采用能够满足高频要求的放大器lf356n设计双采样和模拟放大电路。根据ccd的动态范围选用自带采样保持的12位a/d变换器ad1674作模数转换。
双采样原理如图2所示。rsl是ccd复位电平,光信号相当于sgl与rsl的差值,理论上只要分别在rsl和sgl处各采样一次,然后相减便得到信号的值。然而,实际上rsl和sgl并不是理想的水平线,而是存在着低频起伏噪声。为了降低噪声的影响,通常的做法是,分别在rsl和sgl处多次采样求平均,这样对硬件和数据处理软件的要求都很高。我们这里采用了积分型相关双采样技术,如图3所示,ccd信号分别经过同相和反相放大器连到模拟开关输入端。模拟开关s1打开时,rsl通过电容积分;s2打开时,sgl信号经电容积分;s3打开输入端接地,信号保持不变;s4为复位开关。积分放大器的输入、输出关系如下:
图2中的积分输出是相关双采样的输出波形图。采样保持后通过a/d进行模数转换,经8255口存在板上的ram中。
1.3 电压偏置电路
ccd驱动信号的直流偏置电压各不相同,cpld产生的ttl信号必须经过电压变换才能加到ccd的输入端。我们首先用lm317和lm337产生所需要的偏置电压,然后经过时钟驱动芯片ds0026转换得到时序和偏置都符合ccd要求的信号,电路如图4所示。
lm317用于输出正相偏置电压,lm337用于输出负相偏置电压,通过调节可变电阻r2阻值可得到我们所需的偏置电压,计算公式如下:
其中,iadj<100μa,vref=1.25v,图4(a)中r1取240Ω,图4(b)中r1取120Ω。
2 软件编程
软件是管理硬件的工具,硬件是实现软件功能的基础。本系统的软件工作任务较重,从可编程逻辑器件的硬件描述语言编程、电路板上单片机的汇编程语言编程,到计算机上控制系统的visual c++编程。
2.1 时序信号的vhdl语言编程
我们用vhdl编制ccd时钟驱动信号、图像暂存ram和接口扩展芯片8255的地址译码和片选信号,在集成开发环境maxplus ii中编译,通过jtag口下载到epm7128slc84-15中。下面给出实现ccd系统时序部分vhdl语言设计和时序仿真结果。vhdl语言编程基本上分为2个部分:实体说明和结构体定义。实体说明部分定义端口,结构体中实现逻辑设计。程序如下:
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; --启动采集数据输入
rc:out std_logic; --启动a/d变换输出
s1,s2,s3,s4:out std_logic; --相关双采样模式时钟输出
v1:out std_logic; --ccd行转移时钟输出
v2:out std_logic;
r :out std_logic;--ccd复位始终输出
h1:out std_logic;--ccd像素转换时钟信号输出
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-结构体实现部分
--process定义逻辑
end mboard;
时序仿真结果如图5所示。
2.2 下位机的汇编语言编程
89c51作为电路板上的灵魂,负责接收计算机传来的命令,管理ccd数据的采集、接收、传送。与计算机的通信通过串行口中断实现,数据的采集通过外中断实现。
事先需要定义好计算机与单 牒同的通信协议,在初始化程序中设置通信波特率、堆栈初始化以及寄存器初值,然后进入循环,等待中断的发生,调用中断子程序,实现预定功能。
当计算机有命令到来时,进入串行中断子程序,在中断中根据预先定好的协议,判断计算机发来的不同命令,调用不同处理子程序。其中的命令有:采集、停止采集、取数、停止取数。
2.3 ccd相机控制系统visual c++编程
windows以其操作简单、友好的图形界面成为最流行的操作系统。visual c++是目前公认最强大的windows程序设计工具。我们用它开发了相机控制系统。
首先定义人机接口的操作界面。在程序中主要分为数据的获取、存储与处理几个方面,在数据的获取方面我们专门定义一个串口通信类,开一个线程用于监听串口事件的发生,用于向下位单片机发送命令和接收数据。
3 测试结果
我们完成了从芯片到相机系统的软硬件研制,初步测试,效果良好,对于发展我们自己的ccd技术做出有意义的探索和研究。图6是相机ccd量子效率测试结果。