高速数据采集卡的虚拟示波器开发设计

高速数据采集卡的虚拟示波器开发设计
本文基于pci接口的cs 82g高速数据采集卡和visual c++编程工具,开发了一种快速的虚拟示波器试验系统,实现了高速数据的采集和动态波形的显示,并具有频谱分析和数字滤波功能。
关键词:虚拟示波器;数据采集;cs 82g
虚拟仪器以通用计算机作为系统控制器,各种复杂测试功能、数据分析和结果显示都完全由计算机软件完成,在很多方面较传统仪器有无法比拟的优点。
本文在带有pci总线接口的cs82g高速数据采集卡和visual c++编程工具的基础上开发的快速虚拟示波器试验系统,集成了波形采集、数据分析、输出、显示等多种功能。同时,为保证数据采集和波形显示的实时性,设计中还采用了多线程技术。
图1 cs 82g采集卡系统框图
图2 软件系统总体流程图
虚拟示波器的系统组成
系统组成
本虚拟示波器系统主要由数据采集卡、计算机和专用的软件组成。 其中数据采集卡完成对输入测量信号的调理采集、缓存,并通过计算机pci总线送入内存;计算机在应用程序控制下,对数据进行处理、运算,最后完成各种电量测试并在屏幕上用图形或数据形式显示。这一切均可在人机交互方式下完成。
数据采集卡的硬件结构
本虚拟示波器采用的是gage公司的cs 82g高速数据采集卡。其硬件结构框图如图1所示。
该数据采集卡是一个具有两个模拟量输入通道的标准的pci总线插卡,卡上集成的两个高速8位adc,最高工作频率高达1 ghz,在单通道工作模式下,两个adc同时投入工作,分别在脉冲的上升沿和下降沿进行转换,所以最高采样频率可以达到2ghz。全卡的功能电路由数字控制逻辑电路统一控制。卡上配置有16mb的高速存储器,解决了高采样率和相对较低的pci总线数据传输速率的匹配问题。
在使用之前必须对采集卡的硬件进行配置,这些控制程序用到了相应的底层daq驱动程序。通过采集卡自带的dll,可以在程序中灵活地对硬件输入阻抗、输入电压范围、放大器增益大小、采样频率、每次采样点数等参数进行控制。
模拟信号经同轴电缆进入采集卡的输入通道后,经过前置滤波电路、衰减电路、可变增益的放大电路,将信号处理成adc可以处理的标准电平,经过a/d采样量化转化成计算机可以处理的数字信号并缓存到存储器。该采集卡支持软件通过pc机的pci总线接口控制模拟通道的阻抗匹配、放大器的增益选择、启动adc及转换结束的识别,并允许将采集数据以dma方式传输到计算机内存,同时对数据信号进行分析处理、显示、存储及打印输出。
系统的软件设计
虚拟示波器的软件开发环境
虚拟仪器最核心的是软件技术。目前,用于虚拟仪器开发的软开发平台主要有两大类:一类是通用的可视化软件编程环境,主要有microsoft公司的visual c++和visual basic、inprise公司的delphi和c++ builder等;另一类是一些公司推出的专用于虚拟仪器开发软件的编程环境,主要有ni公司的图形化编程环境labview及文本编程环境labwindows/cvi、agilent公司的图形化编程环境agilent vee。考虑到软件的灵活性、高效性和可移植性,本设计中采用visual c++作为虚拟示波器的开发环境。
软件的方案设计
图2展示了本设计中软件系统的总体流程图。程序开始工作后,首先进入主线程,进行相关的初始化工作,主要是软件界面的初始化(采集卡的初始化在采集子线程中进行)。onstart()函数的主要目的是执行startcapture()函数以启动数据采集子线程,执行startprocessing()函数以启动数据处理子线程,主线程进入消息循环,并通过消息和子线程进行通信。采样线程和数据处理线程实际上是由g_brunthread变量控制的循环过程,这样可以方便主线程控制工作线程的退出。数据采集线程利用了采集卡驱动程序提供的中断采样函数,采样深度n由控件设定,每当采集完成n个点的采样时,采样数据便被送入卡上的缓冲区,然后通过pci总线向计算机传输数据,当数据传输完毕之后,采样线程向数据处理线程发送wm_receive消息,通知数据处理模块对这n点进行分析处理。在主线程里,主要接收用户操作的消息,比如通道参数的设定、通道显示的设定、数据的存储打印以及察看历史数据、波形等操作。
软件功能模块
该虚拟示波器有5大功能模块:数据采集、用户界面、频谱分析、数字滤波以及波形显示。
信号采集模块
信号采集模块主要完成对数据的采集,根据所采集信号的不同采用不同的采样频率。这个模块中应用程序会通过采集卡的驱动程序和硬件进行通信,如果把这个模块放在程序主线程中实现,那么,当应用程序与驱动程序进行数据通信时,主界面就会冻结。为了解决这个问题,本文直接创建一个子线程来单独完成与驱动程序的通信任务,让主界面专心于响应视窗界面的信息。在子线程中通过调用gage_start_capture( )函 数进行数据的采集。
用户界面模块
界面主要分为三个视图:主视图基于scrollview,用于显示波形;另外两个视图基于formview,一个用于动态显示采集数据的特征参数,另一个用于对示波器进行操作。
频谱分析模块
本软件利用快速傅里叶变换(fft)进行频谱分析,采用按时间抽取fft算法,然后将幅值频谱分析结果在用户界面上以坐标曲线形式显示。进行fft时可以选择点数,有1024、2048、4096三种选择,如果点数不够,程序自动补零。
数字滤波模块
本软件可以对所采集信号进行低通和高通滤波。首先根据给定通带截止频率、阻带截止频率、通带衰减和阻带衰减设计出butterworth模拟滤波器,再用双线性变换法设计出数字滤波器。
波形显示模块
当前波形显示主要有两种方法,分段显示和滚动显示。本设计采用了滚动显示的方法,并且提出了一种新的滚动显示算法,突破了滚动显示只能观察变化缓慢的信号的限制。算法核心思想如下。
1. 得到所采集数据块的第一个和最后一个数据点的横坐标m_xmin和m_xmax,两者之差即为波形的逻辑宽度。
2. m_xmax-m_xmin的值为逻辑坐标,把它转化为设备坐标cx,用cx设定整个滚动视图的宽度。
3. 为了提高画图的效率,需要画出滚动视图可视部分的图形,也就是剪裁区的图形,因此要确定剪裁区。
4. 画出坐标以及剪裁区内的一段波形。利用csplitterwnd:do scrollby()函数,根据采样间隔的大小决定断滚动视图速度的快慢。这样视图滚动以后相应的剪裁区也会发生改变,从而能动态画出新的波形。
实验与讨论
在实验中使用该系统对正弦信号和锯齿波信号进行了采集,并对两个通道的信号分别进行了频谱分析。实验时示波器参数设置如下:采样模式为双通道,其中通道1对正弦信号进行采样,通道2对锯齿波信号进行采样;采样率为120ms/s;触发源为软件触发;触发时间极限为20ms;输入信号电压范围为+/-5v。实验结果显示达到了预定的效果。
设计中一个关键问题是在保证数据采集实时性的同时,又能及时地响应用户的操作或进行数据显示。在本文中,为解决这个问题采用了多线程技术,除了一个处理用户输入消息的用户界面线程之外,还创建了两个辅助线程,从而最大程度地保证了系统的实时性。
传输速率的匹配问题
在使用之前必须对采集卡的硬件进行配置,这些控制程序用到了相应的底层daq驱动程序。通过采集卡自带的dll,可以在程序中灵活地对硬件输入阻抗、输入电压范围、放大器增益大小、采样频率、每次采样点数等参数进行控制。
模拟信号经同轴电缆进入采集卡的输入通道后,经过前置滤波电路、衰减电路、可变增益的放大电路,将信号处理成adc可以处理的标准电平,经过a/d采样量化转化成计算机可以处理的数字信号并缓存到存储器。该采集卡支持软件通过pc机的pci总线接口控制模拟通道的阻抗匹配、放大器的增益选择、启动adc及转换结束的识别,并允许将采集数据以dma方式传输到计算机内存,同时对数据信号进行分析处理、显示、存储及打印输出。

物联网信号 制造业焦点 以及未来三年的重点
RF-SOI技术:加强5G网络和智能物联网应用
经纬恒润出席2022第六届汽车ISO26262功能安全应用与发展技术峰会
日常生活中经常能遇到的六个重要分布
DISPLAY CHINA韩国周促进新型显示行业可持续发展
高速数据采集卡的虚拟示波器开发设计
华为突遭谷歌釜底抽薪 官方安卓不再支持华为手机
wowstick A1 锂电螺丝刀拆解评测:不止是价格感人
电源芯片PN8368功能特点
GPS防盗器的常见性能对比及选择注意事项
基于FPGA与ad9252的时序约束高速解串设计
利用LTC3588降压型转换器进行压电能量收集
工业富联坚持以工业互联网驱动的智能制造赋能战略推进为中心
视声智能拟冲刺北交所上市!募集1.5亿扩充智能家居等产品
基于区块链的黄金数字加密权证GDC将是黄金的新标准
MySQL基准测试和sysbench工具
基于区块链和物联网技术的分散经济模型Treechain树链介绍
电子品名构成规则
PCB电磁干扰5个重要属性考虑
如何使用CubeMx生成一个DFU工程