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...