交通灯控制器.docx

上传人:b****1 文档编号:2578247 上传时间:2023-05-04 格式:DOCX 页数:17 大小:19.72KB
下载 相关 举报
交通灯控制器.docx_第1页
第1页 / 共17页
交通灯控制器.docx_第2页
第2页 / 共17页
交通灯控制器.docx_第3页
第3页 / 共17页
交通灯控制器.docx_第4页
第4页 / 共17页
交通灯控制器.docx_第5页
第5页 / 共17页
交通灯控制器.docx_第6页
第6页 / 共17页
交通灯控制器.docx_第7页
第7页 / 共17页
交通灯控制器.docx_第8页
第8页 / 共17页
交通灯控制器.docx_第9页
第9页 / 共17页
交通灯控制器.docx_第10页
第10页 / 共17页
交通灯控制器.docx_第11页
第11页 / 共17页
交通灯控制器.docx_第12页
第12页 / 共17页
交通灯控制器.docx_第13页
第13页 / 共17页
交通灯控制器.docx_第14页
第14页 / 共17页
交通灯控制器.docx_第15页
第15页 / 共17页
交通灯控制器.docx_第16页
第16页 / 共17页
交通灯控制器.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

交通灯控制器.docx

《交通灯控制器.docx》由会员分享,可在线阅读,更多相关《交通灯控制器.docx(17页珍藏版)》请在冰点文库上搜索。

交通灯控制器.docx

交通灯控制器

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年.北京:

电子工业出版社.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2