简易数字频率计的课程设计- 龙舟之子的日志- 网易博客

简易数字频率计的课程设计

2007-12-23 23:20:37 阅读2227 评论14 字号:

 

摘  要

关键词:数字频率计、VHDL、PROTEL

数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。将使整个系统大大简化。提高整体的性能和可靠性。

数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。它不仅可以测量正弦波、方波、三角波、尖脉冲信号和其他具有周期特性的信号的频率,而且还可以测量它们的周期。经过改装,可以测量脉冲宽度,做成数字式脉宽测量仪;可以测量电容做成数字式电容测量仪;在电路中增加传感器,还可以做成数字脉搏仪、计价器等。因此数字频率计在测量物理量方面应用广泛。本设计用VHDL在CPLD器件上实现数字频率计测频系统,能够用十进制数码显示被测信号的频率,能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。具有体积小、可靠性高、功耗低的特点。数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。采用VDHL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分以外,其余全部在一片FPGA芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。该数字频率计具有高速、xx、可靠、抗干扰性强和现场可编程等优点。

2.方案论证及总体框图

2.1方案论证

所谓频率,就是周期性信号在单位时间(1s)里变化的次数。若在一定时间间隔T内测得的这个周期性信号的重复变化次数N,则其频率可表示为f =N/T;只要知道了N和T就可以求得频率。常用数字频率测量方法有M法、T法和M/T法。M法是在给定的闸门时间内测量被测信号的脉冲个数,进行换算得出被测信号的频率。这种测量方法的测量精度取决于闸门时间和被测信号频率。当被测信号频率较低时将产生较大误差,除非闸门时间取得很大。所以这种方法比较适合测量高频信号的频率。T法是通过测量被测信号的周期然后换算出被测信号的频率。这种测量方法的测量精度取决于被测信号的周期和计时精度,当被测信号频率较高时,对计时精度的要求就很高。这种方法比较适合测量频率较低的信号。M/T法具有以上两种方法的优点,它通过测量被测信号数个周期的时间然后换算得出被测信号的频率,可兼顾低频与高频信号,提高了测量精度。

但是,M法、T法和M/T法存在±1个字的计数误差问题:M法存在被测闸门内±1个被测信号的脉冲个数误差,T法或M/T法也存在±1个字的计时误差。这个问题成为限制测量精度提高的一个重要原因。本文在以上方法基础上,提出了一种新的频率测量方法,该方法利用全同步方法xx限制测量精度提高的±1数字误差问题,从而使频率测量的精度和性能大为改善。

(1)全同步数字频率测量方法的原理

M/T法是目前使用比较广泛的一种频率测量方法。其核心思想是通过闸门信号与被信号同步,将闸门时间T控制为被测信号周期的整数倍。测量时,先打开参考闸门,当检测到被测信号脉冲沿到达时开始计时,对标准时钟计数;参考闸门关闭时,计时器并不立即停止计时,而是待检测到被测信号脉冲沿到达时才停止计时,完成测量被测信号整数个周期的过程。测量的实际闸门时间与参考闸门时间可能不xx相同,但{zd0}差值不超过被测信号的一个周期。设实际闸门时间为Ts,被测信号周期数为Nx,标准时钟计时值为Ns,频率为fs,由于实际闸门时间为Ts为被测信号周期的整数倍,因此Nx是xx的;而对标准时钟的计量值则存在误差△Ns(|△Ns|≤1),即标准时钟计时的真值应为Ns±△Ns,M/T法实际上就是将测量闸门信号与被测信号同步,使得实际测量时间是被测信号周期的整数倍,所以M/T法又称为多周期同步测量法。M/T法中,相对误差与被测频率无关,即对整个测量频率域等精度测量;对标准时钟的计数值Ns越大则测量相对误差越小;提高门限时间Ts和标准时钟频率可以提高测量精度;在精度不变的情况下,提高标准时钟频率可以缩短门限时间,提高测量速度。对闸门时间Ts的计时误差△Ns是限制M/T法频率测量精度进一步提高的主要原因,xx△Ns误差是提高测量精度的有效手段。全同步频率测量法则是在参考闸门的控制下,寻找与标准时钟同步的被测信号,并以此信号作为实际闸门的控制信号,实现实际测量闸门信号、标准时钟、被测信号全同步,从而xxNx和Ns测量误差。

(2)全同步频率测量法

全同步频率测量法,在给出参考闸门信号后,通过一个脉冲同步检测器检测被测信号脉冲沿和标准时钟信号脉冲沿的同步信息,当它们同步就开始计时;参考闸门关闭后,亦检测被测信号脉冲沿和标准时钟信号脉冲沿的同步信息,当它们同步则停止计时。对于任意的标准时钟和被测信号,要找到两者脉冲xx同步的时刻来开启、关闭闸门是不现实的,但有可能找在实现脉冲同步检测电路时,也存在一个脉冲同步检测的误差范围。若以这个脉冲同步检测电路检测到脉冲同步的时刻作为开关信号,可以使得实际闸门的开关发生在标准时钟和被测信号都足够接近的时刻,从而达到计算值量化误差的最小化。

设开启闸门时脉冲同步时间为△t1,关闭闸门时脉冲同步时间差为△t2,脉冲同步检测{zd0}时间差值或称为{zd0}误差为△t,则有:|△t1|≤△t,| △t2|≤△t。不计标准时钟误差,实际闸门与标准时钟同步,实际闸门时间为Ts,频率测量的{zd0}相对误差只与脉冲同步检测{zd0}时间差值△t和闸门时间Ts有关,标准时钟周期和脉冲同步检测{zd0}时间差值△t分别是M/T法和本文所述的全同步频率测量法中限制频率测量精度提高的原因。显然,控制△t来提高频率测量精度是可能的,而且实现起来比提高标准时钟频率更容易。在全同步频率测量法中,当△t=2.5ns、Ts为1s时,频率测量相对精度可以达到10 -9量级;或当△t=2.5ns、Ts取0.001s时,可以实现1000次/s、相对精度达到10-6量级的快速动态频率测量。但在同等条件下,全同步频率测量法的测量精度要高于M/T法;M/T法通过提高标准时钟频率或加大门闸门时间来提高频率测量精度,而全同步频率测量法可以使用较低标准时钟频率、较短闸门时间来获得较好的频率测量精度。本文提出的全同步频率测量方法可以在较低的标准时钟频率、较短的闸门时间条件下显著提高频率测量的精度,适用于各种频率测量场合。

若采用了门控信号和被测信号对计数器的使能端进行双重控制,提高了测量的xx度;在运算单元采用了高速串行BCD码除法,不仅提高了运算速度,而且减小了资源消耗。

以一个8位十进制、测量范围为1Hz~100MHz的数字频率计为例,采用100MHz的标准频率信号。设计的数字频率计由测量频率模块、计算模块和译码模块组成。测频模块采用两个十进制计数器分别测出门控时间内的标准信号和被测信号的周期数Ns和Nx。计算模块则根据公式Fx/Nx=Fs/Ns算出Fx,通过译码即可得到被测信号频率的7段数码显示。数字频率计的设计原理实际上是测量单位时间内的周期数。这种方法免去了实测以前的预测,同时节省了划分频段的时间,克服了原来高频段采用测频模式而低频段采用测周期模式的测量方法存在换挡速度慢的缺点。为克服低频段测量的不准确问题,采用门控信号和被测信号对计数器的使能信号进行双重控制,大大提高了准确度。当门控信号为1时,使能信号并不为1,只有被测信号的上升沿到来时,使能端才开始发送有效信号,两个计数器同时开始计数。当门控信号变为0时,使能信号并不是立即改变,而是当被测信号的下一个上升沿到来时才变为0,计数器停止计数。因此测量的误差最多为一个标准时钟周期。当采用100MHz的信号作为标准信号时,误差{zd0}为0.01μs。利用FPGA实现二进制除法运算,一种方法是采用逼近法,这种方法速度低、准确性不高。另一种方法是采取被除数与除数的倒数相乘的方法,即将除数作为寄存器的地址,其倒数的小数部分作为寄存器的内容,通过一次寄存器寻址来计算除数的倒数。这种方法在一个时钟周期内即可完成一个完整的除法运算,虽然速度较高,但对于多字节除法运算,不仅程序复杂,而且占用资源较多。根据频率计的实际情况,本设计采用串行除法运算,利用多个时钟周期完成一个完整的除法运算,从而兼顾了频率计对速度和资源两方面的要求。在数字串行除法运算中,减法运算是必不可少的部分。数字串行BCD码的减法运算是将P位的BCD码分为P个宽为4的二进制数,然后从低位开始相减,在P个时钟周期内完成减法操作。如果输入的操作数位数为8,那么串行BCD码减法器可以在8个时钟周期内完成8位BCD码减法运算。数字串行减法的控制也比较简单,1位BCD码减法运算完成,进行移位操作,并且移位次数加1,然后通过采用start信号指示新计算周期。当移位次数为n时,输出移位寄存器完成串/并转换,输出结果。设计者可以根据实际情况,通过选择不同的n,提高设计的灵活性。本设计选择n=8。采用1OOMHz的工作频率,实现一个8位BCD码串行减法运算,耗用的资源却小于实现2位BCD码并行减法运算所耗用的资源。          

高速串行BCD码除法是建立在BCD码减法运算基础上的循环运算。用被除数减除数得到部分余数的BCD码,如果够减,则使商加1;否则,余数和商同时左移四位,并记录移位的次数m,根据对有效位数的不同要求,可以m进行赋值,如果要求保留8位有效数字,则m=8。在这种循环除法运算中,减少循环的次数是提高运算速度比较有效的方法。在一般循环式除法运算中,是从低位开始进行循环相减,循环次数等于商。如果是8位除法运行,则得到一个8位的商,要进行8位次的BCD码减法循环,例如:56895230/8=7111903.8,要进行7111903.8次循环,计算的速度可想而知。

所以在本设计中借鉴了一般十进制除法的运算方法,从高位开始相减,大大减少了循环次数。采用VHL语言设计一个复杂的电路系统,运用自顶向下的设计思想,将系统按功能逐层分割的层次化设计方法进行设计。在顶层对内部各功能块的连接关系和对外的接口关系进行了描述,而功能块的逻辑功能和具体实现形式则由下一层模块来描述。根据频率计的系统原理框图,运用自顶向下的设计思想,设计的系统顶层电路图。各功能模块采用VHDL语言来描述。在计数模块中,通过译码完成的信号和标准信号计数器的溢出信号对门控信号进行控制。可以根据不同的情况选择门控信号的时间范围,使设计具有一定的灵活性。采用门控信号和被测信号对两个计数器进行同步控制。根据D触发器的边沿触发的特点,可以将输入的门控信号CL作为D触发器的输入信号,而将被测信号BSN作为D触发器的脉冲控制信号,使触发器的输出端只有在被测信号BSN上升沿时才发生变化,实现了对使能信号的双重控制。本设计比较重要的一部分是运算单元。由于在运算单元中采用的是串行运算,因此其工作频率必须足够高。在FPGA中实现时,如何提高串行BCD码除法运算的速度是比较关键的问题。BCD码减法运算采用行波进位方法,因此必须尽量减小进位逻辑上的延迟。采用100MHz的工作频率,提高了运算速度。为了减小延时、提高工作效率,在对布局布线进行xx控制以后,把BCD码减法运算做成模块,在除法运算过程反复调用,达到了模块复用效果,大大提高了资源的利用率。除法运算通过双状态机的设计控制一个BCD码减法运算。所有状态用同一时钟进行控制,实现了系统的同步设计,xx了异步逻辑中存在的种种险象。当计数模块完成计数时,则将数输入除法模块,开始移位以确定输入的值;

当今VLSI的发展日新月异,FPGA的容量和速度成倍地增长,而价格却逐年下降,这将使得基于FPGA设计的数字频率计优势更加明显。

 

 

 

2.2数字频率计的基本原理

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第6章各参数测量原理

 

 

6.1 频率测量

测输入信号的频率,使用定时器/计数器0和1, 其中定时器1为计数工作方式,定时器0为定时工作方式,并且定时的时间为50毫秒,定时次数20次,在一秒内计算信号的高脉冲次数,得到的高脉冲数值便是被测信号的频率,如图6-1:

6.2 周期测量

测信号周期,使用定时器0, 其中定时器0为定时工作方式,检测P3.2口经过一次变高变低电平变化后所需的时间,得到的数值便是被测信号的周期,如图6-2:


6.3 脉宽测量

测输入信号的脉冲宽度,同样用定时器0计算P3.2口经过一次高电平所需的时间,得到的数值便是被测信号的脉宽。

 

 

 

 

 

 

 

 

 

6.4 占空比测量

调用测脉宽和测周期子程序,再对测得的数据进行处理,送入除法子程序,除得的商值便是被测信号的占空比。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

元件名称

型号

数量(个)

封装

74LS123

 

1

DIP16

74LS48

 

4

DIP 16

74LS90

 

4

DIP14

74LS273

 

2

DIP20

555

 

1

DIP8

74LS00

 

2

DIP 14

数码管

BS202

4

 

三极管

3DG100

1

 

二极管

 

1

 

电位器

100k

1

 

电位器

47k

1

 

按键开关

 

1

 

电阻

3.3k

1

0805

电阻

10

3

0805

电阻

47

2

0805

电阻

39

2

0805

电阻

10

1

0805

电阻

1

1

0805

电解电容

10 uF

1

RAD0.2

电解电容

100 uF

1

RAD0.2

电解电容

4.7 uF

1

RAD0.2

电解电容

47 uF

1

RAD0.2

电容

0.01uF

1

0805

 

 

 

结束语

 

单片机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种,在工业控制领域得到了广泛的应用。通过毕业设计,使我再次巩固了所学的单片机知识,单片机汇编语言程序设计流程以及学习硬件语言的一般学习方法,为以后的学习和工作打下了基础。

设计过程如下:绘制电源及整机原理图、制作硬件、调试程序、写论文。由于之前已经有做过实物了,使得我们的设计又更为简单化。通过设计我从中领悟到了很多东西——只要你用心去做,一切困难都会迎刃而解。我个人觉得这个设计题目比较有代表性。它从单片机简单的I/O口实验着手,逐步从定时/计数器的应用、中断的实现到键功能程序控制。一个课程项目的设计能够包含众多的关键知识点,这一点是十分重要的。

在调试程序前要通过指导老师的流程图在整体上弄清思路后,再着手写程序。写好的程序在MCS—51软件上可运行观察。如在原理上通过,即可通过编程器下载到单片机中,在硬件上验证正确与否。若存在问题,要从本质上分析、解决。判断问题出在哪里,就从哪里解决。软件编写不规范,而且很多汇编程序的代码效率并不是{zg}的。调试时要有耐心,戒骄戒躁。

通过设计,我们的理论知识再次得到了巩固,实际操作能力也得到了相应的提高。其实,很多东西都是这样,只要我们肯学,加上有适合自己的学习方法,一定能学好。在制作以及程序编写、下载和调试过程中,一度遇到过众多的困难,在老师的细心指导和同学的一起努力下才得以解决。在此,我表示忠心的感谢。

电源电路、测频电路都是由手工焊接的,选择元器件参数的精度和器件本身都存在一定的误差,测量操作时由于人为造成的测量误差,都是导致整个测量系统出现误差的原因。为了减少本设计系统的误差,电源电路、信号调整电路可以采用PCB板制作,减少虚焊,避免电路不稳定。

除硬件方面引起测量误差外,软件方面也不可忽视,如用到单片机的定时器,计数器时,要合适选择工作方式。  

 

参考文献

 

[1] 全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品选编(1994—1999).北京:北京理工大学出版社,2003

[2] 全国大学生电子设计竞赛组委会.第五届全国大学生电子设计竞赛获奖作品选编.  北京:北京理工大学出版社,2003

[3] 谢自美.电子线路设计·实验·测试(第二版).武汉:华中理工出版社,2000

[4] 张彦斌等.凌阳十六位单片机原理及应用. 北京:北京航天航空大学出版社,2003

[5] 赵俊超等.集成电路设计VHDL教程.北京:北京希望电子出版社,2002

[6] 王振红.VHDL数字电路设计与应用实践教程.北京:机械工业出版社,2003

[7]《电子电路设计与与实践》山东科学技术出版社 姚福安 编著

[8]《模拟电子技术基础实验与课程设计院》 哈尔滨工程出版社 主编 李万臣 副主编 谢红                      

[9]《数字电路设计实用手册》电子工业出版社 荀殿栋、徐志军等

编著                         

[10]《数字电子技术》西安电子科技大学出版社刘守义、钟苏著

鸣 谢

 

感谢学校、系为我们提供一个做毕业设计的好环境

感谢指导贾老师的细心指导、帮助

感谢同学的帮助设

 

<#--{zx1}日志--> <#--推荐日志--> <#--引用记录--> <#--相关日志--> <#--推荐日志--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构-->
郑重声明:资讯 【简易数字频率计的课程设计- 龙舟之子的日志- 网易博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——