基于某VHDL的交通信号灯设计Word格式.docx

上传人:b****5 文档编号:18130323 上传时间:2022-12-13 格式:DOCX 页数:13 大小:811.85KB
下载 相关 举报
基于某VHDL的交通信号灯设计Word格式.docx_第1页
第1页 / 共13页
基于某VHDL的交通信号灯设计Word格式.docx_第2页
第2页 / 共13页
基于某VHDL的交通信号灯设计Word格式.docx_第3页
第3页 / 共13页
基于某VHDL的交通信号灯设计Word格式.docx_第4页
第4页 / 共13页
基于某VHDL的交通信号灯设计Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于某VHDL的交通信号灯设计Word格式.docx

《基于某VHDL的交通信号灯设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于某VHDL的交通信号灯设计Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

基于某VHDL的交通信号灯设计Word格式.docx

经过40秒,ABL由B“100010”变为B“100001”,再经过5秒,ABL变为B“010100”,再经过40秒,S变为B“001100”,再经过5秒,ABL变为B“100010”……如此循环下去。

南北、东西方向的红绿灯按表一表二变化。

表一交通灯状态转换表

东西(A)方向

红灯

绿灯

黄灯

45秒

40秒

5秒

南北(B)方向

表二交通灯状态转换表

ABL

备注

1

100100

长时间亮红灯

100010

初始状态

状态1:

100010

持续40秒,转到状态2

状态2:

100001

持续5秒,转到状态3

状态3:

010100

持续40秒,转到状态4

状态4:

001100

持续5秒,转到状态1

注:

S的六位分别对应东西(A)方向的红绿黄和南北(B)方向的红绿黄,’1’表示亮,’0’表示灭。

三、模块设计及仿真

1、顶层文件的设计

顶层原理图设计可以依据系统框图进行,由反馈控制,倒计时,数码管显示,信号灯显示模块(jtd_ctrl,jtd_time,jtd_xs,jtd_light)五部分组成。

其顶层原理图如图2所示。

图2顶层原理图

顶层文件的仿真波形图如图3所示:

图3顶层文件的仿真波形

2、状态控制模块(jtd_ctrl)的设计

状态控制模块根据倒计时模块(jtd_time)的输出信号和1Hz的时钟信号,产生系统的状态机,控制其他部分的协调工作。

该模块的源文件程序如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYJTD_CTRLIS

PORT(CLK:

INSTD_LOGIC;

CTR:

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,CTR)

IFCTR='

1'

THENQ<

="

00"

;

ELSE

IFCLK'

EVENTANDCLK='

THEN

IF(AT=X"

01"

)OR(BT=X"

)THENQ<

=Q+1;

ELSEQ<

=Q;

ENDIF;

ENDPROCESS;

S<

ENDJTD;

状态控制模块的仿真波形如图4所示:

图4状态控制模块的仿真波形图

3、倒计时模块(jtd_time)的设计

倒计时模块用来设定A和B两个方向计时器的初值,并为数码管显示模块提供倒计时时间。

倒计时模块源文件程序如下:

ENTITYJTD_TIMEIS

M:

S:

INSTD_LOGIC_VECTOR(1DOWNTO0);

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDJTD_TIME;

ARCHITECTUREJTD_1OFJTD_TIMEIS

SIGNALATI:

STD_LOGIC_VECTOR(7DOWNTO0):

=X"

SIGNALBTI:

SIGNALART,AGT,AYT:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALBRT,BGT,BYT:

ART<

45"

AGT<

40"

AYT<

05"

BRT<

BGT<

BYT<

PROCESS(CLK,M,S,CTR)

IFM='

THENATI<

=ATI;

EVENTANDCLK='

CASESIS

WHEN"

=>

ATI<

=ART;

10"

=AGT;

11"

=AYT;

WHENOTHERS=>

NULL;

ENDCASE;

THEN

IFATI/=X"

IFATI(3DOWNTO0)="

0000"

ATI(3DOWNTO0)<

1001"

ATI(7DOWNTO4)<

=ATI(7DOWNTO4)-1;

ELSEATI(3DOWNTO0)<

=ATI(3DOWNTO0)-1;

=ATI(7DOWNTO4);

THENBTI<

=BTI;

BTI<

=BGT;

=BYT;

=BRT;

IFBTI/=X"

IFBTI(3DOWNTO0)="

BTI(3DOWNTO0)<

BTI(7DOWNTO4)<

=BTI(7DOWNTO4)-1;

ELSEBTI(3DOWNTO0)<

=BTI(3DOWNTO0)-1;

=BTI(7DOWNTO4);

AT<

BT<

ENDJTD_1;

倒计时模块的仿真波形图如图5所示:

图5倒计时模块的仿真波形图

4、数码管显示模块(jtd_xs)的设计

显示模块用来显示倒计时时间。

采用动态扫描显示,通过分位程序,控制四个数码管的显示时间。

数码管显示模块的源文件程序为:

ENTITYJTD_XSIS

PORT(CLK1K:

LED1,LED2,LED3,LED4:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDJTD_XS;

ARCHITECTUREJTD_3OFJTD_XSIS

SIGNALOU1,OU2,OU3,OU4:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALSL:

PROCESS(CLK1K)

IFCLK1K'

EVENTANDCLK1K='

IFSL="

THENSL<

ELSESL<

=SL+1;

PROCESS(SL,AT,BT)

CASESLIS

OU1<

=BT(3DOWNTO0);

OU2<

=BT(7DOWNTO4);

OU3<

=AT(3DOWNTO0);

OU4<

=AT(7DOWNTO4);

LED1<

=OU1;

LED2<

=OU2;

LED3<

=OU3;

LED4<

=OU4;

ENDJTD_3;

数码管显示模块的仿真波形图如图6所示:

图6数码管显示模块的仿真波形图

5、信号灯显示模块(jtd_light)的设计

通过控制模块的输出的状态控制信号,控制六个信号灯的亮灭。

信号灯显示模块的源文件程序为:

ENTITYJTD_LIGHTIS

PORT(M:

ABL:

OUTSTD_LOGIC_VECTOR(5DOWNTO0));

ENDJTD_LIGHT;

ARCHITECTUREJTD_2OFJTD_LIGHTIS

SIGNALLT:

STD_LOGIC_VECTOR(5DOWNTO0);

PROCESS(S,M)

THENLT<

100100"

LT<

100010"

100001"

010100"

001100"

ABL<

=LT;

ENDJTD_2;

信号灯显示模块的仿真波形图如图7所示:

图7信号灯显示模块的仿真波形图

三、引脚映射

本次设计我们采用GW48EDA实验箱,选择芯片EP1K30TC144-1,选择模式3,引脚映射如表三所示:

表三引脚映射

Node

Pin

ABL[0]

21

2

ABL[1]

22

3

ABL[2]

23

4

ABL[3]

26

5

ABL[4]

27

6

ABL[5]

7

54

8

126

9

LED1[0]

41

10

LED1[1]

42

11

LED1[2]

65

12

LED1[3]

67

13

LED2[0]

68

14

LED2[1]

69

15

LED2[2]

70

16

LED2[3]

72

17

LED3[0]

73

18

LED3[1]

78

19

LED3[2]

79

20

LED3[3]

80

LED4[0]

81

LED4[1]

82

LED4[2]

83

24

LED4[3]

86

25

四、编程下载

在实验箱上选择clock2为1Hz,clock0为1024Hz,模式选择模式3,引脚锁定如表三所示。

下载后,结果显示正确,六个信号灯依次为东西方向的红绿黄和南北方向的红绿黄。

两个方向上的数码管显示的时间完全吻合。

键1为紧急状态控制开关,按下键1时,两路信号灯都为红灯,时间暂停,再次按下键1,恢复原状态,继续计时。

键2为清零开关,按下键2时,两路信号灯从初始状态开始计时,结果证实调试成功。

五、实验总结

通过紧张的实验,我完成了设计任务——用VHDL设计交通灯控制器。

通过本次课程设计的学习,我深深地体会到设计课的重要性和目的性。

为了完成项目,我在网络上找到了许多相关资料,大大扩充自己的知识面,使许多以前想解决却无法解决的困难迎刃而解。

对软件设计流程有了更深刻的理解,掌握了MAX+plusⅡ的使用。

将书本上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际的能力,为今后的学习和实践打下了良好的基础。

本次EDA课程设计的目的和意义,通过设计交通灯控制器,了解EDA技术,了解并掌握VHDL硬件描述语言的设计方法和思想,巩固和综合运用所学过的原理知识,提高分析、解决实际问题的独立工作能力。

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

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1