基于FPGA的交通灯控制器设计VHDL代码ISE 仿真

名称:基于FPGA的交通灯控制器设计VHDL代码ISE  仿真

软件:ISE

语言:VHDL

代码功能:

交通灯控制器设计要求

1.控制对象为单个十字路口的南北向交通灯,具体包含一个左转箭头灯(可以显示红色,绿色)和一个圆形指示灯(可以显示红色,绿色,以及黄色)

2.圆形指示灯:当接收到东西向左转箭头灯的左转完成信号(外界输入)后,经过3次黄灯闪烁(一秒闪烁一次)后由原本的红灯跳转为绿灯,绿灯维持24秒,经过3次黄灯闪烁跳转回红灯,并输出一个左转允许信号;

3.左转箭头灯:当接收到圆形指示灯的左转允许信号后,由红色跳转为绿色,维持15秒后跳转回红色,并输出一个左转完成信号;

4.设置一个交通管制按钮,该按钮按下后,所有信号灯亮起红色;

5.需要分别完成以下两个模块的VHDL设计并分别进行仿真测试:圆灯控制器和箭头灯控制器

6.按照合理逻辑将上述两个模块进行连接,必要时适当添加周边电路,完成整体的VHDL设计,再进行仿真测试


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


演示视频:

设计文档:

设计文档.doc

1. 工程文件

2. 程序文件

圆灯控制模块

箭头灯控制模块

整体模块

3. 程序编译

4. Testbench

5. 仿真图


部分代码展示:


LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--箭头灯控制模块 
ENTITY left_ctrl IS
   PORT (
      clk           : IN STD_LOGIC;--1Hz时钟
      reset         : IN STD_LOGIC;--复位
      critical_key  : IN STD_LOGIC;--交通管制按键
      round_left_done  : IN STD_LOGIC;--圆灯左转允许
      left_red         : OUT STD_LOGIC;--左转箭头红色
      left_green       : OUT STD_LOGIC;--左转箭头绿色
left_left_done   : OUT STD_LOGIC--南北方向输出左转完成信号
   );
END left_ctrl;
ARCHITECTURE behave OF left_ctrl IS
   TYPE State_type IS (s_red, s_green, s_critical);  -- 定义状态
   SIGNAL state : State_Type;    -- 创建信号
   SIGNAL green_cnt : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00000";
BEGIN
   PROCESS (clk, reset)
   BEGIN
      IF (reset = '1') THEN
         state <= s_red;--复位
      ELSIF (clk'EVENT AND clk = '1') THEN
         IF (critical_key = '1') THEN--交通管制按键
            state <= s_red;--红灯
         ELSE
            CASE state IS
               WHEN s_red =>--红灯状态
                  IF (round_left_done = '1') THEN--圆灯左转允许
                     state <= s_green;
                  ELSE
                     state <= s_red;
                  END IF;
               WHEN s_green =>--绿灯状态
                  IF (green_cnt >= "01110") THEN--绿灯计时
                     state <= s_red;
                  ELSE
                     state <= s_green;
                  END IF;
               WHEN OTHERS =>
                  state <= s_red;--红灯状态
            END CASE;
         END IF;
      END IF;
   END PROCESS;
   
   --绿灯状态计时
   PROCESS (clk, reset)
   BEGIN
      IF (reset = '1') THEN
         green_cnt <= "00000";
      ELSIF (clk'EVENT AND clk = '1') THEN
         IF (state = s_green) THEN
            green_cnt <= green_cnt + "00001";--绿灯计时
         ELSE
            green_cnt <= "00000";
         END IF;
      END IF;
   END PROCESS;
   
   --红灯状态
   PROCESS (state)
   BEGIN
      IF (state = s_red) THEN
         left_red <= '1';--输出左转红灯
      ELSE
         left_red <= '0';
      END IF;
   END PROCESS;
   
   --绿灯状态
   PROCESS (state)
   BEGIN
      IF (state = s_green) THEN
         left_green <= '1';--输出左转绿灯
      ELSE
         left_green <= '0';
      END IF;
   END PROCESS;
   
   ----南北方向输出左转完成信号
   PROCESS (clk, reset)
   BEGIN
      IF (reset = '1') THEN
         left_left_done <= '0';
      ELSIF (clk'EVENT AND clk = '1') THEN
         IF (state = s_green AND green_cnt >= "01110") THEN
            left_left_done <= '1';
         ELSE
            left_left_done <= '0';
         END IF;
      END IF;
   END PROCESS;   
END behave;




代码文件(付费下载):



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

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

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

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