图1中,φPA为帧时钟,高电平时为光积分阶段,低电平时为电荷转移阶段。φP1~φP4为帧转移脉冲,在光积分阶段时不变,在电荷转移阶段时同行转移控制信号φM1~φM4一起完成整帧的转移。在光积分阶段,行逆程状态时,帧存储区各行的信号电荷在行转移信号φM1,φM4控制下向水平移位寄存器方向平移一行,读出寄存器时钟φL1,φL2不变;行正程状态时,水平移位寄存器中的像元电荷在读出寄存器时钟φL1,φL2的控制下逐次经过输出放大器输出。每读出一行信号,进行一次行转移。一帧图像传完后,再进行下一帧图像的帧转移。
1.2 基于FPGA的CCD驱动时序的实现
可编程逻辑器件FPGA具有集成度高、速度快、可靠性好及硬件可编程的特点,开发灵活、易于维护、非常适合CCD驱动的设计。设计选用的是Xilinx公司Spartan3系列的XC3S50,在分析CCD驱动时序关系的基础上,采用硬件编程语言VHDL编写,开发软件为ISE 10.1。
程序输入为40 MHz主时钟CLK,由外部晶振提供,输出为十三路驱动信号。设计采用单路输出的方式,输出数据速率选为10 MHz。使用全部1 024×1 024个有效像元,在水平方向上,有效像元加上隔离元、黑参考元等共1 056个像元。在垂直方向上有效像元加上哑像元、黑参考元等共1 056行。进行适量冗余设计,再考虑帧转移和行转移所占用的时间,帧频为每秒8帧。复位时钟OR由主时钟四分频得到。由于CCD各驱动信号间要严格地满足时序关系,且波形比较复杂,程序采用多进程,多计数器循环嵌套的方式实现。帧时钟φA为最外部循环,在光积分阶段,由行逆程和行正程组成第一部分内循环,由主时钟分频、计数设计完成,同时产生行脉冲信号,对行脉冲信号计数产生帧周期;在电荷转移阶段帧转移脉冲φP1~φP4(行转移控制信号φM1~φM4)组成第二部分内循环,信号间的时序关系由主时钟分频、移位实现。
在设计上,需要注意以下两点:
(1)帧转移脉冲φP1~φP4的占空比为5:3,因此先用一个八进制的计数器设计出占空比为5:3的脉冲,再由帧时钟φA的控制及移位操作来实现其严格的时序。
(2)对于φA和φP1~φP4,手册上对其波形的边沿变化时间有限制,对于时间上限,由于信号从FPGA输出之后是通过驱动器EL7212驱动后送入CCD的,而EL7212输出波形的上升及下降时间的最大值已满足此上限要求;对于时间下限,可在CCD管脚附近增加电容和电阻调节波形边沿的陡峭度来满足要求。
1.3 CCD驱动时序的仿真
设计采用ISE 10.1自带的仿真工具对时序进行仿真,并对Xilinx公司的FPGA芯片XC3S50进行配置下载,通过功能仿真验证设计的可行性。驱动时序的仿真结果如图2,图3所示。