EDA交通灯课程设计

发布 2022-09-30 21:43:28 阅读 4459

1.简要说明。

在十字路口,每一条道路各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序的通行。其中,红灯亮表示该道路禁止通行;黄灯表示停车;绿灯表示可以通行;倒计时显示器是用来显示允许通行或禁止通行的时间。交通灯控制器就是用于自动控制十字路口的交通灯和计时器,指挥各种车辆和行人安全通行。

2.实验设备。

1)硬件环境。

pc机、zye1502deda技术实验箱。

2)软件环境。

max+plusⅱcpld软件开发系统,vhdl硬件描述语言。

3.原理。在十字路口的四个方向上各设一组红黄绿灯,一组数码管以倒计时的方式显示允许通行和禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是40s、5s、45s。

初始状态为:南北方向亮红灯,东西方向亮绿灯。当各条路中任意一条上出现特殊情况,例如消防车,救护车或其他需要优先放行的车辆时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。

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

4.设计步骤。

1)顶层电路图。

2)模块设计。

模块fen该模块的功能是将失重10000分频,得到占空比为1:10000的方波,这种方波和xiaopro模块联合使用,可达到较好的消抖同步效果。

程序:libraryieee;

entityfenis

port(clk:instd_logic;

clk1:outstd_logic);

endfen;

architecturefen_arcoffenis

beginprocess(clk)

variablecnt:integerrange0to9999;

beginifclk'eventandclk='1'then

ifcnt=9999then

cnt:=0;

clk1<='1';

elsecnt:=cnt+1;

clk1<='0';

endif;

endif;

endprocess;

endfen_arc;

模块fen2

该模块的功能是将时钟5000分频,得到占空比为1:1的方波,用于紧急情况时的倒计时闪烁。

程序:libraryieee;

entityfen2is

port(clk:instd_logic;

y:outstd_logic);

endfen2;

architecturefen2_arcoffen2is

beginprocess(clk)

variablecnt:integerrange0to2499;

variableaa:std_logic;

beginifclk'eventandclk='1'then

ifcnt=2499then

cnt:=0;

aa:=notaa;

elsecnt:=cnt+1;

endif;

endif;

y<=aa;

endprocess;

endfen2_arc;

模块xiaopro

该模块的功能是消抖同步,它的输入输出都为正脉冲。

程序:libraryieee;

entityxiaoprois

port(a,clk1:instd_logic;

b:outstd_logic);

endxiaopro;

architecturexiao_arcofxiaoprois

signaltmp1:std_logic;

beginprocess(clk1,a)

variablet***,tmp2:std_logic;

beginifclk1'eventandclk1='0'then

tmp1<=a;

tmp2:=tmp1;

t***:=nottmp2;

endif;

b<=tmp1andt***andclk1;

endprocess;

endxiao_arc;

模块no该模块的功能是实现紧急情况与正常情况的转换,当a上升沿(即紧急按键按下)到来时,y的状态发生变化。

程序:libraryieee;

entitynois

port(a:instd_logic;

y:outstd_logic);

endno;

architectureno_arcofnois

beginprocess(a)

variableaa:std_logic;

beginifa'eventanda='1'then

aa:=notaa;

endif;

y<=aa;

endprocess;

endno_arc;

模块corna

该模块为整个程序的核心,它实现三种颜色灯的交替点亮、时间的倒计时。此模块与模块conrb分别控制一组信号灯,它们的唯一区别就是初态不同。

程序:libraryieee

entitycornais

port(clk:instd_logic;

r,g,y:outstd_logic;

timh,timl:outstd_logic_vector(3downto0);

endcorna;

architecturecorn_arcofcornais

typergyis(red,green,yellow);

beginprocess(clk)

variablea:std_logic;

variableth,tl:std_logic_vector(3downto0);

variablestate:rgy;

beginifclk'eventandclk='1'then

casestateis

whengreen=>ifa='0'then

th:="0100";

tl:="0000";

a:='1';

g<='1';

r<='0';

elseifnot(th="0000"andtl="0001")then

iftl="0000"then

tl:="1001";

th:=th-1;

elsetl:=tl-1;

endif;

elseth:="0000";

tl:="0000";

a:='0';

state:=yellow;

endif;

endif;

whenred=>ifa='0'then

th:="0100";

tl:="0101";

a:='1';

r<='1';

y<='0';

elseifnot(th="0000"andtl="0001")then

iftl="0000"then

tl:="1001";

th:=th-1;

elsetl:=tl-1;

endif;

elseth:="0000";

tl:="0000";

a:='0';

state:=green;

endif;

endif;

whenyellow=>ifa='0'then

th:="0000";

tl:="0100";

a:='1';

y<='1';

g<='0';

elseifnot(th="0000"andtl="0001")then

iftl="0000"then

tl:="1001";

th:=th-1;

elsetl:=tl-1;

endif;

elseth:="0000";

tl:="0000";

a:='0';

state:=red;

endif;

endif;

endcase;

endif;

timh<=th;

timl<=tl;

endprocess;

endcorn_arc;

模块cornb

此模块唯一与conra的唯一不同是状态机的初态不同,只要将conra的程序中的语句:typergyis(red,green,yellow);改为:

typergyis(green,yellow,red);即可。

EDA课程设计 交通灯

交通信号灯控制电路设计。1 概述。城市道路交叉口是城市道路网络的基本节点,也是网络交通流的瓶颈。目前,大部分无控制交叉口都存在高峰小时车流混乱 车速缓慢 延误情况严重 事故多发 通行能力和服务水平低下等问题。特别是随着城市车流量的快速增长,城市无控制道路交叉口的交通压力越来越大。因此,做好基于eda...

EDA交通灯课程设计

学院 电气与信息工程学院。1.东西各设有一个绿 黄 红指示灯 一个2位7段数码管。1 南北和东西方向各有一组绿,黄,红灯,各自的持续时间分别为20s,5s,25s 2 当有特殊情况时,两个方向均为红灯,计时暂停,当特殊情况结束后,控制器恢复原来状态,继续正常工作。3 用两组数码管,以倒计时方式显示两...

交通灯EDA课程设计

eda交通灯设计。学院 信息工程学院。班级 学号 姓名 目录。第一章设计原理 1 第二章设计流程 2 第三章程序设计说明 3 3.1 程序设计流程图 3 3.2 分频模块 3 3.3 特殊功能及清零模块 4 3.4 交通灯运行模块 4 3.5 扫描显示模块 6 第四章 及调试 8 4.1调试步骤 8...