软件:Quartus
语言:VHDL
代码功能:交通灯
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
Bdf
Vhd
3. 程序编译
4. RTL图
5. 仿真图
图中,设置d1为15,d2为10,d3为5.即路口1绿灯为15秒,黄灯为5秒;路口2绿灯为10秒,黄灯为5秒。
图中R1,G1,Y1分别表示路口1的红、绿、黄灯。
图中R2,G2,Y2分别表示路口2的红、绿、黄灯。
可以看出,实现了路口1绿灯为15秒,黄灯为5秒;路口2绿灯为10秒,黄灯为5秒的功能
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --LED控制模块 ENTITY RGY_led IS PORT ( clk : IN STD_LOGIC; state : IN STD_LOGIC_VECTOR(2 DOWNTO 0);--状态机 R1 : OUT STD_LOGIC;--红绿灯信号 G1 : OUT STD_LOGIC;--红绿灯信号 Y1 : OUT STD_LOGIC;--红绿灯信号 R2 : OUT STD_LOGIC;--红绿灯信号 G2 : OUT STD_LOGIC;--红绿灯信号 Y2 : OUT STD_LOGIC--红绿灯信号 ); END RGY_led; ARCHITECTURE behave OF RGY_led IS SIGNAL R1_temp : STD_LOGIC:='0'; SIGNAL G1_temp : STD_LOGIC:='0'; SIGNAL Y1_temp : STD_LOGIC:='0'; SIGNAL R2_temp : STD_LOGIC:='0'; SIGNAL G2_temp : STD_LOGIC:='0'; SIGNAL Y2_temp : STD_LOGIC:='0'; BEGIN R1 <= R1_temp;--红 G1 <= G1_temp;--绿 Y1 <= Y1_temp;--黄 R2 <= R2_temp;--红 G2 <= G2_temp;--绿 Y2 <= Y2_temp;--黄 --控制东西方向交通灯 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN IF (state = "001") THEN G1_temp <= '1'; ELSE G1_temp <= '0'; END IF; IF (state = "010") THEN Y1_temp <= '1'; ELSE Y1_temp <= '0'; END IF; IF (state = "011" OR state = "100") THEN R1_temp <= '1'; ELSE R1_temp <= '0'; END IF; END IF; END PROCESS; --控制南北方向交通灯 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN IF (state = "011") THEN G2_temp <= '1'; ELSE G2_temp <= '0'; END IF; IF (state = "100" ) THEN Y2_temp <= '1'; ELSE Y2_temp <= '0'; END IF; IF (state = "001" OR state = "010") THEN R2_temp <= '1'; ELSE R2_temp <= '0'; END IF; END IF; END PROCESS; END behave;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=430
阅读全文
476