2. 中国科学技术大学 近代物理系 合肥 230026;
3. 中国科学技术大学 核科学技术学院 合肥 230026
2. Department of Modern Physics, University of Science and Technology of China, Hefei 230026, China;
3. School of Nuclear Science and Technology, University of Science and Technology of China, Hefei 230026, China
飞行时间探测器(Time-of-Flight, TOF)主要用于测量带电粒子的飞行时间,在各物理实验装置中扮演着重要的作用,其与径迹探测器相配合,可进行带电粒子种类的鉴别。针对探测器结构、规模的不同,需进行相应读出电子学系统方案(包括数据传输方案)的设计及实现。多气隙电阻板室(Multi-gap Resistive Plate Chamber, MRPC)探测器因其具有极高的时间分辨能力而受到越来越多的应用。现有利用MRPC构建飞行时间谱仪的大型物理实验包括北京谱仪(Beijing Spectrometer, BES) BESIII实验中的端盖飞行时间探测器(End-cap Time-of-Flight, ETOF)[1]、美国布鲁克海文国家实验室(Brookhaven National Laboratory, BNL) STAR (Solenoidal Tracker At RHIC)实验中的TOF探测器[2]、欧洲核子中心ALICE (A Large Ion Collider Experiment)实验中的TOF探测器等。
为了提高飞行时间测量精度,德国FAIR (Facility for Antiproton and Ion Research)装置上在建的高压缩重子物质实验(Compressed Baryonic Matter, CBM)同样采用了MRPC探测器来构建其飞行时间谱仪,其主要目的是利用高能核子对撞的方式来探索在超高重子密度环境下的量子色动力学相图及潜在理论。
CBM实验的飞行时间谱仪设计为墙状(即TOF墙),其由6种不同类型的超级模块搭建而成,总通道数达到6×104量级。探测器超级模块(Super Module, SM)由多块小型的MRPC单元构建,其外墙区域M5、M6类型超级模块的结构如图 1所示[3],单个SM的电子学通道数达到320。
为实现对电子学信号的读出和精密时间测量,CBM物理实验开发了多种专用集成电路,并提出了“无触发”理念的新型数据获取设计方法。然而在MRPC探测器研制过程中,需要完成对探测器性能评估和质量控制,但CBM的专用芯片和读出系统还在研制过程中,这就需要针对超级模块研究用于质量控制和性能评估的数据读出方法。
现有的基于MRPC探测器的飞行时间谱仪大多利用VME (Versa Module Eurocard)总线机箱或光纤方式进行数据的读出。BESIII端盖飞行时间探测器包含72个MRPC模块,共1728个电子学通道,其触发事例率约为16kHz[1],探测器输出数据经由前端电子学和后端读出系统多级传输汇总。后端读出系统位于VME机箱中,数据通过VME背板总线汇总至机箱控制器,机箱控制器对数据进行打包处理后,通过以太网将数据传输至数据获取系统(Data AcQuisition system, DAQ)。STAR实验中的TOF系统共计有约23000个通道,由120个支架(Tray)组成[2],Level 0级触发判选的事例率约为10kHz。STAR-TOF系统中每个支架对应32个MRPC模块(共192路信号),探测器输出信号经由前端电子学送入时间测量模块进行时间数字化后,送给负责数据传输和控制的支架控制模块(The tray level central processing unit, TCPU);TCPU继而将数据送给支架级数据汇聚模块(The tray level hub, THUB);THUB通过光纤完成与DAQ系统间的通信[4]。ALICE TOF探测器共有约176000个通道,其Level 1级触发事例率不超过2800Hz,Level 2级触发事例率最大为660Hz[5]。前置放大模块(Front-End Amplifier, FEA)对探测器输出信号进行放大甄别后送入TRM (TDC (Time to Digital Converter) Read-out Module)进行时间数字化;TRM模块设计为VME插件形式,通过VME总线传输数据至数据读出插件(Data Read-out Module, DRM);DRM通过双向的DDL (Detector Data Link)将数据传输至DAQ系统。
CBM物理实验属于重离子对撞(打靶)实验,其反应率达到10MHz,有效事例率最高可达300kHz,这将使得超级模块的数据传输能力高达6Gbit·s-1。采用传统的数据传输读出方法,如VME机箱、CompactPCI (Compact Peripheral Component Interconnect)机箱等,利用读出机箱的背板总线及机箱控制器进行数据汇聚而后传输的方式,受限于背板总线及机箱控制器的传输速率,难以完成数据的读出任务。
本文提出了一套基于千兆以太网的分布式数据读出方法,各读出节点均具备数据传输能力,不再受机箱控制器汇总的局限。同时基于Linux操作系统,对数据读出方法中的软件部分进行了设计实现及相关测试。
1 分布式数据读出方法CBM-TOF外层超级模块结构如图 1所示。CBM-TOF谱仪中外墙区域的超级模块需要进行高精度时间测量的电子学通道数为320。蒙特卡罗仿真结果表明,此类超级模块所在区域单通道最大事例率为300kHz[3]。假设每个事例在TDC中将以48bit大小的数据形式保存,则超级模块的最大数据率为4.6Gbit·s-1,考虑协议开销后将达6Gbit·s-1。为解决CBM-TOF超级模块在进行质量控制时,面临的320通道6Gbit·s-1数据读出的问题,本文提出了如图 2所示的分布式数据读出方法。
![]() |
图 1 CBM-TOF外层M5 (a)、M6 (b)超级模块结构 a: MRPC探测器,b:读出电极,c:真空穿通件,d:时间数字转换器插卡,e:机箱 Figure 1 Block diagram of CBM-TOF M5 (a), M6 (b) super module. a: MRPCs, b: Read-out electrodes, c: Feed-throughs, d: TDC cards, e: Crate |
![]() |
图 2 单超级模块分布式数据读出方法示意图 Figure 2 Schematic diagram of a single super module distributed data readout. |
此数据读出方法包含4个部分,各组成部分介绍如下:
1) 前端电子学。负责对超级模块320通道的数据进行放大甄别、时间数字化等处理。
2) 分布式数据读出节点。负责接收前端电子学传送的数据,独立、并行地将其转发给后端计算机。
3) 交换机。负责分布式数据读出节点与后端计算机之间科学数据和控制命令数据的交换。
4) 后端计算机。负责接收科学数据,对其进行事例组装,控制前端电子学及分布式数据读出节点,监测系统运行状态等。
粒子物理实验中的数据获取系统所需实现的功能一般包括两个方面:一是负责将前端电子学获取得到的科学数据传输给后端计算机;二是负责向前端电子学及分布式数据读出节点传输控制命令及相关参数,同时将前端电子学及分布式数据读出节点的运行状态反馈给后端计算机。图 2所示的分布式数据读出侧重实现的是第一方面的功能。各分布式数据读出节点在具体实现时将被放置在读出机箱中,因此可考虑利用机箱控制器及背板总线来完成对前端电子学及分布式数据读出节点的配置、控制及状态监测。这样科学数据读出通道与系统状态、控制传输通道相分离,互不干扰。
2 多节点并行化数据读出软件架构上述数据读出方法中的分布式数据读出节点实现上采用自行设计的千兆以太网扣板ROB (Read-Out Board)。利用ROB上的千兆位高速以太网口与后端计算机(Personal Computer, PC)进行通信,实现独立并行的数据传输。后端PC上运行的DAQ软件,则主要负责接收各数据读出节点的数据,对数据率约为6Gbit·s-1的科学数据进行实时事例组装,并且提供友好的图形界面。运行在后端PC上的DAQ软件与运行在机箱控制器上的嵌入式软件部分相配合,共同完成对前端电子学及分布式数据读出节点的控制、参数配置、显示系统的关键状态信息等功能。
图 3是为实现上述分布式数据读出方案而设计的多节点并行化数据读出软件架构,由数据子节点(Slave node)、数据主节点(Master node)和图形界面(Graphical User Interface, GUI)三部分组成。其中各分布式数据读出节点和读出机箱上的机箱控制器上作为数据子节点,通过网络与数据主节点进行数据传输通信;数据主节点及图形界面运行于后端PC,共同实现DAQ软件的功能。
![]() |
图 3 多节点并行化数据读出软件架构 Figure 3 Architecture of multi-node parallelized data readout. |
数据子节点包含两种类型:第一类负责科学数据传输的分布式数据读出节点;第二类负责参数配置、命令控制及状态监测的读出机箱控制器。第二类子节点的实现与数据主节点中命令状态接收转发的实现类似,在此不详细说明。这里主要对第一类子节点的软件设计实现进行介绍。
分布式数据读出节点硬件实现采用自行设计的千兆以太网扣板ROB。ROB使用现场可编程门阵列(Field-Programmable Gate Array, FPGA)与ARM (Acorn Reduced Instruction Set Computer Machine)相结合的处理器,利用片上系统技术实现读出子节点的千兆网络传输能力,其结构如图 4所示。FEE (Front-End Electronic)数据接口为统一定义的逻辑接口,该接口模块缓存数据并将其送入数据打包处理模块进行处理,打包好的数据送入DAQ接口模块,该模块利用TCP/IP收发功能将数据包送往DAQ。在网络编程实现中,通常采用客户/服务器模型[6]。此处,ROB作为服务器端,DAQ中的数据主节点作为客户端。
![]() |
图 4 ROB结构图 Figure 4 Structure diagram of ROB. |
ROB模块基于嵌入式Linux系统的高性能数据传输软件工作流程如图 5所示。程序启动后,首先创建监听套接字(Socket)、接受连接;在接收到开始数据采集传输的命令后,发起DMA (Direct Memory Access)操作,将在FPGA上接收并打包处理好的数据传输至嵌入式系统的内核空间中;接下来通过read()方法,将数据从嵌入式系统的内核空间复制到用户空间;而后,调用send()方法,通过TCP Socket将数据发送给DAQ,实现一次数据的传输。上述数据读出、传输过程一直循环,当接收到停止数据采集传输的命令后,程序结束退出。
![]() |
图 5 ROB模块数据传输软件工作流程图 Figure 5 Workflow diagram of ROB module data transmission software. |
利用iperf工具测得ROB模块的理想传输速率为单线程下607Mbit·s-1、双线程下714Mbit·s-1。在全链路情况下,测得ROB模块的数据传输速率为467Mbit·s-1。
3.2 数据主节点数据主节点运行于后端PC上,通过网络与各数据子节点及GUI进行数据传输。在DAQ软件中,数据主节点作为客户端存在,实现下述功能:
1) 接收来自第一类数据子节点的科学数据。
2) 对接收到的科学数据进行事例组装。
3) 接收来自第二类数据子节点的状态信息,并转发给GUI。
4) 接收来自GUI的命令及配置信息,并转发给第二类数据子节点。
3.2.1 多线程使用多线程技术,将程序划分成多个独立的任务,可提高程序的响应速度。这里将数据主节点设计为一个基于多线程技术的并发型软件。由主线程、数据接收线程、数据存储线程、命令状态接收转发线程4个部分组成。
主线程主要负责完成初始化互斥锁、线程管理链表和用做事例组装缓冲区的单链表;创建数据存储线程;依次连接各服务器端,连接成功后,创建相应的数据接收线程或命令、状态接收转发线程;并且更新线程管理链表。
数据接收线程的主要功能是接收来自分布式数据读出节点的科学数据包,将其存放至事例组装链表中。
数据存储线程只有一个,该线程会在被条件变量唤醒后检查packet_assembled_counter(该变量表示了已组装好的事例的个数)的值。当packet_assembled_counter值不为0时,数据存储线程读取事例组装链表中的科学数据,按照预先定义的格式保存数据至文件中。
命令、状态接收转发线程则主要负责接收来自GUI的命令及配置信息并转发给机箱控制器,以及接收来自机箱控制器的状态信息并转发给GUI。
3.2.2 事例组装事例组装的实现是通过所有数据接收线程与数据存储线程的相互协作,共同对事例组装链表进行维护处理完成的。事例组装链表如图 6所示,链表中的节点个数取决于数据率和数据存储线程的处理能力。
![]() |
图 6 事例组装缓冲区链表 Figure 6 Like list of event building buffer. |
在数据接收线程的处理中,当事例组装链表各节点中的end_count等于已连接的第一类数据子节点个数时,将修改全局变量packet_assembled_counter的值,对其加1,然后通过pthread_cond_signal()系统调用通知数据保存线程进行保存。数据存储线程使用pthread_cond_wait()系统调用阻塞线程,等待目标条件变量,当数据接收线程通过pthread_cond_signal()将其唤醒后,检查packet_assembled_counter的值,只要它不为0时,数据存储线程每次读取事例组装链表中第一个节点下的科学数据,保存数据至文件中,之后删除该节点,同时对packet_assembled_counter进行减1操作。当接收到整体工作结束的信息后,关闭文件,结束此次事例组装。所有的数据接收线程相互协同,在事例组装链表中完成事例组装,并通过条件变量通知数据存储线程读取已组装好的数据。从生产者-消费者模型的角度看,数据接收线程是生产者,数据存储线程是消费者。
3.3 图形界面图形界面作为DAQ软件的一部分,通过网络与数据主节点进行命令、状态数据的交互。这样的分层设计便于日后软件的升级和维护。界面软件的功能包括:命令控制、参数配置和状态显示等。
此处选用Qt进行图形界面软件的开发。Qt是一个跨平台的C++图形用户界面库,支持Linux系统,Windows系统及所有的Unix系统[7]。利用千兆以太网和Qt提供的基于传输控制协议(TCP/IP)的Socket API即可实现图形界面与数据主节点间稳定可靠的双向数据传输。采用多线程技术,利用Qt提供的QThread类,将耗时的数据收发置于一个新的线程,可提高界面应用程序的响应速率。
实现的图形界面软件如图 7所示。界面主要分为上下两块区域:上方为命令控制、参数配置区,包括TDC参数配置、开始/结束、自检、TDC逻辑复位、TDC GTP (Gigabit Transceiver with low Power)复位、TRM逻辑使能、TRM逻辑复位、TDC同步启动等命令;下方为状态信息显示区域,将接收到的各模块工作状态信息实时地进行显示。
![]() |
图 7 DAQ软件图形界面 Figure 7 DAQ software graphic interface. |
在实验室环境下,对设计实现的整个软件原型进行了功能测试。测试结果表明,事例组装、参数配置、命令发送、状态显示等功能均工作正常,满足预期要求。
4 测试与验证本节对分布式数据读出节点中的ROB原型模块进行数据传输性能的测试。测试内容包括ROB模块理想网络传输速率以及在全链路情况下的数据传输速率。此处全链路是指ROB模块从FPGA接收硬件数据到通过网络将数据发送出去的全过程。
使用iperf工具测得的ROB模块理想网络传输速率如图 8所示。单线程情况下传输速率能够达到607Mbit·s-1,双线程下约714Mbit·s-1。单线程相比于双线程速率较低并且波动较大,表明ROB的CPU单核处理能力有限。表 1中记录的是ROB模块在不同情况下的数据传输速率测试结果。ROB在全链路情况下的综合传输速率为467Mbit·s-1。
![]() |
图 8 ROB模块理想网络传输速率 Figure 8 Ideal network transmission rate of ROB. |
![]() |
表 1 ROB模块数据传输速率测试结果 Table 1 Test results of ROB module data transfer rate. |
CBM-TOF超级模块探测器具有通道数多、通道击中率高的特点。在对其性能评估、质量控制时,面临SM高数据率(6Gbit·s-1)情况下的数据读出问题,采用传统的基于背板总线和机箱控制器汇总传输的方法,实现难度较大。基于此,本文提出了一种基于千兆以太网的分布式数据读出方法,介绍了针对此读出方案而设计的多节点并行化数据读出软件架构。并基于Linux系统,对数据读出软件架构中的各个部分进行了具体的设计与实现,对分布式数据读出子节点中的ROB模块进行了测试。测试结果表明,针对单条数据传输路径,ROB原型模块在全链路情况下,能实现约467Mbit·s-1的综合数据传输速率。同时传输方案中事例组装、命令发送、状态显示等功能均运行正常。综上,此分布式数据读出方法及设计实现的软件原型可后续用于对CBM-TOF超级模块探测器的质量控制数据读出,方案中分布式数据读出子节点实现还有待进一步的改善。
致谢 感谢CBM合作组孙勇杰副教授、范欢欢博士、汪昀硕士对本文工作的热心帮助,以及在测试方法方面的指导。[1] |
尹春艳. BESⅢ端盖飞行时间读出电子学系统升级设计[D]. 合肥: 中国科学技术大学, 2011.
YIN Chunyan. Design of the upgrading readout electronics system for BESⅢ ETOF[D]. Hefei:University of Science and Technology of China, 2011. |
[2] | Schambach J, Bridges L, Eppley G, et al. STAR time of flight readout electronics, DAQ, and cosmic ray test stand[C]. IEEE Nuclear Science Symposium Conference Record, San Diego, California, 2006:485-488. |
[3] | The CBM Collaboration. Technical design report for the CBM, time-of-flight system (TOF)[EB/OL]. 2017-01-30. https://repository.gsi.de/record/109024. |
[4] | The STAR TOF Collaboration. Proposal for a large area time of flight system for STAR[EB/OL]. 2017-01-30. https://www.star.bnl.gov/public/tof/publications/TOF_20040524.pdf. |
[5] | Kluge A, Spegel M. Study of the ALICE time of flight readout system-AFRO[EB/OL]. 2017-01-30. https://cds.cern.ch/record/434208/files/p377.pdf. |
[6] |
游双.
Linux高性能服务器编程[M]. 北京: 机械工业出版社, 2013.
YOU Shuang. Linux high performance server programming[M]. Beijing: China Machine Press, 2013. |
[7] |
BlanchetteJ, SummerfieldM.
C++ GUI Qt4编程[M]. 北京: 电子工业出版社, 2013.
Blanchette J, Summerfield M. C++ GUI programming with Qt4[M]. Beijing: Publishing House of Electronics Industry, 2013. |