EDA课程设计报告(交通信号控制器的VHDL的设计)

时间:2024.4.13

交通信号控制器的VHDL的设计

一、设计任务

模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。能达到的要求:

(1)  交通灯从绿变红时,有4秒黄灯亮的间隔时间;

(2)  交通灯红变绿是直接进行的,没有间隔时间;

(3)  主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;

(4)  在任意时间,显示每个状态到该状态结束所需的时间。

EDA课程设计报告(交通信号控制器的VHDL的设计)

图1 路口交通管理示意图

表1 交通信号灯的4种状态

       二、设计原理

      

1、设计目的:

学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制

2、设计说明

(1)第一模块:clk时钟秒脉冲发生电路

在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。

模块说明:

系统输入信号:

      Clk:  由外接信号发生器提供256的时钟信号;

  系统输出信号: full:产生每秒一个脉冲的信号;

(2)第二模块:计数秒数选择电路

计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。

模块说明:

系统输入:full:  接收由clk电路的提供的1hz的时钟脉冲信号;

系统输出信号: tm: 产生显示电路状态转换信号

               tl:倒计数值 秒数个位变化控制信号

               th:倒计数值 秒数十位变化控制信号

(3)第三模块:红绿灯状态转换电路

 本电路负责红绿灯的转换。

模块说明:

系统输入信号:full: 接收由clk电路的提供的1hz的时钟脉冲信号;

              tm: 接收计数秒数选择电路状态转换信号;

系统输出信号: comb_out:    负责红绿灯的状态显示。

(4)第四模块:时间显示电路

本电路负责红绿灯的计数时间的显示。

模块说明:

系统输入信号:tl:倒计数值 秒数个位变化控制信号;

              th:倒计数值 秒数十位变化控制信号;

系统输出信号: led7s1:    负责红绿灯的显示秒数个位。

               led7s2:  负责红绿灯的显示秒数十位。

三、设计方案

EDA课程设计报告(交通信号控制器的VHDL的设计)

                    图2 交通信号灯控制器的原理框图

采用VHDL语言输入的方式实现交通信号灯控制器

EDA课程设计报告(交通信号控制器的VHDL的设计)

                     图3 交通信号灯控制器程序原理框图

    该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。

四、VHDL程序:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY traffic IS

  PORT (clk:in std_logic;

      led7s1:out std_logic_vector(6 downto 0);

      led7s2:out std_logic_vector(6 downto 0);

      comb_out:out std_logic_vector(5 downto 0));

     END;

ARCHITECTURE one OF traffic IS

TYPE dm IS (s0,s1,s2,s3);

      SIgnal current_state,next_state:dm;

      SIGNAL FULL : STD_LOGIC;

      SIGNAL  tl :STD_LOGIC_VECTOR(6 DOWNTO 0);

      SIGNAL  th:STD_LOGIC_VECTOR(1 DOWNTO 0);

      SIGNAL   tm :STD_LOGIC_VECTOR(6 DOWNTO 0);

      SIGNAL  TIME  :STD_LOGIC_VECTOR(6 DOWNTO 0);

BEGIN

  P_REG: PROCESS(CLK)

   VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0);

   BEGIN

     IF CLK'EVENT AND CLK='1' THEN

    IF CNT8 = "11111111" THEN

    CNT8:="01111111";

    FULL<='1';

      ELSE CNT8 := CNT8+1;

       FULL <= '0';

    END IF;     END IF;

  END PROCESS P_REG;

PROCESS(full)

BEGIN

IF full'EVENT AND full='1' THEN

    IF TIME<"1000011" THEN

       TIME<=TIME+1;

   ELSe TIME <="0000000";

   END IF;

END IF;

END PROCESS;

 REG:process( full,current_state)

    BEGIN

     IF full='1' AND full'EVENT THEN

        current_state<=next_state;

     END IF;

   END process;

    COM:process(current_state, time)

  begin

case current_state is

when s0=>comb_out<="001100";tm<=39-time;

  if time=39  then  next_state<=s1;

     else next_state<=s0;

   end if;

when s1=>comb_out<="010100";tm<=43-time;

  if time=43 then  next_state<=s2;

     else next_state<=s1;

   end if;

when s2=>comb_out<="100010";tm<=63-time;

  if time=63 then  next_state<=s3;

     else next_state<=s2;

   end if;

when s3=>comb_out<="100001";tm<=67-time;

  if time=67 then  next_state<=s0;

     else next_state<=s3;

   end if;

  end case;

end process;

PROCESS(tm)

BEGIN

IF tm>=30 THEN th<="11";tl<=tm-30;

ELSIF tm>=20 THEN th<="10";tl<=tm-20;

ELSIF tm>=10 THEN th<="01";tl<=tm-10;

ELSE  th<="00";tl<=tm;

END IF;

END PROCESS;

process(th,tl)

  begin

case th is

      when"00"=>led7s1<="0111111";

      when"01"=>led7s1<="0000110";

      when"10"=>led7s1<="1011011";

      when"11"=>led7s1<="1001111";

      when others=>null;

      end case;

case tl is

      when "0000000"=>led7s2<="0111111";

      when"0000001"=>led7s2<="0000110";

      when "0000010"=>led7s2<="1011011";

      when"0000011"=>led7s2<="1001111";

      when"0000100"=>led7s2<="1100110";

      when "0000101"=>led7s2<="1101101";

      when "0000110"=>led7s2<="1111101";

      when"0000111"=>led7s2<="0000111";

       when "0001000"=>led7s2<="1111111";

      when "0001001"=>led7s2<="1101111";

      when others=>null;

    end case;

 end process;

end;

五、仿真结果(如下图)

引脚设置

选择的引脚锁定方法如下图所示。将未使用的管脚设置为三态输入

调试过程中,由于在实验室时间仓促,未能达到理想效果,程序有待改进。

七、实验心得体会

    通过这次课程设计,我进一步加深了对电子设计自动化的了解。并进一步熟练了对QuartusII软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。通过与同学探讨,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

更多相关推荐:
交通信号灯课程设计报告

单片机课程设计报告题目:基于单片机的交通灯设计专业:电子科学与技术班级:20##级电科微电班学号:姓名:完成时间:20##年12月30日指导教师:摘要:近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带…

交通信号灯课程设计报告

20xx级通信工程数字电路课程设计报告设计题目姓名及刘俊君20xx0343019交通灯控制电路周啸20xx0343061学号符勇武20xx0343054学院专业班级指导教师工程技术学院通信工程20xx级4班马耀...

交通信号灯课设报告

电子技术课程设计说明书电子技术课程设计说明书题目:交通信号灯控制器(A)学生姓名:学号:院(系):专业:指导教师:20##年12月6日目录1选题背景(大标题段前段后0.5行)...21.1指导思想(小标题段前段…

交通灯课程设计报告6

电子技术课程设计报告目录第一章系统概述311系统概述312交通灯逻辑分析313总体设计方案3第二章单元电路设计与分析621秒脉冲信号发生器的设计622定时器的设计723控制器的设计824显示电路的设计11第三章...

微机接口交通信号灯课程设计报告

郑州大学信息工程学院课程设计报告交通灯模拟系统序言红绿灯(交通信号灯)系以规定之时间上交互更迭之光色讯号,设置于交岔路口或其他特殊地点,用以将道路通行权指定给车辆驾驶人与行人,管制其行止及转向之交通管制设施。为…

交通灯课程设计报告

交通灯课程设计报告1设计思路目录1引言2设计任务与要求3总体方案设计2设计原理及参考框图3交通灯控制时序图4系统硬件设计部分1时间秒脉冲发生器260s30s5s计数器及定时电路3主控电路4红黄绿交通灯控制电路5...

交通灯课程设计报告

桂林航院电子工程系单片机课程设计与制作说明书设计题目:智能交通灯控制专业年级:10级电子信息工程技术(1)班学号:**姓名:**同组姓名:**指导教师:**单片机技术课程设计与制作成绩评定表设计题目:智能交通灯…

微机原理与接口技术课程设计实验报告-交通灯控制系统

《微机原理与接口技术》课程设计报告交通灯控制系统班级:学号:姓名:指导教师:成绩:xxxx年x月x日目录1、课程设计的目的和要求32、系统的主要功能、作用及主要性能指标13、总体设计13.1基本工作原理13.2…

EDA课程设计报告_交通灯控制与显示电路

EDA课程设计报告班级姓名组成员指导教师XXX08电信1班XXXXXX报告目录1EDA技术综述2设计实践报告1课题名称2内容摘要3设计内容及要求4设计方案及框图5仿真电路设计6仿真调试过程及结果记录7相关元器件...

哈夫曼编码与多叉路口交通灯管理课程设计报告

目录一哈夫曼编码译码器21需求分析22详细设计221哈夫曼树节点的数据类型定义为222所实现的功能函数如下223流程图33调试分析34用户手册35测试结果46附录4二多叉路口交通灯管理111需求分析112详细设...

单片机交通灯课程设计报告(含电路图,源程序)

摘要31引言42总体设计方案521设计思路5211设计目的5212设计任务和内容6213方案比较设计与论证6214芯片简介922设计方框图153设计原理分析16313233交通灯显示时序的理论分析与计算16交通...

单片机交通灯课程设计报告

单片机系统课程设计报告专业学生姓名闫乐于绿淼学号20xx02332320xx023328指导教师赵凤强付立军完成日期20xx年7月7日1目录1设计任务和性能指标111设计任务112性能指标12设计方案221任务...

交通信号灯课程设计报告(31篇)