My title page contents

交通灯控制器的设计VHDL代码Quartus 实验箱

名称:交通灯控制器的设计VHDL代码Quartus  实验箱

软件:Quartus

语言:VHDL

代码功能:

交通灯控制器的设计

1.系统设计任务及要求

(1)能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态。用两组红、黄、绿灯表示分别作为东西、南北两个方向的红、黄、绿灯。变化规律为:东西绿灯亮,南北红灯→东西黄灯亮,南北红灯亮→东西红灯亮,南北绿灯亮→东西红灯亮,南北黄灯亮→东西绿灯亮,南北红灯亮……,这样依次循环    (2)用两组数码管作为东西、南北方向的倒计时显示,时间可以预置,如时间为红灯35s、绿灯32s、黄灯3s。

(3)使用一个按键能实现特殊状态的功能:计数器停止计数并保持在原来的状态;东西、南北、路口均显示红灯状态;特殊状态解除后能继续计数。

(4)要求交通灯控制器具有复位功能,在复位信号的控制下能够实现交通灯的复位,计数器由初始状态计数,对应状态的指示灯亮。    

(5)用VHDL语言设计符合上述功能要求的交通灯控制器,并用层次化设计方法设计该电路。    

(6)控制器、置数器的功能用功能仿真的方法验证,可通过有关波形确认电路设计是否正确

(7)完成电路全部设计后,下载到实验开发系统验证设计的正确性。

要求 (3).jpg


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

本代码已在实验箱验证,实验箱如下,其他开发板可以修改管脚适配:实验箱 (1).jpg

演示视频:

设计文档:

设计文档.doc

1、工程文件


2、程序文件



3、程序编译


4、管脚分配

5、RTL图

6、仿真图

整体仿真图

分频模块

控制模块

显示模块


部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
--交通灯
ENTITY Traffic_Light_Control IS
   PORT (
      clk     : IN STD_LOGIC;--50Mhz
reset_n : IN STD_LOGIC;--复位--K2
control : IN STD_LOGIC;--特殊功能--K1
      R1      : OUT STD_LOGIC;--高电平亮,主路红灯
      G1      : OUT STD_LOGIC;--高电平亮,主路绿灯
      Y1      : OUT STD_LOGIC;--高电平亮,主路黄灯
      R2      : OUT STD_LOGIC;--高电平亮,支路红灯
      G2      : OUT STD_LOGIC;--高电平亮,支路绿灯
      Y2      : OUT STD_LOGIC;--高电平亮,支路黄灯
      bit_select     : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管位选
      seg_select     : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选
   );
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);
      bit_select     : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管位选
      seg_select     : OUT STD_LOGIC_VECTOR(7 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);
BEGIN
   R1 <= R1_led;--主路红灯
   G1 <= G1_led;--主路绿灯
   Y1 <= Y1_led;--主路黄灯
   R2 <= R2_led;--支路红灯
   G2 <= G2_led;--支路绿灯
   Y2  clk,
         dav  => clk_1
      );
--主、支干道均有车时,两者交替允许通行,
--主干道每次放行60秒,支干道每次放行45秒,
--设立60秒、45秒计时、显示电路
--设置时间,可自行修改时间,
--主路红灯时间等于支路绿灯加黄灯
--支路红灯时间等于主路绿灯加黄灯
   G1_time <= "00100000";--主路绿灯32s
   Y1_time <= "00000011";--主路黄灯3s
   G2_time <= "00100000";--支路绿灯32s
   Y2_time <= "00000011";--支路黄灯3s

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 交通灯控制器的设计VHDL代码Quartus 实验箱

发表评论

加载中~

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

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