基于QT任意波发生器数据生成软件设计毕业设计论文.docx
- 文档编号:24560021
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:55
- 大小:1,023.19KB
基于QT任意波发生器数据生成软件设计毕业设计论文.docx
《基于QT任意波发生器数据生成软件设计毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于QT任意波发生器数据生成软件设计毕业设计论文.docx(55页珍藏版)》请在冰豆网上搜索。
基于QT任意波发生器数据生成软件设计毕业设计论文
毕业设计论文
基于QT的任意波形数据生成软件设计
摘要
随着电子测量技术与计算机技术的紧密结合,一种新的信号发生器——任意波形发生器应运而生。
用户可以用它生成任意复杂波形,因而具有广阔的应用前景。
任意波形发生器是应用越来越广泛的一种信号源,而国内在任意波形发生器的研制方面相对较晚,推出的产品很少,市场占有率几乎为零。
因此,对任意波形发生器的研制进行深入的研究已成为测试领域的一个新的课题,同时对于促进虚拟仪器技术的发展、应用以及适应自动测试系统的组建和完整性要求都具有深远的意义。
本设计是基于QT软件来实现任意波数据的生成,本系统包含有基本波形模块,谐波模块,手绘波形模块,基本波形合成模块。
QT的模块程度更高、运行速度快、成本低、开发方便并且全部都是开放源代码。
本任意波形发生器不仅能产生正弦波、方波、三角波等常用的标准信号,也可以将几种基本波形进行合成,并根据用户的需要生成任意波形,对于目前三种典型的任意波形发生器——PC总线插卡式,独立仪器,VXI模块都有重要的参考价值。
关键词:
波形发生器,任意波形,QT,Linux
QT-BASEDARBITRARYWAVEFORMGENERATIONSOFTWAREDESIGNDATA
ABSTRACT
Inmodernelectronicmeasuringinstruments,testexcitationsignalgeneratorusedisakindofveryimportantinstrument,closelyintegratedwiththeelectronicmeasurementtechnologyandcomputertechnology,anewsignalgenerator-cameintobeingarbitrarywaveformgenerator.Relativelylateinthedevelopmentofthedomesticaspectsofthearbitrarywaveformgenerator,developmentandapplicationoftheproductisrelativelydevelopedmoreslowly.Therefore,thedevelopmentofanarbitrarywaveformgeneratorin-depthresearchhasbecomeanewsubjectareastested,whileallhavefar-reachingsignificanceforpromotingthedevelopmentandapplicationofvirtualinstrumenttechnologyandtheautomatictestsystemtoadapttotheformationandintegrityrequirements.
Inthispaper,basedontheanalysisofexistingwaveformgeneratordesignscheme,basedonQTsoftwaretoachievearbitrarywaveformdatatogenerateahigherdegreeofQTmodule,runningspeed,lowcost,easytodevelopandareallopensource.Sowhetheritisbasedonthedevelopmentofelectronictechnology,marketdemandorsoftware-basedquickandeasytouseQTtoachievearbitrarywaveformdatagenerationisgroundbreakingandisstillverynecessary.Thearbitrarywaveformgeneratorcangeneratearbitrarywaveformsaccordingtotheuser'sneeds,thecurrentthreetypicalarbitrarywaveformgenerator-PCbusplug-in,independentinstrument,VXImodulehasimportantreferencevalue.
KEYWORDS:
WaveformGenerator,ArbitraryWaveform,QT,Linux
前言
随着电子测量及其他部门对各类信号发生器的广泛需求及电子技术的迅速发展,促使信号发生器种类增多,性能提高。
尤其随着70年代微处理器的出现,更促使信号发生器向着自动化、智能化方向发展。
任意波发生器在工业生产、科研实验中获得了越来越广泛的应用;如在雷达、通讯、仿真、电子、生物、机械、计算机等一系列系统测试中,都要用到任意波发生器;尤其是在要求同步输出任意波形的场合以及需要产生复杂波形信号的场合,任意波发生器具有特别的优势。
可见,为适应现代电子技术的不断发展和市场需求,研究制作高性能的任意波数据生成器十分有必要,而且意义重大。
QT是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架。
它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。
QT是面向对象的框架,使用特殊的代码生成扩展以及一些宏,易于扩展,允许组件编程。
本设计是基于QT软件来实现任意波数据的生成,QT的模块程度更高、运行速度快、成本低、开发方便并且全部都是开放源代码。
所以不管是基于电子技术的发展、市场的需求还是基于软件的方便快捷,使用QT来实现任意波数据的生成是开创性的并且还是十分有必要的。
第1章绪论
§1.1课题来源、目的及意义
波形发生器即通常所说的信号发生器是一种常见的信号源,广泛应用与电子电路、自动控制和科学试验领域,是一种为电子测量工作提供符合严格技术要求的电信号设备。
随着现代电子技术的飞速发展,现代电子测量工作对波形发生器的性能提出了更高的要求,不仅要求能产生正弦波,方波等标准波,还能根据需要产生任意波形,切操作方便,输出波形质量好,输出频率范围宽,输出频率稳定度、准确度及分辨率高,频率转换速度快且频率转换时输出波形相位连续等。
在科学研究、工程教育及生产实践中,如工业过程控制、教学实验、机械振动实验、动态分析、材料实验、生物医学等领域,常常需要用到低频信号发生器。
而在我们日常生活中,以及一些科学研究中,锯齿波和正弦波、矩形波信号是常用的基本测试信号。
譬如在示波器、电视机等仪器中,为了使电子按照一定规律运动,以及利用荧光屏显示图像,常用到锯齿波产生器作为时基电路。
信号发生器作为一种通用的电子仪器,在生产、科研、测控、通讯等领域都得到了广泛的应用。
但市场上能看到的仪器在频率精度、宽带、波形种类及控制方面都已不能满足许多方面的需求。
加之各类功能的半导体集成芯片的快速生产,都使我们研制一种低功耗、宽频带,能产生多种波形并具有程控等低频的信号发生器成为可能。
§1.2任意波形数据生成的国内外研究现状
任意波形发生器是随着众多领域对于复杂的、可由用户定义的测试信号波形日益增长的需要,以及不断进步的计算机技术和微电子技术在测量仪器中的应用而形成和发展起来的一类新的测试仪器。
作为当代最新的一类信号源,引起了世界各国的广泛重视,纷纷投入人力物力进行研究制作。
主要现状如下:
第一,研究制作的任意波形发生器主要有独立的台式仪器和适用于个人计算机的插卡以及VXI模块。
第二,主要采用了直接数字频率合成技术(DirectDigitalfrequencySynthesis,简称DDS),研究制作基本上均采用了软件结合硬件的方式。
虚拟仪器开发编程语言LabWindows/CVI、汇编语言、VisualBasic、VisualC、EDA开发软件及硬件描述语言等软件和FPGA、CPLD、DSP芯片及高速存储器、高速D/A转化器、单片机等硬件被广泛应用。
第三,大量使用各种高速器件提高时钟频率,使任意波形发生器输出波形频率不断提高,能应用于越来越广泛的领域。
第四,使用各种计算机语言开发任意波形发生器波形编辑软件和操作软件面板,使任意波形发生器的操作控制或任意波形数据生成变得更加方便和容易,允许徒手从计算机显示屏上输入任意波形。
上位机于任意波形发生器硬件模块广泛使用RS-232/485、GPIB等总线进行数据通信,近年,USB接口也逐步被广泛研究和应用。
第五,与VXI资源结合。
由于VXI总线的逐步成熟和对测量仪器的高要求,在很多领域需要使用VXI系统测量和产生复杂的波形,VXI的系统资源提供了明显的优越性。
但由于开发VXI模块的周期长,而且需要专门的VXI机箱的配套使用,使得VXI的任意波形发生器模块仅限于航空、军事及国防等大型领域,在民用方面,VXI模块远远不如台式仪器更为方便[4]。
就任意波形发生器技术而言,目前引领技术潮流的仍是国外的几大仪器公司,如美国国家仪器有限公司NI,美国安捷伦(Agilent)公司,美国泰克(Tektronix)公司,从台式机到插卡式模板都有不同档次的产品。
泰克公司的任意波形发生器产品在波形合成上采取了传统技术与DDS技术相结合的方式,使输出波形的质量很高。
Agilent公司是单纯的采用DDS技术来合成波形,这样在电路结构上要简单得多,性价比很高。
代表性的产品有NI发布的NI5412,Agilent33220A函数/任意波形发生器,美国泰克公司研制的AFG3000系列的任意波形发生器等,这些波形发生器都具有易于操作、高频率分辨率和宽频率范围等特点。
这些产品代表了任意波形发生器的发展趋势:
即更高取样率,更高分表率,更大存储量和更丰富的人机接口界面[6]。
目前我国已开始研制任意波形发生器,并取得了可喜的成果。
但总的来说,我国任意波形发生器还没有形成真正的产业。
就目前国内成熟的产品来看,多为一些PC仪器插卡,独立仪器和VXI系统的模块很少,并且我国目前任意波形发生器的种类和性能都与国外同类产品存在较大的差距,因此加紧对这类产品的研制显得迫在眉睫。
任意波形发生器作为信号发生器家族的一个新的成员,技术发展十分迅速,市场份额也日渐扩大,其状况和地位有如示波器家族中的数字存储示波器,以美国TEK公司为代表的国际各大电子测量仪器公司,其任意波形发生器产品已经纷纷形成系列,开始逐步取代传统的函数发生器,可以说任意波形发生器已经成为信号源的发展方向。
§1.3当前主要任意波形数据生成的基本方式
§1.3.1基于VXI的数字信号处理法
VXI总线以其开发的系统结构、模块化的设计、紧凑的机械结构、良好的电磁兼容性等一系列优点,在众多军事、工业、商业等领域受到日益广泛的应用。
基于VXI总线的任意波形生成将实现仪器的高速、模块化,可以通过PC机调用任意波形生成的软件面板来对仪器进行控制,具有测试精度高、使用空间小等特点。
作为当代一类新型的信号源,在设计上它不仅保留了传统台式任意波形发生器所具有的各种功能,而且较传统波形发生器产生波形的种类多、频率高,可由计算机直接控制。
作为一种基于VXI总线的卡式仪器,它可以很方便地与VXI总线测试系统集成,很大限度的发挥计算机和微电子技术在当今测试领域中的应用,具有一定的应用和发展前景。
基于VXI总线任意波形发生器是数字式信号发生器,数字信号处理法采用数字信号处理器(DSP)实现任意波形合成。
用DSP求解一个数字递推关系式产生出波形的离散序列,输出给D/A转换器,可以获得较高频率的波形信号。
这种方法需要专用DSP开发系统,而且存在输出频率不连续可调和控制不便的缺点[7]。
§1.3.2软件合成法
软件合成法是由计算机软件,根据幅值、频率、相位计算出产生高精度波形所需数据表,计算机将离散序列送经D/A转化器和滤波器输出。
这种方法是优点是电路简单,缺点是不能产生高频率的信号。
造成信号频率低的原因是数据读取速度受计算机指令执行时间的限制,仅靠提高存储器本身存取速度和D/A转换器的速度不可能解决信号带宽问题。
§1.3.3直接数字频率合成
DDS是从相位概念出发直接合成所需要波形的一种新的频率合成技术。
DDS是把一系列数字量信号通过D/A转换形成模拟信号的合成技术。
主要是利用高速存储器作查询表,然后通过高速D/A转换器产生已经用数字形式存入的正弦波(或其他任意波形)[14]。
一个典型的DDS系统应包括:
参考时钟,正弦查找表,相位累加器,D/A转换电路和滤波器等组成[5],如图1-1所示。
图1-1典型DDS系统
随着数字信号处理理论和方法引入到频率合成领域中,任意波形发生器使用直接数字合成的方式可以方便的产生各种需求的波形。
将图1-1中的正弦查找表用波形存储器来替代[10],得到图形如图1-2所示。
每个波形存储器中存储一个周期的任意波形信号,周期由若干波形点构成,而波形点和相位一一对应,所以又相当于一个相位/振幅变换器,振幅信息通过D/A转换器生成阶梯波形,经过滤波得到需要的波形。
指定频
率正弦波
频率
控制器
参考
时钟
图1-2任意波形DDS系统
§1.4本文主要研究内容
本设计是基于QT软件来实现任意波数据的生成,属于直接数字信号合成。
QT的模块程度更高、运行速度快、成本低、开发方便并且全部都是开放源代码。
QT还是面向对象,具有优良的跨平台性,以及大量的开发文档等,这些优越性使我们在开发任意波软件时具有更多的优势。
QT的界面设计十分强大,使软件更加符合人们的要求,更加的人性化。
总之基于QT软件开发任意波形的生成对于降低成本、提高系统的可靠性、灵活性、适应性,缩短开发周期,具有重大的实际意义。
本设计的主要工作如下:
1、分析任意波形数据生成的发展、分类、及各种任意波形生成的方法。
2、进行软件部分设计及测试:
根据系统要实现的功能画出本系统的软件流程图,编写C++源代码,并进行编译、修改直到达满意的结果。
3、系统模块调试:
软件整体设计结束后,对各个模块就行测试、修改直达到满意的结果。
4、对设计的系统进行测试,获得测试的波形,并且进行波形分析。
第2章系统软件设计
§2.1系统总体设计框图
本系统是基于QT进行的纯软件开发设计,本系统包含有四大模块,分别为:
基本波形生成模块,谐波生成模块,手绘波形生成模块,基本波合成波
形模块。
本系统的总体设计框图如图2-1所示。
图2-1系统总体设计框图
基本波形共有18种标准波形分别为:
正弦波、余弦波、正切波、余切波、升指数、降指数、正半波、负半波、正全波、负全波、噪声、抽样函数、高斯函数、直流、方波、三角波、锯齿波、负锯齿。
本设计的谐波是基于正弦波实现的。
手绘波形是建立一个窗口,在这个窗口里用户可以用鼠标点击移动画线,根据用户自己的要求,可以画出用户想要的波形。
基本波形的合成是基于基本波形的基础上,在任意波形任意相位任意点处,与任意波形连接,也可以是在某些位置处和其他波形合成,形成一个新的波形。
本系统的流程图如图2-2所示。
图2-2系统流程图
§2.2基本波形的设计
在基本波形的设计前要先进行QT窗口的建立,设计主操作界面,使用QT进行窗口程序设计的一般流程如图2-3所示。
对于创建一个新的QT应用程序来说,QT使用一个projectworkspace来存储该项目所需的所有文件,其中projectworkspace就是一个文件夹,与项目相关的文件存储在该文件夹下。
而一个项目又由一定数量的文件组成,如果要生成一个可执行程序,文件必须包括cpp文件和头文件,而这些文件通常都存储在同一工作区文件夹中。
我们在New选择一个项目类型,创建一个新的GUIapplication首先从菜单单栏中选择File项打开如图2-4和图2-5所示。
图2-3QT窗口设计流程
在图2-4所示的New对话框中选C++,选择子项GUIApplication项目类型。
当开始一个新项目里首先想好三项内容。
第一项内容是项目类型是什么;第二项内容是项目名称是什么;第三项内容是是否需要创建界面。
图2-6项目是否需要创建界面(需要的话,创建界面上打上勾)。
图2-4File子菜单
图2-5New对话框
图2-6含一个活动工作区的IDE窗口
设计主操作界面:
界面直接表现一个应用程序的功能。
QT提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。
主界面主要包括对话框,工具栏和菜单栏,它们可以将应用程序的所有功能与界面中的控件或菜单命令联系起来。
主界面窗口大小为600*500的,包含一个tableView和九个按键。
TableView是为了显示当前生成的波形的基本信息。
如图2-7。
信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解。
信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。
图中九个按键分别为添加波形、添加谐波、手绘、删除、保存、关于、清空、打开、退出。
这九个按键的槽函数分别为:
add_bx_signal、add_signal、tuyaban、del_signal、save_file、about_software、clear_signal、open_file、Quit。
我们在设置槽函数时,要先在头文件声明槽函数[13],头文件中有三个区域,分别为:
publicslots、protectedslots和privateslots。
图2-7主界面的运行界面
publicslots:
在这个区内声明的槽意味着任何对象都可将信号与之相连接。
这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。
protectedslots:
在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。
这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。
privateslots:
在这个区内声明的槽意味着只有类自己可以将信号与之相连接。
这适用于联系非常紧密的类。
我们以上九个槽函数都属于这一类型。
以上是创建类以及设置主窗口的基本操作,基本波形、谐波、手绘及基本波合成都是在此基础上来进行研发的。
基本波形首先是在系统的mix类中,它的程序流程图如图2-8所示。
图2-8基本波形的程序流程图
共模块共包含有18种基本波形,它的设计界面如图2-9。
图2-9基本波形的设计界面
此模块包含有波形、幅值、相位、起始点、终止点、确定及取消。
波形的槽函数为comboBox,包含有18个基本波形,可以任意选择基本波形;幅值为am,最大值为100,最小值为0;相位为ph,最大为360;起始点和终止点范围为0到32768;确定的槽函数为dialog_ok;取消的槽函数为dialog_cancel。
这几个槽函数的定义都在mix的头文件中privateslots中。
波形中正弦波为sin_generate_wave,正弦波的程序如下:
for(i=start;i {temp=i; temp/=32768.0; temp*=count; temp*=3.141592653; temp=sin(temp+phase/360*2*3.141592653); temp+=1.0; temp/=2.0; temp*=(16383.0*amplitude/100); *(p+i)=temp+*(p+i);} 其他还有余弦波cos_generate_wave,正切波tan_generate_wave,余切波cot_generate_wave,直流dc_generate_wave,升指数expf_generate_wave,降指数expr_generate_wave,负全波full_n_generate_wave,正全波full_p_generate_wave,高斯函数gaus_generate_wave,负半波half_n_generate_wave,正半波half_p_generate_wave,噪声noise_generate_wave,抽样函数sinc_generate_wave,方波square_generate_wave,三角波triangle_generate_wave,锯齿波sawtooth_generate_wave,负锯齿fusawtooth_generate_wave。 这些函数定义都在头文件的publicslots中,函数程序与正弦波的函数程序相类似。 §2.3谐波的设计 谐波在设计中首先要创建属于谐波的类,创建类的过程见2.2基本波形类的创建。 本次设计的谐波属于dialog类中,它的程序流程图如图2-10所示。 图2-10谐波的程序流程图 添加谐波的设计界面如图2-11。 图2-11添加谐波的设计界面 此界面包含有谐波次数、幅度比例、信号相位、确定及取消。 谐波次数能选择2-100次;幅度大小为0-100;相位为0-360。 确定和取消的槽函数为dialog_ok和dialog_cancel,属于privateslots。 谐波的设计程序为: intwave_count;//定义wave_count doublewave_amplitude;//定义wave_amplitude intwave_phase;//定义wave_phase boolok;//申请布尔变量ok doublewave_temp_data[32768];//32768个数组generate_wave(wave_data,2,100.0,0);//产生基波 for(inti=0;i {wave_count=model->item(i,0)->text().toInt(&ok,10); wave_amplitude=model->item(i,1)->text().toDouble(&ok); wave_phase=model->item(i,2)->text().toInt(&ok,10)%360; generate_wave(wave_temp_data,wave_count,wave_amplitude,wave_phase); for(intk=0;k<32768;k++)wave_data[k]+=wave_temp_data[k]; } wave_data_process(wave_data,32768); show_wave(wave_data,32768);//显示图形 returntrue; 如图2-12选择谐波次数50次,幅值100,相位0。 图2-12谐波参数选择界面 生成的图形如图2-13。 图2-13谐波生成图形 §2.4手绘波形的设计 手绘波形在设计中首先要创建属于手绘的类,创建类的过程见2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 QT 任意 发生器 数据 生成 软件设计 毕业设计 论文