焊缝检测系统中PCI总线高速数据采集卡的设计
摘要:介绍了应用在焊缝缺陷自动超声检测系统中的高速数据采集卡的性能,给出了其硬件实现方案和WINDOWS98下的虚拟设备驱动程序(VXD)。该数据采集卡不仅具有较高的采样频率,而且充分利用PCI总线带宽,实现了高速数据传输。测试表明,WINDOWS98应用程序能够稳定地采集焊缝信号,满足系统对数据采集的要求。
关键词:数据采集 PCI总线 焊缝缺陷 VXD
焊缝缺陷自动超声检测系统是一种重要的无损探伤设备,可用于检测平板、管道、容器等的纵、横焊缝以及接管角焊缝缺陷。与手工检测方法相比,该系统具有运行平稳、漏检率低、显示直观等优点。
在焊缝缺陷自动超声检测系统中,缺陷回波信号通常为宽度约10ns~100ns、幅值在几十μV到几十mV之间的窄脉冲。为满足缺陷回波信号的检测要求,研制了一种基于PCI总线的高速数据采集卡,它是面向超声检测应用而设计的:该卡采用转换速率为60MHz的八位高速A/D以满足数据采集的要求;为缓存A/D芯片输出的高速数据并充分利用PCI总线带宽,加入32KB的高速FIFO缓存组;同时,为满足多通道探伤的要求,设计了通道选择电路以实现通道之间的切换;此外,为调理缺陷回波信号,卡上还配有高增益高带宽放大电路。
1 高速数据采集卡的工作原理
焊缝缺陷自动超声检测系统的信号采集框图如图1所示。系统的工作原理是:首先由高压脉冲发生电路发射高压脉冲;高压脉冲经换能器形成超声波信号,遇到缺陷或杂质时产生反射波,经换能器转换为电压信号,该信号经放大调理、A/D转换后,形成数字量,写入高速FIFO存储器中。最后,由PCI接口芯片将FIFO中的数据适时地写入内存。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2 数据采集电路的硬件设计
2.1 高增益高带宽放大电路
采用带触发的直流逆变电路产生高压脉冲,采用多路模拟通道选择电路实现通道切换以满足多通道探伤要求。模拟信号经五级放大、滤波后,作为A/D转换电路的输入。放大电路采用最高增益为80dB、带宽为15MHz且分辨率为1dB的放大器,并且采用数字电位器实现放大增益的动态调整。
2.2 A/D转换电路
A/D转换电路采用美国BB公司的ADS830。该芯片的信噪比高、功耗低、非线性畸变小,广泛应用于图像处理、数字通信和视频测试系统中。ADS830的精度为八位,最高采样频率为60MHz,可满足焊缝缺陷自动超声检测系统对数据采集精度和采样频率的要求。它有共模和差模两种信号输入方式,且输出的数字量可直接与5V或3.3V芯片接口。
2.3 高速FIFO存储器
高速缓存是保证高速数据不丢失的关键,确保了数据的真实性。同时,高速FIFO缓存使A/D芯片不必工作在PCI同步时钟下,提高了A/D芯片的利用率。IDT公司的存储器性能优良,且同系列存储器一般可以做到管脚级兼容,容易实现硬件设计的模块化。为方便读写数据,选择先进先出式(FIFO)的缓冲存储器IDT7205L15。其访问时间为15ns,每片容量为8K×9位。支持异步读写,并提供诸如满、半满、空等用于位扩展和深度扩展的信号。高速数据采集卡为实现8位A/D和32位PCI总线的宽度匹配,采用了位扩展技术。为加深FIFO的缓冲深度,将外加FIFO缓存与PCI接口芯片内部的FIFO相级连。
2.4 基于CPLD的控制逻辑
基于CPLD的控制逻辑是高速数据采集卡的核心,它为PCI接口芯片提供满足时序要求的读写信号,同时选择模拟信号的输入通道、控制高压脉冲发生逻辑并设定放大电路的增益。此外,CPLD还能利用高速FIFO缓存的空、满标志位,配合PCI接口芯片实现DMA写操作,完成高速数据传输。Xilinx 公司的XC9572XL-VQ64芯片的脚到脚延迟最大为10ns,可满足PCI总线接口时序的要求。单片XC9572XL-VQ64能满足焊缝缺陷自动超声检测系统逻辑控制的要求,且具有体积小、可靠性高、调试方便等突出优点。
图2是基于有限状态机FSM(Finite State Machine)方法设计的控制逻辑状态转换图。其中,RST和IRQ是由PCI接口芯片S5933输出的可由程序任意控制的两个信号,它们的高低状态同高速FIFO缓存的空、满信号一起决定了控制逻辑的六个可能的状态,图中以椭圆表示。计算机上电时,控制逻辑处于RST=IRQ=1的状态。值得一提的是,RST和IRQ信号都有适当的上拉电阻,所以不会出现高阻浮空的状态,使控制逻辑能够稳定地工作。实线是控制逻辑采用的状态转移路线,而虚线是可能的但不采用的状态转移路线。在各状态之间进行切换是很容易的,只需通过程序使RST或IRQ信号出现高或低跳变。状态转移时伴随着的电路动作见转换线旁的注释。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2.5 PCI接口芯片
PCI总线协议2.1版出现以后,集成芯片商们纷纷推出了与其兼容的总线接口芯片。其中,AMCC(Applied Micro Circuit Corperation)公司的S5933接口方便、控制灵活,软件配置简单,在高速网络接口、数字通信、高速成像等领域有着广泛应用2。S5933最突出的优点是能够作为PCI主控设备发起DMA操作,即S5933完全具备双字DMA控制器的功能。
图3是结合系统应用而绘制的S5933结构框图。由图3可知,S5933内部具有配置寄存器组和操作寄存器组,配置寄存器组用于控制S5933在PCI总线系统中的运作方式(访问延迟、能否发起主控DMA操作等)以及记录系统分配给S5933的资源信息(如中断引脚、I/O等)3,而PCI总线和外加电路之间的数据交换则通过操作寄存器组实现。以I/O资源为例,计算机上电后,系统将分配给S5933的I/O资源首地址填入基地址寄存器,此值决定了操作寄存器组在I/O空间中的映射位置(S5933的操作寄存器组缺省地映射到I/O地址空间,便于软件操作),见图3。之后,CPU只需执行简单的I/O操作就可以读写操作寄存器组,隐含的地址译码工作由S5933完成。外加电路控制逻辑则保证操作寄存器组与外加电路的正常通信。S5933提供了三种形式的外加电路接口,高速数据采集卡使用信箱(Mailbox)寄存器实现双字输出,用FIFO方式实现高速DMA写操作。
图3 S5933的结构框图
3 高速数据采集卡的软件设计
3.1 虚拟设备驱动程序的设计
系统的控制软件工作在WINDOWS98操作系统下,为此开发了高速数据采集卡的虚拟设备驱动程序(VXD)。由S5933的结构可知,VXD需要实现双字I/O操作和物理内存管理。双字I/O的操作相对简单,调用虚拟机管理器(VMM)的SIMULATE_VM_IO例程即可,较困难的是物理内存管理。由于S5933发起的DMA操作需要物理内存的起始地址,因此必须涉及页面级的物理内存操作,故采用下述内存管理策略:
·应用程序加载VXD;
·加载成功后发送申请缓冲区的事件给VXD;
·VXD使用PAGEALLOCATE例程得到地址连续的适当长度(如四页即16K字节)的物理内存;
·锁定缓冲区并将物理地址逆映射为线性地址;
·将物理首地址填入S5933的写RAM地址寄存器;
·允许S5933进行主控DMA传输;
·传输完毕时,应用程序请求VXD释放上述物理内存。
3.2 应用VXD设计数据采集程序
将VXD放在应用程序的同级目录下,则以下VC++代码就能动态加载(VXDVIEWER可验证)一个VXD:
HANDLE hDEVICE=CreateFile“\\\\.\\pathname” 00NULL0FILE_FLAG_DELETE_ON_CLOSE NULL;
编好的VXD为应用程序提供了若干服务例程,应用程序执行下面的代码即可调用服务例程ZHC1:
DeviceIoControlHDEVICE ZHC1 lpinbuffer ninsize lpoutbuffer noutsize NULL NULL;
数据采集算法如下:javascript:window.open(this.src);" style="cursor:pointer;"/>
DO {读取写RAM字节计数器;
再次读取写RAM字节计数器;
IF 计数器内容为零 THEN
跳出循环进行后续数据处理;
ELSEIF 两次读取的结果不同 THEN
不做任何处理而进入下一次循环;
ELSE
清相应的状态标志并设置有关寄存器以从断点处续传;
ENDIF
}
调试表明,应用VXD的数据采集程序能够稳定、高速地采集外部数据。对焊缝缺陷自动超声检测系统的实际测试表明,该高速数据采集卡能满足缺陷回波的检测要求。图4(a)为实际测试时用示波器观测到的模拟放大电路的输出信号,图4(b)是A/D转换后、截掉始波并经半波整流后得到的信号。
高速数据采集卡具有体积小、可靠性高、控制逻辑更改方便、可扩展性强等优点。对于检测厚度为10~100mm的钢板,一次采集的数据最多为4KB,至多只需0.13ms就可将数据从卡上FIFO经PCI总线传入内存。