基于LabVIEW计数器的设计.docx
《基于LabVIEW计数器的设计.docx》由会员分享,可在线阅读,更多相关《基于LabVIEW计数器的设计.docx(17页珍藏版)》请在冰豆网上搜索。
基于LabVIEW计数器的设计
【正文】
1.绪论
电子计数器是一种基础测量仪器,到目前为止已有30多年的发展史,早期设计师们追求的目标主要是扩展测量范围再加上提高测量精度和稳定度等[1],这些也是人们衡量电子计数器的技术水平,也是决定电子计数器价格高低的主要依据,随着科学技术的发展,用户对电子计数器也提出了新的要求,对于低档产品要求使用操作方便,量程足够宽,可靠性高,价格低。
而对于中高档产品,则要求高分辨率,高精度,高稳定度,高测量速率。
电子计数器是指能完成频率测量、时间测量、计数等功能的所有电子测量仪器的通称。
频率和时间是电子测量仪器技术领域中最基本的参量,因此电子计数器是一类重要的电子测量技术仪器,使仪器在小型化、耗电、可靠性等方面都大为改善。
尤其是与微处理器的结合使它体现了智能化,使得这类仪器的原理与设计发生了重大的变化。
数字电子技术几乎参透到了社会生产和生活的各个领域[2],计数器是数字电路中使用最多的一种时序逻辑电路,计数器具有计数和分频的功能,是数字电路和计算机中广泛应用的一种逻辑部件[3],计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲序列以及进行数字运算等[4]。
计数器的种类很多,从不同的角度出发,有不同的分类方法:
按进位体制的不同,可分为二进制计数器,十进制计数器和任意进制计数器;按时钟脉冲输入方式的不同,可分为同步计数器和异步计数器;按计数过程中数字增减趋势的不同,可分为加计数器、减计数器和可逆计数器。
计数器可利用触发器和门电路构成,但在实际工作中,根据需要,通常利用集成计数器来构成任意进制的计数器。
目前中规模集成电路芯片常见的只有十进制计数器和十六进制计数器,在用集成计数器构成N进制计数器时,需要利用清零端或置数控制端,让电路跳过某些状态来获得N进制计数器。
使用集成计数器构成任意进制计数器有着明显的优点,可使电路简化,减少连线,提高电路的可靠性[5,6]。
1.1课题的提出及研究意义
1.1.1课题的提出
对计数器的设计,大部分都是采用的EDA软件来实现的,也有采用单片机,VHDL语言,PLC逻辑编程等来实现的,随着数字电路技术和计算机技术的飞速发展,EDA技术取代了传统的电子设计方法而成为数字电路设计的主流。
EDA利用软件的编程设计,达到对硬件系统的功能仿真、测试和设计,使产品的开发周期缩短,成本降低。
而美国NI公司的LabVIEW,虽然不是专业的EDA开发软件,但凭借其在虚拟仪器技术上的突出优势和图形化编程的特性,同样可以运用于数字电路的设计,达到良好的仿真和设计效果[7,8]。
LabVIEW相比于专业的EDA软件有很多突出的优势:
第一、不仅对于项目的仿真,且对于仪器的仿真,可直接用于实际的测量;第二、芯片、仪器功能可由用户自己定义,并且具有强大的可扩展性能;第三、生动而丰富的参数设置和结果表达能力,从广义上说,可以把LabVIEW看成是工控组态软件的一种。
从而也具备一般组态软件的强大的图形处理和人机界面功能;第四、强大的网络通信功能,随着网络技术的迅速发展,在科学研究和工业生产各领域,网络化的要求越来越高。
NI公司独有的DataSocket技术、EDA技术为快速开发网络测控和设计系统提供了可能。
基于LabVIEW的优势,并且在目前流行的各种数字电路教材中,均分别给出了加法计数器和减法计数器,但没有给出既能完成加法计数又能完成减法计数的逻辑电路[9],为此本文通过使用LabVIEW软件设计出了一种可进行加、减计数的可逆计数器,并且还可进行任意进制的扩展,任意进制的计数器在人们的日常生活和生产工作中得到了广泛的应用[10],比如电子表、秒表、分频器等等。
基于以上介绍的种种优点,所以提出了基于LabVIEW计数器的设计这个课题。
1.1.2研究的意义
本课题是基于LabVIEW计数器的设计,采用了一种在数字电路设计中运用较少的软件来实现计数器的设计,突出LabVIEW在编程特性、图形界面、扩展功能、虚拟仪器技术等各方面作为数字电路设计软件的优势,并将编好的程序生成安装程序和可执行文件,能够脱离件软件安装运行,可在任意的计算上看到设计的结果,以前的仿真软件(比如MultiSim)必须在软件的支持下才可以运行,LabVIEW在这方面比以前常用的仿真软件有了一个突破。
1.2计数器研究现状
随着科学技术的发展,传统的测试设备和测试手段在许多方面已不能满足要求。
计算机技术的发展,给传统仪器注入了新活力,20世纪90年代出现的虚拟仪器技术就是计算机技术和传统仪器技术的完美结合,所以出现了基于VXI总线的虚拟计数器[11];以Altera公司的EMP7128可编程逻辑器件为基础设计出高集成度的四分频16位位置式光电码盘计数器[12],其中运动控制卡由DSP运动控制模块、计数模块、4分频模块、键盘显示模块等组成;AMD公司生产的40引脚可编程定时计数器芯片,9513系列计数器[13],最高可提供高达20MHz的时钟源,具有DIP-40和PLCC-44两种封装方式;单片机制作数显计数器[14],单片机采用AT89C52,计数器可以在显示范围内任意设定计数值。
目前计数器的实现可以用很多种方法,运用EDA技术进行仿真设计,还可以用编程序的方法,用软件实现计数器的设计,如C语言,VHDL硬件语言,PLC逻辑编程,单片机编程等。
计数器的应用也是非常广泛的,适用于科研、生产、教学实验室、国际军工、航空航天等领域。
现在国内国外都在研究新的计数器,希望它频率更高,价格更低,性能更好。
1.3本文研究的目的和研究内容
1.3.1本文研究的目的
本文以数字电路作为设计的基础,学习计数器的设计方法,并将计数器的算法运用LabVIEW软件来实现,突出此软件在数字电路设计方面的优势,让设计出的计数器更加“可视化”,让设计的整个程序更加明确。
1.3.2本文的研究内容
本文主要是根据数字电路中的触发器的电路结构和工作原理,首先设计T触发器,作为整个设计的一个主要子程序,然后根据时序逻辑电路的分析方法,设计一个具有两种范围选择的加减计数器。
本文利用LabVIEW软件实现计数器的设计,可以在LabVIEW软件中看到计数的过程,并且实现清零和进制转换功能,能够在加、减计数,范围选择间任意选择,能够观察到二进制位的时序图。
1.4本文主要介绍内容
本文根据数字电路中计数器的设计原理,结合LabVIEW中提供的布尔逻辑量和程序结构等,提出了利用LabVIEW进行计数器的设计,本文所介绍的主要内容有以下五章:
第一章主要介绍LabVIEW软件的优势,并对课题的提出、研究意义、研究目的、研究内容及计数器的研究现状作简述。
第二章主要介绍二进制计数器和集成计数器设计的理论原理。
第三章主要介绍运用LabVIEW软件实现计数器设计的模型。
第四章主要介绍运用LabVIEW软件实现计数器设计的过程及程序框图,并对实现过程作一些相关分析。
第五章主要对所做设计进行总结,提出设计的不足之处。
2.计数器的理论原理
2.1二进制计数器
2.1.1二进制异步加计数器
图2.1是由2个上升沿触发的D触发器组成的3位二进制异步加计数器[15]。
图中各个触发器的 输出端与该触发器的D输入端相连(即Di= ),把D触发器转换成计数型触发器T。
同时,各 端又与相邻高1位触发器的时钟脉冲输入端相连。
计数脉冲CP加至触发器FF0的时钟脉输入端,因而每输入一个计数脉冲,FF0就翻转一次,当Q0由1变0, 由0变1(Q1进位信号)时,FF2翻转。
显然,这是一个异步时序电路,分析其工作过程,不难得到其状态图和时序图,它们分别如图2.2和图2.3所示。
由状态图可以清楚地看到,从初态000(由清零脉冲所置)开始,每输入一个计数脉冲,计数器的状态按二进制递增(加1),输入第8个计数脉冲后,计数器又回到000状态。
因此它是23进制加计数器,也称模八(M=8)加计数器。
从时序图可以清楚地看到,Q0、Q1、Q2的周期分别是计数脉冲(CP)周期的2倍、4倍、8倍,也就是说,Q0、Q1、Q2分别对CP波形进行了二分频、四分频、八分频,因而计数器也可作为分频器。
需要说明的是,在考虑各触发器的传输延迟时间tpd时,对于一个n位的二进制异步计数器来说,从一个计数脉冲(设为上升沿起作用),到n个触发器都翻转稳定,需要经历的最长时间是ntpd,为保证计数器的状态能正确反映计数脉冲的个数,下一个计数脉冲(上升沿)必须在ntpd后到来,因此计数脉冲的最小周期Tmin=ntpd。
2.1.2二进制同步加计数器
图2.4是用JK触发器(但已令J=K)组成的4位二进制(M=16)同步加计数器。
由图可见,各位触发器的时钟脉冲输入端接同一计数脉冲CP,各触发器的驱动信号分别人J0=K0=1,J1=K1=Q0、J2=K2=Q0Q1、J3=K3=Q0Q1Q2。
根据同步时序电路的分析方法,可得到该电路的状态表,如表2.1所示。
设从初态000开始,因为J0=K0=1,所以每输入一个计数脉冲CP,最低位触发器FF0就翻转一次,其他位的触发器FFi仅在Ji=Ki=Qi-1Qi-2…Q0=1条件下,在CP下降沿到来时才翻转。
表2.1 图2.4电路图的状态表
计数脉冲
CP时序图电路状态等效十
进制数
Q3 Q2 Q1 Q0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
160 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
0 0 0 00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
图2.5是图2.4电路的时序图,考虑触发器的传输延迟时间tpd后,在同步计数器中,由于计数脉冲CP同时作用于各个触发器,所有触发器的翻转是同时进行的,都比计数脉冲CP的作用时间滞后一个tpd,因此其工作速度一般要比异步计数器高。
应当指出的是,同步计数器的电路结构异步计数器复杂,需要增加一些输入控制电路,因而其工作速度也要受这些控制电路的传输延迟时间的限制。
如果将图2.4电路中触发器FF1、FF2和FF3的驱动信号分别改为J1=K1= 、J2=K2= 、J3=K3= ,即可构成4位二进制同步减计数器。
2.2集成计数器
目前,集成计数器在一些简单小型数字系统中仍被广泛应用,因为它具有体积小、功耗低、功能灵活等优点。
集成计数器的类型很多,表2.2列举了若干集成计数器产品。
表2.2 几种集成计数器
CP 脉冲
引入方式型号计数模式清零方式预置数
方式
同步74161
74HC161
74HCT161
74LS191
74LS193
74160
74LS1904位二进制加法
4位二进制加法
4位二进制加法
单时钟4位二进制可逆
双时钟4位二进制可逆
十进制加法
单时钟十进制可逆异步(低电平)
异步(低电平)
异步(低电平)
无
异步(高电平)
异步(低电平)
无同步
同步
同步
异步
异步
同步
异步
异步74LS293
74LS290双时钟4位二进制加法
二-五-十进制加法异步
异步无
异步
2.2.1集成计数器74161
74161是4位二进制同步加计数器。
图2.6是它的引脚图,其中RD是异步清零端,LD是预置数控制端,A、B、C、D是预置数据输入端,EP和ET是计数使能(控制)端,RCO(=ET?
QA?
QB?
QC?
QD)是进位输出端,它的设置为多片集成计数器的级联提供了方便。
表2.3是74161的功能表。
由表可知,74161具有以下功能:
① 异步清零 当RD=0时,不管其他输入端的状态如何(包括时钟信号CP),计数器输出将被直接置零,称为异步清零。
表2.3 74161功能表
清零
RD预置
LD使能
EP ET时钟
CP预置数据输入
A B C D输出
QA QB QC QD
L
H
H
H
H×
L
H
H
H× ×
× ×
L ×
× L
H H ×
×
×
× × × ×
A B C D
× × × ×
× × × ×
× × × ×L L L L
A B C D
保 持
保 持
计 数
② 同步并行预置数 在RD=1的条件下,当LD=0、且有时钟钟脉冲CP的上升沿作用时,A、B、C、D输入端的数据将分别被QA~QD所接收。
由于这个置数操作要与CP上升沿同步,且A~D的数据同时置入计数器,所以称为同步并行预置。
③ 保持 在RD=LD=1的条件下,当ET?
EP=0,即两个子计数使能端中有0时,不管有无CP脉冲作用,计数器都将保持原有状态不变(停止计数)。
需要说明的是,当EP=0,ET=1时,进位输出RCO也保持不变;而当ET=0时,不管EP状态如何,进位输出RCO=0。
④ 计数 当RD=LD=EP=ET=1时,74161处于计数状态。
2.2.2集成计数器74LS93的功能
74LS93是双时钟4位二进制同步可逆计数器。
表2.4是它的功能表。
74LS93的特点是有两个时钟脉冲(计数脉冲)输入端CPU和CPD。
在RD=0、LD=1的条件下,作加计数时,令CPD=1,计数脉冲从CPU输入;作减计数时,令CPU=1,计数脉冲从CPD输入。
此外,74LS93还具有异步清零和异步预置数的功能。
当清零信号RD=1时,不管时钟脉冲的状态如何,计数器的输出将被直接置零;当RD=0,LD=0时,不管时钟脉冲的状态如何,将立即把预置数据输入端A、B、C、D的状态置入计数器的QA、QB、QC、QD端,称为异步预置数。
表2.4 74LS93的功能表
清零
RD预置
LD时钟
CPU CPD预置数据输入
A B C D输出
QA QB QC QD
H
L
L
L ×
L
H
H × ×
× ×
H
H
× × × ×
A B C D
× × × ×
× × × ×L L L L
A B C D
加计数
减计数
2.2.3集成计数器74LS290功能
74LS290是异步十进制计数器。
它由1个1位二进制计数器和1个异步五进制计数器组成。
如果计数脉冲由CPA端输入,输出由QA端引出,即得二进制计数器;如果计数脉冲由CPB端输入,输出由QB~QD引出,即是五进制计数器;如果将QA与CPB相连,计数脉冲由CPA输入,输出由QA~QD引出,即得8421码十进制计数器。
因此,又称此电路为二-五-十进制计数器。
表2.5是74LS290的功能表。
由表可以看出,当复位输入R0
(1)=R0
(2)=1,且置位输入R9
(1)?
R9
(2)=1,则74LS290的输出将被直接置9,即QDQCQBQA=1001;只有同时满足R0
(1)=R0
(2)=0和R9
(1)?
R9
(2)=0时,才能在计数脉冲(下降沿)作用下实现二-五-十进制加计数。
表2.5 74LS290的功能表
复位输入
R0
(1) R0
(2)置位输入
R9
(1) R9
(2)时钟
CP QA输出
QB QC QD
H H
H H
× ×
L ×
L ×
× L
× LL ×
× L
H H
L ×
× L
L ×
× L × L
× L
× H
L L L
L L L
L L L
计 数
计 数
计 数
计 数
2.2.4用74161构成九进制加计数器
九(N=9)进制计数器有9个状态,而74161在计数过程式中16(M=16)上状态,因此属于M>N的情况。
此时必须设法跳过M-N(=16-9=7)个状态。
通常用两种方法实现,即反馈清零法和反馈置数法。
① 反馈清零法
反馈清零法适用于有清零输入端的集成计数器。
74161具有异步清零功能,在其计数过程中,不管它的输出处于哪一状态,只要在异步清零输入端加一低电平电压。
使RD=0,74161的输出会立即从那个状态回到0000状态。
清零信号(RD=0)消失后,74161又从0000状态开始重新计数。
图2.7所示的九进制计数器,就是借助74161的异步清零功能实现的。
图2.8是该九进制计数器的主循环状态图。
由图可知,74161从0000状态开始计数,当输入第九个CP脉冲(上升沿)时,输出QDQCQBQA=1001,通过与非门译码后,反馈给RD端一个清零信号,立即使QDQCQBQA返回0000状态,接着,RD端的清零信号也随之消失,74161重新从0000状态开始新的计数周期。
要说明的是,此电路一进入1001状态后,立即又被置成0000状态,即1001状态仅在极短的瞬间出现,因此,在主循环状态图中用虚线表求。
这样就跳过了1001~1111七个状态,获得了九进制计数器。
具有同步清零功能的M进制集成计数器也可用反馈清零法构成N进制计数器。
② 反馈置数法
反馈置数法适用于具有预置数功能的集成计数和器。
对于具有同步预置数功能的计数器而言,在其计数过程中,可以将它输出的任何一个状态通过译码,产生一个预置数控制信号反馈至预置数控制端,在下一个CP脉冲作用后,计数器就会把预置数输入端A、B、C、D的状态置入输出端。
预置数控制信号消失后,计数器就从被置入的状态开始重新计数。
图2.9和图2.10都是借助同步预置数功能,采用反馈置数法,用74161构成九进制加计数器的。
其中图2.9的接法是把输出QDQCQBQA=1000状态译码产生预置数控制信号0,反馈至LD端,在下一个CP脉冲的上升沿到达时置入0000状态。
图2.10是图2.9电路的主循环状态图。
其中0001~1000这8个状态是74161进行加1计数实现的,0000是由反馈(同步)置数得到的。
由此可以推知,在图9中,反馈置数操作可在74161计数循环状态(0000~1111)中的任何一个状态下进行。
例如可将QDQCQBQA=1111状态的译码信号加至LD端,这时预置数据输入端应为0111(=1111~1000)状态。
图2.11电路的接法是将74161计数到1111状态时产生的进位信号译码后,反馈到预置数控制端。
预置数据输入端置成0111状态。
该电路从0111状态开始加1计数,输入第8个脉冲后到达1111状态,此时RCO=ET?
QD?
QC?
QB?
QA=1,LD=0,在第9个CP脉冲作用后,QDQCQBQA被置成0111状态,同时使RCO=0,LD=1。
新的计数周期又从0111开始。
具有异步置数功能的M进制集成计数器也可用反馈置数法构成N进制计数器。
2.3本章小结
本章主要介绍数字电路中计数器的理论原理,分别介绍了二进制同步加计数器、二进制异步加计数器和常用的集成计数器的工作原理,对计数器的功能的实现作了分析与阐述,为计数器的设计奠定了基础。
3.基于LabVIEW计数器的设计模型
3.1LabVIEW简介
LabVIEW是一种图形化的编程语言和开发环境,它广泛地被工业界、学术界和研究实验室所接受,被公认为是标准的数据采集和仪器控制软件[16]。
LabVIEW不仅提供了与遵从GPIB,VXI,RS-232和RS-485协议的硬件及数据采集卡通信的全部功能,还内置了支持TCP/IP,ActiveX等软件标准的库函数,而且其图形化的编程界面使编程过程变得生动有趣。
LabVIEW是一个功能强大且灵活的软件,利用它可以方便地建立自己的虚拟仪器。
虚拟仪器技术是计算机软件、硬件、总线技术、测试技术和仪器技术等多种学科交叉渗透的结果[17]。
以LabVIEW为代表的图形化程序语言,又称为“G”语言。
使用这种语言编程时,基本上不需要写程序代码,而是“绘制”程序流程图。
LabVIEW尽可能利用工程技术人员所熟悉的术语、图标和概念,因而它是一种面向最终用户的开发工具,可以增强工程人员构建自己的科学和工程系统的能力,可为实现仪器编程和数据采集系统提供便捷途径。
LabVIEW提供了丰富的逻辑量,且具有直观、形象、生动的特点,比较适合于数字逻辑电路的设计。
用LabVIEW软件对系统进行设计,用户只需从模块库中选择所需的模块组合即可。
而且,用户可以自定义模块和模块库,从而大大加强了系统设计的功能[18]。
LabVIEW提供工业界最大的仪器驱动程序库,不支持通过Internet,ActiveX,DDE,SQL等交互式通信方式实现数据共享,它所提供的众多开发工具使得复杂的测试与测量任务变得简单易行[19,20]。
3.1.1LabVIEW程序的基本构成
LabVIEW与虚拟仪器有