• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

Quartus交通灯控制器VHDL代码

06/12 08:09
476
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-23122G6325aL.doc

共1个文件

名称:Quartus交通灯控制器VHDL代码

软件:Quartus

语言:VHDL

代码功能:交通灯

20230607220908.jpg

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

  • 2-23122G6325aL.doc
    下载

相关推荐