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

📄 ctrl.vhd

📁 密码锁程序`第一次上传的`希望大家多多下载多多指点
💻 VHD
字号:
--CTRL.VHD
LIBRARY IEEE; 
USE IEEE.STD_LOGIC_1164.ALL; 
USE IEEE.STD_LOGIC_ARITH.ALL; 
USE IEEE.STD_LOGIC_UNSIGNED.ALL; 
ENTITY CTRL IS
PORT (  DATA_N: IN STD_LOGIC_VECTOR(3 DOWNTO 0);      --数字输入
        DATA_F: IN STD_LOGIC_VECTOR(3 DOWNTO 0);      --功能输入
        FLAG_N: IN STD_LOGIC;                         --数字输入标志
        FLAG_F: IN STD_LOGIC;                         --功能输入标志
        CLK: IN STD_LOGIC;  
        ENLOCK: OUT STD_LOGIC;         --1: LOCK, 0: UNLOCK
        DATA_BCD: OUT STD_LOGIC_VECTOR (7 DOWNTO 0));   --译码输出
END ENTITY CTRL ; 

ARCHITECTURE ART OF CTRL IS
    SIGNAL ACC, REG: STD_LOGIC_VECTOR (7 DOWNTO 0); 
                   --ACC用于暂存键盘输入的信息,REG用于存储输入的密码
    SIGNAL NC: STD_LOGIC_VECTOR (2 DOWNTO 0); 
    SIGNAL RR2, CLR, BB, QA, QB: STD_LOGIC; 
    SIGNAL R1, R0: STD_LOGIC;
    BEGIN
    --寄存器清零信号的产生进程
PROCESS(CLK)
      BEGIN
      IF CLK'EVENT AND CLK='1' THEN
         R1<=R0; R0<=FLAG_F; 
      END IF; 
      RR2<=R1 AND NOT R0; 
      CLR<=RR2; 
    END PROCESS; 
--按键输入数据的存储、清零进程
    KEYIN_PROCESS : BLOCK IS
	  SIGNAL RST, D0, D1: STD_LOGIC ; 	
      BEGIN 
       RST  <= RR2; 
	  PROCESS(FLAG_N) IS
	    BEGIN
		IF RST = '1' THEN 
		  ACC <= "00000000" ;   --CLEAR INPUT
		  NC <= "000" ; 
          ELSE
          IF  FLAG_N'EVENT AND FLAG_N = '1'  THEN
             IF NC < 4 THEN
			  ACC <= ACC(3 DOWNTO 0) & DATA_N ; 
              NC <= NC + 1 ; 
            END IF; 
		  END IF ; 
	    END IF ; 
	 END PROCESS ; 
   END BLOCK KEYIN_PROCESS ; 
--上锁/开锁控制进程
  LOCK_PROCESS : BLOCK IS
    BEGIN
	PROCESS(CLK, DATA_F) IS
	  BEGIN
	  IF (CLK'EVENT AND CLK = '1') THEN
		IF NC = 4  THEN
		  IF DATA_F(2) = '1' THEN  	--上锁控制信号有效 
			REG <= ACC ;  		--密码存储
             QA <= '1' ;  QB <= '0'; 
		  ELSIF DATA_F(0) = '1' THEN	--开锁控制信号有效
			IF  REG = ACC THEN  	--密码核对
			  QA<= '0';  QB <= '1' ;  
			END IF ; 
		  ELSIF  ACC = "10001000" THEN    --设置88为万用密码
    		QA <= '0' ;  QB<= '1'; 
		  END IF ; 
		END IF; 
	  END IF ; 
END PROCESS ; 
  END BLOCK LOCK_PROCESS ; 
  --输出上锁/开锁控制信号
  ENLOCK <= QA AND NOT QB ; 
  --输出显示信息
  DATA_BCD<= ACC ; 
END ARCHITECTURE ART; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -