基于VHDL语言的数字频率计的设计方案
1.引言 数字频率计是通讯设备、计算机、电子产品等生产领域不可缺少的测量仪器。由于硬件设计的器件增加,使设计更加复杂,可靠性变差,延迟增加,测量误差变大。通过使用EDA技术对系统功能进行描述,运用VHDL语言,使系统简化,提高整体的性能和可靠性。采用VHDL编程设计的数字频率计,除了被测信号的整形部分,键输入和数码显示以外,其他都在一片FPGA上实现,从而让整个系统非常精简,让其具有灵活的现场更改性,在不改变硬件电路的基础上,进一步改进提高系统的性能,使数字频率计具有高速,精确度高,可靠性强,抗干扰等优点,为数字系统进一步的集成创造了条件。 2.数字频率计的工作原理 频率测量方法中,常用的有直接测频法、倍频法和等精度测频法。中直接测频法是依据频率的含义把被测频率信号加到闸门的输入端,只有在闸门开通时间T(以ls计)内,被测(计数)的脉冲送到十进制计数器进行计数。直接测频法比其他两个方案更加简单方便可行,直接测频法虽然在低频段测量时误差较大,但在低频段我们可以采用直接测周法加测量,这样就可以提高测量精度了。直接周期测量法是用被测周期信号直接控制计数门控电路,使主门开放时间等于Tx,时标为Ts的脉冲在主门开放时间进入计数器。设在Tx期间计数值为N,可以根据Tx=N×Ts来算得被测信号周期。因此本文采用低频测周,高频测频的方法来提高精度,减小误差。 3.主要功能模块的实现 该系统设计的控制器是由状态机实现,通过在不同测量档位,选择合理的时基信号频率降低误差,确定各状态转移条件和状态名,采用低频档位测周,高频档位测频的方法。20MHz晶振送入分频器,分出各档时基信号和其它模块所需的触发信号,分频器将各档时基信号传给状态机,同时待测信号进入状态机,状念机进行状态转换,将量程溢出信号和状态显示信号表征在发光二极管上。如图表1所示。
3.1 状态机模块 首先对系统复位,如果此时状态机的初始状态为Fl00k,若超量程信号送入状态机,则状态转换到FlM,如果仍有超量程信号则状态转换到F10M,如果仍有超量程信号则状态转换到F100M,如果还有超量程信号则状态转换到Overflow H产生高溢出信号;若欠量程信号送人状态机,则状态转换到P1ms,如果有超量程信号则状态转换到P10ms,如果仍有超量程信号则状态转换到P100ms,如果仍有超量程信号则状态转换到P 1 s,如果还有超量程则状态转换到OverflowL产生低溢出信号。如图1所示。
3.2 计数器模块 在“待计数信号”的两个时钟周期内完成计数与控制信号(Over与Low)的传输,在量程合适的情况下,还将计数值输出。这两个时钟周期内,第1个时钟周期完成计数,第2个时钟周期完成控制信号的传输与计数值输出。这样做的好处是稳定,将计数与控制信号传输分开进行。避免了一些可能遇到的“时钟跳变”.但这种做法的缺点也很明显,那就是在测周期模式下,假如待测信号是1Hz的,那么系统可能需要2s(两个时钟周期)才能显示正确的数值。 3.3 十分频模块 由于1kHz~10kHz的信号无论用测频法还是测周期法都是不可行的,可以采用预分频的方法,将1kHz~10kHz的信号十分频,然后用测周期法测出周期,再计算出频率。 3.4 同步整形电路模块 程序如下:library ieee;use ieee.std_logic_1164.all;entity SignalLatch is4.系统的功能仿真和验证分析。 据状态转换图,这里将状态机的程序分成两个进程,进程1完成状态转移过程,进程2控制各状态下的输出值如下图2所示,timecounter=clocktested为50KHz.
为了方便观察,将数值改小,计数值大于100且小于或等于1000时输出!将clock1设为50K,clock2计数时钟设为5M,得出仿真如图3所示Result为100符合计数要求。
如图4所示给clk1一个5KHz的频率,经过十分频后clk2输出0.5KHz,clk1的周期是0.2ms,经过十分频后是2ms
同步整形电路仿真如图5所示。
由以上模块进行仿真得出了频率的测量。如图6、7、8所示。
5.结论 本方案所设计的数字频率计占用FPGA芯片资源较少,成本较低,减少了电路的尺寸,具有一定的实用价值。利用QuartusII平台进行了仿真和硬件测试,基本达到了设计的要求。从而证实了本方案的具有较好可靠性,灵活性以及实用性。 |