在闸门信号相同时,测频法的相对误差与被测信号的频率成反比。因此测频法适合于测量频率较高的信号。
·测周法
当被测信号频率较低时,为保证测量精度,常采用测周法。即先测出被测信号的周期,再换算成频率。测周法的实质是把被测信号作为闸门信号,在它的高电平的时间内,用一个标准频率的信号源作为计数器的时钟脉冲。若计数结果为N,标准信号频率为f1,则被测信号的周期为
T = T1·N
被测信号的频率为
f = 1/T1·N = f1/N
利用测周法所产生的最大绝对误差,显然也等于±1个标准信号周期。如果被测信号周期的真值为T真= T1·N,则T测= T1·(N±1)
σmax= (f测-f真)/ f真= T真/T测 – 1=±1/(N±1)
由上式可知,对于一定的被测信号,标准信号的频率越高,则N的值越大,因而相对误差越小。
·控制信号模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TESTCTL IS
PORT(CLKK: IN STD_LOGIC;
CNT_EN,RST_CNT,LOAD:OUT STD_LOGIC);
END TESTCTL;
ARCHITECTURE BEHAVIOR OF TESTCTL IS
SIGNAL div2clk:STD_LOGIC;
BEGIN
PROCESS(CLKK)
BEGIN
IF CLKK‘EVENT AND CLKK=’1‘ THEN
div2clk《=NOT div2clk;
END IF;
END PROCESS;
PROCESS(CLKK,div2clk)
BEGIN
IF (CLKK=’0‘ AND div2clk=’0‘) THEN
RST_CNT《=’1‘;
ELSE RST_CNT《=’0‘;
END IF;
END PROCESS;
LOAD《=NOT div2clk;CNT_EN《=div2clk;
END BEHAVIOR;
其仿真波形如下所示:
图5-3 控制模块信号仿真
·计数器模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT(CLK,RST,ENA:IN STD_LOGIC;
OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT10;
ARCHITECTURE JISHU OF CNT10 IS
SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(CLK,RST,ENA)
BEGIN
IF(RST=’1‘) THEN
CQI《=(OTHERS=》’0‘);
ELSIF(CLK’EVENT AND CLK=‘1’) THEN
IF(ENA=‘1’) THEN
IF(CQ) THEN
CQI《
COUT《=‘1’;
ELSE
CQI《=CQI+1;
COUT《=‘0’;
END IF;
END IF;
END IF;
END PROCESS;
OUTY《=CQI;
END JISHU;
其仿真如下所示:
图5-4 计数器仿真模块
·锁存器模块设计
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG4B IS
PORT(LOAD:IN STD_LOGIC;
DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END REG4B;
ARCHITECTURE XIANSHI OF REG4B IS
BEGIN
PROCESS(LOAD,DIN)
BEGIN
IF(LOAD‘EVENT AND LOAD=’1‘) THEN
DOUT《=DIN;
END IF;
END PROCESS;
END XIANSHI;
其仿真波形如下所示:
在闸门信号相同时,测频法的相对误差与被测信号的频率成反比。因此测频法适合于测量频率较高的信号。
·测周法
当被测信号频率较低时,为保证测量精度,常采用测周法。即先测出被测信号的周期,再换算成频率。测周法的实质是把被测信号作为闸门信号,在它的高电平的时间内,用一个标准频率的信号源作为计数器的时钟脉冲。若计数结果为N,标准信号频率为f1,则被测信号的周期为
T = T1·N
被测信号的频率为
f = 1/T1·N = f1/N
利用测周法所产生的最大绝对误差,显然也等于±1个标准信号周期。如果被测信号周期的真值为T真= T1·N,则T测= T1·(N±1)
σmax= (f测-f真)/ f真= T真/T测 – 1=±1/(N±1)
由上式可知,对于一定的被测信号,标准信号的频率越高,则N的值越大,因而相对误差越小。
·控制信号模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TESTCTL IS
PORT(CLKK: IN STD_LOGIC;
CNT_EN,RST_CNT,LOAD:OUT STD_LOGIC);
END TESTCTL;
ARCHITECTURE BEHAVIOR OF TESTCTL IS
SIGNAL div2clk:STD_LOGIC;
BEGIN
PROCESS(CLKK)
BEGIN
IF CLKK‘EVENT AND CLKK=’1‘ THEN
div2clk《=NOT div2clk;
END IF;
END PROCESS;
PROCESS(CLKK,div2clk)
BEGIN
IF (CLKK=’0‘ AND div2clk=’0‘) THEN
RST_CNT《=’1‘;
ELSE RST_CNT《=’0‘;
END IF;
END PROCESS;
LOAD《=NOT div2clk;CNT_EN《=div2clk;
END BEHAVIOR;
其仿真波形如下所示:
图5-3 控制模块信号仿真
·计数器模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT(CLK,RST,ENA:IN STD_LOGIC;
OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT10;
ARCHITECTURE JISHU OF CNT10 IS
SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(CLK,RST,ENA)
BEGIN
IF(RST=’1‘) THEN
CQI《=(OTHERS=》’0‘);
ELSIF(CLK’EVENT AND CLK=‘1’) THEN
IF(ENA=‘1’) THEN
IF(CQ) THEN
CQI《
COUT《=‘1’;
ELSE
CQI《=CQI+1;
COUT《=‘0’;
END IF;
END IF;
END IF;
END PROCESS;
OUTY《=CQI;
END JISHU;
其仿真如下所示:
图5-4 计数器仿真模块
·锁存器模块设计
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG4B IS
PORT(LOAD:IN STD_LOGIC;
DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END REG4B;
ARCHITECTURE XIANSHI OF REG4B IS
BEGIN
PROCESS(LOAD,DIN)
BEGIN
IF(LOAD‘EVENT AND LOAD=’1‘) THEN
DOUT《=DIN;
END IF;
END PROCESS;
END XIANSHI;
其仿真波形如下所示: