学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor...

71
学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统 者: 芮 俊 号: PB05203129 学科专业: 原子分子物理 指导教师: 陈帅 教授 2010 年 5 月 中国·安徽·合肥

Transcript of 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor...

Page 1: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

学士学位论文

冷原子量子存储实验中的时序信号控制

与实时符合测量系统

作 者: 芮 俊

学 号: PB05203129

学科专业: 原子分子物理

指导教师: 陈帅 教授

2010 年 5 月

中国·安徽·合肥

Page 2: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统
Page 3: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

A Time Sequence Control and Real-Time Coincidence

Measurement System in the EIT Quantum Memory

Experiment

This bachelor thesis has been carried out by

Jun Rui

at the

Division of Quantum Physics & Quantum Information,

Hefei National Laboratory for Physical Sciences at the Microscale

Under the supervision of

Prof. Dr. Shuai Chen

University of Science & Technology of China

Hefei, Anhui, P.R. China

05, 2010

Page 4: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

摘要

I

摘要

近年来,冷原子物理研究由于其对基础物理研究,量子物理和量子通信方面

的研究起到了极大的推动作用而成为物理研究的热点。冷原子的获得通常是采用

对原子进行激光冷却与囚禁的方法来实现的,具体技术包括“光学粘胶”,磁光

阱等。

本文所介绍的工作是围绕在激光冷却的铷原子中进行量子存储实验而进行

的。在基于冷原子的量子存储实验中,装载原子,向原子存储器中写入-读出光

子,以及测量存储的参数等成为必备的步骤。在实验的时序控制中,我们利用德

国 Jäger Computergesteuerte Messtechnik 公司的 ADwin 系统实现了具有微秒量级

时间精度的原子装载控制,利用德国 Heidelberg 大学提供的 FPGA 实现了具有

10 纳秒时间精度的存储控制;在单光子的存储测量中,我们利用单光子探测器

和德国 FAST ComTech 公司的 P7888 实现了具有 2ns 时间分辨率的实时符合测

量。

冷原子的制备过程中,需要分时间段操作 cooling, pumping, repumping, dipole

trap, probe 等各路激光以及磁场,这一部分的时间一般在毫秒至秒量级,我们利

用 ADwin 系统来实现对这些激光和磁场的控制,以制备、囚禁、探测冷原子气

团。在原子装载完毕之后,即可进行单光子的存储实验。由于目前仍然不存在可

靠的单光子源,我们利用 AOM 晶体的短暂(10ns 量级)打开来产生微弱的光脉冲,

这些脉冲含有光子的几率很低,以至可以认为凡是出现了光子的都是单光子脉

冲。此外,电磁感应透明(EIT)实验中还需要时间较短(如 100ns 量级)的光脉冲

来测试冷原子团的慢光、停光、EIT 曲线宽度等性质和参数,这些都已超出了

ADwin 系统的能力,因此采用了 Heidelberg 大学的 FPGA。

当光子从存储器中读出后,需要检验读出的光子是否是实际存入的光子,并

且记录读出光子的数目,这些都是由 P7888 记录单光子探测器输出的 TTL 脉冲的

时间并且存入文件,之后由计算机分析这些数据文件实现的。借助于实时分析的

算法,在实验中我们实现了探测-采集-分析过程的实时化,大大提高了实验效率。

此外,由于实验中的半导体激光、FP 滤波腔、PPKTP 晶体等都需要具有 mK

至 10mK 量级稳定度的工作环境,因此本论文中还包括了一章专门论述基于 PID

算法的温度控制模拟电路的实现,并且获得了与美国 Thorlabs 公司提供的温度-

电流控制器 ITC502 相当的温度稳定度。

关键词:量子存储,时序控制,符合测量,温度控制

Page 5: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

Abstract

II

Abstract

During the past decades, extensive researches have been carried out on laser

cooling and trapping of neutral atoms. This has boosted enormous progresses on basic

physics, quantum physics and quantum information science, etc.

This thesis has been carried out mainly for an electro-magnetically induced

transparency type quantum memory experiment, which is based on cold Rubidium87

ensembles. During such an experiment, loading cold atom ensembles, writing and

retrieving information to and from atom memory, analyzing the storage time and

efficiency are four major steps. For this purpose, we have developed a time sequence

control and single photon coincidence measurement system during the past one and a

half years, based on ADwin which is made by Jäger Computergesteuerte Messtechnik

GmbH, FPGA developed by the University of Heidelberg and P7888 made by Fast

ComTech GmbH.

With ADwin, we have developed a control system with a time resolution of 10us

for both analog and digital signals. With this system, we can operate both the intensity

and time duration of cooling laser, pumping laser, repumping laser, depumping laser,

dipole trapping laser, magnetic fields, CCD camera, etc. For even faster processes, i.e.,

probabilisticly generating single photon pulse with an AOM crystal, triggering single

photon detectors (SPD), we use a FPGA to generate digital pulses with duration from

10ns to 10us. Those two compose the entire time sequence control system.

After writing and retrieving single photon pulses into atom memory, we have to

measure the storage time and efficiency. With the time flow information written by

P7888, which is recorded according to the arriving time of single photon pulses

detected by SPDs, we have developed enormous programs to real-time analyze the

flow file and get the coincidence counts between entangled photon pairs, one of which

is detected locally, and the other is written into the quantum memory, etc.

Apart from all those, I’ll also introduce a PID temperature controller, which will

be used for stabilizing frequency of diode laser, longitudinal modes of Febry-Perot

cavity, or PPKTP crystal, which has a stability of controlled temperature similar to

that of ITC502 which is manufactured by Thorlabs Inc, USA.

Key Word: Quantum Memory, Time Sequence Control, Coincidence

Measurement, PID Temperature Control

Page 6: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

目录

III

目录

第 1 章 绪论............................................. 1

1.1 激光冷却中性原子气体原理简介.....................1

1.2 电磁感应透明(EIT)原理简介........................3

第 2 章 时序信号控制系统................................. 6

2.1 实验需求.........................................6

2.2 ADwin 系统功能介绍 ...............................7

2.2.1 ADwin 硬件功能简介 ............................................ 7

2.2.2 ADwin 的编程 .................................................. 8

2.2.3 建立 ADwin 与计算机之间的连接................................. 11

2.3 原子装载时序控制主程序的设计....................12

2.3.1 数字/模拟任意波形信号的输出方法..............................13

2.3.2 在 LabVIEW 中调用 ADwin 库函数.................................14

2.3.3 LABVIEW 中多通道数字/模拟信号数组的产生 ......................15

2.3.4 在实验中的应用...............................................16

2.4 基于 FPGA 的快信号发生程序设计...................17

2.4.1 DL701 的几个基本函数 .........................................18

2.4.2 利用 DL701 产生多通道多脉冲的方法.............................19

2.4.3 在实验中的应用...............................................20

第 3 章 单光子的实时符合测量............................ 21

3.1 P7888 功能简介及数据分析方法 .....................21

3.1.1 P7888 基本功能 ...............................................21

3.1.2 LIST 文件格式介绍与通用数据分析算法 ..........................22

3.1.3 在 LabVIEW 中以 DLL 方式调用 C程序 .............................25

3.2 EIT 曲线的测量方法 ...............................25

Page 7: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

目录

III

3.2.1 EIT 曲线测量的时序简介 ......................................26

3.2.2 EIT 曲线数据采集程序 ........................................27

3.2.3 利用 EIT 存储单光子脉冲的实验结果............................28

3.3 单光子的实时符合测量方法.........................28

3.3.1 实时符合测量程序的结构与算法................................30

3.3.2 数据压缩算法................................................30

第 4 章 基于 PID 算法的温度控制简介....................... 32

4.1 实验需求.........................................32

4.2 控温原理简介.....................................32

4.2.1 温度传感器的简介与比较.......................................33

4.2.2 Thermoelectric Cooler(TEC)简介...............................34

4.2.3 PID 算法简介 .................................................35

4.3 电路功能模块及控温测试结果.......................36

4.4 小结.............................................43

参考文献................................................ 44

附录.................................................... 46

附录 1.1 多通道数字-模拟控制程序的 LabVIEW 界面 .......46

附录 1.2 多通道数字-模拟控制程序 V5.2 的 ADBasic 源代码 47

附录 1.3 多通道数字-模拟控制程序的简化 LabVIEW 框图 ...50

附录 1.4 DL701 多通道数字脉冲发生程序的 LABVIEW 框图...52

附录 2.1 EIT 曲线测量程序的 LabVIEW 框图...............53

附录 2.2 EIT 曲线测量程序中文件分析 DLL 源代码(C++) ....54

附录 3.1 纠缠光子实时符合测量程序的 LabVIEW 框图 ......56

附录 3.2 纠缠光子实时符合程序文件分析 DLL 源代码(C++) .58

附录 3.3 P7888 List 文件数据压缩 DLL 源代码(C++) .......61

附录 4 PID 温控电路 PCB 电路图.......................62

致谢...........................................................................................................63

Page 8: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 1 章 绪论

- 1 -

第 1 章 绪论

1.1 激光冷却中性原子气体原理简介

原子的激光冷却和陷俘(laser cooling and trapping),是最近二十多年来蓬勃发

展的物理学新研究领域。它将原子气体冷却到 mK 至百 nK 量级的温度, 并且可

以在真空系统中将明显的冷原子气团保持数秒。原子的激光冷却与陷俘为原子分

子物理学研究提供了一个极低温的“安静”环境,它使原子运动几乎被“冻结”

(原子气体却不会液化),从而允许在原子的 deBroglie 波长远大于 Bohr 半径的新

尺度内研究原子的行为。

利用激光冷却原子从事精密测量的研究,具有广阔的技术应用前景。比如,

在太空中飞行的作为精确时间基准的原子钟就是全球定位导航系统(GPS)的核心

之一;利用冷原子进行光存储的实验近年来正在蓬勃发展,这可能将是未来的量

子信息存储器件;冷原子光晶格(Optical Lattice),目前已可以用来模拟一些物理

现象,将来还可能用作量子计算;等等。

这里简单定性介绍一下激光冷却

中磁光阱(Magneto-Optical Trap)的相

关物理背景[1]。

当光子被原子散射后,光子的动

量变化被转移到原子上,单个光子对

原子的散射力非常小,散射一个光子

后,原子速度的典型改变值约为

1cm/s。然而,通过激发强烈的原子共

振跃迁,可以使得单个原子每秒钟散

射大于 107 个光子,从而产生很大的

加速度(104g)。通过控制光的辐射压

力,可以使气体样品中的一部分原子

速度减小到约为 0(Cooling),并且停

留在空间某个特定位置上(Trapping)。

由于 Doppler 效应, 原子对光子的散

射速率依赖于原子速率, 由此可以实

现对一定速度范围内的原子进行冷

图 1.1 原子散射速率与激光频率的关系

图1.2 激光频率小于原子共振频率(红

失谐)时,朝向激光运动的原子, 受到

的散射力更大.

Page 9: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 1 章 绪论

- 2 -

却,如图 1.1 所示。

当原子在激光光束中运动时, 其观察到的激光频率 laser 移动了 ( / ) laserc ,

其中是原子顺着激光方向的运动速率。若激光频率低于原子能级的共振频率,

由于 Doppler 频移,朝向激光运动的原子( 0 )相对顺着激光运动的原子( 0 ),

其对光子的散射速率更大, 因而受到的辐射力更大, 如图 1.2 所示。当空间 x, y, z

3 个方向上各有 2 束对射的激光时,作用在原子上的力仅仅与速率有关,可以很

大程度上抑制原子的运动,并将原子气体冷却下来。这个过程也称为光黏胶

(Optical Molasses)。

然而,上述过程虽然可以冷却原子,但是被冷却的原子依然可以扩散出光束

交叠区域,除非作用在原子上的力与空间位置也有关。这可以通过多种方式实现,

比如说磁光阱。磁光阱中与位置有关的力,是通过在陷俘区内形成非均匀磁场(比

如 Anti-Helmholtz 线圈)以及采用适当极化的激光实现的。通过原子能级的

Zeeman 分裂, 磁场调节了不同位置原子对各个方向光子的散射速率,进而把原

子推挤到空间某个特定区域里,同时大大增加了该区域内的原子数密度,图 1.3

中给出一维情形下 MOT 的简化模型。

简化模型中,我们考虑一个基态角动量 J=0,激发态角动量 J=1 的原子,被

来自左右两边的红失谐圆偏光照射。来自左边的右旋光只可使原子激发到 m=+1

态,而来自右边的左旋光只可使激发原子到 m=-1 态。在陷俘区中心,磁场强度

大小为 0,随位置 x 线性变化。此磁场对原子能级形成微扰,使得当原子移动到

中心位置以左时,△m=+1 跃迁的频率减小,△m=-1 跃迁的频率增大。当激光频

率低于原子的所有跃迁频率并且原子处于中心偏左位置时,由于 激光更接近

△m=+1 跃迁频率,其光子被散射几率更大,而由于 激光频率与△m=-1 跃迁

图 1.3 MOT 的一维简化解释

Page 10: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 1 章 绪论

- 3 -

频率相差更大,其光子被散射几率更小。因而原

子被推回 B=0 的位置。当原子处于中心位置偏右

时,亦会被推回 B=0 位置,原理与上述类似。三

维情形下的分析会更复杂,但是实验上仍然是比

较简单的,如图 1.4 所示。实验中采用两个对称

的圆形或方形线圈(反亥姆霍兹线圈),分别通以

方向相反的电流,则可以形成中心处磁场大小为

0,在中心附近小区内磁场强度大小随空间位置线

性变化(近似处理的结果)的磁场;圆形线圈可使

产生球形冷原子气团,方形线圈可使形成雪茄形

冷原子气团。

下面简单分析激光冷却铷原子(Rubidium)的情况。 87Rb 原子 D2 线的超精细结构如图 1.5 所示。

实验上冷却光和陷俘光可由同一台激光器提供,其

频率比 87Rb 原子的 52S1/2F=2→52P3/2F’=3 的跃迁频

率略低 1~3 个自然线宽(铷原子 D1 和 D2 线的自然

线宽约为 6MHz)。然而由于大约有 1/1000 的激发

态原子会跃迁到 F=1 基态而不是 F=2 基态上,这部

分原子几乎不会再与冷却光发生作用,因而需要另

一台泵浦(Pump)激光将 F=1 基态上的原子激发到

F’=2 态上,这部分原子将跃迁回 F=2 基态上,继

续与冷却光发生作用。

1.2 电磁感应透明原理简介[2]

通常情况下,当激光频率等于原子的某个跃迁频率时,光经过原子气体时,

将会被原子强烈的吸收与散射。然而,通过选择特定的原子能级结构激光频率,

却可以使原子气体变得对激光透明,不再吸收光,这就是所谓的电磁感应透明现

象(electromagnetically induced transparency)。这个概念,类似于给原子穿上隐

身衣,观察者就看不见原子了。

如图 1.6 所示,为目前常用的 EIT 实验中常用的原子能级(图 a),以及 EIT

过程中经过原子气体的光的透射率、折射率与失谐频率的关系(图 b)。在此过程

中,原子需要具有一对基态能级|g〉和|s〉,以及一个激发态能级|e〉。为了使与

图 1.4 MOT 示意图

图 1.5 87Rb D2 线超精细结构

Page 11: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 1 章 绪论

- 4 -

|g〉→|e〉跃迁共振的激光(信号光)在穿过原子团的过程中不被吸收,需要另加

一束与|s〉→|e〉跃迁共振的激光(控制光),两束激光综合作用的结果就是使原

子都处于|g〉和|s〉的叠加态上,此时原子|g〉→|e〉和|s〉→|e〉两种跃迁路

径发生相消干涉,从而没有原子被激发到|e〉态上去,导致原子不再吸收光。这

就是所谓的电磁感应透明现象。

当共振控制光光强很强并且时间上恒定存在,而信号光很弱时,原子系宗对

信号光的光学响应可以由线性极化率 ( ) 来表示:

22( )

( )( )

gs

ge gs

ig N

i i

其中 ij 表示的 i→j 跃迁相干性的驰豫速率,是控制光的 Rabi 频率,N 是原子

的总数目,g 是原子-光场的耦合常数,是信号光频率与|g〉→|e〉跃迁频率的

失谐量。原子极化率的虚部,表征的是原子介质对光的吸收(透射系数 T),而其

实部表征的是原子介质的折射率 n:

( ) exp[ Im ( ) ], 1 1/ 2Re ( )T kL n

当 0, 0gs 时,原子对信号光而言完全透明,失谐频率偏离 0 时,原

子对光的吸收增多;继续增大失谐频率,由于偏离共振频率过大,原子受激吸收

光子的几率变小,因此光的透射率增大。EIT 频谱上的透射尖峰的半高宽,可以

通过改变 Rabi 频率,也就是改变控制光的强度来改变。

当 0 时,原子介质对于信号光的折射率等于 1,与真空相同,因此此时

光波包的相速度仍为光速。但是信号光的波包在原子介质中运动的群速度 g 却

221 /g

c

g N

图 1.6 EIT 过程中的原子能级结构与示意图

Page 12: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 1 章 绪论

- 5 -

值得注意的是,如图 1.7 所示,当一个时域上很窄的光脉冲进入原子后,如

果突然降低控制光的光强,使得 Rabi 频率突然减小至零,则会让光脉冲的群速

度也急剧减小至 0,光脉冲随即存储在原子系综里。实际上,当控制光突然关闭

后,信号光脉冲的电磁场,转换成了原子系综的自旋波函数。当控制光再次打开

之后,原子系综的自旋波函数再次转换回光场,并且光脉冲的群速度急剧增加,

使得光脉冲从原子系综中发射出来。由于在光波包转换成原子系综自选波的过程

中,不涉及光的极化性质,因此当光波包再次从原子中读出时,其极化性质仍然

可以保持,这就使利用 EIT 来存储单光子的极化量子态具有了可能性[3]。

此外,利用原子气体的 EIT 窗口很窄的物理机制,还可以设计精度较高的原

子钟,具体参见文献[4]。

图 1.7 光脉冲的 EIT 存储过程示意图

Page 13: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 6 -

第 2 章 时序信号控制系统

2.1 实验需求

在原子的量子存储实验中,我们首先要将作为存储介质的原子准备好,然后

将量子光存入原子中,一段时间后再将量子光从原子中读出来,接着分析存储时

间和效率等参数,即装载-写入-读出-验证四个主要步骤。这一过程,即需要进行

时序控制,以使实验按预定步骤进行。

由于冷原子系综中原子的温度极低,并且它们的空间位置固定,量子状态几

乎一致,跃迁能级的多普勒展宽极小,原子密度很大,使得光子与原子的作用强

度极大,因此适合用来作为光子存储的介质。而实验上为了获得冷原子,又需开

启磁光阱的多路激光与磁场,以抓取、冷却、囚禁原子,获得冷原子系综,之后

再关闭磁光阱(冷原子随即被释放),这一步骤在实验室中至少需要十毫秒以上

的时间。在冷原子被释放开的最初几毫秒内,我们重复进行若干次的写入-读出

操作,以获得存储器的寿命、效率等参数。目前磁光阱类型的量子存储实验中,

每次写入、读出操作的时间间隔(近似等于存储寿命),一般在几 us 到几百 ms

之间[5],[6],[7],[8],[9]。

我们在科大合肥的 MOT 实验平台于 2008 年四五月份开始搭建,当年年底

即基本搭建完毕。此间我主要在学习时序的编程及搭建外围硬件,并且在 2009

年 1 月份完成了由 ADwin 系统负责的原子装载时序控制程序(时间精度设定为

10us)以及外围硬件的搭建,在 2009 年 4 月之前完成了由 FPGA 负责的存储-读

取时序控制程序(时间精度为 10ns),基本满足了我们此后实验中的时序控制需

求。在此毕业论文中花费相当篇幅赘言此部分,只是为了做一个总结,方便后来

人学习使用这套系统,或者继续升级改造这些硬件架构与控制程序。

在此,我需要感谢德国 Jäger Computergesteuerte Messtechnik 公司的工程师

详细回答了很多关于 ADwin 系统的问题,以及德国海德堡大学量子光学与量子

信息实验室的陈宇翱、Alexander Goebel 两位博士在 FPGA 编程上给予我的重要

帮助。

Page 14: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 7 -

2.2 ADwin 系统功能介绍

2.2.1 ADwin 硬件功能简介[10]

我们实验中采用的是 ADWin Pro-II 系统(图 2.1)。它主要是一个具有处理

器、存储器和总线的机箱,具体配备何种硬件模块可由用户自己选择。我们配备

了一个 32 路数字输入-输出模块,一个 16 路数字光耦输入模块,两个 16 路三极

管数字输出模块(输出电压、电流由外部供电决定),一个 8 路模拟输入模块,

两个 8 路模拟输出模块。此外,原厂家还可以提供计数器模块,热电偶、PT100

电阻信号放大模块,串行通讯接口,PCMCIA 存储与读取模块,等等。

ADwin Pro-II 系统的 CPU 模块配备了一个 300MHz 的处理器,浮点运算精

度达到 40 位,内部存储器容量为 768KB,外部存储器容量为 256MB,可以通过

以太网与其他计算机进行连接,并且可以接受外部触发(在我们的 EIT 曲线测量

时序中即用到此功能)。下面简单介绍一下我们当前实验中主要使用的 8 路模拟

信号输出模块和 16 路晶体管数字输出模块的参数,其他模块的参数请参考手册。

1)8 路模拟信号输出模块(图 2.2)

输出电压范围:-10V 至+10V;分辨率:16 bit(约为 0.3mV);输出电流:

最优性能下±5mA,极限(短路保护下)值为±35mA;上升时间:小于 3us;

接头:LEMO 母接头。显然其电流驱动能力很弱,因此我们需要将其输出信号经

过简单的外部电流放大后再输出。

2)16 路晶体管数字输出模块(图 2.3)

图 2.1 ADwin 实物图

Page 15: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 8 -

需要外部供电,输出

电压比外部供电电压大约

小 0.6V,最大电流驱动能

力的达到 500mA。

2.2.2 ADwin 的编程[11][12]

ADwin 系统虽然提供

了诸多输入、输出模块,

但输入模块如何去测量信

号以及测量后做何处理,

以及输出模块具体输出何

种信号,这都需要通过编

写程序,才能使用这些硬

件功能。

简单来说,ADwin 系

统的编程,大体上分为两

部分:一部分是程序的基

本语言,比如定义变量的

数据类型,进行数据运算,

建立循环结构等,这一部

分的语法和指令与 Basic 语言基本相同;另一部分,是直接和硬件相关的程序指

令,比如命令 CPU 停止工作一定的时间,获得 CPU 计数器当前的计数值,将

16 位整数写入模拟输出模块的某一个通道并且输出,等等。

在计算机与 ADwin 系统连接顺利后(这一步骤对于初次使用者很难搞清楚,

下一小节将会就此问题展开阐述)。ADwin 系统的编程,需要在制造商提供的

ADbasic4 应用程序中完成;ADbasic 首次安装后,需要在其 Settings\Directory 目

录下将 CPU 模块运行所必需的几个文件路径填写好,之后点击 Boot 按钮将系统

初始化,接着就可以编译、运行用户程序了。下面讲述程序编写中的几个重要概

念。

1) ADwin 的进程(Process):

ADwin 系统中,每一个运行的程序,都会占用一个进程;而系统提供给用

户共 10 个进程,也即最多可同时运行十个用户程序。每一个程序,在 CPU 中都

是被周期性的启动、执行。而程序启动的触发信号,既可以由内部 CPU 产生(Timer

图 2.2 8 路模拟输出模块

图 2.3 16 路晶体管数字输出模块

Page 16: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 9 -

Event),也可以由外部提供(External Event);但是,由外部触发的进程,最多只

能有一个。因此,每当出现一个内部触发或外部触发时,CPU 中的程序被执行

一次。外部触发出现的时间可能不确定,但是内部触发却是周期性的。

对于内部触发,两次启动的时间间隔,称为 Processdelay,其单位为 3.3ns,

也即 CPU 时钟脉冲的周期,比如说,Processdelay=333,则该程序每隔 1us 被执

行一次。每个进程皆可定义单独的 Processdelay。需要注意的是,如果程序单次

执行时间大于 Processdelay,那么在此期间出现的内部触发脉冲全部会被忽略;

并且,当程序单次执行时间接近 Processdelay 时,其 CPU 使用率会接近 100%,

长期如此使用可能会缩减机器寿命,因此我们在使用时,一般让 Processdelay 远

大于程序单次执行时间。

并且,ADwin 中的进程,还要区别优先级(Piority),共分为 10 档:最高为

10,最低为 1。当多进程同时运行时,CPU 在任何一个时刻,先处理优先级高的

进程,在此期间优先级低的进程会被停止,处理完后才会接着处理低优先级的进

程,因此需要谨慎同时使用多个进程。

ADwin 还允许用户在一个进程中去控制另一个进程的启动和停止。比如,

我们在测量冷原子的电磁感应透明(EIT)的曲线时,初期由人工改变 Control,

Probe 光的失谐,再运行原子装

载程序,获得透过原子团的

Probe 光子数,效率十分低下;

后来我们改用信号源频率自动

跳变,用频率跳变后信号源的输

出脉冲来触发 ADwin 中的某个

进程,然后在进程中再启动原子

装载程序的进程,这样就使 EIT

曲线所需要的上千次原子装载,

全部都自动化了,大大提高了实

验效率。

2) ADwin 的程序段

每一个 ADwin 的进程,基

本上由四个程序段组成,分别

为: LOWINT, INIT, EVENT,

FINISH。其中, LOWINIT 程序

段只执行一次,优先级为 1,由图 2.4 ADBasic 程序的一般结构

Page 17: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 10 -

于其可以会其他高优先级进程“让路”,因此适合用做大量的初始化工作,比如

定义变量类型等;INIT 程序段也只执行一次,优先级与进程相同,适合用作少

量的初始化处理;EVENT 程序段,是整个进程的核心,也是唯一必不可缺的部

分,被循环执行,直至结束,它可以由内部触发,或者由外部触发;FINISH 程

序段,只在 EVENT 程序段运行结束后执行一次,可以用来处理 EVENT 部分获

取的数据,或者重新初始化,等等,该程序段优先级为 1。需要注意的是,使用

中我们发现,当采用外部触发时,第一个触发信号并不会触发 EVENT 程序段,

而是从第二个触发信号之后,EVENT 程序段才会被外部触发。图 2.4 中所示为

ADBasic 程序的一般结构。

3) ADwin 程序中的全局变量、数组

ADwin 提供了诸多的全局变量和数组,其中 PAR_1…PAR_80 共 80 个 32

位的整型全局变量,FPAR_1…FPAR_80 共 80 个 32 位的浮点型全局变量,

DATA_1[][]…DATA…200[][]共 200 个一维或二维的全局数组,需要注意的是这

些数组的长度受到内存空间(对于我们的 ADwin 系统而言,内部数据存储空间为

768KB,外部存储空间为 256MB)的限制。这些变量或数组,在各个进程中均可

调用,因此使得不同进程之间的数据交换很方便。

4) 几个常用的硬件操作指令

P2_DAC(module, dac_no, value):使得地址为 module 的模拟输出模块上的

端口为 dac_no 的通道,输出值为 value 的电平。其中各个模块的地址,可以在

ADpro.exe 软件中设定或者显示;dac_no 一般为 1…4 或 1…8,value 范围为

0…65535(对应电平为-10V…+10V)。与之类似的还有 P2_WRITE_DAC 和

P2_START_DAC 两个指令,第一个是将数值写进模拟输出的寄存器中,第二个

指令运行后则将寄存器中的数值输出。为了方便多通道同时输出,还有 P2_DAC4

和 P2_DAC8 两个指令,与之前相同的是,也存在 P2_WRITE_DAC4 和

P2_WRITE_DAC8 等指令,利用它们可以将数值同时或先后写进若干个模拟输出

通道的寄存器中,再利用 P2_START_DAC 指令使其同时输出。

P2_DIGPROG(module, pattern): 当使用 32-bit I/O 模块时,由于各个通道

既可以用来输出数字信号,也可以输入数字信号,因此在使用这个模块时,需要

预先使用 P2_DIGPROG 这个命令来指明该模块上的哪些 bit 用来输出,哪些 bit

用来输入。其中 pattern 是一个二进制数值,只有它的最低 4 位有意义,每一位

对应于 I/O 模块上的 8 个通道,比如 pattern 的 bit 0 数值为 1,则 0…7 通道被设

置为输出,pattern 的 bit 1 数值为 0,则 8...15 通道被设置为输入;比如 pattern=

01111b,则 0…31 通道皆被设置成输出。P2_DIGPROG 对 I/O 模块的端口做了定

Page 18: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 11 -

义之后,才可以利用 I/O 模块来输入/输出数字信号;不过,对于 16 通道的晶体

管数字输出模块,不需要利用 P2_DIGPROG 来定义端口,即可立即使用。

P2_DIGOUT(module, output, value): 设定某个模块上单个通道的数字输

出值。对于 32-bit I/O 模块,output 可以是 0…31 中的某一个数值,而对于 16-bit

的晶体管输出模块, output 则是 0…15 之间的某一个数值;value 则只能为 0 和 1

了。为了同时输出更多 bit 的数字信号,还有 P2_DIGOUT_LONG 指令,它可以

将一个 32 位整数的各个 bit 在数字输出模块上对应的端口上输出,即 32 位整数

的 bit0 在端口 0 输出,bit1 在端口 1 输出,其余依此类推。对于数字模块,也可

以利用 P2_DIG_WRITE_LATCH 指令先将各个通道的数值写进锁存器中,然后

再用 P2_DIG_LATCH 指令将锁存器中的数值通通输出。

以上硬件指令,在ADwin公司提供的 Pro-SW_eng.pdf文档中均有详细介绍,

并且如果要予以调用,均需在 ADBasic 程序的开头调用 ADwinPro2.INC 文件。

2.2.3 建立 ADwin 与计算机之间的连接[13]

由于 ADwin 说明书中并没有写清楚如何建立 ADwin 与其他计算机的连接,

对于初次搭建这个连接的实验人员,这个问题会让人至少头疼一阵子,在数次请

教 ADwin 公司的工程师之后,我才顺利解决了这个问题,因此着实有必要在此

详细描述一番。如果不是要重新建立二者之连接,则读者可以跳过这一段。

首先,安装 ADwin 的所有驱动;然后,用一根网线将 ADwin 与计算机主机

连接起来,记录下计算机的 IP 地址和 subnet mask;打开 ADconfig.exe,选择

Configure AEI (ADwin Ethernet Interface),如果连接正确,则可以浏览看到 MAC

地址;然后将其 subnet mask 设定成与计算机主机一样,比如 255.255.255.0,之

后将 Host IP 地址的前三个字节设定成与计算机主机一样,但是最后一个字节需

要与主机不同。然后,在 ADconfig 中选择增加 TCP/IP,此时,Device NO.会默

认成 1,然后浏览选择 Host IP 地址。接着打开 ADPro.exe,在选择了正确的处理

器型号(对于我们的是T11)和Device NO.后,会跳出一个虚拟的ADwin机箱界面,

并且 LED 灯会闪动。这说明,计算机与 ADwin 已经建立其连接了。

再打开 ADbasic.exe,在 Options->Settings->Directory 一栏设定好系统文件的

路径后,即可以开始 ADwin 系统的编程了。先点击 Boot 按钮,则初始化系统和

参数,写完程序后 Compile,再点击开始键,即可运行程序了。

Page 19: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 12 -

2.3 原子装载时序控制主程序的设计

实验中原子装载需要产生多个通道的任意波形模拟、数字信号,且时间尺度

一般在 ms 以上,因此我们将信号输出的时间分辨率设定为 10us,也即每隔 10us,

各个通道的输出电平更新一次。对于单个通道,我们可以将其输出波形,按 10us

的时间单位离散化,存入一个数组之中,再在 ADwin 的 EVENT 程序段中依次

输出,则在时域上我们就获得了需要的信号波形;对于多个通道,则依此类推。

利用这些电平控制 AOM 晶体的 RF Driver,或者锁频电路的频率失谐,就可以

调节激光的强度、脉冲宽度、失谐频率等等参数;利用这些电平控制磁场电流的

大小、通断则可以获得不同强度的磁场,或者对磁场进行开关;利用数字信号触

发 CCD,则可以让 CCD 在设定的时间上准确的进行多次拍照,通过吸收成像的

方法来获得原子的密度、数量以及光学厚度等物理参数;等等。目前我们经常使

用的原子装载程序(V5.2)的用户界面,可见附录 1.1,其 ADwin 的源代码可参见

附录 1.2,而外部触发的原子装载程序(V5.3)的 LABVIEW 流程框图可参见附录

1.3(它删减了 V5.2 程序中的显示、数据传输检验等功能,因此获得了相当的简

化;与 V5.2 相比,V5.3 多了一个进程,用于实现外部控制)。

由于本章节主要是为了介绍时序控制的实现方法,以及方便后来人改写、升

级这些程序以满足实验的特殊用途,因此以下部分我将主要讲述实现原子装载的

主要构思和程序框架。实际上,在实验过程中,我还编写了基于 ADwin 的很多

专门用途的小程序,比如单个/多个通道的 TTL 信号发生程序,单个/多个通道的

图 2.5 实验中的一个典型时序步骤(本图由杨盛军绘制)

Page 20: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 13 -

模拟信号发生程序。通过大量测试发现,ADwin 的 TTL 信号(32-bit I/O 模块)

的频率,最快可以达到 10MHz,而模拟信号的频率,最快可以达到 1MHz,指标

虽不算高,但亦可满足实验室相当多设备的测试需要。这部分程序实际上是我学

习使用整个机器的路径,通过它们详细了解了 ADwin 各项具体功能和参数之后,

我才得以很快写完了功能很广泛的原子装载时序控制程序,以及灵活改编程序以

满足实验中的特殊需求。直至目前,我们在合肥的原子装载程序,仍有相当改进

空间,比如将信号数组从现在的由 LABVIEW 计算产生,改为由 DLL 通过 C 程

序产生,以提高数据运算速度;或者将信号数据存成文件,使得可以让特定实验

的参数单独存成文件,而非目前的将整个程序单独备份;等等。

2.3.1 数字/模拟任意波形信号的输出方法

假设我们想让 ADwin 某个模拟通道输出一个周期为 1ms,幅度为 5V 的正弦

波形,并且时间分辨率为 1us,一个简单的办法是我们可以建立一个长度为 1000

的数组,然后将数值 5*sin(i*2*pi/1000)赋给第 i 个单元(i=1…1000),之后通过

ADwin 的某个模拟通道每隔 1us 顺序输出数组中的一个单元,输出一千次后再返

回数组的起始端重新输出,则在示波器上就可以看到一个周期为 1ms,幅度为

5V 的信号了。具体到程序语言上,可以如此实现:

#Include ADwinPro2.Inc #DEFINE Module 6 #DEFINE DAC_NO 1 DIM DATA_1[1000] AS LONG DIM i AS LONG INIT:

FOR i=1 TO 1000 DATA_1[i]=(5*sin(i*2*pi/1000)+10)*65535/20 NEXT i

PAR_1=1 PAR_2=DATA_1[PAR_1] PAR_3=1

Processdelay=333 EVENT:

P2_DAC(Module,DAC_NO,PAR_2) INC(PAR_1) IF(PAR_1>1000)THEN PAR_1=1 INC(PAR_3) ENDIF IF(PAR_3>1000)THEN END ENDIF PAR_2=DATA_1[PAR_1]

Page 21: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 14 -

上述程序中 INIT 段里的 FOR 循环即是产生一个长度为 1000 的数组并且赋

值,而 Processdelay=333 则意味着 EVENT 程序段每隔 333*3.3=1us 执行一次;

EVENT 部分保证该段每次被执行,都输出信号数组中的一个新的单元,而每输

出一个完整的正弦波形后 PAR_3 都会增加一次,当输出完第 1000 个正弦波形后,

EVENT 程序结束。注意 INIT 程序段中将欲输出的电平加上 10 后乘以 65535 再

除以 20,是由于 ADwin 的 DAC 是将 0…65535 对应到-10V…+10V 的范围,因

此需要先将电平数值转换成 16 位整数后才能通过 DAC 输出。

对于多个通道的模拟信号输出,可以定义一个二维数组,每个通道的信号占

据数组中的一行,之后在 EVENT 中通过 START_DAC4 或 START_DAC8 同时输

出 4 路或 8 路的信号;对于数字信号,可以采用类似的方法输出。实际上对于数

字信号,由于在信号数组里通常是连续的一段里都是相同的数值(0 或 1),可以

设计更好的算法来产生,避免浪费 ADwin 有限的内存;而由于我们目前使用的

通道数(约 20 个)以及产生的信号时间(15 秒以内)需要的内存约为 150MB,ADwin

尚可接受,所以我们也将数字信号按照与模拟信号类似的方法写进数组中,使得

程序结构较为简单。

在多路信号的同步输出时,有一点需要注意,ADwin 提供的程序指令中可

以控制一个模拟输出模块上的 8 路同时输出,但是两个模块能否严格同时输出,

尚且是个问题;目前我们是在 EVENT 程序中先后命令若干个模块输出信号,原

理上并不是严格的同步输出,但是实验上没有发现因此带来什么问题。以后在系

统升级的时候,可以去针对性的去解决一下多个模块的同步问题。

2.3.2 在 LabVIEW 中调用 ADwin 库函数

实验中,我们总是先将若干个通道的信号数组准备好,再调用 ADwin 的某

个进程来专门负责输出信号;而如何将信号准备好,则有多种选择:既可以在

LABVIEW 中根据设定的参数产生信号数组,然后传给 ADwin,也可以将

LABVIEW 中设定的参数直接传给 ADwin,再由 ADwin 解算出信号数组。实验

发现,由 LABVIEW 解算信号数组,比用 ADwin 解算,速度要慢很多。但是后

者通常使程序结构变得复杂。由于目前由 LABVIEW 解算信号数组的时间我们尚

能接受(20 个通道 15 秒钟的信号,需要几十秒钟的解算时间),并且由 LABVIEW

解算使程序结构较为简单,因此目前我们选择使用该种方法。

在 LABVIEW 中,可以启动 ADwin 的某一进程、结束某一进程、设定

Processdelay、设定或者获取某个全部变量的数值、传递数组(二维数组被转换

成一维数组来传递)、命令输出某个模拟或数字信号,等等。附录 1.2 中是原子

Page 22: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 15 -

装载时序控制程序(V5.2)的 ADWin 源代码,其中进程 1 和进程 2 负责动态输出,

而进程 3 负责静态输出;对于动态输出,LABVIEW 中在信号数组的最后位置添

加一个标记,在数组传递指令执行结束后,由进程 2 反复检验信号数组最后位置

的标记是否存在,如果已经存在,则说明数组传递完毕,进程 2 自动结束;之后

在 LABVIEW 中在启动进程 1,开始输出信号数组。

2.3.3 LABVIEW 中多通道数字/模拟信号数组的产生

图 2.6 所示,每一个格子中的一路数字开关+一

路(或两路)模拟信号幅度设置,是多通道数字/模拟控

制程序界面的基本单元(完整界面参见附录 1.1)。如

此设计,是由于我们实验中每一路激光或磁场,都需

要进行幅度控制和开关控制。这样一个格子,我称之

为一个 action,它的时间在图中 8.50 这一行中设定

(单位为 ms),表示在 8.50ms 的时间内,模拟信号

由 Start 电平线性变化到 End 电平;当然,如果

Start=End,则输出的是静态电平。对于各个通道,

LABVIEW 具体解算多少个 action,由 Action No.的

总和决定;由于一个 action 在 LABVIEW 中是簇数

组(Cluster Array)的一个单元,因此可以简单的水平

拉伸簇数组以增加一列(各个通道相应的增加一个

action),然后在 Action No.一栏中增加相应列数即

可。

需要注意的是,在 ADwin 源代码(附录 1.2)中

预先定义了一个浮点数组和一个整型数组,每一个数

组的每一行对应一个输出通道,两个数组的行数和列数都已经确定。因此,目前

的程序中,虽然用户界面上簇数组的列数可以任意增加,但是产生的信号数组的

列数不能超过一百五十万,在 0.01ms 时间分辨率(程序中可以设定)下,各列总时

间不能超过 15 秒。如果希望输出的信号长度大于 15 秒,有两个办法:一个是增

大分辨时间,比如由 0.01ms 增大到 0.02ms,则可以使各个通道输出长达 30 秒的

信号;二是改变 ADWin 源代码,增加数组的列数,比如仍保持 0.01ms 的分辨时

间,但是让数组的列数增加到三百万,同时改变 LABVIEW 程序中数组的列数,

则可使各个通道输出长达 30 秒的信号,但是这里需要保证整个信号数组占用的

ADWin 的内存小于 256MB。实际上,目前我们实验中装载原子所需要的信号时

图 2.6 多通道数字/模拟时

序控制界面的基本单元

Page 23: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 16 -

间一般都不会超过几秒钟。

2.3.4 在实验中的应用

图 2.7,2.8 所示,为我们利用 ADwin 时序控制系统制备的冷原子团和光偶

极阱囚禁的冷原子图像。

图 2.8 利用光偶极阱囚禁住的冷原子团

图 2.7 利用磁光阱获得的冷原子团

Page 24: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 17 -

2.4 基于 FPGA 的快信号发生程序设计

在我们的实验中,以上介绍的

ADwin 系统一般用于 us 以上的时序控

制,可以满足 MOT(Magneto-Optical

Trapping)装载原子过程的需求。然而目

前实验中为了产生“单光子”脉冲,需

要产生几十 ns 到几百 ns 的 TTL 脉冲送

给 RF 驱动电路的开关,以产生时间大致

相同的 RF 脉冲,这个 RF 脉冲加到 AOM

晶体上,则可以概率性的产生光子;由

于产生光子的几率很低,故可以认为出

现的都是单个光子。除此之外,实验中

为了检验原子的存储时间,也需要具有 ns 量级时间分辨率的数字信号(模拟信

号很难做到这个水平)来控制相关设备,比如单光子探测器以及下一章中将会主

要介绍的 P7888。

目前的实验中,我们采用了一个主频为100MHz,具有20路输入输出的FPGA

(如图 2.9 所示)来负责产生 10ns 量级的数字信号,它最短可以输出宽度为 10ns

的 TTL 脉冲。该 FPGA 来自德国海德堡大学的 Electronic Workshop,编号为

DL701,他们提供了完整的 LABVIEW 库函数给用户使用。但是该 FPGA 库函数

的说明皆为德语撰写,且没有提供基本的技术文档,使得在国内学习、使用起来

相当费劲,因此我们着实有必要开发自己实验专用的 FPGA,摆脱这个技术依赖

以使以后的实验获得更大的自由度。

目前,我们研究部(微尺度国家实验室量子物理与量子信息研究部)的多光

子实验组,也在频繁使用这种 FPGA,不过他们是用它来进行多光子信号的符合

测量,与我们冷原子实验组的用途尚有区别。此外,由于我们目前的量子存储实

验中使用 FPGA 的功能比较单一(2.4.2 节),并且该 FPGA 使用说明的资料欠缺,

我并没有将这款 FPGA 的功能弄得很透彻,只是按照我们的需求了解它的部分功

能。使用该 FPGA,需要先安装好 LABVIEW 的硬件驱动,然后将其硬件驱动放

入特定位置,方可在 LABVIEW 中调用其用户库。

图 2.9 FPGA 实物图

Page 25: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 18 -

图 2.10 DL701 的几个基本库函数

2.4.1 DL701 的几个基本函数

图 2.10 所示为目前我们实验中为了产生多个通道数字脉冲所需使用的几个

库函数。第一列中 AND, OR, NOT 为逻辑运算,而 CLOCK 则可以在指定 Module、

频率之后,产生相应的时钟信号。

第二列中 BOOL/SIGNAL 将 FPGA

内部的逻辑值转换成数字信号,然

后可以通过 TTL I/O 函数将信号输

出,而通过 TTL I/O 函数输入的信

号,则需要经过 SIGNAL/BOOL 函

数转换成 FPGA 的内部逻辑值,才

可 以 参 与 运 算 。 第 二 列 中 的

GateGenerator 库函数可以用于产

生 TTL 脉冲,它使 FPGA 在收到触

发后,延迟一段时间(DELAY*10ns)

再产生一个宽度为 Duration*10ns

的 TTL 脉冲,其中 DELAY 和

DURATION 皆为 16 位整数,所以

延 迟 和 脉 冲 宽 度 最 大 只 能 为

0.65us。PULSER 也用于产生 TTL

脉冲,但是用法不同,它的 Pulses

端口需要提供一个一维数组,数组

中的第一个单元用作 DELAY 参数,第二个单元用作脉冲的 DURATION 参数,

而 DELAY 和 DURATION 的时间单位均为接入的时钟脉冲的周期,并且 DELAY

和 DURATION 都是 32 位的整型,所以它可以产生时间长达数十秒的脉冲。此外,

DL701 还提供了其他一些库函数,比如计数器、TDC(Time-Digital Conversion)、

ADC 和 DAC 等,但是由于我们目前的实验室暂时用不到这些功能,我就没有再

去验证它们的使用方法了。

需要注意的是,每一个 DL701,其内部 FPGA 包含的逻辑运算、脉冲发生、

时钟等模块的数量都有限(一般为几个,具体需要测试),因此在程序中不能过

多使用,否则程序无法正常工作。

Page 26: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 19 -

2.4.2 利用 DL701 产生多通道多脉冲的方法[14]

目前的实验中,我们主要让 DL701 在收到 ADwin 的触发之后,重复产生多

个通道的数字脉冲,重复时间和重复次数在程序中可以设定。图 2.11 所示之程

序,为目前实验中用来控制单光子探测器、P7888 飞行时间分析仪、以及 AOM

的射频开关等器件,其 LABVIEW 框图请参见附录 1.4.

利用图 2.9 所示之程序,可以实现如下功能:当 DL701 的端口 20 收到一个

上升沿触发后,它产生若干个周期性的脉冲信号,其周期等于图中的 Period,脉

冲重复次数等于 Cycles;具体到每一个周期,对于通道 4 至通道 8,在延迟一段

时间(Delay1)后,产生一个宽度等于 Duration1 的 TTL 脉冲,对于通道 1 至通

道 3,则可以在每个周期内产生两个 TTL 脉冲,这可以用于产生两个相邻的光脉

冲,用于双光子的 EIT 存储等实验。此外,在每个周期的开始,通道 18 输出一

个时钟脉冲,其脉冲宽度等于 Period 的一半;利用此信号去触发 P7888,使之记

录该周期内各路单光子探测器出现的信号,由于 P7888 需要下降沿触发,因此需

要现将通道 18 输出的信号反向,才能提供给 P7888. 并且,由于在原子团 EIT

曲线的扫描过程中,我们使 Agilent 信号源的频率自动扫描,而它每次频率跳变、

锁定之后,输出一个下降沿信号,为了用这个下降沿信号驱动 ADwin 开始装载

原子,我们将它输入 DL701 的通道 16,然后将它反向后从通道 17 输出,再接到

ADwin 的 EVENT IN 端口。

为了实现上面的周期脉冲信号,我们利用 CLOCK.vi 产生一个周期等于

图 2.11 FPGA 多通道数字脉冲程序界面( )

Page 27: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 2 章 时序信号控制系统

- 20 -

Period 的时钟信号,在被触发之后,FPGA 利用 PULSER.vi 产生一个宽度等于

Cycles*Period 的方波,但是由于电子学延迟,它的上升沿会比时钟的上升沿落后

几纳秒;然后我们将时钟信号反向,并且与 PULSER 出来的方波做与运算,则

会产生个数等于 Cycles 的方波,利用这个方波的上升沿去触发 GATE.vi,就可以

产生实验需要的周期脉冲了。图 2.12 即为这个过程,这里,要产生 10 个脉冲,

并且 Delay 约等于 Period 的一半,Duration 约等于 Period 的四分之一。

2.4.2 在实验中的应用

实验中,我们利用 FPGA 产生的几十 ns 至几 us 的 TTL 脉冲,快速开关 AOM

晶体的射频信号,进而产生对应时间宽度的光脉冲,如图 2.13 所示。

图 2.13 利用FPGA的TTL脉冲形成的光脉冲统计图样

图 2.12 周期 TTL 脉冲产生的时序步骤

Page 28: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 21 -

第 3 章 单光子的实时符合测量

3.1 P7888 功能简介及数据分析方法[15][16]

3.1.1 P7888 基本功能

P7888 是德国 FAST ComTech 公司提供的一款 0.5/1 GHz 时间飞行定标 PCI

板卡(图 3.1)。它的基本功能是:在收到一个触发信号(START 端口)后,扫描一

段时间内,4 路通道(或 2 路通道,均称为 STOP 端口)内各个事件相对该触发

信号的到达时间;扫描的时间精度(相邻两次扫描的时间间隔),在 4 通道(2 通

道)输入模式下,最小为 2ns(1 ns);扫描结束后,如果再接收到一个 START 触发

信号,则再次进行扫描;扫描期间如有 START 触发信号到达,则被忽略。其中,

每次扫描的时间,可以在软件中设定;START 端口和 STOP 端口的输入电平均

为下降沿有效,阈值电平也可以在软件中设定,范围为-3V 至+3V。在本实验中,

P7888被用于测量EIT曲线、纠缠光子对的符合计数以及单光子的存储寿命等等。

Fast ComTech 公司为 P7888 提供了一款名为 MCDWIN 的操作软件(图 3.2),

在该软件中可以设定 P7888 工作所需要的所有参数,P7888 采集到的数据既可以

在此软件中实时显示,也可以选择将数据以多种形式写进文件中。在 MCDWIN

软件中,各次扫描得到的事件时间谱被相加在一起,其中以 START 端口触发信

号的到达时间为时间零点,并且以大约 2 秒钟每次的频率刷新显示;MCDWIN

中显示的时间谱数据,均可以 ASCII 或 Binary 格式写入文件中。

P7888 更加灵活的功能是,可以将 STOP 端口的各个事件的到达时间(相对

START 端口的触发信号),以 ASCII 或 Binary 格式,全部写入文件中,称为 List

图 3.1 P7888 实物图

Page 29: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 22 -

文件。由于这种文件我们使用的最为频繁,也是理解后续数据分析算法和程序的

基础,稍后将做详细介绍。

除了可以在 MCDWIN 软件中设定 P7888 正常工作所需的所有参数外,Fast

ComTech 公司还提供了通过 DDE(Dynamic Data Exchange)和 DLL(Dynamic Link

Library)两种方式控制 P7888,在两种方法里,均可以使用 P7888 控制语言里的

所有指令设定其工作参数;但是 DDE 方式运行速度远小于 DLL 方式,于是我们

选择在 LABVIEW 中调用 P7888 DLL 方式的子程序,用以在实验测量程序中设

定 P7888 工作所需的基本参数。

3.1.2 LIST 文件格式介绍与通用数据分析算法

在实际实验中,我们一般需要 P7888 连续扫描多达千万次,扫描时间范围

(sweep range)一般在 500ns 到 2000ns 之间,并且需要分辨出单光子信号出现在具

体哪一次扫描内,如此才能将同一次扫描期间各个通道的单光子信号利用软件进

图 3.2 MCDWIN 主界面

Page 30: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 23 -

图 3.3 List 文件开头示例

行符合(单光子探测器的输出端接到 P7888 的 STOP 输入端上)。List 文件正好

就可以满足我们的需要,但是需要自己编写程序分析文件中的数据。

List 文件后缀为.lst,文件开头 35 行或 36 行(图

3.3)包含了 ASCII 格式的报告及设置参数等信息,其

字节数与行数是不确定的。P7888 设置的参数不同,

采集到的数据不同,开头的行数与字节数皆会变化;

其结尾标志为”[DATA]”字符串,实验数据由下一行开

始。

P7888 每次开始扫描或者接收到一个事件,均会

向文件中写入一个 32 位整数。在四通道输入模式,

2ns 时间单位,及二进制格式下(实验中均采用此设

置),对于 STOP 端口的事件,该整数的第 30 位与第

31 位,表示该事件发生在哪个端口:00 表示通道 1, 01

表示通道 2, 10 表示通道 3, 11 表示通道 4;第 0 位至

第 29 位的数值等于事件到达时间(以 2ns 为单位)减

去 32。在此设置下,P7888 接收到一个 START 触发

信号时,也会向文件中写入一个第 30 位与第 31 位均

为 1,其余位为 0 的 32 位整数标记(称其为 Start

Marker);在文件中其按照通常的 Intel Word 格式存放,

即 00 00 00 C0,STOP 端口事件的 32 位整数在文件中

存放形式与此相同。文件中两个标记之间的数据,均

属于同一次扫描,可以进行符合等运算。

与二进制文件格式稍有不同的是,当格式选择为 ASCII 时,文件中将这 32

位二进制数理解为补码,比如,开始标记 C0 00 00 00H 被显示为-1073741824;

并且,每个数占据单独一行。ASCII 格式文件的优势是,人打开文件后就可以直

接看到各个数据,而二进制格式文件却不行。但是,由于使用 ASCII 格式的整数

时,计算机需要先将文本中的字符串转换成对应的二进制数值,然后再参与运算,

而二进制文件中的数据读取后可以立即使用,因此在大数据量情况下,ASCII 文

件分析起来的耗时远大于二进制文件的分析时间。实验中,我们将所有的 List

文件都设置成二进制格式,再做在线或离线分析,以提高分析速度,并且节约硬

盘空间。

在 P7888 采集的 List 文件中,无论是二进制格式,还是文本格式,数据存储

方式可以归纳为:“Start Marker 1, Event 1, …, Start Marker 2, Event 1, Event 2, …,

Page 31: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 24 -

Start Marker 3, …, Start Marker n, Event 1,…, Event m”。其中,Start Marker 的数目

是确定的,就是在软件中设定的接受触发的次数(sweep preset);各个 Start Marker

之后 Event 的数目不确定,实验测量信息就在这些 Start Marker 之间。

此外,P7888 也可以设置成向 List 文件中不写入 Start Marker。海德堡大学

量子光学实验室曾经就是如此设置的,这是因为他们的单光子探测器(SPD, Sing

Photon Detector)接收到触发信号开始工作之后,总会确定性的产生一个寄生脉冲

(after pulse);由于用 FPGA 在确定的时间分别去触发 P7888 与 SPD,P7888 每次

开始扫描都会在确定的时间记录到单光子探测器的寄生脉冲,在文件中两个寄生

脉冲之间的数据,即属于同一个扫描区间,可以用来做符合或其他运算;不写入

Start Marker 则可以减小文件的数据量。然而,我们在科大合肥的实验室使用的

SPD 却不具备该功能,它们每次接受到触发信号开始工作时,只是概率性的产生

一个寄生脉冲,因此我们必须使用 Start Marker 来标记各个扫描区间。在实际实

验中,我们发现用 Start Marker 还有其他明显的好处,详见 3.4.3 数据压缩算法

一节。

下面是我设计的 List 文件数据分析的通用算法:

按照上述算法编写的分析程序,需要在运行前人为的向 List 文件的最后位置

添加一个 Start Marker,否则会将最后一次扫描的数据丢失;或者,将 WHILE 判

据修改为!EOF(**.lst),即不是所分析 List 文件的末尾,再在 WHILE 结构之后添

加一个 Analyze(Sweepspctrum)程序段。此两种方法皆可保证数据不丢失。

Analyze(Sweepspectrum)程序段可以理解为,对单次扫描得到的各路数据的处理,

比如,计算各个通道的 ROI(region of interest)区间内的总计数,或者是对各通道

ROI 区间进行符合,等等。

StartCount=0; %counter of analyzed sweeps Index=**; %** is the offset position of data in List file SweepSpectrum[4][SweepRange]=0; %Event array of 4 Channels got in one sweep WHILE(StartCount<=SweepPreset) Eventdata=Readfile(**.lst, index) %**.lst is the path of List file Index+=1; %Increase Index by one IF(Eventdata==Startmarker) Analyze(Sweepspectrum) %The analysis of data in each sweep SweepSpectrum[…][…]=0 %Clear Sweep Spectrum StartCount+=1 %Increase StartCount by one ELSEIF Channel=ChannelAnalyze(Eventdata) %Get the channel of this event Time=TimeAnalyze(Eventdata) %Get the time of this event SweepSpectrum[Channel][Time]+=1 %Add one in the corresponding position ENDOFIF ENDOFWHILE

Page 32: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 25 -

图 3.4 实际测量得到的 EIT 曲线

基于此算法(或者稍加修改),当前我们实验中需要的对 List 文件的所有分

析皆可准确快速进行。

3.1.3 在 LabVIEW 中以 DLL 方式调用 C 程序[14]

在原子的光存储实验中,由于使用“单光子”脉冲(每个脉冲中含有光子的

几率非常低,使得可以认为真实出现的光脉冲里只含有一个光子,同时意味着很

多脉冲里没有光子),为了提高信噪比,需要产生多达千万次的光脉冲来反复写

入、读出,以测得所需物理量。这样就使得 P7888 采集的数据量非常大。在我们

最近窄带纠缠源 EIT 存储实验中,一次实验常会产生几百兆大小的 List 文件,

LabVIEW 程序面对如此大批量数据时,分析耗时巨大;而使用 C 程序分析如此

大的文件则比较轻松。并且实验测量的操控程序均用 LabVIEW 编写,因此就需

要在LabVIEW中调用C程序来分析文件,这可以通过DLL(Dynamic Link Library)

方式来实现。在德国海德堡大学陈宇翱博士的帮助下,我得以很快学会此方法,

并且运用于后续大部分实验数据分析程序中,得以极大提高实验数据处理效率。

3.2 EIT 曲线的测量方法

我们实验测得的典型 EIT

曲线如图 3.4 所示。通过测得的

原始数据,可以计算出原子团的

EIT 线 宽 和 光 学 厚 度 (OD,

Optical Depth),由此可以优化实

验参数,以使冷原子存储器与窄

带纠缠光源之间达到最优的匹

配。

EIT 曲线的获得,需要在

Control 光与 Probe 光之间每一

个频率失谐值上,测量穿透原子

团的 Probe 光强;将不同失谐频

率下得到的 Probe 光强画在一起,就是一个 EIT 曲线。

由于我们需要将单个光子进行EIT存储,故也要直接观察单光子的EIT曲线,

这就需要使用 SPD 来测量透过原子团的单光子,然后统计单光子数;观察经典

Page 33: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 26 -

光在热原子中的 EIT 过程,则可以调节 Control 光和 Probe 光的频率失谐,然后

用光电探测器直接观察 Probe 光的光强变化。

3.2.1 EIT 曲线测量的时序简介

图 3.5 所示,为我们目前实验的一个典型时序过程。实际实验中,我们使用

一台 Agilent 信号源来控制 Control 光与 Probe 光之间的频率失谐,使其以

frequency step 的方式从负失谐扫描到正失谐。Agilent 信号源在频率跳变后,需

要几 ms 来锁定,锁定完成后输出一个下降沿脉冲,该脉冲经过 FPGA 反向后触

发 ADwin 原子装载主程序;ADwin 主程序利用 10ms 以上的时间将原子装载完

毕,之后触发 FPGA;FPGA 开始工作后,在每个工作周期内(一般在 1us 左右),

发送两个 TTL 脉冲给两个 AOM 晶体射频驱动的开关,以产生 Control、Probe

光脉冲,并且启动 SPD(图 3.5 中的 Gate)与 P7888,P7888 的扫描先于 SPD 开始,

迟于 SPD 结束,以记录 SPD 工作期间的所有信号;FPGA 被触发后的工作周期

数,可以在软件中设定。此轮流程结束后,ADwin 原子装载主程序自动停止,

并且将各路激光、磁场参数初始化在收集原子的状态,以尽可能提高原子抓取时

间。之后,Agilent 信号源再次改变失谐频率,锁定后输出的下降沿脉冲触发原

子装载主程序,如此往复。在 ADwin 原子装载程序中设定原子装载次数等于

Agilent 频率跳变步数,则扫频结束后,装载程序收到额定的触发数,自动停止;

Agilent 频率跳变的时间间隔要大于原子装载与探测的总时间。这种自动化的办

图 3.5 测量 EIT 曲线与光学厚度的时序

Page 34: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 27 -

法,极大减少了单次测量时间,提高了实验效率。

简而言之即为:在每个失谐频率点上,装载一次原子,重复的将 Probe、Control

光脉冲同时打向原子团,并且记录每次穿过原子团到达探测器的 Probe 光子数;

数据采集完成后,在 LabVIEW 中调用 DLL 处理数据并且显示、输出文件等等。

3.2.2 EIT 曲线数据采集程序

EIT 曲线测量程序的用户界面如图 3.6 所示,其 LabVIEW 框图见附录二。

它有两种工作模式:1)Measure & Analyze 模式下,设定好 P7888 的工作参数、

存储文件路径与名称,运行程序可以启动 P7888,之后在上图中实时显示 P7888

STOP1 端口的总时间谱,数据采集完毕后,计算出的 EIT 曲线会显示在下图中,

并且写入文件。2)Analyze with a file 模式下,可以直接分析 P7888 之前采集到

的 List 文件,之后将分析得到的 EIT 曲线在下图中显示,并且写入文件。

程序中的 Sweep Range 是 START 端口每次收到触发信号后,P7888 扫描的

时间长度;Detection Times 是每次原子装载完毕后(单个失谐频率点上)的探测

图 3.6 EIT 曲线测量程序界面

Page 35: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 28 -

次数,而 Loading Times 就是原子装载的总次数(失谐频率的扫描步数),二者相

乘后作为 P7888 的 Sweep Preset,则在整个实验结束后,P7888 也会自动停止。

此时的数据分析很简单,我们只需要在 List 文件中从开头数 Start Marker 出

现的次数,当其次数等于 Detection Times+1 时,则头尾两个 Start Marker 之间的

数据即属于同一个频率点;统计这些数据中出现在 STOP1 端口 ROI 区间内的事

件总数,则为该频率点上,穿过原子团到达 SPD 的光子数。其详细 C++代码请

见附录三,使用的基本都是 C 语言语法。将该 C++程序生成 DLL 后在 LabVIEW

中加以调用,并保存为子程序,然后在图 3.6 所示程序中加以调用。

3.2.3 利用 EIT 存储单光子脉冲的实验结果

3.3 单光子的实时符合测量

在我们的窄带纠缠光子 EIT 存储实验中(1.4 节),冷原子实验室装载完原子

后,由 FPGA 发送一个 TTL 脉冲给隔壁窄带实验室,产生一个 Pump 光脉冲送

给 PPKDP 晶体;PPKDP 晶体产生一对极化纠缠光子,其中一个光子在本地进行

极化测量,另一个光子送到原子实验室进行存储,使得光子极化-光子极化纠缠

态变为光子极化-原子空间模式纠缠;一段时间后(100ns-1us 量级),将存储光

子读取出来,再进行极化测量。由于探测器本底与环境中光噪声的影响,需要对

几路探测器的信号进行符合以获得真实的从原子中读出的纠缠光子数。实际上,

每个 Pump 光脉冲只能使 PPKDP 概率性的产生一对纠缠光子,为了提高信噪比,

图 3.7 EIT 单光子存储的实验测量结果(此图由金贤敏博士绘制)

Page 36: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 29 -

就需要 FPGA 重复发送多个 TTL 脉冲给窄带实验室,再重复如上过程。而每次

原子装载后的寿命有限,于是又限制了单次装载后的存储-读取次数,这样我们

只能在同一实验条件下,重复装载原子。

与扫描 EIT 曲线的时序过程类似,FPGA 的每个工作周期里,先触发 P7888

开始扫描,然后开启四路探测器,再发送 TTL 脉冲给窄带实验室的 Pump 激光;

在单光子从原子中读出后,再关闭探测器;P7888 在设定的扫描时间(当然大于

探测器的工作时间)结束后,随即结束工作。在 FPGA 的下一个工作周期里,再

重复如上过程。

上述过程看起来有点复杂,可是借助时序控制系统,以上步骤均可自动进行。

在我们之前的实验中,使用的符合测量程序,如图 3.7 所示(其框图请见附

录 3.1)。它有两种运行模式:1)测量:按照设定的参数,启动 P7888,并且实

时分析 P7888 采集到的 List 文件。2)分析:仅仅离线分析 List 文件。它还有两

种显示模式:2)非触发显示:将 List 文件中的事件按通道、时间叠加在一起,

构成各个通道的总时间谱,直接显示出来。2)触发显示:此模式下,选择一个

通道作为 Master,则在分析单次扫描数据时,判断该通道的 ROI 区间上的计数

是否大于零,如果大于零,就将这次扫描的数据添加到各个通道的显示图上,否

则,不予显示;这样可以在显示图上滤除其他通道的噪声,方便直接观察。

图 3.7 多通道实时符合测量程序界面

Page 37: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 30 -

3.3.1 实时符合测量程序的结构与算法

实际实验中,由于获得单个实验参数(比如纠缠光子的极化角度)下的存储

效率,需要上千万的存储-读取来获得明显的计数和较好的信噪比,每次数据采

集实验需要几十分钟;而这种长时间的数据采集又需要频繁进行。因此为了提高

实验效率,我们经过一段时间的努力,最终实现了实时分析 P7888 采集到的实验

数据,这就使得我们可以尽早判断实验中的子系统(比如,PPKDP 晶体温度漂

移、激光失锁、光路不正确,等等)是否出现问题。

实时分析 List 文件,其实只需要一点小窍门,并且使程序编译正确,就可以

正常工作了。其基本思想是:实验数据采集过程中,LabVIEW 分析程序不断调

用 DLL 去打开数据文件,然后查看文件末尾在内存中的地址,如果该地址比上

一次打开时文件末尾地址大,则有新的数据到来,马上进行分析。这一步在 C

语言中,用几个文件指针函数即可。其次,如果有新的数据到来,则将其读入数

组中,按照与 3.2.3 节基本相同的算法进行分析。分析结束后,将结果及新的文

件末尾地址返回给 LabVIEW 程序。最后,如果所分析的 Start Marker 总数等于

图 3.7 中的 Loading Times* Detection Times,这说明数据已经采集完毕了。详细

的 DLL 程序代码请见附件 3.2。图 3.8 所示为符合测量 LABView 程序的结构。

图 3.8 多通道实时符合测量程序结构

参数初始化 设定 P7888 工作

参数并启动

调用 DLL 处理

List 文件

While 循环,直到实验测量结束

等待 P7888开始工作

扫描次数、

文件名与地

址、ROI 区

间、文件中

数据偏置位

置等参数 获得单通道 ROI 区间计数、

各通道 ROI 区间符合、扫描

时间谱等数据,并且显示;

获得新的数据偏置位置

将 时 间 谱 数

据、单通道计

数、多通道计

数等存入文件

实验参数清空

Page 38: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 3 章 单光子的实时符合测量

- 31 -

3.3.2 数据压缩算法

虽然上节中的程序原理上已经可以解决目前我们实验中所需要的符合测量

等问题,但是事实上,由于实验系统的不稳定性,要测到一个好数据往往需要重

复多次实验,于是离线多次分析采集到的较好的数据,就成为必须的选择。然而,

由于我们单次实验采集到的文件经常达到百兆以上,此时即使是在 LabVIEW 中

调用 DLL 来处理数据,也显得颇为吃力,处理一遍实验数据,所耗时间几乎与

实际实验耗时相同。于是我们被迫想办法缩短文件分析时间,以提高实验效率。

在用 C 程序将文件中的各个 32 位整数读出显示在屏幕上时,我发现大部分

时间显示的都只是 Start Marker,而鲜见其他数值。开始我设想能否让 P7888 只

在单光子探测器探测到光子之后再开始扫描,以减少 Start Marker 出现的次数。

之后再一想,这个思路不太现实。在和金贤敏博士一起讨论的过程中,我们设想

可以在离线分析文件之前,压缩一下文件,将其中没有记录到事件信息的扫描的

Start Marker 删除,这样应该可以减少数据量。随即一试,发现果然可以相当可

观的压缩文件数据量,压缩后的文件甚至只有源文件 1/5 那么大;并且压缩数据

只用一两分钟即可。这样,由于压缩后的文件数据存储格式与源文件相同,调用

上节中的程序仍可以直接分析,并且也只要一两分钟即可计算完。

该算法的基本思想就是:计算两个 Start Marker 之间的事件数目,如果为 0,

则将上一个 Start Marker 删除掉,否则,原样保留。其 DLL 的源程序代码请见附

录 3.3

Page 39: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 32 -

第 4 章 基于 PID 算法的温度控制

4.1 实验需求

在实际物理实验中,有很多物理参数有明显的温度属性。比如,对于 AlGaAs

半导体激光管而言,典型的温调率约为-20 至-30GHz/℃,电调率约为-3 至

-7GHz/mA[17]。而铷原子激光冷却实验中需要将激光频率锁定到铷原子的 D1 或者

D2 超精细能级跃迁线上,并且铷原子 D1 和 D2 线的自然线宽仅仅约为 6MHz,

而常用外延腔半导体激光器频率的无跳模连续调节范围仅为 4~8GHz[18]。因此,

为了使激光频率可以锁定在铷原子超精细能级跃迁线上,就需要使激光器的温度

和电流都极为稳定,使激光器输出激光的不跳模,进而才能利用压电陶瓷反馈控

制外腔腔长和光栅衍射角度,使得激光频率可以较长时间内锁定在铷原子超精细

跃迁线上[18]。

而目前半导体激光器的温度和电流的控制一般分开独立进行,对外延腔半导

体激光器而言,温度控制可以使其腔的机械结构变得更加稳定,进而让激光可以

比较稳定的工作在一个模式上[17],[27],[31]。目前的实验中,我们需要使激光管的温

度稳定在 mK 量级(工作在 25℃左右),使其电流噪声小于 1 微安(工作电流在

100mA 左右),两者皆为 10ppm(part per million)量级。

此外,我们实验中的 Fabry-Perot 滤波腔、PPKTP 晶体,也都需要 mK 或 10mK

量级的温度稳定度。目前商用的激光器驱动设备,由于其参数、功能、构造都已

确定,使得我们不便于改造以配合特定的实验需求;并且今后的量子存储装备如

果具有实际用途,必定需要进一步的集成化,而目前我们所做之技术储备,即可

为今后开发新型的实验系统打下坚实的基础。

4.2 控温原理简介

类似于任何一个反馈回路,温度的反馈控制也需要三个组成部分:温度传感

器、误差信号的处理、加热或制冷器件。在反馈回路中,由温度传感器采集到受

控物体当前的温度,再和设定值比较,获得误差信号;将误差信号进行运算后,

驱动加热/制冷器件,使得受控物体的温度收敛到设定值上来。下面先介绍常用

的温度传感器和加热-制冷器件 TEC(Thermoelectric Cooler),之后再介绍如何进

Page 40: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 33 -

行误差信号的处理。

4.2.1 温度传感器的简介与比较[21],[22]

目前常用的温度传感器有四种:热电偶(Thermocouple),RTD(Resistance

Temperature Detector),热敏电阻(Thermistor),IC 传感器。下图 4.1 中是四种温

度传感器优缺点的比较。图 4.2 所示为热电偶、RTD、热敏电阻三者输出信号的

幅度比较。

综合比较,虽然 Thermistor 的温度测量范围相对较小(一般为-90℃~130℃),

但是完全涵盖了我们实验中设备的正常工作温度范围,并且其电阻值对温度非常

敏感,使得对温度探测的分辨率很高。比如负温度系数热敏电阻(NTC)在室温下

阻值变化范围在 10O 至 1000000 欧姆,温度系数-2%至-6.5%。故而利用 NTC 可以

图 4.1 四种温度传感器的优缺点比较

Page 41: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 34 -

很容易的探测到 mK 量级的温度变化

(对于常用的温度系数约为 4%的室温

下 10K 的 NTC,0.5 欧姆即约对应于

1mK),实际半导体激光器控温时的温度

传感器一般都采用 NTC。描述 NTC 电阻

-温度强烈非线性关系的方程叫

Steinhart-Hart 方程,部分 NTC 产家

(如 Sensor Scientific)提供各型号

NTC 的 Steinhart-Hart 方程的详细参

数,因而可以由 NTC 的电阻值比较准确

的推算出物体的温度。

4.2.2 Thermoelectric Cooler(TEC)简介[23],[24]

TEC 利用的是 Peltier 效应,即当有

电流流经两种不同材料的接触处时,亦

会有热量流经该处,使得其中一方被加

热,另外一方被致冷。单位时间内从 A

吸收的热量(亦为单位时间内向B处释放

的热量)为

( )AB B AQ I I

其中 ,B A 分为为两种材料的 Peltier 系

数,表征在给定材料中单位载流子携带

的热量。由于电流的连续性,流经两种

材料的载流子数目相同,故而在接触面

上热流必定不连续,使得必然要从一方

吸收热量,向另外一方释放热量。P 型

半导体的 Peltier 系数一般为正,N 型半导体的 Peltier 系数一般为负,常用的 TEC

中将N型和P型半导体交叉放置,然后上下表面放置其他的材料,该材料的Peltier

系数比 N 型半导体的要大,比 P 型半导体的要小。当有电流由 P 型半导体经过

表面材料流入 N 型半导体时,表面材料被加热;反之,表面材料被致冷。

实际用途中,加热有更多的廉价实现方法,因此 TEC 常被用作致冷;并且,

如果既需要加热又需要致冷,TEC 则是一个不错的选择。比如我们选用的杭州

大和热磁公司生产的 TEC,在其上下表面温差为 0℃时,当通以 8 安培电流时,

图 4.2 三种温度传感器的信号幅度比较

图 4.3 常用 TEC 实物图(16mm*16mm)

图 4.4 常用 TEC 结构示意图

Page 42: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 35 -

其热泵浦功率可高达 80 瓦特;当其上下表面温差增大后,对于相同的电流,其

热泵浦功率下降,比如在上下表面温差为 70℃时,再通以 8 安培电流,其热泵

浦功率仅仅约为 3 瓦特[25]。因此如果温度控制中需要让受控物体温度远离环境温

度,最好选用多级 TEC 来控温,以使单个 TEC 有足够的热功率,使受控物体的

温度更加稳定。

4.2.3 PID 算法简介[26]

为了利用 TEC 来控制物体的温度,有多种多样的方法。比如可以使用 Analog

Devices 公司的 ADN8831 或者 Wavelength Electronics 公司的 WTC3243 等芯片直

接驱动 TEC,它们仅仅需要少量的外部元件,因此使用起来非常方便,可以满

足控温指标要求较低的应用。它们多是采用了 PI 或者 PID 的控制算法。

PID 是 Proportional-Integral-Derivative 的简称,图 4.5 所示为利用该算法的控

制过程。从时间上看,P 确定了系统对当前误差的反应,I 确定了系统根据过去

的误差来做的反应,D 确定的是系统对未来预期出现的误差作出的反应。在对控

制过程不是特别清楚的情况下,PID 控制是最优的方法;但是,为了达到最优的

控制效果,P、I、D 三个参数要根据系统特性来针对性的调节。为了实现 PID 的

控制,可以采用模拟电路进行比例、积分、微分运算[16],也可以将误差信号经模

数转换后在 FPGA 内进行比例、积分、微分的运算[18]。相对模拟电路,数字电

路的一个缺点是 ADC 的比特位数限制了误差信号的分辨率,使得数字电路对于

误差的反应可能没有模拟电路那么敏感;但是,数字式 PID 运算的一个明显优势

是它的温度漂移可以忽略不计,而模拟电路中由于电阻、电容、运算放大器等器

件均有一定的温度系数,误差信号运算中的温度漂移是难以忽略的。对于数字电

路,由于在温度控制中的积分、微分时间尺度一般是秒量级的,所以不需要高速

图 4.5 PID 控制的流程图

Page 43: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 36 -

的 ADC,重要的是 ADC 比特位数要大。

实际模拟电路中,大部分元器件(比如参考电压源、运算放大器、仪器放大

器等)的长期稳定度(>24h)一般都不会好于 1ppm,甚至只在 10ppm 水平上;加

之稳定度高于 1ppm/℃的电阻价格昂贵,在电路中不可能大量使用,只可能成批

使用 10ppm/℃左右的电阻;普通电容的温度稳定性一般都不好,稳定性、漏电

流等各项参数最好的 Teflon 电容(文献[30])价格昂贵,不便使用;因此在我们的

温控测试过程中,发现 24H 以上的温度稳定度很难优于 10ppm。

4.3 电路功能模块及控温测试结果

我们的温度控制电路最初按照文献[27]、[28]制作,之后参考文献[29]、[30]

做了相当多的改进,目前已可应用在半导体激光器、FP 腔、PPKTP 晶体等的温

控中。直至如今,该电路在功能上仍有很多的改进空间。

图 4.6 所示为我们目前的控温电路的大致原理图,其实物如图 4.7 所示,附

录 4 所示为目前 1.1 版本的 PCB 电路图。在图 4.6 中,VREF约等于 6.8V,由 LM399

提供,控温的工作点由电位计 RS(20K)确定,RT即为 NTC(室温下 10K),其与一

个温度系数超低的 VISHAY 电阻 R(10K)串接,它们共同组成一个 Wheatstone 桥

式结构。仪器放大器 AMP01 的输入偏置电压具有很低的温度系数,并且具有很

高的共模抑制比,它将 NTC 和 10K VISHAY 电阻连接处的电压与 RS电位计上设

定点的电压相减并放大(我们实际将其放大 80 倍至 100 倍),作为误差信号,提

供给后续的比例、积分(微分在此图中被省略)电路。误差信号经过 P、I、D 运

图 4.6 PID 温度控制电路原理图[27]

Page 44: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 37 -

算后经过一个加法器相加后,再经过电流放大电路作用在 TEC 上。实际电路中,

积分、微分的时间常数是确定的,仅仅用电位计来调节误差信号的输入幅度。实

际应用中,不同型号的 TEC 能够承受的最大电压、最大电流均不同,因此为了

提高电路的普适性,还需要对加载在 TEC 上的最大电压、电流做限制。该反馈

回路的控制结果,就是使 RT/R=RS 上/RS 下。

为了使用 NTC 来控温,我们一般会在受控物体上钻孔以安放 NTC,并且由

于宏观物体(如铜块、铝块等)均具有有限的热传导系数,使得即使反馈用 NTC

位置处的温度极为稳定,但物体其他位置上温度的稳定度却不会有那么高。因此,

对于半导体激光器(图 4.8)而言,反馈的 NTC 安装的位置越靠近激光管越好,

并且需要将激光器与周边环境做有效的热绝缘;某些特殊应用中,为了达到 10uK

级别的稳定度,它们将被控物体置于真空环境中,彻底隔离空气热传导对超稳定

温度带来的干扰[19],[20]。

与之前文献中通过测量激光频率漂移来折算成温度稳定度不同,我们在半导

体激光器内反馈NTC附近 5mm左右的地方安装了另一个NTC监测该处的温度,

然后用 Agilent 的 6-1/2 位万用表 34410A 记录该 NTC 电阻值的变化,以下温控

数据,均由此种方法测出。测试过程中,激光器始终被放置在超净室之内,未控

温情况下,激光器的温度在一昼夜内的变化情况,如图 4.9 所示。

图 4.7 温度控制电路板实物图

Page 45: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 38 -

当对激光器进行控温时,开始时需要仔细调节 P、I、D 三个参数,才能让温

度进入最稳定的状态。我采取先将 I 和 D 调得很低,将 P 调节的较小,当激光器

图 4.9 未控温情况下 24 小时内激光器温度漂移

图 4.8 外延腔半导体激光器结构示意图

Page 46: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 39 -

温度临近设定值,误差信号降至 10mV 量级上,此时误差信号应该在缓慢振荡。

继续增大 P,当误差信号的振荡幅度越来越大时,减小 P,使得振荡衰减(如图

4.10 所示,误差信号的变化与 NTC 电阻值的变化是同步的)。此时增大 I 和 D,

使误差信号的 10mV 量级的振荡消失;测试中发现,目前 V1.1.1 电路板上 I 的大

小对误差信号的振荡没有明显的影响,反而是 D 过大时,使得误差信号稳定的

振荡,但是减小 D 则可使误差信号变得平稳。此处 P、I、D 的调节没有固定的

调节方法,还需要使用者自己摸索发现,但是最终的目标就是看不到误差信号的

明显振荡,此时温度就进入稳定的状态了。

测试中,我们还发现,即使是打开激光器的外罩,也会使激光器温度(误差

信号)有微弱的变化,但是振荡会很快衰减下来;如果用手触碰激光器内部铜座,

则会让温度发生猛烈的变化。无论是我们自制的温控电路板,还是 Thorlabs 公司

的 ITC502,控温测试过程中都发现即使短期温度已经稳定下来,但是仍需要经

过若干小时的漂移之后才能进入最稳定的状态,不过这个对实验并没有什么大的

影响。

在控温稳定之后,我们首先测试了半小时内温度的变化,如图 4.11 所示。

作为对比,图 4.12 给出了在 Thorlabs ITC502 控温下,温度稳定后,同一台激光

器在半小时内温度的变化。ITC502 手册中宣称的温度稳定性为 0.8mK;我们实

际使用的 NTC 的温度系数最低约为-2%,照此估计,NTC 阻值约为 14K 时,0.2

图 4.10 稳定状态下增加、减小 P 对温度的影响

Page 47: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 40 -

Ohm 的阻值变化近似为 0.7mK。

图 4.12 ITC502: 30 分钟内激光器温度的变化

图 4.11 自制控温电路: 30 分钟内激光器温度的变化

Page 48: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 41 -

在此之后,我们分别测试了在自制控温电路和 ITC502 控制下,半导体激光

器温度在 24 小时内的变化,以下给出两组对比数据。

图 4.14 ITC502: 24 小时内激光器温度的变化(测试 1)

图 4.13 自制控温电路: 24 小时内激光器温度的变化(测试 1)

Page 49: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 42 -

以上两组测试数据,都来自连续的 48 小时测试,二者在测试末期都发生了

幅度达 0.5 Ohm 的长时间漂移,目前原因仍不清楚,有可能是实验室空调温度的

大幅度变化造成的,因为在此前后,实验室空调出现过各类或大或小的问题。按

图 4.15 自制控温电路: 24 小时内激光器温度的变化(测试 2)

图 4.16 ITC502: 24 小时内激光器温度的变化(测试 2)

Page 50: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

第 4 章 基于 PID 算法的温度控制

- 43 -

照我们使用的 NTC 温度系数的下限(-2%)估计,NTC 阻值约为 13K 或 14K 时,

0.5 Ohm 的变化折算后约为 2mK 温度的变化,实际情况可能好于这个结果。

4.4 小结

经过前后近 3 个月的工作和数次改进,目前我们温控电路的指标已经可以和

美国Thorlabs公司提供给半导体激光器稳频使用的电流-温度控制器 ITC502的指

标相媲美,只是没有做成独立机箱,而是插在 3U 标准机箱中使用。我们自己制

作的温控电路,其成本远小于 Thorlabs, Wavelength Electronics 公司提供的价格昂

贵的温控仪器,使得可以可观的节约实验室经费。通过采取电压、电流的限制,

使得目前版本 V1.1.1 的温控电路适用于大部分 TEC。除了温控电路,我还利用

ICL7136 芯片制作了可以实时显示控温过程中设定电阻值、NTC 实际电阻值的电

路板。由于 ICL7136 可以直接驱动 3-1/2 位 LCD,该显示电路比较简单,在此不

再叙述,感兴趣的读者可以自己研读 ICL7136 的说明书。

值得注意的是,基于 FPGA 的温度控制电路,由于 P、I、D 运算过程在内

部 CPU 完成,受温度影响几乎可以忽略,因此可能达到更好的长期稳定性[31]。

图 4.17 位于科大上海研究生院的 Bose-Einstein 量子模拟实验室

Page 51: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

参考文献

44

参考文献

[1] C. Wieman, Gwenn Flowers, and Sarah Gilbert. Inexpensive laser cooling and trapping

experiment for undergraduate laboratories. Am. J. Phys. 63, 317 (1995).

[2] M. D. Lukin. Colloquium: Trapping and manipulating photon states in atomic ensembles. Rev.

Mod. Phys. 75, 457 (2003).

[3] Xian-Min Jin, Jian Yang, Han Zhang, Han-Ning Dai, Sheng-Jun Yang, Tian-Ming Zhao, Jun

Rui, Yu He, Xiao Jiang, Fan Yang, Ge-Sheng Pan, Zhen-Sheng Yuan, Youjin Deng, Zeng-Bing

Chen, Xiao-Hui Bao, Bo Zhao, Shuai Chen, Jian-Wei Pan. Prepare and store frequency-

uncorrelated SPDC entangled photons for scalable all-optical quantum information processing.

arXiv: 1004.4691(2010).

[4] Nathan Belcher, Eugeniy E. Mikhailov, and Irina Novikova. Atomic clocks and coherent

population trapping: experiments for undergraduate laboratories. arXiv:0810.2071v1(2008).

[5] Shuai Chen, Yu-Ao Chen, Bo Zhao, Zhen-Sheng Yuan, Jörg Schmiedmayer, and Jian-Wei Pan.

Demonstration of a Stable Atom-Photon Entanglement Source for Quantum Repeaters. Phys. Rev.

Lett. 99, 180505(2007).

[6] Chih-Sung Chuu, Thorsten Strassel, Bo Zhao, Markus Koch, Yu-Ao Chen, Shuai Chen,

Zhen-Sheng Yuan, Jörg Schmiedmayer, and Jian-Wei Pan. Quantum Memory with Optically

Trapped Atoms. Phys. Rev. Lett. 101, 120501 (2008).

[7] Bo Zhao, Yu-Ao Chen, Xiao-Hui Bao, Thorsten Strasse, Chih-Sung Chuu, Xian-Min Jin,Jörg

Schmiedmayer, Zhen-Sheng Yuan, Shuai Chen and Jian-Wei Pan. A millisecond quantum memory

for scalable quantum networks. Nature Physics 5, 95(2009).

[8] U. Schnorrberger, J.D. Thompson, S. Trotzky, R. Pugatch, N. Davidson, S. Kuhr, and I. Bloch.

Electromagnetically induced transparency and light storage in an atomic Mott insulator. Phys. Rev.

Lett. 103, 033003(2009).

[9] Y. O. Dudin, R. Zhao, T.A.B. Kennedy, and A. Kuzmich. Light storage in a magnetically-

dressed optical lattice. arXiv:1004.3727v1(2010).

[10] ADwin Pro II: System and hardware description.

Jäger Computergesteuerte Messtechnik GmbH, 2007. (Jäger GmbH for short in the following)

[11] ADbasic: Real-Time Development Tool for ADwin Systems. Jäger GmbH, 2006.

[12] ADwin-Pro, Pro II: System specifications, Programming in ADbasic. Jäger GmbH, 2007.

Page 52: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

参考文献

45

[13] Private communications with Juergen Kunert, ADwin engineer.

[14] Private communications with Dr. Yu-Ao Chen and Dr. Alexander Goebel.

[15] P7888 0.5/1 GHz Time-of-Filght/Multiscaler User Manual, FAST ComTech GmbH, 2006.

[16] Model P7888 DLL Software Interface User Manual, FAST ComTech GmbH, 2003.

[17] P. Saunders, and D. M. Kane. A driver for stable-frequency operation for laser diodes. Rev.

Sci. Instrum. 63, 2141(1992).

[18] 江晓. 冷原子量子存储中的激光稳频与锁相技术.博士论文. 合肥: 中国科技大学. 2009.

[19] Dror Sarid, and David S. Cannell. A ±15 microdegree temperature controller. Rev. Sci.

Instrum. 45, 1082(1974).

[20] Jay Dratler, Jr. A proportional thermostat with 10 microdegree stability. Rev. Sci. Instrum. 45,

1435(1974).

[21] Practical Temperature Measurements: Application Note 290. Agilent Inc. 2009.

[22] Thermistor. Wikipeida. Online version at http://en.wikipedia.org/wiki/Thermistor.

[23] Thermoelctric effect. Wikipedia.See at http://en.wikipedia.org/wiki/Thermoelectric_effect.

[24] Thermoelectric cooling. Wikipedia. http://en.wikipedia.org/wiki/Thermoelectric_cooling.

[25] 电热致冷器. 杭州大和热磁电子有限公司. 2006.

[26] PID Controller. Wikipedia. Online version at http://en.wikipedia.org/wiki/PID_controller.

[27] C. C. Bradley, J. Chen, and R. G. Hulet. Instrumentation for the stable operation of laser

diodes. Rev. Sci. Instrum. 61, 2097(1990).

[28] C. C. Bradley. A laser diode system and its use in a laser cooling experiment. Master thesis,

Rice University, 1992. P.1-P.2, P.7-P.10, P.46.

[29] Sys DC 110 Diode Laser Supply Electronics Manual. TOPTICA Photonics Inc. 2008.

[30] P. Horowitz and W. Hill. The Art of Electronics, 2nd Edition. Cambridge University Press,

Cambidge, 1989. Reprinted by the press of Tsing Hua University, Beijing, 2003. [27]

[31] F. Barone, E. Calloni, A. Grado, R. D. Rosa, L. D. Fiore, L. Milano, G. Russo. High accuracy

digital temperature control for a laser diode. Rev. Sci. Instrum. 66, 4051(1995).

[32] K. P. Pipe, and R. J. Ram. Comprehensive heat exchange model for a semiconductor laser

diode. IEEE Photonics Tech. Lett. 15, 504(2003).

Page 53: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 46 -

附录 1.1 多通道数字-模拟控制程序的 LabVIEW 界面

Page 54: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 47 -

附录 1.2 多通道数字-模拟控制程序 V5.2 的 ADBasic 源代码

MOT Analog & Digital Time Serial_Process 1_Version5.2.BAS '---------------------------------------------------- 'This program is used in combination of the Labview VIs 'Parameter List 'PAR_6 Operation end tag, which will be set at the FINISH: segment of Process 1 '--------------------------------------------------- #Include ADwinPro2.Inc #Include Transfer.Inc #DEFINE LENGTH 1500001 'signal for 15 seconds and a tag DIM DATA_1[12][LENGTH] AS FLOAT 'analog signal array DIM DATA_2[11][LENGTH] AS LONG 'digital signal array DIM DATA_3[12] AS LONG AT EM_LOCAL DIM i AS LONG INIT: PAR_4=1 'Set the output index PAR_5=1 PAR_6=0 'Clear operation end tag PAR_10=0 FOR i=1 TO 11 DATA_3[i]=voltage2integer(DATA_1[i][PAR_4]) PAR_10=PAR_10+Shift_Left(DATA_2[i][PAR_4],i-1) NEXT i DATA_3[12]=voltage2integer(DATA_1[12][PAR_4]) ProcessDelay=Time2Cycle(10,3) 'FPAR_1 is the time resolution EVENT: P2_DIGout_Long(4,PAR_10) P2_DAC8(6,DATA_3,1) P2_DAC4(7,DATA_3,9) '----test-------- ' PAR_22=Read_Timer() '----test-------- INC(PAR_4)

IF(PAR_4>PAR_2)THEN 'PAR_2 is the cycles of this process, and is set from Labview

PAR_4=1 ENDIF IF(PAR_4>LENGTH-1)THEN PAR_4=1 ENDIF PAR_10=0 FOR i=1 TO 11 PAR_10=PAR_10+Shift_Left(DATA_2[i][PAR_4],i-1) DATA_3[i]=voltage2integer(DATA_1[i][PAR_4]) NEXT i DATA_3[12]=voltage2integer(DATA_1[12][PAR_4]) '-----test block--------- ' PAR_11=DATA_1[1][PAR_5] ' PAR_12=DATA_1[2][PAR_5] ' PAR_13=DATA_1[3][PAR_5] ' PAR_14=DATA_1[4][PAR_5] ' PAR_15=DATA_1[5][PAR_5] ' PAR_16=DATA_1[6][PAR_5] ' PAR_17=DATA_1[7][PAR_5]

Page 55: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 48 -

' PAR_18=DATA_1[8][PAR_5] ' PAR_19=DATA_1[9][PAR_5] ' PAR_23=Read_Timer() ' FPAR_22=ABSF((PAR_23-PAR_22)/300) '-----test block--------- FINISH: REM clear all the analog & digital output values FOR i=1 TO 12 DATA_3[i]=32767 NEXT i P2_DAC8(6,DATA_3,1) P2_DAC4(7,DATA_3,9) P2_DIGOUT_LONG(4,0) REM clear end PAR_2=0 PAR_4=0 PAR_6=1 PAR_10=0 MOT Analog & Digital Time Serial_Process 2_Version5.2.BAS '---------------------------------------------------- 'This program is used in combination of the Labview VIs 'Parameter List 'PAR_6 Operation end tag, which will be set at the FINISH: segment of Process 2 '---------------------------------------------------- #Include ADwinPro2.Inc #Include Transfer.Inc #DEFINE LENGTH 1500001 'signal for 15 seconds and a tag DIM DATA_1[12][LENGTH] AS FLOAT 'analog signal array DIM DATA_2[11][LENGTH] AS LONG 'digital signal array DIM DATA_3[12] AS LONG AT EM_LOCAL 'internal memory for faster accessory speed DIM i AS LONG INIT: PAR_11=0 'Labview data transfer end tag PAR_12=0 'Labview data transfer end tag PAR_3=0 'Counter PAR_6=0 'ADwin end tag ProcessDelay=Time2Cycle(1,2) EVENT: REM PAR_2 is cycles of process 1, and is set from Labview PAR_11=DATA_1[12][PAR_2+1] PAR_12=DATA_2[11][PAR_2+1] IF((PAR_11=3)AND(PAR_12=3))THEN END ENDIF INC(PAR_3) ' PAR_13=DATA_1[1][1] 'test ' PAR_14=DATA_2[1][1] 'test FINISH: PAR_11=0 PAR_12=0 PAR_6=1

Page 56: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 49 -

MOT Analog & Digital Time Serial_Process 3_Version5.2.BAS '---------------------------------------------------- 'This program is used in combination of the Labview VIs 'Parameter List 'PAR_6 Operation end tag, which will be set at the FINISH: segment of Process 1 '---------------------------------------------------- #Include ADwinPro2.Inc #Include Transfer.Inc DIM DATA_1[12] AS FLOAT AT EM_LOCAL 'Analog signal from Labview DIM DATA_2[11] AS LONG AT EM_LOCAL 'Digital signal from Labview DIM DATA_3[12] AS LONG AT EM_LOCAL 'Analog signal for DACs DIM i AS LONG INIT: PAR_10=0 FOR i=1 TO 11 DATA_3[i]=voltage2integer(DATA_1[i]) PAR_10=PAR_10+Shift_Left(DATA_2[i],i-1) NEXT i DATA_3[12]=voltage2integer(DATA_1[12]) PAR_4=0 'Counter PAR_6=0 'ADwin end tag ProcessDelay=Time2Cycle(10,3) EVENT: P2_DAC8(6,DATA_3,1) P2_DAC4(7,DATA_3,9) P2_DIGout_LONG(4,PAR_10) PAR_10=0 FOR i=1 TO 11 DATA_3[i]=voltage2integer(DATA_1[i]) PAR_10=PAR_10+Shift_Left(DATA_2[i],i-1) NEXT i DATA_3[12]=voltage2integer(DATA_1[12]) INC(PAR_4) FINISH: PAR_6=1

Page 57: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 50 -

附录 1.3 多通道数字-模拟控制程序的简化 LabVIEW 框图

Page 58: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 51 -

Page 59: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 52 -

附录 1.4 DL701 多通道数字脉冲发生程序的 LABVIEW 框图

Page 60: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 53 -

附录 2.1 EIT 曲线测量程序的 LabVIEW 框图

Page 61: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 54 -

附录 2.2 EIT 曲线测量程序中文件分析 DLL 源代码(C++) /* This program is used to caculate the ROI sum of one channel, from the binary list file written by P7888. P7888 should operate under 4-input mode Suppose that, loading times are Nl, and detection times after each loading process is Nd, then, the count in roi range during one loading process will be stored in one element of the output array. @QPQI, HFNL, USTC. Jun Rui, 10-30-2009*/ #include "StdAfx.h" #include "MyDLL.h" #include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <fstream.h> #include <string.h> /*subfunctions*/ unsigned Start_Analyze(unsigned eventdata){ if(eventdata==0xC0000000) return(1); else return(0); } unsigned Channel_Analyze(unsigned eventdata){ unsigned channel=0; channel=eventdata>>30; return(channel+1); } unsigned Time_Analyze(unsigned eventdata){ unsigned time=0; time=(eventdata&0x3FFFFFFF)-32; return(time); } /*ROI Analyze function*/ int SingleROICount(char *file_path, unsigned loadtimes, unsigned detecttimes,\

unsigned roimin, unsigned roimax, unsigned offsetin, unsigned *roisum,\ unsigned *startevents){

/*the following 6 parameters are used to substitue the input parameters for test. // char *file_path="E:\\P7888 Data Storage\\test.lst"; // unsigned loadtimes=10; // unsigned detecttimes=100; // unsigned roimin=0; // unsigned roimax=700; // unsigned offsetin=637; */ FILE *file_pointer; unsigned sweeproisum=0; //the sum over the roi range during one sweep unsigned eventdata=0; //the 4 bytes integer written in the list file format by P7888 unsigned startmark=0; //if the eventdata is a start marker, then startmark=0, vice versa. unsigned channel=0; unsigned time=0; unsigned filelength=0; unsigned arraysize=0; unsigned index=0,i=0; unsigned *array; //read the binary file into the memory, to fasten the process speed /*open the file*/ if((file_pointer=fopen(file_path,"rb"))==0){ cout<<"This File Can not be Opened!!!\n";

Page 62: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 55 -

goto freespace; } /*apply for the memory*/ fseek(file_pointer,0,2); //move the file pointer to the end of the file filelength=ftell(file_pointer)+1; //get the number of bytes of the file rewind(file_pointer); //move the file pointer to the beginning of the file arraysize=filelength/4; //one event data occupies 4 bytes array=(unsigned *)malloc(arraysize*sizeof(unsigned)); if((array==NULL)|(roisum==NULL)) goto freespace; /*read the file into array*/ fseek(file_pointer,offsetin,0); while(!feof(file_pointer)){ //method 1 fread(&array[index],4,1,file_pointer); index++; } fclose(file_pointer); /*Caculate the ROI sum during each loading process*/ /*The algorithm about the analysis of this block is referred in Cold Atom experiment daily log II*/ for(index=0;index<loadtimes;index++){ roisum[index]=0; *startevents=0; while(*startevents<=detecttimes){ eventdata=array[i]; startmark=Start_Analyze(eventdata); if(startmark==1){ *startevents+=1; roisum[index]+=sweeproisum; sweeproisum=0; } else{ channel=Channel_Analyze(eventdata); time=Time_Analyze(eventdata); if((channel==1)&&(time<=roimax)&&(time>=roimin)) sweeproisum+=1; }//end of if i++; }//end of while i-=1; *startevents-=1; }//end of for freespace: if(array) free(array); return 0; }

Page 63: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 56 -

附录 3.1 纠缠光子实时符合测量程序 LabVIEW 框图

Page 64: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 57 -

Page 65: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 58 -

附录 3.2 纠缠光子实时符合程序文件分析 DLL 源代码(C++) /* This program is used to caculate the Coincidence between different channels, from the binary list file written by P7888. P7888 should operate under 4-input mode @Center for Quantum Engineering(ShangHai), USTC. Jun Rui, 01-25-2010*/ #include "StdAfx.h" #include "MyDLL.h" #include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <fstream.h> #include <string.h> /*subfunctions*/ unsigned Start_Analyze(unsigned eventdata){ if(eventdata==0xC0000000) return(1); else return(0); } unsigned Channel_Analyze(unsigned eventdata){ unsigned channel=0; channel=eventdata>>30; return(channel); } unsigned Time_Analyze(unsigned eventdata){ unsigned time=0; time=(eventdata&0x3FFFFFFF)-32; return(time); } unsigned SingleCoin(unsigned sweepspectrum[], unsigned sweeprange, unsigned \

channel1, unsigned channel2, unsigned roimin[], unsigned roimax[], unsigned\ coinwindow){

unsigned sweepcoin=0; unsigned counter=0; int i, j, delay, jmin, jmax, ievent; //delay, the time between the middle of two ROI ranges of each channel //ievent, the time at which the last event happens, in channel 1 ievent=roimin[channel1]-2*coinwindow;

delay=(roimax[channel1]+roimin[channel1])/2-(roimax[channel2]+roimin[channel2])/2; for(i=roimin[channel1];i<=roimax[channel1];i++){ if(sweepspectrum[i+channel1*sweeprange]==1){ if(i-ievent<2*coinwindow){ goto skipevent; }; jmin=i-delay-coinwindow; jmax=i-delay+coinwindow; if((jmin<=0||jmin<roimax[channel2])&&jmax>roimin[channel2]){ //as jmin is a 32-bit signed integer, roimax[i] is a 32-bit unsigned integer, //when jmin is negative, the comparision between them will encounter an obvious //problem, which is found during testing. if(jmin<roimin[channel2]||jmin<=0) jmin=roimin[channel2]; if(jmax>roimax[channel2]) jmax=roimax[channel2]; for(j=jmin;j<=jmax;j++){ counter+=sweepspectrum[channel2*sweeprange+j]; } if(counter>=1) sweepcoin+=1; counter=0; }//end of if skipevent: ievent=i; //save the time of this event }//end of if }//end of for return sweepcoin; }

Page 66: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 59 -

/*Coincidence Calculation Function*/ int Coincidence(char *file_path, unsigned *fpoffset, unsigned sweeps, unsigned\

sweeprange, unsigned masterchannel, unsigned *startevents, unsigned *roimin,\ unsigned *roimax, unsigned *roisum, unsigned *roicoin, unsigned *spectrum,\ unsigned *status, unsigned coinwindow){

FILE *file_pointer; unsigned sweeproisum[4]; //sum of each channel during one sweep unsigned sweepcoinsum[6]; //coin. between four channels during one sweep unsigned eventdata=0; unsigned startmark=0; unsigned channel=0; unsigned time=0; unsigned filelength=0; unsigned arraysize=0; unsigned index=0,i=0; unsigned *array; unsigned offset=*fpoffset; unsigned *sweepspectrum; /*open the file*/ if((file_pointer=fopen(file_path,"rb"))==0){ cout<<"This File Can not be Opened!!!\n"; goto freespace; } /*apply for the memory*/ fseek(file_pointer,0,2); filelength=ftell(file_pointer)-*fpoffset; rewind(file_pointer); arraysize=filelength/4; array=(unsigned *)malloc(arraysize*sizeof(unsigned)); sweepspectrum=(unsigned *)malloc(4*sweeprange*sizeof(unsigned)); if((array==NULL)||(sweepspectrum==NULL)) goto freespace; /*read the file into array*/ fseek(file_pointer,*fpoffset,0); while((index<arraysize)&&(!feof(file_pointer))){ fread(&array[index],4,1,file_pointer); index++; } fclose(file_pointer); /*-----------------Caculate the ROI sum and Coincidence--------------*/ for(i=0;i<4;i++){ sweeproisum[i]=0; } for(i=0;i<6;i++){ sweepcoinsum[i]=0; } for(i=0;i<4*sweeprange;i++){ sweepspectrum[i]=0; } for(index=0;(index<arraysize)&&(*startevents<=sweeps);index++){ eventdata=array[index]; startmark=Start_Analyze(eventdata); if(startmark==1){ *startevents+=1; *fpoffset=offset+index*4;

sweepcoinsum[0]=SingleCoin(sweepspectrum,sweeprange,0,1,roimin,\ roimax, coinwindow); //A&B sweepcoinsum[1]=SingleCoin(sweepspectrum,sweeprange,2,3,roimin,\ roimax, coinwindow); //C&D sweepcoinsum[2]=SingleCoin(sweepspectrum,sweeprange,0,2,roimin,\ roimax, coinwindow); //A&C sweepcoinsum[3]=SingleCoin(sweepspectrum,sweeprange,0,3,roimin,\ roimax, coinwindow); //A&D sweepcoinsum[4]=SingleCoin(sweepspectrum,sweeprange,1,2,roimin,\

Page 67: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 60 -

roimax, coinwindow); //B&C sweepcoinsum[5]=SingleCoin(sweepspectrum,sweeprange,1,3,roimin,\ roimax, coinwindow); //B&D

for(i=0;i<4*sweeprange;i++){ spectrum[i]+=sweepspectrum[i]; sweepspectrum[i]=0; } for(i=0;i<4;i++){ roisum[i]+=sweeproisum[i]; sweeproisum[i]=0; } for(i=0;i<6;i++){ roicoin[i]+=sweepcoinsum[i]; sweepcoinsum[i]=0; } } else{ //this event is true, not a startmaker channel=Channel_Analyze(eventdata); time=Time_Analyze(eventdata); if((time<=roimax[channel])&&(time>=roimin[channel])){ sweeproisum[channel]+=1; } sweepspectrum[channel*sweeprange+time]+=1; } //end of if } //end of for if(*startevents>0){ *startevents-=1; } if(*startevents==sweeps-1){

sweepcoinsum[0]=SingleCoin(sweepspectrum,sweeprange,0,1,roimin,\ roimax, coinwindow); //A&B sweepcoinsum[1]=SingleCoin(sweepspectrum,sweeprange,2,3,roimin,\ roimax, coinwindow); //C&D sweepcoinsum[2]=SingleCoin(sweepspectrum,sweeprange,0,2,roimin,\ roimax, coinwindow); //A&C sweepcoinsum[3]=SingleCoin(sweepspectrum,sweeprange,0,3,roimin,\ roimax, coinwindow); //A&D sweepcoinsum[4]=SingleCoin(sweepspectrum,sweeprange,1,2,roimin,\ roimax, coinwindow); //B&C sweepcoinsum[5]=SingleCoin(sweepspectrum,sweeprange,1,3,roimin,\ roimax, coinwindow); //B&D

for(i=0;i<4*sweeprange;i++){ spectrum[i]+=sweepspectrum[i]; sweepspectrum[i]=0; } for(i=0;i<4;i++){ roisum[i]+=sweeproisum[i]; sweeproisum[i]=0; } for(i=0;i<6;i++){ roicoin[i]+=sweepcoinsum[i]; sweepcoinsum[i]=0; } *startevents+=1; } if(*startevents>=sweeps) *status=0; else *status=1; freespace: if(array) free(array); return 0; }

Page 68: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 61 -

附录 3.3 P7888 List 文件数据压缩 DLL 源代码(C++) /* This program is used to compress the binary list file written by P7888. @Center for Quantum Engineering(ShangHai), USTC. Jun Rui, 01-25-2010*/ #include "StdAfx.h" #include "MyDLL.h" #include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <fstream.h> #include <string.h> int CompressListFile( char *oldfile_path, char *newfile_path, unsigned\

oldfileoffset, unsigned *totalsweeps, unsigned *effectivesweeps){ FILE *oldfile_pointer; FILE *newfile_pointer; /*-----------------------local parameters-------------------------*/ unsigned status=1;

//if status=1, the analysis of the sweeps has not finished; //if else, all sweeps has been analyzed

unsigned eventdata=0; unsigned oldfilelength=0; unsigned index=0; unsigned lastevent=0xC0000000; *totalsweeps=0; *effectivesweeps=0; /*------------------------open the files--------------------------*/ if((oldfile_pointer=fopen(oldfile_path,"rb"))==0){ cout<<"This File Can not be Opened!!!\n"; goto closefile; } if((newfile_pointer=fopen(newfile_path,"wb"))==0){ cout<<"This File Can not be Opened!!!\n"; goto closefile; } /*----------------------compress the old file---------------------*/ fseek(oldfile_pointer,0,2); //move the file pointer to the end of the file oldfilelength=ftell(oldfile_pointer)-oldfileoffset;

//get the length of the file, in unit of byte oldfilelength=oldfilelength/4;//in unit of 4-byte integer rewind(oldfile_pointer);//move the file pointer to the beginning of the file fseek(oldfile_pointer,oldfileoffset,0);

//move the file pointer to the offset position fseek(newfile_pointer,0,2);//move the file pointer to the end of the new file

while((index<oldfilelength)&&(!feof(oldfile_pointer))){ fread(&eventdata,4,1,oldfile_pointer); if(eventdata==0xC0000000){ *totalsweeps+=1; } if(eventdata!=lastevent){ if(lastevent==0xC0000000){ *effectivesweeps+=1; } fwrite(&lastevent,4,1,newfile_pointer); lastevent=eventdata; } if((index==oldfilelength-1)&&(eventdata!=0xC0000000)){ fwrite(&lastevent,4,1,newfile_pointer); } index++; } closefile: fclose(oldfile_pointer); fclose(newfile_pointer); return 0; }

Page 69: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

附录

- 62 -

附录 4 PID 温控电路 PCB 电路图

Page 70: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

- 63 -

致谢

首先,我要感谢我的父母,他们含辛茹苦将我养育成人,并且一直激励着我

努力求学;他们尊重我自己的绝大部分决定,其中就包括报考科大的物理学专业;

他们能够宽容我的过失,在我学业低落之时,给予宽慰和鼓励;父亲认真负责追

求完美的工作态度,一直给我以至纯的感染,也给我指引着前行之路。

早在被科大录取之时,我即有幸耳闻潘建伟教授在量子信息研究领域的开拓

性成就,并且时常关注着他所带领的研究小组在该领域的研究进展,十分钦佩。

两年多后,我终于如愿加入了研究组,并且因为一次足球比赛,有幸认识了之后

对我照顾颇多的陈帅教授;在观察研究组里各个实验室的过程中,我发现冷原子

实验室里的仪器最多,觉得肯定好玩,随即得到陈帅老师的首肯,负责起了时序

控制系统的搭建。陈帅教授的基础知识相当扎实,总是能以很简单的语言解释复

杂的现象,实验能力极强,他在北大读博士期间即完成了该校第一个玻色-爱因

斯坦凝聚实验;他待人十分亲和大方,但在实验上要求学生规范、细致、思路清

晰,十分严格,却可以给学生很强的专业化锻炼。在实验室用心工作一年多之后,

陈帅老师派遣我去德国海德堡大学搬迁冷原子量子存储实验室回中国科大,并且

在研究生期间专注于此实验平台,在此十分感谢潘建伟老师、陈帅老师和包小辉

师兄等人对我的信任。

我要感谢实验室的金贤敏博士、戴汉宁、杨胜军三位师兄。在合肥冷原子实

验室一年半的时间里,是我本科期间最充实、最惬意的一段时间。金贤敏师兄思

维敏捷,讨论问题时总是富有启发性,并且极富幽默感,使得我们经常在欢快愉

悦的氛围中进行着实验;戴汉宁师兄为人稳重大方,工作效率极高,总是会耐心

的讲解实验中的一些问题,他是一个典型的大哥形象;杨盛军师兄为人随和,一

直在冷静的分析问题,常常能够抛出新颖的观念,让人颇受启发。

我还得感谢实验室的陈宇翱博士、江晓博士、唐世彪博士。陈宇翱师兄是一

个传说,他在量子信息领域的杰出工作是我们这些后生的一个榜样,他在海德堡

大学期间对 FPGA 和 P7888 的广泛开发,极大便利了我在合肥对 FPGA 和 P7888

的学习,使得之后我可以快速的拿出解决方案以满足实验中各种各样的需要。江

晓博士为人稳重,电子学知识相当丰富,他在研究生末期开发的半导体激光器稳

频锁相电路和 3U 标准机箱的设计库,大大方便了之后我们实验中其他电路及配

件的开发;唐世彪博士为人亲和,思维活跃,十分善于和人沟通意见,每当我遇

到电子学问题去问他时,他都会给予详细的点评、解答,并给予一些新的建议。

我还得感谢实验室的邓友金、陈腾云、潘阁生等教授,夏锦秀、赵红花两位

秘书,赵勇、印娟、颜波、任继刚、高炜博、杨剑等博士,张涵、姚星灿、张进

Page 71: 学士学位论文 - USTCstaff.ustc.edu.cn/~junrui/Resources/Bachelor Thesis_2010...学士学位论文 冷原子量子存储实验中的时序信号控制 与实时符合测量系统

- 64 -

一、韩鸣飞、周飞、曹元、雍海林、刘洋、赵天明等师兄师姐,朱英、贺豫、梁

小磊,陈泺侃、汪臻涛、杨兵、魏宇佳、杜志东等同学,以及员浩阳工程师。他

们都给我过各种各样的指导和帮助,大大方便了我在实验室期间的工作、学习和

生活。

此外,我还要感谢我的班主任潘海俊老师,我的同学梁宇峰、徐挽杰、周雷、

陈修远、蔡昕东、邓鹏、肖成哲、林郁葱、刘翔、彭求应等人,我们曾一起学习、

娱乐,成长,从他们身上学到很多做人做事的道理,留下了弥足珍贵的青春记忆。

世界很大,地球很小,已经或者即将奔赴世界各地的同学们,祝福我们大家未来

身体健康、家庭幸福、工作顺利、事业有成;而在我们的心里,永远都有一个共

同的标记:合肥市金寨路 96 号,中国科大。