采用等精度测频原理的频率计的设计一.设计要求1.设计一个用等精度测频原理的频率计。2.频率测量测量范围1~9999;3.用4位带小数点数码管显示其频率;二.测频原理及误差分析1.常用的直接测频方法主要有测频法和测周期法两种。2.测频法就是在确定的闸门时间Tw内,记录被测信号的变化周期数(或脉冲个数)Nx,则被测信号的频率为:fx=Nx/Tw。3.测周期法需要有标准信号的频率fs,在待测信号的一个周期Tx内,记录标准频率的周期数Ns,则被测信号的频率为:fx=fs/Ns。4.这两种方法的计数值会产生±1个字误差,并且测试精度与计数器中记录的数值Nx或Ns有关。为了保证测试精度,一般对于低频信号采用测周期法;对于高频信号采用测频法,因此测试时很不方便,所以人门提出等精度测频方法。5.等精度测频方法是在直接测频方法的基础上发展起来的。6.它的闸门时间不是固定的值,而是被测信号周期的整数倍,即与被测信号同步,因此,测除了对被测信号计数所产生±1个字误差,并且达到了在整个测试频段的等精度测量。等精度测频原理波形图7.在测量过程中,有两个计数器分别对标准信号和被测信号同时计数。8.首先给出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等到被测信号的上升沿到来时,计数器才真正开始计数。然后预置闸门关闭信号(下降沿)到时,计数器并不立即停止计数,而是等到被测信号的上升沿到来时才结束计数,完成一次测量过程。可以看出,实际闸门时间τ与预置闸门时间τ1并不严格相等,但差值不超过被测信号的一个周期9.设在一次实际闸门时间τ中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns。10.标准信号的频率为fs,则被测信号的频率为11.由式(1)可知,若忽略标频fs的误差,则等精度测频可能产生的相对误差为12.δ=(|fxc-fx|/fxe)×100%(2)13.其中fxe为被测信号频率的准确值。14.δ=|ΔNs|/Ns≤1/Ns=1/(τ·fs)由上式可以看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关,即实现了整个测试频段的等精度测量。闸门时间越长,标准频率越高,测频的相对误差就越小。标准频率可由稳定度好、精度高的高频率晶体振荡器产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度。等精度测频的实现方法可简化为下图所示的框图三.设计步骤CNT1和CNT2是两个可控计数器,标准频率(fs)信号从CNT1的时钟输入端CLK输入;经整形后的被测信号(fx)从CNT2的时钟输入端CLK输入。每个计数器中的CEN输入端为时钟使能端控制时钟输入。当预置门信号为高电平(预置时间开始)时,被测信号的上升沿通过D触发器的输出端,同时启动两个计数器计数;同样,当预置门信号为低电平(预置时间结束)时,被测信号的上升沿通过D触发器的输出端,同时关闭计数器的计数。系统组成系统由分频器、计数器1、计数器2、D触发器等组成。分频器出来的信号作为等精度测频原理的预置闸门信号。其中D触发器,计数器2和计数器1的作用与前2页图中所示相同。运算模块就是完成公式(1)的运算。复位主要对分频、计数器1和计数器2进行清零操作。采用等精度测频原理的频率计的程序与仿真--文件名:PLJ.vhd。--功能:4位显示的等精度频率计。--最后修改日期:2004.4.14。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;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';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'thenifstart='1'thendata0=0;dian=0000;alarm0='0';alarm1='0';qqq=0;qq=00;elsifen1='0'thenifq1=1000thenqq=q1*10000;--根据q1的大小来判断小数点的位置ifqqqqqthenqqq=qqq+q2;data0=data0+1;dian=0000;完成数据运算elsifdata0=10000thenalarm0='1';--超量程显示elsedata1=data0;endif;elsifq1=100thenqq=q1*100000;ifqqqqqthenqqq=qqq+q2;data0=data0+1;elsifdata0=10000thendata1=1000;dian=0000;elsedata1=data0;dian=0010;endif;elsifq1=10thenqq=q1*1000000;ifqqqqqthenqqq=qqq+q2;data0=data0+1;elsifdata0=10000thendata1=1000;dian=0010;elsedata1=data0;dian=0100;endif;elsifq1=1thenqq=q1*10000000;ifqqqqqthenqqq=qqq+q2;data0=data0+1;elsifdata0=10000thendata1=1000;dian=0100;elsedata1=data0;dian=1000;endif;endif;elsifq219999thenalarm1='1';--欠量程显示elsealarm1='0';endif;endif;endprocess;endbehav;附录等精度频率计仿真图—欠量程等精度频率计仿真图—超量程等精度频率计仿真图—5tclk=clk等精度频率计仿真图—9tclk=clk等精度频率计仿真图—50tclk=clk等精度频率计仿真图—80tclk=clk等精度频率计仿真图—300tclk=clk等精度频率计仿真图—1000tclk=clk等精度频率计仿真图—5000tclk=clk等精度频率计仿真图—6000tclk=clk等精度频率计仿真图—10000tclk=clk