摘要:讨论了串行总线(usb)技术应用于便 携式多道γ能谱仪的可行性,并详细介绍了 系统的硬件、固件、设备驱动程序以及应用程序的设计方法,zui后给出了其性能测试结果。
关键词:usb γ能谱数据采集 wdm
野外地面γ能谱测量技术主要研究地壳岩石土壤中产生的能量范围约为30kev~3000kev的γ射线,这里面包含着轴、钾等天然放射性核元素信息、核工程活动产生的大量人工放射性核元素信息以及γ射线与地壳相互作用产生的相关信息。而用于获取和处理γ能谱数据的多道γ能谱仪是重要的研究课题,其功能是把从γ射线探测器得到的脉冲信号转换为x-y轴的能谱形式并显示出来(x轴代表能量,y轴代表脉冲计数)。
传统的多道γ能谱仪一般采用nim(nuclear instrument module)插件的标准模式。但其存在体积庞大、抗*力差等缺点,不适合于野外现场测量。为适应多道γ能谱仪智能化、微机化、便携化的实际需要,本设计采用笔记本电脑作为γ能谱仪的上位机。常用接口方式主要有rs-232c串口、红外线端口、epp并口、usb、1394、ethernet等。这几种接口方式的特点比较如表1所示。
表1 接口方式特点比较
方式 长度(m) 速度(b/s) 主要优点 主要缺点
串口 15 20k 应用广泛,研发简单 速度慢,逐渐被淘汰
并口 10 8m 速度较快,研发简单 逐渐被淘汰
红外线 2 115k 无线传输 距离短,可靠性差,耗电大
usb1.1 5 12m 传输稳定,速度快,使用方便,具有弹性,代表接口发展方向 协议复杂,研发难度较大
1394 1.5 400m 传输速度快,具有弹性 特定用途(视频),研发难度大
ethernet 500 10m 传输可靠,使用方便 ,资源共享 特定用途(lan),研发难度大
经过比较轮证发现,usb作为近年出现的一种代表微机接口发展方向的新型总线规范,其便捷易用、速度快、可靠性高等特点,使之非常适合作为便携式多道γ能谱仪的接口方式。目前大多数笔记本电脑一般都有两个以下的usb端口,usb规范规定每个端口提供5v、500ma的电量,而笔记本电脑在实际应用时,通常是通过自带锂电池供电的,无法提供足够的电量给外设,这时就会造成外设工作不正常,甚至使系统崩溃。考虑到本系统下位机部分功耗较大,因此供电方式使用外置电源。
笔者在吸收借鉴γ能谱测量技术研究成果的基础上,进行了usb便携式多道γ能谱仪的设计。本设计主要完成硬件、固件、设备驱动程序以及应用程序等的设计工作。
1 硬件设计
1.1 系统总线结构
图1所示为usb便携式多道γ能谱仪的总体结构框图。下位机硬件部分主要由γ射线探测系统(探头)、脉冲信号调理电路、数字电位器、多道脉冲幅度分析器、usb接口电路以及电源电路等构成,其中探头部分包括闪烁探测器、前置电路和高压电路等,多道脉冲幅度分析器主要包括峰值别电路、控制电路、a/d转换电路以及微控制器系统等。上位机由笔记本电脑系统构成。
软件部分由固件、设备驱动和应用程序组成。
1.2 usb接口电路
由于usb本身的控制协议较为复杂,需要使用相应的usb接口芯片。本设计采用了philips公司的usb接口芯片pdiusbd12(简称d12),其优点是可以选择合适的微控制器及其开发系统进行外设开发。
d12内部集成了串行输入引擎(sie)、320字节的多结构fifo存储器、收发器以及电压调整器,支持dma方式,采用双缓冲区技术,遵从usb1.1标准。芯片中串行输入引擎(sie)模块起着至关重要的作用,完成所有usb协议层功能,如同步模式识别、并/串转换、位填充/解填充、crc检验/产生、包pid产生/确认、地址识别、握手信号包响应产生等。另外,d12还集成了softconnect、goodlink、可编程时钟输出、低频晶振和终端电阻等特性,提高了系统的性价比。
微控制器采用hyundai公司的gms90l32,它是一种兼容in8032微控制器的产品,其主要特点是工作电压范围宽(2.7v~5.5v)、功耗低、性价比高。d12与gms90l32的连接如图2所示。本设计使用了多路地址/数据总线复用方式。
此外,本系统选用了美国st公司的psd913f2,它是用于8位微控制器的具有大容量flash存储器、在系统编程(isp)能够和可编程逻辑的器件。它将地址锁存器、flash、sram、pld等集成在一个芯片内,成功地实现了微控制器系统的“mcu+psd"两芯片解决方案。这种方案既可简化电路设计,节省pcb印制板空间,缩短产品开发周期,又可增加系统可靠性,降低产品功耗。
2 系统软件设计
2.1 微控制器固件程序
所谓固件程序就是固化在程序存储器中的程序代码。本系统的固件存储在psd913f2的flash存储器中,固件开发使用的是keil c51语言,开发平台为μvision2集成开发环境。
固件的开发是移植与开发相结合。本设计参考了philips公司提供的d12固件程序范例,对于usb协议操作的相关代码可以直接移植使用,而数据采集、传输、存储等部分则是全新的开发工作。
固件程序结构如图3所示。硬件抽象层对d12的数据读、写以及各种指令的写入进行函数封装;d12命令接口层对d12的所有控制指令的函数进行封装;usb向量请求模块完成usb上电配置、向量请求等各类事件的响应处理;usb协议层包括对usb协议操作的封装以及对usb标准请求的响应;中断服务进程包括usb中断、adc中断以及定时器0中断(记录测量时间)等。
主程序及adc中断服务程序流程图如图4所示。主程序首先完成各种初始化,然后进入主循环,等待中断的发生,并根据标志变量执行相应的函数。当打开控制电路时,脉冲峰值别电路自动启动a/d转换,转换结束信号会触发微控制器外部中断1,进入adc中断服务程序,读取a/d转换结果并存入缓存中,然后中断返回。
当d12有事件需要处理时,将触发微控制器外部中断0,微控制器读取d12的中断状态寄存器,判断中断的来源并作出相应的处理。若由数据端点触发,则相应地读取或写入数据;若由控制端点0触发,则判断请求的类型。标准请求由usb协议处理模块处理,用户自定义向量请求由usb向量请求模块处理。
2.2 usb设备驱动程序的设计
在windows环境下,usb设备驱动程序遵循wdm(win32 driver mode)方式。为了简化设计,并兼顾驱动程序的运行效率,笔者选用了driverstudio2.7工具软件中的driverworks组件进行usb设备驱动程序的开发。driverworks为wdm设备驱动程序的开发提供了完善的支持。其中包含一个非常完善的源代码生成工具driverwizard以及相应的类库和驱动程序范例,它还支持在c++下进行设备驱动程序的开发。通过driverwizard生成的代码只需要进行少量的修改可以使用,这使得驱动程序可以将精力集中在驱动功能的实现上,而不必理会太多的wdm开发细节。
本设计在driverwizard的zui后自定义了三个ioctl接口对usb设备进行控制,如表2所示。然后在自动生成的驱动程序代码中向相应的ioctl函数添加代码,用函数buildverdorrequest构建usb协议的自定义向量请求(vendor request)。由编译修改后的源代码即可得到驱动程序文件mcad12.sys。
表2 自定义ioctl接口
自定义ioctl接口 功能说明
mca_ioctl_start 启动多道采集数据
mca_ioctl_read 开始读取数据
mca_ioctl_start 停止多道数据
2.3 usb应用程序的设计
应用程序的设计在visual c++6.0开发环境下进行。根据实际要求,本设计需要在软件中对采集的数据进行整理、分析并显示。其功能模块主要有数据采集、谱数据显示、roi操作、系统刻度、谱分析等,其结构框图如图5所示。
在win32系统中,usb设备被抽象为一个文件,应用程序只需要通过几个api函数就可以实现与驱动程序中usb设备的通信。api函数如表3所示。
表3 设备文件操作api函数
api函数 功能说明
cr-eatefile 打开设备
readfile 从设读取数据
writefile 向设备发送数据
closehandle 关闭设备
deviceiocontrol i/o控制操作
本程序设计使用mfc多线程技术。单击开始按钮,程序就创建一个用户接口线程,并且通过ioctl启动usb设备,然后在此线程每隔一定时间(10~20ms)从usb总线上读取一次数据;而程序自身的主线程则不断地依据读取的数据刷新屏幕,显示多道能谱。当单击停止按钮或是设定采集时间到时,程序则通过ioctl停止usb设备的数据采集,终止用户接口线程,并且停止屏幕谱线的更新。
当创建用户接口线程时,首先从cwinthread类派生一个ciothread类,然后调用afxbeginthread()函数创建ciothread类的对象进行初始化,启动线程运行。根据需要可将初始化和结束代码分别放在类的initinstance()和exitinstance()函数中。其中,initinstance()函数是从usb采集数据的线程的主要函数。从中实现对ioctl的调用、对usb设备数据的读取等功能。其流程如图6所示。
3 测试与结论
实测cs放射源γ能谱如图7所示。根据能量为0.6641mev的谱峰,系统可以自动计算能量分辨率,实测能量分辨率小于10%。
经过严格测试,该系统其它主要技术指标为:γ射线能量分析范围为20kev~3.0mev; γ能谱分析道数为1024道;放射源能量非线性系数小于5%;使用nai(t1)探测器时,整机功耗小于960mw;实测usbzui大数据传输速率约为1mbps;连续测量数据符合放射性统计涨落规律;设备驱动及应用程序兼容win98/2000/xp。
上述结果表明,本系统的技术路线和软硬件设计*,方案合理,并具有一定的创新性和实用价值。对本系统编译稍加修改便可应用于其它基于微机的数据采集、自动化测控系统中。