频率计又称为频率计数器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。

工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T。

其中f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。

计数器所记录的结果,就是被测信号的频率。

如在1s内记录1000个脉冲,则被测信号的频率为1000HZ。

控制电路需要控制几个模块。

包括计数电路,锁存电路,和译码显示电路。

通过产生控制信号控制所要控制的模块,同时会产生清零信号和锁存信号,使显示器显示的测量结果稳定.辑控制电路的作用主要是控制主控门的开启和关闭,同时也控制整机逻辑关系。

原理框图:
逻辑控制电路 时基电路
数码显示 译码器 锁存器 计数器 门闸电路
1. 时基产生与测频时序控制电路模块:LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CTRL IS
PORT (CLK:IN STD_LOGIC;--系统时钟LOCK:OUT STD_LOGIC;--锁存信号
EN:OUT STD_LOGIC;--计数允许信号
CLR:OUT STD_LOGIC);--清零信号
END ENTITY;
ARCHITECTURE ART OF CTRL IS
SIGNAL Q:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENT AND CLK='1') THEN
IF Q="1111" THEN
Q<="0000";
ELSE
Q<=Q+1;
END IF;
END IF;
EN<=NOT Q(3);
LOCK<=Q(3) AND NOT(Q(2)) AND Q(1);
CLR<=Q(3) AND Q(2) AND NOT(Q(1));
END PROCESS;
END ART;
:每8个系统时钟使能端EN就进行一次高低低平的转换,也就在硬件测试时,将基准信号放在8Hz上.
2. 计数电路模块
(1)十进制加法计数器模块CB10
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CB10 IS
PORT(CLK,EN,CLR:IN STD_LOGIC;
COUNT10:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));--计数器输出信号
END CB10;
ARCHITECTURE ART OF CB10 IS
BEGIN
PROCESS(CLK,CLR,EN)
BEGIN
IF CLR='1' THEN
COUNT10<="0000";
ELSIF RISING_EDGE(CLK) THEN
IF(EN='1') THEN
IF COUNT10="1001" THEN
COUNT10<="0000";
ELSE
COUNT10<=COUNT10+'1';
END IF;
END IF;
END IF;
END PROCESS;
END ART;
用4个十进制加法计数器来显示待测脉冲信号的频率,频率所测结果用十进制表示,以十进制开始计数。

(2)待测信号脉冲计数器模块COUNT
①程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY COUNT IS
PORT(CLK:IN STD_LOGIC;--计数时时钟信号
EN:IN STD_LOGIC;--计数选通控制信号
CLR:IN STD_LOGIC;--计数器清零信号
QA,QB,QC,QD:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));--结果输出信号
END COUNT;
ARCHITECTURE ART OF COUNT IS
COMPONENT CB10
PORT(CLK,EN,CLR:IN STD_LOGIC;
COUNT10:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));
END COMPONENT;
SIGNAL CLK2:STD_LOGIC;
SIGNAL CLK3:STD_LOGIC;
SIGNAL CLK4:STD_LOGIC;
BEGIN
CLK2<=NOT QA(3);
CLK3<=NOT QB(3);
CLK4<=NOT QC(3);
U1:CB10 PORT MAP(CLK,EN,CLK,QA);
U2:CB10 PORT MAP(CLK,EN,CLK,QB);
U3:CB10 PORT MAP(CLK,EN,CLK,QC);
U4:CB10 PORT MAP(CLK,EN,CLK,QD);
END ART;
EN为计数选通控制信号,CLR为计数器清零信号。

在计数器清零信号CLR清零后,当计数选通控制信号EN有效时,开始对待测信号进计数。

3.锁存与译码显示控制电路模块
(1)译码显示电路模块
①程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY BCD7 IS
PORT(BCD:IN STD_LOGIC_VECTOR(3 DOWNTO
0);--BCD输入信号
LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)):--七段译码输出信号
END BCD7;
ARCHITECTURE ART OF BCD7 IS
BEGIN
LED<="0111111" WHEN BCD="0000" ELSE
"0000110" WHEN BCD="0001" ELSE
"1011011" WHEN BCD="0010" ELSE
"1001111" WHEN BCD="0011" ELSE
"1100110" WHEN BCD="0100" ELSE
"1101101" WHEN BCD="0101" ELSE
"1111101" WHEN BCD="0110" ELSE
"0000111" WHEN BCD="0111" ELSE
"1111111" WHEN BCD="1000" ELSE
"1101111" WHEN BCD="1001" ELSE
"1101111";
END
用BCD数作输入信号,再用七段译码输出信号,就是将BCD码转换成十进制数用七段码显示。

(2)锁存与译码显示控制模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY LOCK IS
PORT(LOCK:IN STD_LOGIC;
QA,QB,QC,QD:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
LEDA,LEDB,LEDC,LEDD:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END LOCK;
ARCHITECTURE ART OF LOCK IS
SIGNAL QAL,QBL,QCL,QDL:STD_LOGIC_VECTOR(3 DOWNTO 0);
COMPONENT BCD7
PORT(BCD:IN STD-LOGIC_VECTOR(3 DOWNTO 0);
LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END COMPONENT;
BEGIN
PROCESS(LOCK)
BEGIN
IF(LOCK'EVNET AND LCOK='1') THEN
QAL<=QA;
QBL<=QB;
QCL<=QC;
QDL<=QD;
END IF;
END PROCESS;
U0:BCD7 PORT MAP(QAL,LEDA);
U1:BCD7 PORT MAP(QBL,LEDB);
U2:BCD7 PORT MAP(QCL,LEDC);
U3:BCD7 PORT MAP(QDL,LEDD);
END ART;
主要是用于实现记忆显示,在实验过程中不刷新新的数据,将四位的BCD码进行锁存,直到测量结束,锁存显示结果。

相关文档
最新文档