1 / 15
文档名称:

等精度频率计的设计.pdf

格式:pdf   大小:1,253KB   页数:15页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

等精度频率计的设计.pdf

上传人:青山代下 2024/5/21 文件大小:1.22 MB

下载得到文件列表

等精度频率计的设计.pdf

相关文档

文档介绍

文档介绍:该【等精度频率计的设计 】是由【青山代下】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【等精度频率计的设计 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..前言随着微电子技术和计算机技术的迅速发展,特别是单片微机的出现和发展,使传统的电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代测量仪器。频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。传统的频率计测量误差较大,等精度频率计以其测量准确、精度高、方便等优势将得到广泛的应用。传统的测频方法有直接测频法和测周法[1],在一定的闸门时间内计数,门控信号和被测信号不同步,计数值会产生一个脉冲的误差。等精度测频法采用门控信号和被测信号同步,消除对被测信号计数产生的一个脉冲的误差。等精度频率测量方法消除了量化误差,可以在整个测试频段内保持高精度不变,其精度不会因被测信号频率的高低而发生变化。采用单片机作为控制核心的等精度频率计,可以充分利用单片机软件编程技术实现等精度测频。通过单片机对同步门的控制,使被测信号和标准信号在闸门时间内同步测量,为了提高精度,将电子计数功能转为测周期,采用多周期同步测量技术,实现等精度测量。1:..。传统的直接测频法其测量精度将随被测信号频率的降低而降低,测周法的测量精度将随被测信号频率的升高而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。等精度频率的测量原理图1所示[2]。频率为f的被测信号经通道滤波、放大、整形后x输入到同步门控制电路和主门1(闸门),晶体振荡器的输出信号作为标准信号(时基信号)输入到主门2。被测信号在同步控制门的作用下,产生一个与被测信号同步的闸门信号,被测信号与标准信号(时基信号)在同步门控制信号的控制下。在同步门打开时通过同步门分别输入到事件计数器和时间计数器的信号输入端,计数器开始计数。同步门关闭时信号不能2:..通过主门,计数器停止计数,单片机发出命令读入计数器的数值,并进行数据处理,将处理后的结果送显示。等精度频率测量方法是采用多周期同步测量。如图1的测量原理图所示由单片机发出预置门控信号GATE,GATE的时间宽度对测频精度影响较少,可以在较大的范围内选择,即在高频段时,闸门时间较短;低频时闸门时间较长。实现了全范围等精度测量,减少了低频测量的误差。在同步门的控制下,一方面保证了被测信号和时基信号的同步测量;另一方面在同步门打开后计数器并不是马上计数,而是在被测信号的下一个上升沿开始计数,同步门关闭后计数器也不是马上停止计数,而是在被测信号的下一个上升沿停止计数。即在实际闸门时间计数,从而提高了测量精度。由于采用D触发器实现的同步门的同步作用,事件计数器所记录的N值已不存在误差x的影响,但由于时钟信号与闸门的开和关无确定的相位关系,时间计数器所记录的N的值0仍存在±1误差的影响,只是由于时钟频率很高,误差的影响很小。所以在全频段的测量精度是均衡的,从而实现等精度频率测量。,公式f=f×N/N成立。设所测频率的准确值为f。在一次测量x0x0x0中,由于f计数的起停时间是由该信号的上升沿控制的,因此,在T时间内对f的计数NXxx无误差。在此时间内f的计数N最多相差一个脉冲,即△N≤±l,则下式成立:000f/N=f/N(1)xx00f/N=f/(N+△N)(2)x0X000由此可分别推得:f=(f/N)×N(3)x00xf=[f/(N+△N)]×N(4)x0000x根据相对误差公式有:△f/f=︱f-f︱/f(5)x0x0x0xx0将式(3)和式(4)代人式(5)整理后可得:△f/f=︱△N︱/N(6)x0x000因为︱△N︱≤l(7)0所以︱△N︱/N≤1/N(8)0003:..即相对误差:︱δf︱=△f/f≤1/N(9)x0x00其中:N=T×f(10)00由此可知,增大Tp或提高f,可以增大N,减少测量误差,提高测量精度;相对测量xx误差与被测信号频率的大小无关,仅与取样时间及时基信号(标准信号)频率有关,可以实现被测频带内的等精度测量;取样时间越长,时基信号频率越高,分辨率越高。[3][4],其主要由以下几部分组成:单片机控制部分、同步门控制电路、计数和键盘与显示电路。单片机控制部分主要完成测量过程的控制、测量结果的处理和显示。单片机选用AT89C52,,,一次计数完成后单片机通过控制两片74LS244读取被测信号与标准信号的低8位计数值,高位计数值在单片机的T0、T1中。然后单片机对计数值进行运算处理,并送出显示。、、,控制和管理键盘及显示。同步门控制电路主要由D触发器74LS74(同步门控制)、六反相器74LS04和二输入或非门74LS02组成(主门1、主门2)。主门1控制被测信号f的通过,主门2控制时钟信号xf0的通过,两门的启闭都由同步门控制电路控制。计数器包括事件计数器和时间计数器两部分,它们是两组完全相同的计数电路。分别由前后两级组成。前级由双4位异步计数器74LS393级联构成八位二进制计数器;后级由AT89C52单片机内的定时/计数器构成十六位二进制计数器。标准信号部分采用10MHz石英晶体振荡器来提供测量所需要的标准脉冲信4:..号。键盘与数码显示部分采用串行接口方式8位LED数码管及64键键盘管理芯片HD7279A与单片机连接,驱动八位LED共阴极数码管和键盘接口,键盘与数码显示部分主要完成测量功能的选择和测量频率的数据显示。,使两个计数器清零,,使同步门控制器的Q端为低电平,则主门1和主门2都关闭。“1”,使D触发器的D端为高电平。根据D触发器的功能,Q端与D端的逻辑状态不同,触发器处于闭锁状态,这时被测信号即使到达CK端,也不能使其触发翻转,保证了同步门可靠关闭。,使D触发器的D端为“0”,这样Q端与D端的逻辑状态相同,触发器解除闭锁,这时被测信号一旦到达CK端,触发器立即翻转,Q由“0”变为“1”,于是同步门被打开,被测信号和时间信号分别进入到相应的计数器进行计数。,也启动了计时系统开始计量闸门时间。当预定的闸门时间结束时,,D触发器再次解除闭锁。随后紧跟而来的被测信号再次触发D触发器使之翻转,Q端由高电平转为低电平,使同步门关闭,计数器停止计数。5:..6:..,正确地实现等精度测量。整个系统软件的设计采用了自顶向下的模块化的结构方式,将各个功能分成独立模块,由系统的程序统一管理执行。它主要完成各种功能,如测量、数据运算、显示等。如图3所示为频率测量主程序流程图,在计数前对计数器清零。然后,发出命令打开闸门进入闸门时间,计数器在闸门时间内计数。延时子程序结束后,发出命令关闭闸门使计数器停止计数;单片机再依照程序读取计数器的值,并与单片机内部计数器所计的值合并在一起。由公式(1),即被测频率f=f×N/N来进行运算,由于精度要求,N和N都由24位二进制数来计数。因此,要在单x0x0x0片机内部进行多字节无符号二进制数的乘法和除法运算,并将运算结果转换成BCD码,显示运算结果。//-----------------------函数声明,变量定义-----------------------------#include<>sbitGATE=P3^0;//预制门限sbitCLR=P3^1;//请零sbitRGATE=P3^2;//实际门限7:..sbitSEL0=P3^4;//数据选择位0sbitSEL1=P3^5;//数据选择位1sbitSEL2=P3^6;//数据选择位2#definedata_inP1unsignedcharNx[4];//待测频率计数值unsignedcharNs[4];//标准频率计数值unsignedcharGATE_time=1;//门限时间,预定义为1Sunsignedchartime_count;bitPRE_judge=1;//-----------------------变量声明---------------------------------------voidsystem_init(void);//初始化,设置定时器0的工作方式,供主程序调用voidTIMER0_SCANkey();//定时器0中断处理函数//-----------------------------------------------------------------------//函数名称:system_init()//函数功能:初始化设置//设定INT0的工作方式//-----------------------------------------------------------------------voidsystem_init(void){TMOD=0x01;//定时器0工作在方式1ET0=1;//定时器0中断允许TH0=-5000/256;//12M时钟时,=-5000%256;TR0=1;//定时器0开始计数EA=1;//系统中断允许}//---------------------------------------------------------------------//函数名称:read_result//函数功能:将计数值读出到Nx、Ns//--------------------------------------------------------------------voidread_result(){GATE=0;while(RGATE);//等待实际门限的结束SEL0=0;SEL1=0;SEL2=0;Nx[0]=data_in;//SEL=000SEL0=1;Nx[1]=data_in;//001SEL1=1;Nx[3]=data_in;//011SEL0=0;Nx[2]=data_in;//0108:..SEL0=0;SEL1=0;SEL2=1;Ns[0]=data_in;//100SEL0=1;Ns[1]=data_in;//101SEL1=1;Ns[3]=data_in;//111SEL0=0;Ns[2]=data_in;//110}//-----------------------------------------------------------------------//函数名称:judge_Prage//函数功能:判断频率范围,//大于1M即Nx>0x000F4240,GATE=1//小于1M大于1k即0x000003E8<Nx<0x000F4240,GATE=5//小于1k即Nx<0x000003E8,GATE=10//-----------------------------------------------------------------------voidjudge_Prage(){if((Nx[3]==0)&&(Nx[2]==0))if((Nx[1]<3)||((Nx[1]==3)&&(Nx[0]<0xE8)))GATE_time=10;elseGATE_time=5;elseif((Nx[3]==0)&&(Nx[2]<0x0f))GATE_time=5;elseif((Nx[3]==0)&&(Nx[2]==0x0f))if(Nx[1]<0x42)GATE_time=5;elseif((Nx[1]==0x42)&&(Nx[0]<0x40))GATE_time=5;elseGATE_time=1;elseGATE_time=1;}//---------------------------------------------------------------------//函数名称:calcu_Fx//函数功能:计算频率,根据Fx=(Nx/Ns)Fs计算结果//-----------------------------------------------------------------------voidcalcu_Fx(){}//-------------------------------------------------------------------//函数名称:TIMER0_intrupt9:..定时器0中断处理程序//-----------------------------------------------------------------------voidTIMER0_intrupt()interrupt1using1{EA=0;//系统中断禁止GATE=1;TH0=-5000/256;//12M时钟时,=-5000%256;time_count++;if(++time_count==100)GATE_time--;while(GATE_time==0){GATE=0;read_result();if(PRE_judge)//预测,判断频率范围{judge_Prage();PRE_judge=0;if(GATE_time)//如果频率大于1M,直接计算,无须再测calcu_Fx();}elsecalcu_Fx();//不是预测,直接计算结果}EA=1;}//-----------------------------------------------------------------------//函数名称:main//函数功能:主函数//-----------------------------------------------------------------------voidmain(){CLR=0;GATE=1;system_init();}:..。--功能:4位显示的等精度频率计。--最后修改日期:。libraryieee;;;;entityPLJisport(clk:instd_logic;--基准时钟(10KHz)tclk:instd_logic;--被测信号start:instd_logic;--复位信号alarm0,alarm1:outstd_logic;--超量程,欠量程显示dian:outstd_logic_vector(3downto0);--小数点data1:outintegerrange0to9999);--频率数据endPLJ;architecturebehavofPLJissignalq:integerrange0to9999;--预置闸门分频系数signalq1:integerrange0to10000;--被测信号计数器signalq2:integerrange0to20000;--基准信号计数器signalen,en1:std_logic;--预置闸门,实际闸门signalqq,qqq:integerrange0to200000000;--运算器signaldata0:integerrange0to9999;--频率数据中间信号beginprocess(clk)--此进程得到一个预置闸门信号beginifclk'eventandclk='1'thenifstart='1'thenq<=0;en<='0';elsifq=9999thenq<=9999;en<='0';elseq<=q+1;en<='1';11:..endif;endif;endprocess;process(tclk)--闸门信号beginiftclk'eventandtclk='1'thenifstart='1'thenq1<=0;en1<='0';elsifen='1'thenq1<=q1+1;en1<='1';elseen1<='0';endif;endif;endprocess;process(clk)--此进程完成在实际闸门时间内,计基准脉冲数beginifclk'eventandclk='1'thenifstart='1'thenq2<=0;elsifen1='1'thenifq2=20000thenq2<=20000;elseq2<=q2+1;endif;endif;endif;endprocess;process(clk)--此进程完成等精度频率计的运算beginifclk'eventandclk='1'then12:..ifstart='1'thenq<=0;qq<=00;elsifen1='0'thenifq1>=1000thenqq<=q1*10000;--q1的大小来判断小数点的位置ifqqq<qqthen--完成数据运算elsifdata0>=10000thenalarm0<='1';--超量程显示elsedata1<=data0;endif;elsifq1>=100thenqq<=q1*100000;ifqqq<qqthenqqq<=qqq+q2;data0<=data0+1;elsifdata0>=10000thenelseendif;elsifq1>=10thenqq<=q1*1000000;ifqqq<qqthenqqq<=qqq+q2;data0<=data0+1;elsifdata0>=10000thenelseendif;elsifq1>=1thenqq<=q1*10000000;ifqqq<qqthenqqq<=qqq+q2;data0<=data0+1;elsifdata0>=10000thenelseendif;endif;elsifq2>19999thenalarm1<='1';--欠量程显示elsealarm1<='0';13:..endif;endif;endprocess;endbehav;心得体会一个是硬件电路的系统设计,在掌握了主要的思想之后,只设计了整体电路的框架,还有一些小的方面总是存在问题,在查了课本和参考书后还有写问题没有解决,在同学的帮助下解决了很多问题;其次就是程序了,在程序中,主要的问题不是实现功能,而是地址的分配,地址能分配好,那么写出来的程序错误就比较少,即使有,差错也是很容易的,但是要是地址出错了,检查错误的工作量就很大了,所以首先就是要把地址分配好。过程虽然是艰难的,但是收获也是很大的,作为电信专业的一名学生,通过这次工程训练可以检验出理论知识有很多的东西都没有掌握,其中包括有很多重要的,在设计电路图时发现对单片机的串行口工作方式还不是很懂,对ISE中程序生成电路图以及画图还不是很熟,因此在使用时遇到的困难可想而知,尽管在设计电路图和写程序时遇到了很多的问题,但是觉得这样也好,对以前的知识有了个重新的复****这样可以捡起了很多重要的东西,对以后的帮助也是很大的。从这次大作业中暴露的自己的许多不足之处,知道自己对以前所学过的知识理解得不够深刻,掌握得不够牢固以及灵活解决问题的能力还不够强,在以后的学****和工作中要努力端正自己的学****态度,从而更加努力的学****只有这样我们才能真正的去掌握它,而不是只懂得一点皮毛。总体来说,这次大作业我还是受益匪浅。在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。在这里,我也非常感谢各位老师的耐心辅导以及同学们的热心帮助。14:..1《单片机原理与应用系统设计》.中南大学出版社,20062.《单片机实验及课程设计指导书》(综合部分),李志民编著,.《智能仪器原理、设计与发展》.中南大学出版社,.《单片机基础》,.《单片微机测控系统设计大全》.北京航空航天大学出版社,.《单片微型计算机应用技术》.***出版社,.《单片机程序设计实例》.清华大学出版社,.《感测技术基础》.电子工业出版社,,电力电子技术题例与电路设计指导,***出版社,,电力电子技术(第四版),***出版社,,电力电子系统-理论与设计,清华大学出版社,:《单片机与嵌入式系统应用》、《实用测试技术》、《自动化仪表》、《传感器世界》、《测控技术》、《电子技术应用》、《仪表技术与传感器》、《自动化与仪器仪表》等2003年以后各期。15