引言
目标回波模拟是通过计算机系统对水声信号进行建模,然后在计算机或其它设备上实时模拟水声目标回波并输入至信号处理器,以达到检测信号处理单元功能、性能的目的。PXI总线是PCI 在仪器领域的扩展,它将Compact PCI 规范定义的PCI 总线技术发展成适合于试验、测量与数据采集场合应用的机械、电气和软件规范,从而形成了新的虚拟仪器体系结构。目前,PXI 总线在测控领域得到了越来越多的应用。
本文介绍了自行设计研制的宽带回波模拟器,可模拟4 路水下目标回波,且各目标的方位、速度、强度、距离等参数在计算机的控制下实时可控,为多参数回波模拟水池实验系统提供一套功能强、实时性好、使用方便的通用宽带回波模拟模块。
1 宽带水声目标回波模型
目前声呐的发射信号大量采用宽带信号,传统的窄带回波模型已经难以适应回波仿真的要求,必须使用宽带回波模拟进行分析。主动自导工作时,由发射机向目标发出声波u(t),经目标反射后形成回波s(t)。回波s(t)携带着有关目标的所有信息,是检测和参数估计的全部依据。由于目标的运动,发射波形与接收波形的宽度是不同的,存在时间压缩效应。若目标做匀速运动,速度为v,海水中声速为c,则宽带目标回波模型如下:
由宽带回波模型可见,回波与发射波相比,有几点变化:
① 振幅衰减,对慢起伏点目标,其时间包络为瑞利分布的随机变量。
② 时延,回波相比发射波延迟0 τ 。
③ 时间尺度 s,使得时间包络产生伸缩,即时宽和幅宽受到压缩或扩展。
2 系统需求与设计结构
2.1 系统需求
为了满足宽带回波模拟的需要,回波模拟模块应具有以下功能:
① 具有更大的动态范围以模拟不同距离的目标回波;
② 能够精确地模拟目标回波的强度、时延和脉冲伸缩;
③ 能够精确地测量并记录输入、输出信号的各项参数。
在对以上功能进行仔细分析后,确定回波模拟器应满足以下参数:
① 目标强度:0~80dB(可设定),0.375dB 档;
② 回波时延:0~3 秒,误差不大于0.5%;
③ 模拟运动速度:-30~+30kn;
④ 脉冲展宽可设定;
回波模拟器将接收到的脉冲信号通过 AD 转换保存在FIFO 中,发射时再从FIFO 里取出数据进行DA。这种方式很好地保存了接收信号的信息,同时DA 输出时钟逐Hz 可调,能实现对回波进行脉冲展宽。经过数字衰减后输出,衰减程控可调,可用于形成回波包络。
2.2 系统结构
在某检测设备的研制过程中,研制了基于 PXI 总线的回波模拟模块,该模块能对发射信号进行高速采集,在精确延迟后,提供模拟回波,可利用声对接阵对声纳进行陆上测试。系统结构框图如图 1 所示:
图 1 回波模拟模块结构框图
回波模拟模块包括模拟输入、数据采集、数据存储、数据回放、DDS 方波产生器、PXI接口六部分。系统结构如图1 所示。其核心部分是AD 转换、DA 输出、PCI 接口及FIFO的实现。模拟输入部分由运放直流耦合放大电路组成,主要功能是向后级电路提供可靠的模拟信号。系统中的AD 转换器采用Analog Device 公司生产的AD9709。采样时钟由高精度DDS 芯片AD9850提供,并由CPLD 进行控制,最高采样频率可达40MHz,并可实现逐Hz可调。数据缓存采用异步FIFO,系统选用两片512K×9 的IDT72V2113,通过深度扩展,实现1M×9 的FIFO。数据D/A 采用Burr-Brown 公司的ADS831 芯片。FIFO 的读写时钟、状态控制、AD 控制、DA 控制以及DDS 频率控制均由CPLD 实现。
在采集波形存取中,采用了FIFO 存储发射信号,主控模块通过读写地址产生电路对波形存取的过程进行控制。时钟产生模块为读写地址产生电路提供独立的读、写FIFO 时钟,通过读、写FIFO 时钟的频率差来实现回波信号的伸缩设置。FIFO 存储器的读、写时钟由数字频率合成器(DDS)AD9851 产生,它受主控模块的控制,产生设定频率的方波信号,用于产生AD 采集、FIFO 读写、DA 回放芯片的时钟信号。
3 模块软件实现
回波模拟模块使用 PXI 总线,可用于PXI 总线计算机中。PXI 总线规范是NI 公司于1997 年发布的[3,4,5]。PXI 这种新型模块化仪器系统是在PCI总线内核技术上增加了成熟的技术规范和要求形成的。它通过增加用于多板同步的触发总线和参考时钟、用于进行精确定时的星形触发总线、以及用于相邻模块间高速通信的局部总线来满足试验和测量用户的要求。
目前 PXI 总线平台下以Windows2000、Windwos XP 为主,需要编写Windows WDM 驱动程序。该模块的驱动程序主要对接口芯片S5920 进行编程。模块软件包括驱动程序、应用程序,同时为了与NI 公司的LabView 软件兼容,还编写了与LabView 软件的接口程序。
3.1 WDM 驱动程序编写
3.1.1 WDM 模型简介
WDM 模型(Windows Driver Model)是微软公司为当前主流操作系统Windows2000 和WindowsXP 的驱动程序设计的一种构架,它和传统的VXD 的驱动是完全不同的体系结构。Window2000/XP 系统结构图如图2 所示,应用程序调用Windows 子系统win32API,这个调用由系统服务接口作用到I/O 管理器,I/O 管理器进行必要的参数匹配和操作安全性检查,然后由这个请求构造出合适的IRP(IO Request Package),它实际上是一个数据结构,具有丰富的成员,对于单层的驱动程序直接接受并执行这个请求包,并完成对硬件的操作,从而完成I/O 请求工作,并将执行的结果通过I/O 管理器返回给应用程序,而对于多层的驱动则将驱动程序分成了若干层,每层驱动再把I/O 请求划分成更简单的请求,以传给更下层的驱动执行。
3.1.2 设计方法
系统使用 VC+DDK+Driverstudio 来进行驱动的开发。Driver Studio 为驱动程序设计提供DriverWizard 向导,可以很方便地建立一个完整的驱动程序框架。设计PCI 驱动程序基本步骤为:
① 选择 PCI 总线类型,填写相应的VendorID、DeviceID、SubsystemID、RevisionID,
这些必须和PCI 板卡上的配置信息一致,用于产生INF 文件,在安装时识别板卡;
② 填写注册表信息;
③ 添加资源,包括I/O、Memory、IRQ、DMA 等;
④ 选择设备接口方式、读写方式、电源管理方式等;
⑤ 添加 IOCTL 命令字,并选用相应的输入输出模式;
⑥ 产生框架代码,添加用户代码;
⑦ 编译调试。
驱动程序设计的工作主要在步骤⑥、⑦,编写驱动主要针对以下的几个方面。驱动程序框架已经在添加资源时,创建了操作资源的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
系统总线:PXI
模拟回波时延:2ms~3s,精度0.1ms
该模块已用于某型多普勒声呐的检测,可以模拟不同深度、不同相对速度的海底回波信号,工作良好,性能稳定。
5 结束语
宽带回波模拟模块利用 PXI 技术,在Windows 环境下可以实现良好的人机界面,安装方便,体积小,适用范围比较广泛。模拟模块可以模拟不同延迟、不同尺度伸缩的宽带点目标信号。系统已用于某型宽带多普勒声呐的陆上检测,经过与水池调试、湖试数据对比,发现该模拟方法有效,结果与实际试验基本一致。
全部0条评论
快来发表一下你的评论吧 !