基于FPGA的微型光谱仪CCD系统设计
2021-09-27冯晓艳胡彦君吴嘉伟张会新
冯晓艳,胡彦君,吴嘉伟,张会新
(1.仪器科学与动态测试教育部重点实验室,山西太原 030051; 2.中北大学,电子测试技术国家重点实验室,山西太原 030051;3.晋西工业集团防务装备研究院,山西太原 030024)
0 引言
光谱仪是通过分析物质化学组成及其含量,实现对光波的能量、波长、带宽等重要特征进行测量的光学仪器,在化学、生物学、医学、天文学等领域获得了广泛的应用[1-2]。传统光谱仪通常包括扫描单色仪和光电倍增管,结构复杂且检测时长较长,同时还具有体积大、价格高、不易携带等特点,无法得到普遍的应用,因此,现代光谱仪器发展的主要趋势是小型化和微型化。随着微型光电器件的发展,以电荷耦合器件(charge coupled device,CCD)研制的微型光谱仪正在逐渐发展成熟[3],CCD作为光电转换传感器,具有结构简单、使用范围广、可靠性好等特点,成为现代电子光谱检测中广泛使用的传感器。
目前,使用较为广泛的微型光谱仪是美国海洋公司生产的USB4000和荷兰Avantes公司生产的avanpec系列产品[4]。国产的微型光谱仪采样精度和性噪比难以达到实验要求,故使用率较低,需要进一步研制改进。为了进一步提高采样精度,降低信噪比,本文提出了一种基于FPGA的高精度CCD光谱数据采集系统。该系统采用了高灵敏度的线阵CCD,高采集精度的A/D转换器、功耗较低的FPGA和传输速率快的USB接口芯片,采样精度达到16 bit,同时有较高的光谱采集范围,能够实现实时光积分时间的修改,具有较好的重复性及可靠性。
1 系统设计方案
该系统的主控芯片为FPGA,用来协调驱动电路的所有模块,包括CCD驱动模块、信号处理模块、数据存储传输模块。前端光学系统采用基于平场全息凹面光栅的系统,光源发出的光通过光栅实现准直、色散后,投射到线性CCD的接收面上,CCD的输出信号是模拟量,经前置运放电路放大,再输给A/D芯片完成模/数转换,转换后的16 bit数字信号,通过USB接口传输给上位机,由上位机实现实时数据的处理与显示。系统的设计框图如图1所示。
图1 系统结构图
2 功能模块设计
2.1 光学系统模块
光学系统的主要功能是实现分光,将复合光按照一定的规律展开,使不同频率、不同波长的光分布在采集部分的不同位置。最常用的分光元件是棱镜和光栅,对应形成Czerny-Turner系统和基于平场全息凹面光栅的系统[5]。由于Czerny-Turner系统中需要的棱镜数目较多,且角度、位置等不好确定。所以本设计选用平场全息凹面光栅进行光学系统的搭建,该光学系统的结构简单,有利于微型化的实现。
根据设计要求,工作波长是300~800 nm,谱面宽度为25 mm,因此采用ZEMAX[6]软件对平场全息凹面光栅进行参数求解和结构优化,得到整体光学结构如图2所示。
图2 光学仿真结构图
该设计进行仿真优化后,消除了离焦和球差现象,其仿真结果的点阵图如图3所示,对于在600~700 nm波长段的入射光,其波长间隔2 nm的入射光可以实现有效展开,分辨率大于2 nm。
图3 仿真点阵图
2.2 CCD驱动模块
在本设计中选用线性CCD芯片TCD1304DG,该CCD芯片的优点是灵敏度高、暗电流低。拥有3 648个像素点,需要3路信号,即主时钟脉冲信号(ФM)、光积分控制脉冲信号(ICG)和转移脉冲信号(SH)进行驱动[7]。包含2种驱动模式,一种模式是采用电子快门模式,一种是不采用电子快门模式,主要区别是CCD一个工作周期内SH脉冲的个数及有效光积分时间。适合用于微小型、低功耗光谱仪的检测。主时钟脉冲频率选用典型值2 MHz,数据输出典型频率选用值为0.5 MHz,4个主时钟脉冲对应一个像元信号的输出。本系统选用电子快门模式,通过FPGA产生脉冲来驱动CCD,其工作驱动时序如图4所示。
图4 CCD工作时序图
为了确保CCD正常驱动,应输入正确的CCD驱动时序,本设计中要求:ICG的下降沿比SH的上升沿提前1 000 ns,ICG的上升沿比SH的下降沿延迟最少1 000 ns,SH的脉冲宽度最少为10 μs,来确保光敏元中的电荷全部充分转移到模拟移位寄存器中,且在每次积分结束后,转移到模拟移位寄存器的电荷是完整的信号[8]。在本设计中选用积分时间为25 μs,ΦM采用典型值2 MHz,在ICG拉高后,先输出32个哑元信号,然后经过3 648个有效信号后,又输出14个哑元信号,ICG拉低。利用FPGA逻辑实现上述时序,由ModelSim仿真如图5所示。
图5 ModelSim仿真图
2.3 信号处理模块
图6 AD7667时序转换图
电路设计如图7所示,由于CCD的输出电压在1.5~3.5 V,而AD7667的模拟输入电压变化范围是0~2.5 V,因此在前端增加分压电路进行分压。
图7 A/D转换电路设计
2.4 数据存储传输模块
CCD的输出信号为离散的模拟信号,先输出32个无效信号后,开始输出3 648个有效的像素信号,之后又输出14个无效信号。但是数据在采集的过程中,应该确保各像素在采集的一帧信号中的顺序和位置保持一致,从而确保最后测出的光谱的谱线不会发生左右漂移。CCD传输一帧完整的数据(包括哑元信号)为3 694个16 bit数据,即7 388 Byte,因此,在确保数据采集到的像素信号完整的情况下,采集的每帧数据量约为7 400 Byte。在FPGA内部,利用IP核即异步FIFO模块来缓存A/D模块并行输出的16 bit的数字量信号[10]。同时,FIFO输入端口的写时钟和写使能要与A/D输出信号的时序相匹配,FIFO输出端口的读时钟和读使能需要与USB读出速率保持一致。为了满足通信要求,选用USB2.0[11]作为通信接口,其最高传输速率可以达到480 Mbps(60 MByte/s)。由于USB传输协议较为复杂,选用内部集成USB协议的专用芯片FT2232[12],可以方便实现USB和并行接口或者双端串行接口的转换,同时能够实现USB向并行FIFO的数据传输转换。电路设计如图8所示。
图8 USB模块电路设计图
从启动光谱数据采集开始,本设计要求A/D转换始终保持运行,通过FPGA实现对FIFO写使能和清零信号的控制,来确保每次FIFO中缓存的第一个数据是CCD的第一个有效像素,从而保证采集信号的完整性。当FIFO缓存数据达到一定值后,FPGA向USB接口发送缓存数据,同时,在输出数据的过程中,确保A/D转换仍在持续运行,且FIFO也在持续缓存数据,从而确保采集系统的连续高速采集性。
图9 系统工作流程图
3 测试结果
实验在常温干燥的暗室进行,避免了周围环境光照及温度变化对实验结果的影响。为了验证设计系统的可行性,测试CCD输出不同波长信号的区别,设置光积分时间为25 μs,采用示波器对输出信号直接测量,图10是中心波长为600、750 nm的输出信号测试结果。结果表明不同波长的光经过系统后,其对应输出的电压值和幅值不同,因此可以通过上位机软件对不同波长的信号进行区分。
(a)600 nm
图11是以上2种波长的光经过上位机处理后的结果,在光强度一定的情况下,波长发生明显的右移,上位机显示的波长值与实际波长一致,因此可以看出结果比较符合预期,但性能有一定的提升空间,主要是由于光学系统的设计还未达到最佳。
(a)600 nm
与传统的光谱仪相比,本设计系统具有微型化的光学系统,可以实时调整光积分时间,采集速率快,灵敏度高,光谱采集范围广,具有很好的应用前景。
4 结论
本设计将CCD驱动模块、信号处理模块和数据存储传输模块集成到一块PCB板上,将该模块与前端光学模块组合,构成了微型光谱仪。使用稳定光源在常温且干燥的暗室中进行光谱采集实验,经过实验测试及结果数据分析,证明本设计系统具有微型化、可靠性高、稳定性好等特点,可以正常、高效地工作。在设计中采用USB2.0实现通信,提高了数据的传输速率,确保了数据传输的实时性及可靠性。同时,针对该CCD设计了频率和积分时间可调等功能,减少了后续的工作量,具有广泛应用的可能性及通用性。