用VHDL设计一个声频卡具有的功能自动测频测周功能的数字频率计,测频范围1Hz~1MHz,高频测频,低频测周

摘    要:本文介绍了一种同步测周期计数器的设计并基于该计数器设计了一个高精度的数字频率计。文中给出了计数器的VHDL编码并对频率计的FPGA实现进行了仿真验证,给出叻测试结果

在现代数字电路设计中,采用FPGA结合硬件描述语言VHDL可以设计出各种复杂的时序和逻辑电路声频卡具有的功能设计灵活、可编程、高性能等优点。本文将介绍一种基于FPGA采用同步测周期的方法来实现宽频段高精度数字频率计的设计。

图1 同步测周期计数器

同步测周期频率计的原理
在数字频率计中测周期计数器是主要的电路,其功能是:使用标准时钟以被测频率信号的一个周期为时限进行脉冲计数传统的测周期计数器采用门控计数器来实现,即采用一个同被测频率信号周期宽度相同的门控脉冲来控制计数器的计停其缺点在于无法实现对被测信号的连续测周期计数。
本文设计的同步测周期计数器如图1所示图中计数器的计数时钟为clk0, 频率为f0;被测信号为clkx频率为fx。采用一个D触发器对输入的被测信号clkx进行同步同步输出为s0。在clk0的上升沿到来之前如果clkx出现了上升跳变,则le信号变为高电平计数器ct的偅载信号和锁存器cout的使能信号有效。当clk0的上升沿到来时计数器的计数值锁存,同时计数器重载为1重新开始计数,le变为低电平。计数器在其他时间里进行加1计数锁存器的值则保持不变。该测周期计数器能在clkx的每个上升沿之后输出计数值实现了对被测信号进行测周期计数,并始终输出其最新一个周期的计数值图中cint端输出一个clk0周期宽度的高脉冲,用于指示新的计数值锁存

图2  同步测周期数字频率计


设该计數器的测周期计数值为M0,由于同步测周期法的分辨率为一个标准时钟周期因此有:
该同步测周期计数器的测周期计数值最小为2,要求被測信号高低电平的宽度大于一个标准时钟周期
基于上述同步测周期计数器,本文设计了如图2所示的高精度数字频率计freq_div模块是一个分频器,对标准时钟clk0进行系数为C0的分频频率计采用了两个同步测周期计数器同时工作,计数值输出端口分别为cout和mout为了避免由于同步测周期計数器中被测信号和标准时钟不同步,le信号高电平的宽度不固定而造成的计数出错在实际应用中,采取将被测信号先经过一个D触发器同步后再送入计数器的方法以保证计数的可靠性,其计数值和频率的关系仍满足(1)式设cout输出的值为C,mout输出的值为M根据频率计的结构,对於其中以clkx为计数时钟的计数器由(1)式得:
同理,对于以clk0为计数时钟的计数器有:
根据两个测周期计数器的计数值M、C,被测信号的频率按丅式计算得到
根据(3)式计算结果的最大误差为:

因此,只要使计数值C足够大就可以保证频率测量的精度将(3)和(4)两式相除并忽略小项得C和C0的關系如下:

给定C0,测周期计数值C的最大可变范围为:因此,根据实际测量精度的要求设定适当的分频器分频系数C0,即可保证实际的测周期计数值C的大小在精度要求的范围内对于上述的数字频率计,如果增大分频器分频系数C0提高测周期计数器的计数范围,可实现对输叺信号宽频段高精度的频率测量

图4 输入被测信号周期为156ms时的仿真波形

上述数字频率计的VHDL设计在Altera公司的Quartus II开发平台下进行了编译和仿真,图4昰在clk0输入10 MHz方波clkx输入周期为156ms(频率为6.41KHz)方波,分频系数C0取15000时的仿真波形
本文采用Altera公司的FPGA FLEX10K10LC84-4来实现上述的频率计,计数器计数值的处理和显示由 51單片机来完成同步测周期数字频率计的参数和测试结果是:计数器宽度为24 bit;分频系数C0取106;计数时钟频率f0为1MHz;FPGA逻辑单元的使用比例为41%;测量的频率范围是1Hz<fx<16MHz;测量误差小于 10-5。

本文设计的同步测周期计数器能够直接对被测信号进行连续的测周期计数可以在许多频率测量的设计Φ取代门控计数器,使设计更加灵活文中采用两个同步测周期计数器设计的数字频率计,无需选择量程便可实现宽频段高精度的频率测量并在FPGA中实现了系统集成。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载文章观点仅代表作者本人,不代表电子發烧友网立场文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题请联系本站作侵删。 

我要回帖

更多关于 声频卡具有的功能 的文章

 

随机推荐