扫码加入

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

交通灯控制实验设计VHDL代码Quartus仿真

1小时前
48
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24112520115b46.doc

共1个文件

名称:交通灯控制实验设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

电路是常用交通灯控制的电路,用于控制某路口红绿黄三色信号灯,对于该电路的设计,需综合应用数字电路中组合逻辑与时序电路的基本知识,掌握各类触发器门电路的工作原理与使用要点,并分析数字电路在调试过程中出现的各种问题

不考虑主、次干道的通行优先情况,仅对两个道路的交汇路口进行红绿黄三色信号灯的控制电路设计,此时绿灯亮为T1,红灯亮为T2,黄灯亮为T3,只要亮灯时间一到,电路发出信号进行状态转换,这样的交通灯控制电路是目前应用较为普遍的电路

根据交通规则,即“红灯停,绿灯行,黄灯提醒”,交通灯的亮灭规律为:初始态是两个路口的红灯全亮。之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向开始通行,同时从12秒开始倒计时,倒计时到1秒时东西绿灯灭,黄灯开始亮,倒计时从3秒开始,倒计时到0秒后,东西路口红灯亮,倒计时从14秒开始,同时南北路口的绿灯亮,南北方向开始通行,同样从12秒开始倒计时,再切换到东西路口方向,以后周而复始的重复上述过程。

 

交通灯控制实验.jpg

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

 

演示视频:

设计文档:

1. 工程文件

Quartus9.0版本

 

2. 程序文件

 

3. 程序编译

 

4. 管脚分配

 

5. RTL图(模块连接图)

 

6. 仿真图

 

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
ENTITY Traffic_Light_Control IS
   PORT (
      clk     : IN STD_LOGIC;--48MHz
--      enable  : IN STD_LOGIC;--hold,按下高电平
      R1      : OUT STD_LOGIC;
      G1      : OUT STD_LOGIC;
      Y1      : OUT STD_LOGIC;
      R2      : OUT STD_LOGIC;
      G2      : OUT STD_LOGIC;
      Y2      : OUT STD_LOGIC;
dig:OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);
seg:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
   );
END Traffic_Light_Control;
ARCHITECTURE trans OF Traffic_Light_Control IS
COMPONENT CLOCK IS-- Divide 48MHz to 1Hz
GENERIC(D : INTEGER := 48000000);
   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);
dig:OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);
seg:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
      );
   END COMPONENT;
   
   COMPONENT SMG IS
      PORT (
         clk     : IN STD_LOGIC;
         R1      : IN STD_LOGIC;
         G1      : IN STD_LOGIC;
         Y1      : IN STD_LOGIC;
         R2      : IN STD_LOGIC;
         G2      : IN STD_LOGIC;
         Y2      : IN STD_LOGIC;
         G1_BCD  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         Y1_BCD  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         R1_BCD  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         G2_BCD  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         Y2_BCD  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         R2_BCD  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         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);
         SMG1    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         SMG2    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
      );
   END COMPONENT;
   
   COMPONENT RGY IS
      PORT (
         clk_1   : IN STD_LOGIC;
         enable  : 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;
         G1_BCD  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         Y1_BCD  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         R1_BCD  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         G2_BCD  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         Y2_BCD  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         R2_BCD  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
      );
   END COMPONENT;

 

 

  • 2-24112520115b46.doc
    下载

相关推荐