当前位置:文档之家› EDA交通灯实验报告

EDA交通灯实验报告

EDA实验报告题目:交通灯设计学院:电子工程学院专业:电子信息工程*者:*** 14020120007 *师:***EDA实验报告:交通灯设计一、设计任务及要求:设计任务:模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。

要求:(1)交通灯从绿变红时,有5秒黄灯亮的间隔时间;(2)交通灯红变绿是直接进行的,没有间隔时间;(3)东西主干道上的绿灯时间为25秒,南北支干道的绿灯时间为25秒;(4)在任意时间,显示每个状态到该状态结束所需的时间。

路口示意图如下:图 1 路口交通示意图A B C东西主干道交通灯绿(25秒)黄(5秒)红(30秒)南北支干道交通灯红(30秒)黄(5秒)绿(25秒)设计要求:(1)采用VHDL语言编写程序,并在QuartusII工具平台中进行仿真,下载到EDA实验箱进行验证。

(2)编写设计报告,要求包括方案选择、程序清单、调试过程及测试结果。

二、设计原理1、设计目的:学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。

通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制2、设计说明(1)第一模块:clk时钟秒脉冲发生电路在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。

因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。

模块说明:系统输入信号:Clk: 由外接信号发生器提供50MHz的时钟信号;系统输出信号: full:产生每秒一个脉冲的信号;(2)第二模块:计数秒数选择电路计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。

模块说明:系统输入:full: 接收由clk电路的提供的1HZ的时钟脉冲信号;系统输出信号:tm:产生显示电路状态转换信号tl:倒计数值秒数个位变化控制信号th:倒计数值秒数十位变化控制信号(3)第三模块:红绿灯状态转换电路本电路负责红绿灯的转换。

模块说明:系统输入信号:full: 接收由clk电路的提供的1Hz的时钟脉冲信号;tm: 接收计数秒数选择电路状态转换信号;系统输出信号:comb_out: 负责红绿灯的状态显示。

(4)第四模块:时间显示电路本电路负责红绿灯的计数时间的显示。

模块说明:系统输入信号:tl:倒计数值秒数个位变化控制信号;th:倒计数值秒数十位变化控制信号;系统输出信号:led7s1: 负责红绿灯的显示秒数个位。

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

三、设计方案图2 交通信号灯控制器的原理框图采用VHDL语言输入的方式实现交通信号灯控制器图3 交通信号灯控制器程序原理框图该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。

进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。

四、程序清单:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY traffic ISPORT (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 ISTYPE 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); BEGINP_REG: PROCESS(CLK)VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8 = "11111111" THENCNT8:="01111111";FULL<='1';ELSE CNT8 := CNT8+1;FULL <= '0';END IF; END IF;END PROCESS P_REG;PROCESS(full)BEGINIF full'EVENT AND full='1' THENIF TIME<"1000011" THENTIME<=TIME+1;ELSe TIME <="0000000";END IF;END IF;END PROCESS;REG:process( full,current_state)BEGINIF full='1' AND full'EVENT THENcurrent_state<=next_state;END IF;END process;COM:process(current_state, time)begincase current_state iswhen 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)BEGINIF 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)begincase th iswhen"00"=>led7s1<="0111111";when"01"=>led7s1<="0000110";when"10"=>led7s1<="1011011";when"11"=>led7s1<="1001111";when others=>null;end case;case tl iswhen "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;五、电路及波形图1.波形图图4 仿真波形图2.引脚设置选择的器件为cyclone3系列的EP3C16F484C6芯片,引脚锁定方法如下图所示。

将未使用的管脚设置为三态输入(一定要设置,否则可能会损坏芯片)。

图5 引脚使用图六、硬件测试及说明用实验板上的6个LED作为交通信号灯,设计一个交通信号灯控制器。

1、交通灯从绿变红时,有5秒黄灯亮的间隔时间;2、交通灯红变绿是直接进行的,没有间隔时间;3、红灯时间为30秒。

绿灯时间为25秒。

黄灯时间为5秒。

七、实验心得体会通过这次课程设计,我进一步加深了对数字系统设计的了解。

并进一步熟练了对Quartu sII软件的操作。

在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。

相关主题