星载干涉成像光谱仪高速数据采集系统的设计

当前位置:首页 >> 仪器仪表技术文章

星载干涉成像光谱仪高速数据采集系统的设计
摘要:在工业及航空航天测控领域,实时数据采集存储是一个基本而且重要的环节。如何提高数 据采集存储的实时性一直是技术人员所关心的问题。结合32位高速数据采集板7300A在星栽干涉 成像光谱仪高速数据采集记录系统的应用, 阐述了在WindowsNT下用vc6.0实现高速数据采集、存 储与实时显示过程。在实现过程中采用了多线程、定时器、双缓存和同步对象等技术,有效保证了光 谱数据采集、存储与显示的稳定性、实时性,用高速数字采集卡实现了高速数字图像采集卡的功能。

0 引言 成像光谱技术能获得被测目标的空间和光谱信 息,在航空航天遥感、军事侦察、环境监测、资源勘测 等领域具有重要的应用价值。从原理上成像光谱技术 可分为色散型和干涉型两大类。由于色散型成像光谱 仪存在着能量低等原理性缺陷,从而使其分辨率和信 噪比都难以提高。而干涉型成像光谱仪在原理上具有 高光谱分辨率和高能量通过率等优点。在相同条件 下,与典型的色散型成像光谱仪相比,进入干涉成像 光谱仪的能量要高200倍左右,而光谱分辨率一般也 要高两个数量级以上。这就要求干涉成像光谱仪的后 续采集处理系统动态范围大、位数高,一般采用12比 特或更多比特量化,结果使得数据量急剧上升,对数 据的采集记录造成了很大的压力。而如何解决干涉成 像光谱仪大量数据的实时存储问题,对于干涉成像光 谱仪来说是非常重要的。此外,由于数据采集量大而 又要求采集与显示实时同步进行,如何解决两者的时 间争用问题,以及两者间的数据共享问题,对于数据 采集记录系统实时性的解决都是非常关键的。

1 系统组成 干涉成像光谱仪输出14路信号,1路时钟,1路 帧同步,12路数据信号,没有行同步。时钟频率为 8.987 MHz. 占空比范围为45—55% ,帧频固定为 68.38 Hz。高电平为正程,持续512x255个时钟,低电 平为逆程(回扫段),持续128个时钟。在帧同步为高 电平时,数据信号传送图像信息,而在低电平时,数据 信号传送辅助参数。辅助参数放在对应图像数据的前 一逆程。由于干涉成像光谱仪传来的光谱图像信号是 低压差分信号(LVDS),所以需要电平转换卡把成该 信号转换为1] 电平并传给7300A 卡进行采集,工 控机的图像采集处理软件对7300A卡采集的数据进 行实时存储、显示等其他相关操作,每帧图像输出的 数据时序如图1所示。 Read cl。ck _ ’ ’ 5 1 。 2 2 5 ; 6 = — 1 3 1 。 0 7 — 2 。 — 。 。 f1 ‘2 :; 。u — 一 : × ‘ : - J egatlve lram e Frame svnc Image data Auxiliarv data D(rD ll 图l 数据输出时序图

2 数据采集 为了实现对干涉成像光谱仪传来的光谱数据的 实时高速采集,选用台湾凌华公司出品的PCI一7300A 数字I/O采集卡。它具有许多良好的特性:32位PCI 总线,32个数字输A/输出通道,高达80 MB/s的传 输速率(32 bit input/output@20 MHz),64 KB 的FI— FO,总线主控DMA方式,100针SCSI—II型的连接 器,完善的开发支持软件【l1。 在开始数据采集时,首先对采集卡进行初始化配 置,然后开始数据采集,同时启动一个工作线程来监 视用户缓冲区(用户设置缓冲区的大小后,由采集卡 的驱动程序创建)的使用情况,以便及时进行数据存 储,最后启动定时器控制实时显示。其具体实现如下: Card=Register Card(PCI_7300A_RevB,0);//注册卡 DI_ 7300B_ Config(Card,16,TRIG_EXT_STROBE, P7300_ W AIT_ TRG, P7300_ TERM _ ON, P7300_ DIREQ_NEG I P7300_DIACK_NEG I 7300_ DITRIG_ POS,1,0); ,/7300A卡的初始化配置。 DI ContMultiBuferStart(card,0,1);,/启动缓存 DI_ AsyncMultiBufferNextReady(card,&Next Ready,&BufferId);//判断缓存准备好信号 m _ Timer ID=Set Timer(1,SCAN_INTERVAL, NIⅡL);,/定时开启实时显示

3 数据存储 针对PCI 7300A采集卡高速采集的特点,在凌华 公司的驱动程序包PCI DASK中,提供了专门用于实 现高速数据采集的连续多缓冲区操作的一组函数。通 过这组函数,可以按照循环缓冲区的原理,非常方便 地实现对数据的连续、实时和大容量采集【21。 为了通过使用PCI 7300A高速数据采集卡和PCI DASK的双缓冲区模式,达到实时数据存储速率不低 于32 MB/s的目标,需使用非常规的方法。而且工作 在双缓冲区模式时,如果在第二个半缓冲区被写满之 前,不能完成对第一个半缓冲区中数据的处理,则会 出现第一个缓冲区中未处理完的数据被新数据覆盖 的情况,最终导致所采集到的数据不可用。通过使用 SCSI硬盘控制器和高转速的SCSI硬盘来解决,其硬 件结构如图2所示。目前,15000转/分的SCSI硬盘, 总线数据传输速率80 120 MB/s,持续数据传输速率 大于50 MB/s,SCSI硬盘在标识硬盘扇区时使用了线 性的概念,即硬盘只有线性的第1扇区、第2扇区, ⋯ , 第n扇区,该线性编排方式的优点是访问延时最 小,可加速硬盘存取速率,尤其在大容量持续数据存 储时.这种编排方式的优点更加明显。 Industrial computer EMS memory H c a ig plu h s rin pee g d c d a r a c p ing carddta I lI conStCroSl Ic ard Hr l haSrCdS d[isk 图2 高速硬盘记录系统结构图 Fig.2 High speed HD record system structure chart 借助于Adaptec公司所提供的ASPI(Advanced SCSI Programming Interface)中的函数[3-51,直接对SC— SI控制卡进行操作,绕过Windows传统的文件系统, 以原始数据块(RAW DATABLOCK)的格式,对SCSI 硬盘进行读/写访问。使用ASPI控制SCSI硬盘写数 据的流程(如图3所示),使用ASPI函数发出一条写 数据指令,指令包括:主适配器号、SCSI硬盘标识号、 逻辑单元号及写入的位置和长度。ASPI管理器将收 到的函数指令转换为ASPI指令传送给ASPI驱动, ASPI驱动将ASPI指令及参数转换为适当的SCSI指 令,并把此指令送给SCSI控制器,该控制器依照指令 在其硬盘上执行写数据操作。具体步骤如下: [nput data ASP【 m anager ASP【 SCSI 卜、J High speed controller卜 SCSI HD 图3 用ASPI函数写高速SCSI硬盘的流程 Fig.3 Chart of writing SCSI HD witIl ASPI function
(1)建立指令 所有ASPI指令都使用一个SCSI请求块(SRB) 的数据结构,SRB包含了SCSI指令描述块(DDB), SCSI标准规格的指令和参数均封装在DDB中。
(2)指令发送 在SRB被正确初始化后,就可简单地把它的地 址传递给ASPI管理器,ASPI管理器将处理实际SCSI 指令的所有阶段和数据传输。ASPI管理器使指令的 实际执行同请求一个功能调用一样简单,通常只是把 SRB放在一个队列中,且立即返回调用值,甚至在指 令开始执行之前。这就允许应用程序在一个指令还在 执行的时候,就为下一条指令做好准备。ASPI管理器 在后台处理执行这些指令过程中的所有细节,然后在 指令完全执行后,更新SRB中的状态字段。
(3)等待指令完成 应用程序需等待SRB完成,再执行下一步动作。 因ASPI管理器可能在一个SRB完成之前返回。故应 用程序一定不能分配SRB或依赖于任何SRB返回数 据。保证这一点最简单的方法就是这支一个循环,等 待SRB状态字段指示SRB已经完成。但该方式浪费 了宝贵的CPU时间。对于性能要求很高的系统,ASPI 提供了另外一种等待的方法,即对在SRB中指明的 例行程序的一次回调,当ASPI管理器处理完SRB,它 将调用指定的例行程序。这个回调程序能够检查SRB 的状态字段,并能立即执行另外一个SRB。
(4)回调及容错处理 应用程序在回调程序中,首先检查SRB的状态 字段,做出相应的处理,对可能遇到的错误能容错处 理。 在使用ASPI函数时,还应注意:(1)使DDB控制 字段中的连接标志有效, 指出该DDB是一系列连接 指令的一部分. 避免出现SCSI总线的重新选择阶段 使目标硬盘可持续连接在总线上,实时记录数据。(2) 应准备多个SRB,把它们放人前台的对列,只要前面 的指令完成,就用一个回调程序发送下一个要执行的 SRB给后台的ASPI管理器。(3)在内存中开辟2个适 当大小的数据缓冲区,以乒乓方式将数据从采集卡送 人硬盘,数据的传输以中断和DMA的方式进行。 能直接存取SCSI硬盘后,就可以跳过Windows 的文件系统,把每一组数据存放到硬盘中的指定位 置。经过实测,采用Adaptec 29320一R SCSt适配卡和 Scagatc ST336753LW 硬盘(15000转/min、持续传输速 率为65 MB/s的SCSI硬盘),经ASPI函数直接控制 硬盘记录数据,记录速度可达43—56 MB/s。配合数据 采集卡,以20 MB/s的速度持续记录,并连续记录30 GB,实测没有出现差错。

4 实时显示 如果能够实时观察到干涉成像光谱仪数据采集 系统采集到的光谱信号,对于了解系统的工作状态、 及时做出相应的调整,将是非常有实际意义的,这就 需要把采集与显示同步进行。对于抢占式多任务操作 系统Windows来说,利用多线程技术,把采集与显示 放到不同的线程中实现。只须解决两者间的协调同 步,就可以满足采集与显示的实时同步。在本采集程 序中,采集程序放在工作线程,显示程序则放在主线 程中,两者通过全局数据对象进行数据的共享。从共 享数据缓冲区中取数据的操作由定时器来控制实现 使用定时器计时.最重要的一个函数是SetTimer.Set. Timer会从系统中获取一个计时器时间。调用Set. Timer还必须提供一个参数。用以设置定时器的时间 间隔。每隔一段时间间隔。计时器便传送WM_TIMER 消息给应用程序。在程序中。创建一个可激活的图像 实时显示窗口,窗口激活后用该函数设定计时器的时 间常数。窗口创建后, 以此窗口句柄创建处理 W M _ TtMER消息的函数,每隔一定的时间(比如0.1 s)图像显示一次。经实验测定,每隔0.02 s显示一次, 综合性能最佳,虽然没有达到实时显示的效果(70 帧/s),但满足视觉需要。另外有原始数据记录可供调 用,因此认为基本满足实时显示的要求。 在显示过程中,采用BMP方式。我们采集到的光 谱数据是12位的数据,现在BMP方式也可以16位 显示,但这需要专门的硬件与之配合,成本过高。于是 采用8位的BMP方式,即只显示高8位的光谱数据, 通过内存中写像素点的方式实现。首先自己填写 BMP头。然后在内存中写像素点,其代码主要如下: for(i=0;i<512;i++) f ::舶ad((void*)(Tmp),512,1,hFile);//一次 读一行256个点的数据.256*2 data=Tmp; for(j=0;j<256;j++)//取2个字节进行运算, 2个字节刚好是1个点的数据16 bit(低12 bit有效)。 fdatal=data[O]>>4;低字节右移4位 data2,=data[1]<<4;高字节左移4位 data3=datalIdata2:高字节低4位与低 字节高4位合成一个字节,即取12 bit的高8位 ptr【k+0]=data3;合成BMP图像,3个 p仃值对应3个颜色分量 ptr[k+l】=data3; ptr[k+2]=data3; k=k+3; data+=2;} }

5 应用及结论 干涉成像光谱仪光谱信号采集记录系统研制完 成后,可作为地面检测测量系统的组成部分。进行过 长期的地面联调试验和多次机载飞行试验,成功地完 成了飞行试验任务,获取了高质量的光谱图像。用干 涉成像光谱仪高速数据采集系统采集到的光谱图像 经复原计算合成的彩色遥感图像,如图4所示【6]。

发布人:2010/10/11 10:21:001115 发布时间:2010/10/11 10:21:00 此新闻已被浏览:1115次