⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fine_detect.vhd

📁 这是一些经典的vhdl example
💻 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 + -