新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于PXI 总线的水声目标回波模拟模块的设计

基于PXI 总线的水声目标回波模拟模块的设计

作者:时间:2012-09-19来源:网络收藏

驱动程序设计的工作主要在步骤⑥、⑦,编写驱动主要针对以下的几个方面。驱动程序框架已经在添加资源时,创建了操作资源的KMemoryRange 类和KIoRange 类的对象,如将PCI 的Base1 空间设定为一个I/O 映射的空间,这个空间实际上就是CPLD 中寄存器的空间。要读写CPLD 中的寄存器访问双口存储器就是访问Base1 空间,这时S5920的PTNUM[2:0]会输出001,可以使用它完成对映射到该空间双口存储器的片选使能。

驱动程序中需要创建对象 KIoRange m_IoPortRange1;

并在 OnStartDevice(KIrpI)函数中调用

status = m_IoPortRange1.Initialize(

pResListTranslated,

pResListRaw,1);

对该对象进行初始化。

在驱动的其它例程中就可以使用对象 m_IoPortRange1 调用该类的成员函数ind、inw、inb、outb、outw、outd 来完成对PCI 卡的Base1 空间的DWORD、WORD 和Byte 的输入输出操作。

3.2 应用软件编写

3.2.1 应用程序与驱动程序的通信方法

应用程序与驱动程序通信步骤为:应用程序首先使用 CreatFile 函数打开设备,然后使用WriteFile、ReadFile、DeviceIoControl 与驱动程序进行通信,最后在应用程序退出前使用CloseHandle 关闭设备。DeviceIoControl 使用不同的IOCTL 命令字来调用驱动中的不同程序,完成应用程序与驱动程序的数据交换,驱动程序根据访问方式的不同,使用不同的方式获取应用程序的输入输出缓冲区地址。

驱动程序与应用程序的通信:当驱动程序获取了特定事件发生时,有时需要将这一信息通知给应用程序,主要的方法有2 种:一种是使用DeviceIoControl 进行异步通信,另一种是在应用程序中创建一个事件,并将该句柄传给驱动程序,然后在应用层开启一个线程等待这个事件,驱动程序会在事件发生的时候设置事件信号状态来触发应用程序。

3.2.2 与NI LabView 应用程序通信

仿真系统控制软件由 NI 公司的LabView 软件编制,为使本模块能使用该软件控制,必须编写接口程序。接口程序实际上就是Windows 标准动态链接库。链接库可以由LabView软件调用。

链接库导出函数定义如下:

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调用该函数时可直接定义为ULONG 型。具体代码略。

4 应用实例

某型多普勒声呐发射信号频率为 300kHz,发射脉宽最大60ms,信号采用重复相位编码,编码灵活可变,带宽达到75kHz。为了完成对该声纳的检测,需要对其进行,考虑到会产生伸缩效应,本模块的主要技术指标如下:

采样频率:10MHz~40MHz

存储深度:1MB

D/A 频率:10MHz~40MHz

系统

时延:2ms~3s,精度0.1ms

该模块已用于某型多普勒声呐的检测,可以不同深度、不同相对速度的海底回波信号,工作良好,性能稳定。

5 结束语

宽带回波模拟模块利用 技术,在Windows 环境下可以实现良好的人机界面,安装方便,体积小,适用范围比较广泛。模拟模块可以模拟不同延迟、不同尺度伸缩的宽带点目标信号。系统已用于某型宽带多普勒声呐的陆上检测,经过与水池调试、湖试数据对比,发现该模拟方法有效,结果与实际试验基本一致。


上一页 1 2 3 下一页

关键词: PXI 总线 回波 模拟

评论


相关推荐

技术专区

关闭