基于labview和fpga-的虚拟仪器平台设计_第1页
基于labview和fpga-的虚拟仪器平台设计_第2页
基于labview和fpga-的虚拟仪器平台设计_第3页
基于labview和fpga-的虚拟仪器平台设计_第4页
基于labview和fpga-的虚拟仪器平台设计_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./基于labview、fpga的虚拟仪器平台开发与设计摘要现代生产要求电子仪器品种多、功能强、精度高、自动化程度高,而且要求测试的速度快、实时性好,具有良好的人机界面。虚拟仪器正好可以实现这些要求。在电子实验中使用多种仪器,如信号发生器、万用表、频率计、示波器等,如果能把它们都设计成虚拟仪器,利用计算机来提高仪器的集成度,减少实验匹配的仪器的种类、数量和实验室面积,便能从根本上改变实验室的面貌,克服传统测量仪器单一功能的缺点。本设计正是以这种思想为出发点,以电子技术实验室的真实函数信号发生器、示波器、频率计为蓝本,利用LabVIEW编程来设计虚拟函数信号发生器、虚拟存储示波器、虚拟频率计,并将其合并在一个虚拟平台上面,能够分别实现虚拟仿真函数信号发生器、存储示波器、及频率计的功能,实现真正意义上的虚拟仪器平台。其虚拟平台上面的函数信号发生器可以产生正弦波、三角波、方波三种波形,并能够实现波形频率从1Hz到2MHz可调,峰峰值从0.1V到8.0V可调,实时性很好;示波器能正确的显示波形,并能实现频率和幅值的可调;频率计可以对0HZ到99.99KHZ的信号进行频率的测量。本设计利用RS-232串口进行数据的传输,实现了LabVIEW与FPGA的通信。同时对仿真信号的生成与控制做了详细的分析,以及对设计中的问题进行了深入的探讨。本设计旨在找到一个能够改革教学实验室的有效途径。关键词:虚拟仪器,LabVIEW,RS-232,FPGATHEDESIGNOFVIRTUALINSTRUMENTSPLATFORMBASEDONLABVIEWANDFPGAABSTRACTModernproductionrequireselectronicinstrumentationvarietymany,strongfunction,highprecision,highdegreeofautomation,andhighspeed,goodreal-timeintesting,goodman-machineinterface.VirtualInstrumentscanmeetpreciselytheserequirements.Avarietyofinstrumentsareusedintheelectronicexperiments,suchassignalgenerator,multimeter,frequencymeter,oscilloscope,etc.Ifweareabletodesignthemtovirtualinstruments,improvetheintegrationofinstrumentsusingcomputerandreducethetypeandnumberofinstrumentsmatchedtoexperimentsandthespaceoflaboratory,thenwecanchangethefaceofthelaboratoryfundamentallyandconquertheshortcomingsofsinglefunctionofthetraditionalmeasuringinstruments.Thedesignofthisthinkingisthestartingpointofelectronictechnologytotherealfunctionofthelaboratorysignalgenerator,oscilloscope,frequencymeterbasedontheuseofLabVIEWprogrammingtodesignthevirtualfunctionsignalgenerator,virtualstorageoscilloscope,thevirtualfrequencymeter,andcombinedinavirtualplatform,toachievethevirtualsimulationfunction,respectively,signalgenerator,oscilloscope,andfrequencyoffunctions,therealizationofthetruesenseofthevirtualinstrumentplatform.Itsvirtualplatformfortheabovefunctionsignalgeneratorcanproducesinewave,trianglewave,squarewavethree,andbeabletoachievethewaveformfrequencyfrom1Hzto2MHzAdjustablepeakpeakadjustablefrom0.1Vto8.0V,averygoodreal-time;oscilloscopewaveformdisplaycorrectly,andtoachieveanadjustablefrequencyandamplitude;0HZCymometercan99.99KHZsignaltothefrequencymeasurements.ThedesignoftheuseofRS-232serialportfordatatransmission,therealizationoftheLabVIEWandFPGAcommunication.Atthesametime,thegenerationofsimulationandcontrolsignalstodoadetailedanalysis,aswellasdesignissuesindetail.Thedesignofareformaimedatfindinganeffectivewayofteachinglaboratory.KEYWORDS:VirtualInstrument,LabVIEW,RS-232,FPGA目录TOC\o"1-3"\u前言1第1章绪论2§1.1虚拟仪器的背景2数字信号处理技术2虚拟仪器技术2§1.2本课题研究的意义3设计的依据及意义3国内外发展状况4§1.3关于LabVIEW 5开发环境LabVIEW 5选择LabVIEW的原因5第2章系统的构想与方案设计7§2.1上位机与下位机7§2.2DDS的工作原理7§2.3方案论证8§2.4系统整体框图与设计思想11系统框图11频率计设计思想12函数信号发生器设计思想13第3章上位机设计15§3.1LabVIEW软件设计思想15§3.2人机交互界面设计17人机交互界面的构成18界面的组件设计19§3.3主VI程序框图设计20程序框图20器件选择部分设计21串口发送部分设计21§3.4函数信号发生器程序框图的设计22程序框图22波形类型部分设计23频率选择部分设计24峰峰值调节部分设计25串口发送部分设计25§3.5频率计程序框图的设计26程序框图26发送数据类型控制部分设计26串口发送部分设计28串口接收部分设计28显示部分设计29§3.6设计中用到的主要VI 29第4章下位机设计31§4.1FPGA软件中主模块的设计思想31主模块的软件设计原理总图31§4.1.2FPGA软件中主模块的设计原理31§4.2FPGA软件中函数信号发生器的设计思想32函数信号发生器的软件设计原理总图32§4.2.2FPGA软件中函数信号发生器的设计原理32§4.3FPGA软件中频率计的设计思想34频率计的软件设计原理总图34§4.3.2FPGA软件中频率计的设计原理34§4.4频率计的系统模块设计35串口接收模块35串口转换模块38分频模块39控制模块40串口发送模块41频率计模块42§4.5函数信号发生器的系统模块设计45串口接收模块45串口转换模块45分频模块46地址发生器模块48§4.5.5ROM表查询模块49波形选择模块51幅值调节模块52频段选择模块53§4.6串口的编码与解码54关于串口54串口的设置55串口的发送与接收55§4.7硬件连接56第5章软件仿真测试与实时检测57§5.1LabVIEW软件仿真测试57§5.1.1LabVIEW软件中函数信号发生器的仿真测试57§5.1.2LabVIEW软件中频率计的仿真测试57§5.2FPGA软件中函数信号发生器的仿真测试58§5.3FPGA软件中频率计的仿真测试59§5.4总功能实时检测59参考文献65致谢66附录.前言虚拟仪器的出现就是仪器发展史的一场革命,代表仪器发展的方向和潮流,对科学技术的发展和工业生产的进步产生了巨大的推动作用。虚拟仪器技术是测试领域的一种新的思想和方法,它的出现是测试仪器技术和测控系统的一个新的里程碑。虽然是新兴的仪器仪表技术,但由于其具备许多区别于传统仪器的突出优点,可以由用户自行设计定义,灵活变换参数,随着计算机技术特别是软件技术和仪器技术的进步而飞速发展,因此使现代测控的系统更灵活、更紧凑、更经济、功能更强大,从而在国内外各个领域得到了越来越广泛的应用。特别在电子测量和自动化控制领域,虚拟仪器技术得到了巨大的发展。虚拟仪器是一种功能意义上的测量和控制仪器,是具有仪器功能的软件、硬件的组合。它充分利用计算机技术,在基本的硬件支持下,通过调用相应的软件模块来完成各种传统仪器的功能。本文从探索研究的角度出发,对虚拟仪器的系统构成、实现手段和开发方法进行了研究。在此基础上,研究开发了基于LabVIEW开发平台的虚拟仪器平台,通过计算机串口把LabVIEW发送的控制指令送到GW48实验箱FPGA的RS-232接收引脚,经过FPGA对控制指令的处理,实现对虚拟平台上面相应虚拟仪器的调用,对不同的虚拟仪器应做不同的处理:如,虚拟频率计,当其接收到开始工作的信号后,将其频率和占空比,通过RS-232发送引脚,发送给计算机上面的LabVIEW,LabVIEW通过对串口进行读操作,将读到的结果转换成数值,并将其在虚拟频率计的界面上面显示,结果较为满意。在开发虚拟仪器的同时,掌握了LabVIEW编程语言和开发技术及标准,对虚拟仪器的构成、实现手段和开发方法有了一定的认识。由于虚拟仪器技术在国内尚未普及,针对传统教学仪器缺乏或陈旧、教学方式呆板、学生实验使用多台仪器,实验准备烦琐,支持维护困难、实验室设备更新,硬件更新费时费力的等情况。把虚拟仪器引入教学是一种必然趋势。本文试图探索出一条适合我国国情的虚拟仪器的途径,做到花钱少,具有较高的性价比,以在教学实验领域进行推广。绪论虚拟仪器的背景虚拟仪器涵盖了数字信号处理、虚拟仪器技术等多方面知识。本文所开发的虚拟仪器平台就是在信号技术、计算机技术、电子技术高速发展的背景下,利用美国NI公司的虚拟仪器开发平台——LabVIEW进行设计开发的,它可以快速方便地实现信号的采集、显示、分析、储存、读取和输出。数字信号处理技术在科学研究和生产过程中,经常要对许多客观存在的物体或物理过程进行观测。这些客观存在的事物包括了大量标志本身所处时间空间特征的数据和"情报",这就是该事物的"信息"。人们为了某一特定的目的,从浩瀚的信息中把所需要的部分提出来,以达到观测某一本质问题的目的。这种对信息的表达形式称之为"信号",信号是某一特定信息的载体。信号传输理论与技术的不断发展使信号处理技术的出现成为必然。在科学和工程技术领域中,常常需要对信号进行处理。信号处理就是对数据进行所需要的变换或按约定的规则进行运算,使之更便于对它们进行分析、识别和使用。信号的处理包括对信号的监测、滤波、时域分析、频域分析,调制等等。信号分为模拟信号和数字信号,在对模拟信号进行处理时,既可以使用模拟系统也可以使用数字系统。使用数字系统处理模拟信号时,需要先将模拟信号转化为数字信号,即模数转化<A/D>,然后用数字系统进行处理,得到一个处理后的数字信号,再经过数模转化<D/A>,得到所需的模拟信号。虚拟仪器技术由于电子技术、计算机技术、软件技术、网络技术的高度发展及其在电子测量技术与仪器上的应用,新的测试理论、新的测试方法、新的测试领域及新的仪器结构不断出现,许多方面已经突破传统的仪器概念,电子测量仪器的功能和结构己经发生了质的变化。在这种背景下,八十年代末美国率先研制了虚拟仪器<VirtualInstruments>。虚拟仪器就是利用现有的计算机加上特殊设计的仪器硬件和专用软件,形成既有普通仪器的基本功能,又有一般仪器没有的特殊功能的高档、低价的新型仪器。虚拟仪器利用个人计算机强大的图形环境和在线帮助功能,建立虚拟仪器面板,完成对仪器的控制、数据分析与显示。代替传统仪器,改变了传统仪器的使用方式,提高仪器的功能和使用效率,同时大大降低了仪器的价格,使用户可以根据自己的需要定义仪器的功能。用于虚拟仪器的开发环境目前有两大类:一是文本式的编程语言,如VisualBasic,VisualC++、LabWindow/CVI等,另一类是图形化编程语言,具有代表性的有LabVIEW,HPVEE。其中影响最大的要数LabVIEW<LaboratoryVirtualInstrumentEngineeringWorkbench,实验室虚拟仪器工程平台>语言,被称为"仪器仪表界面",是专为数据采集与仪器控制、数据分析和数据表达而设计的开发软件[1]。本课题研究的意义设计的依据及意义虚拟仪器〔VirtualInstrumention是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW。目前,在大多数院校的实验教学中,常用的仍然是功能固定的台式仪器,主要有存储示波器、函数信号发生器、频率计、实验箱、电源等。对于一个高等院校而言,进行实验教学最少需要配备30套设备,每套造价近万元,其负担是可想而知的。更由于电子设备更新快,时间一久,进行正常的实验对于好多院校都是一个困难。另外,台式机操作复杂,调试困难,受干扰程度高,在教学中不易受学员接受。而采用虚拟仪器教学实验系统,首先,仪器使用软件实现,我们可以把以上所说的几种仪器集成在一个系统中,运用不同切换过程,可以同时实现教学的目的。本课题利用LabVIEW软件和FPGA的通讯在计算机屏幕上实现虚拟仪器平台面板,此虚拟仪器平台上包括函数信号发生器、存储示波器和频率计仪器,用户可以通过鼠标对操作面板的按钮、开关和按键,进行上述仪器的功能切换并设置各种工作参数,来控制和操作相应的仪器。测量和分析结果可以从虚拟仪器面板上读出。用户在屏幕上通过虚拟仪器面板对仪器的操作如同在真实仪器上的操作一样直观、方便、灵活。利用虚拟仪器开设综合性、创新型实验,使理论教学与实践更好的紧密结合,教学更生动、更形象,全面提高学生工程素质。同时还可以激发学生的实验兴趣,使学生的实验技能、创新能力得到显著提高。由于此仪器平台具有多台仪器的功能,实验所需仪器的占地面积被减小,相应的实验准备过程被大大的简化。函数信号发生器、频率计和存储示波器作为实验课程上必备的实验仪器,本课题设计虚拟仪器平台比传统的更加灵活,节约成本。教师在教学过程中不需要在一台真实的仪器前操作,只需在电脑上即可完成仪器的演示。虚拟仪器的教学更好的结合了理论与实践相结合,使学生的软件与硬件技能同步提高,虚拟仪器软硬件上模块化的设计使学生在学习的方式上更加灵活,也容易掌握。由此可见,就课程的开设和学生的实际情况来讲虚拟仪器教学是可行的,虚拟仪器平台的设计对于我们日后教学是有一定的意义的。国内外发展状况早在八十年代,随着NI旗航产品LabVIEW的诞生,NI就提出"软件就是仪器的口号",开辟了"虚拟仪器技术"的崭新测量概念。从九十年代开始,国内一些大学在实验教学领域相继开展了虚拟仪器系统的研究与开发工作。目前,我国部分高校还正在开展虚拟仪器的研究工作,重点在于研制具有自主知识产权的虚拟仪器软件平台,并开发响应的虚拟仪器设备。20XX10月和20XX1月NI分别联合XX大学和华中科技大学创建LabVIEW实验室;20XX12月清华大学与美国国家仪器公司在精密仪器和机械系新建虚拟仪器联合教学实验室。LabVIEW作为一种模块化、图形化程序设计工具具有图形化程序设计编程简单、直观、开发效率高、测试系统开发完整等优点。在国内外,航天、航空、通信、汽车、半导体、自动控制和生物医学等世界范围的众多领域内得到广泛应用使得非专业人员进行虚拟仪器开发变得容易。在虚拟仪器的硬件构成中,数据采集卡的性能是最重要的。由于PCI总线传输速率高,数据吞吐量大,因此基于PCI总线的数据采集卡成为设计的主流。但是由于数据采集卡价格昂贵,且教学实验波形精确度要求不高,也可采用基于NiosⅡ与LabVIEW的函数波形发生器设计,即采用FPGA结合微处理器的形式。DDS部分功能由FPGA来实现,微处理器用于完成控制功能,再运用SOPC技术基于FPGA芯片将处理器、存储器、I/O等系统需要的模块集成到一起,软硬件可裁减,并具备在系统可编程的功能,可大大简化系统电路,提高系统集成度。关于LabVIEW开发环境LabVIEW孤立的计算机硬件和I/O接口设备均无法完成测试任务,软件技术在自动测试系统的研制与开发中正在起着越来越重要的作用。LabVIEW编程语言是美国最大的虚拟仪器制造商NI公司推出的一种基于G语言<GraphicsLanguage>的虚拟仪器软件开发工具。LabVIEW是"实验室虚拟仪器工程平台〔LaboratoryVirtualInstrumentEngineeringWorkbench"的缩写,用于LabVIEW设计的虚拟仪器可脱离LabVIEW开发环境,用户最终看见的是和实际硬件仪器相似的操作面板。LabVIEW是一个工程软件包。1986年,美国国家仪器公司〔NationalInstruments开发研制出它是基于苹果公司的Macintosh微机的最早版本。之后,该公司不断推出各种操作系统的LabVIEW版本[2]。它们的出现开创了虚拟仪器的仪器研究新方法。选择LabVIEW的原因选择LabVIEW开发测试和测量应用程序的一大决定性因素是其开发速度。通常,使用LabVIEW开发应用系统的速度比其他编程语言快4~10倍。这一惊人速度背后的原因在于LabVIEW易用易学,它所提供的工具使创建测试和测量应用变得更为轻松。LabVIEW的具体优势主要体现在以下几个方面:提供了丰富的图形控件,并采用图形化的编程方法,彻底把工程师们从复杂枯涩的文本编程工作中解放出来。内建的编译器在用户编写程序的同时就在后台自动完成了编译。因此用户在编写程序的过程中如果有语法错误,它会被立即显示出来。由于采用数据流模型,它实现了自动的多线程,从而能充分利用处理器尤其是多处理器的处理能力。通过DLL、CIN节点、ActiveX、.NET或MATLAB脚本节点技术,可以轻松实现LabVIEW与其他编程语言混和编程。通过应用程序生成器可以轻松地发布EXE、动态链接库或安装包。LabVIEW提供了大量的驱动与专用工具,几乎能与任何接口的硬件轻松连接。LabVIEW内建了600多个分析函数,用于数据分析和信号处理。NI同时提供了丰富的附加模块,用于扩展LabVIEW在不同领域中的应用,例如实时模块、PDA模块、FPGA模块、数据记录与监控〔DSC模块、机器视觉模块与触摸屏模块等[3]。系统的构想与方案设计上位机与下位机上位机是指:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化〔液压,水位,温度等。下位机是直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据〔一般模拟量,转化成数字信号反馈给上位机。简言之如此,真实情况千差万别不离其宗。上下位机都需要编程,都有专门的开发系统。在概念上控制者和提供服务者是上位机,被控制者和被服务者是下位机,也可以理解为主机和从机的关系,但上位机和下位机是可以转换的。两机如何通讯,一般取决于下位机。下位机一般处于底层控制,上位机可以编程后,传入下位机或者集中管理下位机,下位机在有存储控制程序的情况下,可脱离上位机工作。在本设计中,通过在PC上操作LabVIEW的编写的人机交互界面,发送控制指令控制FPGA,作为上位机。而FPGA通过解析上位机发送的控制指令,来判断让哪一个模块工作,作为下位机[4]。对于FPGA上面的其中一个模块为频率计,其首先接收的LabVIEW编写的人机交互界面发出的控制信号,将其转换,判断控制信号,并将某一控制信号控制的信息发送给LabVIEW的编写的人机交互界面,将其结果进行显示。这种情况下:对于频率计和LabVIEW的编写的人机交互界面两者之间的关系是互为上机位和下机位。DDS的工作原理直接数字频率合成技术是根据奈奎斯特取样定理,从连续信号的相位Φ出发将一个信号取样、量化、编码,形成一个信号函数表,存于ROM中。合成时,通过改变相位累加器的频率控制字,来改变相位增量,而相位增量的不同将导致一个周期内取样点的不同,从而改变频率[5]。在采样频率不变的情况下,通过改变相位累加器的频率控制字,将这种变化的相位/幅值量化的数字信号通过D/A变换及LPF〔Low-passFilter低通滤波器即可得到合成的相位变化的模拟信号频率。时钟信号Fclk频率控制字Kn位相位累加器Rom查找表D/A转换时钟信号Fclk频率控制字Kn位相位累加器Rom查找表D/A转换LPF低通滤波器输出FDDS的基本结构如图所示,主要由相位累加器、波形ROM、DAC以及低通滤波器等组成。N位相位累加器在取样时钟的控制下与频率控制字K所决定的相位增量相加;相位累加器的高位输出作为波形ROM的地址,实现波形相位到幅值的转换;波形数据经DAC转换成模拟量,通过滤波器输出相对平滑的波形。本设计就是运用DDS技术做的函数信号发生器。方案论证用LabVIEW软件为开发平台,在LabVIEW程序中把控制参数〔低位,高位,频率和占空比的切换发送到串口上,FPGA通过RS-232接收控制指令,低位,高位,频率和占空比的切换在FPGA中处理后将相应的信息发送到RS-232,LabVIEW的编写的人机交互界面通过对RS-232串口进行读操作,处理完成后,将处理完的信息在LabVIEW的编写的人机交互界面上面进行显示。此方案的优点是:人机交互界面与FPGA之间进行通信时所需发送数据量少,减轻了串口的负担。采用全双工的通信方式,FPGA与PC机之间可以同时进行收、发数据。此方案的设计思想如图2-2。人机交互界面控制串口发送/接收控制指令人机交互界面控制串口发送/接收控制指令串口接收/发送FPGA串口接收/发送FPGA图2-2虚拟频率计流程图首先在FPGA上面对信号进行采样,之后将采样后得到的数据通过RS-232串口发送给PC,在LabVIEW软件编程中,首先对RS-232串口进行读操作,将读到的结果经过一A\D转换成波形数据,并将其在前面板上面显示出来。此方案的设计思想如图2-3。信号信号D\A串口发送串口接收数据处理显示图2-3虚拟存储示波器流程图此方案的优点是:FPGA往RS-232串口发送的是信号采集完的数据,大大降低了串口发送的数据量,提高了串口的发送速度。此方案采用的是半双工的工作方式,FPGA只负责发送数据,PC机只负责接收数据。其工作流程一目了然。方案一:用LabVIEW软件为开发平台,在LabVIEW程序中进行各个波形数据的采集并把数据发送到串口上,FPGA通过RS-232接受波形数据,串行数据在FPGA中处理后经过一D/A转换后在示波器上显示结果。此方案通过串口发送的是波形数据。设计思想如图2-4。人机交互界面控制生成波形采集数据串口发送人机交互界面控制生成波形采集数据串口发送波形数据串口接收D/A转换方案二:用LabVIEW软件为开发平台,在LabVIEW程序中把各个波形的波形参数〔频率,频段,峰峰值发送到串口上,FPGA通过RS-232接受波形指令,波形参数在FPGA中处理后运用DDS技术产生波形经过一D/A转换后在示波器上显示结果。此方案通过串口发送的是波形指令。设计思想如图2-5。人机交互界面控制人机交互界面控制波形指令DDS合成串口发送波形指令串口接收D/A转换图2-5方案二流程图方案一发送的是波形数据,根据设计要求生成的最高频率为2Mhz,当2Mhz时最少需要采样四个点,每个点都是8Bit,因此需要最低的串口传送速率为64Mbit/s。优点是FPGA方面不需要太多的编程,只要一个串口接收模块即可;缺点是串口需要传输大量数据。方案二发送的是波形指令,此方案不需要在LabVIEW中采样产生波形数据,是把波形数据直接作成ROM表的形式,当把波形指令发送出来以后,FPGA根据波形参数通过DDS技术产生信号波形。优点是串口传输只需要发送很少数据;缺点是在FPGA里产生波形受ROM表里波形数据限制,易失真。通过上述对两个方案的比较及RS-232串口传输最大速率〔20Mbit/s的限制,考虑到波形发生的实时性,本设计采用方案二。把LabVIEW与FPGA结合起来,以发送波形指令的方式控制产生波形信号。系统整体框图与设计思想整个系统可以分为LabVIEW设计与FPGA设计两大部分,主要可以分为:虚拟界面,串口接收,串口发送,DDS合成,A/D转换,D/A转换[6]。FPGA上面有数字信号发生器,频率计,示波器,相应的PC机上面有数字信号发生器界面,示波器的界面,频率计的界面,本设计是通过PC机来控制FPGA。其工作原理是:当PC机主界面上任何按钮按下时,将控制信息发送到RS-232串口,FPGA上面通过对RS-232串口的接收来得到相应的控制信息,来确定是哪个模块工作,同时在PC界面上面出现相应模块的前面板,通过对其前面板的控制来实现相应模块的工作。其具体的设计流程是把每种器件的参数都设定为不同的数字如表2-1〔信号发生器用0表示,频率计用1表示,示波器用2表示,将这一位数字按照一定的波特率发到串口,而且每当这一位数字有变化时就把新的数据发送到串口。表2-1器件选择编码表器件类型发送参数信号发生器0频率计1示波器2如发送数据为0一位数字,就表示要工作的器件是信号发生器。之后用FPGA设计一串口接收模块,按照设定好的波特率及编码方式解码,得到控制命令,使相应的器件工作。系统框图FPGA函数信号发生器FPGA函数信号发生器存储示波器简易频率计函数信号发生器界面存储示波器界面简易频率计界面RS-232RS-232PC控制模块图2-6总系统框图频率计设计思想由于选择了上面的方案,即发送控制命令的形式来控制FPGA发送信息大大降低了串口的发送负担,使得串口的发送速率能够满足设计要求达到实时性,具体的设计流程是把每个按键编码,其编码的规则如表2-4〔高8位用"10”表示,低八位用"00”表示,频率用‘0’表示,占空比用‘1’表示,一共有三个控制参数分别为发送低8位,发送高8位,发送频率,发送占空比,发送低8位的控制信息用1位表示,发送高8位的控制信息用1位表示,发送频率和占空比用一位表示,将上面的三位组合到一起组成一帧按照一定的波特率发到串口,而且每当这3位数字有变化时就把新的数据发送到串口。如发送数据为010三位数字,就表示要接收频率的低8位。之后用一串口接收模块,按照设定好的波特率及编码方式解码,表2-4发送指令编码表名称发送参数频率低8位010频率高8位001占空比低8位110占空比高8位101函数信号发生器设计思想由于选择的是方案二即发送波形命令的形式来控制波形就大大降低了串口的发送负担,使得串口的发送速率能够满足设计要求达到实时性,具体的设计流程是把每种波形的参数都设定为不同的数字如表2-2〔三角波用0表示,正弦波用1表示,方波用2表示,一共有四个波形参数分别为波形类型,频率系数〔即在某个频段内的频率旋钮调节值,频段,峰峰值。表2-2波形类型编码表波形类型发送参数三角波0正弦波1方波2表2-3频段编码表频段发送参数2MHz0200KHz120KHz22KHz3200Hz420Hz52Hz6波形类型由于有三种波形,其参数为0~2〔十进制占一位;频率系数由于在200K~2Mhz频段内步进为5Khz,因此可用0~359表示这频段内的360个不同频率,占三位。频段有七段分别为2Hz,20Hz,200Hz,2Khz,20Khz,200Khz,2Mhz.因此用0~6表示,占一位,如表2-3。峰峰值是以0.1V为步进的,而经测量D/A转换的最大峰峰值为8.5V,可用0~84表示这85个不同值,占2位。这四种参数加起来一共要发送7位的十进制数,把这些数字连接到一起组成一帧按照一定的波特率发到串口,而且每当这七位数字有变化时就把新的数据发送到串口。如发送数据为1234567七位数字,就表示要产生的波形为正弦波,频率系数为234,频段为5,峰峰值系数为67。之后用FPGA设计一串口接收模块,按照设定好的波特率及编码方式解码,得到的波形指令通过DDS技术产生数字波形,再经过一D/A转换发送到示波器上验证结果。上位机设计LabVIEW软件设计思想LabVIEW是一种采用图图标代替文本行创建应用程序的图形化编程语言。其采用数据流编程方式,程序框图中节点之间的数据流向决定了程序的执行顺序。它用图标表示函数,用连线表示数据流向。LabVIEW中主VI的设计思想在主VI的前面板上面的控件有:信号发生器按钮,频率计按钮,示波器按钮。当这三个按钮任何一个按下时,将相应的控制信息发送到RS-232串口,同时调用相应的子VI。其软件流程图如下图3-1。开始开始钮频率计按钮存储示波器按钮频率计系数存储示波器系数比较是否相同并连接VISA写入调用相应子VINY图3-1 LabVIEW软件中主VI设计流程图LabVIEW中函数信号发生器的设计思想在前面板上控件主要有:波形选择,频率旋钮,频段调节,幅度调节。这四部分的调节直接影响波形信号的改变,在程序框图中,每一种调节都对应一种波形参数,当前面板中相应的控件值改变时,参数也随之改变,并把这些调节参数连接起来通过串口发送出去[7]。其流程图如下图3-2。开始开始频率旋钮频段旋钮频系参数频段参数数比较是否相同并连接VISA写入NY幅度调节峰峰值参数图3-2 LabVIEW软件中函数信号发生器设计流程图LabVIEW中频率计的设计思想档位按钮档位按钮占空比按钮控制按钮档位系数占空比系数控制系数比较是否相同并连接VISA写入NVISA读寄存器数据处理显示开始结束Y图3-3 LabVIEW软件中频率计设计流程图在前面板上控件主要有:档位选择,控制按钮,占空比按钮,开关按钮。这四部分的调节直接影响到FPGA往RS-232串口发送的信息。在程序框图中,每一种调节都对应一种控制参数,当前面板中相应的控件值改变时,参数也随之改变,并把这些调节参数连接起来通过串口发送出去。与此同时,VISA读RS-232串口的信息,将读出的信息进行相应的转换,最终在其前面板上面显示出来。其软件流程图如上图3-3。人机交互界面设计LabVIEW中主VI及其子VI的前面板如图3-4;3-5;3-6所示。图3-4主VI的前面板图3-5子VI函数信号发生器的前面板图3-6子VI频率计的前面板人机交互界面的构成由上图可知,人机交互界面有以下几部分组成:1.背景图片:主VI及其子VI频率计的背景图片是自画的,子VI函数信号发生器是以真实的信号发生器为蓝本,因此背景图片是以学校电子技术实验室的TH-SGO1P型功率函数信号发生器为模型,之后在LabVIEW中插入其图片。2.按钮控件:其主要功能是可以产生一布尔量〔true或false,当按钮按下是为真,弹起时为假。频段选择和波形选择中的按钮即是这种控件,通过它来控制选中某一频段或者某一波形[8];档位和占空比等都是用这样的按钮来控制的。3.指示灯控件:LabVIEW中可以得到一些常见的指示灯与开关按钮,这里选用了与图片上最为接近的圆形指示灯。在此设计中频段选择中的指示灯及频率指示灯,峰峰值指示灯都为此控件,当给指示灯一个true值时,指示灯亮,否则给它一个flase值时指示灯灭。它们的存在使得面板的状态一目了然。4.旋钮控件:旋钮控件可以输出一些定义的数值,通过用鼠标旋转此控件即可达到改变输出值,还可以通过选中并点击鼠标右键进入控件属性设置改变控件的属性,如控件值的范围,步进等,本设计中用到的频率调节旋钮和幅值调节旋钮皆为转盘控件,设置频率调节旋钮范围为0到359,步进为1可调节400个不同值;设置幅值调节旋钮范围为0到8.4,步进为0.1,可以有85种不同的幅值调节[9]。5.显示控件:面板中的数值显示控件可以用于频率及幅值的显示。界面的组件设计由于LabVIEW自带的控件有限,有些虽然相似但也不是完全相同,如果不加以修改,整体的视觉效果会大打折扣,因此学会修改,设计控件是必须的。在本设计中用到的组件的设计方法为1.按钮设计:在LabVIEW中虽然有圆形按钮较符合条件,但颜色和大小均不符合条件,且还有几种触发方式选择,不同的触发方式有不同的效果。由于图片中的按钮为黑色且较小,在设计中还要多次使用。这时拖到前面板上一个圆形按钮后选中点击鼠标右键的高级>自定义即可进入控件修改面板,再调整好大小及颜色后保存,就可以在控件面板的选择控件中调出自己的按钮控件了。布尔开关的机械动作:布尔开关有6种机械动作属性可供选择。在前面板上用鼠标右键单击开关,在快捷菜单中选择MechanicalAction就可以看到这些可选的动作。本设计选的为单击时转换[10]。2.旋钮设计:旋钮的大小及颜色设置如按钮设计,但还有一些如旋钮的范围,步进需要在旋钮属性里设置。3.数码管显示设计:为了得到仿真的效果,频率,幅值的显示采用的是数码管字体,LabVIEW中没有自带这种字体,需要自己安装。把数值显示控件调整至需要大小,在前面板上的12pt应用程序字体中着到数码管字体,并可以对字体设置颜色,大小,位置设置,还可以通过工具面板中的颜色笔调节字体背景为黑色。主VI程序框图设计程序框图提供VI的图形化源程序。在程序框图中对VI编程,以控制和操纵定义在前面板上的输入和输出功能。图3-7是与图3-4对应的程序框图。可以看到程序框图中包括了前面板上的开关和指示灯控件的连线端子,还有一些CIN节点,if循环结构及程序的循环结构。整个程序框图设置了一个WhileLoop循环,使它持续工作下去[11]。由电源开关控制这一循环的结束。整个程序主要有以下几个模块:器件选择模块;串口发送模块设计。程序框图LabVIEW是图象化的编程语言,它的软件设计是以图形连线的方式表示出来。下图3-8即是LabVIEW部分的主VI的设计程序,图3-7主VI程序框图器件选择部分设计图3-8器件选择设计图器件选择模块的主要功能是得到器件参数,当前面板中的信号发生器控件按下时,参数为0,频率计控件按下时参数为1,示波器控件按下时参数为2。首先,由于信号发生器,频率计,示波器都是输入控件,在程序框图中相当于普通编程语言的输入参数,只有输出端子,没有输入端子,且输出值为布尔量,通过布尔转〔0,1VI,可以把输出值转换为0或1,分别送到一CIN节点,对其编程如图信号发生器输入量设为a;频率计输入量设为b;示波器输入量设为c;输出为d。CIN节点功能就是当a=1时,输出d=0,表示信号发生器;当b=1时,输出d=1,表示频率计;当c=1时,输出d=2,表示示波器。之后把d的值送至一数值转十进制字符VI,等待发送[12]。CIN节点程序如下:if<a==1>d=0;elseif<b==1>d=1;elseif<c==1>d=2;串口发送部分设计串口的发送是很重要的一部分,主要功能是完成把波形指令发送到串口上。在此,串口采用的是LabVIEW自带的串口发送模块VISA,可以很方便的调用。在LabVIEW的VISA面板中有VISA配置、VISA读取、VISA写入、VISA关闭、VISA打开等关于VISA串口操作的模块。图3-9串口配置与发送设计图首先要先调用一个VISA配置VI,此VI的功能是完成串口的配置,如波特率,数据位数,有无奇偶校验等,在这里设置的是波特率为9600,一位起始位,八位数据位,一位停止位,无奇偶校验,无握手协议。其次,调用一VISA写入VI,此VI是将连接好的一包数据按指定格式,速率发送的串口上。最后,调用VISA关闭VI,关闭串口[13]。函数信号发生器程序框图的设计图3-10是与图3-5对应的程序框图。可以看到程序框图中包括了前面板上的开关,旋钮,指示灯和数值显示等控件的连线端子,还有一些CIN节点,if循环结构及程序的循环结构。整个程序框图设置了一个WhileLoop循环,使它持续工作下去。由电源开关控制这一循环的结束。整个程序主要有以下几个模块:波形类型模块;频率选择模块;频段选择模块;幅值选择模块;串口发送模块设计。程序框图下图3-10即是LabVIEW部分的函数信号发生器的设计程序,图3-10函数信号发生器的程序框图波形类型部分设计图3-11波形类型设计图波形类型模块的主要功能是得到波形参数当前面板中的三角控件按下时,参数为0,正弦控件按下时参数为1,方波控件按下时参数为2。首先,由于三角,方波,正弦都是输入控件,在程序框图中相当于普通编程语言的输入参数,只有输出端子,没有输入端子,且输出值为布尔量,通过布尔转〔0,1VI,可以把输出值转换为0或1,分别送到一CIN节点,对其编程如图三角输入量设为a;方波输入量设为b;正弦输入量设为c;输出为d。CIN节点功能就是当a=1时,输出d=0,表示三角波;当b=1时,输出d=2,表示方波;当c=1时,输出d=1,表示正弦波。之后把d的值送至一数值转十进制字符VI,等待打包发送。CIN节点程序如下:if<a==1>d=0;elseif<b==1>d=2;elseif<c==1>d=1;频率选择部分设计图3-12频选模块设计图频率选择模块的主要功能是由频段按钮与频率调节选钮的的值作为输入计算出频率值并且得到频率系数也频段参数。频率旋钮调节输出是一0~359之间的数值假设为a,频段的判断方法与波形选择模块相似,可分别用0~6七个数字来分别表示2M~2Hz这七个频段,则频率的值为pinlv=205+a*5/<10^n>Khz。这些数值转换也在一个CIN公式接点内完成。峰峰值调节部分设计图3-13峰峰值部分设计图峰峰值的调节是由幅侄调节旋钮完成的,主要功能是调节信号的峰峰值大小,峰峰值的调节输出直接送到峰峰值的显示控件,范围为0~8.5V,步进为0.1v。但其参数为真实值的十倍,以0~85代表0~8.5v之间的数值。串口发送部分设计串口的发送是很重要的一部分,主要功能是完成把波形指令发送到串口上。在此,串口采用的是LabVIEW自带的串口发送模块VISA,可以很方便的调用。图3-14串口配置与发送设计图首先要先调用一个VISA配置VI,此VI的功能是完成串口的配置,如波特率,数据位数,有无奇偶校验等,在这里设置的是波特率为9375,一位起始位,八位数据位,一位停止位,无奇偶校验,无握手协议。其次,调用一VISA写入VI,此VI是将连接好的一包数据按指定格式,速率发送的串口上。最后,调用VISA关闭VI,关闭串口。频率计程序框图的设计图3-15是与图3-6对应的程序框图。可以看到程序框图中包括了前面板上的开关,按钮,指示灯和数值显示等控件的连线端子,还有一些CIN节点,if循环结构及程序的循环结构。整个程序框图设置了一个WhileLoop循环,使它持续工作下去。由电源开关控制这一循环的结束。整个程序主要有以下几个模块:发送数据类型控制模块;串口发送模块设计;串口接收模块;显示模块。程序框图下图3-15即是LabVIEW部分的频率计的设计程序,图3-15频率计的程序框图发送数据类型控制部分设计发送数据类型控制模块的主要功能是得到控制参数当前面板中的占空比控件按下时,参数s为1,控制控件按下并且档位控件关闭时参数g为1,控制控件和档位控件都没有按下时参数d为1。发送数据类型控制模块的主要功能是得到控制参数当前面板中的占空比控件按下时,参数s为1,控制控件按下并且档位控件关闭时参数g为1,控制控件和档位控件都没有按下时参数d为1。图3-16发送数据类型控制设计图首先,由于控制,档位,占空比都是输入控件,在程序框图中相当于普通编程语言的输入参数,只有输出端子,没有输入端子,且输出值为布尔量,通过布尔转〔0,1VI,可以把输出值转换为0或1,分别送到一CIN节点,对其编程如图占空比输入量设为a;控制输入量设为c;档位输入量设为b;输出为s;d;g。CIN节点功能就是当a=1时,输出s=1,表示接收占空比;当a=0时,输出s=0,表示接收频率;当c=0且b=0时,输出d=1,表示接收低8位;当c=1且b=0时,输出g=1,表示接收高8位。之后把s;g;d的值分别送至一数值转十进制字符VI,并打包发送。CIN节点程序如下:if<a==1>s=1;elseif<a==0>s=0;elseif<c==0&&b==0>{d=1;g=0;};if<c==1&&b==0>{d=0;g=1;};串口发送部分设计串口的发送是很重要的一部分,主要功能是完成把控制指令发送到串口上。在此,串口采用的是LabVIEW自带的串口发送模块VISA,可以很方便的调用。图3-17串口配置与发送设计图首先要先调用一个VISA配置VI,此VI的功能是完成串口的配置,如波特率,数据位数,有无奇偶校验等,在这里设置的是波特率为9600,一位起始位,八位数据位,一位停止位,无奇偶校验,无握手协议。其次,调用一VISA写入VI,此VI是将连接好的一包数据按指定格式,速率发送的串口上。最后,调用VISA关闭VI,关闭串口。串口接收部分设计串口的接收是很重要的一部分,主要功能是完成把串口中的指令读出。在此,串口采用的是LabVIEW自带的串口接收模块VISA,可以很方便的调用。图3-18串口接收设计图首先要先调用一个VISA读VI,此VI的功能是完成读串口的数据,最后,调用VISA关闭VI,关闭串口。显示部分设计图3-19显示设计图显示部分是很重要的,当接收低8位的信号d为1时,将串口的信息存入一寄存器中;当接收高8位的信号g为1时,将串口的信息存入另一寄存器中。将接收到的高8位数值乘以100加上低8位的数值传给频率显示。当占空比控件按下时,将接收到的低8位数值传给占空比显示控件。设计中用到的主要VI在LabVIEW软件设计中用到的几个主要的VI与结构有:CIN节点:图3-20CIN节点CIN〔CodeInterfaceNode节点是LabVIEW中用来调用C/C++代码的功能节点,它提供了函数入口,可以根据用户提供的输入输出自动生成函数入口代码,从而使用户关注代码的功能而不为函数声明、定义等语句费心。由于LabVIEW数据存储格式遵循C语言中的数据格式,并且完全相同,所以拥护可以向CIN传递任何复合的数据结构。在本设计中CIN主要完成一些复杂的逻辑运算[14]。2.Case结构图3-24Case结构当某种条件得到满足时或得不到满足时执行某段特定程序的程序,也就是当某个布尔值为真或假时执行特定的程序就是if……else……语句的功能。Case结构的输入端子默认就是布尔输入,因此不需要任何改动。只需要把当作条件的布尔值与输入端子连接即可[15]。在本设计中此结构用于数据变化为真时发送数据。3.事件结构事件结构必须放在While循环中,否则没有意义,因为当一个事件完成后,程序需要去等下一个事件的发生。在本设计中通过对事件结构的运用来实现前面板上各个按钮的互斥,以达到在运行时频段选择与波形选择中只有一个按钮按下的效果[16]。图3-28事件结构下位机设计FPGA软件中主模块的设计思想主模块的软件设计原理总图以下图4-1是FPGA软件中主模块的总原理框图图4-1 FPGA设计中主模块的原理框图FPGA软件中主模块的设计原理流程图如图4-2:串行数据串行数据串口接收串口转换控制参数分频器件选择 CLK图4-2主模块的硬件程序设计流程图FPGA的软件设计数据的来源是串口由LabVIEW发送来的控制参数,首先做一串口的接收程序,并把接收到的数据转换成控制数据,在这里每一控制数据为1个字节,即1个8位二进制数。每当从串口接收到1个字节,就相当于收到了一组新的控制指令。把这些控制指令解码后,控制类型参数送到一个器件选择模块〔3选1模块,以选择想要工作的器件。这就是FPGA部分主模块的设计思想。FPGA软件中函数信号发生器的设计思想函数信号发生器的软件设计原理总图以下图4-3是FPGA部分软件函数信号发生器原理框图图4-3 FPGA设计中函数信号发生器的原理框图FPGA软件中函数信号发生器的设计原理FPGA的软件设计数据的来源是串口由LabVIEW发送来的波形参数,首先做一串口的接收程序,并把接收到的数据转换成波形数据,在这里每一波形数据为7个字节,即七个8位二进制数。每当从串口接收到7个字节,就相当于收到了一组新的波形指令。把这些波形指令解码后波形类型参数送到一个波形选择模块〔3选1模块,以选择产生想要波形;频率系数参数送到地址发生器模块,用于地址发生器的地址发生间隔,地址间隔不同频率就不一样;频段参数送到一个频选模块〔分频模块,根据频段参数进行分频,就是对地址发生器的地址发生频率进行分频,频段越高,频率越小,分别为10分频,100分频,1000分频,10000分频,100000分频,1000000分频,对应着频段200KHz,20KHz,2KHz,200Hz,20Hz,2Hz;峰峰值参数送到幅值模块,由于ROM查询表里的波形数据为最大数据,因此幅值模块相当于一个除法器,根据峰峰值参数来得到正确的峰峰值。这就是FPGA部分函数信号发生器的设计思想[17]。流程图如图4-4:串口接收串口接收串口转换地址发生器clk时钟分频SHIZH分频频段选择 CLK频段参数频率系数Rom查询波形类型峰峰值调节峰峰值参数数字波形串行数据图4-4函数信号发生器的硬件程序设计流程图表4-1频段对应分频系数对应频段频段参数分频系数2MHz01200KHz11020KHz21002KHz31000200Hz41000020Hz51000002Hz61000000FPGA软件中频率计的设计思想频率计的软件设计原理总图以下图4-5是FPGA部分软件频率计的原理框图图4-5 FPGA设计中频率计的原理框图FPGA软件中频率计的设计原理FPGA的软件设计数据的来源是串口由LabVIEW发送来的控制参数,首先做一串口的接收程序,并把接收到的数据转换成控制数据,在这里每一波形数据为3个字节,即3个8位二进制数。每当从串口接收到3个字节,就相当于收到了一组新的控制指令。把这些控制指令解码后控制类型参数送到一个plj模块,以产生想要数据;高低位控制参数送到控制模块,用于控制发送的数据。这就是FPGA部分频率计的设计思想。流程图如图4-6:串行数据串行数据串口接收串口转换控制参数分频Plj模块 CLKKZ模块串口发送图4-6频率计的硬件程序设计流程图频率计的系统模块设计由FPGA的频率计的原理框图可知,FPGA的软件设计可以分为以下几个主要模块:串口接收模块;串口转换模块;分频模块;控制模块;串口发送模块;频率计模块这七大模块。串口接收模块图4-7rxd3.vhd原理图串口接收模块是一个很重要的模块,它的正确与否决定了以后产生波形是否正确,串口接收模块也是一个很常见的模块,它的作用就是把串口上的串行数据接收并转换成并行数据。在本次设计中由于发送的数据有0~9九个数字以外还有空格符的存在空格符表示0。检测0检测0是否连续8个0接收数据寄存器移位是否接收8位接收完毕是否否是图4-8rxd3.vhd程序流程图串口接收模块在频率计原理框图中为rxd3.vhd模块,它的输入有两个一个为时钟输入clk,另一个为串行数据输入rx;输出也有两个一个是转换好的并行数据q,一个是转换结束标志sig。为了保证数据的准确性,使得每次对串口的采样都在采样数据的中心,时钟输入是波特率的十六倍,当采样到8个0时确定数据的起始位,这样每次采样都在采样数据的中点位置,可以减少误差。为了使此时钟准确,时钟采用了24MHz的160分频的150KHz,它的十六分频为9375即为波特率;串口数据的接收方发也是很重要的一个环节,数据在串口的发送中当先发送低位时先接受到的就是低位,而且在发送8位比特的过程中还会出现高四位已低四位的互换,具体转换成的串口数据是什么和具体的程序是有关系的,在本设计中实现方法是每当有8个时钟输入clk,且接收数据rx全为0时,再计16个clk,把串口值rx存入一个9位寄存器tmpreg8的低位,并此后每接一个二进制数据就tmpreg8的数据左移一位,一直接够八位后,sig信号为一个下降沿,并把tmpreg8的低八位给输出q。表4-2串口接受数据表字符串口发送数据串口接受数据00011000000001100100110001100011002001100100100110030011001111001100400110100001011005001101011010110060011011001101100700110111111011008001110000001110090011100110011100其他其他00001100按照此转换方法发送字符0到9即十六进制码为30,30一直到39;FPGA接收程序转换后的并行数据为0CH<字符0>,8CH〔字符1,4CH〔字符2,CCH〔字符3,2CH〔字符4,ACH〔字符5,6CH〔字符6,ECH〔字符7,1CH〔字符8,9CH〔字符9[18]。下图4-9为rxd3.vhd仿真波形图,图中的clk时钟为波特率的16倍,rx为串口接收端口,仿真输入的串行数据为已经交换高四位与低四位的字符1,发送顺序为10001100,sig1信号为输出信号且在下降沿时表示一个字节接收完毕,由图可看出在sig1下降沿时q输出为8C,是正确结果。此模块仿真正确。图4-9rxd3.vhd仿真波形图串口转换模块图4-10changp.vhd原理图串口转换模块在频率计总原理框图中为changep.vhd,主要功能是把得到的每三个字节转换成相应的控制参数。此模块有三个输入,三个输出。三个输入为:复位输入rst,数据类型为std_logic;8字节数据输入din,数据类型为std_logic_vector<7downto0>;字节准备输入r_ready,数据类型为std_logic,三个个输出为:占空比与频率的切换控制s,数据类型为std_logic;低8位控制d,数据类型为std_logic;高8位控制g,数据类型为std_logic。实现方法是每当有一个字节准备r_ready下降沿时,把8字节数据输入din的值经过CASE语句转换成整形数字0-9送到相应的temp0,temp1,temp2三个寄存器中,每送进来一个数据计一次数,共计三次,依照送进数据的的顺序可知temp0存的是占空比与频率的切换控制参数;temp1为高8位控制参数;temp2为低8位控制参数。由此就可以得到占空比与频率的切换控制参数输出s值为特名牌temp0;高8位控制参数g为特名牌temp1;低8位控制参数d为特名牌temp2;经过此模块得到各个参数后就可以利用它们来控制将要发送的数据。下图4-11为数据转换模块changep.vhd的波形仿真图,图中cnt,temp0,temp1,temp2分别为程序内部寄存器,cnt为一三进制计数器,当temp2有变化时就把temp0送给s;temp1的值送给g;temp2的值给d。在下面的仿真图中数据输入端din共收到三字节数据8C、8C、0C在程序中转换成1、1、0送到temp0到temp2中,最终得到的占空比与频率切换参数s为1;高8位数据输出参数g为1;低8位数据输出参数d为0;此模块仿真正确。图4-11changep.vhd波形仿真图分频模块为了保证时序的统一,一般一个系统只有一个系统时钟,各个模块的时钟信号都由这一个系统时钟分频得到。因此,分频模块在许多设计中都是不可缺少的。本系统的分频模块有两个:u_baud模块:图4-12u_baud原理图此模块的功能是把一个12Mhz频率分成为9600hz的16倍,采用的方法是12Mhz/<9600*16*2>=39;即每计数计到39就让信号bclk_t翻转;这样就得到了波特率9600hz的16倍。下图4-13为u_baud.vhd的仿真波形图,此模块的功能是产生16倍的波特率,从仿真图上可以看出输入频率clk每经过39个上升沿,输出频率bclk出现一个上升沿,显而易见,此模块是正确的。图4-13u_baud.vhd波形仿真图fenpin.vhd模块图4-14fenpin.vhd原理图这个模块只有一个时钟输入与一个时钟输出,是一个二分频模块,fenpin.vhd实现非常简单,内部有一个2进制计数器,输入时钟每来一个上升沿,计数器就自动加一,当计数器加到二时,输出一个高电平,否则输出低电平。这样,就产生了一个原时钟的2分频时钟。fenpin.vhd模块输入为12Mhz,输出为6Mhz为串口发送模块提供发送命令。下图4-15为fenpin.vhd的仿真波形,此模块是实现2分频,输入频率周期clk为10ns,在10ns时输出频率div2clk有一上升沿,可见div2clk周期为20ns且clk频率为div2clk的2倍。能够实现2分频。图4-15fenpin.vhd波形仿真图控制模块图4-16KZ.vhd原理图控制模块在频率计总原理图中为KZ.vhd模块,它有三个输入:高8位控制端g;低8位控制端d;16位数据输入端DIN[15..0]。一个输出dout[7..0]。此模块的主要功能是为发送模块提供要发送的数据。下图4-17为控制模块KZ.vhd的波形仿真图,图中当d为1时,将数据的低8位的数据赋给输出;当g为1时,将数据的高8位的数据赋给输出。经过验证,仿真结果正确。图4-17KZ.vhd波形仿真图串口发送模块图4-18fasong.vhd原理图串口发送模块在频率计总原理图中为fasong.vhd模块,它有四个输入:工作时钟16倍于波特率bclk;异步复位resett;待发送数据txdbuf[7..0]。两个输出:发送命令〔高电平有效,持续一个clk周期以上xmit_cmd_p;发送完成信号txd_done。此模块的主要功能是将需要被发送的数据通过串口发送给PC。下图4-19为串口发送模块fasong.vhd的波形仿真图,图中的当被发送的数据为01001110时,发送数据的先后顺序为从低位到高位,即txd输出应为01110010。经过验证,仿真结果正确。图4-19fasong.vhd波形仿真图频率计模块图4-20plj.vhd原理图频率计模块在频率计总原理图中为plj.vhd模块,它有六个输入:系统时钟clk;计数时钟clk_1h;去抖时钟clk_32k;异步复位resetl;8位数据输入din1[7..0]。一个16位数据输出dout[15..0]。此模块的主要功能是将A\D输出的数字波形去抖,整形并计算其占空比和频率;为接下去的工作提供数据。图4-21plj.vhd波形仿真图上图4-21为频率计模块plj.vhd的波形仿真图,图中当s为0并且resetl为1时,表示输出应为频率。从下面的仿真波形中我们可以看到被测信号在clk_1h为高电平时,计有3个脉冲,即被测信号的频率显示为0003。经过验证,仿真结果正确。频率计模块内部还包括五个小模块:去抖模块;十进制计数器模块;控制模块;锁存模块;整形模块。它们的仿真波形如下列图所示:1、去抖模块仿真图:图4-22去抖模块波形仿真图2、十进制计数器模块仿真图:图4-23十进制计数器模块波形仿真图3、控制模块仿真图:图4-24控制模块波形仿真图4、锁存模块仿真图:图4-25锁存模块波形仿真图5、整形模块仿真图:图4-26整形模块波形仿真图函数信号发生器的系统模块设计由FPGA的函数信号发生器的原理框图可知,FPGA的软件设计可以分为以下几个主要模块:串口接收模块;串口转换模块;分频模块;地址发生器模块;ROM表查询模块;波形选择模块;幅值调节模块这七大模块。串口接收模块与频率计的串口接收模块相同。串口转换模块图4-27chang.vhd原理图串口转换模块在函数信号发生器原理框图中为change.vhd,主要功能是把得到的每七个字节转换成相应的波形参数。此模块有三个输入,四个输出。三个输入为:复位输入rst,数据类型为std_logic;8字节数据输入din,数据类型为std_logic_vector<7downto0>;字节准备输入r_ready,数据类型为std_logic,四个输出为:波形参数bo1,数据类型为范围0到2的整型;频率系数参数px3,数据类型为范围0到450的整型;频段参数pd1,数据类型是范围0到7的整型;峰峰值参数fd2,数据类型为范围0到85的整形。实现方法是每当有一个字节准备r_ready下降沿时,把8字节数据输入din的值经过CASE语句转换成整形数字0-9送到相应的temp0,temp1,temp2,temp3,tmp4,temp5,temp6七个寄存器中,每送进来一个数据计一次数,共计七次,依照送进数据的的顺序可知temp0存的是波形类型参数;temp1,temp2,temp3分别为频率系数参数的百位,十位,个位;temp4为频段参数;temp5,temp6分别为峰峰值参数的十位与个位。由此就可以得到波形参数输出bo1值为特名牌temp0;频率系数参数px3为temp1*100+temp2*10+temp3;频段参数输出批pd1为temp4;峰峰值参数fd2为temp5*10+temp6。经过此模块得到各个参数后就可以利用它们来运用DDS技术产生波形了[19]。图4-28change.vhd波形仿真图上图4-28为数据转换模块change.vhd的波形仿真图,图中的rst为复位端,r_ready为读数据信号,在下降沿有效;bo1,px3,pd1,fd2分别为波形类型输出,频率系数输出,频段参数输出,峰峰值参数输出。cnt,temp0,temp1,temp2,temp3,temp4,temp5,temp6,分别为程序内部寄存器,cnt为一七进制计数器,当temp6有变化时就把temp0送给bo1;temp1*1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论