十字路口的交通灯控制电路设计VHDL代码Quartus DE2-115开发板

名称:十字路口的交通灯控制电路设计VHDL代码Quartus  DE2-115开发板

软件:Quartus

语言:VHDL

代码功能:

十字路口的交通灯控制电路

要求:(1)设计一个十字路口的交通灯控制电路,每条路配有红、黄、绿交通信号灯,通过电路对十字路口的两组交通灯的状态实现自动循环控制;(2)实现东西车道和南北车道上的车辆交替运行,每次通行时间为20秒;(3)要求黄灯亮3秒后,红灯才能转为绿灯,黄灯亮时要每秒闪亮一次;


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在DE2-115开发板验证,DE2-115开发板如下,其他开发板可以修改管脚适配:DE2-115开发板.png

演示视频:

设计文档:

设计文档.doc

工程文件


程序文件





管脚分配


程序编译


RTL图


仿真图

交通灯控制模块仿真



显示模块仿真


部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
ENTITY Traffic_Light_Control IS
   PORT (
      clk     : IN STD_LOGIC;--50Mhz
      R1      : OUT STD_LOGIC;--高电平亮,主路红灯
      G1      : OUT STD_LOGIC;--高电平亮,主路绿灯
      Y1      : OUT STD_LOGIC;--高电平亮,主路黄灯
      R2      : OUT STD_LOGIC;--高电平亮,支路红灯
      G2      : OUT STD_LOGIC;--高电平亮,支路绿灯
      Y2      : OUT STD_LOGIC;--高电平亮,支路黄灯
      HEX0    : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管0
      HEX1    : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管1
      HEX2    : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管2
      HEX3    : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)--数码管3
   );
END Traffic_Light_Control;
ARCHITECTURE behave OF Traffic_Light_Control IS
--分频模块
COMPONENT CLOCK IS-- Divide 50MHz to 1Hz
GENERIC(D : INTEGER := 50000000);--仿真时改小为500加快仿真速度,实际上板验证时改为50000000
   PORT(CLK: IN STD_LOGIC;
         DAV: OUT STD_LOGIC);
   END COMPONENT;
--显示模块
   COMPONENT HEX IS
      PORT (
         clk     : IN STD_LOGIC;
         SMG_1   : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         SMG_2   : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX0    : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
         HEX1    : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
         HEX2    : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
         HEX3    : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)
      );
   END COMPONENT;
   
--交通灯控制模块
   COMPONENT RGY IS
      PORT (
         clk_1   : IN STD_LOGIC;
clk   : IN STD_LOGIC;
         G1_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         Y1_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         G2_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         Y2_time : IN STD_LOGIC_VECTOR(7 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;
      SMG1     : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--输出数码管显示数
      SMG2     : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--输出数码管显示数
      );
   END COMPONENT;
   
   
   SIGNAL clk_1      : STD_LOGIC;
   SIGNAL SMG1       : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL SMG2       : STD_LOGIC_VECTOR(7 DOWNTO 0);
   
   SIGNAL R1_led     : STD_LOGIC;
   SIGNAL G1_led     : STD_LOGIC;
   SIGNAL Y1_led     : STD_LOGIC;
   
   SIGNAL R2_led     : STD_LOGIC;
   SIGNAL G2_led     : STD_LOGIC;
   SIGNAL Y2_led     : STD_LOGIC;
   
   SIGNAL G1_time    : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL Y1_time    : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL G2_time    : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL Y2_time    : STD_LOGIC_VECTOR(7 DOWNTO 0);
   
   SIGNAL HEX0_SIG : STD_LOGIC_VECTOR(6 DOWNTO 0);
   SIGNAL HEX1_SIG : STD_LOGIC_VECTOR(6 DOWNTO 0);
   SIGNAL HEX2_SIG : STD_LOGIC_VECTOR(6 DOWNTO 0);
   SIGNAL HEX3_SIG : STD_LOGIC_VECTOR(6 DOWNTO 0);
BEGIN
   HEX0 <= HEX0_SIG;
   HEX1 <= HEX1_SIG;
   HEX2 <= HEX2_SIG;
   HEX3 <= HEX3_SIG;
   R1 <= R1_led;--主路红灯
   G1 <= G1_led;--主路绿灯
   Y1 <= Y1_led and clk_1;--主路黄灯
   R2 <= R2_led;--支路红灯
   G2 <= G2_led;--支路绿灯
   Y2 <= Y2_led and clk_1;--支路黄灯
   
--分频到1hz   
   U_CLOCK : CLOCK
      PORT MAP (
         clk  => clk,
         dav  => clk_1
      );
--设置时间,可自行修改时间,
--主路红灯时间等于支路绿灯加黄灯
--支路红灯时间等于主路绿灯加黄灯
   G1_time <= "00010100";--主路绿灯20s
   Y1_time <= "00000011";--主路黄灯3s
   G2_time <= "00010100";--支路绿灯20s
   Y2_time <= "00000011";--支路黄灯3s

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 十字路口的交通灯控制电路设计VHDL代码Quartus DE2-115开发板

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员