📄 fine_detect.vhd
字号:
Library IEEE ;
USE IEEE.STD_LOGIC_1164.all;
USE IEEE.STD_LOGIC_ARITH.all;
ENTITY fine_detect IS
PORT(clk : IN STD_LOGIC;
gate : IN STD_LOGIC;
q : OUT STD_LOGIC_VECTOR(27 DOWNTO 0)); --计数结果输出
END fine_detect;
ARCHITECTURE rtl OF fine_detect IS
COMPONENT counter_bcd7
PORT(clr,ena,clk : IN STD_LOGIC; --clr计数器清零,en计数使能,clk时钟
q : OUT STD_LOGIC_VECTOR(27 DOWNTO 0);--计数器输出,该语句用于实际应用
--q : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);--计数器输出,该语句用于仿真
zeros : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
cout : OUT STD_LOGIC); --计数器进位
END COMPONENT;
SIGNAL low : STD_LOGIC; --常低电平
SIGNAL high : STD_LOGIC; --常高电平
SIGNAL q_sig : STD_LOGIC_VECTOR(27 DOWNTO 0); --7位BCD计数器输出
SIGNAL q_reg : STD_LOGIC_VECTOR(27 DOWNTO 0); --7位BCD计数器输出
SIGNAL q_reg2 : STD_LOGIC_VECTOR(27 DOWNTO 0); --7位BCD计数器输出
SIGNAL zeros_sig : STD_LOGIC_VECTOR(6 DOWNTO 0); --7位BCD计数器输出ZEROS
SIGNAL cout_sig : STD_LOGIC; --7位BCD计数器输出COUT
BEGIN
low <= '0';
high <= '1';
--7位BCD计数器
counter_control: counter_bcd7
PORT MAP (clr => gate,
ena => high,
clk => clk,
q => q_sig,
zeros => zeros_sig,
cout => cout_sig);
--两级寄存器锁存输出
PROCESS(clk)
BEGIN
IF(clk'event and clk='1')THEN
IF(gate = '0')THEN
--第一级寄存器锁存
q_reg <= q_sig;
ELSE
--第二级寄存器锁存
q_reg2 <= q_reg;
END IF;
END IF;
END PROCESS;
-- 输出
q <= q_reg2;
END rtl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -