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