EDA课程设计交通信号灯Word下载.docx
《EDA课程设计交通信号灯Word下载.docx》由会员分享,可在线阅读,更多相关《EDA课程设计交通信号灯Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
1、只有在小路上发现汽车时,高速公路上的交通灯才可能变成红灯。
2、当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的延迟时间。
(注:
这段时间定义为20秒时间)
3、高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定时间内保持高速公路绿灯。
这段时间定义为60秒时间)
4、交通信号灯的4种状态如下表:
A
B
C
D
高速交通灯
绿(60秒)
黄(5秒)
红(20秒)
红(5秒)
小道交通灯
红
绿
黄
四,设计思路
根据交通信号灯的变化可以有四种状态,分别为A,B,C,D输入为XLB即判断小路是否有车,当小路有车时再判断此时大路的绿灯状态,如果绿灯的状态还没结束,那么小路此时为红色,当高速路60s结束后在经过5s的黄灯,在跳转到C状态即小路变为绿灯,大路变为红灯,当小路20s过后再经过5s的黄灯跳转到D状态,大路变为绿灯小路变为红灯,采用赋值的方法来计数,当计数到想要值得时候在令CLR清零,状态也是采用赋值的方法实现不同状态的变化。
各输入端口和输出端口及变量信号的说明:
输入端
CLK
XLB
意义
时钟信号
小路是否有车
输出端
GSR
GSY
GSG
XLR
XLY
XLG
高速红灯
高速黄灯
高速绿灯
小路红灯
小路黄灯
小路绿灯
变量或信号
CLR
S
清零变量
计时变量
五,源程序的设计
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJTDKZIS
PORT(CLK:
INSTD_LOGIC;
XLB:
GSR,GSY,GSG,XLR,XLY,XLG:
OUTSTD_LOGIC);
ENDENTITYJTDKZ;
ARCHITECTUREARTOFJTDKZIS
TYPESTATE_TYPEIS(A,B,C,D);
_
SIGNALSTATE:
STATE_TYPE;
BEGIN
CNT:
PROCESS(CLK)IS_
VARIABLECLR:
BIT;
--在进程中定义变量CLR(CLR=0:
计时清零)
VARIABLES:
STD_LOGIC_VECTOR(0TO5);
--在进程中定义变量S(S为时钟计时器)
IF(CLK'
EVENTANDCLK='
1'
)THEN--判断时钟信号上升沿
IFCLR='
0'
THEN--当CLR=0时计时变量清零
S:
="
000000"
;
ELSE
=S+1;
ENDIF;
CASESTATEIS
--状态A为大路通车(绿灯),小路禁止通车(红灯)
WHENA=>
GSR<
='
GSY<
GSG<
BR<
BY<
BG<
IF(XLB='
)THEN--判断小路是否有车
IF(S="
111011"
)THEN--判断大路通行是否满60秒
STATE<
=B;
CLR:
--大路满60秒,计时清零,转到状态B
ELSE
STATE<
=A;
--大路不满60秒,继续状态A
ENDIF;
ELSE
STATE<
--小路没车,大路一直通车
ENDIF;
--状态B为大路禁止通车(黄灯),小路禁止通车(红灯)
WHENB=>
XLR<
XLY<
XLG<
IFS="
000100"
THEN--判断大路黄灯是否满5秒
=C;
--满5秒,计时清零,跳转到C状态
ELSE
STATE<
--不满5秒继续状态B。
--状态C为大路禁止通车(红灯),小路通车(绿灯)
WHENC=>
IF(XLB='
)THEN--判断小路是否有车
010011"
THEN--判断大路通行是否满20秒
=D;
--满20秒,计时清零,跳转到D状态
--不满20秒继续状态C。
ELSIFXLB='
THEN--判断小路是否有车
--小路没车,跳转到状态D
ELSE
--小路有车,继续状态C
ENDIF;
--状态D为大路禁止通车(红灯),小路禁止通车(黄灯)
WHEND=>
THEN--判断小路黄灯是否满5秒
--满5秒,计时清零,跳转到A状态
--不满5秒,继续状态D
ENDCASE;
--结束CASE语句
ENDIF;
ENDPROCESSCNT;
--结束进程语句
ENDARCHITECTUREART;
--结束结构体语句
五、对源程序进行编译及仿真
1,当小路一直没车时即XLB一直为0,可以看到XLR一直为高电平即小路一直是红灯,大路GSG一直为高电平即大路一直为绿灯。
2,当小路一直有车即XLB一直为1时,可以看到在前60s内小路为红灯,大路为绿灯,当大路绿灯60s完后因为小路有车了,此时状态发生变化,可以看到大路由绿灯变为黄灯小路还是红灯,5s黄灯过后可以看到状态又发生变化,小路变为绿灯大路变为了红灯,当满20s后状态又发生变化小路变为黄灯,大路还是红灯,5s后大路变为了绿灯,小路变为红灯。
3,当给定任意XLB输入时可以看到,在前60s内不管小路是否有车,大路一直为绿灯,小路一直为红灯。
当过了60s后发现小路上有车则跳到了状态1,此时大路为黄灯,小路为红灯,经过5s的黄灯后又会跳到状态2,此时大路为红灯小路为绿灯,经过20s的绿灯后又发现跳到了状态3,此时大路为红灯,小路为黄灯,经过5s的黄灯后有跳到状态0此时的大路为绿灯小路又变成了红灯。
六,心得体会
本次课程设计,通过我与本组成员一起的努力,终于做出了交通信号灯。
也使我们进一步加深了对电子设计自动化的了解,并进一步熟练了对maxplus2软件的操作。
期间我们遇到了一些问题,我们通过查阅课本和其他资料、互相讨论,终于在不断修改后完成交通灯的设计。
经过这次的课程设计我感觉到了合作的重要性同时发现了自己的问题。
那就是理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识和实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计中遇到问题,可以说是困难重重,但这也是以后我们所必须面对的,我们要从中学会处理问题的方式,及更牢靠的掌握知识。
总的来说,这次设计交通灯积累了经验和增强了实验素养,受益匪浅。
在这里对我们的指导老师表示衷心的感谢!
七、参考文献
《数字电子技术基本教程》阎石主编清华大学出版社
《电子技术基础实验》侯建军主编高等教育出版社
《数字电子技术与设计》高仁璟主编大连理工大学出版社
《VHDL与复杂数字系统设计》金西主编西安电子科技大学出版社