星載干涉成像光譜儀高速數(shù)據(jù)采集系統(tǒng)的設(shè)計

當(dāng)前位置:首頁 >> 儀器儀表技術(shù)文章

星載干涉成像光譜儀高速數(shù)據(jù)采集系統(tǒng)的設(shè)計
摘要:在工業(yè)及航空航天測控領(lǐng)域,實時數(shù)據(jù)采集存儲是一個基本而且重要的環(huán)節(jié)。如何提高數(shù) 據(jù)采集存儲的實時性一直是技術(shù)人員所關(guān)心的問題。結(jié)合32位高速數(shù)據(jù)采集板7300A在星栽干涉 成像光譜儀高速數(shù)據(jù)采集記錄系統(tǒng)的應(yīng)用, 闡述了在WindowsNT下用vc6.0實現(xiàn)高速數(shù)據(jù)采集、存 儲與實時顯示過程。在實現(xiàn)過程中采用了多線程、定時器、雙緩存和同步對象等技術(shù),有效保證了光 譜數(shù)據(jù)采集、存儲與顯示的穩(wěn)定性、實時性,用高速數(shù)字采集卡實現(xiàn)了高速數(shù)字圖像采集卡的功能。

0 引言 成像光譜技術(shù)能獲得被測目標(biāo)的空間和光譜信 息,在航空航天遙感、軍事偵察、環(huán)境監(jiān)測、資源勘測 等領(lǐng)域具有重要的應(yīng)用價值。從原理上成像光譜技術(shù) 可分為色散型和干涉型兩大類。由于色散型成像光譜 儀存在著能量低等原理性缺陷,從而使其分辨率和信 噪比都難以提高。而干涉型成像光譜儀在原理上具有 高光譜分辨率和高能量通過率等優(yōu)點。在相同條件 下,與典型的色散型成像光譜儀相比,進(jìn)入干涉成像 光譜儀的能量要高200倍左右,而光譜分辨率一般也 要高兩個數(shù)量級以上。這就要求干涉成像光譜儀的后 續(xù)采集處理系統(tǒng)動態(tài)范圍大、位數(shù)高,一般采用12比 特或更多比特量化,結(jié)果使得數(shù)據(jù)量急劇上升,對數(shù) 據(jù)的采集記錄造成了很大的壓力。而如何解決干涉成 像光譜儀大量數(shù)據(jù)的實時存儲問題,對于干涉成像光 譜儀來說是非常重要的。此外,由于數(shù)據(jù)采集量大而 又要求采集與顯示實時同步進(jìn)行,如何解決兩者的時 間爭用問題,以及兩者間的數(shù)據(jù)共享問題,對于數(shù)據(jù) 采集記錄系統(tǒng)實時性的解決都是非常關(guān)鍵的。

1 系統(tǒng)組成 干涉成像光譜儀輸出14路信號,1路時鐘,1路 幀同步,12路數(shù)據(jù)信號,沒有行同步。時鐘頻率為 8.987 MHz. 占空比范圍為45—55% ,幀頻固定為 68.38 Hz。高電平為正程,持續(xù)512x255個時鐘,低電 平為逆程(回掃段),持續(xù)128個時鐘。在幀同步為高 電平時,數(shù)據(jù)信號傳送圖像信息,而在低電平時,數(shù)據(jù) 信號傳送輔助參數(shù)。輔助參數(shù)放在對應(yīng)圖像數(shù)據(jù)的前 一逆程。由于干涉成像光譜儀傳來的光譜圖像信號是 低壓差分信號(LVDS),所以需要電平轉(zhuǎn)換卡把成該 信號轉(zhuǎn)換為1] 電平并傳給7300A 卡進(jìn)行采集,工 控機的圖像采集處理軟件對7300A卡采集的數(shù)據(jù)進(jìn) 行實時存儲、顯示等其他相關(guān)操作,每幀圖像輸出的 數(shù)據(jù)時序如圖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 數(shù)據(jù)輸出時序圖

2 數(shù)據(jù)采集 為了實現(xiàn)對干涉成像光譜儀傳來的光譜數(shù)據(jù)的 實時高速采集,選用臺灣凌華公司出品的PCI一7300A 數(shù)字I/O采集卡。它具有許多良好的特性:32位PCI 總線,32個數(shù)字輸A/輸出通道,高達(dá)80 MB/s的傳 輸速率(32 bit input/output@20 MHz),64 KB 的FI— FO,總線主控DMA方式,100針SCSI—II型的連接 器,完善的開發(fā)支持軟件【l1。 在開始數(shù)據(jù)采集時,首先對采集卡進(jìn)行初始化配 置,然后開始數(shù)據(jù)采集,同時啟動一個工作線程來監(jiān) 視用戶緩沖區(qū)(用戶設(shè)置緩沖區(qū)的大小后,由采集卡 的驅(qū)動程序創(chuàng)建)的使用情況,以便及時進(jìn)行數(shù)據(jù)存 儲,最后啟動定時器控制實時顯示。其具體實現(xiàn)如下: 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);//判斷緩存準(zhǔn)備好信號 m _ Timer ID=Set Timer(1,SCAN_INTERVAL, NIⅡL);,/定時開啟實時顯示

3 數(shù)據(jù)存儲 針對PCI 7300A采集卡高速采集的特點,在凌華 公司的驅(qū)動程序包PCI DASK中,提供了專門用于實 現(xiàn)高速數(shù)據(jù)采集的連續(xù)多緩沖區(qū)操作的一組函數(shù)。通 過這組函數(shù),可以按照循環(huán)緩沖區(qū)的原理,非常方便 地實現(xiàn)對數(shù)據(jù)的連續(xù)、實時和大容量采集【21。 為了通過使用PCI 7300A高速數(shù)據(jù)采集卡和PCI DASK的雙緩沖區(qū)模式,達(dá)到實時數(shù)據(jù)存儲速率不低 于32 MB/s的目標(biāo),需使用非常規(guī)的方法。而且工作 在雙緩沖區(qū)模式時,如果在第二個半緩沖區(qū)被寫滿之 前,不能完成對第一個半緩沖區(qū)中數(shù)據(jù)的處理,則會 出現(xiàn)第一個緩沖區(qū)中未處理完的數(shù)據(jù)被新數(shù)據(jù)覆蓋 的情況,最終導(dǎo)致所采集到的數(shù)據(jù)不可用。通過使用 SCSI硬盤控制器和高轉(zhuǎn)速的SCSI硬盤來解決,其硬 件結(jié)構(gòu)如圖2所示。目前,15000轉(zhuǎn)/分的SCSI硬盤, 總線數(shù)據(jù)傳輸速率80 120 MB/s,持續(xù)數(shù)據(jù)傳輸速率 大于50 MB/s,SCSI硬盤在標(biāo)識硬盤扇區(qū)時使用了線 性的概念,即硬盤只有線性的第1扇區(qū)、第2扇區(qū), ⋯ , 第n扇區(qū),該線性編排方式的優(yōu)點是訪問延時最 小,可加速硬盤存取速率,尤其在大容量持續(xù)數(shù)據(jù)存 儲時.這種編排方式的優(yōu)點更加明顯。 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 高速硬盤記錄系統(tǒng)結(jié)構(gòu)圖 Fig.2 High speed HD record system structure chart 借助于Adaptec公司所提供的ASPI(Advanced SCSI Programming Interface)中的函數(shù)[3-51,直接對SC— SI控制卡進(jìn)行操作,繞過Windows傳統(tǒng)的文件系統(tǒng), 以原始數(shù)據(jù)塊(RAW DATABLOCK)的格式,對SCSI 硬盤進(jìn)行讀/寫訪問。使用ASPI控制SCSI硬盤寫數(shù) 據(jù)的流程(如圖3所示),使用ASPI函數(shù)發(fā)出一條寫 數(shù)據(jù)指令,指令包括:主適配器號、SCSI硬盤標(biāo)識號、 邏輯單元號及寫入的位置和長度。ASPI管理器將收 到的函數(shù)指令轉(zhuǎn)換為ASPI指令傳送給ASPI驅(qū)動, ASPI驅(qū)動將ASPI指令及參數(shù)轉(zhuǎn)換為適當(dāng)?shù)腟CSI指 令,并把此指令送給SCSI控制器,該控制器依照指令 在其硬盤上執(zhí)行寫數(shù)據(jù)操作。具體步驟如下: [nput data ASP【 m anager ASP【 SCSI 卜、J High speed controller卜 SCSI HD 圖3 用ASPI函數(shù)寫高速SCSI硬盤的流程 Fig.3 Chart of writing SCSI HD witIl ASPI function
(1)建立指令 所有ASPI指令都使用一個SCSI請求塊(SRB) 的數(shù)據(jù)結(jié)構(gòu),SRB包含了SCSI指令描述塊(DDB), SCSI標(biāo)準(zhǔn)規(guī)格的指令和參數(shù)均封裝在DDB中。
(2)指令發(fā)送 在SRB被正確初始化后,就可簡單地把它的地 址傳遞給ASPI管理器,ASPI管理器將處理實際SCSI 指令的所有階段和數(shù)據(jù)傳輸。ASPI管理器使指令的 實際執(zhí)行同請求一個功能調(diào)用一樣簡單,通常只是把 SRB放在一個隊列中,且立即返回調(diào)用值,甚至在指 令開始執(zhí)行之前。這就允許應(yīng)用程序在一個指令還在 執(zhí)行的時候,就為下一條指令做好準(zhǔn)備。ASPI管理器 在后臺處理執(zhí)行這些指令過程中的所有細(xì)節(jié),然后在 指令完全執(zhí)行后,更新SRB中的狀態(tài)字段。
(3)等待指令完成 應(yīng)用程序需等待SRB完成,再執(zhí)行下一步動作。 因ASPI管理器可能在一個SRB完成之前返回。故應(yīng) 用程序一定不能分配SRB或依賴于任何SRB返回數(shù) 據(jù)。保證這一點最簡單的方法就是這支一個循環(huán),等 待SRB狀態(tài)字段指示SRB已經(jīng)完成。但該方式浪費 了寶貴的CPU時間。對于性能要求很高的系統(tǒng),ASPI 提供了另外一種等待的方法,即對在SRB中指明的 例行程序的一次回調(diào),當(dāng)ASPI管理器處理完SRB,它 將調(diào)用指定的例行程序。這個回調(diào)程序能夠檢查SRB 的狀態(tài)字段,并能立即執(zhí)行另外一個SRB。
(4)回調(diào)及容錯處理 應(yīng)用程序在回調(diào)程序中,首先檢查SRB的狀態(tài) 字段,做出相應(yīng)的處理,對可能遇到的錯誤能容錯處 理。 在使用ASPI函數(shù)時,還應(yīng)注意:(1)使DDB控制 字段中的連接標(biāo)志有效, 指出該DDB是一系列連接 指令的一部分. 避免出現(xiàn)SCSI總線的重新選擇階段 使目標(biāo)硬盤可持續(xù)連接在總線上,實時記錄數(shù)據(jù)。(2) 應(yīng)準(zhǔn)備多個SRB,把它們放人前臺的對列,只要前面 的指令完成,就用一個回調(diào)程序發(fā)送下一個要執(zhí)行的 SRB給后臺的ASPI管理器。(3)在內(nèi)存中開辟2個適 當(dāng)大小的數(shù)據(jù)緩沖區(qū),以乒乓方式將數(shù)據(jù)從采集卡送 人硬盤,數(shù)據(jù)的傳輸以中斷和DMA的方式進(jìn)行。 能直接存取SCSI硬盤后,就可以跳過Windows 的文件系統(tǒng),把每一組數(shù)據(jù)存放到硬盤中的指定位 置。經(jīng)過實測,采用Adaptec 29320一R SCSt適配卡和 Scagatc ST336753LW 硬盤(15000轉(zhuǎn)/min、持續(xù)傳輸速 率為65 MB/s的SCSI硬盤),經(jīng)ASPI函數(shù)直接控制 硬盤記錄數(shù)據(jù),記錄速度可達(dá)43—56 MB/s。配合數(shù)據(jù) 采集卡,以20 MB/s的速度持續(xù)記錄,并連續(xù)記錄30 GB,實測沒有出現(xiàn)差錯。

4 實時顯示 如果能夠?qū)崟r觀察到干涉成像光譜儀數(shù)據(jù)采集 系統(tǒng)采集到的光譜信號,對于了解系統(tǒng)的工作狀態(tài)、 及時做出相應(yīng)的調(diào)整,將是非常有實際意義的,這就 需要把采集與顯示同步進(jìn)行。對于搶占式多任務(wù)操作 系統(tǒng)Windows來說,利用多線程技術(shù),把采集與顯示 放到不同的線程中實現(xiàn)。只須解決兩者間的協(xié)調(diào)同 步,就可以滿足采集與顯示的實時同步。在本采集程 序中,采集程序放在工作線程,顯示程序則放在主線 程中,兩者通過全局?jǐn)?shù)據(jù)對象進(jìn)行數(shù)據(jù)的共享。從共 享數(shù)據(jù)緩沖區(qū)中取數(shù)據(jù)的操作由定時器來控制實現(xiàn) 使用定時器計時.最重要的一個函數(shù)是SetTimer.Set. Timer會從系統(tǒng)中獲取一個計時器時間。調(diào)用Set. Timer還必須提供一個參數(shù)。用以設(shè)置定時器的時間 間隔。每隔一段時間間隔。計時器便傳送WM_TIMER 消息給應(yīng)用程序。在程序中。創(chuàng)建一個可激活的圖像 實時顯示窗口,窗口激活后用該函數(shù)設(shè)定計時器的時 間常數(shù)。窗口創(chuàng)建后, 以此窗口句柄創(chuàng)建處理 W M _ TtMER消息的函數(shù),每隔一定的時間(比如0.1 s)圖像顯示一次。經(jīng)實驗測定,每隔0.02 s顯示一次, 綜合性能最佳,雖然沒有達(dá)到實時顯示的效果(70 幀/s),但滿足視覺需要。另外有原始數(shù)據(jù)記錄可供調(diào) 用,因此認(rèn)為基本滿足實時顯示的要求。 在顯示過程中,采用BMP方式。我們采集到的光 譜數(shù)據(jù)是12位的數(shù)據(jù),現(xiàn)在BMP方式也可以16位 顯示,但這需要專門的硬件與之配合,成本過高。于是 采用8位的BMP方式,即只顯示高8位的光譜數(shù)據(jù), 通過內(nèi)存中寫像素點的方式實現(xiàn)。首先自己填寫 BMP頭。然后在內(nèi)存中寫像素點,其代碼主要如下: for(i=0;i<512;i++) f ::舶ad((void*)(Tmp),512,1,hFile);//一次 讀一行256個點的數(shù)據(jù).256*2 data=Tmp; for(j=0;j<256;j++)//取2個字節(jié)進(jìn)行運算, 2個字節(jié)剛好是1個點的數(shù)據(jù)16 bit(低12 bit有效)。 fdatal=data[O]>>4;低字節(jié)右移4位 data2,=data[1]<<4;高字節(jié)左移4位 data3=datalIdata2:高字節(jié)低4位與低 字節(jié)高4位合成一個字節(jié),即取12 bit的高8位 ptr【k+0]=data3;合成BMP圖像,3個 p仃值對應(yīng)3個顏色分量 ptr[k+l】=data3; ptr[k+2]=data3; k=k+3; data+=2;} }

5 應(yīng)用及結(jié)論 干涉成像光譜儀光譜信號采集記錄系統(tǒng)研制完 成后,可作為地面檢測測量系統(tǒng)的組成部分。進(jìn)行過 長期的地面聯(lián)調(diào)試驗和多次機載飛行試驗,成功地完 成了飛行試驗任務(wù),獲取了高質(zhì)量的光譜圖像。用干 涉成像光譜儀高速數(shù)據(jù)采集系統(tǒng)采集到的光譜圖像 經(jīng)復(fù)原計算合成的彩色遙感圖像,如圖4所示【6]。

發(fā)布人:2010/10/11 10:21:001051 發(fā)布時間:2010/10/11 10:21:00 此新聞已被瀏覽:1051次