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

十字交叉路口交通灯设计VHDL代码Quartus DE2-115开发板

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

2-24101GS3333Z.doc

共1个文件

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

软件:Quartus

语言:VHDL

代码功能:

1. 基本要求

有一条主干道和一条支干道的汇合点形成十字交叉路口,主干道为南北向,支干道为东西向。为确保车辆安全,迅速地通行,在交叉道口的每个入口处设置了红,绿,黄3色信号灯。

(1)主干道绿灯亮时,支干道红灯亮,反之亦然,两者交替允许通行,主干道每次放行55s,支干道每次放行25。每次由绿灯变为红灯的过程中,黄灯亮0s作为过渡;

(2)能实现正常的倒计时显示功能;

(3)能实现总体清零功能:计数器由初始状态开始计数,对应状态的指示;

(4)能实现特殊状态的功能显示:进入特殊状态时,东西、南北路口均显红灯状态;

2. 发挥部分

(1)增加左转允许控制功能;

(2)选择学校附近一个实际路口,按实际数据设计出该路口交通灯控制器

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

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

DE2-115开发板.png

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 管脚分配

4. 程序编译

5. RTL图

6. 仿真图

整体仿真图

分频模块仿真图

交通灯控制模块

显示模块

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
--交通灯
ENTITY Traffic_Light_Control IS
   PORT (
      clk     : IN STD_LOGIC;--50Mhz
reset_n : IN STD_LOGIC;--复位
control : IN STD_LOGIC;--特殊功能
      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;
reset_n : IN STD_LOGIC;--复位
control : 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;--主路黄灯
   R2 <= R2_led;--支路红灯
   G2 <= G2_led;--支路绿灯
   Y2 <= Y2_led;--支路黄灯

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1218

  • 2-24101GS3333Z.doc
    下载

相关推荐