新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于PXI 總線的水聲目標(biāo)回波模擬模塊的設(shè)計(jì)

基于PXI 總線的水聲目標(biāo)回波模擬模塊的設(shè)計(jì)

作者: 時(shí)間:2012-09-19 來(lái)源:網(wǎng)絡(luò) 收藏

驅(qū)動(dòng)程序設(shè)計(jì)的工作主要在步驟⑥、⑦,編寫(xiě)驅(qū)動(dòng)主要針對(duì)以下的幾個(gè)方面。驅(qū)動(dòng)程序框架已經(jīng)在添加資源時(shí),創(chuàng)建了操作資源的KMemoryRange 類和KIoRange 類的對(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)用該類的成員函數(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)

時(shí)延:2ms~3s,精度0.1ms

該模塊已用于某型多普勒聲吶的檢測(cè),可以不同深度、不同相對(duì)速度的海底回波信號(hào),工作良好,性能穩(wěn)定。

5 結(jié)束語(yǔ)

寬帶回波模擬模塊利用 技術(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)基本一致。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: PXI 總線 回波 模擬

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉