1 引 言
频率测量不仅在工程应用中有非常重要的意义,而且在高精度定时系统中也处于核心地位,±1个计数误差通常是限制频率测量精度进 一步提高的重要原因。由于测频技术的重要性,使测频方法也有了很大的发展,常用数字频率测量方法有M法,T法,和M/T(等精度测量法)法。M法,T法, 和M/T法都存在±1个计数误差问题:M法存在被测闸门内±1个被测信号的脉冲个数误差,T法或M/T法也存在±1个字的计时误差,这个问题成为限制测量 精度提高的一个重要的原因。全同步频率测量法[1],从根本上消除了限制测量精度提高的±1个计数误差问题,从而使频率测量的精度和性能大为改善。
基于对FPGA器件和EDA技术以及全同步测频方法的研究[2,3],介绍一种利用FPGA实现DC~100 MHz全同步数字频率计的实现方法,并给出VHDL实现代码和仿真波形。整个系统在研制的FPGA/CPID实验开发系统上调试通过。本设计采用了高集成度的现场可编程门阵列(Field Program-mable Gata Array,FPGA)Flex EPF10k20TCl44-4芯片[4],通过软件编程对目标器件的结构和工作方式进行重构,能随时对设计进行调整,使得本设计具有集成度高、结构灵活、开发周期短、可靠性高的优点。
在文献[2,5]中所描述的等精度频率测量方法中,其测频原理如图1所示。
其 误差与闸门时间和标准时钟频率有关,闸门时间越长,标准时钟频率越高,误差越小。因此,用等精度测频法时所取的标准时钟频率比较高(10 MHz以上),因此±1计数误差相对很小。标准时钟频率不可能无限制提高,并且随着频率提高,产品成本成倍增加,对于生产应用没有意义。因此本设计用改进 的等精度频率测量方法--全同步测量来实现数字频率计的设计。在全同步的情况下,闸门信号不仅与被测信号同步,还与标准时钟同步。其原理图如图2所示。
2 全同步测频原理简述
由文献[1,6]可知:设开启闸门时脉冲同步时间差为△t1,关闭闸门时脉冲同步时间差为△t2,脉冲同步检测最大误差为△t,则有:△t1≤△t,△t2≤△t。频率测量的相
对误差如式(2)所示:
由式(1)可知,误差只与脉冲检测电路准确度有关,显然,控制△t来提高频率测量精度是有效的,而且实现走来比提高标准时钟频率更容易。
在以上分析的基础上,本设计采用FPGA来实现全同步数字频率计。其系统原理框图如图3所示。由图3可知,设计的绝大部分由FPGA完成,只有脉冲同步检测电路由74LS系列与非门来实现,以及显示部分由数码管构成。
3 全同步数字频率计模块设计
由系统原理框图3,则其FPGA内部模块电路设计原理如图4所示。
设 计原理图主要由以下几部分组成:脉冲同步检测电路、2个计数器、2个锁存器、控制器、乘法器、除法器、泽码电路等组成。工作原理如下:被测频率与标准时钟 分别送给脉冲同步检测电路与2个计数器,当脉冲同步检测电路检测到被测频率与标准时钟相位同步时,脉冲同步检测电路发出同步信号,2个计数器开始计数,当 脉冲同步检测电路再次检测到间步信号时,义发出同步信号,计数器停止计数。同时计数器的计数值锁存到锁存器,时序乘法器从锁存器中取得被测频率的计数值与 标准时钟频率进行乘法运算,然后再将乘法器运算所得的值与标准时钟的计数值送给除法器,乘法器的结果为被除数,标准时钟的计数值为除数,运算所得结果就是 被测信号的频率,然后冉经过二卜进制转换变成BCD码,送给数码管显示。本设计采用10 MHz的标准时钟,由于乘法器输入是27位二进制,相当于9位10进制数,而10 MHz的标准时钟为107Hz,因此用被测频率的计数值乘以108可得到一位小数点。
3.1 脉冲同步检测电路
脉冲同步检测电路 没计原理图如图5所示。U1~U8为74LS系列与非门,同步检测电路利用门电路的延时来构成。当被测信号及标准时钟都处在低电平时,U1,U2输出为高 电平,U3,U4的输出为高电平,U5,U6输出为低电平,则U8输出为低电平。当被测信号(Fx)及标准时钟的上升沿同时到来时,由于门电路具有延时特 性,因此U1,U2并不马上变为低电平,而是要经过一个延时才变为低电平。于是U3,U4的输入端都是高电平,则U3,U4
输出为低电平,U5,U6的输出为高电平,则U8输出为高电平。但是当且仪当Fx与CLK的上升沿在在延时时间内同时到达时U8才会输出高电平。74LS系列与非门的延时最小为4 ns,最大为15 ns,因此最大误差为11ns。根据公式(2)得:
当T0为1 s时,其精度可达到10-7,如再减小相位误差,则可提高频率计的精确度。
3.2 FPGA芯片内部模块电路设计和仿真结果
FPGA芯片内部模块电路设计和仿真结果如图6到图9所示。
3.2.1 计数器
此 计数播为27位二进制,具有计数使能端(ena)、异步清零端(clr)、时钟输入端(clk)、进位输出端(ov)等。当异步清零端(clr)为高电平 时,不管计数使能端是否有效,时钟上升沿是否到来,计数器都立即清零,即q=0。只有异步清零端(clr)为低电平,并且汁数使能端为高电平,有上升沿到 来时,计数器才开始计数,当计数器计满时,进位输出为高电平。计数器VHDL程序仿真图如图6所示。
3.2.2 乘法器
由 于本设计所用的乘法器位数较宽,而组合逻辑乘法器位数越多耗用的硬件资源成倍增长,并且本设计不需要有很高的运算速度,考虑到硬件资源与运算速度,因此采 用时序电路来实现乘法器,其原理是通过逐项移位相乘相加来实现。他是一种牺牲运算时间换取硬件资源的方案。乘法器的VHDL程序仿真图如图7所示。
3.2.3 除法器
除法器则可通过移位相减相除来实现,其工作原理与剩法器是一样的,其VHDL程序仿真图如图8所示。
3.2.4 控制器
控 制器工作时序如下:当同步信号(clk)上升沿到来时,计数使能信号(cp)立即变成高电平,锁存信号(creg)及清零信号(clr)变成低电平,同步 信号(clk)的上升沿再次到来时,除清零信号(clr)外,其余信号均取反,当同步信号(clk)的下降沿到来时,清零信号(clr)变成高电平。当同 步信号又到来时,重复上述过程,其仿真结果如图9所示。
3.2.5 顶层设计
由 模块电路设计原理图4,经过VHDL编程,得到各模块的VHDL设计实体,然后对各模块的设计实体在Max+PlusⅡ中进行仿真,验证各模块的正确性。 最后再设计一个顶层文件把各模块按图4连接起来,便构成了一个全同步数字频率计的FPGA内部硬件电路。下面给出顶层文件的仿真结果,由仿真图10可看 出:124×108/93=13 333 333,由于使用的是10 MHz的晶振,因此还有一位小数点最终显示的结果应该是1 333 333.3Hz。由仿真图11知,小数位在数码管的第二位上有效,其余位均无效。仿真结果与期望结果一致。至此,本设计得到成功验证。
4 结 语
本 文利用Altear公司的FPGA芯片FlexEPF10k20TC144-4 [5],使用VHDL语言设计了全同步数字频率计,在Max+PlusⅡ中进行了各模块的仿真,达到了预期结果。全同步数字频率计是目前精度最高的频率计 之一。在高速时钟随处可见的现代电子系统,有着非常广泛的研究价值。从某种程度上说他是以牺牲时间来换取精确度的,但一般情况下测频系统对时间的要求并不 高,并且由于电子系统对系统时钟的准确度越来越高,因此全同步数字频率计有着广泛的应用空间。