交通灯控制器___EDA课程设计实验报告

合集下载

EDA课程设计报告交通灯控制系统

EDA课程设计报告交通灯控制系统

一、课程设计目的和要求目的:掌握基于FPGA 的复杂数字系统的设计和验证方法。

提高学生复杂数字系统的设计能力。

要求:使用实验箱为W48-PK2SOPC 试验开发系统,核心器件为Alatera 公司的EP1C6Q240C8芯片,开发软件为Quartus4.0.本实验环节要求学生以FPGA 器件为目标器件,设计典型的数字系统,如:A/D 、D/A 接口;电子密码锁,交通灯控制系统,数字表等复杂硬件电路,完成设计综合、仿真和硬件测试,并写实验报告。

二、设计方案工作原理:本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。

设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续40S 后,主干道和支干道上的黄灯都亮启,持续5S 后,主干道上红灯亮启,支干道上绿灯亮启持续40S ,之后主干道和支干道上的黄灯都亮启5s ,一个循环完成。

用LED 灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。

实现方法:本次采用文本编辑法,即利用Verilog HDL 语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。

设计中用两组红黄绿LED 模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。

状状状状状状状状状状状状00状状10状状11状状01状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状001100010010001010100010图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。

进入10状态两路黄灯亮起。

结束一个循环,从00状态重新开始循环。

EDA课程设计报告 交通灯控制器

EDA课程设计报告 交通灯控制器

---------------------考试---------------------------学资学习网---------------------押题------------------------------.EDA课程设计报告交通灯控制器.一、设计任务要求1、控制器按东西、南北两个方向控制两组交通灯(红、绿、黄)2、两组灯亮的顺序满足交通安全的规则要求.3、东西向绿灯每次亮30S,接着黄灯亮2S,红灯亮20S;南北向绿灯每次亮28S,接着黄灯亮2S,红灯亮30S.4、有两组数码管给出灯亮的时间倒计时显示。

二、设计思路及总体结构框图设计思路:1.硬件:由设计任务要求可知,总体输入电路有:(1)在开始计时之前的等待状态,复位键reset接低电位,接通电源后,首先要将它接高电位,表示计时开始。

(2)当按一下(on_off)键,表示紧急情况发生,两个方向均为红灯亮,计时停止,当再次按下(on_off)键时,控制器恢复原来状态,正常工作。

输出电路:(1)由于东西和南北方向都要显示时间,因此需要4个数码管,这样在设计中就需要四条输出线choose4,用来选通指定一个LED七段显示数码管。

(2)显示器的每一位都采用LED七段显示数码管进行显示,每一个LED七段显示数码管都要有七条输出线控制,一共使用4个七段数码管,故输出电路使用四个七位输出信号:showtime1,showtime2,showtime3,showtime4。

(3)东西和南北方向都有交通灯亮的情况,故输出电路中要有两个状态控制信号state1,state2分别控制东西和南北的灯,每个方向上有4个灯(增加了左、右转弯显示控制功能),所以state1,state2的类型应该是4位数组型的。

外部电路图如下:东西方向 clk 4/ State1交通灯 stasreset State2南北方向 on_off 4/ 交通灯7/ Showtime17/ Showtime27/ Showtime37/ Showtime4Choose44/- 2 -2.软件:(1)在VHDL设计描述中,采用自顶向下的设计思路,该思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:输入信号:复位开关信号reset;紧急情况控制信号on_off;外部时钟信号clk。

EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

交通灯控制器设计一.系统功能设计要求设计制作一个用于十字路口的交通灯控制器,要求如下:(1)南北和东西方向各有一组红、绿、黄灯来指挥交通,持续时间分别为25S,20S,和5S。

(2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止。

(3)当特殊情况结束后,控制器恢复原来状态,继续正常运行。

(4)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。

二.设计原理1.交通灯控制器的状态转换根据题目要求将将红绿灯的状态转换列成如下表:2.设计方案1)由于交通灯需要使用2位7段LED数码管指示通行剩余时间,故采用LED动态扫描方式显示当前时间。

频率设定CLK1k对应的频率为50MHZ。

2)控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。

3)每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。

4)显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。

三.变量符号说明其中,CLK1K为系统时钟信号输入端,SN为禁止通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4为数码管地址选择信号输出端。

四.代码说明library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Hongld ISport (clk1k,SN:in std_logic; --SN紧急情况led1, led2, led3, led4 :out std_logic_vector (6 downto 0);--显示管显示时间用light:out std_logic_vector (5 downto 0)); --红绿黄灯end Hongld;architecture traffic1 of Hongld ISsignal S:std_logic_vector (1 downto 0); --状态signal DXT:std_logic_vector(7 downto 0):=X"01"; --东西方向时间signal NBX:std_logic_vector(7 downto 0):=X"01"; --南北方向时间signal ART,AGT,AYT,BRT,BGT,BYT: std_logic_vector(7 downto 0); --红绿黄灯信号signal temp: integer range 0 to 49999999; --产生1s计数器时计数signal clk: std_logic;beginART<="00100101";AGT<="00100000";AYT<="00000100";BRT<="00100101";BGT<="00100000";BYT<="00000100";process(clk1k) -- 选频率为50MHZ beginif (clk1k'event and clk1k='1') thenif temp=49999999 thentemp<=0;clk<='1';elsetemp<=temp+1;clk<='0';end if;end if;end process;process(clk,DXT,NBX) --状态转换进程beginif clk'event and clk ='1' thenif(DXT ="00000001")OR (NBX = "00000001") then S<=S+1;else S<=S;end if; --状态转换结束end if;end process;process (clk,SN,S) --倒计时模块beginif SN = '1' then DXT<=DXT; NBX<=NBX;elseif clk'event and clk='1' thenif (DXT="0000000") OR (NBX="00000000") thencase S ISwhen "00"=>DXT<=ART; NBX<=BGT; --南北红灯、东西绿灯when "01"=>NBX<=BYT; --南北红灯、东西黄灯when "10"=>DXT<=AGT; NBX<=BRT; --南北绿灯、东西红灯when "11"=>DXT<=AYT; --南北黄灯、东西红灯when others=>NULL;end case;end if;if DXT/="00000000" thenif DXT(3 downto 0)= "0000" thenDXT(3 downto 0)<="1001";DXT(7 downto 4)<=DXT(7 downto 4)-1;else DXT(3 downto 0)<=DXT(3 downto 0)-1;DXT(7 downto 4)<=DXT(7 downto 4);end if;end if;if NBX/="00000000" thenif NBX(3 downto 0)="0000" thenNBX(3 downto 0)<="1001";NBX(7 downto 4)<=NBX(7 downto 4)-1;else NBX(3 downto 0)<=NBX(3 downto 0)-1;NBX(7 downto 4)<=NBX(7 downto 4);end if;end if;end if;end if;end process; --倒计时模块结束process(DXT,NBX,S,SN) --显示模块begincase NBX(3 downto 0) iswhen "0000"=>led1<="1000000";when "0010"=>led1<="0100100"; when "0011"=>led1<="0110000"; when "0100"=>led1<="0011001"; when "0101"=>led1<="0010010"; when "0110"=>led1<="0000010"; when "0111"=>led1<="1111000"; when "1000"=>led1<="0000000"; when "1001"=>led1<="0010000"; when others=>led1<="1111111"; end case;case NBX(7 downto 4) iswhen "0000"=>led2<="1000000"; when "0001"=>led2<="1111001"; when "0010"=>led2<="0100100"; when "0011"=>led2<="0110000"; when "0100"=>led2<="0011001"; when "0101"=>led2<="0010010"; when "0110"=>led2<="0000010"; when "0111"=>led2<="1111000"; when "1000"=>led2<="0000000"; when "1001"=>led2<="0010000"; when others=>led2<="1111111"; end case;case DXT(3 downto 0) iswhen "0000"=>led3<="1000000"; when "0001"=>led3<="1111001"; when "0010"=>led3<="0100100"; when "0011"=>led3<="0110000"; when "0100"=>led3<="0011001"; when "0101"=>led3<="0010010"; when "0110"=>led3<="0000010"; when "0111"=>led3<="1111000"; when "1000"=>led3<="0000000"; when "1001"=>led3<="0010000"; when others=>led3<="1111111"; end case;case DXT(7 downto 4) iswhen "0000"=>led4<="1000000"; when "0001"=>led4<="1111001"; when "0010"=>led4<="0100100";when "0100"=>led4<="0011001";when "0101"=>led4<="0010010";when "0110"=>led4<="0000010";when "0111"=>led4<="1111000";when "1000"=>led4<="0000000";when "1001"=>led4<="0010000";when others=>led4<="1111111";end case;if SN ='1' then light<="001001";elsecase S ISwhen "00"=>light<="010001";when "01"=> light <="100001";when "10"=> light <="001010";when "11"=> light <="001100";when others=>NULL;end case;end if;end process;end traffic1;五.仿真波形图仿真时序波形图。

EDA交通灯课程设计报告(EDA)

EDA交通灯课程设计报告(EDA)

数字电路课程设计报告交通灯设计目录序言 (3)第一章设计任务和要求 (4)设计任务 (4)1. 2 设计要求 (4)第二章电路工作原理及方案设计 (4)第三章单元电路设计与仿真 (6)3.1 软件原理图 (6)3.2 各模块的原理及其程序 (6)分频模块的设计及仿真图 (6)计数模块的设计及仿真图 (7)控制模块的设计及仿真图 (9)分位模块的设计及仿真图 (10)译码模块的设计及仿真图 (11)第四章系统设计 (12)4.1 顶层电路设计 (12) (13)第五章总结 (13)参考文献 (14)附录 (14)序言CPLD(Complex Programmable Logic Device)是Complex PLD的简称,一种较PLD 为复杂的逻辑元件。

CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。

其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。

20世纪70年代,最早的可编程逻辑器件--PLD诞生了。

其输出结构是可编程的逻辑宏单元,因为它的硬件结构设计可由软件完成,因而它的设计比纯硬件的数字电路具有很强的灵活性,但其过于简单的结构也使它们只能实现规模较小的电路。

为弥补PLD只能设计小规模电路这一缺陷,20世纪80年代中期,推出了复杂可编程逻辑器件--CPLD。

目前应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等方面。

它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中。

几乎所有应用中小规模通用数字集成电路的场合均可应用CPLD器件。

CPLD 器件已成为电子产品不可缺少的组成部分,它的设计和应用成为电子工程师必备的一种技能。

交通灯控制器 EDA课程设计实验报告

交通灯控制器   EDA课程设计实验报告

目录1课程设计要求 (3)2 电路功能描述 (3)3 设计方案 (3)4设计原理图 (4)5 VHDL语言 (4)6仿真截图 (6)7心得体会 (11)8参考文献 (11)1. 课程设计要求1.1.红、黄、绿灯分别控制显示;1.2.每一个状态分别分配一个时间显示(两位十进制,倒计时);1.3.符合实际交通规律。

2.电路功能描述本设计是实现交通灯的控制,模拟实现了红、绿、黄灯指挥交通的功能。

本设计适用东西和南北方向的车流量大致相同的路口,红灯显示时间30S,绿灯显示时间25S,黄灯显示时间5S,同时用数码管指示当前的状态(红、绿、黄灯)的剩余时间。

当有紧急状况发生时,两个方向都禁止通行,并且显示红灯,当紧急状况解除后,重新计时并且指示时间。

3.设计方案根据设计要求,需要控制显示红、黄、绿三个灯的亮灭状态及显示的时间。

这个设计主要由两部分组成,红黄绿灯的显示模块,显示时间模块。

由实际的交通情况可知,东西方向的显示情况是一致的,南北方向的显示情况也是一致,故在设计的时候就只考虑两种状态,将东西方向合成一种,南北方向合成一种。

红黄绿灯的显示模块用两组共6个灯显示,时间显示模块用LED数码管显示。

此外,本交通灯控制器设置的红黄绿显示方式是参照一些城市的显示规律,红灯30S,绿灯25S,黄灯5S,同时用数码管指示当前状(红、绿、黄灯)的剩余时间。

另外还设有一个紧急状态,当特殊情况发生时,两个方向都禁止通行,指示红灯,紧急状态解除后,重新计时并指示时间。

时间采用倒计时的方式显示。

本设计采用VHDL语言编程,描述各个硬件模块实现的功能,使红、黄、绿灯的转换有一个准确的转换顺序和时间间隔,并进行仿真,通过仿真的结果,得出实验的结果。

在正常情况下的一个完整周期内,交通灯控制器系统一共有四种状态,分别是东西红、南北绿,东西红、南北黄,东西绿、南北红,东西黄、南北红。

其运行方式为东西红、南北绿→东西红、南北黄→东西绿、南北红→东西黄、南北绿,东西黄、南北绿结束后再回到东西红、南北绿的状态,整个周期持续60s。

EDA交通灯控制器课程设计报告书

EDA交通灯控制器课程设计报告书

交通灯控制器课程设计该交通信号控制器控制十字路甲、乙两条道路的红、黄和绿三色灯,指挥车辆和行人安全通行。

功能要求如下:1.只有在小路上发现汽车时,高速公路上的交通灯才可能变成红灯。

2.当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的时间。

(20s)3.高速公路灯转为绿色后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持绿灯。

(60s)。

设计如下:——1hz分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fen_pin1 isport(clk100hz:in std_logic;clk1hz:out std_logic);end fen_pin1;architecture bhv of fen_pin1 issignal qan:std_logic_vector(3 downto 0);signal qbn:std_logic_vector(3 downto 0);signal cin:std_logic;beginprocess(clk100hz)beginif(clk100hz'event and clk100hz='1')thenif qan="1001"then qan<="0000";cin<='1';else qan<=qan+1;cin<='0';end if;end if;end process;process(clk100hz,cin)beginif(clk100hz'event and clk100hz='1')thenif cin='1' thenif qbn="1001" then qbn<="0000";else qbn<=qbn+1;end if ;end if ;end if ;end process;process(qan,qbn)beginif (qan="1001"and qbn="1001")then clk1hz<='1'; else clk1hz<='0';end if;end process;end bhv;——2hz分频器library ieee;use ieee.std_logic_1164.all;entity fen_pin2 isport (clk100hz:in std_logic;clk2hz:out std_logic);end fen_pin2;architecture bhv of fen_pin2 isbeginprocess(clk100hz)variable cnt:integer range 0 to 24;variable tmp:std_logic;beginif(clk100hz'event and clk100hz='1')thenif cnt=24 thencnt:=0;tmp:=not tmp;elsecnt:=cnt+1;end if;end if;clk2hz<=tmp;end process;end bhv;——主干道控制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity contralz isport(clk:in std_logic;ra,ga,ya:out std_logic;timeah,timeal:out std_logic_vector(3 downto 0)); end contralz;architecture bhv of contralz istype rg is(green,red,yellow2);beginprocess(clk)variable a:std_logic;variable th,tl:std_logic_vector(3 downto 0);variable state:rg;beginif clk'event and clk='1'thencase state iswhen green=>if a='0'thenth:="0101";tl:="1001";a:='1';ga<='1';ra<='0';ya<='0';elseif not(th="0000"and tl="0001")thenif tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;elseth:="0000";tl:="0000";a:='0';state:=red;end if;end if;when red=>if a='0'thenth:="0001";tl:="1001";a:='1';ra<='1';ya<='0';ga<='0';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';ra<='0';ga<='0';state:=yellow2;end if;end if;when yellow2=>if a='0'thenth:="0000";tl:="1001";a:='1';ya<='1';ga<='0';ra<='0';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;tl:=tl-1;end if;elseth:="0000";tl:="0000";ga<='0';ra<='0';ya<='0';a:='0';state:=green;end if;end if;end case;end if;timeah<=th;timeal<=tl;end process;end bhv;——支路控制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity contralx isport(clk:in std_logic;rb,gb,yb,chu:out std_logic;timeah,timeal:out std_logic_vector(3 downto 0)); end contralx;architecture bhv of contralx istype rgy is(red,yellow1,green,yellow2);beginprocess(clk)variable a:std_logic;variable th,tl:std_logic_vector(3 downto 0);variable state:rgy;beginif clk'event and clk='1'thencase state iswhen yellow1=>if a='0'thenth:="0000";tl:="0100";a:='1';yb<='1';gb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=green;end if;end if;when green=>if a='0'thenth:="0001";tl:="1001";a:='1';gb<='1';rb<='0';yb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=yellow2;end if;end if;when red=>if a='0'thenth:="0101";tl:="0100";a:='1';yb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=yellow1;end if;end if;when yellow2=>if a='0'thenth:="0000";tl:="0100";a:='1';yb<='1';gb<='0';rb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';chu<='0';state:=red;end if;end if;end case;end if;timeah<=th;timeal<=tl;end process;end bhv;——反馈器library ieee;use ieee.std_logic_1164.all;entity smen isport( sm ,re,gr,ye:in std_logic;jinji:out std_logic);end smen;architecture se of smen isbeginprocess isbeginif(sm='1' and re='0' and gr='0' and ye='0') then jinji<='1'; elsejinji<='0';end if;end process;end se;——消抖电路library ieee;use ieee.std_logic_1164.all;entity xiaodou isport(jinji,clk1hz:in std_logic;b:out std_logic);end xiaodou;architecture bhv of xiaodou issignal temp1:std_logic;beginprocess(clk1hz,jinji)variable temp2:std_logic;beginif(clk1hz'event and clk1hz='0')thentemp1<=jinji;temp2:=not temp1;end if;b<=temp1 and temp2 and clk1hz;end process;end bhv;——状态转换library ieee;use ieee.std_logic_1164.all;entity no isport(a:in std_logic;en:out std_logic);end no;architecture no_arc of no isbeginprocess(a)variable tmp:std_logic;beginif(a'event and a='1')thentmp:=not tmp;end if;en<=tmp;end process;end no_arc;——mux4llibrary ieee;use ieee.std_logic_1164.all;entity mux41 isport(sel:in std_logic_vector(2 downto 0);d0,d1,d2,d3:in std_logic_vector(3 downto 0); q:out std_logic_vector(3 downto 0);so:out std_logic_vector(1 downto 0));end mux41;architecture bhv of mux41 isbeginprocess(sel)begincase sel iswhen"100"=>q<=d2;so<="00"; when"101"=>q<=d3;so<="01"; when"000"=>q<=d0;so<="10";when others=>q<=d1;so<="11";end case;end process;end bhv;——译码器library ieee;use ieee.std_logic_1164.all;entity dec7s isport(d:in std_logic_vector(3 downto 0);q0,q1,q2,q3,q4,q5,q6:out std_logic);end dec7s;architecture bhv of dec7s isbeginprocess(d)variable q:std_logic_vector(6 downto 0); begincase d iswhen"0000"=>q:="0111111"; when"0001"=>q:="0000110"; when"0010"=>q:="1011011"; when"0011"=>q:="1001111"; when"0100"=>q:="1100110"; when"0101"=>q:="1101101"; when"0110"=>q:="1111101"; when"0111"=>q:="0100111"; when"1000"=>q:="1111111"; when"1001"=>q:="1101111";when others=>q:="1111001";end case;q0<=q(0);q1<=q(1);q2<=q(2);q3<=q(3);q4<=q(4);q5<=q(5);q6<=q(6);end process;end bhv;下载可编辑.专业.整理. 仿真图如下:Ya,ra,ga 表示主干道黄红绿灯;yb,rb,gb 表示乡村小路黄红绿灯。

基于VHDL的交通灯设计(EDA课程设计报告)!!

基于VHDL的交通灯设计(EDA课程设计报告)!!

EDA课程设计实验报告交通信号控制器的VHDL的设计一、设计任务及要求:设计任务:模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。

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

支干道主干道图1 路口交通管理示意图表1 交通信号灯的4种状态设计要求:(1)采用VHDL语言编写程序,并在QUARTUSII工具平台中进行仿真,下载到EDA实验箱进行验证。

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

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

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

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

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

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

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

EDA交通灯控制系统的课程设计报告书

EDA交通灯控制系统的课程设计报告书

摘要 (1)一设计目的与要求 (2)二设计原理 (2)2.1交通灯控制的系统构成 (3)2.2交通灯控制器的电路控制原理框图 (3)2.3器件下载编程与硬件实现 (4)三设计内容 (4)3.1设计步骤 (5)3.2交通灯控制器各模块的程序 (6)3.3软件仿真结果 (9)3.4硬件实现及调试结果 (10)总结与致谢 (11)参考文献 (12)附录 (21)EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

随着社会经济的发展,城市交通问题越来越引起人们的关注。

人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。

交通控制系统的适用场合主要是用于交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代交通监控指挥系统中最重要的组成部分。

关键字:EDA 交通灯 Verilog HDL QuartusII一设计目的与要求(1) 主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。

(2) 主、支道交替允许通行,主干道每次放行45 s,支干道每次放行25 s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5 s的黄灯作为过渡,并进行减计时显示。

(3) 具有清零、可预置主、支干道通行时间功能。

二设计原理交通灯控制系统的作用主要是实现城市十字交叉路口红绿灯的控制。

在现代化的大城市中,十字交叉路口越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。

EDA实验报告:基于VHDL语言的交通灯控制系统设计与实现

EDA实验报告:基于VHDL语言的交通灯控制系统设计与实现
(k1=0)
图为k1=0时的输出状态s1,输出恒为011110。即亮灯为R1,y2。保持时间1S。
(k2=0)
上图为k2=0时的输出状态s2,输出恒为101011。即亮灯为G1,R2。保持时间2S。
(k3=0)
上图为k3=0时的输出状态s3,输出恒为110011。即亮灯为R1,G2。保持时间1S。
四、小结及心得体会
else
if counter<5 then
next_state<=s3;
else
next_state<=s0;
end if;
end if;
end if;
end if;
end if;
end case;
end process;
ouput:process(current_state)
begin ——显示程序
begin
u1: jiaotongdeng port map(
clk=>clki,
k0=>k0,
k1=>k1,
k2=>k2,
k3=>k3,
r1=>r1,r2=>r2,g1=>g1,g2=>g2,y1=>y1,y2=>y2
);
u2: div port map(clk=>clk1,clk_out=>clki);
end if;
end if;
end if;
when s3=>
if k0='0' then
next_state<=s0;
else
if k1='0' then
next_state<=s1;

EDA课程设计 交通灯控制器

EDA课程设计  交通灯控制器

v .. . .. 序号《EDA技术》课程设计报告课题:交通灯控制器院系自动化学院专业电气工程及其自动化班级学号姓名指导教师起止日期2015年12月14日-12月25号2015 年12 月目录一﹑设计任务 (3)二、题目分析与整体构思 (3)三﹑硬件电路设计 (4)3.1原理图设计 (4)3.2 PCB图设计 (6)3.3控制器设计 (7)四、程序设计 (9)4.1主程序设计 (9)五、实验结果 (13)5.1 程序仿真图 (13)六﹑心得体会 (14)七、附录 (15)八﹑参考文献 (21)前言伴随着社会的发展以及人类生活水平的提高,汽车的数量在D的DEA技术的发展和应用领域的扩大与深入,EDA技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。

随着技术市场与人才市场对DEA的不断的增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。

因此,做好基于EDA 技术平台的交叉口信号控制设计是缓解交通阻塞、提高城市道路交叉口车辆通行效率的有效方法。

交通信号控制的目的是为城市道路交叉口(或交通网络)提供安全可靠和有效的交通流,通常最为常用的原则是车辆在交叉口的通过量最大或车辆在交叉口的延误最小。

以下就是运用数字电子设计出的交通灯:其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。

一﹑设计任务设计一个十字路口的交通信号灯控制器,控制A、B两条交叉道路上的车辆通行,具体要求如下:(1)每条道路设一组信号灯,每组信号灯由红、黄、绿3盏灯组成,绿灯表示允许通行红灯表示禁止通行,黄灯表示该车道上已过停车线的车辆继续通行,未过停车线的车辆停止通行。

(2)设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是30s、3s和30s。

EDA实验交通灯设计报告

EDA实验交通灯设计报告

EDA原理及应用实验报告题目:交通灯控制器专业:电子信息工程班级:姓名:学号:一、设计题目:交通灯控制器二、设计目标:1、设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

2、红、绿、黄发光二极管作信号灯。

3、主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

4、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。

5、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

三、设计原理:(含系统总的原理图)由两个分频器模块,三个计数器模块及它的选择器,一个扫描数码管模块,和一个红绿灯控制模块连接而成。

RTL状态图四、设计内容:(含状态转换图、软件流程图、说明文字等,每单独模块的图标和VHDL程序;最后为总体程序框图)分频器1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT(CLK:IN STD_LOGIC;--D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);FOUT:OUT STD_LOGIC);END;ARCHITECTURE one OF DVF ISSIGNAL FULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)V ARIABLE CNT8:INTEGER RANGE 48000000 DOWNTO 0;BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8=24000000 THENCNT8:=0;FULL<='1';ELSE CNT8:=CNT8+1;FULL<='0';END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)V ARIABLE CNT2:STD_LOGIC;BEGINIF FULL'EVENT AND FULL='1' THENCNT2:=NOT CNT2;IF CNT2='1' THEN FOUT<='1';ELSE FOUT<='0';END IF;END IF;END PROCESS P_DIV;END;说明:采用的是48M时钟输入,作为后面的时钟信号。

交通灯控制器eda课程设计报告书大学论文

交通灯控制器eda课程设计报告书大学论文

目录1 绪论 (1)2 方案论证 (1)2.1程序设计的任务要求 (1)2.2方案选择 (2)3 单元模块 (5)3.1程序中使用的信号介绍: (5)3.2子模块功能介绍: (6)4 整体电路 (13)5 仿真及实物图 (13)5.2 实物图 (14)6心得 (17)参考文献 (18)附录 (18)源程序 (18)1.绪论EDA课程教会了我们如何运用电脑辅助我们进行数字电路的设计。

还教会了我们用于对FPGA进行编程的VHDL语言。

我十分喜欢FPGA的编程,也觉得这次课程设计是一次实践的好机会。

由于在之前我已经写过一些FPGA的程序,所以在拿到这个题目时我的思路还是比较清晰的。

2.方案论证2.1程序设计的任务要求2.1.1初始条件:设计一个交通灯控制器,有一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、黄、绿三色箭头信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

2.1.2要求完成的主要任务:2.1.2.1主干道和支干道构成的十字路口上有车辆交替运行,主干道每次直行通行时间为30s,左转通行时间为25s,支干道每次直行通行时间为20s,左转通行时间为15s。

2.1.2.2每次绿灯变红灯时,黄灯先亮5s,才能变换运行车道。

上述时间设置可修改。

2.1.2.3十字路口有数码管显示灯亮时间,要求灯亮时间以秒为单位进行减计数。

2.2方案选择2.2.1方案一只使用一个计时器完成所有计时工作,通过计数到不同的数值时发出不同的脉冲信号告诉系统相应的计时值已到。

该方案的优势在于占用资源少,只用使用一个计时器就可完成5种不同的计时。

但不管是在哪一个状态都会调用该计时器,一旦该计时器出错,整个系统都会受影响,不利于系统的维护和模块化编程的思想。

2.2.2方案二使用5个计时器进行计时。

在某个状态时,系统会调用相应的计时器开始计时,并且只检测相应计时器的计时完成脉冲信号。

该方案的缺点在于占用FPGA 资源多,但由于FPGA上资源足够,这个缺陷不影响系统工作。

EDA实验报告(交通灯)

EDA实验报告(交通灯)

EDA实验报告(四)实验任务:设计一个校园交通灯的有限状态机1.设计思路取4个状态分别表示学术路绿灯亮,文化路红灯亮(简称学绿文红)、学黄文红、学红文绿、学红文黄。

2.VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY LED ISPORT(CLK,RET,TA,TC:IN STD_LOGIC;R1,Y1,G1,R2,Y2,G2:OUT STD_LOGIC);END LED;ARCHITECTURE ONE OF LED ISTYPE STATES IS(S0,S1,S2,S3);SIGNAL CS,NS:STATES;SIGNAL A:STD_LOGIC;COMPONENT FENPINport(CLK1:in std_logic;CLK2:out std_logic);END COMPONENT;BEGINU1: FENPIN PORT MAP(CLK1=>CLK,CLK2=>A);REG:PROCESS(RET,A)BEGINIF RET='0'THEN CS<=S0;ELSIF A='1'AND A'EVENT THENCS<=NS;END IF;END PROCESS;COM:PROCESS(CS,TA,TC)BEGINCASE CS ISWHEN S0=>R1<='0';Y1<='0';G1<='1';R2<='1';Y2<='0';G2<='0';IF TA='1'THEN NS<=S0;ELSIF TA='0'THEN NS<=S1;ELSE NS<=S0;END IF;WHEN S1=>R1<='0';Y1<='1';G1<='0';R2<='1';Y2<='0';G2<='0';NS<=S2;WHEN S2=>R1<='1';Y1<='0';G1<='0';R2<='0';Y2<='0';G2<='1';IF TC='1'THEN NS<=S2;ELSIF TA='0'THEN NS<=S3;ELSE NS<=S2;END IF;WHEN S3=>R1<='1';Y1<='0';G1<='0';R2<='0';Y2<='1';G2<='0';NS<=S0;END CASE ;END PROCESS;END ONE;分频:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport(CLK1:in std_logic;CLK2:out std_logic);end;architecture art of FENPIN issignal count:integer range 0 to 125000000;signal clk_data:std_logic;beginprocess(CLK1,count)beginif CLK1'event and CLK1='1' thenif count=125000000 thencount<=0;clk_data<=not clk_data;else count<=count+1;end if;end if;CLK2<=clk_data;end process;end art;3.RTI图4.状态图5.时序仿真波形图6.硬件测试及结果由仿真及其硬件测试可知,综上此VHDL是正确的。

EDA实验报告实验四_交通灯控制器设计说明

EDA实验报告实验四_交通灯控制器设计说明

实验四交通灯控制器设计一、实验目的1、学习与日常生活相关且较复杂数字系统设计;2、进一步熟悉EDA实验装置和Quartus U软件的使用方法;3、学习二进制码到BCD码的转换;4、学习有限状态机的设计应用。

二、设计要求完成设计、仿真、调试、下载、硬件测试等环节,在型EDA实验装置上实现一个由一条主干道和一条乡间公路的汇合点形成的十字交叉路口的交通灯控制器功能,具体要求如下:1、有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;2、交通灯由绿转红前有4秒亮黄灯的间隔时间,由红转绿没有间隔时间;3、乡间公路右侧各埋有一个串连传感器,当有车辆准备通过乡间公路时,发出请求信号S=1,其余时间S=0;4、平时系统停留在主干道通行(MGCR状态,一旦S信号有效,经主道黄灯4秒(MYC R状态后转入乡间公路通行(MRC)状态,但要保证主干道通行大于一分钟后才能转换;5、一旦S信号消失,系统脱离MRC状态,即经乡道黄灯4秒(MRC)伏态进入MGCR状态,即使S信号一直有效,MRC状态也不得长于20秒钟;6、控制对象除红绿灯之外,还包括分别在主干道和乡间公路各有一个两位十进制倒计时数码管显示。

三、主要仪器设备1 、微机 1 台2、Q uartusII 集成开发软件 1 套3、EDA实验装置1套四、实验思路1、设计一个状态寄存器,控制六盏灯的亮与灭2、设计一个计时器,控制各状态的持续时间,计时器应满足以下要求:1 )当S=1,且计数器已完成60计数时,计数器进入模4计数,随后进入模20 计数,再进入模4计数,再回到模60计数2 )当计数器进行摸20计数时,一旦S变为0,计数器立马进入模4计数,再进入模60 计数3 )完成模20计数后,不论S为0或1,计数器进入模4计数,再进入模60计数4 )若计数器未完成模60计数,不论S如何变话,计数器将继续进行模60 计数3、设计一个译码显示电路,将计时器的八位BCD码转化为数码管可以显示的段位码通过动态扫描电路实现。

EDA课程设计报告-- 交通灯控制器

EDA课程设计报告--  交通灯控制器

郑州航空工业管理学院电子通信工程系EDA技术及应用课程设计报告题目:交通灯控制器姓名:学号:同组成员:指导老师:年月日目录一、设计任务书二、硬件系统设计1、电路原理图1.1 CPLD核心电路1.2 数码管显示电路1.3电源电路1.4 LED指示灯电路2、管脚分配3、设计方案三、Verilog HDL 代码设计四、系统调试1、逻辑功能模块RTL级描述2、仿真图五、总结1、对本次课程设计的总结六、参考文献一、设计任务书设计要求(1)主干道通行(绿灯):支干道有车24秒;支路红灯,数码管实时显示倒计时的秒,秒计时的频率为1Hz 。

(2)主干道缓冲(黄灯):6秒,(不显示计数),秒计时的频率为1Hz 。

(3)支路通行(绿灯):20秒,主干道红灯,数码管实时显示倒计时的秒,秒计时的频率为1Hz 。

(4)支路缓冲(黄灯):6秒,不显示,秒计时的频率为1Hz 。

数码管采用动态显示。

其他要求:(1)晶振为12 MHz(2)采用CPLD 器件,为ALTERA 的EPM7064SL-44(3)采用数码管显示二、硬件系统设计1、电路原理图:1.1 CPLD核心电路1.2 数码管显示电路1.3电源电路1.4 LED指示灯电路2、管脚分配管脚分配:CPLD型号: FAMILY:MAX7000AEDEVICE:EPM7064AELC44-10sys_clk : pin 43 // 12Mhz4个LED灯: led0 ~ led3 : pin 14 16 17 188个数码管:8个位线:com0~com3(dig0~dig3):pin 34, 33,31, 29, com4~com7 (dig4~dig7):pin 28 , 27,26 , 258个数据线:seg0~seg 3: pin 36, 37 ,39, 40seg4~seg 7: pin 41, 4 , 5, 64个按键:sw0~sw3: pin 19, 20, 21, 243、设计方案三、Verilog HDL 代码设计module ds(clk,led,dig,seg);//输入input clk;//输出output[3:0] dig;output[7:0] seg;output[4:0] led;//定义变量reg[24:0] count;reg[15:0] miao;reg[4:0] leden;reg[7:0] seg_r; reg[3:0] dig_r;reg[3:0] disp_dat;reg sec;reg num;reg[1:0] flag; //计数变量reg[1:0]f2; //计数变量assign dig=dig_r;assign seg=seg_r;assign led=leden;//秒产生信号always@(posedge clk)begincount=count+1'b1;if(count==25'd2*******)begincount=25'b0;sec=~sec;endend//数码管动态扫描always@(posedge clk)begincase(count[16:15])0:disp_dat=miao[3:0];1:disp_dat=miao[7:4];2:disp_dat=miao[11:8];3:disp_dat=miao[15:12];endcasecase(count[16:15]) //选择数码管显示位0:dig_r=4'b1110;1:dig_r=4'b1101;2:dig_r=4'b1011;3:dig_r=4'b0111;endcaseendalways@(posedge clk)begincase(disp_dat)4'h0:seg_r=8'hc0;4'h1:seg_r=8'hf9;4'h2:seg_r=8'ha4;4'h3:seg_r=8'hb0;4'h4:seg_r=8'h99;4'h5:seg_r=8'h92;4'h6:seg_r=8'h82;4'h7:seg_r=8'hf8;4'h8:seg_r=8'h80;4'h9:seg_r=8'h90;default:seg_r=8'hff;endcaseendalways@(negedge sec) //数码管倒计时及指示灯显示倒计时模块beginif(flag==0)beginmiao[3:0]=miao[3:0]-1;if(miao[3:0]==4'hf)beginmiao[7:0]=8'h18; 主干道绿灯倒计时leden=5'b01101; 主绿支红flag[1:0]=4'h1; 计数转向第二步endendelse if(flag[1:0]==4'h1)beginmiao[3:0]=miao[3:0]-1'b1;if(miao[3:0]==4'hf)beginmiao[7:4]=miao[7:4]-1'b1;if(miao[7:4]==4'hf)beginleden[4:2]=3'b110; 主干道黄灯flag[1:0]=4'h2;miao[7:0]=8'h06; 黄灯倒计时endelse miao[3:0]=4'h9;endendelse if(flag[1:0]==4'h2)beginmiao[3:0]=miao[3:0]-1'b1;if(miao[3:0]==4'hf)beginmiao[7:4]=miao[7:4]-1'b1;if(miao[7:4]==4'hf)beginleden[4:2]=3'b101; 主干道红灯flag[1:0]=4'h3;miao[7:0]=8'h20;endelse miao[3:0]=4'h9;endendelse if(flag[1:0]==4'h3)beginmiao[3:0]=miao[3:0]-1'b1;if(miao[3:0]==4'hf)beginmiao[7:4]=miao[7:4]-1'b1;if(miao[7:4]==4'hf)beginleden[4:2]=3'b011; 主干道绿灯返回flag==1flag[1:0]=4'h1;miao[7:0]=8'h18;endelse miao[3:0]=4'h9;endendelse flag[1:0]=4'h0;if(f2==0)beginmiao[11:8]=miao[11:8]-1;if(miao[11:8]==4'hf)beginmiao[15:8]=8'h24;//leden=6'b011110;f2[1:0]=4'h1;endendelse if(f2[1:0]==4'h1)beginmiao[11:8]=miao[11:8]-1'b1;if(miao[11:8]==4'hf)beginmiao[15:12]=miao[15:12]-1'b1;if(miao[15:12]==4'hf)beginleden[2:0]=3'b110;f2[1:0]=4'h2;miao[15:8]=8'h14;endelse miao[11:8]=4'h9;endendelse if(f2[1:0]==4'h2)beginmiao[11:8]=miao[11:8]-1'b1;if(miao[11:8]==4'hf)beginmiao[15:12]=miao[15:12]-1'b1;if(miao[15:12]==4'hf)beginleden[2:0]=3'b011;f2[1:0]=4'h3;miao[15:8]=8'h06;endelse miao[11:8]=4'h9;endendelse if(f2[1:0]==4'h3)beginmiao[11:8]=miao[11:8]-1'b1;if(miao[11:8]==4'hf)beginmiao[15:12]=miao[15:12]-1'b1;if(miao[15:12]==4'hf)beginleden[2:0]=3'b101;f2[1:0]=4'h1;miao[15:8]=8'h24;endelse miao[11:8]=4'h9;endendelse f2[1:0]=4'h0;endendmodule四、系统调试1、逻辑功能模块RTL级描述VCC clk INPUT dig[3..0]OUTPUT seg[7..0]OUTPUT led[4..0]OUTPUT clk dig[3..0]seg[7..0]led[4..0]dsinst仿真图五、总结在做本课程设计的过程中,从程序编写到硬件实现,我们遇到了许多问题。

EDA实验报告实验四:交通灯控制器设计

EDA实验报告实验四:交通灯控制器设计

实验四交通灯控制器设计一、实验目的1、学习与日常生活相关且较复杂数字系统设计;2、进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法;3、学习二进制码到BCD码的转换;4、学习有限状态机的设计应用。

二、设计要求完成设计、仿真、调试、下载、硬件测试等环节,在型EDA实验装置上实现一个由一条主干道和一条乡间公路的汇合点形成的十字交叉路口的交通灯控制器功能,具体要求如下:1、有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;2、交通灯由绿转红前有4秒亮黄灯的间隔时间,由红转绿没有间隔时间;3、乡间公路右侧各埋有一个串连传感器,当有车辆准备通过乡间公路时,发出请求信号S=1,其余时间S=0;4、平时系统停留在主干道通行(MGCR)状态,一旦S信号有效,经主道黄灯4秒(MYCR)状态后转入乡间公路通行(MRCG)状态,但要保证主干道通行大于一分钟后才能转换;5、一旦S信号消失,系统脱离MRCG状态,即经乡道黄灯4秒(MRCY)状态进入MGCR状态,即使S信号一直有效,MRCG状态也不得长于20秒钟;6、控制对象除红绿灯之外,还包括分别在主干道和乡间公路各有一个两位十进制倒计时数码管显示。

三、主要仪器设备1、微机1台2、QuartusII集成开发软件1套3、EDA实验装置1套四、实验思路1、设计一个状态寄存器,控制六盏灯的亮与灭2、设计一个计时器,控制各状态的持续时间,计时器应满足以下要求:1)当S=1,且计数器已完成60计数时,计数器进入模4计数,随后进入模20计数,再进入模4计数,再回到模60计数2)当计数器进行摸20计数时,一旦S变为0,计数器立马进入模4计数,再进入模60计数3)完成模20计数后,不论S为0或1,计数器进入模4计数,再进入模60 计数4)若计数器未完成模60计数,不论S如何变话,计数器将继续进行模60 计数3、设计一个译码显示电路,将计时器的八位BCD码转化为数码管可以显示的段位码。

EDA实验交通灯设计报告

EDA实验交通灯设计报告

EDA原理及应用实验报告题目:交通灯控制器专业:电子信息工程班级:姓名:学号:一、设计题目:交通灯控制器二、设计目标:1、设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

2、红、绿、黄发光二极管作信号灯。

3、主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

4、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。

5、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

三、设计原理:(含系统总的原理图)由两个分频器模块,三个计数器模块及它的选择器,一个扫描数码管模块,和一个红绿灯控制模块连接而成。

RTL状态图四、设计内容:(含状态转换图、软件流程图、说明文字等,每单独模块的图标和VHDL程序;最后为总体程序框图)分频器1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT(CLK:IN STD_LOGIC;--D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);FOUT:OUT STD_LOGIC);END;ARCHITECTURE one OF DVF ISSIGNAL FULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)V ARIABLE CNT8:INTEGER RANGE 48000000 DOWNTO 0;BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8=24000000 THENCNT8:=0;FULL<='1';精选文库ELSE CNT8:=CNT8+1;FULL<='0';END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)V ARIABLE CNT2:STD_LOGIC;BEGINIF FULL'EVENT AND FULL='1' THENCNT2:=NOT CNT2;IF CNT2='1' THEN FOUT<='1';ELSE FOUT<='0';END IF;END IF;END PROCESS P_DIV;END;说明:采用的是48M时钟输入,作为后面的时钟信号。

交通灯控制器 EDA实验报告

交通灯控制器 EDA实验报告

一、实验目的1、研究交通灯控制器的工作原理,进行功能设计;2、加深VHDL语言的理解;3、熟练掌握自上而下的分层设计方法;4、熟练掌握EDA软件QUARTUSII的开发流程。

二、实验仪器PC机一台;QUARTUSII 13.0软件;新型设备实验板Altera Blaster下载器三、题目解析1.东西,南北两个方向有红、黄、绿灯指示是否允许通行2. 设置时钟,以倒计时方式显示允许通行的时间3. 绿灯、黄灯、红灯的持续时间分别设置为20秒、10秒和30秒(时间也开自行设置)4. 当东西或南北两路中任一道上出现特殊情况,例如有消防车,警车要去执行任务,交通控制系统可由交警手动控制进入特殊运行状态,即两条道上的所有车辆皆停止通行,红灯全亮,时钟停止计时。

特殊运行状态结束后,管理系统恢复状态继续正常运行四、实验原理五、模块设计以及总电路图1.简要说明由于两个交通灯的倒计时数字的显示是相同的,所以我们这次只使用了两个七段数码管来显示两个交通灯的时间。

我们把60s一个大循环分成了如图所示四个状态s0~s3,且还有一个s4为紧急状态。

当s4启动时,时钟暂停计时,交通灯均亮红灯。

有一个en为紧急状态按钮,rst为复位键,倒计时回到30s,转固态回到s0。

2.分频器模块本次课程使用的实验板默认50MHz晶振。

i_clk为输入信号,用于晶振信号输入;i_rst为复位信号;o_clk为分频信号,输出1Hz;3.LED灯控制模块通过给定的时钟输入判断当前状态下的LED灯点亮情况。

l_clk时钟信号输入l_rst复位l_en为使能端,用于紧急状况4.数码管显示模块通过给定的时钟输入判断当前时间的数字显示c_clk时钟信号输入c_rst复位c_en紧急out_h高位输出用于控制十位out_l地位输出用于控制个位5.数码管将上一部分输出信号进行译码显示6.总电路图根据题意,将各个模块根据原理连接起来,形成如图电路。

六、各个模块代码1.分频器LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all;entity FREQUENCY_DIVIDER isgeneric(sys_clk_fre:INTEGER:=50000000;//输入频率div_clk_fre:INTEGER:=1//目标频率);PORT(i_clk : IN STD_LOGIC;i_rst : IN STD_LOGIC;o_clk : OUT STD_LOGIC);END FREQUENCY_DIVIDER;ARCHITECTURE FREQUENCY_DIVIDER_architecture OF FREQUENCY_DIVIDER ISsignal r_div_count:STD_LOGIC_VECTOR(31 downto 0);signal r_div_CLK:STD_LOGIC;BEGINprocess(i_clk,i_rst)beginif(i_rst='1')then //复位r_div_count<=x"00000000";r_div_clk <= '0';elsif(i_clk'event and i_clk='1')thenif(r_div_count=sys_clk_fre/div_clk_fre/2-1)thenr_div_count <= x"00000000";r_div_clk <= NOT r_div_clk;elser_div_count <= r_div_count+1;end if;end if;end process;o_clk <= r_div_clk;END FREQUENCY_DIVIDER_architecture;2.LED控制LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all;ENTITY light_control ISPORT(l_clk : IN STD_LOGIC;l_rst : IN STD_LOGIC;l_en : IN STD_LOGIC;red1 : OUT STD_LOGIC;red2 : OUT STD_LOGIC;ye1 : OUT STD_LOGIC;ye2 : OUT STD_LOGIC;green1 : OUT STD_LOGIC;green2: OUT STD_LOGIC);END light_control;ARCHITECTURE light_control_architecture OF light_control IS type state_type is(s0,s1,s2,s3,s4);signal current_state,next_state:state_type;signal counter:std_logic_vector(5 downto 0);BEGINsynch:process(counter)//60s循环beginif l_rst='1'thencounter<="000000";elsif l_clk'event and l_clk='1'thenif l_en='1' thencounter<=counter;elseif counter<59 thencounter<=counter+1;elsecounter<="000000";end if;end if;end if;end process;process(l_rst,l_clk)//状态转换beginif l_rst='1'thencurrent_state<=s0;elsif l_clk'event and l_clk='1'thencurrent_state<=next_state;end if;end process;state_trans:process(current_state)begincase current_state iswhen s0=>if l_en='1' thennext_state<=s4;elseif counter<26 thennext_state<=s0;elsenext_state<=s1;end if;end if;when s1=>if l_en='1' thennext_state<=s4;elseif counter<29 thennext_state<=s1;elsenext_state<=s2;end if;end if;when s2=>if l_en='1' thennext_state<=s4;elseif counter<56 thennext_state<=s2;elsenext_state<=s3;end if;end if;when s3=>if l_en='1' thennext_state<=s4;elseif counter<59 thennext_state<=s3;elsenext_state<=s0;end if;end if;when s4=>if l_en='1' thennext_state<=s4;elseif counter<19 thennext_state<=s0;elsif counter<29 thennext_state<=s1;elsif counter<49 thennext_state<=s2;elsif counter<59 thennext_state<=s3;elsenext_state<=s0;end if;end if;end case;end process;output:process(current_state)//状态输出begincase current_state iswhen s0=>red1<='0';green1<='1';ye1<='0';red2<='1';green2<='0';ye2<='0';when s1=>red1<='0';green1<='0';ye1<='1';red2<='1';green2<='0';ye2<='0';when s2=>red1<='1';green1<='0';ye1<='0';red2<='0';green2<='1';ye2<='0';when s3=>red1<='1';green1<='0';ye1<='0';red2<='0';green2<='0';ye2<='1';when s4=>red1<='1';green1<='0';ye1<='0';red2<='1';green2<='0';ye2<='0';end case;end process;END light_control_architecture;3.计时器LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all;ENTITY counter IS-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!PORT(c_clk : IN STD_LOGIC;c_rst : IN STD_LOGIC;c_en : IN STD_LOGIC;out_h : OUT STD_LOGIC_VECTOR(3 downto 0);out_l : OUT STD_LOGIC_VECTOR(3 downto 0));-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!END counter;-- Architecture BodyARCHITECTURE counter_architecture OF counter ISsignal coul,couh:std_logic_vector(3 downto 0);beginprocess(c_rst,c_clk,c_en)beginif c_rst='1' thencoul<="0000";couh<="0011";//这里是如果启用了复位键,就会从的第一个小循环30s开始倒计时,所以高位是0011也就是3,低位从0开始倒计时,即30→29…elsif c_clk'event and c_clk = '1' thenif c_en='1'thencouh<=couh;coul<=coul;elseif c_rst='0' thenif(coul=1 and couh=0)thencouh<="0011";coul<="0000";elsif coul=0 thencoul<="1001";couh<=couh-1;elsecoul<=coul-1;//这里是每减少10s高位会减1,如20→19高位从2到1,低位置9end if;end if;end if;end if;end process;out_h<=couh;out_l<=coul;END counter_architecture;4译码显示LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all;-- Entity DeclarationENTITY digits_h IS-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!PORT(d_h : IN STD_LOGIC_VECTOR(3 downto 0);a : OUT STD_LOGIC;b : OUT STD_LOGIC;c : OUT STD_LOGIC;d : OUT STD_LOGIC;e : OUT STD_LOGIC;f : OUT STD_LOGIC;g : OUT STD_LOGIC);-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!END digits_h;ARCHITECTURE digits_h_architecture OF digits_h IS signal tmp:std_lOGIC_VECTOR(6 DOWNTO 0);beginprocess (d_h)begincase d_h iswhen"0000"=>tmp<="0000001";when"0001"=>tmp<="1001111";when"0010"=>tmp<="0010010";when"0011"=>tmp<="0000110";when"0100"=>tmp<="1001100";when"0101"=>tmp<="0100100";when"0110"=>tmp<="0100000";when"0111"=>tmp<="0001111";when"1000"=>tmp<="0000000";when"1001"=>tmp<="0000100";when others=>tmp<="1111111";end case;end process;a<=tmp(6);b<=tmp(5);c<=tmp(4);d<=tmp(3);e<=tmp(2);f<=tmp(1);g<=tmp(0);END digits_h_architecture;七、实验验证验证通过!八、心得体会通过本次数字电路与逻辑实验课程的学习以及大作业的完成,我们学习了EDA相关的编程语言基础语法与软件的基本使用,掌握了一定的基础能力,了解电子设计自动化这片领域的重要性以及其发展,实践了从设计到实现的全部过程,培养了对eda设计的兴趣,对本科阶段实操方面的能力很有帮助。

EDA交通灯实验报告

EDA交通灯实验报告

EDA交通灯实验报告交通灯是道路上常见的交通设施之一,其功能是对行人和机动车辆进行交通管理,维护道路交通秩序,保障道路交通安全。

而交通信号灯则是交通灯的一种常见形式,通过信号灯的亮灭来指示不同方向的车辆和行人行进或停车。

为了更好地了解交通灯的工作原理和实际应用场景,本次实验通过自制交通灯,进行了一系列的观察和数据收集,从而对交通灯的工作原理和交通信号的规律有了更深入的理解。

首先,我们采用LED灯作为交通信号灯的光源,LED灯具有亮度高、寿命长、能耗低等优势,非常适合用于交通信号灯的制作。

我们选择了红、黄、绿三种颜色的LED灯,分别用于表示停车、准备行进和行进的状态。

通过连接电路,我们可以对不同颜色的LED灯进行控制。

在实验中,我们选择了两个参数进行观察和数据收集,分别是信号灯的亮灭时间和不同信号灯的显示顺序。

首先,我们观察到每个信号灯的亮灭时间是固定的,红灯亮灭时间为30秒,黄灯亮灭时间为5秒,绿灯亮灭时间为40秒。

在实际应用中,交通信号灯的时间设置是根据道路交通流量和道路安全等因素综合考虑的,我们的实验结果也验证了这一设定的合理性。

其次,我们进行了不同信号灯的显示顺序的实验。

选择了三种不同的显示顺序进行观察,分别是红-黄-绿、绿-黄-红和黄-红-绿。

实验结果显示,红-黄-绿的显示顺序是最常见的,也是最符合交通规则的。

因为红灯表示停车,黄灯表示准备行进,绿灯表示行进,这样的显示顺序可以保障车辆和行人按照规则进行。

最后,我们还观察到了交通灯的故障现象,即交通灯不正常工作或者显示混乱。

这种情况在实际应用中是非常危险的,会导致交通事故的发生。

因此,交通灯的维护和保养非常重要,需要定期检查和维修,确保其正常工作。

通过本次实验,我们对交通灯的工作原理和交通信号的规律有了更深入的了解。

交通灯作为一种重要的交通设施,对于道路交通的安全和秩序维护起着重要的作用。

我们应当遵守交通信号,不仅是为了自己的安全,也是为了他人的安全。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
1课程设计要求 (3)
2 电路功能描述 (3)
3 设计方案 (3)
4设计原理图 (4)
5 VHDL语言 (4)
6仿真截图 (6)
7心得体会 (11)
8参考文献 (11)
1. 课程设计要求
1.1.红、黄、绿灯分别控制显示;
1.2.每一个状态分别分配一个时间显示(两位十进制,倒计时);
1.3.符合实际交通规律。

2.电路功能描述
本设计是实现交通灯的控制,模拟实现了红、绿、黄灯指挥交通的功能。

本设计适用东西和南北方向的车流量大致相同的路口,红灯显示时间30S,绿灯显示时间25S,黄灯显示时间5S,同时用数码管指示当前的状态(红、绿、黄灯)的剩余时间。

当有紧急状况发生时,两个方向都禁止通行,并且显示红灯,当紧急状况解除后,重新计时并且指示时间。

3.设计方案
根据设计要求,需要控制显示红、黄、绿三个灯的亮灭状态及显示的时间。

这个设计主要由两部分组成,红黄绿灯的显示模块,显示时间模块。

由实际的交通情况可知,东西方向的显示情况是一致的,南北方向的显示情况也是一致,故在设计的时候就只考虑两种状态,将东西方向合成一种,南北方向合成一种。

红黄绿灯的显示模块用两组共6个灯显示,时间显示模块用LED数码管显示。

此外,本交通灯控制器设置的红黄绿显示方式是参照一些城市的显示规律,红灯30S,绿灯25S,黄灯5S,同时用数码管指示当前状(红、绿、黄灯)的剩余时间。

另外还设有一个紧急状态,当特殊情况发生时,两个方向都禁止通行,指示红灯,紧急状态解除后,重新计时并指示时间。

时间采用倒计时的方式显示。

本设计采用VHDL语言编程,描述各个硬件模块实现的功能,使红、黄、绿灯的转换有一个准确的转换顺序和时间间隔,并进行仿真,通过仿真的结果,得出实验的结果。

在正常情况下的一个完整周期内,交通灯控制器系统一共有四种状态,分别是东西红、南北绿,东西红、南北黄,东西绿、南北红,东西黄、南北红。

其运行方式为东西红、南北绿→东西红、南北黄→东西绿、南北红→东西黄、南北绿,东西黄、南北绿结束后再回到东西红、南北绿的状态,整个周期持续60s。

urgency 为紧急控制信号,为高电平时系统转换为东西南北均是红灯亮的状态,状态结束后系统重新设置,转换为东西红,南北绿的状态。

4.设计的原理图
判断是否是紧急情况
东西红灯亮30S ,南北绿灯亮25S
东西南北均红灯
东西红灯亮5S ,南北黄灯亮5S
东西绿灯亮25S ,南北红灯亮25S
东西黄灯亮5S ,南北红灯亮5S
开 始
结 束

不是
循环
5.VHDL硬件描述语言
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY traffic IS --定义实体
PORT( clk : IN STD_LOGIC; --CLK为时钟信号(1Hz)urgency : IN STD_LOGIC; --紧急状态控制端
led : BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0); --红黄绿绿黄红
East_West,South_North : BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0));
END; --东西、南北倒计时数码管(高4位为十位,低4位为个位)
ARCHITECTURE rtl OF traffic IS --定义结构体
BEGIN
PROCESS(clk,urgency)
BEGIN
IF urgency = '1' THEN --出现紧急状态
led <= "100001"; --东西南北都亮红灯
East_West <= "00000000"; --设置重新计时的数据
South_North <= "00000000";
ELSIF (clk'EVENT AND clk = '1') THEN
IF (East_West > "00110000" or South_North > "00110000") THEN
East_West <= "00101001"; --计数错误时纠正到初始转态
South_North <= "00100100";
led <= "100100"; --东西红灯亮30秒,南北绿灯亮25秒
ELSIF (East_West = "00000101" AND South_North = "00000000") THEN
East_West <= "00000100"; --红、绿灯亮了25秒,绿灯将转变为黄灯South_North <= "00000100";
led <= "100010"; --东西红灯亮剩余5秒,南北黄灯亮5秒
ELSIF (East_West = "00000000" AND South_North = "00000000" AND led = "100010") THEN --东西红灯30秒时间结束,南北黄灯5秒结束East_West <= "00100100";
South_North <= "00101001";
led <= "001001"; --东西亮绿灯25秒,南北亮红灯30秒
ELSIF (East_West = "00000000" AND South_North = "00000101") THEN
East_West <= "00000100"; --东西红绿亮25秒结束,转为5秒黄灯
South_North <= "00000100";
led <= "010001"; --东西黄灯亮5秒,南北红灯亮剩余5秒
ELSIF (East_West = "00000000" AND South_North = "00000000" AND led = "010001") THEN --东西亮黄灯5秒结束,南北亮30秒红灯结束East_West <= "00101001";
South_North <= "00100100";
led <= "100100"; --东西红灯30秒,南北绿灯25秒,循环
ELSIF (East_West(3 DOWNTO 0) = 0 AND South_North (3 DOWNTO 0) = 0) THEN East_West <= East_West - 7; --BCD码减法转换
South_North <= South_North - 7;
ELSIF (East_West(3 DOWNTO 0) = 0 AND South_North (3 DOWNTO 0) = 0) THEN East_West <= East_West - 7; --BCD码减法转换
South_North <= South_North - 1;
ELSIF (South_North (3 DOWNTO 0) = 0 AND East_West(3 DOWNTO 0) = 0) THEN South_North <= South_North - 7; --BCD码减法转换
East_West <= East_West - 1;
ELSE East_West <= East_West - 1; --不满足上述特殊情况时减一
South_North <= South_North - 1;
END IF;
END IF;
END PROCESS;
END;
6.仿真截图
6.1VHDL源程序仿真
创建VHDL语言的编程窗口,并进行保存
程序截图:
对源程序进行编译,为出现错误。

6.1.2创建波形文件并进行仿真
导入,
将仿真的结束时间定为65s,进行仿真;(1)、东西红,南北绿:
(2)、东西红,南北黄
(3)东西绿,南北红
7.心得体会
通过这次的课程设计,加深了我对EDA技术这么课程的理解和认识,同时也让我对其有了更加熟练的运用。

之前对VHDL的了解仅局限于课本上的些许知识,而没有深入体会,缺乏实践经验。

这次的课程设计是很有意义的。

看到设计题目之后,我意识到自己对VHDL语言的掌握程度远远不够,开始查阅VHDL教程,寻找教程上的相似问题。

最先做的是对设计进行模块的划分。

在这个过程中,我也遇到了很多的问题,刚开始,没有找对方向,浪费了很多的时间。

慢慢的,在查阅了相关的书籍之后,我找到了设计思路,确定了其由两个模块构成的思路。

在对各个模块进行仿真的时候,遇到了不少困难,各个模块的
连接以及信号的定义老是出现错误,经过反复修改才成功。

8.参考文献
[1] 潘松黄继业•EDA技术实用教程——VHDL版(第4版)•科学出版社,2010。

相关文档
最新文档