《提高精度的频率计设计原理.ppt》由会员分享,可在线阅读,更多相关《提高精度的频率计设计原理.ppt(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、提高精度的频率计的设计原理-verigol语言设计一、频率计的改进好了,现在我们知道普通的频率计的工作原理,那么我们怎样才能提高它的精度呢?问题提出,我们回头来看看刚才的那个仿真图:在此图中,SIGNAL要是有一个(干扰)波动,那么频率计的误差就是1/10,此误差很大,达不到频率计的要求。那么我们怎样才能提高它的精度呢?(思考)有的同学认为只要把小数点位置移动,精度自然就提高。我们想想,以上图为例,计数器的个数为10个,频率计的误差是1/10,即使把它的显示移动了,但是在分母不改变的情况下,精度是不会提高的。有的同学想到办法是在相同的EN内,提高测量的SIGNAL的输入频率-增加计数器的个数,
2、是的,这是可以提高精度,但是SIGNAL测量不一定都是高频率,测低频率时呢?频率计测量高频率或低频率总不能死定给用户。所以这方法不行。提高精度的方法:我们提高精度的方法就是在SIGNAL不变的情况下改变使能EN的“长度”,也就是分频为10倍。如图 上图,没分频时误差是1/10。现在我们把原来的使能提高为10倍,那么相同的时间内计数器读的SIGNAL的个数就是原来的10倍,计数器的个数为100,即使SIGNAL有一个(干扰)波动,那么在不改变测量信号的情况下误差就是1/100,精度提高了10倍。可是信号还是原来的信号,为了表明原来的值,我们才向左移动一位小数点,以便给人看时能够显示正确数字,小数
3、点是要这样移动。上图,没分频时误差是1/10,现在在不改变测量信号的情况下就是1/100,精度提高了10%。现在,大家明白了原理,下面主要的就是编程实现。以下来看看改进的频率计改进的频率计结构图:修改了分频模块,增加了一个控制模块3、修改的分频模块从原来的只有一个输出二分频,变成有三个输出的分频,分别以量程100K、10K、1K为准分为10分频、100分频、1000分频4、控制模块如图所示:输入为分频器出来的3个使能信号,控制器根据量程的选择其中一个作为输出使能EN。OUT1,OUT2,OUT3为量程指示灯。5、增加的反馈频率计原理图:结束语到此本次频率计设计基本完成。不足之处:分频时的信号是
4、以1HZ为基准信号,当分频倍数很大时,测量等待时间就很长。如100分频时的测量,则要等待100S。如何缩短分频时的等待时间,是此频率计的有待改进之处。关键代码:Reg fxover,fxlow;/,fxover,fxlow锁定反馈信号的电平;always(posedge cntover)/cntover为计数器第八位的进位信号,代表超 量程 begin if(clear)begin fxover=0;fxlow=0;end else begin fxover=1;fxlow=fxover;end end assign stateshift=fxover,fxlow;参考代码:always(po
5、sedge clk)begin if(rst)begin count_en2:0=0;end else begin if(temp0=10)begin count_en0=count_en0;temp0=0;end else temp0=temp0+1;if(temp1=100)begin count_en1=count_en1;temp1=0;end else temp1=temp1+1;if(temp2=1000)begin count_en2=count_en2;temp2=0;end else temp2=temp2+1;/load=count_en;end end部分程序:always(posedge clk)/*assign begin case(std_f_sel)2b00:begin en=indata0;end/;load=en 2b01:begin en=indata1;end/;load=en;end 2b11:begin en=indata2;end/;load=en;end default:begin en=indata0;end/;load=en;end endcase end/*/assign en=indata0;assign load=en;assign clr=clk&load;
限制150内