基于VC++与OpenGL的THz-TDS系统测试过程仿真
摘要:本论文首先概述了太赫兹波的特性及其相关技术的研究现状,重点介绍了反射式THz-TDS系统的工作原理,在理论研究的基础上,尝试通过建立透射式THz-TDS系统分立元器件的仿真模型,然后充分结合OpenGL强大的三维图形功能和Visual C++6.0完善的界面功能以及面向对象编程能力,运用面对对象的编程思想建立系统模块特性描述,最终实现对系统的动态仿真软件的开发。
关键词:THz-TDS系统,光路仿真,系统测试,VC++
Process Testing and Simulating of THz-TDS System Basedon VC++ and OpenGL
Abstract: The paper outlines the terahertz wave characteristics and related technologies and the status quo, the focus the reflected THz-TDS system works, on the basis of theoretical studies, it makes a try to establish a reflection THz-TDS system mathematical model of discrete components, and then fully integrate OpenGL powerful 3D graphics capabilities and Visual C + + 6.0 sound interface features, as well as object-oriented programming capabilities, using the face of the object programming ideological establish the characteristics describe of system module, and ultimately develop the dynamic simulation software. The simulation software system using visual design, realized dynamic process visualization and data processing visualization.
Key Words:THz-TDS, Optical path simulation, System testing,VC++
1 引言
太赫兹辐射(Terahertz)又称为THz波、T射线,通常指的是频率在0.1THz-10THz(波长在30-3000 )之间的电磁波,其波段在微波和红外光之间,属于远红外波段[1]。太赫兹技术是一种介于电子和光学的新技术。在20世纪80年代中期以前,由于长期缺乏有效的检测THz辐射波的方法,人们对该波段电磁辐射性质的认识非常有限,THz波段曾一度被称作“THz空隙”(Terahertz Gap)[2]。近十几年来,超快激光技术的迅速发展为THz脉冲的产生提供了稳定、可靠的激发光源,极大地促进了THz技术的发展,并成为一个迅速发展的前沿领域[3]。
由于THz-TDS实验系统的复杂性、高精度性,给实验系统的调试工作带来了巨大的挑战。本文通过对太赫兹时域光谱系统的各部分模块的工作原理进行研究,通过建立系统的仿真模型,实现系统工作原理的动态过程仿真,能够帮助那些利用THz-TDS系统进行实验的科研人员解决系统调试过程中遇到的问题,实现系统调试的故障诊断功能,同时提供一个实现动态仿真的软件平台,对于THz-TDS系统在实验过程中的应用有着重要意义。
2 THz-TDS系统概述
典型的太赫兹时域光谱系统主要由飞秒激光器、太赫兹辐射产生装置、太赫兹辐射探测装置和时间延迟控制系统组成。本文主要介绍透射式太赫兹时域光谱系统。图1为透射式太赫兹时域光谱系统实验装置图[4],该装置图既可以用光电导天线产生太赫兹辐射,也可以用ZnTe晶体产生太赫兹辐射,由于自由空间电光取样比光电导取样的探测带宽更宽,且更容易调节,所以太赫兹辐射的探测多是采用自用空间电光取样技术。以光电导天线产生太赫兹辐射为例,激光器发出的飞秒激光被分光镜分成两束,较强的一束为泵浦光,较弱的一束为探测光。泵浦光经过电动平移台,被短焦距透镜聚焦到辐射用GaAs晶体上,光整流产生太赫兹辐射。产生的太赫兹辐射被一对离轴抛物面镜收集并聚焦到另一块探测用的ZnTe晶体上,调整探测光路,使被高阻硅片反射的探测光与太赫兹辐射打在探测用ZnTe晶体的同一位置。探测光再经过 波片和渥拉斯顿棱镜后,分为偏振方向互相垂直的两束线偏光,入射到平衡探测器上,平衡探测器把光强差转化为电信号,最后用锁相放大器把信号从噪声中提取出来输入到计算机中显示。
图1 透射式太赫兹时域光谱系统实验装置
3. 基于VC++与OpenGL的THz-TDS系统测试过程仿真
3.1系统分析
在系统设计之前,需要分析、理解整个THz-TDS系统设计的基本目标和系统的工作原理,从而在系统模块化设计的基础上确定整个系统的基本框架与结构。
3.1.1 仿真系统设计目标
目前,一种最新的太赫兹光谱技术——太赫兹时域光谱技术(THz-TDS)日益成为太赫兹光谱技术的热点[5]。本系统开发的主要目的有三:一是通过图形可视化的系统模型设计,提高人机交互性,并能够进行动态实时仿真实验;二是构建THz-TDS系统各分立光学元器件模块的仿真模型,通过对信号的离散化以及运算和处理,实现对系统的动态模拟仿真;三是通过前后台之间的数据交互,实现实验系统在调试过程中对常见故障的诊断功能。
3.1.2 仿真系统整体框架
THz-TDS仿真系统是通过前台可视图形化的光学元器件模型与后台光学模块的数学模型之间的数据交流,完成激光脉冲、太赫兹电磁波在THz-TDS系统中的物理过程的模拟与再现。其中,前台界面显示系统主要实现光学元器件和光在光路中的可视化,以及完成各光学模块物理参数的设置与调整功能[6]。后台数据处理系统,则主要是通过物理光学理论建立各系统分立模块的数学模型,实现在光学物理参数的数据处理功能,并实时显示其波形和频谱,方便相关物理化学参数的计算。
3.1.3 仿真系统工作原理
本系统利用面向对象性的开发设计语言VC++[7],被开发的人机交互性强并具备数据处理功能的模拟分析模块。程序一旦运行就会清空数据文件,以排除前数据对仿真结果的影响;在参数输入界面中,可以输入各分立光学模块的位置坐标参数以及光学特性参数等,并可以读取不同待检测物质在不同频率下的消光系数和吸收系数的数据文件;输入适当的参数后,进入基于VC++的开发模块,并完成gauss脉冲信息的后续处理;数据的文件读写操作,可以完成不同模块之间的数据交流,从而实现太赫兹脉冲信息进入后处理模块进行数据处理,最终获得透射出样品后的太赫兹波谱信息,同时处理信息可以通过图形界面的方式显示出来,显得更加生动直观,便于调试人员及时发现问题。
3.2 关于混合编程
3.2.1 开发工具介绍
THz-TDS软件平台的开发使用Visual C++6.0、Matlab和OpenGL。C++是在C语言基础上发展的一门语言,它继承了C语言的高效,简洁,快速和高移植性的传统[8]。C++包含C语言的内容,主要是在C语言的基础上添加了面向对象编程(OOP)的方法。C++已成为全世界最流行的计算机编程语言之一,是一种可互操作的标准语言。通过Visual C++,开发人员能够享用世界级的C++开发工具。
Matlab自1984年由美国Mathworks公司推向市场以来,历经十几年的发展和竞争,现已被(IEEE评述)国际公认为最优秀的科技应用软件,其具有图形绘制、数据处理、系统分析、信号和图像处理、符号运算功能 [9]。
OpenGL(Open Graphic Library,开放式图形库),是SGI公司开发的低层三维图形API(Application Programming Interface,应用程序接口),目前在图形开发领域已成为工业标准[10]。
3.2.2 Visual C++与OpenGL、MATLAB混合编程
OpenGL独立于窗口系统和操作系统,这使得在进行可视化三维仿真系统开发时,需要选择一个开发工具来实现场景数据结构、算法和图形界面等。Visual C++6.0作为一个强大的集成开发工具,符合当前先进的软件设计思想,是目前流行的Windows应用软件开发平台。VC的MFC包含了强大的基于Windows的应用程序框架,提供了应用程序的文档/视图结构(工程CAD/CAM/CAE软件常用的结构)以及丰富的窗口和事件管理函数。
软件平台使用Visual C++ 6.0开发,然而图形显示的时候使用C++语言实现起来非常困难和复杂。为了使算法的实现简单方便,提高开发的效率,一般会利用Matlab与Visual C++混合编程的方法最终实现整个软件的融合[12-13]。
3.3 仿真软件系统界面设计
系统的界面设计,要顾及使用的方便性和可视性,提高人机交互功能。整个系统的界面主要有四部分组成:参数界面、运行界面和数据处理界面,如图3所示。
图3 系统界面
(1)参数设置界面
由于各个光学元器件的物理光电特性比较复杂,参数界面的设计主要目的是通过可视化的界面,方便用户对THz-TDS仿真系统中分立元器件的物理空间参数、光学物理参数进行赋值,以便在系统仿真过程中更加真实的模拟出现实系统的调试过程。
(2)仿真系统运行主界面
THz-TDS系统主要的组成元器件包括:飞秒激光器、反光镜片、 玻片、分束镜、衰减片、凸透镜、沃拉斯顿棱镜、离轴抛物面镜、LT-GaAs光电导天线、ZnTe电光晶体、平衡探测器等。
(3)数据处理显示界面
THz-TDS系统的后台数据处理部分主要包括了高斯脉冲模型的离散化、光电导天线产生太赫兹波、太赫兹波透射检测样品和电光晶体对太赫兹波的探测四部分组成。
4. THz-TDS仿真系统软件调试
4.1 测试平台
硬件:CPU: Intel Pentium 2 CPU, 2.00G ;内存:2G ;操作系统:Windows XP Professional SP2 ;编程语言:C++,OpenGL,Matlab ;编程环境平台:VC++6.0,Matcom4.5 。
4.2 功能测试
完成软件开发过程后,需对软件的功能进行全面的测试,以便及时发现设计、编码过程中存在的问题和不足之处,这是一项非常重要且不可或缺的环节。通过对软件的功能测试来检查软件的各项功能是否符合用户需求,本软件仿真系统有四项的功能测试 。
4.2.1 功能一测试
首先拷贝好应用程序的exe文件,双击文件打开,即可看到如图4程序主界面。。
图4透射式THz-TDS系统的主界面
4.2.2 功能二测试
在主界面上,点击菜单项下的“参数设置”,可以完成对仿真系统的各分立模块的位置参数、角度参数、以及光学特性参数的设置,如下图5所示。
图5 飞秒激光器的参数设置界面
4.2.3 功能三测试
单击主界面左上角的三个按钮开关或者点击菜单项下的“仿真测试”选项即可看到“开始”、“暂停”和“停止”三个子菜单项,它们可分别控制THz-TDS模拟仿真系统的“运行”、“暂停”和“停止”,如图6所示。
图6 透射式THz-TDS系统的控制开关
4.2.4 功能四测试
完整的采样周期完成后,最终的THz-TDS仿真系统光路图如8所示,该图完整的显示了整个系统中光路的路径,不同颜色代表光线的不同状态。
图8 THz-TDS仿真系统的完整光路图
结论
本文首先介绍了THz电磁波的概念和它所具有的特性,以及近十年来在THz时域光谱探测、THz成像和THz波在生物技术和信息技术领域的发展情况。接着详细阐述了THz辐射脉冲的产生与检测的方法以及基本原理。通过建立系统各元器件的仿真模型,运用VC++和OpenGL混合编程实现了其基本功能的仿真,针对整个系统能够实现其动态仿真,最终利用Matlab的开发工具matcom实现了时域频域波形的显示功能,并对系统进行了调试检测,是系统顺利运行通过仿真。
参考文献
[1] 杜晓晴,常本康,汪贵华.NEA 光电阴极的(CsO)激活工艺研究[J].光子学报,2003,32(7):826-829.
[2] Daniel M,Mittleman,Rune H. Jacobsen,Martin C Nuss.T_R Imaging,IEEE Journal of Selected Topics in Quantum Electronic,1996,2(3):679-692.
[3] 王新柯,任荣东,赵国忠,耿玉珍,李福利.太赫兹辐射原理与若干应用[J],激光与红外,2006,35(8):678-682.
[4] I. Babushkin, W. Kuehn, C. Kohler, et al. Ultrafast spatio-temporal dynamics of terahertz generation by ionizing two-color femtosecond pulses in gases. Phys. Rev.Lett., 2010,105:053903.
[5] 骆斌,吴岚,杨斌. 几种化学纤维的太赫兹时域光谱研究[J]. 纺织学报,2009,30(7):15-18.
[6] 张振伟,崔伟丽,张岩,张存林.太赫兹成像技术的实验研究[J].红外与毫米波学报,2006,25(3):217-22.