交通灯控制器.docx
《交通灯控制器.docx》由会员分享,可在线阅读,更多相关《交通灯控制器.docx(17页珍藏版)》请在冰点文库上搜索。
![交通灯控制器.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/c55e8a4c-86a4-4983-a0de-dac62d60321c/c55e8a4c-86a4-4983-a0de-dac62d60321c1.gif)
交通灯控制器
VHDL语言与EDA课程设计
:
交通灯控制器
通信与控制工程系
电子信息工程
摘要
本系统采用GW48EDA/SOPC实验箱来设计交通灯控制器,模拟实现了红、绿灯指挥
交通的功能。
它直接采用FPGA/CPLD芯片开发,用VHDL语言编程和QUARTUSⅡ6.0设
计。
交通灯控制器设计,系统地阐述了用FPGA/CPLD实现数字电路的设计过程,展示了
FPGA/CPLD的强大功能和非凡特性。
本交通灯控制器适用东西方向和南北方向的车流量
大致相同的路口,红灯45秒,黄灯5秒,绿灯40秒,同时用数码管指示当前状态(红、
黄、绿灯)剩余时间。
另有一个紧急状态,当紧急状态出现时,两个方向都禁止通行,
指示红灯。
紧急状态解除后,重新计时并指示时间。
关键词:
交通灯控制器,
设计要求................................................................1
1方案论证与对比........................................................1
1.1方案一...........................................................1
1.2方案二...........................................................1
2设计过程..............................................................1
2.1总体设计慨要.....................................................1
2.2交通灯原理分析...................................................2
3模块设计及仿真........................................................3
3.1顶层文件的设计...................................................3
3.2状态控制模块(jtdctrl).........................................4
3.3倒计时模块(jtdtime)的设计.....................................5
3.4数码管显示模块(jtdxs)的设计...................................7
3.5信号灯显示模块(jtdlight)的设计................................9
3.6引脚锁定........................................................11
4编程下载.............................................................12
5结束语...............................................................12
6致谢.................................................................12
7参考文献.............................................................13
更多论文
1交通灯控制器
设东西方向和南北方向的车流量大致相同,因此红、黄、绿灯的时长也相同,定为
红灯45秒,黄灯5秒,绿灯40秒,同时用数码管指示当前状态(红、黄、绿灯)剩余
时间。
另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯。
紧急状态解除后,重新计时并指示时间。
采用VHDL语言直接编写,实现交通灯指挥功能。
但此方案编写复杂且困难,开发
时间较长。
编译后,不便读懂,找出错误很困难。
采用模块层次化设计,将此设计分为四个模块:
计时模块,状态控制模块,信号灯
显示模块,数码扫描显示模块。
将四个模块再分别用VHDL语言编写成,做成原理图模
块,用原理图输入法做整个设计的顶层文件。
此方案设计方便、简单,方法易懂、易操
作,也易于寻找程序中的错误,故我们采用此方案。
根据交通灯控制器的功能与要求,将其总体电路分为状态控制,倒计时,数码管显
示,信号灯显示模块(jtdctrl,jtdtime,jtdxs,jtdlight)。
jtdctrl实现逻
辑和时序控制,外部两路脉冲振荡器的频率选为1kHz和1Hz的信号,1khz信号用于
显示模块的扫描,1Hz信号用做倒计时模块的计数脉冲。
M为紧急状态和自动运行状态
的控制端。
总体框图:
更多论文
2
2.2交通灯原理分析
当M='1'时,进入紧急状态,S输出为B"100100",即南北、东西向均为红灯亮。
当M='0'时,交通即开始正常工作。
M=‘0’时,经过40秒,S由B"100010"变为B"100001",
再经过5秒,S变为B"010100",再经过40秒,S变为B"001100",再经过5秒,S
变为B"100010"……如此循环下去。
当M=‘1’跳变到M=‘0’时,数码管继续计时,恢复正常工作状态。
南北、东西方向的红绿灯按表一表二变化。
东西(A)方向
红灯红灯绿灯黄灯
45秒40秒5秒
南北(B)方向
绿灯黄灯红灯红灯
40秒5秒45秒
MS备注
1100100长时间亮红灯
0
状态1:
100010持续40秒,转到状态2
状态2:
100001持续5秒,转到状态3
状态3:
010100持续40秒,转到状态4
状态4:
001100持续5秒,转到状态1
S的六位分别对应东西方向(A方向)的红绿黄和南北方向(B方向)的红绿黄。
‘1’表示亮,‘0’表示灭。
更多论文
33
模块设计及仿真
顶层原理图设计可以依据系统框图进行,由反馈控制,倒计时,数码管显示,信号
灯显示模块(jtdctrl,jtdtime,jtdxs,jtdlight)五部分组成。
其顶层原理图
如图2所示。
图2顶层原理图图
3顶层文件的仿真波形
更多论文
4
状态控制模块根据倒计时模块(jtdtime)的输出信号和1hz的时钟信号,产生系
统的状态机,控制其他部分的协调工作。
该模块的源文件程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJTD_CTRLIS
PORT(CLK:
INSTD_LOGIC;
AT,BT:
INSTD_LOGIC_VECTOR(7DOWNTO0);
S:
OUTSTD_LOGIC_VECTOR(1DOWNTO0));
ENDJTD_CTRL;
ARCHITECTUREJTDOFJTD_CTRLIS
SIGNALQ:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
PROCESS(CLK,AT,BT)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IF(AT=X"01")OR(BT=X"01")THENQ<=Q+1;——通过AT,BT的反馈信号
控制倒计时模块和信号显示jtd_light模块的工作
ELSEQ<=Q;
ENDIF;
ENDIF;
ENDPROCESS;
S<=Q;
ENDJTD;
:
更多论文
5
倒计时模块用来设定A和B两个方向计时器的初值,并为数码管显示模块提供倒计
时时间。
倒计时模块源文件程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJTD_TIMEIS
port(CLK:
INSTD_LOGIC;
M:
INSTD_LOGIC;
S:
INSTD_LOGIC_VECTOR(1DOWNTO0);
AT,BT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDJTD_TIME;
ARCHITECTUREJTD_1OFJTD_TIMEIS
SIGNALATI:
STD_LOGIC_VECTOR(7DOWNTO0):
=X"01";
SIGNALBTI:
STD_LOGIC_VECTOR(7DOWNTO0):
=X"01";
SIGNALART,AGT,AYT:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALBRT,BGT,BYT:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN——设定各个红绿黄的工作时间
ART<=X"45";更多论文
6AGT<=X"40";
AYT<=X"05";
BRT<=X"45";
BGT<=X"40";
BYT<=X"05";
PROCESS(CLK,M,S)
BEGIN
IFM='1'THENATI<=ATI;BTI<=BTI;
ELSE
IFCLK'EVENTANDCLK='1'THEN
IF(ATI=X"01")OR(BTI=X"01")THEN
CASESIS——通过S的变化控制各个状态,给倒计时显示灯赋值
WHEN"00"=>ATI<=ART;BTI<=BGT;
WHEN"01"=>BTI<=BYT;
WHEN"10"=>ATI<=AGT;BTI<=BRT;
WHEN"11"=>ATI<=AYT;
ENDCASE;
ENDIF;
IFATI/=X"01"THEN——A方向(东西方向)倒计时
IFATI(3DOWNTO0)="0000"THEN
ATI(3DOWNTO0)<="1001";
ATI(7DOWNTO4)<=ATI(7DOWNTO4)-1;
ELSEATI(3DOWNTO0)<=ATI(3DOWNTO0)-1;
ATI(7DOWNTO4)<=ATI(7DOWNTO4);
ENDIF;
ENDIF;
IFBTI/=X"01"THEN——B方向(南北方向)倒计时
IFBTI(3DOWNTO0)="0000"THEN
BTI(3DOWNTO0)<="1001";
BTI(7DOWNTO4)<=BTI(7DOWNTO4)-1;更多论文
7ELSEBTI(3DOWNTO0)<=BTI(3DOWNTO0)-1;
BTI(7DOWNTO4)<=BTI(7DOWNTO4);
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
AT<=ATI;
BT<=BTI;
ENDJTD_1;
显示模块用来显示倒计时时间。
采用动态扫描显示,通过分位程序,控制四个数码
管的显示时间。
数码管显示模块的源文件程序为:
图5倒计时模块的仿真波形图
更多论文
8LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJTD_XSIS
PORT(CLK1K:
INSTD_LOGIC;
AT,BT:
INSTD_LOGIC_VECTOR(7DOWNTO0);
LED1,LED2,LED3,LED4:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDJTD_XS;
ARCHITECTUREJTD_3OFJTD_XSIS
SIGNALOU1,OU2,OU3,OU4:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALSL:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
PROCESS(CLK1K)
BEGIN
IFCLK1K'EVENTANDCLK1K='1'THEN
IFSL="11"THENSL<="00";——扫描LED显示管
ELSESL<=SL+1;
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(SL,AT,BT)
BEGIN
CASESLIS——将A方向和B方向的剩余时间显示
WHEN"00"=>OU1<=BT(3DOWNTO0);
WHEN"01"=>OU2<=BT(7DOWNTO4);
WHEN"10"=>OU3<=AT(3DOWNTO0);
WHEN"11"=>OU4<=AT(7DOWNTO4);
ENDCASE;
ENDPROCESS;
LED1<=OU1;更多论文
9LED2<=OU2;
LED3<=OU3;
LED4<=OU4;
ENDJTD_3;
:
通过控制模块的输出的状态控制信号,控制六个信号灯的亮灭。
信号灯显示模块的
源文件程序为:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJTD_LIGHTIS
PORT(M:
INSTD_LOGIC;
S:
INSTD_LOGIC_VECTOR(1DOWNTO0);
ABL:
OUTSTD_LOGIC_VECTOR(5DOWNTO0));
图6数码管显示模块的仿真波形图
更多论文
10ENDJTD_LIGHT;
ARCHITECTUREJTD_2OFJTD_LIGHTIS
SIGNALLT:
STD_LOGIC_VECTOR(5DOWNTO0);
BEGIN
PROCESS(S,M)
BEGIN
IFM='1'THENLT<="100100";
ELSE
CASESIS——通过控制模块输出的状态控制信号灯(红绿黄)的亮灭
WHEN"00"=>LT<="100010";
WHEN"01"=>LT<="100001";
WHEN"10"=>LT<="010100";
WHEN"11"=>LT<="001100";
ENDCASE;
ENDIF;
ENDPROCESS;
ABL<=LT;
ENDJTD_2;
图7信号灯显示模块的仿真波形图
更多论文
11
本次设计我们采用GW48EDA/SOPC实验箱,选择模式5,引脚锁定如图8所示:
图8引脚锁定
更多论文
124
编程下载
在实验箱上选择clock2为1Hz,clock5为1024Hz,模式选择模式5,引脚锁定如
上图所示。
下载后,结果显示正确,六个信号灯依次为东西方向的红绿黄和南北方向的
红绿黄。
两个方向上的数码管显示的时间完全吻合。
键8为紧急状态控制端,按下键8
时,两路信号灯都为红灯,时间暂停,再次按下键8,恢复原状态,继续计时。
结果证
实调试成功!
5结束语
通过的紧张工作,完成了我们的设计任务——用VHDL设计交通灯控制器。
通过本
次课程设计的学习,我们深深的体会到设计课的重要性和目的性所在。
为了完成项目,
在网络上找到了许多相关资料,大大扩充自己的知识面,使许多以前想解决却无法解决
的困难迎刃而解。
对软件设计流程有了更深刻的理解,掌握了EDA软件的使用。
将书本
上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了
适应实际的能力,为今后的学习和实践打下了良好的基础。
本次EDA课程设计的目的和
意义:
通过设计交通灯控制器,了解EDA技术,了解并掌握VHDL硬件描述语言的设计
方法和思想,巩固和综合运用所学过的原理知识,提高分析、解决实际问题的独立工作
能力。
在指导老师田汉平老师和周桃云老师的精心指导和严格要求下,经过我们自己的努
力,终于完成了这次课程设计。
同时获得了丰富的理论知识,极大地提高了实践能力,
对FPGA技术方面有了更深的了解,这对我们今后进一步学习有极大的帮助。
通过大量
阅读资料,我拓宽了自己的知识面,并懂得将所学知识融会贯通到实践中去。
在获得知
识的同时,我也认识到了自己还需要学习的东西很多,理论需要很好的结合实践,全面
分析并解决问题的能力有待提高。
另外,此次课程设计还获得了我们的同学大力支持,在我们对有些知识掌握不够时,
是我们的同学及时伸出帮助之手使我们的课程设计能够及时的完成。
在此,我们衷心感
谢各位同学的帮助。
在未来的工作和学习中,我也将以更好的成绩来回报老师,谢谢你
们!
更多论文
13[
1]黄任编著.VHDL入门?
解惑?
经典实例?
经验总结(第一版).2005年.北京:
北京航空
航天大学出版社.
[2]邹彦编著.EDA技术与数字系统设计.2007年.北京:
电子工业出版社.
[3]潘松,黄继业编著.EDA技术与VHDL(第二版).2007年.北京:
清华大学出版社.
[4]王锁萍编著.电子设计自动化教程.2000年.成都:
电子科技大学出版社.
[5]徐志军,徐光辉编著.CPLD/FPGA的开发与应用.2002年.北京:
电子工业出版社.