一种优化周期测频法数字频率计的设计
2018-11-30苟铭泽崔少辉魏保华
苟铭泽 ,崔少辉 ,魏保华 ,2
(1.陆军工程大学 导弹工程系,河北 石家庄 050003;2.电子信息系统复杂环境效应国家重点实验室,河南 洛阳 471003;3.中国人民解放军63850部队,吉林 白城 137001)
0 引 言
随着科学技术的发展,时间及频率测量的意义已越来越重要,在卫星发射、飞行导航、天文观测、通信广播、科学研究、生产生活等各个方面都需要对时间及频率进行测量[1]。频率测量的方法主要有直读测频法、比较测频法、脉冲计数测频法[2]。其中,脉冲计数测频法又分为直接测频法和周期测频法,二者最主要的区别是前者的计数闸门由标准信号充当,后者的计数闸门由被测信号充当[3]。但是直接测频法和周期测频法都存在±1计数误差问题,导致测量精度不理想[4]。其中,周期测频法是以被测信号作为计数闸门,如果被测信号的频率过高,闸门也跟着变窄,导致计数误差变大,所以周期测频法不适用于测量高频信号[5]。本文针对周期测频法的这一问题,设计了一种优化周期测频法的数字频率计,使其可以测量高频信号。
1 总体方案设计
周期测频法之所以在测高频信号存在较大误差,是因为这种方法由待测信号fx作为闸门,一旦fx频率过高,闸门也就随之变窄,从而影响到计数结果的准确度[6]。
本文设计思路是:所有测量结果均用周期表示(单位:µs):先对待测信号进行量程范围的预估,从而确定真实测量结果的小数点位置以及分频数N;再将待测信号进行2×10N分频,扩大闸门宽度进行周期测量(此时所测周期是真实周期的10N倍);所测数据和小数点相结合显示出来的即为待测信号的周期。
频率计采用模块化的设计方法[7],主要包括量程估计模块、分频产生闸门模块、测周期模块以及小数点产生模块,其总体设计框图如图1所示。其中,标准频率f0是由10 MHz的外部晶振产生,它和待测频率fx一同经过量程估计模块,得出量程范围Range;分频产生闸门模块和小数点模块根据Range的数值产生相应的闸门信号Gate和小数点位置;而后使用该闸门信号进行周期测频。
图1 频率计组成图Fig.1 Composition diagram of frequency meter
2 核心模块的设计
量程估计模块、小数点产生模块和分频产生闸门模块是本文的核心,下面对它们进行介绍。
2.1 量程估计模块的设计
该模块的功能是对被测信号fx进行频段的预估,也可以说是对频率计量程的估计,最终输出的结果是以数字0~7表示的量程。量程估计是根据计数器在计数闸门下的实际结果与划分频段的理论计数范围进行比较(见表1),从而确定相应的量程编号[8-9]。其原理结构如图2所示。f0是计数时钟,7位BCD计数器在经过二分频的fx,电平为低时开始计数。zeros[6..0]是每一位BCD数的 0标志位(zeros[i]=1,则第i位数为 0;zeros[i]=0,则第i位不为0),count是计数器的进位信号。
图2 量程估计模块的原理图Fig.2 Schematic diagram of range estimation module
量程估计模块的工作原理如下:计数器在fx二分频信号的低电平下计数,此时计数器实时向寄存器发送count和zeros[6..0]的值。寄存器内控制程序执行循环依次读取count到zeros[6..0]数值的操作,如果count=1,则说明计数器溢出了,那么量程编号为“0”;如果count=0且zeros[6]=0,则量程编号为“1”;如果count=0且zeros[6]=1,zeros[5]=0,则量程编号为“2”;如果count=0且zeros[6]=1,zeros[5]=1,zeros[4]=0,则量程编号为“3”,依次向下进行判断。
表1 频段、计数值与量程对应关系Table 1 Correspondence of frequency band,count value and range
因为标准频率是10 MHz,那么如果待测频率是属于0.1~1 Hz的范围,则计数器在fx二分频信号闸门内计数的最大值为108,最小值为107,必将引起溢出,使得count=1,则量程编号为“0”。同理,若待测频率属于102~103Hz的范围,则计数值在 104~105之间,此时,count=0 且zeros[6]=1,zeros[5]=1,zeros[4]=0,则量程编号为“3”。
图3分别对应的是待测频率分别为1.234 MHz,876 kHz,8 Hz时的仿真结果。从仿真结果来看,量程估计在刚开始的一段时间会由于计数的不稳定造成误判,随着多次重复的计数,结果得以修正,最终得到的结果均符合表1的规定。
图3 量程估计模块仿真结果Fig.3 Simulation results of range estimation module
2.2 小数点模块的设计
小数点模块的本质其实是一个选择器[7],其在接收到量程估计模块的量程值range后,根据不同的range值选择执行对数码管小数点的控制程序。该频率计最终的显示结果是以µs为单位的周期值,待测频率的范围是 0.1~107Hz,所以显示结果的范围是 0.1~107µs。测试结果是由7位数码管显示,控制程序给“1”,表示点亮某位数码管的小数点,给“0”则不显示小数点。需要说明一点,7位数码管显示的小数点只能是“X.XXXXXX”~“XXXXXXX.”,无法显示“0.XXXXXXX”的模式,故约定所有小数点都亮表示该模式。量程与小数点显示的关系如表2所示。
表2 量程与小数点对应关系Table 2 Correspondence between range and decimal point
2.3 分频产生闸门模块
周期测频法在测量高频信号时存在较大误差的原因是随着信号频率的增加,计数闸门变窄,使得计数产生大的误差。所以本文设计了分频模块,通过该模块根据量程编号对待测信号fx进行相应的10N分频,从而使计数闸门变宽,其中N为分频数。本文规定,除量程0和1时,N=0;其他量程情况下,N=量程编号-1。通过计算可以得到,除了量程“0”外,其余量程下的信号经过分频后产生的新闸门宽度都在0.1~1 s之间。
本模块使用7位BCD计数器对待测信号fx进行分频。其原理是利用其零标志位zeros[i]的输出来控制分频[10]。例如:当7位BCD计数器百位数字是0时,则zeros[2]=1,输出为高电平;百位数字非0,则zeros[2]=0,输出为低电平。此时高电平占100个计数周期,低电平占900个计数周期,所以zeros[2]是fx的103分频。
为了验证设计是否正确,对该模块进行仿真,结果如图4所示。图中分别对应当fx为8 MHz,50 kHz,600 Hz时的闸门产生情况,可以看出符合设计要求。
3 系统整体的综合及仿真验证
根据图1的总体结构图设计各个模块,得到最后如图5所示的顶层设计图。对此进行系统仿真,结果如图6所示。其中,图6a)的fx为8.76 MHz,理论计算其周期为0.114 155 2 µs,仿真结果为0.114 154 9 µs,误差为2.628×10-6。图 6b)的fx为 50 kHz,理论计算其周期为20 µs,仿真结果为19.999 99 µs,误差为5×10-7。仿真结果表明符合设计要求。
图4 分频产生闸门模块的仿真结果Fig.4 Simulation results of gate module generated by frequency division
图5 频率计的QuartusⅡ顶层逻辑图Fig.5 QuartusⅡtop-layer logic diagram of frequency meter
图6 频率计仿真结果Fig.6 Simulation results of frequency meter
4 结 语
本文利用FPGA设计了一种优化周期测频法的频率计,其在测量高频信号时也能持有较高精度。该频率计有量程估计模块,不需人为设置量程,而且量程模块本身也是提高测试精度的关键模块,它先预估待测信号的频段,后面的测量模块再在该频段内精确测量。从仿真结果看,该频率计测量误差控制在10-6~10-7之间,具有较好的应用价值。