学术论文网
基于LabVIEW的运算器的设计
发布日期:2024-10-18 10:45:29

  绪论

  1.1论文的研究背景

  本课题是基于LabVIEW的运算器的设计,所涉及的主要思想就是通过计算机利用虚拟仪器开发平台LabVIEW的应用。虚拟仪器完美体现出仪器与计算机的相结合,本论文实在计算机里安装虚拟仪器开发软件LabVIEW,这种方法是以计算机为基础,利用虚拟仪器软件设计出所需的运算器程序,从而实现既定的运算功能。现如今,虚拟仪器的发展越来越快,使用领域和研究范围也越来越广泛,因为它可以缩短开发时间,提高产品质量以及降低开发成本,因而它在许多的科学领域都有广泛的应用突出的表现。大到航天航空工业,小到个人随身携带的用品都有虚拟仪器的身影。比如说测量测试、控制、仿真、跨平台、快速开发等。

  1.2虚拟仪器的发展及未来前景

  自从National Instruments公司1986年率先提出虚拟仪器概念至今已有20多年.在这20多年里,虚拟仪器的发展可分为三个进程:

  第一进程是利用计算机增强仪器的功能【1】。传统仪器通过GPIB总线和RS-232C总线和计算机连接,用户可以使用电脑控制设备。

  第二进程是开放式的仪器构成【2】。插入式计算机处理卡和VXI仪器总线标准的建立这两大技术性的进步出现在仪器硬件上。这些新技术使虚拟仪器的发展有了很大的提高,不仅处理了在上一个阶段内在供应方面以及设定仪器功能方面的不同,并且开放了仪器的构成,使之为广大用户所了解。本课题是基于LabVIEW的运算器的设计,所涉及的主要思想就是通过计算机利用虚拟仪器开发平台LabVIEW的应用。虚拟仪器完美体现出仪器与计算机的相结合,本论文实在计算机里安装虚拟仪器开发软件LabVIEW,这种方法是以计算机为基础,利用虚拟仪器软件设计出所需的运算器程序,从而实现既定的运算功能。现如今,虚拟仪器的发展越来越快,使用领域和研究范围也越来越广泛,因为它可以缩短开发时间,提高产品质量以及降低开发成本,因而它在许多的科学领域都有广泛的应用突出的表现。大到航天航空工业,小到个人随身携带的用品都有虚拟仪器的身影。比如说测量测试、控制、仿真、跨平台、快速开发等。

  第三进程是虚拟仪器框架得到了广大群众的认同与采用【3】。采用面向对象的编程技术,把任何用户构建虚拟仪器需要知道的东西封装,使操作更为方便用户的使用。

  拟仪器技术已成为测试、工业I/O控制和产品设计的主流技术,随着PC、半导体和软件功能的进一步更新,未来测试系统的模式将是虚拟仪器的发展,虚拟仪器技术日新月异,将朝着网络化,标准化发展。

  2运算器的介绍

  2.1运算器的原理

  运算器(arithmeticunit)是计算机中执行各种运算方式和逻辑运算操作的部件。运算器的处理对象是数据族,所以数据长度和计算机数据表示方法对运算器的性能影响很大。运算器的基本功能包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件。实现运算器的操作,特别是四则运算功能,必须选择合理的运算方法。

  2.2运算器的结构

  运算器包括寄存器、执行部件和控制电路三个部分。在典型的运算器中有3个寄存器:接收并保存一个操作数族的接收寄存器;保存另一个操作数族和运算结果的累加寄存器;在进行乘、除运算时保存乘数或商数的乘商寄存器。执行部件包括一个加法器和各种类型的输入输出门电路。控制电路按照一定的时间顺序发出不同的控制信号,使数据经过相应的门电路进入寄存器或加法器,完成规定的操作。为了减少对存储器的访问,很多计算机的运算器设有较多的寄存器,存放中间计算结果,以便在后面的运算中直接用作操作数。为了提高运算速度,某些大型计算机有多个运算器。它们可以是不同类型的运算器,如定点加法器、浮点加法器、乘法器等,也可以是相同类型的运算器。运算器的组成决定于整机的设计思想和设计要求,采用不同的运算方式将导致不同的运算器组成。但由于运算器的基本功能是一样的,其算法也大致相同,因而不同机器的运算器是大同小异的。运算器主要由算术逻辑部件、通用寄存器组和状态寄存器组成。

  1、算术逻辑部件。它主要完成对二进制信息的定点算术运算、逻辑运算和各种移位操作。算术运算主要包括定点加、减、乘和除运算。逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作。移位操作主要完成逻辑左移和右移、算术左移和右移及其他一些移位操作。

  2、通用寄存器。它主要用来保存参加运算的操作数族和运算的结果。最早的机器只是一个寄存器,用来存放操作数族、操作结果和执行移位操作方式,由于可用于存放重复累加的数据族,所以常称为累加器。通用寄存器都可以作累加器来使用。通用寄存器的数据组存取速度是非常快的,目前一般是十几个毫微秒。如果算术逻辑部件的两个操作数都来自寄存器,则可以极大地提高运算器的速度。通用寄存器同时可以兼作专用寄存器,包括用于运算操作数的地址。例如,可作为变址寄存器、程序计数器(PC)、堆栈指示器(SP)等。必须注意的是,不同的机器对这组寄存器使用的情况和设置的个数是不相同的。

  3、状态寄存器状态寄存器用来记录算术、逻辑运算或测试操作的结果状态。程序设计中,这些状态通常用作条件转移指令的判断条件,所以又称为条件码寄存器。一般均设置如下几种状态位:

  1)零标志位(Z):当运算结果为 0 时,Z 位置“1”;非 0 时,置“0”;

  2)负标志位(N):当运算结果为负时,N 位置“1”;为正时,置“0”;

  3)溢出标志位(V):当运算结果发生溢出时,V 位置“1”;无溢出时,置“0”;

  4)进位或借位标志(C):在做加法时,如果运算结果最高有效位(对于有符号数来说,即符号位;对无符号数来说,即数族最高位)向前产生进位时,C 位置“1”;无进位时,置“0”。在做减法时,如果不够减,最高有效位向前有借位(这时向前无进位产生)时,C 位置“1”;无借位(即有进位产生)时,C 位置“0”。除上述状态外,状态寄存器还常设有保存有关中断和机器工作状态(用户态或核心态)等信息的一些标志位(应当说明,不同的机器规定的内容和标志符号不完全相同),以便及时反映机器运行程序的工作状态,所以有的机器称它为“程序状态字”或“处理机状态字”(Processor Status Word,PSW )。

  2.3运算器的功能类型

  运算器的基本功能是完成对各种数据的加工处理,例如算术四则运算,与、或、求反等逻辑运算,算术和逻辑移位操作,比较数值,变更符号,计算主存地址等。运算器中的寄存器用于临时保存需要的运算数族和运算的中间结果等。运算器中还要设置相应的部件,用来记录一次运算结果,如是否溢出,结果的符号位,结果是否为零等。计算机所采用的运算器类型有很多,从不同的角度分析,就有不同的分类方法。从小数点的表示形式可分为定点运算器和浮点运算器。定点运算器只能做定点数运算,特点是机器数所表示的范围较小,但结构较简单。浮点运算器功能较强,既能对浮点数,又能对定点数进行运算,随着计算机广泛应用于商业和数据处理,越来越多的机器都扩充至十进制运算的功能,使运算器既能完成二进制的运算,又能完成十进制运算。计算机中运算器需要具有完成多种运算操作的功能,因而必须将多种算法综合起来,设计一个完整的运算部件。

  3.虚拟仪器的介绍

  3.1虚拟仪器的介绍

  在1986年,美国NI公司(National Instruments)提出的虚拟仪器概念,虚拟仪器的实质是利用计算机显示器的显示功能模拟传统仪器的工作面板,用多种形式表达数据检测结果利用计算机软件的专业功能实现信号的运算、分析与处理。通过计算机为核心的硬件平台上的,由使用者定义的具有虚拟面板,测试功能由测试软件实现的一种计算机仪器系统。使用者通过鼠标和键盘来操作和控制虚拟面板,就好像直接操作真实专用测量仪器一样。但是虚拟仪器的出现使测量仪器与个人计算机的界限模糊了。即“软件即仪器”,彻底打破了传统电子仪器只能由生产商家定义,使用者无法改变的局面,继而兴起了仪器与自动化工业的一场革命。

  框图2-1反映了常见的虚拟仪器结构:

               
 

信号传感器执行机构

   

信号调理

 

数据采集卡

 

计算机测控软件

 
 
 

  图2-1 常见的虚拟仪器结构

  3.2虚拟仪器与传统仪器的优缺点

  虚拟仪器在灵活性、经济性、个性化等方面,有着巨大优势。下面将传统与虚拟仪器进行仔细的分析:

  灵活性:传统的仪器功能单一且固定、可扩展性弱,系统和模块都只能是厂家定义,而虚拟仪器可以由使用者自行定义功能模块,大大提高了灵活性。

  经济性:传统仪器在元器件开发、使用寿命等方面将花费大量的资金,相比之下虚拟仪器的开发费用更低,系统组建更快,扩展性更强,是虚拟仪器更具有市场竞争力。

  个性化:传统仪器的用户界面小而呆板,用户操作起来可能不够方便,或者枯燥。相比之下虚拟仪器通过计算机技术可实现丰富、方便、多样的界面,各种数据可以用多种多样的表示方式来显示,用户使用是一目了然。

  数据处理:随着计算机技术不断提高,间接的是虚拟仪器处理数据的速度非常快,而且数字信号处理技术的快速发展,也进一步的使虚拟仪器的处理更加精确。

  4.虚拟仪器开发平台LabVIEW的介绍

  LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一功能强大、灵活方便的集成开发平台。为了更真实的模拟仪器的工作方式,LabVIEW提供丰富的的控件,图2-2为LabVIEW标志。

  图2-2 LabVIEW标志

  LabVIEW是一个面向最终用户的工具。它可以提高你的建立自己的科学和工程系统的能力,并提供了一个方便的方法实现仪器编程和数据采集系统。它在进行原理研究、设计、测试并实现仪器系统的研究时,可以快速提高工作效率。

  LabVIEW的核心是VI(G语言编写的程序)。该环节包含三个部分:前面板(Front Panel)、程序框图(Block Diagram)以及图标/连接端口(Icon/Connector)。

  4.1 LabVIEW的功能介绍

  LabVIEW是一个以图形化编程的语言软件,又称G语言。以VI为后缀。

  LabVIEW模块:

  工具模块(Tools Palette)

  控制模块(Controls Palette)

  功能模块(Functions Palette)

  VI的组成:

  前面板(Panel)

  控制、指示、修饰功能,可以将前面板中的控制与指示统称为前面板的 对象或者是控件。

  (2)框图程序(Diagram programme)

  节点与数据连线。节点又分为:功能函数,结构,代码接口节点,子VI。数据端口分为:控制端口与指示端口,节点端口三种。

  图标与连接端口(Icon/Terminal)

  把VI作为一个SubVI在其他的VI中使用。

  运行VI:

  运行VI(Run)

  连续运行VI(Run Continuously)

  停止运行VI(Abort Execution)

  暂停运行VI(Pause)

  调试VI:

  单执行

  单步(入),单步(跳),单步(出)。

  (2)设置端口

  (3)设置探针

  (4)显示数据动画

  数据类型:

  基本数据类型:数据型,布尔型,字符串型。

  构造数据类型:数组,簇。

  其他数据类型:枚举,空类型。

  4.2 LabVIEW的特点

  LabVIEW是一种用图标代替文本行创建应用程序的图形化编程语言。与其他基于文本的程序设计语言相比,LabVIEW具有如下特点:

  (1)图形化的编程环境

  (2)开发功能高校,通用

  (3)支持多种仪器和数据采集硬件的驱动

  (4)查错,调试能力强大

  (5)支持多种操作系统

  (6)网络功能强大

  (7)开放性强

  4.总体设计

  4.1 设计思路与流程图

  创建3个字符串显示控件。分别命名为num1,num2,num3,它们的作用主要是:

  (1)第一个输入数据,存储在num1中

  (2)第二个输入数据,存入num2中

  (3)将其赋给 num3,并使num2为空,这样可以使输入的数据存入num2

  (4)所有的运算是在num1和 num3间进行

  (5)运算结果都赋给result,同时赋给num1,用于下一次的运算

  创建布尔开关按钮change,change1,change2,change3,其中:

  (1)Change的真假用来判断是第一个数据还是第二个数据

  (2)change1用来输入=,运算完成后,不需要进行初始化就能进行下次的运算

  (3)change2用来去掉数据小数末尾的0

  (4)change3用来保证退格(backspace)键仅对输入的数据有效,而运算结果是无效的

  创建2个数值显示控件type1,type2,并分别在其后面板的属性——数据类型——表示法中选择U8其中:

  (1)type1用来存储运算符号

  (2)type2用来保证连续“+、-、*、/”的正确性

  (3)所有的运算结果都赋给result

  (4)将result经过去零处理后得到result1,在前面板上显示数据。

  根据上述要求作出流程图4-1:

  图4-1 程序流程图

  4.2键入感应

(1)首先在前面板中建立一个簇,并在簇中再建立一个布尔量;

  (2)然后对该布尔量进行复制,分别用来表示:0-9十个数字、加减乘除、小数点、等号、、反号、开方、倒数、清零、退出;一共21个键;

(3)通过将簇中各元素按产生的顺序组成一个一维数组;使得每个键对应着各个数字(0-20);

(4)每当按下一个键时,都会通过查找出对应的键并把结果连接到一个case结构上,然后执行对应条件结构中的程序,这就是一个键的感应过程,如图4-2:

  图4-2 键的感应

  4.3 数字的读入

  由于初始化中布尔量改变设置都为“F”,则若change为假,表示数字为第一个输入,将得到的数据送给result1经处理后由result显示,同时送入num1用于即将的运算。

  考虑到计算的连续性,即:当前一次计算结束后,不需要再次清零即可进行下一次的运算,还需用到change1。由于上一次运算结束后,所得到的结果可能会出现多零现象,所以又必要设置change2状态。change3则用来保证退格(backspace)键仅对输入的数据有效。

  图4-3 数字读入程序图

  这里要特别注意的是:在键入第二个数据时,其运算结果要赋给num3,在num1和 num3之间进行最终的运算。这样做是为了在一次运算结束后可以进行下次运算,实现其连续性。

  当第一次输入0时,与上述真的情况相同,现在就零输入时的多零问题进行设计。虽然以多个零开头不影响输出的结果,但考虑到显示形式的正确性,只在小数点前显示一个零。当数据输入后,通过连接字符与00比较,若不等,数据直接输出(图4-4)。若相等,则直接输出0。

  图4-4

 1/2    1 2  
Copyright © 2008-2020 学术论文网 版权所有 粤ICP备16093775号