当前位置:文档之家› 第八讲 等精度测频

第八讲 等精度测频

第八讲三、设计实例等精度频率、占空比测量仪1.综述传统频率测量方法是对设定的闸门时间内脉冲进行计数,有两个主要因素影响精度,其一是闸门时间的准确度,其二是对低频信号的取整误差,为了消除以上两个因素的影响可选择等精度测频法。

但等精度测频法占用可编程器件资源量大,如选用24位计数器的频率计,仅测频部分就占用了EPM7128芯片的百分之九十以上的资源;若选用100MHz标准时钟,其闸门时间仅能选择在0.168s以下,测频范围在6Hz以上,限制了对低频的测量。

若要扩大低频量程,需要相应增大可编程器件容量,则体积、功耗和价格相应增加。

本文所述等精度频率、占空比测量仪采用将复杂可编程逻辑器件(CPLD)与低功耗单片机相结合,由CPLD完成高频信号计数,单片机完成低频信号计数、频率和占空比计算和显示控制等功能,即简化了仪器的结构,又扩大了低频量程。

如单片机采用长整形变量计数(32位),再加上CPLD中16位计数器,等效为48位计数器构成的等精度测量仪,当选用100MHz标准时钟时,低频范围可达3.55×10-7Hz。

本文所述等精度频率、占空比测量仪结构框图如图8-1所示,CPLD可编程逻辑器件选用的是EPM7064芯片,单片机可根据实际情况选用。

图8-1 等精度频率、占空比测量仪结构框图单片机发出如下所示控制信号:CLEAR:SLCE为高时CPLD芯片内各计数器清零信号;SLCE为低时占空比清零和测量启动信号。

SLCE:功能选择控制信号。

高电平测频;低电平测占空比。

CONTRL:闸门时间信号。

高电平测频;低电平测占空比。

S[2..0]:输出选择控制信号。

000—CPLD 输出标准时钟信号四位计数值最低位;001—CPLD 输出标准时钟信号计数值次低位;010—CPLD 输出标准时钟信号计数值第三位;011—CPLD 输出标准时钟信号计数值第四位;100—CPLD 输出被测信号四位计数值最低位;101—CPLD 输出被测信号计数值次低位;110—CPLD 输出被测信号计数值第三位;111—CPLD 输出被测信号计数值第四位。

单片机读入如下所示信号:BZTC :标准时钟信号计数值进位位。

BCTC :被测信号计数值进位位。

CPEND :测频或测占空比结束信号。

DOUT :测量结果输出值,4位二进制数。

2.等精度测频工作原理等精度测频工作原理如图8-2所示。

闸门时间控制信号Contr 并不直接作用于计数器计数使能端ENA ,而是经D 触发器再作用于ENA ,D 触发器的触发信号为被测频率信号BCclk ,通过此D 触发器消除了被测频率信号取整误差,仿真波形图如图8-3所示。

图8-2 等精度测频工作原理图图8-3 等精度测频闸门控制信号波形图由于被测频率信号BCclk 计数值N C 与标准频率信号BZclk 计数值N B 是同一时间计数值,可得如下关系式:N fN fBBCC(1)其中:f C 为被测频率信号BCc lk 频率;N C 为被测频率信号BCclk 计数值;f B 为标准频率信号BZclk 频率;N B 为标准频率信号BZc lk 计数值。

f B 、频率为已知量,N C 、N B 为测得量,通过关系式(1)即可计算出被测频率。

对标准频率信号取整是影响测频精度的重要因素,可通过选择合适闸门时间和提高标准频率信号频率加以抑制。

占空比测量原理是测得被测脉冲高电平标准频率信号计数值N1和低电平标准频率信号计数值N2,占空比q 为:211N N N q +=(2)3.CPLD 功能设计根据以上原理,采用图形法与VHDL 语言混合设计方法对CPLD 进行功能设计,整体功能图如图8-4所示。

其中各单元模块功能、内部结构分别介绍如下:图8-4 CPLD 整体功能图(1)UP_COUNT 单元:带进位、使能和清零端16位加计数器。

具体VHDL 语言程序如下所示。

LIBRARY ieee;USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL;ENTITY up_count ISPORT (clk,clr,ena : IN Std_logic; tc : OUT Std_logic;q: INOUT Std_logic_vector(15 DOWNTO 0));END up_count;ARCHITECTURE behav OF up_count ISBEGINPROCESS( clk,clr )BEGINIF clr = '0' THEN q <= (OTHERS=> '0');ELSIF clk'EVENT AND clk = '1' THENIF q = "0000000000000000" THENtc <= '0';END IF;IF q = "1111111111111111" THENtc <= '1';END IF;IF ena = '1' then q <= q + 1; END IF;END IF;END PROCESS;END behav;(2)MUX32_4单元:32位—4位多路数据输出选择器。

具体VHDL语言程序如下所示。

library IEEE;use IEEE.std_logic_1164.all;entity mux32_4 isport (q: in STD_LOGIC_VECTOR (31 downto 0);s: in STD_LOGIC_VECTOR (2 downto 0);Y: out STD_LOGIC_VECTOR (3 downto 0));end mux32_4;architecture behav of mux32_4 isbeginprocess (s,q)begincase s(2 downto 0) iswhen "000" => Y(3 downto 0) <= q(3 downto 0);when "001" => Y(3 downto 0) <= q(7 downto 4);when "010" => Y(3 downto 0) <= q(11 downto 8);when "011" => Y(3 downto 0) <= q(15 downto 12);when "100" => Y(3 downto 0) <= q(19 downto 16);when "101" => Y(3 downto 0) <= q(23 downto 20);when "110" => Y(3 downto 0) <= q(27 downto 24);when others => Y(3 downto 0) <= q(31 downto 28);end case;end process;end behav;(3)MUX2_1单元:2位—1位数据选择器。

具体VHDL语言程序如下所示。

library IEEE;use IEEE.std_logic_1164.all;entity MUX2_1 isport (BZclk,BCclk,Slec: in STD_LOGIC;Tena : out STD_LOGIC);end MUX2_1;architecture arch of MUX2_1 isbeginTena <= BZclk when Slec= '0' else BCclk ;end arch;(4)zkbtest单元:占空比测试信号发生器。

逻辑符号图如图8-5所示。

闸门时间信号contrl为低电平时,发清零信号后ZZQ和FZQ分别产生被测脉冲高、低电平等宽度的脉冲信号,仿真时序图如图8-6所示。

将ZZQ和FZQ信号经多路选择器分别接入两个UP_COUNT单元,并将UP_COUNT单元clk端均接入标准时钟信号,则这两路计数值即为占空比测量中的N1、N2值。

图8-5占空比测试信号发生器逻辑符号图图8-6占空比测试信号发生器仿真时序图4.CPLD功能仿真测频时,BZclk标准时钟输入5MHz脉冲信号;BCclk被测信号输入100kHz脉冲信号。

单片机向Slce发高电平选择信号后,再发清零负脉冲和计数控制正脉冲(脉宽15ms),时序图如图8-7所示。

图8-7 启动测频功能时序图CPLD芯片测频全过程时序图如图8-8所示。

启动测频后测频结束信号线CPEND变低电平,测频结束后变高电平,这一上升沿触发单片机读入测频结果。

在开启测频后,BZTC 出现一个进位信号,单片机内相应计数单元应加一。

读入测频结果时,单片机向CPLD芯片分别发三位二进制码,并如前所述分别读入测频结果。

图9-8 测频全过程时序图测频结束CPLD芯片数据输出时序图如图8-9所示。

N B=124F8H=75000,N C =5DCH=1500,标准频率信号f B、=5MHz,被测频率为100kHz。

与仿真设定值相同,证明CPLD芯片测频逻辑功能设计正确。

图8-9 数据输出时序图测占空比时,Slce、Contrl都必须为低电平,Clear负脉冲启动占空比测量,CPEND上升沿标志测量结束。

测量结束后,单片机向CPLD芯片分别发三位二进制码,并如前所述分别读入测频结果。

占空比测量仿真时序图如图8-10所示,被测脉冲高电平脉宽0.05ms,低电平脉宽0.1ms,其相对应的计数值N1=FAH=250,N2=1F4H=500,占空比q=1/3。

仿真测量结果与设定值相同,证明CPLD芯片占空比测量逻辑功能设计正确。

图8-10占空比测量仿真时序图5.CPLD引脚定义CPLD引脚定义如图8-11所示。

图8-11 CPLD引脚定义。

相关主题