交通灯控制器文档格式.docx
《交通灯控制器文档格式.docx》由会员分享,可在线阅读,更多相关《交通灯控制器文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
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"
即南北、东西向均为红灯亮。
0'
时,交通即开始正常工作。
M=‘0’时,经过40秒,S由B"
100010"
变为B"
100001"
,
再经过5秒,S变为B"
010100"
,再经过40秒,S变为B"
001100"
,再经过5秒,S
……如此循环下去。
当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)
IFCLK'
EVENTANDCLK='
THEN
IF(AT=X"
01"
)OR(BT=X"
)THENQ<
=Q+1;
——通过AT,BT的反馈信号
控制倒计时模块和信号显示jtd_light模块的工作
ELSEQ<
=Q;
ENDIF;
ENDPROCESS;
S<
ENDJTD;
5
倒计时模块用来设定A和B两个方向计时器的初值,并为数码管显示模块提供倒计
时时间。
倒计时模块源文件程序如下:
ENTITYJTD_TIMEIS
port(CLK:
INSTD_LOGIC;
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:
BEGIN——设定各个红绿黄的工作时间
ART<
45"
6AGT<
40"
AYT<
05"
BRT<
BGT<
BYT<
PROCESS(CLK,M,S)
IFM='
THENATI<
=ATI;
BTI<
=BTI;
ELSE
EVENTANDCLK='
IF(ATI=X"
)OR(BTI=X"
)THEN
CASESIS——通过S的变化控制各个状态,给倒计时显示灯赋值
WHEN"
00"
=>
ATI<
=ART;
=BGT;
BTI<
=BYT;
10"
=AGT;
=BRT;
11"
=AYT;
ENDCASE;
IFATI/=X"
THEN——A方向(东西方向)倒计时
IFATI(3DOWNTO0)="
0000"
ATI(3DOWNTO0)<
="
1001"
ATI(7DOWNTO4)<
=ATI(7DOWNTO4)-1;
ELSEATI(3DOWNTO0)<
=ATI(3DOWNTO0)-1;
=ATI(7DOWNTO4);
IFBTI/=X"
THEN——B方向(南北方向)倒计时
IFBTI(3DOWNTO0)="
BTI(3DOWNTO0)<
BTI(7DOWNTO4)<
=BTI(7DOWNTO4)-1;
7ELSEBTI(3DOWNTO0)<
=BTI(3DOWNTO0)-1;
=BTI(7DOWNTO4);
AT<
BT<
ENDJTD_1;
显示模块用来显示倒计时时间。
采用动态扫描显示,通过分位程序,控制四个数码
管的显示时间。
数码管显示模块的源文件程序为:
图5倒计时模块的仿真波形图
8LIBRARYIEEE;
ENTITYJTD_XSIS
PORT(CLK1K:
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);
PROCESS(CLK1K)
IFCLK1K'
EVENTANDCLK1K='
IFSL="
THENSL<
——扫描LED显示管
ELSESL<
=SL+1;
PROCESS(SL,AT,BT)
CASESLIS——将A方向和B方向的剩余时间显示
OU1<
=BT(3DOWNTO0);
WHEN"
OU2<
=BT(7DOWNTO4);
OU3<
=AT(3DOWNTO0);
OU4<
=AT(7DOWNTO4);
ENDCASE;
LED1<
=OU1;
9LED2<
=OU2;
LED3<
=OU3;
LED4<
=OU4;
ENDJTD_3;
通过控制模块的输出的状态控制信号,控制六个信号灯的亮灭。
信号灯显示模块的
源文件程序为:
ENTITYJTD_LIGHTIS
PORT(M:
INSTD_LOGIC_VECTOR(1DOWNTO0);
ABL:
OUTSTD_LOGIC_VECTOR(5DOWNTO0));
图6数码管显示模块的仿真波形图
10ENDJTD_LIGHT;
ARCHITECTUREJTD_2OFJTD_LIGHTIS
SIGNALLT:
STD_LOGIC_VECTOR(5DOWNTO0);
PROCESS(S,M)
IFM='
THENLT<
CASESIS——通过控制模块输出的状态控制信号灯(红绿黄)的亮灭
LT<
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年.北京: