1、等精度频率测量汇编
- 格式:ppt
- 大小:650.00 KB
- 文档页数:45
等精度频率测量方法作者:陈兵清来源:《商情》2013年第38期【摘要】本文主要论述了利用FPGA(Field Programmable Gate Array,现场可编程门阵列)进行测频计数,单片机实施控制实现频率计的设计过程。
该频率计利用等精度的设计方法,克服了基于传统测频原理的频率计的测量精度随被测信号频率的下降而降低的缺点。
等精度的测量方法不但具有较高的测量精度,而且在整个频率区域保持恒定的测试精度。
【关键词】FPGA VHDL 频率测量单片机一、硬件电路设计(一)系统顶层电路设计等精度数字频率计涉及到的计算包括加、减、乘、除,耗用的资源比较大,用一般中小规模的FPGA芯片难以实现。
因此,我们选择单片机和FPGA的结合来实现单片机完成整个测量电路的测试控制、数据处理和显示输出;FPGA完成测频功能。
显示电路采用7段LED动态显示,由单片机P2口直接驱动。
等精度频率计主要由由以下几个部分构成:信号放大整形电路:用于对待测信号进行放大整形,以便作为FPGA的输入信号。
测频电路:是测频的核心模块,由FPGA担任。
单片机模块:用于控制FPGA的测频操作和读取测频数据,并发出相应数据处理。
安排单片机的P0口直接读取测试数据。
控制命令从P1口或是P3的相关口线发出。
20MHz的标准频率信号源:本模块采用倍频技术,倍频出一个100MHz标准频率信号源,产生100MHz的标准频率给FPGA使用。
数码管显示模块:采用8个7段LED动态显示,使用P2口作为段信息的输出,使用P1口的低四位控制串行移位寄存器的三个输入及CLK端,实现LED的动态扫描。
(二)FPGA测频模块逻辑设计与单片机的接口按照如下方式连接:单片机的P0口接8位数据DATA[7..0],负责读取测频数据;START信号输出到单片机的P3.2口线,通过中断的方式来判断计数是否结束,以确定何时可以读取数据;P1.6,P1.5和P1.4与SEL[2..0]相接,用于控制多路数据选择器,当SEL分别为“000”、“001”、“010”、“011”时,由低8位到高8位读出标准频率计数值;当SEL分别为“100”、“101”、“110”、“111”时,由低8位到高8位读出待测频率计数值。
学号:课程设计题目采用等精度测频原理的频率计学院信息工程学院专业通信工程专业班级姓名指导教师2015 年1月15日课程设计任务书学生姓名:专业班级:指导教师:工作单位:信息工程学院题目: 采用等精度测频原理的频率计初始条件:本设计既可以使用集成译码器、计数器、定时器、脉冲发生器和必要的门电路等。
本设计也可以使用单片机系统构建多功能数字钟。
用数码管显示时间计数值。
要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求)1、课程设计工作量:1周。
2、技术要求:①设计一个等精度测频原理的频率计。
②频率测量范围1~9999。
③其精度为10的-4次方。
④用四位带小数点数码管显示其频率。
⑤具有超量程、欠量程提示功能。
⑥确定设计方案,按功能模块的划分选择元、器件和中小规模集成电路,设计分电路,画出总体电路原理图,阐述基本原理。
3、查阅至少5篇参考文献。
按《武汉理工大学课程设计工作规范》要求撰写设计报告书。
全文用A4纸打印,图纸应符合绘图规范。
时间安排:1、2014 年12 月5日集中,作课设具体实施计划与课程设计报告格式的要求说明。
2、2014 年12 月6日,查阅相关资料,学习电路的工作原理。
2、2014 年12 月7 日至2014 年12 月31日,方案选择和电路设计。
2、2015 年1 月1 日至2015 年 1 月6 日,电路调试和设计说明书撰写。
3、2015 年 1 月7 日上交课程设计成果及报告,同时进行答辩。
课设答疑地点:鉴主15楼电子科学与技术实验室。
指导教师签名:年月日系主任(或责任教师)签名:年月日摘要伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。
电子设计自动化是一种实现电系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。
等精度频率测量一、设计背景介绍等精度频率测量有两个计数器,一个对标准频率时钟计数,另一个对被测频率时钟计数,计数器的ctrl输入端是使能输入,用于控制计数器计数的长度;clr输入端是同步清零输入。
测量开始之前首先clr置高电平,使所有寄存器和计数器清零。
然后由外部控制器发出频率测量使能信号,即使ctrl为高电平,而内部的门控信号ena 要到被测脉冲的上升沿才会置为高电平,同时两个计数器开始计数。
当ctrl持续一段时间之后,由外部控制器置为低电平,而此时ena信号仍将保持下一个被测脉冲的上升沿到来时才为0,此时计数器停止工作。
这样就使得计数器的工作时间总是等于被测信号的完整周期,这就是等精度频率测量的关键所在。
比如在一次测量中,被测信号的计数值为Nt,对基准时钟的技术值为Nr,设基准时钟的频率为Fr,则被测信号的频率为Ft = Fr×Nt÷Nr。
最后两个计数值传输到主控制器中计算得到被测信号的频率。
(本设计参阅《数字系统设计与Verilog HDL》(第四版)P354相关内容。
)二、设计要求:1、熟悉等精度频率测量的工作原理,2、给出工作流程及子模块的构成,3、利用Verilog HDL设计等精度频率测量电路,给出详细设计过程4、编写测试程序,5、在EDA工具上仿真功能和时序的正确性,6、给出仿真时序,7、撰写课程设计报告三、设计方案与源程序说明//等精度频率测量Verilog源代码。
module freq_ms_djd( input clk_ref, //参考时钟input clk_test, //被测信号input enable, //全局使能output reg[31:0] refer, //参考计数值output reg[31:0] test); //被测计数值reg ena; //等精度门控信号reg clr; //清零信号reg tgate; //时间门控信号reg[31:0] timer; //计时器信号reg[31:0] ref_cnt; //参考计数器reg[31:0] test_cnt; //被测计数器always @ (posedge clk_ref) //计时器:100MHz时钟,计时2s beginif(enable==0) begin timer<=32'd0;endelse beginif(timer==32'd200000001) begin timer<=32'd0;endelse begin timer<=timer+1;endend endalways @ (negedge clk_ref) //时间门控信号:tgate,清零信号:clr begin if(~enable) begin clr<=1;tgate<=0;endelse beginif(timer==32'd100000000) begin t gate<=0;endelse beginif(timer==32'd200000000) begin c lr<=1;endelse beginif(timer==32'd200000001)begin clr<=0;tgate<=1;endendend endend// 等精度门控信号产生:从tgate到ena,由被测信号clk_test触发always @(posedge clk_test or posedge clr)beginif(clr==1) begin ena<=1'b0;endelse begin ena<=tgate;endendalways @(negedge ena) //每2s更新一次输出begin refer<=ref_cnt;test<=test_cnt;endalways @(posedge clk_ref or posedge clr) // 参考时钟计数器beginif(clr==1) begin ref_cnt<=32'd0;endelse if(ena) begin ref_cnt<=ref_cnt+1;endendalways @(posedge clk_test or posedge clr) //被测信号计数器beginif(clr==1) begin test_cnt<=32'd0;endelse if(ena) begin test_cnt<=test_cnt+1;endendendmodule。
现代电子技术实验(EDA)等精度频率计综合报告吕佳电子信息科学与技术物电学院2010年6月20日电工电子中心2009年5月绘制等精度频率计实验总结报告一.实验内容前面简易数字频率计测量精度随着被测信号频率的不同而不同,误差1/fx ,当测量1Hz 信号时,误差可能是100%。
设计一个等精度频率计,使 测量结果与被测信号频率不同,而与基准频率有关。
首先设定一个基准频率,根据相同的时间,基准频率F b 和被测信号频率F x 计数的个数分别为N b ,N x ,利用公式NxFxNb Fb ,可以求出F x 。
二.方案设计设计方案原理框图如下:最后一个模块为数据处理部分,有两种处理方式: 1、用maxplus2自带的乘除法模块来处理数据,如下图:虽然此种方法便于理解,但是此模块的使用有限,不能够进行较高位数的运算,否则编译会出错。
2、用FPGA与单片机通信的方法,将测出来的数据送入单片机处理,然后将得出的结果送入FPGA中显示。
(后面主要介绍这种方法)。
其原理图如下:三.实验步骤第一阶段:按照等精度原理框图将各个模块生成1、D触发器:用来控制计数的开始和计数的停止,因为计数的开始和停止都是在被测频率的上升沿到来时起作用的,所以测量时间一定是被测频率的整数倍个,这就保证了被测频率所记的个数一定是整数个。
其代码如下:module mydff(D,clk,prn,clrn,Q);input D,clk,prn,clrn;output Q;reg Q;always @(posedge clk or negedge prn or negedge clrn)if(!prn) Q=1; //低电平置1else if(!clrn) Q=0; //低电平置0else Q=D;endmodule3、计数器(此处最好使用maxplus2自带的计数器)3、将计数的次数送给单片机:因为上面定义32位的计数器,所以数据传送是通过总线进行读写的,所以每次只能传送8位,所以传送一个数需要读数据,这个阶段主要有两个模块:一、将数据拆开;二、单片机从FPGA中读数据。
等精度法测频一、 测量原理M 法、T 法的测量精度不仅取决于基准时间和计数器的计数误差,还取决于频率的高低,频率不同则精度不一样,M 法在高频段的准确度相对较高,T 法在低频段的准确度较高.M/T 法(等精度测量法)则在整个测试频段的精度一样,闸门信号是被测信号周期的整数倍,即与被测信号同步,因此大大减少了误差,但由于只与被测信号同步,而不与标准时钟同步,因此还是存在着±1计数误差.其测频原理图如图1所示,误差计算为'00000||||11100%x x x f f M f M M t f σ-∆=⨯=≤= 式中:x f 是被测信号频率真实值,'x f 是被测信号频率测量值,0t 为闸门时间,0f 为标准时钟频率。
由上式可知,误差与闸门时间和标准时钟频率有关,闸门时间越长,标准时钟频率越高,误差越小。
由于用等精度测频法时所采取的标准时钟频率比较高(10MHz 以上),因此±1计数误差相对很小。
二、 基于FPGA 的实现采用FPGA 设计,主要产生如下时序: StartClrTclkLockFclk其中,Start 作为闸门信号,Clr 是清零信号,Tclk 是被测信号,Lock 是锁存信号,Fclk 是标准频率信号。
当检测到Start 为高时,测量开始。
开始后Tclk 的第一个周期将Clr 和Lock 置高,将两个计数器全部清零。
当下一个Tclk 上升沿来临时将Clr 置低,同时开启两个计数器,开始计数。
待检测到Start 为低时,在Tclk 的下一个上升沿停止计数,将结果锁存,得到N t 和N 0,则可换算出被测信号的频率为:00t t N f f N = 测量电路如下:仿真时,clk1周期为20ns,频率为50M;clk2周期为203ns,频率为4.92611M。
当gate取值为50us时仿真结果波形如下,计算得测量的频率为4.92620M,误差为0.00009MHz.当gate取值为100us时仿真结果波形如下,计算得测量频率为4.92606M,误差为0.00005MHz。