APP下载

基于VS2008的任意波形生成软件的设计与开发

2017-03-17黄继国张世清罗剑兵

电子技术与软件工程 2016年16期

黄继国+张世清+罗剑兵

摘 要

本文介绍了一种任意波形生成软件的开发和设计,主要应用了VS2008开发工具,依据时域采样定理,可以实现基本波形和自定义波形的采样,支持对波形进行编辑,比如对某一段波形翻转、镜像、删除等;同时可以对波形进行数学运算,比如两个波形的加减乘除;生成的波形可以保存为文件,或者通过USB发送到波形发生器。此软件极大地提高了波形发生器的可用性,解决一些要求复杂的项目需求。

【关键词】任意波形 VS2008 时域采样定理 波形发生器

1 引言

任意波形发生器作为信号源的一种,在通信、电子等领域的设备研发、生成、测试中起到非常重要的作用。目前,任意波形发生器广泛采用DDS(Direct Digital Synthesizer)技术,DDS采用查找表的方式,将存储在存储单元中的波形数据按照一定的次序取出,按照一定频率,通过控制电路将数据进行D/A转换,最后形成模拟信号输出。这种波形发生器由于是全数字化,具有转换速度快、输出频率稳定、噪声低等特点。其工作原理如图1所示。由图示可以知道,任意波形发生器的源波形都是存储在存储单元中,但是由于任意波形发生器的硬件限制,本机无法快速生成任意波形,必须借助于计算机,通过计算机软件生成任意波形数据,然后下发到波形发生器中,再由波形发生器输出波形。因此,任意波形生成软件具有不可替代的作用,本文将主要介绍软件相关的设计与开发。

2 任意波形生成软件设计及开发

2.1 软件基本架构及开发工具介绍

任意波形生成软件主要由数据初始化、波形建立和波形应用三个部分组成,基本架构如图2所示。

数据初始化主要根据用户设定值初始化采样点数和波形周期,从而建立绘图窗口。

波形建立部分主要包括两个功能:生成波形功能和编辑波形功能,用户通过生成波形功能,可以快速生成基本波形(例如正弦波、方波等)、按公式建立波形、手绘波形,也可以按点建立波形;用户通过编辑波形功能,可以对选择的波形进行编辑(翻转、循环移动、叠加波形、按点编辑等);

通过波形应用,用户可以保存设计的波形,以便于下次调用;也可以通过USB与波形发生器连接,将波形下发到机器,从而生成相应信号。

为实现以上功能,软件设计将选用VS2008开发工具,VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。提供了可视化的设计界面,控件应用非常方便,使用Visual Studio 2008可以高效开发Windows应用程序。

2.2 波形生成原理及方法

本软件波形的生成方法主要依据时域采样定理:频带为F的连续信号f(t)可用一系列离散的采样值f(t1)、f(t1±Δt)、f(t1±2Δt)、...来表示,只要这些采样点的时间间隔Δt≤1/2F,便可根据各采样值完全恢复原来的信号f(t)。根据图1所示,存储单元存储的波形信号是按一定时间顺序的波形幅度值,所以任意波形生成软件最后生成的波形也将是按一定时间顺序的幅度值。由于存储器空间限制,最大采样点将有所限制,本软件最大支持16M点采样,用户可以根据需要进行设置。

根据用户设置的采样点数和时域采样定理,可以根据公式一得到采样间隔时间Δt等于1/NF,其中N表示采样点数,F表示连续信号的频带。只要保证N的值大于2,就完全满足时域采样定理,因此,可以按时间间隔Δt对信号进行采样,从而得到波形的采样点值。

Δt = 1/NF <公式一>

软件设计方面,将以斜波的采样为例,决定斜波形状的主要参数有峰峰值、偏移量、周期数、相位及对称度,用户可以根据需要,在配置界面上完成各项参数的配置,配置界面如图3所示。

在完成配置之后,程序即可以对斜波进行采样,斜波采样代码清单如下:

int Np = sample_num / cycle, I = 0;

double Nz = Np * symmetry;

double Rstep = 2.0 / Nz;

double Fstep = 2.0 /(Np - Nz);

int np = (int)(degree* Np/360);

for(int i = 0; i < sample_num; i++)

{

I = (i + np) % Np;

if(I < Nz){

data_sample[i] = (float)(amplitude / 2 * ( Rstep * I - 1.0) + offset);

}else{

data_sample[i] = (float)(amplitude / 2 * ( 2.0 - Fstep * (I - Nz) - 1.0) + offset);

}

if(data_sample[i] > 10) data_sample[i] = 10;

else if(data_sample[i] < -10) data_sample[i] = -10;

}

2.3 波形绘制

波形采样完成之后,需要直观的将采样数据显示给用户,即需要在绘图区域显示采样数据(即波形)。波形绘制主要应用了VS2008提供的panel控件,通过panel建立画刷,利用画刷绘制点或者线,从而实现波形显示,在绘制的过程中,可以同时指定画刷的颜色,通过波形绘制,用户可以更方便、更准确地生产各种波形。

波形绘制的基本流程如图4所示。首先对数据进行初始化,比如获取绘图区的宽度和高度,取得采样值的最大值和最小值等;然后将清除当前显示内容,并重新绘制电气表格和X、Y轴的坐标;最后,根据绘图区域的宽度和采样数确定绘制点和线的坐标。如果绘圖区宽度小于采样数,则以等分步距抽取采样点进行绘制,同时得到步距内的最大值和最小值,并显示最大值和最小值,以防止抽取数据时导致波形无法显示完全;如果绘图区宽度大于采样数,则绘图区需要间隔一定的点,从而将所有采样点显示到绘图区。

2.4 文件存储及数据通信设计

用户完成波形采样并绘制之后,最终目的是下发给波形发生器,从而生成相应的信号,或者保存为文件,以便于以后使用。

文件的存储可以使用VS2008的saveFileDialog控件,当用户点击保存按钮时,将执行this->saveFileDialog1->ShowDialog()程序,从而显示保存文件对话框,程序根据用户输入的文件名和路径保存文件。文件存储为二进制数据,根据文件格式,首先需要以二进制可写模式创建或者打开文件;然后查找波形采样值的最大值和最小值,根据最大值和最小值对采样数据进行归一化处理;数据处理完成之后即可根据文件格式依次写入文件名、采样点总数和采样值。

3 任意波形生成软件测试

根据任意波形生成软件的基本框架,对任意波形生成软件进行了基本测试,主要测试内容有:绘图区建立、基本波形生成、公式编辑、波形编辑、文件存储和数据通信等功能。经过测试,通过VS2008生成的应用软件可以工作于windows XP、win7、win8等系统,基本功能正常,波形生成、绘制迅速,软件非常稳定可靠。通过软件生成一个总时间为1s、总采样点数为16K、幅度2V、周期数为2、对称度为80%的斜波如图5所示。

4 结论

通过实际测试和应用,使用VS2008设计开发的任意波形生成软件在windows系统下工作比较稳定可靠。软件提供的功能非常丰富,用户可以很方便地生成各种波形;由于此软件数据采样的方法主要依据时域采样定理,所以得到的采样值比较准确,能有效地表示波形信号;提供绘图区,比较直观地展示了用户绘制的波形。综上所述,此软件具有功能全面、采样准确、绘图迅速、稳定可靠等特点,在各种开发、测试中得到广泛地应用。

参考文献

[1]潘婷婷,胡仁杰,王慧.一种任意波形发生器的设计[J].电工电气,2009(06):16-18.

[2]刘大红,王峰.基于VS 2008的Demo测试软件设计[J].电子科技,2013,26(06):122-123.

[3]高西全,丁玉美,编.数字信号处理[M].西安:西安电子科技大学出版社,2008.

[4]廖东民,吕印晓.采样定理的分析及应用初探[J].山东工业技术,2014(02):183-184.

作者單位

南京电子技术研究所 江苏省南京市 210039