顶层文件
包含四种模块:Tctl,reg16,scan_led和四个cnt10,如图:
1.端口说明
F1Hz:给Tctl模块提供1Hz的频率输入
Fin:被测频率输入
scan_led:给scan_led模块提供扫描频率输入,建议使用20hz
bt[1…0]:片选信号输出
sg[6…0]:译码信号输出
cout:进位信号
Tctl模块说明
根据频率的定义和测量的基本的原理,测定信号的频率必须有一个脉宽为1s的对输入信号脉冲计数允许的信号:1s计数结束或,计数值锁入锁存器的锁存信号和为下一测频计数周期做准备的计数器清零信号。这3个信号可以由一个测频控制信号发生器Tctl产生。
Tctl设计:计数信号使能信号en能产生一个1s脉宽的周期信号,并对频率器的每个计数器cnt10的en使能端进行同步控制。
Tctl控制模块VHDL源代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity Tctl is
port( clkk:in std_logic;
en,rst,load:out std_logic);
end;
architecture behav of Tctl 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<='1';
else
rst