详解如何利用FPGA设计静态实时光谱采集与处理系统
扫描二维码
随时随地手机看文章
摘 要: 为了实时获取静态迈克尔逊干涉仪得到的光谱信息,设计了基于FPGA的实时光谱采集分析系统。在Xilinx FPGA芯片上实现了干涉条纹到光谱数据的实时处理。在算法处理过程中,实现了干涉条纹滤波去噪、快速傅里叶变换、相位标定、光谱数据传输等模块化功能。实验结果显示,系统可以高速采集并实时处理光谱数据。
关键词:光谱探测;静态迈克尔逊干涉仪;FPGA;Verilog HDL
静态迈克尔逊干涉仪是在传统迈克尔逊干涉仪的基础上改进的一种空间调制型光谱获取装置,将传统动镜采用一个倾斜很小角度的静镜代替,从而产生联系变化的光程差,最终获得待测光源的光谱信息。由于其没有机械移动或扫描结构,所以结构简单紧凑,同时具有良好的稳定性、抗震动和抗干扰能力,这为其应用在更广泛的生产生活领域提供了有利条件[1-2]。与此相似的静态型光谱仪还有静态傅里叶变换光谱仪[3]、沃拉斯顿分光光谱仪[4]、静态Sagnac三角光谱仪[5]、光栅光谱仪[6]等。无论哪种静态光谱仪都需要一个能够实时采集干涉条纹并且实时处理分析,得到光谱数据的处理系统,否则将丧失静态光谱仪的一大优势——实时性。如果想实现实时处理的功能,要求在采集数据及处理分析算法都相应提高,这也是本文的主要研究内容。
FPGA(Field Programmable Gate Array)为现场可编程门阵列器件[7],是在GAL、PAL、CPLD等可编程芯片的基础上更集成化的产物。由于其本身就是硬件,所以具有数据处理快、灵活性高、集成度好等优点[8]。它克服了定制电路的缺点,又解决了原有可编程器件的门电路数有限的问题,从而被广泛地应用在数字信号处理领域。 目前,对于静态干涉条纹的采集及处理,主要有三种处理手段: (1)干涉条纹灰度数据由数据采集卡采集并传递给PC机[9],采用MATLAB、LabVIEW等分析软件实现对干涉条纹的光谱分析; (2)采用定制的专用FFT芯片[10],再从CCD等光电器件输出后直接进入FFT芯片完成数据处理;(3)采用可编程数字器件,如DSP、FPGA等,通过编程实现采集干涉条纹及FFT等算法的数据处理[11]。三种方法各有特点,方法(1)使用简单、在PC机上实现的功能全,但不能脱机工作、系统复杂,便携性差;方法(2)结构紧凑、效率高、实时性好,但灵活性差、可移植性差,并且对于大点数的FFT不适合采用此法;方法(3)从灵活度、结构性能、可移植性等方面看都相当适中,是目前应用开发较多的一种形式。针对本系统研究内容要求较高的实时性,选用硬件编程器件FPGA作为数字信号处理芯片,可以实现更高速、更灵活的系统性能。
1 静态迈克尔逊干涉仪的原理及结构
静态迈克尔逊干涉仪的结构原理如图1所示。静态迈克尔逊干涉系统是在传统迈克尔逊干涉系统的基础上,将原有动镜变为倾斜一定角度的固定反射镜,如图中反射镜1所示。当光线1入射系统后,由分束镜分为两束光,一部分由反射镜1反射回柱面镜,这束光由于反射镜1存在一定的夹角而非原路返回,其会与光线2经反射镜2反射的光线发生相干,形成干涉条纹。其他光线也以此类推,与其他光线发生干涉,最终在整个柱面镜上形成静态干涉条纹,再由柱面镜汇聚到CCD上,采集得到干涉条纹的灰度数据。CCD采集的数据传入FPGA中,在硬件FPGA芯片中完成干涉条纹的滤波、去噪,再通过FFT算法将干涉条纹中的频谱信息提取出来,最终显示出其结果。
在实际情况中,干涉条纹通过引入修正因子,可将光源强度表示为:
2 FPGA处理系统
2.1 总体设计
对于傅里叶变换的光谱获取需要进行实时处理,即当得到光源干涉条纹的信号后,处理系统需要在处理当前数据时同时接收下一帧的干涉条纹数据,这就需要系统具备高速的数据处理能力。可编程逻辑器件FPGA具有高速并行处理能力,可完成系统实时采集及处理的要求。干涉条纹的灰度数据由CCD探测器采集传入FPGA芯片中,在芯片中完成滤波去噪、快速傅里叶变换、相位校正及标定等算法。系统采用AViiVA M1型线阵CCD探测器,包括1 024个像元,8/10 bit数字输出,可探测波长范围为400~1 100 nm。设计了实时光谱采集及片上处理的系统,其原理图如图2所示。
模块一为干涉条纹的采集部分,由驱动控制对AViiVA M1型线阵CCD探测器进行时钟脉冲的提供和控制。当系统开始运行时,其提供起始控制信号(st)、时钟信号(clk)、触发信号(trgi及trgd)等。模拟输出信号可通过示波器观察采集得到的静态干涉条纹,数字化后传给FPGA。模块二为光谱分析处理模块,为了使处理速度达到较高水平,设计了串并转换方式,将数据导入双端口RAM缓存中,当FPGA芯片控制数据并行读取时,数据输入FFT模块并处理,实现数据的快速傅里叶变换。变换后的频谱信息经过预先编写的相位校正和光谱标定程序而获得准确的光谱分布。
2.2 切趾处理
由于傅里叶变换过程是针对无限大数据的,但实际输入的数据量是有限的,所以干涉图样的采样就相当于与一个矩形函数相乘,也就是频域中光谱和矩形函数的SINC卷积。但由于这样做会导致光谱的失真变形,所以通常采用加窗的处理方式,窗函数选取的好可以使光谱尽量少地泄露。
在MATLAB仿真软件中,通过对一组660 nm激光干涉条纹数据进行加窗处理,分别采用汉明窗、三角窗、加布莱克曼窗与不加窗的情况进行对比,得到如图3所示的频谱相应。
切趾函数的选择需要注意主瓣宽度尽量窄,旁瓣幅值尽量低。由图可以看出,加三角窗中心处产生隔断,而加布莱克曼窗时峰峰值受到抑制,相比之下,加汉明窗比较理想,所以本系统中采用汉明窗。窗体程序是先由MATLAB计算汉明窗的值并用二进制补码表示,然后在FPGA的某一个ROM存储器中存放初始化的窗函数值,最后通过乘法器完成切趾功能。
2.3 FFT算法模块