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

📄 controller.vhd

📁 用VHDL做的交通灯设计
💻 VHD
字号:
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY controller IS
	PORT (Hold, Reset, Clk 	: IN 	  STD_LOGIC;			
		  Num 				: IN  Integer Range 0 To 49;
		  GA,GB,YA,YB,RA,RB :out      STD_LOGIC); 
END controller;
ARCHITECTURE controller_architecture OF controller IS
TYPE STATE_TYPE IS(S0,S1,S2,S3);
SIGNAL State:STATE_TYPE;
BEGIN
Change_State:  		-- 状态机状态转换进程
PROCESS (reset, clk, state, num)	
BEGIN	
	  IF (reset='1')  THEN  state <= S0; 
	  ELSIF  ( falling_edge(clk) ) THEN	--计数器是上升沿改变计数值,此处用下降沿读取
   	CASE  state   IS
		   WHEN   S0  =>  IF  (num=20)   THEN   state <=S1;   END IF;			  	   WHEN   S1  =>  IF  (num=25)   THEN   state <=S2;   END IF;	
	 	   WHEN   S2  =>  IF  (num=45)   THEN   state <=S3;   END IF;	
	  	   WHEN   S3  =>  IF  (num= 0 )   THEN   state <=S0;   END IF;	
   	END CASE;	
	  END IF;
END PROCESS;
Output_Process:		-- 输出值进程 
Process (hold, state)
BEGIN
	If  (hold='1')  Then		-- 出现特殊情况,亮红灯
		RA <= '1'; GA <= '0'; YA <= '0';    
		RB <= '1'; GB <= '0'; YB <= '0'; 			
	Else
		CASE state Is 
		  When  S0	=>	GA <= '1';   YA <= '0';   RA <= '0';
						RB <= '1';   GB <= '0';   YB <= '0';
		  When  S1	=>	GA <= '0';   YA <= '1';   RA <= '0'; 	
						RB <= '1';   GB <= '0';   YB <= '0';
		  When  S2	=>	GA <= '0';   YA <= '0';   RA <= '1'; 
						RB <= '0';   GB <= '1';   YB <= '0';
		  When  S3	=>	GA <= '0';   YA <= '0';   RA <= '1';
		 				RB <= '0';   GB <= '0';   YB <= '1';
		END CASE;
	END IF;
END  Process;

END controller_architecture;

⌨️ 快捷键说明

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