基于PXI總線的水聲目標回波模擬模塊的設計
目標回波模擬是通過計算機系統(tǒng)對水聲信號進行建模,然后在計算機或其它設備上實時模擬水聲目標回波并輸入至信號處理器,以達到檢測信號處理單元功能、性能的目的。PXI總線是PCI 在儀器領域的擴展,它將Compact PCI 規(guī)范定義的PCI 總線技術發(fā)展成適合于試驗、測量與數(shù)據(jù)采集場合應用的機械、電氣和軟件規(guī)范,從而形成了新的虛擬儀器體系結(jié)構(gòu)。目前,PXI 總線在測控領域得到了越來越多的應用。
本文引用地址:http://www.ex-cimer.com/article/201612/329499.htm本文介紹了自行設計研制的寬帶回波模擬器,可模擬4 路水下目標回波,且各目標的方位、速度、強度、距離等參數(shù)在計算機的控制下實時可控,為多參數(shù)回波模擬水池實驗系統(tǒng)提供一套功能強、實時性好、使用方便的通用寬帶回波模擬模塊。
1 寬帶水聲目標回波模型
目前聲吶的發(fā)射信號大量采用寬帶信號,傳統(tǒng)的窄帶回波模型已經(jīng)難以適應回波仿真的要求,必須使用寬帶回波模擬進行分析。主動自導工作時,由發(fā)射機向目標發(fā)出聲波u(t),經(jīng)目標反射后形成回波s(t)?;夭╯(t)攜帶著有關目標的所有信息,是檢測和參數(shù)估計的全部依據(jù)。由于目標的運動,發(fā)射波形與接收波形的寬度是不同的,存在時間壓縮效應。若目標做勻速運動,速度為v,海水中聲速為c,則寬帶目標回波模型如下:
由寬帶回波模型可見,回波與發(fā)射波相比,有幾點變化:
① 振幅衰減,對慢起伏點目標,其時間包絡為瑞利分布的隨機變量。
?、?時延,回波相比發(fā)射波延遲0 τ 。
③ 時間尺度 s,使得時間包絡產(chǎn)生伸縮,即時寬和幅寬受到壓縮或擴展。
2 系統(tǒng)需求與設計結(jié)構(gòu)
2.1 系統(tǒng)需求
為了滿足寬帶回波模擬的需要,回波模擬模塊應具有以下功能:
① 具有更大的動態(tài)范圍以模擬不同距離的目標回波;
?、?能夠精確地模擬目標回波的強度、時延和脈沖伸縮;
?、?能夠精確地測量并記錄輸入、輸出信號的各項參數(shù)。
在對以上功能進行仔細分析后,確定回波模擬器應滿足以下參數(shù):
?、?目標強度:0~80dB(可設定),0.375dB 檔;
② 回波時延:0~3 秒,誤差不大于0.5%;
?、?模擬運動速度:-30~+30kn;
④ 脈沖展寬可設定;
回波模擬器將接收到的脈沖信號通過 AD 轉(zhuǎn)換保存在FIFO 中,發(fā)射時再從FIFO 里取出數(shù)據(jù)進行DA。這種方式很好地保存了接收信號的信息,同時DA 輸出時鐘逐Hz 可調(diào),能實現(xiàn)對回波進行脈沖展寬。經(jīng)過數(shù)字衰減后輸出,衰減程控可調(diào),可用于形成回波包絡。
2.2 系統(tǒng)結(jié)構(gòu)
在某檢測設備的研制過程中,研制了基于 PXI 總線的回波模擬模塊,該模塊能對發(fā)射信號進行高速采集,在精確延遲后,提供模擬回波,可利用聲對接陣對聲納進行陸上測試。系統(tǒng)結(jié)構(gòu)框圖如圖 1 所示:
圖 1 回波模擬模塊結(jié)構(gòu)框圖
回波模擬模塊包括模擬輸入、數(shù)據(jù)采集、數(shù)據(jù)存儲、數(shù)據(jù)回放、DDS 方波產(chǎn)生器、PXI接口六部分。系統(tǒng)結(jié)構(gòu)如圖1 所示。其核心部分是AD 轉(zhuǎn)換、DA 輸出、PCI 接口及FIFO的實現(xiàn)。模擬輸入部分由運放直流耦合放大電路組成,主要功能是向后級電路提供可靠的模擬信號。系統(tǒng)中的AD 轉(zhuǎn)換器采用Analog Device 公司生產(chǎn)的AD9709。采樣時鐘由高精度DDS 芯片AD9850提供,并由CPLD 進行控制,最高采樣頻率可達40MHz,并可實現(xiàn)逐Hz可調(diào)。數(shù)據(jù)緩存采用異步FIFO,系統(tǒng)選用兩片512K×9 的IDT72V2113,通過深度擴展,實現(xiàn)1M×9 的FIFO。數(shù)據(jù)D/A 采用Burr-Brown 公司的ADS831 芯片。FIFO 的讀寫時鐘、狀態(tài)控制、AD 控制、DA 控制以及DDS 頻率控制均由CPLD 實現(xiàn)。
在采集波形存取中,采用了FIFO 存儲發(fā)射信號,主控模塊通過讀寫地址產(chǎn)生電路對波形存取的過程進行控制。時鐘產(chǎn)生模塊為讀寫地址產(chǎn)生電路提供獨立的讀、寫FIFO 時鐘,通過讀、寫FIFO 時鐘的頻率差來實現(xiàn)回波信號的伸縮設置。FIFO 存儲器的讀、寫時鐘由數(shù)字頻率合成器(DDS)AD9851 產(chǎn)生,它受主控模塊的控制,產(chǎn)生設定頻率的方波信號,用于產(chǎn)生AD 采集、FIFO 讀寫、DA 回放芯片的時鐘信號。
3 模塊軟件實現(xiàn)
回波模擬模塊使用 PXI 總線,可用于PXI 總線計算機中。PXI 總線規(guī)范是NI 公司于1997 年發(fā)布的[3,4,5]。PXI 這種新型模塊化儀器系統(tǒng)是在PCI總線內(nèi)核技術上增加了成熟的技術規(guī)范和要求形成的。它通過增加用于多板同步的觸發(fā)總線和參考時鐘、用于進行精確定時的星形觸發(fā)總線、以及用于相鄰模塊間高速通信的局部總線來滿足試驗和測量用戶的要求。
目前 PXI 總線平臺下以Windows2000、Windwos XP 為主,需要編寫Windows WDM 驅(qū)動程序。該模塊的驅(qū)動程序主要對接口芯片S5920 進行編程。模塊軟件包括驅(qū)動程序、應用程序,同時為了與NI 公司的LabView 軟件兼容,還編寫了與LabView 軟件的接口程序。
3.1 WDM 驅(qū)動程序編寫
3.1.1 WDM 模型簡介
WDM 模型(Windows Driver Model)是微軟公司為當前主流操作系統(tǒng)Windows2000 和WindowsXP 的驅(qū)動程序設計的一種構(gòu)架,它和傳統(tǒng)的VXD 的驅(qū)動是完全不同的體系結(jié)構(gòu)。Window2000/XP 系統(tǒng)結(jié)構(gòu)圖如圖2 所示,應用程序調(diào)用Windows 子系統(tǒng)win32API,這個調(diào)用由系統(tǒng)服務接口作用到I/O 管理器,I/O 管理器進行必要的參數(shù)匹配和操作安全性檢查,然后由這個請求構(gòu)造出合適的IRP(IO Request Package),它實際上是一個數(shù)據(jù)結(jié)構(gòu),具有豐富的成員,對于單層的驅(qū)動程序直接接受并執(zhí)行這個請求包,并完成對硬件的操作,從而完成I/O 請求工作,并將執(zhí)行的結(jié)果通過I/O 管理器返回給應用程序,而對于多層的驅(qū)動則將驅(qū)動程序分成了若干層,每層驅(qū)動再把I/O 請求劃分成更簡單的請求,以傳給更下層的驅(qū)動執(zhí)行。
3.1.2 設計方法
系統(tǒng)使用 VC+DDK+Driverstudio 來進行驅(qū)動的開發(fā)。Driver Studio 為驅(qū)動程序設計提供DriverWizard 向?qū)?,可以很方便地建立一個完整的驅(qū)動程序框架。設計PCI 驅(qū)動程序基本步驟為:
?、?選擇 PCI 總線類型,填寫相應的VendorID、DeviceID、SubsystemID、RevisionID,
這些必須和PCI 板卡上的配置信息一致,用于產(chǎn)生INF 文件,在安裝時識別板卡;
?、?填寫注冊表信息;
③ 添加資源,包括I/O、Memory、IRQ、DMA 等;
?、?選擇設備接口方式、讀寫方式、電源管理方式等;
?、?添加 IOCTL 命令字,并選用相應的輸入輸出模式;
⑥ 產(chǎn)生框架代碼,添加用戶代碼;
?、?編譯調(diào)試。
驅(qū)動程序設計的工作主要在步驟⑥、⑦,編寫驅(qū)動主要針對以下的幾個方面。驅(qū)動程序框架已經(jīng)在添加資源時,創(chuàng)建了操作資源的KMemoryRange 類和KIoRange 類的對象,如將PCI 的Base1 空間設定為一個I/O 映射的空間,這個空間實際上就是CPLD 中寄存器的空間。要讀寫CPLD 中的寄存器訪問雙口存儲器就是訪問Base1 空間,這時S5920的PTNUM[2:0]會輸出001,可以使用它完成對映射到該空間雙口存儲器的片選使能。
驅(qū)動程序中需要創(chuàng)建對象 KIoRange m_IoPortRange1;
并在 OnStartDevice(KIrpI)函數(shù)中調(diào)用
status = m_IoPortRange1.Initialize(
pResListTranslated,
pResListRaw,1);
對該對象進行初始化。
在驅(qū)動的其它例程中就可以使用對象 m_IoPortRange1 調(diào)用該類的成員函數(shù)ind、inw、inb、outb、outw、outd 來完成對PCI 卡的Base1 空間的DWORD、WORD 和Byte 的輸入輸出操作。
3.2 應用軟件編寫
3.2.1 應用程序與驅(qū)動程序的通信方法
應用程序與驅(qū)動程序通信步驟為:應用程序首先使用 CreatFile 函數(shù)打開設備,然后使用WriteFile、ReadFile、DeviceIoControl 與驅(qū)動程序進行通信,最后在應用程序退出前使用CloseHandle 關閉設備。DeviceIoControl 使用不同的IOCTL 命令字來調(diào)用驅(qū)動中的不同程序,完成應用程序與驅(qū)動程序的數(shù)據(jù)交換,驅(qū)動程序根據(jù)訪問方式的不同,使用不同的方式獲取應用程序的輸入輸出緩沖區(qū)地址。
驅(qū)動程序與應用程序的通信:當驅(qū)動程序獲取了特定事件發(fā)生時,有時需要將這一信息通知給應用程序,主要的方法有2 種:一種是使用DeviceIoControl 進行異步通信,另一種是在應用程序中創(chuàng)建一個事件,并將該句柄傳給驅(qū)動程序,然后在應用層開啟一個線程等待這個事件,驅(qū)動程序會在事件發(fā)生的時候設置事件信號狀態(tài)來觸發(fā)應用程序。
3.2.2 與NI LabView 應用程序通信
仿真系統(tǒng)控制軟件由 NI 公司的LabView 軟件編制,為使本模塊能使用該軟件控制,必須編寫接口程序。接口程序?qū)嶋H上就是Windows 標準動態(tài)鏈接庫。鏈接庫可以由LabView軟件調(diào)用。
鏈接庫導出函數(shù)定義如下:
extern "C" __declspec(dllexport) HANDLE OpenDrv();
extern "C" __declspec(dllexport) void CloseDrv(HANDLE hDevice);
extern "C" __declspec(dllexport) void WriteData(HANDLE hDevice,
ULONG freq,double frequency1,double frequency2,
double frequency3,double frequency4,double delay,double atten);
由于在C++中HANDLE 型定義為void *,而LabView 中沒有指針型變量,用Labview調(diào)用該函數(shù)時可直接定義為ULONG 型。具體代碼略。
4 應用實例
某型多普勒聲吶發(fā)射信號頻率為 300kHz,發(fā)射脈寬最大60ms,信號采用重復相位編碼,編碼靈活可變,帶寬達到75kHz。為了完成對該聲納的檢測,需要對其回波進行模擬,考慮到回波會產(chǎn)生伸縮效應,本模塊的主要技術指標如下:
采樣頻率:10MHz~40MHz
存儲深度:1MB
D/A 頻率:10MHz~40MHz
系統(tǒng)總線:PXI
模擬回波時延:2ms~3s,精度0.1ms
該模塊已用于某型多普勒聲吶的檢測,可以模擬不同深度、不同相對速度的海底回波信號,工作良好,性能穩(wěn)定。
5 結(jié)束語
寬帶回波模擬模塊利用 PXI 技術,在Windows 環(huán)境下可以實現(xiàn)良好的人機界面,安裝方便,體積小,適用范圍比較廣泛。模擬模塊可以模擬不同延遲、不同尺度伸縮的寬帶點目標信號。系統(tǒng)已用于某型寬帶多普勒聲吶的陸上檢測,經(jīng)過與水池調(diào)試、湖試數(shù)據(jù)對比,發(fā)現(xiàn)該模擬方法有效,結(jié)果與實際試驗基本一致。
評論